@memberjunction/ng-core-entity-forms 5.8.0 → 5.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/custom/Entities/entity-form.component.d.ts +1 -1
- package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.js +530 -484
- package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.d.ts +4 -0
- package/dist/lib/custom/Queries/query-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.js +510 -402
- package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
- package/dist/lib/custom/custom-forms.module.d.ts +3 -1
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +11 -3
- package/dist/lib/custom/custom-forms.module.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js +19 -21
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCompanyIntegration/mjcompanyintegration.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJCompanyIntegration/mjcompanyintegration.form.component.js +61 -35
- package/dist/lib/generated/Entities/MJCompanyIntegration/mjcompanyintegration.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJIntegration/mjintegration.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJIntegration/mjintegration.form.component.js +24 -6
- package/dist/lib/generated/Entities/MJIntegration/mjintegration.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJIntegrationObject/mjintegrationobject.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJIntegrationObject/mjintegrationobject.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJIntegrationObject/mjintegrationobject.form.component.js +137 -0
- package/dist/lib/generated/Entities/MJIntegrationObject/mjintegrationobject.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJIntegrationObjectField/mjintegrationobjectfield.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJIntegrationObjectField/mjintegrationobjectfield.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJIntegrationObjectField/mjintegrationobjectfield.form.component.js +103 -0
- package/dist/lib/generated/Entities/MJIntegrationObjectField/mjintegrationobjectfield.form.component.js.map +1 -0
- package/dist/lib/generated/generated-forms.module.d.ts +119 -117
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +48 -42
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/package.json +31 -30
|
@@ -20,23 +20,25 @@ import * as i5 from "@progress/kendo-angular-dropdowns";
|
|
|
20
20
|
import * as i6 from "@progress/kendo-angular-buttons";
|
|
21
21
|
import * as i7 from "@memberjunction/ng-base-forms";
|
|
22
22
|
import * as i8 from "@memberjunction/ng-code-editor";
|
|
23
|
-
import * as i9 from "
|
|
24
|
-
import * as i10 from "
|
|
23
|
+
import * as i9 from "@memberjunction/ng-shared-generic";
|
|
24
|
+
import * as i10 from "@memberjunction/ng-markdown";
|
|
25
|
+
import * as i11 from "./query-run-dialog.component";
|
|
26
|
+
import * as i12 from "./query-category-dialog.component";
|
|
25
27
|
const _c0 = ["sqlEditor"];
|
|
26
28
|
const _forTrack0 = ($index, $item) => $item.name;
|
|
27
29
|
const _forTrack1 = ($index, $item) => $item.ID || $index;
|
|
28
30
|
const _forTrack2 = ($index, $item) => $item.ID;
|
|
29
|
-
function
|
|
31
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
30
32
|
const _r2 = i0.ɵɵgetCurrentView();
|
|
31
|
-
i0.ɵɵelementStart(0, "kendo-textbox",
|
|
32
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
33
|
+
i0.ɵɵelementStart(0, "kendo-textbox", 41);
|
|
34
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_8_Template_kendo_textbox_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.record.Name, $event) || (ctx_r2.record.Name = $event); return i0.ɵɵresetView($event); });
|
|
33
35
|
i0.ɵɵelementEnd();
|
|
34
36
|
} if (rf & 2) {
|
|
35
37
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
36
38
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r2.record.Name);
|
|
37
39
|
} }
|
|
38
|
-
function
|
|
39
|
-
i0.ɵɵelementStart(0, "h4",
|
|
40
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
41
|
+
i0.ɵɵelementStart(0, "h4", 11);
|
|
40
42
|
i0.ɵɵtext(1);
|
|
41
43
|
i0.ɵɵelementEnd();
|
|
42
44
|
} if (rf & 2) {
|
|
@@ -44,28 +46,28 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_10_Template(rf,
|
|
|
44
46
|
i0.ɵɵadvance();
|
|
45
47
|
i0.ɵɵtextInterpolate(ctx_r2.record.Name || "Untitled Query");
|
|
46
48
|
} }
|
|
47
|
-
function
|
|
49
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
48
50
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
49
|
-
i0.ɵɵelementStart(0, "button",
|
|
50
|
-
i0.ɵɵlistener("click", function
|
|
51
|
-
i0.ɵɵelement(1, "i",
|
|
51
|
+
i0.ɵɵelementStart(0, "button", 42);
|
|
52
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_11_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.runQuery()); });
|
|
53
|
+
i0.ɵɵelement(1, "i", 43);
|
|
52
54
|
i0.ɵɵtext(2, " Run ");
|
|
53
55
|
i0.ɵɵelementEnd();
|
|
54
56
|
} if (rf & 2) {
|
|
55
57
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
56
|
-
i0.ɵɵproperty("themeColor", "primary")("size", "large")("disabled", ctx_r2.EditMode ||
|
|
58
|
+
i0.ɵɵproperty("themeColor", "primary")("size", "large")("disabled", ctx_r2.EditMode || !ctx_r2.record.SQL || ctx_r2.record.SQL.trim().length === 0);
|
|
57
59
|
} }
|
|
58
|
-
function
|
|
60
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
59
61
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
60
|
-
i0.ɵɵelementStart(0, "kendo-dropdownlist",
|
|
61
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
62
|
+
i0.ɵɵelementStart(0, "kendo-dropdownlist", 44);
|
|
63
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_16_Template_kendo_dropdownlist_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.record.CategoryID, $event) || (ctx_r2.record.CategoryID = $event); return i0.ɵɵresetView($event); });
|
|
62
64
|
i0.ɵɵelementEnd();
|
|
63
65
|
} if (rf & 2) {
|
|
64
66
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
65
67
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r2.record.CategoryID);
|
|
66
68
|
i0.ɵɵproperty("data", ctx_r2.categoryOptions)("valuePrimitive", true);
|
|
67
69
|
} }
|
|
68
|
-
function
|
|
70
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
69
71
|
i0.ɵɵelementStart(0, "span", 18);
|
|
70
72
|
i0.ɵɵtext(1);
|
|
71
73
|
i0.ɵɵelementEnd();
|
|
@@ -74,56 +76,41 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_18_Template(rf,
|
|
|
74
76
|
i0.ɵɵadvance();
|
|
75
77
|
i0.ɵɵtextInterpolate(ctx_r2.getCategoryPath() || "Uncategorized");
|
|
76
78
|
} }
|
|
77
|
-
function
|
|
79
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_21_Template(rf, ctx) { if (rf & 1) {
|
|
78
80
|
const _r6 = i0.ɵɵgetCurrentView();
|
|
79
|
-
i0.ɵɵelementStart(0, "kendo-dropdownlist",
|
|
80
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
81
|
+
i0.ɵɵelementStart(0, "kendo-dropdownlist", 45);
|
|
82
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_21_Template_kendo_dropdownlist_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.record.Status, $event) || (ctx_r2.record.Status = $event); return i0.ɵɵresetView($event); });
|
|
81
83
|
i0.ɵɵelementEnd();
|
|
82
84
|
} if (rf & 2) {
|
|
83
85
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
84
86
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r2.record.Status);
|
|
85
87
|
i0.ɵɵproperty("data", ctx_r2.statusOptions)("valuePrimitive", true);
|
|
86
88
|
} }
|
|
87
|
-
function
|
|
88
|
-
i0.ɵɵ
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
i0.ɵɵelement(0, "i", 47);
|
|
92
|
-
} }
|
|
93
|
-
function MJQueryFormComponentExtended_Conditional_1_Conditional_23_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
94
|
-
i0.ɵɵelement(0, "i", 48);
|
|
95
|
-
} }
|
|
96
|
-
function MJQueryFormComponentExtended_Conditional_1_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
97
|
-
i0.ɵɵelementStart(0, "span", 45);
|
|
98
|
-
i0.ɵɵconditionalCreate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_23_Conditional_1_Template, 1, 0, "i", 46);
|
|
99
|
-
i0.ɵɵconditionalCreate(2, MJQueryFormComponentExtended_Conditional_1_Conditional_23_Conditional_2_Template, 1, 0, "i", 47);
|
|
100
|
-
i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_23_Conditional_3_Template, 1, 0, "i", 48);
|
|
101
|
-
i0.ɵɵtext(4);
|
|
89
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
90
|
+
i0.ɵɵelementStart(0, "span", 46);
|
|
91
|
+
i0.ɵɵelement(1, "i", 47);
|
|
92
|
+
i0.ɵɵtext(2);
|
|
102
93
|
i0.ɵɵelementEnd();
|
|
103
94
|
} if (rf & 2) {
|
|
104
95
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
105
96
|
i0.ɵɵstyleProp("background", ctx_r2.getStatusBadgeColor());
|
|
106
97
|
i0.ɵɵadvance();
|
|
107
|
-
i0.ɵɵ
|
|
108
|
-
i0.ɵɵadvance();
|
|
109
|
-
i0.ɵɵconditional(ctx_r2.record.Status === "Pending" ? 2 : -1);
|
|
110
|
-
i0.ɵɵadvance();
|
|
111
|
-
i0.ɵɵconditional(ctx_r2.record.Status === "Rejected" ? 3 : -1);
|
|
98
|
+
i0.ɵɵclassMap(ctx_r2.getStatusBannerIcon());
|
|
112
99
|
i0.ɵɵadvance();
|
|
113
100
|
i0.ɵɵtextInterpolate1(" ", ctx_r2.record.Status || "Unknown", " ");
|
|
114
101
|
} }
|
|
115
|
-
function
|
|
102
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_23_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
116
103
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
117
|
-
i0.ɵɵelementStart(0, "kendo-textarea",
|
|
118
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
104
|
+
i0.ɵɵelementStart(0, "kendo-textarea", 50);
|
|
105
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_23_Conditional_1_Template_kendo_textarea_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r2.record.Description, $event) || (ctx_r2.record.Description = $event); return i0.ɵɵresetView($event); });
|
|
119
106
|
i0.ɵɵelementEnd();
|
|
120
107
|
} if (rf & 2) {
|
|
121
108
|
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
122
109
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r2.record.Description);
|
|
123
110
|
i0.ɵɵproperty("rows", 2);
|
|
124
111
|
} }
|
|
125
|
-
function
|
|
126
|
-
i0.ɵɵelementStart(0, "p",
|
|
112
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_23_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
113
|
+
i0.ɵɵelementStart(0, "p", 49);
|
|
127
114
|
i0.ɵɵtext(1);
|
|
128
115
|
i0.ɵɵelementEnd();
|
|
129
116
|
} if (rf & 2) {
|
|
@@ -131,18 +118,39 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_24_Conditional_2
|
|
|
131
118
|
i0.ɵɵadvance();
|
|
132
119
|
i0.ɵɵtextInterpolate(ctx_r2.record.Description);
|
|
133
120
|
} }
|
|
134
|
-
function
|
|
135
|
-
i0.ɵɵelementStart(0, "div");
|
|
136
|
-
i0.ɵɵconditionalCreate(1,
|
|
121
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
122
|
+
i0.ɵɵelementStart(0, "div", 21);
|
|
123
|
+
i0.ɵɵconditionalCreate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_23_Conditional_1_Template, 1, 2, "kendo-textarea", 48)(2, MJQueryFormComponentExtended_Conditional_1_Conditional_23_Conditional_2_Template, 2, 1, "p", 49);
|
|
137
124
|
i0.ɵɵelementEnd();
|
|
138
125
|
} if (rf & 2) {
|
|
139
126
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
140
127
|
i0.ɵɵadvance();
|
|
141
128
|
i0.ɵɵconditional(ctx_r2.EditMode ? 1 : 2);
|
|
142
129
|
} }
|
|
130
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_24_Template(rf, ctx) { if (rf & 1) {
|
|
131
|
+
i0.ɵɵelementStart(0, "div", 51);
|
|
132
|
+
i0.ɵɵelement(1, "i", 47);
|
|
133
|
+
i0.ɵɵelementStart(2, "span");
|
|
134
|
+
i0.ɵɵtext(3, " This query has status ");
|
|
135
|
+
i0.ɵɵelementStart(4, "strong");
|
|
136
|
+
i0.ɵɵtext(5);
|
|
137
|
+
i0.ɵɵelementEnd();
|
|
138
|
+
i0.ɵɵtext(6);
|
|
139
|
+
i0.ɵɵelementEnd()();
|
|
140
|
+
} if (rf & 2) {
|
|
141
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
142
|
+
i0.ɵɵstyleProp("border-left-color", ctx_r2.getStatusBadgeColor());
|
|
143
|
+
i0.ɵɵadvance();
|
|
144
|
+
i0.ɵɵclassMap(ctx_r2.getStatusBannerIcon());
|
|
145
|
+
i0.ɵɵstyleProp("color", ctx_r2.getStatusBadgeColor());
|
|
146
|
+
i0.ɵɵadvance(4);
|
|
147
|
+
i0.ɵɵtextInterpolate(ctx_r2.record.Status);
|
|
148
|
+
i0.ɵɵadvance();
|
|
149
|
+
i0.ɵɵtextInterpolate1(". ", ctx_r2.getStatusBannerMessage(), " ");
|
|
150
|
+
} }
|
|
143
151
|
function MJQueryFormComponentExtended_Conditional_1_ng_template_27_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
144
152
|
i0.ɵɵelementStart(0, "span", 55);
|
|
145
|
-
i0.ɵɵelement(1, "i",
|
|
153
|
+
i0.ɵɵelement(1, "i", 59);
|
|
146
154
|
i0.ɵɵtext(2, " Defined ");
|
|
147
155
|
i0.ɵɵelementEnd();
|
|
148
156
|
} }
|
|
@@ -156,10 +164,10 @@ function MJQueryFormComponentExtended_Conditional_1_ng_template_27_Template(rf,
|
|
|
156
164
|
i0.ɵɵelementStart(5, "button", 56);
|
|
157
165
|
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_ng_template_27_Template_button_click_5_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(2); ctx_r2.toggleFiltersHelp(); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
158
166
|
i0.ɵɵelement(6, "i", 57);
|
|
159
|
-
i0.ɵɵelementStart(7, "span"
|
|
167
|
+
i0.ɵɵelementStart(7, "span");
|
|
160
168
|
i0.ɵɵtext(8, "Filters Help");
|
|
161
169
|
i0.ɵɵelementEnd();
|
|
162
|
-
i0.ɵɵelement(9, "i",
|
|
170
|
+
i0.ɵɵelement(9, "i", 58);
|
|
163
171
|
i0.ɵɵelementEnd()();
|
|
164
172
|
} if (rf & 2) {
|
|
165
173
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
@@ -169,44 +177,44 @@ function MJQueryFormComponentExtended_Conditional_1_ng_template_27_Template(rf,
|
|
|
169
177
|
i0.ɵɵproperty("ngClass", ctx_r2.showFiltersHelp ? "fa-chevron-up" : "fa-chevron-down");
|
|
170
178
|
} }
|
|
171
179
|
function MJQueryFormComponentExtended_Conditional_1_Conditional_31_For_6_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
172
|
-
i0.ɵɵelementStart(0, "div",
|
|
180
|
+
i0.ɵɵelementStart(0, "div", 67);
|
|
173
181
|
i0.ɵɵtext(1);
|
|
174
182
|
i0.ɵɵelementEnd();
|
|
175
183
|
} if (rf & 2) {
|
|
176
184
|
const filter_r9 = i0.ɵɵnextContext().$implicit;
|
|
177
185
|
i0.ɵɵadvance();
|
|
178
|
-
i0.ɵɵ
|
|
186
|
+
i0.ɵɵtextInterpolate(filter_r9.notes);
|
|
179
187
|
} }
|
|
180
188
|
function MJQueryFormComponentExtended_Conditional_1_Conditional_31_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
181
|
-
i0.ɵɵelementStart(0, "div",
|
|
189
|
+
i0.ɵɵelementStart(0, "div", 63)(1, "div", 64);
|
|
182
190
|
i0.ɵɵtext(2);
|
|
183
191
|
i0.ɵɵelementEnd();
|
|
184
|
-
i0.ɵɵelementStart(3, "div",
|
|
192
|
+
i0.ɵɵelementStart(3, "div", 65);
|
|
185
193
|
i0.ɵɵtext(4);
|
|
186
194
|
i0.ɵɵelementEnd();
|
|
187
|
-
i0.ɵɵelementStart(5, "div",
|
|
195
|
+
i0.ɵɵelementStart(5, "div", 66);
|
|
188
196
|
i0.ɵɵtext(6);
|
|
189
197
|
i0.ɵɵelementEnd();
|
|
190
|
-
i0.ɵɵconditionalCreate(7, MJQueryFormComponentExtended_Conditional_1_Conditional_31_For_6_Conditional_7_Template, 2, 1, "div",
|
|
198
|
+
i0.ɵɵconditionalCreate(7, MJQueryFormComponentExtended_Conditional_1_Conditional_31_For_6_Conditional_7_Template, 2, 1, "div", 67);
|
|
191
199
|
i0.ɵɵelementEnd();
|
|
192
200
|
} if (rf & 2) {
|
|
193
201
|
const filter_r9 = ctx.$implicit;
|
|
194
202
|
i0.ɵɵadvance(2);
|
|
195
|
-
i0.ɵɵ
|
|
203
|
+
i0.ɵɵtextInterpolate(filter_r9.name);
|
|
196
204
|
i0.ɵɵadvance(2);
|
|
197
|
-
i0.ɵɵ
|
|
205
|
+
i0.ɵɵtextInterpolate(filter_r9.description);
|
|
198
206
|
i0.ɵɵadvance(2);
|
|
199
|
-
i0.ɵɵ
|
|
207
|
+
i0.ɵɵtextInterpolate(filter_r9.exampleSyntax);
|
|
200
208
|
i0.ɵɵadvance();
|
|
201
209
|
i0.ɵɵconditional(filter_r9.notes ? 7 : -1);
|
|
202
210
|
} }
|
|
203
211
|
function MJQueryFormComponentExtended_Conditional_1_Conditional_31_Template(rf, ctx) { if (rf & 1) {
|
|
204
|
-
i0.ɵɵelementStart(0, "div",
|
|
205
|
-
i0.ɵɵelement(2, "i",
|
|
212
|
+
i0.ɵɵelementStart(0, "div", 28)(1, "h6", 60);
|
|
213
|
+
i0.ɵɵelement(2, "i", 61);
|
|
206
214
|
i0.ɵɵtext(3, " Available SQL Filters for Parameterized Queries ");
|
|
207
215
|
i0.ɵɵelementEnd();
|
|
208
|
-
i0.ɵɵelementStart(4, "div",
|
|
209
|
-
i0.ɵɵrepeaterCreate(5, MJQueryFormComponentExtended_Conditional_1_Conditional_31_For_6_Template, 8, 4, "div",
|
|
216
|
+
i0.ɵɵelementStart(4, "div", 62);
|
|
217
|
+
i0.ɵɵrepeaterCreate(5, MJQueryFormComponentExtended_Conditional_1_Conditional_31_For_6_Template, 8, 4, "div", 63, _forTrack0);
|
|
210
218
|
i0.ɵɵelementEnd()();
|
|
211
219
|
} if (rf & 2) {
|
|
212
220
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
@@ -214,146 +222,209 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_31_Template(rf,
|
|
|
214
222
|
i0.ɵɵrepeater(ctx_r2.sqlFilters);
|
|
215
223
|
} }
|
|
216
224
|
function MJQueryFormComponentExtended_Conditional_1_Conditional_32_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
217
|
-
i0.ɵɵelementStart(0, "span",
|
|
225
|
+
i0.ɵɵelementStart(0, "span", 55);
|
|
226
|
+
i0.ɵɵelement(1, "i", 59);
|
|
227
|
+
i0.ɵɵtext(2, " Documented ");
|
|
228
|
+
i0.ɵɵelementEnd();
|
|
229
|
+
} }
|
|
230
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_32_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
231
|
+
i0.ɵɵelementStart(0, "span", 53);
|
|
232
|
+
i0.ɵɵelement(1, "i", 69);
|
|
233
|
+
i0.ɵɵtext(2, " Technical Description ");
|
|
234
|
+
i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_32_ng_template_1_Conditional_3_Template, 3, 0, "span", 55);
|
|
235
|
+
i0.ɵɵelementEnd();
|
|
236
|
+
} if (rf & 2) {
|
|
237
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
238
|
+
i0.ɵɵadvance(3);
|
|
239
|
+
i0.ɵɵconditional(ctx_r2.record.TechnicalDescription ? 3 : -1);
|
|
240
|
+
} }
|
|
241
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_32_Conditional_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
242
|
+
i0.ɵɵelementStart(0, "div", 71)(1, "div", 72);
|
|
243
|
+
i0.ɵɵelement(2, "i", 73);
|
|
244
|
+
i0.ɵɵtext(3, " Preview ");
|
|
245
|
+
i0.ɵɵelementEnd();
|
|
246
|
+
i0.ɵɵelement(4, "mj-markdown", 74);
|
|
247
|
+
i0.ɵɵelementEnd();
|
|
248
|
+
} if (rf & 2) {
|
|
249
|
+
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
250
|
+
i0.ɵɵadvance(4);
|
|
251
|
+
i0.ɵɵproperty("data", ctx_r2.record.TechnicalDescription || "")("enableMermaid", true)("enableHighlight", true)("enableCollapsibleHeadings", false)("enableSmartypants", true);
|
|
252
|
+
} }
|
|
253
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_32_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
254
|
+
const _r11 = i0.ɵɵgetCurrentView();
|
|
255
|
+
i0.ɵɵelementStart(0, "kendo-textarea", 70);
|
|
256
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_32_Conditional_3_Template_kendo_textarea_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r2.record.TechnicalDescription, $event) || (ctx_r2.record.TechnicalDescription = $event); return i0.ɵɵresetView($event); });
|
|
257
|
+
i0.ɵɵelementEnd();
|
|
258
|
+
i0.ɵɵconditionalCreate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_32_Conditional_3_Conditional_1_Template, 5, 5, "div", 71);
|
|
259
|
+
} if (rf & 2) {
|
|
260
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
261
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r2.record.TechnicalDescription);
|
|
262
|
+
i0.ɵɵproperty("rows", 8);
|
|
263
|
+
i0.ɵɵadvance();
|
|
264
|
+
i0.ɵɵconditional(ctx_r2.record.TechnicalDescription ? 1 : -1);
|
|
265
|
+
} }
|
|
266
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_32_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
267
|
+
i0.ɵɵelementStart(0, "div", 68);
|
|
268
|
+
i0.ɵɵelement(1, "mj-markdown", 74);
|
|
269
|
+
i0.ɵɵelementEnd();
|
|
270
|
+
} if (rf & 2) {
|
|
271
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
272
|
+
i0.ɵɵadvance();
|
|
273
|
+
i0.ɵɵproperty("data", ctx_r2.record.TechnicalDescription || "")("enableMermaid", true)("enableHighlight", true)("enableCollapsibleHeadings", false)("enableSmartypants", true);
|
|
274
|
+
} }
|
|
275
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_32_Template(rf, ctx) { if (rf & 1) {
|
|
276
|
+
const _r10 = i0.ɵɵgetCurrentView();
|
|
277
|
+
i0.ɵɵelementStart(0, "kendo-expansionpanel", 24);
|
|
278
|
+
i0.ɵɵtwoWayListener("expandedChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_32_Template_kendo_expansionpanel_expandedChange_0_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.technicalDescriptionPanelExpanded, $event) || (ctx_r2.technicalDescriptionPanelExpanded = $event); return i0.ɵɵresetView($event); });
|
|
279
|
+
i0.ɵɵtemplate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_32_ng_template_1_Template, 4, 1, "ng-template", 25);
|
|
280
|
+
i0.ɵɵelementStart(2, "div", 30);
|
|
281
|
+
i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_32_Conditional_3_Template, 2, 3)(4, MJQueryFormComponentExtended_Conditional_1_Conditional_32_Conditional_4_Template, 2, 5, "div", 68);
|
|
282
|
+
i0.ɵɵelementEnd()();
|
|
283
|
+
} if (rf & 2) {
|
|
284
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
285
|
+
i0.ɵɵtwoWayProperty("expanded", ctx_r2.technicalDescriptionPanelExpanded);
|
|
286
|
+
i0.ɵɵadvance(3);
|
|
287
|
+
i0.ɵɵconditional(ctx_r2.EditMode ? 3 : 4);
|
|
288
|
+
} }
|
|
289
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_33_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
290
|
+
i0.ɵɵelementStart(0, "span", 77);
|
|
218
291
|
i0.ɵɵtext(1);
|
|
219
292
|
i0.ɵɵelementEnd();
|
|
220
293
|
} if (rf & 2) {
|
|
221
294
|
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
222
295
|
i0.ɵɵadvance();
|
|
223
|
-
i0.ɵɵ
|
|
296
|
+
i0.ɵɵtextInterpolate(ctx_r2.queryParameters.length);
|
|
224
297
|
} }
|
|
225
|
-
function
|
|
298
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_33_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
226
299
|
i0.ɵɵelementStart(0, "span", 53);
|
|
227
|
-
i0.ɵɵelement(1, "i",
|
|
300
|
+
i0.ɵɵelement(1, "i", 76);
|
|
228
301
|
i0.ɵɵtext(2, " Query Parameters ");
|
|
229
|
-
i0.ɵɵconditionalCreate(3,
|
|
302
|
+
i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_33_ng_template_1_Conditional_3_Template, 2, 1, "span", 77);
|
|
230
303
|
i0.ɵɵelementEnd();
|
|
231
304
|
} if (rf & 2) {
|
|
232
305
|
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
233
306
|
i0.ɵɵadvance(3);
|
|
234
307
|
i0.ɵɵconditional(ctx_r2.queryParameters.length > 0 ? 3 : -1);
|
|
235
308
|
} }
|
|
236
|
-
function
|
|
237
|
-
i0.ɵɵelementStart(0, "div",
|
|
238
|
-
i0.ɵɵelement(1, "
|
|
239
|
-
i0.ɵɵ
|
|
240
|
-
i0.ɵɵtext(3, "Loading parameters...");
|
|
241
|
-
i0.ɵɵelementEnd()();
|
|
309
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_33_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
310
|
+
i0.ɵɵelementStart(0, "div", 75);
|
|
311
|
+
i0.ɵɵelement(1, "mj-loading", 78);
|
|
312
|
+
i0.ɵɵelementEnd();
|
|
242
313
|
} }
|
|
243
|
-
function
|
|
244
|
-
const
|
|
245
|
-
i0.ɵɵelementStart(0, "button",
|
|
246
|
-
i0.ɵɵlistener("click", function
|
|
247
|
-
i0.ɵɵelement(1, "i",
|
|
314
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_33_Conditional_4_Conditional_0_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
315
|
+
const _r13 = i0.ɵɵgetCurrentView();
|
|
316
|
+
i0.ɵɵelementStart(0, "button", 84);
|
|
317
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_33_Conditional_4_Conditional_0_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.addParameter()); });
|
|
318
|
+
i0.ɵɵelement(1, "i", 85);
|
|
248
319
|
i0.ɵɵtext(2, " Add First Parameter ");
|
|
249
320
|
i0.ɵɵelementEnd();
|
|
250
321
|
} }
|
|
251
|
-
function
|
|
252
|
-
i0.ɵɵelementStart(0, "div",
|
|
253
|
-
i0.ɵɵelement(1, "i",
|
|
254
|
-
i0.ɵɵelementStart(2, "div",
|
|
322
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_33_Conditional_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
323
|
+
i0.ɵɵelementStart(0, "div", 79);
|
|
324
|
+
i0.ɵɵelement(1, "i", 80);
|
|
325
|
+
i0.ɵɵelementStart(2, "div", 81);
|
|
255
326
|
i0.ɵɵtext(3, "No Parameters Defined");
|
|
256
327
|
i0.ɵɵelementEnd();
|
|
257
|
-
i0.ɵɵelementStart(4, "div",
|
|
328
|
+
i0.ɵɵelementStart(4, "div", 82);
|
|
258
329
|
i0.ɵɵtext(5, " Add parameters to make your query dynamic and reusable. ");
|
|
259
330
|
i0.ɵɵelementEnd();
|
|
260
|
-
i0.ɵɵconditionalCreate(6,
|
|
331
|
+
i0.ɵɵconditionalCreate(6, MJQueryFormComponentExtended_Conditional_1_Conditional_33_Conditional_4_Conditional_0_Conditional_6_Template, 3, 0, "button", 83);
|
|
261
332
|
i0.ɵɵelementEnd();
|
|
262
333
|
} if (rf & 2) {
|
|
263
334
|
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
264
335
|
i0.ɵɵadvance(6);
|
|
265
336
|
i0.ɵɵconditional(ctx_r2.EditMode ? 6 : -1);
|
|
266
337
|
} }
|
|
267
|
-
function
|
|
268
|
-
const
|
|
269
|
-
i0.ɵɵelementStart(0, "div",
|
|
270
|
-
i0.ɵɵlistener("click", function
|
|
271
|
-
i0.ɵɵelement(2, "i",
|
|
338
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_33_Conditional_4_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
339
|
+
const _r14 = i0.ɵɵgetCurrentView();
|
|
340
|
+
i0.ɵɵelementStart(0, "div", 86)(1, "button", 84);
|
|
341
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_33_Conditional_4_Conditional_1_Conditional_0_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r14); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.addParameter()); });
|
|
342
|
+
i0.ɵɵelement(2, "i", 85);
|
|
272
343
|
i0.ɵɵtext(3, " Add Parameter ");
|
|
273
344
|
i0.ɵɵelementEnd()();
|
|
274
345
|
} }
|
|
275
|
-
function
|
|
276
|
-
i0.ɵɵelementStart(0, "span",
|
|
346
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_33_Conditional_4_Conditional_1_For_3_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
347
|
+
i0.ɵɵelementStart(0, "span", 94);
|
|
277
348
|
i0.ɵɵtext(1, "Required");
|
|
278
349
|
i0.ɵɵelementEnd();
|
|
279
350
|
} }
|
|
280
|
-
function
|
|
281
|
-
i0.ɵɵelementStart(0, "div",
|
|
351
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_33_Conditional_4_Conditional_1_For_3_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
352
|
+
i0.ɵɵelementStart(0, "div", 96);
|
|
282
353
|
i0.ɵɵtext(1);
|
|
283
354
|
i0.ɵɵelementEnd();
|
|
284
355
|
} if (rf & 2) {
|
|
285
|
-
const
|
|
356
|
+
const param_r16 = i0.ɵɵnextContext().$implicit;
|
|
286
357
|
i0.ɵɵadvance();
|
|
287
|
-
i0.ɵɵtextInterpolate(
|
|
358
|
+
i0.ɵɵtextInterpolate(param_r16.Description);
|
|
288
359
|
} }
|
|
289
|
-
function
|
|
290
|
-
i0.ɵɵelementStart(0, "
|
|
360
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_33_Conditional_4_Conditional_1_For_3_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
361
|
+
i0.ɵɵelementStart(0, "span", 98)(1, "strong");
|
|
291
362
|
i0.ɵɵtext(2, "Default:");
|
|
292
363
|
i0.ɵɵelementEnd();
|
|
293
|
-
i0.ɵɵelementStart(3, "code",
|
|
364
|
+
i0.ɵɵelementStart(3, "code", 100);
|
|
294
365
|
i0.ɵɵtext(4);
|
|
295
366
|
i0.ɵɵelementEnd()();
|
|
296
367
|
} if (rf & 2) {
|
|
297
|
-
const
|
|
368
|
+
const param_r16 = i0.ɵɵnextContext().$implicit;
|
|
298
369
|
i0.ɵɵadvance(4);
|
|
299
|
-
i0.ɵɵ
|
|
370
|
+
i0.ɵɵtextInterpolate(param_r16.DefaultValue);
|
|
300
371
|
} }
|
|
301
|
-
function
|
|
302
|
-
const
|
|
303
|
-
i0.ɵɵelementStart(0, "div",
|
|
304
|
-
i0.ɵɵlistener("click", function
|
|
305
|
-
i0.ɵɵelementStart(1, "button",
|
|
306
|
-
i0.ɵɵlistener("click", function
|
|
307
|
-
i0.ɵɵelement(2, "i",
|
|
308
|
-
i0.ɵɵelementEnd();
|
|
309
|
-
i0.ɵɵelementStart(3, "button",
|
|
310
|
-
i0.ɵɵlistener("click", function
|
|
311
|
-
i0.ɵɵelement(4, "i",
|
|
372
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_33_Conditional_4_Conditional_1_For_3_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
373
|
+
const _r17 = i0.ɵɵgetCurrentView();
|
|
374
|
+
i0.ɵɵelementStart(0, "div", 101);
|
|
375
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_33_Conditional_4_Conditional_1_For_3_Conditional_15_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r17); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
376
|
+
i0.ɵɵelementStart(1, "button", 102);
|
|
377
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_33_Conditional_4_Conditional_1_For_3_Conditional_15_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r17); const param_r16 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.editParameter(param_r16)); });
|
|
378
|
+
i0.ɵɵelement(2, "i", 103);
|
|
379
|
+
i0.ɵɵelementEnd();
|
|
380
|
+
i0.ɵɵelementStart(3, "button", 104);
|
|
381
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_33_Conditional_4_Conditional_1_For_3_Conditional_15_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r17); const param_r16 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.deleteParameter(param_r16)); });
|
|
382
|
+
i0.ɵɵelement(4, "i", 105);
|
|
312
383
|
i0.ɵɵelementEnd()();
|
|
313
384
|
} }
|
|
314
|
-
function
|
|
315
|
-
const
|
|
316
|
-
i0.ɵɵelementStart(0, "div",
|
|
317
|
-
i0.ɵɵlistener("click", function
|
|
318
|
-
i0.ɵɵelementStart(1, "div",
|
|
319
|
-
i0.ɵɵelement(3, "i",
|
|
385
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_33_Conditional_4_Conditional_1_For_3_Template(rf, ctx) { if (rf & 1) {
|
|
386
|
+
const _r15 = i0.ɵɵgetCurrentView();
|
|
387
|
+
i0.ɵɵelementStart(0, "div", 89);
|
|
388
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_33_Conditional_4_Conditional_1_For_3_Template_div_click_0_listener() { const param_r16 = i0.ɵɵrestoreView(_r15).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.editParameter(param_r16)); });
|
|
389
|
+
i0.ɵɵelementStart(1, "div", 90)(2, "div", 91);
|
|
390
|
+
i0.ɵɵelement(3, "i", 92);
|
|
320
391
|
i0.ɵɵtext(4);
|
|
321
392
|
i0.ɵɵelementEnd();
|
|
322
|
-
i0.ɵɵelementStart(5, "div",
|
|
323
|
-
i0.ɵɵconditionalCreate(6,
|
|
393
|
+
i0.ɵɵelementStart(5, "div", 93);
|
|
394
|
+
i0.ɵɵconditionalCreate(6, MJQueryFormComponentExtended_Conditional_1_Conditional_33_Conditional_4_Conditional_1_For_3_Conditional_6_Template, 2, 0, "span", 94);
|
|
324
395
|
i0.ɵɵelementEnd()();
|
|
325
|
-
i0.ɵɵelementStart(7, "div",
|
|
326
|
-
i0.ɵɵconditionalCreate(8,
|
|
327
|
-
i0.ɵɵelementStart(9, "div",
|
|
396
|
+
i0.ɵɵelementStart(7, "div", 95);
|
|
397
|
+
i0.ɵɵconditionalCreate(8, MJQueryFormComponentExtended_Conditional_1_Conditional_33_Conditional_4_Conditional_1_For_3_Conditional_8_Template, 2, 1, "div", 96);
|
|
398
|
+
i0.ɵɵelementStart(9, "div", 97)(10, "span", 98)(11, "strong");
|
|
328
399
|
i0.ɵɵtext(12, "Type:");
|
|
329
400
|
i0.ɵɵelementEnd();
|
|
330
401
|
i0.ɵɵtext(13);
|
|
331
402
|
i0.ɵɵelementEnd();
|
|
332
|
-
i0.ɵɵconditionalCreate(14,
|
|
403
|
+
i0.ɵɵconditionalCreate(14, MJQueryFormComponentExtended_Conditional_1_Conditional_33_Conditional_4_Conditional_1_For_3_Conditional_14_Template, 5, 1, "span", 98);
|
|
333
404
|
i0.ɵɵelementEnd()();
|
|
334
|
-
i0.ɵɵconditionalCreate(15,
|
|
405
|
+
i0.ɵɵconditionalCreate(15, MJQueryFormComponentExtended_Conditional_1_Conditional_33_Conditional_4_Conditional_1_For_3_Conditional_15_Template, 5, 0, "div", 99);
|
|
335
406
|
i0.ɵɵelementEnd();
|
|
336
407
|
} if (rf & 2) {
|
|
337
|
-
const
|
|
408
|
+
const param_r16 = ctx.$implicit;
|
|
338
409
|
const ctx_r2 = i0.ɵɵnextContext(5);
|
|
339
|
-
i0.ɵɵclassProp("required",
|
|
410
|
+
i0.ɵɵclassProp("required", param_r16.IsRequired);
|
|
340
411
|
i0.ɵɵadvance(4);
|
|
341
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
412
|
+
i0.ɵɵtextInterpolate1(" ", param_r16.Name, " ");
|
|
342
413
|
i0.ɵɵadvance(2);
|
|
343
|
-
i0.ɵɵconditional(
|
|
414
|
+
i0.ɵɵconditional(param_r16.IsRequired ? 6 : -1);
|
|
344
415
|
i0.ɵɵadvance(2);
|
|
345
|
-
i0.ɵɵconditional(
|
|
416
|
+
i0.ɵɵconditional(param_r16.Description ? 8 : -1);
|
|
346
417
|
i0.ɵɵadvance(5);
|
|
347
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
418
|
+
i0.ɵɵtextInterpolate1(" ", param_r16.Type || "Text", " ");
|
|
348
419
|
i0.ɵɵadvance();
|
|
349
|
-
i0.ɵɵconditional(
|
|
420
|
+
i0.ɵɵconditional(param_r16.DefaultValue ? 14 : -1);
|
|
350
421
|
i0.ɵɵadvance();
|
|
351
422
|
i0.ɵɵconditional(ctx_r2.EditMode ? 15 : -1);
|
|
352
423
|
} }
|
|
353
|
-
function
|
|
354
|
-
i0.ɵɵconditionalCreate(0,
|
|
355
|
-
i0.ɵɵelementStart(1, "div",
|
|
356
|
-
i0.ɵɵrepeaterCreate(2,
|
|
424
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_33_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
425
|
+
i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_1_Conditional_33_Conditional_4_Conditional_1_Conditional_0_Template, 4, 0, "div", 86);
|
|
426
|
+
i0.ɵɵelementStart(1, "div", 87);
|
|
427
|
+
i0.ɵɵrepeaterCreate(2, MJQueryFormComponentExtended_Conditional_1_Conditional_33_Conditional_4_Conditional_1_For_3_Template, 16, 8, "div", 88, _forTrack1);
|
|
357
428
|
i0.ɵɵelementEnd();
|
|
358
429
|
} if (rf & 2) {
|
|
359
430
|
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
@@ -361,19 +432,19 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_32_Conditional_4
|
|
|
361
432
|
i0.ɵɵadvance(2);
|
|
362
433
|
i0.ɵɵrepeater(ctx_r2.queryParameters);
|
|
363
434
|
} }
|
|
364
|
-
function
|
|
365
|
-
i0.ɵɵconditionalCreate(0,
|
|
435
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_33_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
436
|
+
i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_1_Conditional_33_Conditional_4_Conditional_0_Template, 7, 1, "div", 79)(1, MJQueryFormComponentExtended_Conditional_1_Conditional_33_Conditional_4_Conditional_1_Template, 4, 1);
|
|
366
437
|
} if (rf & 2) {
|
|
367
438
|
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
368
439
|
i0.ɵɵconditional(ctx_r2.queryParameters.length === 0 ? 0 : 1);
|
|
369
440
|
} }
|
|
370
|
-
function
|
|
371
|
-
const
|
|
372
|
-
i0.ɵɵelementStart(0, "kendo-expansionpanel",
|
|
373
|
-
i0.ɵɵtwoWayListener("expandedChange", function
|
|
374
|
-
i0.ɵɵtemplate(1,
|
|
375
|
-
i0.ɵɵelementStart(2, "div",
|
|
376
|
-
i0.ɵɵconditionalCreate(3,
|
|
441
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_33_Template(rf, ctx) { if (rf & 1) {
|
|
442
|
+
const _r12 = i0.ɵɵgetCurrentView();
|
|
443
|
+
i0.ɵɵelementStart(0, "kendo-expansionpanel", 24);
|
|
444
|
+
i0.ɵɵtwoWayListener("expandedChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_33_Template_kendo_expansionpanel_expandedChange_0_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.parametersPanelExpanded, $event) || (ctx_r2.parametersPanelExpanded = $event); return i0.ɵɵresetView($event); });
|
|
445
|
+
i0.ɵɵtemplate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_33_ng_template_1_Template, 4, 1, "ng-template", 25);
|
|
446
|
+
i0.ɵɵelementStart(2, "div", 30);
|
|
447
|
+
i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_33_Conditional_3_Template, 2, 0, "div", 75)(4, MJQueryFormComponentExtended_Conditional_1_Conditional_33_Conditional_4_Template, 2, 1);
|
|
377
448
|
i0.ɵɵelementEnd()();
|
|
378
449
|
} if (rf & 2) {
|
|
379
450
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
@@ -381,126 +452,126 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_32_Template(rf,
|
|
|
381
452
|
i0.ɵɵadvance(3);
|
|
382
453
|
i0.ɵɵconditional(ctx_r2.isLoadingParameters ? 3 : 4);
|
|
383
454
|
} }
|
|
384
|
-
function
|
|
385
|
-
i0.ɵɵelementStart(0, "span",
|
|
455
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_34_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
456
|
+
i0.ɵɵelementStart(0, "span", 77);
|
|
386
457
|
i0.ɵɵtext(1);
|
|
387
458
|
i0.ɵɵelementEnd();
|
|
388
459
|
} if (rf & 2) {
|
|
389
460
|
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
390
461
|
i0.ɵɵadvance();
|
|
391
|
-
i0.ɵɵ
|
|
462
|
+
i0.ɵɵtextInterpolate(ctx_r2.queryFields.length);
|
|
392
463
|
} }
|
|
393
|
-
function
|
|
464
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_34_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
394
465
|
i0.ɵɵelementStart(0, "span", 53);
|
|
395
|
-
i0.ɵɵelement(1, "i",
|
|
466
|
+
i0.ɵɵelement(1, "i", 106);
|
|
396
467
|
i0.ɵɵtext(2, " Query Fields ");
|
|
397
|
-
i0.ɵɵconditionalCreate(3,
|
|
468
|
+
i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_34_ng_template_1_Conditional_3_Template, 2, 1, "span", 77);
|
|
398
469
|
i0.ɵɵelementEnd();
|
|
399
470
|
} if (rf & 2) {
|
|
400
471
|
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
401
472
|
i0.ɵɵadvance(3);
|
|
402
473
|
i0.ɵɵconditional(ctx_r2.queryFields.length > 0 ? 3 : -1);
|
|
403
474
|
} }
|
|
404
|
-
function
|
|
405
|
-
i0.ɵɵelementStart(0, "div",
|
|
406
|
-
i0.ɵɵelement(1, "
|
|
475
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_34_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
476
|
+
i0.ɵɵelementStart(0, "div", 75);
|
|
477
|
+
i0.ɵɵelement(1, "mj-loading", 107);
|
|
407
478
|
i0.ɵɵelementEnd();
|
|
408
479
|
} }
|
|
409
|
-
function
|
|
410
|
-
const
|
|
411
|
-
i0.ɵɵelementStart(0, "button",
|
|
412
|
-
i0.ɵɵlistener("click", function
|
|
413
|
-
i0.ɵɵelement(1, "i",
|
|
480
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_34_Conditional_4_Conditional_0_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
481
|
+
const _r19 = i0.ɵɵgetCurrentView();
|
|
482
|
+
i0.ɵɵelementStart(0, "button", 84);
|
|
483
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_34_Conditional_4_Conditional_0_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r19); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.addField()); });
|
|
484
|
+
i0.ɵɵelement(1, "i", 85);
|
|
414
485
|
i0.ɵɵtext(2, " Add First Field ");
|
|
415
486
|
i0.ɵɵelementEnd();
|
|
416
487
|
} }
|
|
417
|
-
function
|
|
418
|
-
i0.ɵɵelementStart(0, "div",
|
|
419
|
-
i0.ɵɵelement(1, "i",
|
|
420
|
-
i0.ɵɵelementStart(2, "
|
|
488
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_34_Conditional_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
489
|
+
i0.ɵɵelementStart(0, "div", 79);
|
|
490
|
+
i0.ɵɵelement(1, "i", 108);
|
|
491
|
+
i0.ɵɵelementStart(2, "div", 81);
|
|
421
492
|
i0.ɵɵtext(3, "No Fields Defined");
|
|
422
493
|
i0.ɵɵelementEnd();
|
|
423
|
-
i0.ɵɵelementStart(4, "div",
|
|
494
|
+
i0.ɵɵelementStart(4, "div", 82);
|
|
424
495
|
i0.ɵɵtext(5, " Define output fields for your query results. ");
|
|
425
496
|
i0.ɵɵelementEnd();
|
|
426
|
-
i0.ɵɵconditionalCreate(6,
|
|
497
|
+
i0.ɵɵconditionalCreate(6, MJQueryFormComponentExtended_Conditional_1_Conditional_34_Conditional_4_Conditional_0_Conditional_6_Template, 3, 0, "button", 83);
|
|
427
498
|
i0.ɵɵelementEnd();
|
|
428
499
|
} if (rf & 2) {
|
|
429
500
|
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
430
501
|
i0.ɵɵadvance(6);
|
|
431
502
|
i0.ɵɵconditional(ctx_r2.EditMode ? 6 : -1);
|
|
432
503
|
} }
|
|
433
|
-
function
|
|
434
|
-
const
|
|
435
|
-
i0.ɵɵelementStart(0, "div",
|
|
436
|
-
i0.ɵɵlistener("click", function
|
|
437
|
-
i0.ɵɵelement(2, "i",
|
|
504
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_34_Conditional_4_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
505
|
+
const _r20 = i0.ɵɵgetCurrentView();
|
|
506
|
+
i0.ɵɵelementStart(0, "div", 86)(1, "button", 84);
|
|
507
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_34_Conditional_4_Conditional_1_Conditional_0_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r20); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.addField()); });
|
|
508
|
+
i0.ɵɵelement(2, "i", 85);
|
|
438
509
|
i0.ɵɵtext(3, " Add Field ");
|
|
439
510
|
i0.ɵɵelementEnd()();
|
|
440
511
|
} }
|
|
441
|
-
function
|
|
442
|
-
i0.ɵɵelementStart(0, "span",
|
|
512
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_34_Conditional_4_Conditional_1_For_3_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
513
|
+
i0.ɵɵelementStart(0, "span", 112);
|
|
443
514
|
i0.ɵɵtext(1);
|
|
444
515
|
i0.ɵɵelementEnd();
|
|
445
516
|
} if (rf & 2) {
|
|
446
|
-
const
|
|
517
|
+
const field_r21 = i0.ɵɵnextContext().$implicit;
|
|
447
518
|
i0.ɵɵadvance();
|
|
448
|
-
i0.ɵɵtextInterpolate1("#",
|
|
519
|
+
i0.ɵɵtextInterpolate1("#", field_r21.Sequence);
|
|
449
520
|
} }
|
|
450
|
-
function
|
|
451
|
-
i0.ɵɵelementStart(0, "div",
|
|
521
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_34_Conditional_4_Conditional_1_For_3_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
522
|
+
i0.ɵɵelementStart(0, "div", 96);
|
|
452
523
|
i0.ɵɵtext(1);
|
|
453
524
|
i0.ɵɵelementEnd();
|
|
454
525
|
} if (rf & 2) {
|
|
455
|
-
const
|
|
526
|
+
const field_r21 = i0.ɵɵnextContext().$implicit;
|
|
456
527
|
i0.ɵɵadvance();
|
|
457
|
-
i0.ɵɵtextInterpolate(
|
|
528
|
+
i0.ɵɵtextInterpolate(field_r21.Description);
|
|
458
529
|
} }
|
|
459
|
-
function
|
|
460
|
-
const
|
|
461
|
-
i0.ɵɵelementStart(0, "div",
|
|
462
|
-
i0.ɵɵlistener("click", function
|
|
463
|
-
i0.ɵɵelement(2, "i",
|
|
530
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_34_Conditional_4_Conditional_1_For_3_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
531
|
+
const _r22 = i0.ɵɵgetCurrentView();
|
|
532
|
+
i0.ɵɵelementStart(0, "div", 114)(1, "button", 115);
|
|
533
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_34_Conditional_4_Conditional_1_For_3_Conditional_15_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r22); const field_r21 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.deleteField(field_r21)); });
|
|
534
|
+
i0.ɵɵelement(2, "i", 105);
|
|
464
535
|
i0.ɵɵelementEnd()();
|
|
465
536
|
} }
|
|
466
|
-
function
|
|
467
|
-
i0.ɵɵelementStart(0, "div",
|
|
468
|
-
i0.ɵɵelement(3, "i",
|
|
537
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_34_Conditional_4_Conditional_1_For_3_Template(rf, ctx) { if (rf & 1) {
|
|
538
|
+
i0.ɵɵelementStart(0, "div", 109)(1, "div", 90)(2, "div", 91);
|
|
539
|
+
i0.ɵɵelement(3, "i", 110);
|
|
469
540
|
i0.ɵɵtext(4);
|
|
470
541
|
i0.ɵɵelementEnd();
|
|
471
|
-
i0.ɵɵelementStart(5, "div",
|
|
542
|
+
i0.ɵɵelementStart(5, "div", 93)(6, "span", 111);
|
|
472
543
|
i0.ɵɵtext(7);
|
|
473
544
|
i0.ɵɵelementEnd();
|
|
474
|
-
i0.ɵɵconditionalCreate(8,
|
|
545
|
+
i0.ɵɵconditionalCreate(8, MJQueryFormComponentExtended_Conditional_1_Conditional_34_Conditional_4_Conditional_1_For_3_Conditional_8_Template, 2, 1, "span", 112);
|
|
475
546
|
i0.ɵɵelementEnd()();
|
|
476
|
-
i0.ɵɵelementStart(9, "div",
|
|
477
|
-
i0.ɵɵconditionalCreate(10,
|
|
478
|
-
i0.ɵɵelementStart(11, "div",
|
|
479
|
-
i0.ɵɵelement(13, "i",
|
|
547
|
+
i0.ɵɵelementStart(9, "div", 95);
|
|
548
|
+
i0.ɵɵconditionalCreate(10, MJQueryFormComponentExtended_Conditional_1_Conditional_34_Conditional_4_Conditional_1_For_3_Conditional_10_Template, 2, 1, "div", 96);
|
|
549
|
+
i0.ɵɵelementStart(11, "div", 97)(12, "span", 98);
|
|
550
|
+
i0.ɵɵelement(13, "i", 113);
|
|
480
551
|
i0.ɵɵtext(14);
|
|
481
552
|
i0.ɵɵelementEnd()()();
|
|
482
|
-
i0.ɵɵconditionalCreate(15,
|
|
553
|
+
i0.ɵɵconditionalCreate(15, MJQueryFormComponentExtended_Conditional_1_Conditional_34_Conditional_4_Conditional_1_For_3_Conditional_15_Template, 3, 0, "div", 114);
|
|
483
554
|
i0.ɵɵelementEnd();
|
|
484
555
|
} if (rf & 2) {
|
|
485
|
-
const
|
|
556
|
+
const field_r21 = ctx.$implicit;
|
|
486
557
|
const ctx_r2 = i0.ɵɵnextContext(5);
|
|
487
558
|
i0.ɵɵadvance(4);
|
|
488
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
559
|
+
i0.ɵɵtextInterpolate1(" ", field_r21.Name, " ");
|
|
489
560
|
i0.ɵɵadvance(3);
|
|
490
|
-
i0.ɵɵtextInterpolate(
|
|
561
|
+
i0.ɵɵtextInterpolate(field_r21.SQLBaseType);
|
|
491
562
|
i0.ɵɵadvance();
|
|
492
|
-
i0.ɵɵconditional(
|
|
563
|
+
i0.ɵɵconditional(field_r21.Sequence ? 8 : -1);
|
|
493
564
|
i0.ɵɵadvance(2);
|
|
494
|
-
i0.ɵɵconditional(
|
|
565
|
+
i0.ɵɵconditional(field_r21.Description ? 10 : -1);
|
|
495
566
|
i0.ɵɵadvance(4);
|
|
496
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
567
|
+
i0.ɵɵtextInterpolate1(" ", field_r21.SQLFullType || field_r21.SQLBaseType, " ");
|
|
497
568
|
i0.ɵɵadvance();
|
|
498
569
|
i0.ɵɵconditional(ctx_r2.EditMode ? 15 : -1);
|
|
499
570
|
} }
|
|
500
|
-
function
|
|
501
|
-
i0.ɵɵconditionalCreate(0,
|
|
502
|
-
i0.ɵɵelementStart(1, "div",
|
|
503
|
-
i0.ɵɵrepeaterCreate(2,
|
|
571
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_34_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
572
|
+
i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_1_Conditional_34_Conditional_4_Conditional_1_Conditional_0_Template, 4, 0, "div", 86);
|
|
573
|
+
i0.ɵɵelementStart(1, "div", 87);
|
|
574
|
+
i0.ɵɵrepeaterCreate(2, MJQueryFormComponentExtended_Conditional_1_Conditional_34_Conditional_4_Conditional_1_For_3_Template, 16, 6, "div", 109, _forTrack2);
|
|
504
575
|
i0.ɵɵelementEnd();
|
|
505
576
|
} if (rf & 2) {
|
|
506
577
|
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
@@ -508,19 +579,19 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_33_Conditional_4
|
|
|
508
579
|
i0.ɵɵadvance(2);
|
|
509
580
|
i0.ɵɵrepeater(ctx_r2.queryFields);
|
|
510
581
|
} }
|
|
511
|
-
function
|
|
512
|
-
i0.ɵɵconditionalCreate(0,
|
|
582
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_34_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
583
|
+
i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_1_Conditional_34_Conditional_4_Conditional_0_Template, 7, 1, "div", 79)(1, MJQueryFormComponentExtended_Conditional_1_Conditional_34_Conditional_4_Conditional_1_Template, 4, 1);
|
|
513
584
|
} if (rf & 2) {
|
|
514
585
|
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
515
586
|
i0.ɵɵconditional(ctx_r2.queryFields.length === 0 ? 0 : 1);
|
|
516
587
|
} }
|
|
517
|
-
function
|
|
518
|
-
const
|
|
519
|
-
i0.ɵɵelementStart(0, "kendo-expansionpanel",
|
|
520
|
-
i0.ɵɵtwoWayListener("expandedChange", function
|
|
521
|
-
i0.ɵɵtemplate(1,
|
|
522
|
-
i0.ɵɵelementStart(2, "div",
|
|
523
|
-
i0.ɵɵconditionalCreate(3,
|
|
588
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_34_Template(rf, ctx) { if (rf & 1) {
|
|
589
|
+
const _r18 = i0.ɵɵgetCurrentView();
|
|
590
|
+
i0.ɵɵelementStart(0, "kendo-expansionpanel", 24);
|
|
591
|
+
i0.ɵɵtwoWayListener("expandedChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_34_Template_kendo_expansionpanel_expandedChange_0_listener($event) { i0.ɵɵrestoreView(_r18); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.fieldsPanelExpanded, $event) || (ctx_r2.fieldsPanelExpanded = $event); return i0.ɵɵresetView($event); });
|
|
592
|
+
i0.ɵɵtemplate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_34_ng_template_1_Template, 4, 1, "ng-template", 25);
|
|
593
|
+
i0.ɵɵelementStart(2, "div", 30);
|
|
594
|
+
i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_34_Conditional_3_Template, 2, 0, "div", 75)(4, MJQueryFormComponentExtended_Conditional_1_Conditional_34_Conditional_4_Template, 2, 1);
|
|
524
595
|
i0.ɵɵelementEnd()();
|
|
525
596
|
} if (rf & 2) {
|
|
526
597
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
@@ -528,114 +599,114 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_33_Template(rf,
|
|
|
528
599
|
i0.ɵɵadvance(3);
|
|
529
600
|
i0.ɵɵconditional(ctx_r2.isLoadingFields ? 3 : 4);
|
|
530
601
|
} }
|
|
531
|
-
function
|
|
532
|
-
i0.ɵɵelementStart(0, "span",
|
|
602
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_35_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
603
|
+
i0.ɵɵelementStart(0, "span", 77);
|
|
533
604
|
i0.ɵɵtext(1);
|
|
534
605
|
i0.ɵɵelementEnd();
|
|
535
606
|
} if (rf & 2) {
|
|
536
607
|
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
537
608
|
i0.ɵɵadvance();
|
|
538
|
-
i0.ɵɵ
|
|
609
|
+
i0.ɵɵtextInterpolate(ctx_r2.queryEntities.length);
|
|
539
610
|
} }
|
|
540
|
-
function
|
|
611
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_35_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
541
612
|
i0.ɵɵelementStart(0, "span", 53);
|
|
542
|
-
i0.ɵɵelement(1, "i",
|
|
613
|
+
i0.ɵɵelement(1, "i", 116);
|
|
543
614
|
i0.ɵɵtext(2, " Query Entities ");
|
|
544
|
-
i0.ɵɵconditionalCreate(3,
|
|
615
|
+
i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_35_ng_template_1_Conditional_3_Template, 2, 1, "span", 77);
|
|
545
616
|
i0.ɵɵelementEnd();
|
|
546
617
|
} if (rf & 2) {
|
|
547
618
|
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
548
619
|
i0.ɵɵadvance(3);
|
|
549
620
|
i0.ɵɵconditional(ctx_r2.queryEntities.length > 0 ? 3 : -1);
|
|
550
621
|
} }
|
|
551
|
-
function
|
|
552
|
-
i0.ɵɵelementStart(0, "div",
|
|
553
|
-
i0.ɵɵelement(1, "
|
|
622
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_35_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
623
|
+
i0.ɵɵelementStart(0, "div", 75);
|
|
624
|
+
i0.ɵɵelement(1, "mj-loading", 117);
|
|
554
625
|
i0.ɵɵelementEnd();
|
|
555
626
|
} }
|
|
556
|
-
function
|
|
557
|
-
const
|
|
558
|
-
i0.ɵɵelementStart(0, "button",
|
|
559
|
-
i0.ɵɵlistener("click", function
|
|
560
|
-
i0.ɵɵelement(1, "i",
|
|
627
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_35_Conditional_4_Conditional_0_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
628
|
+
const _r24 = i0.ɵɵgetCurrentView();
|
|
629
|
+
i0.ɵɵelementStart(0, "button", 84);
|
|
630
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_35_Conditional_4_Conditional_0_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r24); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.addEntity()); });
|
|
631
|
+
i0.ɵɵelement(1, "i", 85);
|
|
561
632
|
i0.ɵɵtext(2, " Add First Entity ");
|
|
562
633
|
i0.ɵɵelementEnd();
|
|
563
634
|
} }
|
|
564
|
-
function
|
|
565
|
-
i0.ɵɵelementStart(0, "div",
|
|
635
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_35_Conditional_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
636
|
+
i0.ɵɵelementStart(0, "div", 79);
|
|
566
637
|
i0.ɵɵelement(1, "i", 118);
|
|
567
|
-
i0.ɵɵelementStart(2, "
|
|
638
|
+
i0.ɵɵelementStart(2, "div", 81);
|
|
568
639
|
i0.ɵɵtext(3, "No Entities Tracked");
|
|
569
640
|
i0.ɵɵelementEnd();
|
|
570
|
-
i0.ɵɵelementStart(4, "div",
|
|
641
|
+
i0.ɵɵelementStart(4, "div", 82);
|
|
571
642
|
i0.ɵɵtext(5, " Track which entities this query uses for documentation. ");
|
|
572
643
|
i0.ɵɵelementEnd();
|
|
573
|
-
i0.ɵɵconditionalCreate(6,
|
|
644
|
+
i0.ɵɵconditionalCreate(6, MJQueryFormComponentExtended_Conditional_1_Conditional_35_Conditional_4_Conditional_0_Conditional_6_Template, 3, 0, "button", 83);
|
|
574
645
|
i0.ɵɵelementEnd();
|
|
575
646
|
} if (rf & 2) {
|
|
576
647
|
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
577
648
|
i0.ɵɵadvance(6);
|
|
578
649
|
i0.ɵɵconditional(ctx_r2.EditMode ? 6 : -1);
|
|
579
650
|
} }
|
|
580
|
-
function
|
|
581
|
-
const
|
|
582
|
-
i0.ɵɵelementStart(0, "div",
|
|
583
|
-
i0.ɵɵlistener("click", function
|
|
584
|
-
i0.ɵɵelement(2, "i",
|
|
651
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_35_Conditional_4_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
652
|
+
const _r25 = i0.ɵɵgetCurrentView();
|
|
653
|
+
i0.ɵɵelementStart(0, "div", 86)(1, "button", 84);
|
|
654
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_35_Conditional_4_Conditional_1_Conditional_0_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r25); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.addEntity()); });
|
|
655
|
+
i0.ɵɵelement(2, "i", 85);
|
|
585
656
|
i0.ɵɵtext(3, " Add Entity ");
|
|
586
657
|
i0.ɵɵelementEnd()();
|
|
587
658
|
} }
|
|
588
|
-
function
|
|
589
|
-
const
|
|
659
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_35_Conditional_4_Conditional_1_For_3_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
660
|
+
const _r26 = i0.ɵɵgetCurrentView();
|
|
590
661
|
i0.ɵɵelementStart(0, "div", 120)(1, "kendo-dropdownlist", 121);
|
|
591
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
662
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_35_Conditional_4_Conditional_1_For_3_Conditional_5_Template_kendo_dropdownlist_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r26); const entity_r27 = i0.ɵɵnextContext().$implicit; i0.ɵɵtwoWayBindingSet(entity_r27.EntityID, $event) || (entity_r27.EntityID = $event); return i0.ɵɵresetView($event); });
|
|
592
663
|
i0.ɵɵelementEnd()();
|
|
593
664
|
} if (rf & 2) {
|
|
594
|
-
const
|
|
665
|
+
const entity_r27 = i0.ɵɵnextContext().$implicit;
|
|
595
666
|
const ctx_r2 = i0.ɵɵnextContext(5);
|
|
596
667
|
i0.ɵɵadvance();
|
|
597
|
-
i0.ɵɵtwoWayProperty("ngModel",
|
|
598
|
-
i0.ɵɵproperty("name", "entity_" +
|
|
668
|
+
i0.ɵɵtwoWayProperty("ngModel", entity_r27.EntityID);
|
|
669
|
+
i0.ɵɵproperty("name", "entity_" + entity_r27.ID)("data", ctx_r2.getEntityOptions())("valuePrimitive", true);
|
|
599
670
|
} }
|
|
600
|
-
function
|
|
601
|
-
i0.ɵɵelementStart(0, "div",
|
|
671
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_35_Conditional_4_Conditional_1_For_3_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
672
|
+
i0.ɵɵelementStart(0, "div", 95)(1, "div", 97)(2, "span", 98);
|
|
602
673
|
i0.ɵɵelement(3, "i", 122);
|
|
603
674
|
i0.ɵɵtext(4, " Data Source ");
|
|
604
675
|
i0.ɵɵelementEnd()()();
|
|
605
676
|
} }
|
|
606
|
-
function
|
|
607
|
-
const
|
|
608
|
-
i0.ɵɵelementStart(0, "div",
|
|
609
|
-
i0.ɵɵlistener("click", function
|
|
610
|
-
i0.ɵɵelement(2, "i",
|
|
677
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_35_Conditional_4_Conditional_1_For_3_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
678
|
+
const _r28 = i0.ɵɵgetCurrentView();
|
|
679
|
+
i0.ɵɵelementStart(0, "div", 114)(1, "button", 123);
|
|
680
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_35_Conditional_4_Conditional_1_For_3_Conditional_7_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r28); const entity_r27 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.deleteEntity(entity_r27)); });
|
|
681
|
+
i0.ɵɵelement(2, "i", 105);
|
|
611
682
|
i0.ɵɵelementEnd()();
|
|
612
683
|
} }
|
|
613
|
-
function
|
|
614
|
-
i0.ɵɵelementStart(0, "div",
|
|
684
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_35_Conditional_4_Conditional_1_For_3_Template(rf, ctx) { if (rf & 1) {
|
|
685
|
+
i0.ɵɵelementStart(0, "div", 109)(1, "div", 90)(2, "div", 91);
|
|
615
686
|
i0.ɵɵelement(3, "i", 119);
|
|
616
687
|
i0.ɵɵtext(4);
|
|
617
688
|
i0.ɵɵelementEnd();
|
|
618
|
-
i0.ɵɵconditionalCreate(5,
|
|
689
|
+
i0.ɵɵconditionalCreate(5, MJQueryFormComponentExtended_Conditional_1_Conditional_35_Conditional_4_Conditional_1_For_3_Conditional_5_Template, 2, 4, "div", 120);
|
|
619
690
|
i0.ɵɵelementEnd();
|
|
620
|
-
i0.ɵɵconditionalCreate(6,
|
|
621
|
-
i0.ɵɵconditionalCreate(7,
|
|
691
|
+
i0.ɵɵconditionalCreate(6, MJQueryFormComponentExtended_Conditional_1_Conditional_35_Conditional_4_Conditional_1_For_3_Conditional_6_Template, 5, 0, "div", 95);
|
|
692
|
+
i0.ɵɵconditionalCreate(7, MJQueryFormComponentExtended_Conditional_1_Conditional_35_Conditional_4_Conditional_1_For_3_Conditional_7_Template, 3, 0, "div", 114);
|
|
622
693
|
i0.ɵɵelementEnd();
|
|
623
694
|
} if (rf & 2) {
|
|
624
|
-
const
|
|
695
|
+
const entity_r27 = ctx.$implicit;
|
|
625
696
|
const ctx_r2 = i0.ɵɵnextContext(5);
|
|
626
697
|
i0.ɵɵadvance(4);
|
|
627
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
698
|
+
i0.ɵɵtextInterpolate1(" ", entity_r27.Entity || "Select Entity...", " ");
|
|
628
699
|
i0.ɵɵadvance();
|
|
629
700
|
i0.ɵɵconditional(ctx_r2.EditMode ? 5 : -1);
|
|
630
701
|
i0.ɵɵadvance();
|
|
631
|
-
i0.ɵɵconditional(!ctx_r2.EditMode &&
|
|
702
|
+
i0.ɵɵconditional(!ctx_r2.EditMode && entity_r27.Entity ? 6 : -1);
|
|
632
703
|
i0.ɵɵadvance();
|
|
633
704
|
i0.ɵɵconditional(ctx_r2.EditMode ? 7 : -1);
|
|
634
705
|
} }
|
|
635
|
-
function
|
|
636
|
-
i0.ɵɵconditionalCreate(0,
|
|
637
|
-
i0.ɵɵelementStart(1, "div",
|
|
638
|
-
i0.ɵɵrepeaterCreate(2,
|
|
706
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_35_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
707
|
+
i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_1_Conditional_35_Conditional_4_Conditional_1_Conditional_0_Template, 4, 0, "div", 86);
|
|
708
|
+
i0.ɵɵelementStart(1, "div", 87);
|
|
709
|
+
i0.ɵɵrepeaterCreate(2, MJQueryFormComponentExtended_Conditional_1_Conditional_35_Conditional_4_Conditional_1_For_3_Template, 8, 4, "div", 109, _forTrack2);
|
|
639
710
|
i0.ɵɵelementEnd();
|
|
640
711
|
} if (rf & 2) {
|
|
641
712
|
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
@@ -643,19 +714,19 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_34_Conditional_4
|
|
|
643
714
|
i0.ɵɵadvance(2);
|
|
644
715
|
i0.ɵɵrepeater(ctx_r2.queryEntities);
|
|
645
716
|
} }
|
|
646
|
-
function
|
|
647
|
-
i0.ɵɵconditionalCreate(0,
|
|
717
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_35_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
718
|
+
i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_1_Conditional_35_Conditional_4_Conditional_0_Template, 7, 1, "div", 79)(1, MJQueryFormComponentExtended_Conditional_1_Conditional_35_Conditional_4_Conditional_1_Template, 4, 1);
|
|
648
719
|
} if (rf & 2) {
|
|
649
720
|
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
650
721
|
i0.ɵɵconditional(ctx_r2.queryEntities.length === 0 ? 0 : 1);
|
|
651
722
|
} }
|
|
652
|
-
function
|
|
653
|
-
const
|
|
654
|
-
i0.ɵɵelementStart(0, "kendo-expansionpanel",
|
|
655
|
-
i0.ɵɵtwoWayListener("expandedChange", function
|
|
656
|
-
i0.ɵɵtemplate(1,
|
|
657
|
-
i0.ɵɵelementStart(2, "div",
|
|
658
|
-
i0.ɵɵconditionalCreate(3,
|
|
723
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_35_Template(rf, ctx) { if (rf & 1) {
|
|
724
|
+
const _r23 = i0.ɵɵgetCurrentView();
|
|
725
|
+
i0.ɵɵelementStart(0, "kendo-expansionpanel", 24);
|
|
726
|
+
i0.ɵɵtwoWayListener("expandedChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_35_Template_kendo_expansionpanel_expandedChange_0_listener($event) { i0.ɵɵrestoreView(_r23); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.entitiesPanelExpanded, $event) || (ctx_r2.entitiesPanelExpanded = $event); return i0.ɵɵresetView($event); });
|
|
727
|
+
i0.ɵɵtemplate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_35_ng_template_1_Template, 4, 1, "ng-template", 25);
|
|
728
|
+
i0.ɵɵelementStart(2, "div", 30);
|
|
729
|
+
i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_35_Conditional_3_Template, 2, 0, "div", 75)(4, MJQueryFormComponentExtended_Conditional_1_Conditional_35_Conditional_4_Template, 2, 1);
|
|
659
730
|
i0.ɵɵelementEnd()();
|
|
660
731
|
} if (rf & 2) {
|
|
661
732
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
@@ -663,48 +734,48 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_34_Template(rf,
|
|
|
663
734
|
i0.ɵɵadvance(3);
|
|
664
735
|
i0.ɵɵconditional(ctx_r2.isLoadingEntities ? 3 : 4);
|
|
665
736
|
} }
|
|
666
|
-
function
|
|
737
|
+
function MJQueryFormComponentExtended_Conditional_1_ng_template_37_Template(rf, ctx) { if (rf & 1) {
|
|
667
738
|
i0.ɵɵelementStart(0, "span", 53);
|
|
668
739
|
i0.ɵɵelement(1, "i", 124);
|
|
669
740
|
i0.ɵɵtext(2, " Query Details ");
|
|
670
741
|
i0.ɵɵelementEnd();
|
|
671
742
|
} }
|
|
672
|
-
function
|
|
673
|
-
const
|
|
743
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_44_Template(rf, ctx) { if (rf & 1) {
|
|
744
|
+
const _r29 = i0.ɵɵgetCurrentView();
|
|
674
745
|
i0.ɵɵelementStart(0, "kendo-switch", 125);
|
|
675
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
746
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_44_Template_kendo_switch_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r29); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.record.UsesTemplate, $event) || (ctx_r2.record.UsesTemplate = $event); return i0.ɵɵresetView($event); });
|
|
676
747
|
i0.ɵɵelementEnd();
|
|
677
748
|
} if (rf & 2) {
|
|
678
749
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
679
750
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r2.record.UsesTemplate);
|
|
680
751
|
} }
|
|
681
|
-
function
|
|
752
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_45_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
682
753
|
i0.ɵɵelementStart(0, "span", 126);
|
|
683
|
-
i0.ɵɵelement(1, "i",
|
|
754
|
+
i0.ɵɵelement(1, "i", 59);
|
|
684
755
|
i0.ɵɵtext(2, " Uses Templates");
|
|
685
756
|
i0.ɵɵelementEnd();
|
|
686
757
|
} }
|
|
687
|
-
function
|
|
688
|
-
i0.ɵɵelementStart(0, "span",
|
|
689
|
-
i0.ɵɵelement(1, "i",
|
|
758
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_45_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
759
|
+
i0.ɵɵelementStart(0, "span", 127);
|
|
760
|
+
i0.ɵɵelement(1, "i", 128);
|
|
690
761
|
i0.ɵɵtext(2, " No Templates");
|
|
691
762
|
i0.ɵɵelementEnd();
|
|
692
763
|
} }
|
|
693
|
-
function
|
|
694
|
-
i0.ɵɵelementStart(0, "div",
|
|
695
|
-
i0.ɵɵconditionalCreate(1,
|
|
764
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_45_Template(rf, ctx) { if (rf & 1) {
|
|
765
|
+
i0.ɵɵelementStart(0, "div", 36);
|
|
766
|
+
i0.ɵɵconditionalCreate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_45_Conditional_1_Template, 3, 0, "span", 126)(2, MJQueryFormComponentExtended_Conditional_1_Conditional_45_Conditional_2_Template, 3, 0, "span", 127);
|
|
696
767
|
i0.ɵɵelementEnd();
|
|
697
768
|
} if (rf & 2) {
|
|
698
769
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
699
770
|
i0.ɵɵadvance();
|
|
700
771
|
i0.ɵɵconditional(ctx_r2.record.UsesTemplate ? 1 : 2);
|
|
701
772
|
} }
|
|
702
|
-
function
|
|
703
|
-
i0.ɵɵelementStart(0, "div",
|
|
704
|
-
i0.ɵɵelement(2, "i",
|
|
773
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_58_Template(rf, ctx) { if (rf & 1) {
|
|
774
|
+
i0.ɵɵelementStart(0, "div", 32)(1, "label", 33);
|
|
775
|
+
i0.ɵɵelement(2, "i", 129);
|
|
705
776
|
i0.ɵɵtext(3, " Quality Rank ");
|
|
706
777
|
i0.ɵɵelementEnd();
|
|
707
|
-
i0.ɵɵelementStart(4, "div",
|
|
778
|
+
i0.ɵɵelementStart(4, "div", 36);
|
|
708
779
|
i0.ɵɵtext(5);
|
|
709
780
|
i0.ɵɵelementEnd()();
|
|
710
781
|
} if (rf & 2) {
|
|
@@ -712,79 +783,79 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_57_Template(rf,
|
|
|
712
783
|
i0.ɵɵadvance(5);
|
|
713
784
|
i0.ɵɵtextInterpolate1("", ctx_r2.record.QualityRank, "/10");
|
|
714
785
|
} }
|
|
715
|
-
function
|
|
786
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_59_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
716
787
|
i0.ɵɵelementStart(0, "span", 53);
|
|
717
|
-
i0.ɵɵelement(1, "i",
|
|
788
|
+
i0.ɵɵelement(1, "i", 130);
|
|
718
789
|
i0.ɵɵtext(2, " Query Permissions ");
|
|
719
790
|
i0.ɵɵelementEnd();
|
|
720
791
|
} }
|
|
721
|
-
function
|
|
722
|
-
i0.ɵɵelementStart(0, "div",
|
|
723
|
-
i0.ɵɵelement(1, "
|
|
792
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_59_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
793
|
+
i0.ɵɵelementStart(0, "div", 75);
|
|
794
|
+
i0.ɵɵelement(1, "mj-loading", 131);
|
|
724
795
|
i0.ɵɵelementEnd();
|
|
725
796
|
} }
|
|
726
|
-
function
|
|
727
|
-
i0.ɵɵelementStart(0, "div",
|
|
728
|
-
i0.ɵɵelement(1, "i",
|
|
729
|
-
i0.ɵɵelementStart(2, "
|
|
797
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_59_Conditional_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
798
|
+
i0.ɵɵelementStart(0, "div", 79);
|
|
799
|
+
i0.ɵɵelement(1, "i", 132);
|
|
800
|
+
i0.ɵɵelementStart(2, "div", 81);
|
|
730
801
|
i0.ɵɵtext(3, "No Permissions Set");
|
|
731
802
|
i0.ɵɵelementEnd();
|
|
732
|
-
i0.ɵɵelementStart(4, "div",
|
|
803
|
+
i0.ɵɵelementStart(4, "div", 82);
|
|
733
804
|
i0.ɵɵtext(5, " This query uses default permissions. ");
|
|
734
805
|
i0.ɵɵelementEnd()();
|
|
735
806
|
} }
|
|
736
|
-
function
|
|
737
|
-
i0.ɵɵelement(0, "mj-explorer-entity-data-grid",
|
|
807
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_59_Conditional_4_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
808
|
+
i0.ɵɵelement(0, "mj-explorer-entity-data-grid", 133);
|
|
738
809
|
} if (rf & 2) {
|
|
739
810
|
const ctx_r2 = i0.ɵɵnextContext(5);
|
|
740
811
|
i0.ɵɵproperty("Params", ctx_r2.BuildRelationshipViewParamsByEntityName("MJ: Query Permissions", "QueryID"))("NewRecordValues", ctx_r2.NewRecordValues("MJ: Query Permissions"))("AllowLoad", true)("ShowToolbar", false);
|
|
741
812
|
} }
|
|
742
|
-
function
|
|
743
|
-
i0.ɵɵelementStart(0, "div",
|
|
744
|
-
i0.ɵɵelement(
|
|
745
|
-
i0.ɵɵelementStart(
|
|
746
|
-
i0.ɵɵtext(
|
|
813
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_59_Conditional_4_Conditional_1_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
814
|
+
i0.ɵɵelementStart(0, "div", 135);
|
|
815
|
+
i0.ɵɵelement(1, "i", 136);
|
|
816
|
+
i0.ɵɵelementStart(2, "div", 137)(3, "div", 138);
|
|
817
|
+
i0.ɵɵtext(4);
|
|
747
818
|
i0.ɵɵelementEnd();
|
|
748
|
-
i0.ɵɵelementStart(
|
|
749
|
-
i0.ɵɵtext(
|
|
819
|
+
i0.ɵɵelementStart(5, "div", 139);
|
|
820
|
+
i0.ɵɵtext(6, "Role Permission");
|
|
821
|
+
i0.ɵɵelementEnd()();
|
|
822
|
+
i0.ɵɵelementStart(7, "span", 140);
|
|
823
|
+
i0.ɵɵelement(8, "i", 43);
|
|
824
|
+
i0.ɵɵtext(9, " Can Execute ");
|
|
750
825
|
i0.ɵɵelementEnd()();
|
|
751
|
-
i0.ɵɵelementStart(8, "div", 139)(9, "span", 140);
|
|
752
|
-
i0.ɵɵelement(10, "i", 42);
|
|
753
|
-
i0.ɵɵtext(11, " Can Execute ");
|
|
754
|
-
i0.ɵɵelementEnd()()()();
|
|
755
826
|
} if (rf & 2) {
|
|
756
|
-
const
|
|
757
|
-
i0.ɵɵadvance(
|
|
758
|
-
i0.ɵɵ
|
|
827
|
+
const permission_r31 = ctx.$implicit;
|
|
828
|
+
i0.ɵɵadvance(4);
|
|
829
|
+
i0.ɵɵtextInterpolate(permission_r31.Role);
|
|
759
830
|
} }
|
|
760
|
-
function
|
|
761
|
-
i0.ɵɵelementStart(0, "div",
|
|
762
|
-
i0.ɵɵrepeaterCreate(1,
|
|
831
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_59_Conditional_4_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
832
|
+
i0.ɵɵelementStart(0, "div", 134);
|
|
833
|
+
i0.ɵɵrepeaterCreate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_59_Conditional_4_Conditional_1_Conditional_1_For_2_Template, 10, 1, "div", 135, _forTrack2);
|
|
763
834
|
i0.ɵɵelementEnd();
|
|
764
835
|
} if (rf & 2) {
|
|
765
836
|
const ctx_r2 = i0.ɵɵnextContext(5);
|
|
766
837
|
i0.ɵɵadvance();
|
|
767
838
|
i0.ɵɵrepeater(ctx_r2.queryPermissions);
|
|
768
839
|
} }
|
|
769
|
-
function
|
|
770
|
-
i0.ɵɵconditionalCreate(0,
|
|
840
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_59_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
841
|
+
i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_1_Conditional_59_Conditional_4_Conditional_1_Conditional_0_Template, 1, 4, "mj-explorer-entity-data-grid", 133)(1, MJQueryFormComponentExtended_Conditional_1_Conditional_59_Conditional_4_Conditional_1_Conditional_1_Template, 3, 0, "div", 134);
|
|
771
842
|
} if (rf & 2) {
|
|
772
843
|
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
773
844
|
i0.ɵɵconditional(ctx_r2.EditMode ? 0 : 1);
|
|
774
845
|
} }
|
|
775
|
-
function
|
|
776
|
-
i0.ɵɵconditionalCreate(0,
|
|
846
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_59_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
847
|
+
i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_1_Conditional_59_Conditional_4_Conditional_0_Template, 6, 0, "div", 79)(1, MJQueryFormComponentExtended_Conditional_1_Conditional_59_Conditional_4_Conditional_1_Template, 2, 1);
|
|
777
848
|
} if (rf & 2) {
|
|
778
849
|
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
779
850
|
i0.ɵɵconditional(ctx_r2.queryPermissions.length === 0 && !ctx_r2.EditMode ? 0 : 1);
|
|
780
851
|
} }
|
|
781
|
-
function
|
|
782
|
-
const
|
|
783
|
-
i0.ɵɵelementStart(0, "kendo-expansionpanel",
|
|
784
|
-
i0.ɵɵtwoWayListener("expandedChange", function
|
|
785
|
-
i0.ɵɵtemplate(1,
|
|
786
|
-
i0.ɵɵelementStart(2, "div",
|
|
787
|
-
i0.ɵɵconditionalCreate(3,
|
|
852
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_59_Template(rf, ctx) { if (rf & 1) {
|
|
853
|
+
const _r30 = i0.ɵɵgetCurrentView();
|
|
854
|
+
i0.ɵɵelementStart(0, "kendo-expansionpanel", 24);
|
|
855
|
+
i0.ɵɵtwoWayListener("expandedChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_59_Template_kendo_expansionpanel_expandedChange_0_listener($event) { i0.ɵɵrestoreView(_r30); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.permissionsPanelExpanded, $event) || (ctx_r2.permissionsPanelExpanded = $event); return i0.ɵɵresetView($event); });
|
|
856
|
+
i0.ɵɵtemplate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_59_ng_template_1_Template, 3, 0, "ng-template", 25);
|
|
857
|
+
i0.ɵɵelementStart(2, "div", 30);
|
|
858
|
+
i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_59_Conditional_3_Template, 2, 0, "div", 75)(4, MJQueryFormComponentExtended_Conditional_1_Conditional_59_Conditional_4_Template, 2, 1);
|
|
788
859
|
i0.ɵɵelementEnd()();
|
|
789
860
|
} if (rf & 2) {
|
|
790
861
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
@@ -796,85 +867,89 @@ function MJQueryFormComponentExtended_Conditional_1_Template(rf, ctx) { if (rf &
|
|
|
796
867
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
797
868
|
i0.ɵɵelementStart(0, "form", 3, 0);
|
|
798
869
|
i0.ɵɵelement(2, "mj-form-toolbar", 4);
|
|
799
|
-
i0.ɵɵelementStart(3, "div", 5)(4, "div", 6)(5, "div", 7)(6, "div", 8)
|
|
800
|
-
i0.ɵɵelement(
|
|
801
|
-
i0.ɵɵconditionalCreate(
|
|
802
|
-
i0.ɵɵelementEnd()
|
|
803
|
-
i0.ɵɵelementStart(
|
|
804
|
-
i0.ɵɵconditionalCreate(
|
|
870
|
+
i0.ɵɵelementStart(3, "div", 5)(4, "div", 6)(5, "div", 7)(6, "div", 8);
|
|
871
|
+
i0.ɵɵelement(7, "i", 9);
|
|
872
|
+
i0.ɵɵconditionalCreate(8, MJQueryFormComponentExtended_Conditional_1_Conditional_8_Template, 1, 1, "kendo-textbox", 10)(9, MJQueryFormComponentExtended_Conditional_1_Conditional_9_Template, 2, 1, "h4", 11);
|
|
873
|
+
i0.ɵɵelementEnd();
|
|
874
|
+
i0.ɵɵelementStart(10, "div", 12);
|
|
875
|
+
i0.ɵɵconditionalCreate(11, MJQueryFormComponentExtended_Conditional_1_Conditional_11_Template, 3, 3, "button", 13);
|
|
805
876
|
i0.ɵɵelementEnd()();
|
|
806
|
-
i0.ɵɵelementStart(
|
|
807
|
-
i0.ɵɵtext(
|
|
877
|
+
i0.ɵɵelementStart(12, "div", 14)(13, "div", 15)(14, "label", 16);
|
|
878
|
+
i0.ɵɵtext(15, "Category");
|
|
808
879
|
i0.ɵɵelementEnd();
|
|
809
|
-
i0.ɵɵconditionalCreate(
|
|
880
|
+
i0.ɵɵconditionalCreate(16, MJQueryFormComponentExtended_Conditional_1_Conditional_16_Template, 1, 3, "kendo-dropdownlist", 17)(17, MJQueryFormComponentExtended_Conditional_1_Conditional_17_Template, 2, 1, "span", 18);
|
|
810
881
|
i0.ɵɵelementEnd();
|
|
811
|
-
i0.ɵɵelementStart(
|
|
812
|
-
i0.ɵɵtext(
|
|
882
|
+
i0.ɵɵelementStart(18, "div", 15)(19, "label", 16);
|
|
883
|
+
i0.ɵɵtext(20, "Status");
|
|
813
884
|
i0.ɵɵelementEnd();
|
|
814
|
-
i0.ɵɵconditionalCreate(
|
|
885
|
+
i0.ɵɵconditionalCreate(21, MJQueryFormComponentExtended_Conditional_1_Conditional_21_Template, 1, 3, "kendo-dropdownlist", 19)(22, MJQueryFormComponentExtended_Conditional_1_Conditional_22_Template, 3, 5, "span", 20);
|
|
815
886
|
i0.ɵɵelementEnd()();
|
|
816
|
-
i0.ɵɵconditionalCreate(
|
|
887
|
+
i0.ɵɵconditionalCreate(23, MJQueryFormComponentExtended_Conditional_1_Conditional_23_Template, 3, 1, "div", 21);
|
|
817
888
|
i0.ɵɵelementEnd()();
|
|
818
|
-
i0.ɵɵ
|
|
889
|
+
i0.ɵɵconditionalCreate(24, MJQueryFormComponentExtended_Conditional_1_Conditional_24_Template, 7, 8, "div", 22);
|
|
890
|
+
i0.ɵɵelementStart(25, "div", 23)(26, "kendo-expansionpanel", 24);
|
|
819
891
|
i0.ɵɵtwoWayListener("expandedChange", function MJQueryFormComponentExtended_Conditional_1_Template_kendo_expansionpanel_expandedChange_26_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.sqlPanelExpanded, $event) || (ctx_r2.sqlPanelExpanded = $event); return i0.ɵɵresetView($event); });
|
|
820
|
-
i0.ɵɵtemplate(27, MJQueryFormComponentExtended_Conditional_1_ng_template_27_Template, 10, 2, "ng-template",
|
|
821
|
-
i0.ɵɵelementStart(28, "div",
|
|
892
|
+
i0.ɵɵtemplate(27, MJQueryFormComponentExtended_Conditional_1_ng_template_27_Template, 10, 2, "ng-template", 25);
|
|
893
|
+
i0.ɵɵelementStart(28, "div", 26)(29, "mj-code-editor", 27, 1);
|
|
822
894
|
i0.ɵɵlistener("change", function MJQueryFormComponentExtended_Conditional_1_Template_mj_code_editor_change_29_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onSQLChange($event)); });
|
|
823
895
|
i0.ɵɵelementEnd();
|
|
824
|
-
i0.ɵɵconditionalCreate(31, MJQueryFormComponentExtended_Conditional_1_Conditional_31_Template, 7, 0, "div",
|
|
896
|
+
i0.ɵɵconditionalCreate(31, MJQueryFormComponentExtended_Conditional_1_Conditional_31_Template, 7, 0, "div", 28);
|
|
825
897
|
i0.ɵɵelementEnd()();
|
|
826
|
-
i0.ɵɵconditionalCreate(32, MJQueryFormComponentExtended_Conditional_1_Conditional_32_Template, 5, 2, "kendo-expansionpanel",
|
|
827
|
-
i0.ɵɵconditionalCreate(33, MJQueryFormComponentExtended_Conditional_1_Conditional_33_Template, 5, 2, "kendo-expansionpanel",
|
|
828
|
-
i0.ɵɵconditionalCreate(34, MJQueryFormComponentExtended_Conditional_1_Conditional_34_Template, 5, 2, "kendo-expansionpanel",
|
|
829
|
-
i0.ɵɵ
|
|
830
|
-
i0.ɵɵ
|
|
831
|
-
i0.ɵɵ
|
|
832
|
-
i0.ɵɵ
|
|
833
|
-
i0.ɵɵ
|
|
834
|
-
i0.ɵɵ
|
|
835
|
-
i0.ɵɵ
|
|
836
|
-
i0.ɵɵ
|
|
837
|
-
i0.ɵɵ
|
|
838
|
-
i0.ɵɵ
|
|
839
|
-
i0.ɵɵ
|
|
840
|
-
i0.ɵɵ
|
|
841
|
-
i0.ɵɵ
|
|
842
|
-
i0.ɵɵ
|
|
843
|
-
i0.ɵɵ
|
|
898
|
+
i0.ɵɵconditionalCreate(32, MJQueryFormComponentExtended_Conditional_1_Conditional_32_Template, 5, 2, "kendo-expansionpanel", 29);
|
|
899
|
+
i0.ɵɵconditionalCreate(33, MJQueryFormComponentExtended_Conditional_1_Conditional_33_Template, 5, 2, "kendo-expansionpanel", 29);
|
|
900
|
+
i0.ɵɵconditionalCreate(34, MJQueryFormComponentExtended_Conditional_1_Conditional_34_Template, 5, 2, "kendo-expansionpanel", 29);
|
|
901
|
+
i0.ɵɵconditionalCreate(35, MJQueryFormComponentExtended_Conditional_1_Conditional_35_Template, 5, 2, "kendo-expansionpanel", 29);
|
|
902
|
+
i0.ɵɵelementStart(36, "kendo-expansionpanel", 24);
|
|
903
|
+
i0.ɵɵtwoWayListener("expandedChange", function MJQueryFormComponentExtended_Conditional_1_Template_kendo_expansionpanel_expandedChange_36_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.detailsPanelExpanded, $event) || (ctx_r2.detailsPanelExpanded = $event); return i0.ɵɵresetView($event); });
|
|
904
|
+
i0.ɵɵtemplate(37, MJQueryFormComponentExtended_Conditional_1_ng_template_37_Template, 3, 0, "ng-template", 25);
|
|
905
|
+
i0.ɵɵelementStart(38, "div", 30)(39, "div", 31)(40, "div", 32)(41, "label", 33);
|
|
906
|
+
i0.ɵɵelement(42, "i", 34);
|
|
907
|
+
i0.ɵɵtext(43, " Template Usage ");
|
|
908
|
+
i0.ɵɵelementEnd();
|
|
909
|
+
i0.ɵɵconditionalCreate(44, MJQueryFormComponentExtended_Conditional_1_Conditional_44_Template, 1, 1, "kendo-switch", 35)(45, MJQueryFormComponentExtended_Conditional_1_Conditional_45_Template, 3, 1, "div", 36);
|
|
910
|
+
i0.ɵɵelementEnd();
|
|
911
|
+
i0.ɵɵelementStart(46, "div", 32)(47, "label", 33);
|
|
912
|
+
i0.ɵɵelement(48, "i", 37);
|
|
913
|
+
i0.ɵɵtext(49, " Created ");
|
|
914
|
+
i0.ɵɵelementEnd();
|
|
915
|
+
i0.ɵɵelementStart(50, "div", 36);
|
|
916
|
+
i0.ɵɵtext(51);
|
|
844
917
|
i0.ɵɵelementEnd()();
|
|
845
|
-
i0.ɵɵelementStart(
|
|
846
|
-
i0.ɵɵelement(
|
|
847
|
-
i0.ɵɵtext(
|
|
918
|
+
i0.ɵɵelementStart(52, "div", 32)(53, "label", 33);
|
|
919
|
+
i0.ɵɵelement(54, "i", 38);
|
|
920
|
+
i0.ɵɵtext(55, " Last Updated ");
|
|
848
921
|
i0.ɵɵelementEnd();
|
|
849
|
-
i0.ɵɵelementStart(
|
|
850
|
-
i0.ɵɵtext(
|
|
922
|
+
i0.ɵɵelementStart(56, "div", 36);
|
|
923
|
+
i0.ɵɵtext(57);
|
|
851
924
|
i0.ɵɵelementEnd()();
|
|
852
|
-
i0.ɵɵconditionalCreate(
|
|
925
|
+
i0.ɵɵconditionalCreate(58, MJQueryFormComponentExtended_Conditional_1_Conditional_58_Template, 6, 1, "div", 32);
|
|
853
926
|
i0.ɵɵelementEnd()()();
|
|
854
|
-
i0.ɵɵconditionalCreate(
|
|
927
|
+
i0.ɵɵconditionalCreate(59, MJQueryFormComponentExtended_Conditional_1_Conditional_59_Template, 5, 2, "kendo-expansionpanel", 29);
|
|
855
928
|
i0.ɵɵelementEnd()();
|
|
856
|
-
i0.ɵɵelementStart(
|
|
857
|
-
i0.ɵɵtwoWayListener("isVisibleChange", function
|
|
858
|
-
i0.ɵɵlistener("onClose", function
|
|
929
|
+
i0.ɵɵelementStart(60, "mj-query-run-dialog", 39);
|
|
930
|
+
i0.ɵɵtwoWayListener("isVisibleChange", function MJQueryFormComponentExtended_Conditional_1_Template_mj_query_run_dialog_isVisibleChange_60_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.showRunDialog, $event) || (ctx_r2.showRunDialog = $event); return i0.ɵɵresetView($event); });
|
|
931
|
+
i0.ɵɵlistener("onClose", function MJQueryFormComponentExtended_Conditional_1_Template_mj_query_run_dialog_onClose_60_listener() { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onRunDialogClose()); });
|
|
859
932
|
i0.ɵɵelementEnd();
|
|
860
|
-
i0.ɵɵelementStart(
|
|
861
|
-
i0.ɵɵtwoWayListener("isVisibleChange", function
|
|
862
|
-
i0.ɵɵlistener("onCategoryCreated", function
|
|
933
|
+
i0.ɵɵelementStart(61, "mj-query-category-dialog", 40);
|
|
934
|
+
i0.ɵɵtwoWayListener("isVisibleChange", function MJQueryFormComponentExtended_Conditional_1_Template_mj_query_category_dialog_isVisibleChange_61_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.showCategoryDialog, $event) || (ctx_r2.showCategoryDialog = $event); return i0.ɵɵresetView($event); });
|
|
935
|
+
i0.ɵɵlistener("onCategoryCreated", function MJQueryFormComponentExtended_Conditional_1_Template_mj_query_category_dialog_onCategoryCreated_61_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onCategoryCreated($event)); });
|
|
863
936
|
i0.ɵɵelementEnd();
|
|
864
937
|
} if (rf & 2) {
|
|
865
938
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
866
939
|
i0.ɵɵadvance(2);
|
|
867
940
|
i0.ɵɵproperty("Form", ctx_r2);
|
|
868
|
-
i0.ɵɵadvance(
|
|
869
|
-
i0.ɵɵconditional(ctx_r2.EditMode ?
|
|
941
|
+
i0.ɵɵadvance(6);
|
|
942
|
+
i0.ɵɵconditional(ctx_r2.EditMode ? 8 : 9);
|
|
870
943
|
i0.ɵɵadvance(3);
|
|
871
|
-
i0.ɵɵconditional(ctx_r2.record.ID ?
|
|
944
|
+
i0.ɵɵconditional(ctx_r2.record.ID ? 11 : -1);
|
|
872
945
|
i0.ɵɵadvance(5);
|
|
873
|
-
i0.ɵɵconditional(ctx_r2.EditMode ?
|
|
946
|
+
i0.ɵɵconditional(ctx_r2.EditMode ? 16 : 17);
|
|
874
947
|
i0.ɵɵadvance(5);
|
|
875
|
-
i0.ɵɵconditional(ctx_r2.EditMode ?
|
|
948
|
+
i0.ɵɵconditional(ctx_r2.EditMode ? 21 : 22);
|
|
876
949
|
i0.ɵɵadvance(2);
|
|
877
|
-
i0.ɵɵconditional(ctx_r2.EditMode || ctx_r2.record.Description ?
|
|
950
|
+
i0.ɵɵconditional(ctx_r2.EditMode || ctx_r2.record.Description ? 23 : -1);
|
|
951
|
+
i0.ɵɵadvance();
|
|
952
|
+
i0.ɵɵconditional(ctx_r2.record.Status && ctx_r2.record.Status !== "Approved" && !ctx_r2.EditMode ? 24 : -1);
|
|
878
953
|
i0.ɵɵadvance(2);
|
|
879
954
|
i0.ɵɵtwoWayProperty("expanded", ctx_r2.sqlPanelExpanded);
|
|
880
955
|
i0.ɵɵadvance(3);
|
|
@@ -882,23 +957,25 @@ function MJQueryFormComponentExtended_Conditional_1_Template(rf, ctx) { if (rf &
|
|
|
882
957
|
i0.ɵɵadvance(2);
|
|
883
958
|
i0.ɵɵconditional(ctx_r2.showFiltersHelp ? 31 : -1);
|
|
884
959
|
i0.ɵɵadvance();
|
|
885
|
-
i0.ɵɵconditional(ctx_r2.record.
|
|
960
|
+
i0.ɵɵconditional(ctx_r2.record.TechnicalDescription || ctx_r2.EditMode ? 32 : -1);
|
|
886
961
|
i0.ɵɵadvance();
|
|
887
962
|
i0.ɵɵconditional(ctx_r2.record.IsSaved ? 33 : -1);
|
|
888
963
|
i0.ɵɵadvance();
|
|
889
964
|
i0.ɵɵconditional(ctx_r2.record.IsSaved ? 34 : -1);
|
|
890
965
|
i0.ɵɵadvance();
|
|
966
|
+
i0.ɵɵconditional(ctx_r2.record.IsSaved ? 35 : -1);
|
|
967
|
+
i0.ɵɵadvance();
|
|
891
968
|
i0.ɵɵtwoWayProperty("expanded", ctx_r2.detailsPanelExpanded);
|
|
892
969
|
i0.ɵɵadvance(8);
|
|
893
|
-
i0.ɵɵconditional(ctx_r2.EditMode ?
|
|
970
|
+
i0.ɵɵconditional(ctx_r2.EditMode ? 44 : 45);
|
|
894
971
|
i0.ɵɵadvance(7);
|
|
895
972
|
i0.ɵɵtextInterpolate(ctx_r2.formatDate(ctx_r2.record.__mj_CreatedAt));
|
|
896
973
|
i0.ɵɵadvance(6);
|
|
897
974
|
i0.ɵɵtextInterpolate(ctx_r2.formatDate(ctx_r2.record.__mj_UpdatedAt));
|
|
898
975
|
i0.ɵɵadvance();
|
|
899
|
-
i0.ɵɵconditional(ctx_r2.record.QualityRank != null ?
|
|
976
|
+
i0.ɵɵconditional(ctx_r2.record.QualityRank != null ? 58 : -1);
|
|
900
977
|
i0.ɵɵadvance();
|
|
901
|
-
i0.ɵɵconditional(ctx_r2.record.IsSaved ?
|
|
978
|
+
i0.ɵɵconditional(ctx_r2.record.IsSaved ? 59 : -1);
|
|
902
979
|
i0.ɵɵadvance();
|
|
903
980
|
i0.ɵɵproperty("query", ctx_r2.record)("parameters", ctx_r2.queryParameters);
|
|
904
981
|
i0.ɵɵtwoWayProperty("isVisible", ctx_r2.showRunDialog);
|
|
@@ -925,6 +1002,7 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
|
|
|
925
1002
|
this.parametersPanelExpanded = false;
|
|
926
1003
|
this.fieldsPanelExpanded = false;
|
|
927
1004
|
this.entitiesPanelExpanded = false;
|
|
1005
|
+
this.technicalDescriptionPanelExpanded = false;
|
|
928
1006
|
this.detailsPanelExpanded = false;
|
|
929
1007
|
this.permissionsPanelExpanded = false;
|
|
930
1008
|
// Category data
|
|
@@ -933,7 +1011,7 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
|
|
|
933
1011
|
];
|
|
934
1012
|
this.categories = [];
|
|
935
1013
|
this.categoryTreeData = [];
|
|
936
|
-
// Status options
|
|
1014
|
+
// Status options — matches MJQueryEntity.Status type from database CHECK constraint
|
|
937
1015
|
this.statusOptions = [
|
|
938
1016
|
{ text: 'Pending', value: 'Pending' },
|
|
939
1017
|
{ text: 'Approved', value: 'Approved' },
|
|
@@ -945,9 +1023,13 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
|
|
|
945
1023
|
this.sqlFilters = RUN_QUERY_SQL_FILTERS;
|
|
946
1024
|
this.destroy$ = new Subject();
|
|
947
1025
|
this.isUpdatingEditorValue = false;
|
|
1026
|
+
this.isInitialLoad = true;
|
|
948
1027
|
}
|
|
949
1028
|
async ngOnInit() {
|
|
950
1029
|
await super.ngOnInit();
|
|
1030
|
+
// During init, suppress per-method detectChanges to avoid NG0100.
|
|
1031
|
+
// We do one unified detectChanges after everything completes.
|
|
1032
|
+
this.isInitialLoad = true;
|
|
951
1033
|
// Load categories first to ensure they're available for the dropdown
|
|
952
1034
|
await this.loadCategories();
|
|
953
1035
|
// Then load other data in parallel
|
|
@@ -957,7 +1039,7 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
|
|
|
957
1039
|
this.loadQueryEntities(),
|
|
958
1040
|
this.loadQueryPermissions()
|
|
959
1041
|
]);
|
|
960
|
-
|
|
1042
|
+
this.isInitialLoad = false;
|
|
961
1043
|
this.cdr.detectChanges();
|
|
962
1044
|
}
|
|
963
1045
|
ngOnDestroy() {
|
|
@@ -1027,6 +1109,8 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
|
|
|
1027
1109
|
}
|
|
1028
1110
|
finally {
|
|
1029
1111
|
this.isLoadingParameters = false;
|
|
1112
|
+
if (!this.isInitialLoad)
|
|
1113
|
+
this.cdr.detectChanges();
|
|
1030
1114
|
}
|
|
1031
1115
|
}
|
|
1032
1116
|
}
|
|
@@ -1050,6 +1134,8 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
|
|
|
1050
1134
|
}
|
|
1051
1135
|
finally {
|
|
1052
1136
|
this.isLoadingFields = false;
|
|
1137
|
+
if (!this.isInitialLoad)
|
|
1138
|
+
this.cdr.detectChanges();
|
|
1053
1139
|
}
|
|
1054
1140
|
}
|
|
1055
1141
|
}
|
|
@@ -1074,6 +1160,8 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
|
|
|
1074
1160
|
}
|
|
1075
1161
|
finally {
|
|
1076
1162
|
this.isLoadingEntities = false;
|
|
1163
|
+
if (!this.isInitialLoad)
|
|
1164
|
+
this.cdr.detectChanges();
|
|
1077
1165
|
}
|
|
1078
1166
|
}
|
|
1079
1167
|
}
|
|
@@ -1097,6 +1185,8 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
|
|
|
1097
1185
|
}
|
|
1098
1186
|
finally {
|
|
1099
1187
|
this.isLoadingPermissions = false;
|
|
1188
|
+
if (!this.isInitialLoad)
|
|
1189
|
+
this.cdr.detectChanges();
|
|
1100
1190
|
}
|
|
1101
1191
|
}
|
|
1102
1192
|
}
|
|
@@ -1120,8 +1210,9 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
|
|
|
1120
1210
|
];
|
|
1121
1211
|
// Build tree data after options are set
|
|
1122
1212
|
this.categoryTreeData = this.buildCategoryTree(this.categories);
|
|
1123
|
-
// Trigger change detection to update the view
|
|
1124
|
-
this.
|
|
1213
|
+
// Trigger change detection to update the view (skip during init)
|
|
1214
|
+
if (!this.isInitialLoad)
|
|
1215
|
+
this.cdr.detectChanges();
|
|
1125
1216
|
}
|
|
1126
1217
|
}
|
|
1127
1218
|
catch (error) {
|
|
@@ -1248,11 +1339,15 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
|
|
|
1248
1339
|
return;
|
|
1249
1340
|
}
|
|
1250
1341
|
}
|
|
1342
|
+
// Warn if query is not approved
|
|
1343
|
+
if (this.record.Status !== 'Approved') {
|
|
1344
|
+
console.warn(`Executing query '${this.record.Name}' with status '${this.record.Status}'. Query has not been approved.`);
|
|
1345
|
+
}
|
|
1251
1346
|
// Reload parameters in case they were updated
|
|
1252
1347
|
await this.loadQueryParameters();
|
|
1253
|
-
|
|
1254
|
-
// Show the run dialog
|
|
1348
|
+
// Show the run dialog — set before detectChanges to avoid NG0100
|
|
1255
1349
|
this.showRunDialog = true;
|
|
1350
|
+
this.cdr.detectChanges();
|
|
1256
1351
|
}
|
|
1257
1352
|
/**
|
|
1258
1353
|
* Handle run dialog close
|
|
@@ -1405,14 +1500,27 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
|
|
|
1405
1500
|
}
|
|
1406
1501
|
getStatusBadgeColor() {
|
|
1407
1502
|
switch (this.record?.Status) {
|
|
1408
|
-
case 'Approved':
|
|
1409
|
-
|
|
1410
|
-
case '
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1503
|
+
case 'Approved': return '#28a745';
|
|
1504
|
+
case 'Pending': return '#f59e0b';
|
|
1505
|
+
case 'Rejected': return '#dc3545';
|
|
1506
|
+
case 'Expired': return '#6c757d';
|
|
1507
|
+
default: return '#6c757d';
|
|
1508
|
+
}
|
|
1509
|
+
}
|
|
1510
|
+
getStatusBannerIcon() {
|
|
1511
|
+
switch (this.record?.Status) {
|
|
1512
|
+
case 'Pending': return 'fa-clock';
|
|
1513
|
+
case 'Rejected': return 'fa-times-circle';
|
|
1514
|
+
case 'Expired': return 'fa-archive';
|
|
1515
|
+
default: return 'fa-info-circle';
|
|
1516
|
+
}
|
|
1517
|
+
}
|
|
1518
|
+
getStatusBannerMessage() {
|
|
1519
|
+
switch (this.record?.Status) {
|
|
1520
|
+
case 'Pending': return 'It can be executed for testing but has not yet been approved.';
|
|
1521
|
+
case 'Rejected': return 'It was rejected and may need revision before approval.';
|
|
1522
|
+
case 'Expired': return 'It has expired and is no longer in active use.';
|
|
1523
|
+
default: return '';
|
|
1416
1524
|
}
|
|
1417
1525
|
}
|
|
1418
1526
|
/**
|
|
@@ -1530,14 +1638,14 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
|
|
|
1530
1638
|
} if (rf & 2) {
|
|
1531
1639
|
let _t;
|
|
1532
1640
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.sqlEditor = _t.first);
|
|
1533
|
-
} }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 2, vars: 1, consts: [["form", "ngForm"], ["sqlEditor", ""], [1, "record-form-container", 2, "height", "100%", "display", "flex", "flex-direction", "column"], [1, "record-form", 2, "display", "flex", "flex-direction", "column", "height", "100%", "overflow", "hidden"], [3, "Form"], [1, "query-header"
|
|
1641
|
+
} }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 2, vars: 1, consts: [["form", "ngForm"], ["sqlEditor", ""], [1, "record-form-container", 2, "height", "100%", "display", "flex", "flex-direction", "column"], [1, "record-form", 2, "display", "flex", "flex-direction", "column", "height", "100%", "overflow", "hidden"], [3, "Form"], [1, "query-header"], [1, "query-header-content"], [1, "query-header-top"], [1, "query-name-section"], [1, "fa-solid", "fa-database", "query-title-icon"], ["name", "queryName", "placeholder", "Enter query name...", 1, "query-name-input", 3, "ngModel"], [1, "query-name-display"], [1, "query-header-actions"], ["kendoButton", "", "title", "Run Query", 1, "run-query-btn", 3, "themeColor", "size", "disabled"], [1, "query-meta-row"], [1, "query-meta-item"], [1, "meta-label"], ["name", "categoryId", "textField", "text", "valueField", "value", "placeholder", "Select category...", 1, "meta-dropdown", 3, "ngModel", "data", "valuePrimitive"], [1, "meta-value"], ["name", "status", "textField", "text", "valueField", "value", 1, "meta-dropdown", "status-dropdown", 3, "ngModel", "data", "valuePrimitive"], [1, "status-pill", 3, "background"], [1, "query-description-row"], [1, "status-warning-banner", 3, "border-left-color"], [1, "query-content"], [1, "query-panel", 3, "expandedChange", "expanded"], ["kendoExpansionPanelTitleDirective", ""], [1, "sql-panel-content"], [1, "sql-editor", 3, "change", "language"], [1, "filters-help"], [1, "query-panel", 3, "expanded"], [1, "panel-body"], [1, "details-grid"], [1, "detail-item"], [1, "detail-label"], [1, "fa-solid", "fa-file-code"], ["name", "usesTemplate", 3, "ngModel"], [1, "detail-value"], [1, "fa-solid", "fa-calendar-plus"], [1, "fa-solid", "fa-calendar-check"], [3, "isVisibleChange", "onClose", "query", "parameters", "isVisible"], [3, "isVisibleChange", "onCategoryCreated", "isVisible"], ["name", "queryName", "placeholder", "Enter query name...", 1, "query-name-input", 3, "ngModelChange", "ngModel"], ["kendoButton", "", "title", "Run Query", 1, "run-query-btn", 3, "click", "themeColor", "size", "disabled"], [1, "fa-solid", "fa-play"], ["name", "categoryId", "textField", "text", "valueField", "value", "placeholder", "Select category...", 1, "meta-dropdown", 3, "ngModelChange", "ngModel", "data", "valuePrimitive"], ["name", "status", "textField", "text", "valueField", "value", 1, "meta-dropdown", "status-dropdown", 3, "ngModelChange", "ngModel", "data", "valuePrimitive"], [1, "status-pill"], [1, "fa-solid"], ["name", "description", "placeholder", "Enter query description...", 1, "query-description-input", 3, "ngModel", "rows"], [1, "query-description-text"], ["name", "description", "placeholder", "Enter query description...", 1, "query-description-input", 3, "ngModelChange", "ngModel", "rows"], [1, "status-warning-banner"], [1, "panel-title-row"], [1, "panel-title"], [1, "fa-solid", "fa-code", "panel-icon", "sql-icon"], [1, "panel-badge", "defined"], ["type", "button", "kendoButton", "", "fillMode", "flat", "size", "small", "title", "Show/hide SQL filters help", 1, "filters-help-btn", 3, "click"], [1, "fa-solid", "fa-question-circle"], [1, "fa-solid", 3, "ngClass"], [1, "fa-solid", "fa-check"], [1, "filters-help-title"], [1, "fa-solid", "fa-filter"], [1, "filters-grid"], [1, "filter-card"], [1, "filter-name"], [1, "filter-description"], [1, "filter-syntax"], [1, "filter-notes"], [1, "technical-description-view"], [1, "fa-solid", "fa-book", "panel-icon"], ["name", "technicalDescription", "placeholder", "Technical documentation of the query logic, performance considerations, and parameter usage. Supports markdown and mermaid diagrams.", 1, "technical-description-textarea", 3, "ngModelChange", "ngModel", "rows"], [1, "technical-description-preview"], [1, "preview-label"], [1, "fa-solid", "fa-eye"], [3, "data", "enableMermaid", "enableHighlight", "enableCollapsibleHeadings", "enableSmartypants"], [1, "panel-loading"], [1, "fa-solid", "fa-sliders", "panel-icon"], [1, "panel-badge", "count"], ["text", "Loading parameters..."], [1, "empty-state"], [1, "fa-solid", "fa-sliders", "empty-state-icon"], [1, "empty-state-title"], [1, "empty-state-text"], ["type", "button", 1, "add-item-btn"], ["type", "button", 1, "add-item-btn", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "panel-toolbar"], [1, "card-grid"], [1, "item-card", 3, "required"], [1, "item-card", 3, "click"], [1, "item-card-header"], [1, "item-name"], [1, "fa-solid", "fa-at", "item-name-icon", "param-icon"], [1, "item-badges"], [1, "item-badge", "required"], [1, "item-card-body"], [1, "item-description"], [1, "item-meta"], [1, "meta-tag"], [1, "item-actions"], [1, "meta-code"], [1, "item-actions", 3, "click"], ["type", "button", "title", "Edit parameter", 1, "item-action-btn", 3, "click"], [1, "fa-solid", "fa-pen"], ["type", "button", "title", "Delete parameter", 1, "item-action-btn", "delete", 3, "click"], [1, "fa-solid", "fa-trash"], [1, "fa-solid", "fa-table", "panel-icon"], ["text", "Loading fields..."], [1, "fa-solid", "fa-table", "empty-state-icon"], [1, "item-card"], [1, "fa-solid", "fa-columns", "item-name-icon", "field-icon"], [1, "item-badge", "type"], [1, "item-badge", "sequence"], [1, "fa-solid", "fa-code"], [1, "item-card-actions"], ["type", "button", "title", "Delete field", 1, "item-action-btn", "delete", 3, "click"], [1, "fa-solid", "fa-database", "panel-icon"], ["text", "Loading entities..."], [1, "fa-solid", "fa-database", "empty-state-icon"], [1, "fa-solid", "fa-table", "item-name-icon", "entity-icon"], [1, "entity-dropdown-wrapper"], ["textField", "text", "valueField", "id", "placeholder", "Select entity...", 1, "entity-dropdown", 3, "ngModelChange", "ngModel", "name", "data", "valuePrimitive"], [1, "fa-solid", "fa-database"], ["type", "button", "title", "Delete entity", 1, "item-action-btn", "delete", 3, "click"], [1, "fa-solid", "fa-info-circle", "panel-icon"], ["name", "usesTemplate", 3, "ngModelChange", "ngModel"], [1, "detail-tag", "positive"], [1, "detail-tag", "neutral"], [1, "fa-solid", "fa-times"], [1, "fa-solid", "fa-star"], [1, "fa-solid", "fa-shield-alt", "panel-icon"], ["text", "Loading permissions..."], [1, "fa-solid", "fa-shield-alt", "empty-state-icon"], [3, "Params", "NewRecordValues", "AllowLoad", "ShowToolbar"], [1, "permissions-list"], [1, "permission-card"], [1, "fa-solid", "fa-users", "permission-icon"], [1, "permission-info"], [1, "permission-role"], [1, "permission-type"], [1, "permission-badge"]], template: function MJQueryFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
|
|
1534
1642
|
i0.ɵɵelementStart(0, "div", 2);
|
|
1535
|
-
i0.ɵɵconditionalCreate(1, MJQueryFormComponentExtended_Conditional_1_Template,
|
|
1643
|
+
i0.ɵɵconditionalCreate(1, MJQueryFormComponentExtended_Conditional_1_Template, 62, 24);
|
|
1536
1644
|
i0.ɵɵelementEnd();
|
|
1537
1645
|
} if (rf & 2) {
|
|
1538
1646
|
i0.ɵɵadvance();
|
|
1539
1647
|
i0.ɵɵconditional(ctx.record ? 1 : -1);
|
|
1540
|
-
} }, dependencies: [i1.NgClass, i2.ɵNgNoValidate, i2.NgControlStatus, i2.NgControlStatusGroup, i2.NgModel, i2.NgForm, i3.ExpansionPanelComponent, i3.ExpansionPanelTitleDirective, i4.TextBoxComponent, i4.TextAreaComponent, i4.SwitchComponent, i5.DropDownListComponent, i6.ButtonComponent, i7.MjFormToolbarComponent, i7.ExplorerEntityDataGridComponent, i8.CodeEditorComponent, i9.QueryRunDialogComponent, i10.QueryCategoryDialogComponent], styles: [".k-pane[_ngcontent-%COMP%] {\n background-color: #F5F6FA;\n}\n\n.content-margin[_ngcontent-%COMP%] {\n margin: 10px;\n} \n\n\na[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] {\n display: block;\n flex-direction: column;\n background-color: #F5F6FA;\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group[_ngcontent-%COMP%] {\n margin-top: 0px;\n background-color: #F5F6FA;\n}\n\nbutton[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin-bottom: 10px;\n}\n\n.k-splitter[_ngcontent-%COMP%] {\n border-width: 0px;\n}\n\n.record-form-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:first-child {\n font-weight: bold;\n padding-right: 10px;\n} \n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > span[_ngcontent-%COMP%] {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n \n\n@media (min-width: 768px) {\n .record-form-row[_ngcontent-%COMP%] {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: #F5F6FA;\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] > .form-card[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] .related-entity-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n\n\n@media (min-width: 1400px) {\n .form-panels-container[_ngcontent-%COMP%] .related-entity-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card[_ngcontent-%COMP%] {\n background: white;\n border-radius: 8px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n overflow: hidden;\n}\n\n.collapsible-card[_ngcontent-%COMP%] {\n overflow: hidden;\n}\n\n.collapsible-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: linear-gradient(135deg, #f9fafb 0%, #ffffff 100%);\n border-bottom: 2px solid #e5e7eb;\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header[_ngcontent-%COMP%]:hover {\n background: linear-gradient(135deg, #f3f4f6 0%, #f9fafb 100%);\n border-bottom-color: #667eea;\n}\n\n.collapsible-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n color: #667eea;\n}\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #1f2937;\n}\n\n.collapsible-header[_ngcontent-%COMP%] .collapse-icon[_ngcontent-%COMP%] {\n color: #6b7280;\n transition: transform 0.3s ease;\n}\n\n.collapsible-body[_ngcontent-%COMP%] {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed[_ngcontent-%COMP%] {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body[_ngcontent-%COMP%] {\n padding: 24px;\n}\n\n\n\n.form-card.related-entity[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #f0f9ff 0%, #ffffff 100%);\n border-left: 3px solid #3b82f6;\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #e0f2fe 0%, #f0f9ff 100%);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%]:hover {\n background: linear-gradient(135deg, #bfdbfe 0%, #e0f2fe 100%);\n border-bottom-color: #3b82f6;\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #3b82f6;\n}\n\n\n\n.form-section-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: linear-gradient(135deg, #f9fafb 0%, #ffffff 100%);\n border-bottom: 2px solid #e5e7eb;\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid #d1d5db;\n background: white;\n color: #374151;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover {\n background: #667eea;\n color: white;\n border-color: #667eea;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(102, 126, 234, 0.2);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:active {\n transform: translateY(0);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid #d1d5db;\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: white;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: #667eea;\n box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]::placeholder {\n color: #9ca3af;\n font-style: italic;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #6b7280;\n margin-left: auto;\n font-weight: 500;\n}\n\n\n\n.form-card.search-hidden[_ngcontent-%COMP%] {\n display: none;\n}\n\n\n\n.section-count-badge[_ngcontent-%COMP%] {\n background: #667eea;\n color: white;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] .search-highlight[_ngcontent-%COMP%] {\n background-color: #fef08a;\n color: #854d0e;\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge[_ngcontent-%COMP%] {\n background: #10b981;\n color: white;\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge.zero-rows[_ngcontent-%COMP%] {\n background: #9ca3af;\n}", "\n\n[_nghost-%COMP%] {\n display: block;\n height: 100%;\n}\n\n\n\n.record-form[_ngcontent-%COMP%] {\n min-height: 0 !important;\n}\n\n.sql-editor-container[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n\n.filters-help[_ngcontent-%COMP%] .filter-card[_ngcontent-%COMP%] {\n transition: transform 0.2s ease;\n}\n\n.filters-help[_ngcontent-%COMP%] .filter-card[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 8px rgba(0,0,0,0.1);\n}\n\n.toolbar-actions[_ngcontent-%COMP%] {\n margin-left: auto;\n}\n\n.query-header[_ngcontent-%COMP%] {\n border-bottom: 2px solid #dee2e6;\n}\n\n.badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n\n\n .query-content kendo-expansionpanel {\n border: none !important;\n border-radius: 12px !important;\n margin-bottom: 16px !important;\n box-shadow: 0 2px 8px rgba(0,0,0,0.06) !important;\n background: white !important;\n overflow: hidden !important;\n}\n\n .query-content .k-expander-header {\n background: white !important;\n border: none !important;\n padding: 16px 20px !important;\n border-radius: 12px !important;\n color: #2c3e50 !important;\n font-weight: 600 !important;\n font-size: 16px !important;\n transition: all 0.2s ease !important;\n}\n\n .query-content .k-expander-header:hover {\n background: #f8f9fa !important;\n}\n\n\n\n .query-content kendo-expansionpanel[aria-expanded=\"true\"] .k-expander-header {\n background: #2196f3 !important;\n color: white !important;\n border-radius: 12px 12px 0 0 !important;\n}\n\n\n\n .query-content .k-expander-content {\n padding: 0 !important;\n border: none !important;\n background: white !important;\n border-radius: 0 0 12px 12px !important;\n}\n\n\n\n .query-content .k-expander-header .fa-solid {\n transition: transform 0.2s ease !important;\n}\n\n .query-content kendo-expansionpanel[aria-expanded=\"true\"] .k-expander-header .fa-chevron-down {\n transform: rotate(180deg) !important;\n}\n\n\n\n.parameters-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(350px, 1fr));\n gap: 16px;\n padding: 20px;\n}\n\n.param-card[_ngcontent-%COMP%] {\n background: white;\n border: 2px solid #e9ecef;\n border-radius: 8px;\n padding: 16px;\n transition: all 0.2s;\n cursor: pointer;\n position: relative;\n}\n\n.param-card[_ngcontent-%COMP%]:hover {\n border-color: #007bff;\n box-shadow: 0 2px 8px rgba(0,123,255,0.1);\n transform: translateY(-1px);\n}\n\n.param-card.required[_ngcontent-%COMP%] {\n border-color: #ffc107;\n}\n\n.param-card-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 12px;\n}\n\n.param-name[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 1.1em;\n color: #2c3e50;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.param-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n}\n\n.param-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 0.75em;\n font-weight: 600;\n color: white;\n}\n\n.param-badge.required[_ngcontent-%COMP%] {\n background: #ffc107;\n}\n\n.param-badge.array[_ngcontent-%COMP%] {\n background: #9c27b0;\n}\n\n.param-card-body[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 0.9em;\n}\n\n.param-actions[_ngcontent-%COMP%] {\n position: absolute;\n top: 12px;\n right: 12px;\n display: flex;\n gap: 4px;\n opacity: 0;\n transition: opacity 0.2s;\n}\n\n.param-card[_ngcontent-%COMP%]:hover .param-actions[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n.param-action-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n padding: 4px 8px;\n border-radius: 4px;\n cursor: pointer;\n color: #6c757d;\n transition: all 0.2s;\n}\n\n.param-action-btn[_ngcontent-%COMP%]:hover {\n background: #f8f9fa;\n color: #007bff;\n}\n\n.param-action-btn.delete[_ngcontent-%COMP%]:hover {\n background: #fff5f5;\n color: #dc3545;\n}\n\n\n\n.details-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 20px;\n padding: 20px;\n}\n\n.detail-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: 0.85em;\n font-weight: 600;\n color: #6c757d;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 1em;\n color: #2c3e50;\n}\n\n\n\n.category-selector[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.category-tree-dropdown[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.add-category-btn[_ngcontent-%COMP%] {\n background: #28a745;\n color: white;\n border: none;\n padding: 8px 12px;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.add-category-btn[_ngcontent-%COMP%]:hover {\n background: #218838;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(40,167,69,0.2);\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n text-align: center;\n color: #6c757d;\n}\n\n.empty-state-icon[_ngcontent-%COMP%] {\n font-size: 48px;\n margin-bottom: 16px;\n opacity: 0.3;\n}\n\n.empty-state-title[_ngcontent-%COMP%] {\n font-size: 1.2em;\n font-weight: 600;\n margin-bottom: 8px;\n color: #495057;\n}\n\n.empty-state-text[_ngcontent-%COMP%] {\n font-size: 0.9em;\n margin-bottom: 20px;\n}\n\n.add-param-btn[_ngcontent-%COMP%] {\n background: #007bff;\n color: white;\n border: none;\n padding: 10px 20px;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 500;\n}\n\n.add-param-btn[_ngcontent-%COMP%]:hover {\n background: #0056b3;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0,123,255,0.2);\n}"] }); }
|
|
1648
|
+
} }, dependencies: [i1.NgClass, i2.ɵNgNoValidate, i2.NgControlStatus, i2.NgControlStatusGroup, i2.NgModel, i2.NgForm, i3.ExpansionPanelComponent, i3.ExpansionPanelTitleDirective, i4.TextBoxComponent, i4.TextAreaComponent, i4.SwitchComponent, i5.DropDownListComponent, i6.ButtonComponent, i7.MjFormToolbarComponent, i7.ExplorerEntityDataGridComponent, i8.CodeEditorComponent, i9.LoadingComponent, i10.MarkdownComponent, i11.QueryRunDialogComponent, i12.QueryCategoryDialogComponent], styles: [".k-pane[_ngcontent-%COMP%] {\n background-color: #F5F6FA;\n}\n\n.content-margin[_ngcontent-%COMP%] {\n margin: 10px;\n} \n\n\na[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] {\n display: block;\n flex-direction: column;\n background-color: #F5F6FA;\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group[_ngcontent-%COMP%] {\n margin-top: 0px;\n background-color: #F5F6FA;\n}\n\nbutton[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin-bottom: 10px;\n}\n\n.k-splitter[_ngcontent-%COMP%] {\n border-width: 0px;\n}\n\n.record-form-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:first-child {\n font-weight: bold;\n padding-right: 10px;\n} \n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > span[_ngcontent-%COMP%] {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n \n\n@media (min-width: 768px) {\n .record-form-row[_ngcontent-%COMP%] {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: #F5F6FA;\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] > .form-card[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] .related-entity-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n\n\n@media (min-width: 1400px) {\n .form-panels-container[_ngcontent-%COMP%] .related-entity-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card[_ngcontent-%COMP%] {\n background: white;\n border-radius: 8px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n overflow: hidden;\n}\n\n.collapsible-card[_ngcontent-%COMP%] {\n overflow: hidden;\n}\n\n.collapsible-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: linear-gradient(135deg, #f9fafb 0%, #ffffff 100%);\n border-bottom: 2px solid #e5e7eb;\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header[_ngcontent-%COMP%]:hover {\n background: linear-gradient(135deg, #f3f4f6 0%, #f9fafb 100%);\n border-bottom-color: #667eea;\n}\n\n.collapsible-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n color: #667eea;\n}\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #1f2937;\n}\n\n.collapsible-header[_ngcontent-%COMP%] .collapse-icon[_ngcontent-%COMP%] {\n color: #6b7280;\n transition: transform 0.3s ease;\n}\n\n.collapsible-body[_ngcontent-%COMP%] {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed[_ngcontent-%COMP%] {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body[_ngcontent-%COMP%] {\n padding: 24px;\n}\n\n\n\n.form-card.related-entity[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #f0f9ff 0%, #ffffff 100%);\n border-left: 3px solid #3b82f6;\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #e0f2fe 0%, #f0f9ff 100%);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%]:hover {\n background: linear-gradient(135deg, #bfdbfe 0%, #e0f2fe 100%);\n border-bottom-color: #3b82f6;\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #3b82f6;\n}\n\n\n\n.form-section-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: linear-gradient(135deg, #f9fafb 0%, #ffffff 100%);\n border-bottom: 2px solid #e5e7eb;\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid #d1d5db;\n background: white;\n color: #374151;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover {\n background: #667eea;\n color: white;\n border-color: #667eea;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(102, 126, 234, 0.2);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:active {\n transform: translateY(0);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid #d1d5db;\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: white;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: #667eea;\n box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]::placeholder {\n color: #9ca3af;\n font-style: italic;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #6b7280;\n margin-left: auto;\n font-weight: 500;\n}\n\n\n\n.form-card.search-hidden[_ngcontent-%COMP%] {\n display: none;\n}\n\n\n\n.section-count-badge[_ngcontent-%COMP%] {\n background: #667eea;\n color: white;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] .search-highlight[_ngcontent-%COMP%] {\n background-color: #fef08a;\n color: #854d0e;\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge[_ngcontent-%COMP%] {\n background: #10b981;\n color: white;\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge.zero-rows[_ngcontent-%COMP%] {\n background: #9ca3af;\n}", "\n\n[_nghost-%COMP%] {\n display: block;\n height: 100%;\n}\n\n\n\n.record-form[_ngcontent-%COMP%] {\n min-height: 0 !important;\n}\n\n\n\n\n\n\n.query-header[_ngcontent-%COMP%] {\n flex-shrink: 0;\n background: linear-gradient(135deg, #5c6bc0 0%, #3949ab 100%);\n border-bottom: none;\n padding: 0;\n}\n\n.query-header-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 16px 20px;\n}\n\n.query-header-top[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 20px;\n}\n\n.query-name-section[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.query-title-icon[_ngcontent-%COMP%] {\n color: rgba(255, 255, 255, 0.85);\n font-size: 1.3em;\n flex-shrink: 0;\n}\n\n.query-name-input[_ngcontent-%COMP%] {\n font-size: 1.2em;\n font-weight: 600;\n min-width: 300px;\n flex: 1;\n}\n\n.query-name-display[_ngcontent-%COMP%] {\n margin: 0;\n color: #fff;\n font-weight: 600;\n font-size: 1.2em;\n flex: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.query-header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.run-query-btn[_ngcontent-%COMP%] {\n white-space: nowrap;\n}\n\n\n\n.query-meta-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.query-meta-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.meta-label[_ngcontent-%COMP%] {\n font-weight: 500;\n color: rgba(255, 255, 255, 0.75);\n font-size: 13px;\n min-width: 60px;\n}\n\n.meta-value[_ngcontent-%COMP%] {\n color: rgba(255, 255, 255, 0.95);\n font-size: 14px;\n}\n\n.meta-dropdown[_ngcontent-%COMP%] {\n min-width: 200px;\n}\n\n.status-pill[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 14px;\n color: #fff;\n font-size: 13px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.status-pill[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n\n\n.query-description-row[_ngcontent-%COMP%] {\n margin-top: 2px;\n}\n\n.query-description-input[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n.query-description-text[_ngcontent-%COMP%] {\n margin: 0;\n color: rgba(255, 255, 255, 0.8);\n font-size: 13px;\n line-height: 1.4;\n}\n\n\n\n\n\n\n.status-warning-banner[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 16px;\n margin: 0;\n background: #fff8e1;\n border-left: 4px solid #f59e0b;\n font-size: 13px;\n color: #5d4037;\n flex-shrink: 0;\n}\n\n.status-warning-banner[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n flex-shrink: 0;\n}\n\n.status-warning-banner[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] {\n font-weight: 600;\n}\n\n\n\n\n\n\n.query-content[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n padding: 16px;\n overflow-y: auto;\n background: #f5f5f5;\n}\n\n\n\n\n\n\n.query-panel[_ngcontent-%COMP%] {\n margin-bottom: 12px;\n}\n\n .query-content kendo-expansionpanel {\n border: none !important;\n border-radius: 8px !important;\n margin-bottom: 12px !important;\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08) !important;\n background: white !important;\n overflow: hidden !important;\n}\n\n .query-content .k-expander-header {\n background: white !important;\n border: none !important;\n padding: 14px 18px !important;\n border-radius: 8px !important;\n color: #333 !important;\n font-weight: 600 !important;\n font-size: 14px !important;\n transition: background 0.15s ease !important;\n}\n\n .query-content .k-expander-header:hover {\n background: #f8f9fa !important;\n}\n\n .query-content kendo-expansionpanel[aria-expanded=\"true\"] .k-expander-header {\n background: #5c6bc0 !important;\n color: white !important;\n border-radius: 8px 8px 0 0 !important;\n}\n\n .query-content .k-expander-content {\n padding: 0 !important;\n border: none !important;\n background: white !important;\n border-radius: 0 0 8px 8px !important;\n}\n\n\n\n\n\n\n.panel-title-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n}\n\n.panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n}\n\n.panel-icon[_ngcontent-%COMP%] {\n font-size: 14px;\n opacity: 0.7;\n}\n\n.sql-icon[_ngcontent-%COMP%] {\n color: #5c6bc0;\n}\n\n kendo-expansionpanel[aria-expanded=\"true\"] .panel-icon {\n color: rgba(255, 255, 255, 0.85) !important;\n opacity: 1;\n}\n\n.panel-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.panel-badge.defined[_ngcontent-%COMP%] {\n background: #28a745;\n color: white;\n}\n\n.panel-badge.count[_ngcontent-%COMP%] {\n background: #5c6bc0;\n color: white;\n}\n\n kendo-expansionpanel[aria-expanded=\"true\"] .panel-badge.count {\n background: rgba(255, 255, 255, 0.25) !important;\n}\n\n kendo-expansionpanel[aria-expanded=\"true\"] .panel-badge.defined {\n background: rgba(255, 255, 255, 0.25) !important;\n}\n\n.filters-help-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n margin-right: 8px;\n font-size: 12px;\n}\n\n\n\n\n\n\n.panel-body[_ngcontent-%COMP%] {\n padding: 16px 0;\n}\n\n.panel-loading[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px;\n}\n\n.panel-toolbar[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n padding: 0 20px 12px;\n}\n\n\n\n\n\n\n.sql-panel-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.sql-editor[_ngcontent-%COMP%] {\n flex: 1;\n height: 400px;\n border: 1px solid #e0e0e0;\n border-radius: 4px;\n margin: 16px;\n}\n\n\n\n.filters-help[_ngcontent-%COMP%] {\n background: #fafafa;\n border: 1px solid #e0e0e0;\n border-radius: 6px;\n padding: 16px;\n margin: 0 16px 16px;\n}\n\n.filters-help-title[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n color: #333;\n font-weight: 600;\n font-size: 14px;\n}\n\n.filters-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 10px;\n}\n\n.filter-card[_ngcontent-%COMP%] {\n background: white;\n border: 1px solid #e0e0e0;\n border-radius: 6px;\n padding: 12px;\n transition: transform 0.15s ease, box-shadow 0.15s ease;\n}\n\n.filter-card[_ngcontent-%COMP%]:hover {\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n}\n\n.filter-name[_ngcontent-%COMP%] {\n font-family: 'Courier New', monospace;\n font-weight: bold;\n color: #5c6bc0;\n margin-bottom: 4px;\n}\n\n.filter-description[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #555;\n margin-bottom: 6px;\n}\n\n.filter-syntax[_ngcontent-%COMP%] {\n font-family: 'Courier New', monospace;\n font-size: 11px;\n background: #f5f5f5;\n padding: 6px;\n border-radius: 4px;\n margin-bottom: 4px;\n}\n\n.filter-notes[_ngcontent-%COMP%] {\n font-size: 11px;\n color: #888;\n font-style: italic;\n}\n\n\n\n\n\n\n.card-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));\n gap: 12px;\n padding: 0 20px 20px;\n}\n\n.item-card[_ngcontent-%COMP%] {\n background: white;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n padding: 14px;\n transition: all 0.15s ease;\n cursor: pointer;\n position: relative;\n}\n\n.item-card[_ngcontent-%COMP%]:hover {\n border-color: #5c6bc0;\n box-shadow: 0 2px 8px rgba(92, 107, 192, 0.12);\n}\n\n.item-card.required[_ngcontent-%COMP%] {\n border-left: 3px solid #f59e0b;\n}\n\n.item-card-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 10px;\n}\n\n.item-name[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 14px;\n color: #333;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.item-name-icon[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n.item-name-icon.param-icon[_ngcontent-%COMP%] {\n color: #5c6bc0;\n}\n\n.item-name-icon.field-icon[_ngcontent-%COMP%] {\n color: #5c6bc0;\n}\n\n.item-name-icon.entity-icon[_ngcontent-%COMP%] {\n color: #28a745;\n}\n\n.item-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n}\n\n.item-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n color: white;\n}\n\n.item-badge.required[_ngcontent-%COMP%] {\n background: #f59e0b;\n}\n\n.item-badge.type[_ngcontent-%COMP%] {\n background: #e8eaf6;\n color: #3949ab;\n}\n\n.item-badge.sequence[_ngcontent-%COMP%] {\n background: #f3e5f5;\n color: #7b1fa2;\n}\n\n.item-card-body[_ngcontent-%COMP%] {\n color: #666;\n font-size: 13px;\n}\n\n.item-description[_ngcontent-%COMP%] {\n margin-bottom: 8px;\n}\n\n.item-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n font-size: 12px;\n}\n\n.meta-tag[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n.meta-code[_ngcontent-%COMP%] {\n background: #f5f5f5;\n padding: 1px 4px;\n border-radius: 3px;\n font-size: 11px;\n}\n\n\n\n.item-actions[_ngcontent-%COMP%] {\n position: absolute;\n top: 10px;\n right: 10px;\n display: flex;\n gap: 4px;\n opacity: 0;\n transition: opacity 0.15s ease;\n}\n\n.item-card[_ngcontent-%COMP%]:hover .item-actions[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n.item-card-actions[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n margin-top: 8px;\n}\n\n.item-action-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n padding: 4px 8px;\n border-radius: 4px;\n cursor: pointer;\n color: #888;\n transition: all 0.15s ease;\n}\n\n.item-action-btn[_ngcontent-%COMP%]:hover {\n background: #f0f0f0;\n color: #5c6bc0;\n}\n\n.item-action-btn.delete[_ngcontent-%COMP%]:hover {\n background: #fff5f5;\n color: #dc3545;\n}\n\n\n\n.entity-dropdown-wrapper[_ngcontent-%COMP%] {\n flex: 1;\n margin-left: 12px;\n}\n\n.entity-dropdown[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n\n\n\n\n\n.details-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 16px;\n padding: 16px 20px;\n}\n\n.detail-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: #888;\n display: flex;\n align-items: center;\n gap: 6px;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: #333;\n}\n\n.detail-tag[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 13px;\n}\n\n.detail-tag.positive[_ngcontent-%COMP%] {\n color: #28a745;\n}\n\n.detail-tag.neutral[_ngcontent-%COMP%] {\n color: #888;\n}\n\n\n\n\n\n\n.permissions-list[_ngcontent-%COMP%] {\n padding: 0 20px;\n}\n\n.permission-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n background: #fafafa;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n padding: 14px 16px;\n margin-bottom: 8px;\n}\n\n.permission-icon[_ngcontent-%COMP%] {\n font-size: 1.3em;\n color: #5c6bc0;\n}\n\n.permission-info[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.permission-role[_ngcontent-%COMP%] {\n font-weight: 600;\n color: #333;\n font-size: 14px;\n}\n\n.permission-type[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #888;\n}\n\n.permission-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n background: #5c6bc0;\n color: white;\n padding: 4px 10px;\n border-radius: 6px;\n font-size: 12px;\n font-weight: 500;\n}\n\n\n\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 20px;\n text-align: center;\n color: #888;\n}\n\n.empty-state-icon[_ngcontent-%COMP%] {\n font-size: 40px;\n margin-bottom: 14px;\n opacity: 0.25;\n color: #333;\n}\n\n.empty-state-title[_ngcontent-%COMP%] {\n font-size: 15px;\n font-weight: 600;\n margin-bottom: 6px;\n color: #555;\n}\n\n.empty-state-text[_ngcontent-%COMP%] {\n font-size: 13px;\n margin-bottom: 16px;\n color: #888;\n}\n\n\n\n\n\n\n.add-item-btn[_ngcontent-%COMP%] {\n background: #5c6bc0;\n color: white;\n border: none;\n padding: 8px 16px;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n font-size: 13px;\n}\n\n.add-item-btn[_ngcontent-%COMP%]:hover {\n background: #3949ab;\n box-shadow: 0 2px 6px rgba(92, 107, 192, 0.3);\n}\n\n\n\n\n\n\n.badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n\n\n\n\n\n.technical-description-textarea[_ngcontent-%COMP%] {\n width: 100%;\n font-family: 'Consolas', 'Monaco', 'Courier New', monospace;\n font-size: 13px;\n}\n\n.technical-description-preview[_ngcontent-%COMP%] {\n margin-top: 16px;\n border-top: 1px solid #e0e0e0;\n padding-top: 12px;\n}\n\n.preview-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: #666;\n margin-bottom: 8px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.technical-description-view[_ngcontent-%COMP%] {\n max-height: 500px;\n overflow-y: auto;\n padding: 12px 16px;\n}"] }); }
|
|
1541
1649
|
};
|
|
1542
1650
|
MJQueryFormComponentExtended = __decorate([
|
|
1543
1651
|
RegisterClass(BaseFormComponent, 'MJ: Queries')
|
|
@@ -1545,7 +1653,7 @@ MJQueryFormComponentExtended = __decorate([
|
|
|
1545
1653
|
export { MJQueryFormComponentExtended };
|
|
1546
1654
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJQueryFormComponentExtended, [{
|
|
1547
1655
|
type: Component,
|
|
1548
|
-
args: [{ standalone: false, selector: 'mj-query-form', template: "<div class=\"record-form-container\" style=\"height: 100%; display: flex; flex-direction: column;\">\n @if (record) {\n <form class=\"record-form\" #form=\"ngForm\" style=\"display: flex; flex-direction: column; height: 100%; overflow: hidden;\">\n <mj-form-toolbar [Form]=\"this\"></mj-form-toolbar>\n\n <!-- Header Section -->\n <div class=\"query-header\" style=\"flex-shrink: 0; background: #f8f9fa; border-bottom: 1px solid #dee2e6; padding: 20px;\">\n <div style=\"display: flex; flex-direction: column; gap: 16px;\">\n\n <!-- Top Row: Name and Run Button -->\n <div style=\"display: flex; justify-content: space-between; align-items: flex-start; gap: 20px;\">\n <!-- Left: Query Name -->\n <div style=\"flex: 1; min-width: 0;\">\n <div style=\"display: flex; align-items: center; gap: 12px;\">\n <i class=\"fa-solid fa-database\" style=\"color: #17a2b8; font-size: 1.4em;\"></i>\n @if (EditMode) {\n <kendo-textbox [(ngModel)]=\"record.Name\"\n name=\"queryName\"\n placeholder=\"Enter query name...\"\n style=\"font-size: 1.2em; font-weight: 600; min-width: 300px; flex: 1;\">\n </kendo-textbox>\n } @else {\n <h4 style=\"margin: 0; color: #495057; font-weight: 600; flex: 1;\">{{ record.Name || 'Untitled Query' }}</h4>\n }\n </div>\n </div>\n\n <!-- Right: Action Buttons -->\n <div class=\"action-buttons\" style=\"display: flex; gap: 8px; align-items: center;\">\n @if (record.ID) {\n <button kendoButton\n [themeColor]=\"'primary'\"\n [size]=\"'large'\"\n [disabled]=\"EditMode || record.Status !== 'Approved' || !record.SQL || record.SQL.trim().length === 0\"\n (click)=\"runQuery()\"\n title=\"Run Query\">\n <i class=\"fa-solid fa-play\"></i> Run\n </button>\n }\n </div>\n </div>\n\n <!-- Second Row: Category and Status -->\n <div style=\"display: grid; grid-template-columns: 1fr auto; gap: 24px; align-items: center;\">\n <!-- Category -->\n <div style=\"display: flex; align-items: center; gap: 12px;\">\n <label style=\"font-weight: 600; color: #495057; min-width: 80px;\">Category:</label>\n @if (EditMode) {\n <kendo-dropdownlist\n [(ngModel)]=\"record.CategoryID\"\n name=\"categoryId\"\n [data]=\"categoryOptions\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n placeholder=\"Select category...\"\n style=\"flex: 1;\">\n </kendo-dropdownlist>\n } @else {\n <span style=\"color: #495057;\">{{ getCategoryPath() || 'Uncategorized' }}</span>\n }\n </div>\n\n <!-- Status -->\n <div style=\"display: flex; align-items: center; gap: 12px;\">\n <label style=\"font-weight: 600; color: #495057; min-width: 50px;\">Status:</label>\n @if (EditMode) {\n <kendo-dropdownlist\n [(ngModel)]=\"record.Status\"\n name=\"status\"\n [data]=\"statusOptions\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n style=\"flex: 1;\">\n </kendo-dropdownlist>\n } @else {\n <span class=\"badge\"\n [style.background]=\"getStatusBadgeColor()\"\n style=\"color: white; padding: 6px 12px; border-radius: 12px; font-size: 0.85em;\">\n @if (record.Status === 'Approved') {\n <i class=\"fa-solid fa-check-circle\"></i>\n }\n @if (record.Status === 'Pending') {\n <i class=\"fa-solid fa-clock\"></i>\n }\n @if (record.Status === 'Rejected') {\n <i class=\"fa-solid fa-times-circle\"></i>\n }\n {{ record.Status || 'Unknown' }}\n </span>\n }\n </div>\n </div>\n\n <!-- Third Row: Description -->\n @if (EditMode || record.Description) {\n <div>\n @if (EditMode) {\n <kendo-textarea [(ngModel)]=\"record.Description\"\n name=\"description\"\n [rows]=\"2\"\n placeholder=\"Enter query description...\"\n style=\"width: 100%;\">\n </kendo-textarea>\n } @else {\n <p style=\"margin: 0; color: #6c757d; font-size: 0.9em; line-height: 1.4;\">{{ record.Description }}</p>\n }\n </div>\n }\n </div>\n </div>\n\n <!-- Main Content Area with Expansion Panels -->\n <div class=\"query-content\" style=\"flex: 1; min-height: 0; padding: 20px; overflow-y: auto; background: #f5f7fa;\">\n\n <!-- SQL Query Panel -->\n <kendo-expansionpanel\n [(expanded)]=\"sqlPanelExpanded\"\n style=\"margin-bottom: 16px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; justify-content: space-between; width: 100%;\">\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-code\" style=\"color: #17a2b8;\"></i>\n SQL\n @if (record.SQL) {\n <span class=\"badge\" style=\"background: #28a745; color: white; padding: 2px 6px; border-radius: 10px; font-size: 0.7em;\">\n <i class=\"fa-solid fa-check\"></i> Defined\n </span>\n }\n </span>\n <button type=\"button\"\n kendoButton\n fillMode=\"flat\"\n size=\"small\"\n (click)=\"toggleFiltersHelp(); $event.stopPropagation()\"\n title=\"Show/hide SQL filters help\"\n style=\"margin-right: 8px;\">\n <i class=\"fa-solid fa-question-circle\"></i>\n <span style=\"margin-left: 4px;\">Filters Help</span>\n <i class=\"fa-solid\" [ngClass]=\"showFiltersHelp ? 'fa-chevron-up' : 'fa-chevron-down'\" style=\"margin-left: 4px;\"></i>\n </button>\n </span>\n </ng-template>\n\n <div style=\"display: flex; flex-direction: column;\">\n <!-- Code Editor -->\n <mj-code-editor #sqlEditor\n (change)=\"onSQLChange($event)\"\n [language]=\"'sql'\"\n style=\"flex: 1; height: 400px; border: 1px solid #ced4da; border-radius: 4px;\">\n </mj-code-editor>\n\n <!-- SQL Filters Help (Below Editor) -->\n @if (showFiltersHelp) {\n <div class=\"filters-help\" style=\"background: #f8f9fa; border: 1px solid #dee2e6; border-radius: 6px; padding: 16px; margin-top: 16px;\">\n <h6 style=\"margin: 0 0 12px 0; color: #495057; font-weight: 600;\">\n <i class=\"fa-solid fa-filter\"></i> Available SQL Filters for Parameterized Queries\n </h6>\n\n <div style=\"display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 12px;\">\n @for (filter of sqlFilters; track filter.name) {\n <div class=\"filter-card\" style=\"background: white; border: 1px solid #e9ecef; border-radius: 4px; padding: 12px;\">\n <div style=\"font-family: 'Courier New', monospace; font-weight: bold; color: #007bff; margin-bottom: 4px;\">\n {{ filter.name }}\n </div>\n <div style=\"font-size: 0.85em; color: #495057; margin-bottom: 8px;\">\n {{ filter.description }}\n </div>\n <div style=\"font-family: 'Courier New', monospace; font-size: 0.8em; background: #f1f3f4; padding: 6px; border-radius: 3px; margin-bottom: 4px;\">\n {{ filter.exampleSyntax }}\n </div>\n @if (filter.notes) {\n <div style=\"font-size: 0.75em; color: #6c757d; font-style: italic;\">\n {{ filter.notes }}\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n </div>\n </kendo-expansionpanel>\n\n <!-- Parameters Panel -->\n @if (record.IsSaved) {\n <kendo-expansionpanel\n [(expanded)]=\"parametersPanelExpanded\"\n style=\"margin-bottom: 16px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-sliders\" style=\"color: #6c757d;\"></i>\n Query Parameters\n @if (queryParameters.length > 0) {\n <span class=\"badge\" style=\"background: #17a2b8; color: white; padding: 2px 6px; border-radius: 10px; font-size: 0.7em;\">\n {{ queryParameters.length }}\n </span>\n }\n </span>\n </ng-template>\n\n <div style=\"padding: 16px 0;\">\n @if (isLoadingParameters) {\n <div style=\"display: flex; align-items: center; justify-content: center; padding: 40px;\">\n <i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 24px; color: #6c757d; margin-right: 12px;\"></i>\n <span style=\"color: #6c757d;\">Loading parameters...</span>\n </div>\n } @else {\n @if (queryParameters.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-sliders empty-state-icon\"></i>\n <div class=\"empty-state-title\">No Parameters Defined</div>\n <div class=\"empty-state-text\">\n Add parameters to make your query dynamic and reusable.\n </div>\n @if (EditMode) {\n <button type=\"button\" class=\"add-param-btn\" (click)=\"addParameter()\">\n <i class=\"fa-solid fa-plus\"></i> Add First Parameter\n </button>\n }\n </div>\n } @else {\n <!-- Parameters Header with Add Button -->\n @if (EditMode) {\n <div style=\"display: flex; justify-content: flex-end; margin-bottom: 16px; padding: 0 20px;\">\n <button type=\"button\" class=\"add-param-btn\" (click)=\"addParameter()\">\n <i class=\"fa-solid fa-plus\"></i> Add Parameter\n </button>\n </div>\n }\n\n <!-- Parameters Grid -->\n <div class=\"parameters-grid\">\n @for (param of queryParameters; track param.ID || $index) {\n <div class=\"param-card\" [class.required]=\"param.IsRequired\" (click)=\"editParameter(param)\">\n <div class=\"param-card-header\">\n <div class=\"param-name\">\n <i class=\"fa-solid fa-at\" style=\"color: #007bff;\"></i>\n {{ param.Name }}\n </div>\n <div class=\"param-badges\">\n @if (param.IsRequired) {\n <span class=\"param-badge required\">Required</span>\n }\n </div>\n </div>\n\n <div class=\"param-card-body\">\n @if (param.Description) {\n <div style=\"margin-bottom: 8px;\">{{ param.Description }}</div>\n }\n\n <div style=\"display: flex; gap: 16px; font-size: 0.85em;\">\n <div>\n <strong>Type:</strong> {{ param.Type || 'Text' }}\n </div>\n @if (param.DefaultValue) {\n <div>\n <strong>Default:</strong>\n <code style=\"background: #f1f3f4; padding: 2px 4px; border-radius: 3px;\">\n {{ param.DefaultValue }}\n </code>\n </div>\n }\n </div>\n </div>\n\n @if (EditMode) {\n <div class=\"param-actions\" (click)=\"$event.stopPropagation()\">\n <button type=\"button\" class=\"param-action-btn\" (click)=\"editParameter(param)\" title=\"Edit parameter\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n <button type=\"button\" class=\"param-action-btn delete\" (click)=\"deleteParameter(param)\" title=\"Delete parameter\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n </div>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n </kendo-expansionpanel>\n }\n\n <!-- Query Fields Panel -->\n @if (record.IsSaved) {\n <kendo-expansionpanel\n [(expanded)]=\"fieldsPanelExpanded\"\n style=\"margin-bottom: 16px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-table\" style=\"color: #6c757d;\"></i>\n Query Fields\n @if (queryFields.length > 0) {\n <span class=\"badge\" style=\"background: #17a2b8; color: white; padding: 2px 6px; border-radius: 10px; font-size: 0.7em;\">\n {{ queryFields.length }}\n </span>\n }\n </span>\n </ng-template>\n\n <div style=\"padding: 16px 0;\">\n @if (isLoadingFields) {\n <div style=\"display: flex; justify-content: center; padding: 40px;\">\n <i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 2em; color: #007bff;\"></i>\n </div>\n } @else {\n @if (queryFields.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-table\" style=\"font-size: 3em; color: #dee2e6; margin-bottom: 12px;\"></i>\n <h5 style=\"color: #6c757d; margin-bottom: 8px;\">No Fields Defined</h5>\n <div style=\"color: #adb5bd; margin-bottom: 16px;\">\n Define output fields for your query results.\n </div>\n @if (EditMode) {\n <button type=\"button\" class=\"add-param-btn\" (click)=\"addField()\">\n <i class=\"fa-solid fa-plus\"></i> Add First Field\n </button>\n }\n </div>\n } @else {\n <!-- Fields Header with Add Button -->\n @if (EditMode) {\n <div style=\"display: flex; justify-content: flex-end; margin-bottom: 16px; padding: 0 20px;\">\n <button type=\"button\" class=\"add-param-btn\" (click)=\"addField()\">\n <i class=\"fa-solid fa-plus\"></i> Add Field\n </button>\n </div>\n }\n\n <!-- Fields Grid -->\n <div class=\"parameters-grid\">\n @for (field of queryFields; track field.ID) {\n <div class=\"param-card\">\n <div class=\"param-card-header\">\n <div class=\"param-name\">\n <i class=\"fa-solid fa-columns\" style=\"color: #17a2b8;\"></i>\n {{ field.Name }}\n </div>\n <div class=\"param-badges\">\n <span class=\"param-badge\" style=\"background: #e3f2fd; color: #1976d2;\">{{ field.SQLBaseType }}</span>\n @if (field.Sequence) {\n <span class=\"param-badge\" style=\"background: #f3e5f5; color: #7b1fa2;\">#{{ field.Sequence }}</span>\n }\n </div>\n </div>\n\n <div class=\"param-card-body\">\n @if (field.Description) {\n <div class=\"param-description\">{{ field.Description }}</div>\n }\n <div class=\"param-meta\">\n <span class=\"meta-item\">\n <i class=\"fa-solid fa-code\"></i> {{ field.SQLFullType || field.SQLBaseType }}\n </span>\n </div>\n </div>\n\n @if (EditMode) {\n <div class=\"param-card-actions\">\n <button type=\"button\" class=\"action-btn danger\" (click)=\"deleteField(field)\" title=\"Delete field\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n </div>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n </kendo-expansionpanel>\n }\n\n <!-- Query Entities Panel -->\n @if (record.IsSaved) {\n <kendo-expansionpanel\n [(expanded)]=\"entitiesPanelExpanded\"\n style=\"margin-bottom: 16px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-database\" style=\"color: #6c757d;\"></i>\n Query Entities\n @if (queryEntities.length > 0) {\n <span class=\"badge\" style=\"background: #17a2b8; color: white; padding: 2px 6px; border-radius: 10px; font-size: 0.7em;\">\n {{ queryEntities.length }}\n </span>\n }\n </span>\n </ng-template>\n\n <div style=\"padding: 16px 0;\">\n @if (isLoadingEntities) {\n <div style=\"display: flex; justify-content: center; padding: 40px;\">\n <i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 2em; color: #007bff;\"></i>\n </div>\n } @else {\n @if (queryEntities.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-database\" style=\"font-size: 3em; color: #dee2e6; margin-bottom: 12px;\"></i>\n <h5 style=\"color: #6c757d; margin-bottom: 8px;\">No Entities Tracked</h5>\n <div style=\"color: #adb5bd; margin-bottom: 16px;\">\n Track which entities this query uses for documentation.\n </div>\n @if (EditMode) {\n <button type=\"button\" class=\"add-param-btn\" (click)=\"addEntity()\">\n <i class=\"fa-solid fa-plus\"></i> Add First Entity\n </button>\n }\n </div>\n } @else {\n <!-- Entities Header with Add Button -->\n @if (EditMode) {\n <div style=\"display: flex; justify-content: flex-end; margin-bottom: 16px; padding: 0 20px;\">\n <button type=\"button\" class=\"add-param-btn\" (click)=\"addEntity()\">\n <i class=\"fa-solid fa-plus\"></i> Add Entity\n </button>\n </div>\n }\n\n <!-- Entities Grid -->\n <div class=\"parameters-grid\">\n @for (entity of queryEntities; track entity.ID) {\n <div class=\"param-card\">\n <div class=\"param-card-header\">\n <div class=\"param-name\">\n <i class=\"fa-solid fa-table\" style=\"color: #28a745;\"></i>\n {{ entity.Entity || 'Select Entity...' }}\n </div>\n @if (EditMode) {\n <div style=\"flex: 1; margin-left: 12px;\">\n <kendo-dropdownlist\n [(ngModel)]=\"entity.EntityID\"\n [name]=\"'entity_' + entity.ID\"\n [data]=\"getEntityOptions()\"\n textField=\"text\"\n valueField=\"id\"\n [valuePrimitive]=\"true\"\n placeholder=\"Select entity...\"\n style=\"width: 100%;\">\n </kendo-dropdownlist>\n </div>\n }\n </div>\n\n @if (!EditMode && entity.Entity) {\n <div class=\"param-card-body\">\n <div class=\"param-meta\">\n <span class=\"meta-item\">\n <i class=\"fa-solid fa-database\"></i> Data Source\n </span>\n </div>\n </div>\n }\n\n @if (EditMode) {\n <div class=\"param-card-actions\">\n <button type=\"button\" class=\"action-btn danger\" (click)=\"deleteEntity(entity)\" title=\"Delete entity\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n </div>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n </kendo-expansionpanel>\n }\n\n <!-- Details Panel -->\n <kendo-expansionpanel\n [(expanded)]=\"detailsPanelExpanded\"\n style=\"margin-bottom: 16px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-info-circle\" style=\"color: #6c757d;\"></i>\n Query Details\n </span>\n </ng-template>\n\n <div style=\"padding: 20px;\">\n <div class=\"details-grid\">\n <!-- Uses Template -->\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-file-code\"></i> Template Usage\n </label>\n @if (EditMode) {\n <kendo-switch [(ngModel)]=\"record.UsesTemplate\" name=\"usesTemplate\"></kendo-switch>\n } @else {\n <div class=\"detail-value\">\n @if (record.UsesTemplate) {\n <span style=\"color: #28a745;\"><i class=\"fa-solid fa-check\"></i> Uses Templates</span>\n } @else {\n <span style=\"color: #6c757d;\"><i class=\"fa-solid fa-times\"></i> No Templates</span>\n }\n </div>\n }\n </div>\n\n <!-- Created Date -->\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-calendar-plus\"></i> Created\n </label>\n <div class=\"detail-value\">{{ formatDate(record.__mj_CreatedAt) }}</div>\n </div>\n\n <!-- Updated Date -->\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-calendar-check\"></i> Last Updated\n </label>\n <div class=\"detail-value\">{{ formatDate(record.__mj_UpdatedAt) }}</div>\n </div>\n\n <!-- Quality Rank -->\n @if (record.QualityRank != null) {\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-star\"></i> Quality Rank\n </label>\n <div class=\"detail-value\">{{ record.QualityRank }}/10</div>\n </div>\n }\n </div>\n </div>\n </kendo-expansionpanel>\n\n <!-- Permissions Panel -->\n @if (record.IsSaved) {\n <kendo-expansionpanel\n [(expanded)]=\"permissionsPanelExpanded\"\n style=\"margin-bottom: 16px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-shield-alt\" style=\"color: #6c757d;\"></i>\n Query Permissions\n </span>\n </ng-template>\n\n <div style=\"padding: 16px 0;\">\n @if (isLoadingPermissions) {\n <div style=\"display: flex; justify-content: center; padding: 40px;\">\n <i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 2em; color: #007bff;\"></i>\n </div>\n } @else {\n @if (queryPermissions.length === 0 && !EditMode) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-shield-alt\" style=\"font-size: 3em; color: #dee2e6; margin-bottom: 12px;\"></i>\n <h5 style=\"color: #6c757d; margin-bottom: 8px;\">No Permissions Set</h5>\n <div style=\"color: #adb5bd;\">\n This query uses default permissions.\n </div>\n </div>\n } @else {\n @if (EditMode) {\n <!-- Edit Mode: Use the standard grid -->\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Query Permissions','QueryID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Query Permissions')\"\n [AllowLoad]=\"true\"\n [ShowToolbar]=\"false\">\n </mj-explorer-entity-data-grid>\n } @else {\n <!-- Read Mode: Nice card-based display -->\n <div class=\"permissions-display\">\n @for (permission of queryPermissions; track permission.ID) {\n <div class=\"permission-card\" style=\"background: #f8f9fa; border: 1px solid #dee2e6; border-radius: 8px; padding: 16px; margin-bottom: 12px;\">\n <div style=\"display: flex; align-items: center; gap: 12px;\">\n <i class=\"fa-solid fa-users\" style=\"font-size: 1.5em; color: #6c757d;\"></i>\n <div style=\"flex: 1;\">\n <div style=\"font-weight: 600; color: #495057;\">\n {{ permission.Role }}\n </div>\n <div style=\"font-size: 0.85em; color: #6c757d;\">\n Role Permission\n </div>\n </div>\n <div style=\"display: flex; gap: 8px;\">\n <span class=\"permission-badge\" style=\"background: #6f42c1; color: white; padding: 4px 8px; border-radius: 4px; font-size: 0.8em;\">\n <i class=\"fa-solid fa-play\"></i> Can Execute\n </span>\n </div>\n </div>\n </div>\n }\n </div>\n }\n }\n }\n </div>\n </kendo-expansionpanel>\n }\n </div>\n </form>\n\n <!-- Query Run Dialog -->\n <mj-query-run-dialog\n [query]=\"record\"\n [parameters]=\"queryParameters\"\n [(isVisible)]=\"showRunDialog\"\n (onClose)=\"onRunDialogClose()\">\n </mj-query-run-dialog>\n\n <!-- Category Creation Dialog -->\n <mj-query-category-dialog\n [(isVisible)]=\"showCategoryDialog\"\n (onCategoryCreated)=\"onCategoryCreated($event)\">\n </mj-query-category-dialog>\n }\n</div>", styles: [".k-pane {\n background-color: #F5F6FA;\n}\n\n.content-margin {\n margin: 10px;\n} \n\n\na {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon {\n margin-right: 5px;\n}\n\n.record-form {\n display: block;\n flex-direction: column;\n background-color: #F5F6FA;\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group {\n margin-top: 0px;\n background-color: #F5F6FA;\n}\n\nbutton {\n margin-right: 5px;\n}\n\n.record-form h2 {\n margin-bottom: 10px;\n}\n\n.k-splitter {\n border-width: 0px;\n}\n\n.record-form-row {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n\n/* .record-form .record-form-row:nth-child(odd) {\n background-color: #f2f2f2; \n} */\n\n/* \n.record-form .record-form-row:nth-child(even) {\n background-color: #ffffff; \n} */\n\n.record-form .record-form-row > :first-child {\n font-weight: bold;\n padding-right: 10px;\n} \n\n.record-form .record-form-row > span {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n \n\n@media (min-width: 768px) {\n .record-form-row {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row label {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n/* Collapsible Panel Styles */\n.form-panels-container {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: #F5F6FA;\n}\n\n/* All field sections take full width */\n.form-panels-container > .form-card {\n width: 100%;\n}\n\n/* Related entity grid container - responsive layout */\n.form-panels-container .related-entity-grid {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n/* Responsive multi-column layout for related entities on wider screens */\n@media (min-width: 1400px) {\n .form-panels-container .related-entity-grid {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card {\n background: white;\n border-radius: 8px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n overflow: hidden;\n}\n\n.collapsible-card {\n overflow: hidden;\n}\n\n.collapsible-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: linear-gradient(135deg, #f9fafb 0%, #ffffff 100%);\n border-bottom: 2px solid #e5e7eb;\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header:hover {\n background: linear-gradient(135deg, #f3f4f6 0%, #f9fafb 100%);\n border-bottom-color: #667eea;\n}\n\n.collapsible-title {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title i {\n font-size: 20px;\n color: #667eea;\n}\n\n.collapsible-title h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #1f2937;\n}\n\n.collapsible-header .collapse-icon {\n color: #6b7280;\n transition: transform 0.3s ease;\n}\n\n.collapsible-body {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body {\n padding: 24px;\n}\n\n/* Related Entity Sections - Visual Distinction */\n.form-card.related-entity {\n background: linear-gradient(135deg, #f0f9ff 0%, #ffffff 100%);\n border-left: 3px solid #3b82f6;\n}\n\n.form-card.related-entity .collapsible-header {\n background: linear-gradient(135deg, #e0f2fe 0%, #f0f9ff 100%);\n}\n\n.form-card.related-entity .collapsible-header:hover {\n background: linear-gradient(135deg, #bfdbfe 0%, #e0f2fe 100%);\n border-bottom-color: #3b82f6;\n}\n\n.form-card.related-entity .collapsible-title i {\n color: #3b82f6;\n}\n\n/* Section Controls */\n.form-section-controls {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: linear-gradient(135deg, #f9fafb 0%, #ffffff 100%);\n border-bottom: 2px solid #e5e7eb;\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n}\n\n.form-section-controls .control-group {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls button {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid #d1d5db;\n background: white;\n color: #374151;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls button:hover {\n background: #667eea;\n color: white;\n border-color: #667eea;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(102, 126, 234, 0.2);\n}\n\n.form-section-controls button:active {\n transform: translateY(0);\n}\n\n.form-section-controls button i {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls .section-search {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid #d1d5db;\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: white;\n}\n\n.form-section-controls .section-search:focus {\n outline: none;\n border-color: #667eea;\n box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);\n}\n\n.form-section-controls .section-search::placeholder {\n color: #9ca3af;\n font-style: italic;\n}\n\n.form-section-controls .section-count {\n font-size: 13px;\n color: #6b7280;\n margin-left: auto;\n font-weight: 500;\n}\n\n/* Hidden sections for search filter */\n.form-card.search-hidden {\n display: none;\n}\n\n/* Section count badge */\n.section-count-badge {\n background: #667eea;\n color: white;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n/* Search highlighting in section names */\n.collapsible-title h3 .search-highlight {\n background-color: #fef08a;\n color: #854d0e;\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n/* Row count badge in section headers */\n.collapsible-title .row-count-badge {\n background: #10b981;\n color: white;\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n/* Gray badge for zero rows (loaded but empty) */\n.collapsible-title .row-count-badge.zero-rows {\n background: #9ca3af;\n}\n", "/* Override shared form-styles to enable flex layout */\n:host {\n display: block;\n height: 100%;\n}\n\n/* Override the shared record-form min-height so flex layout works properly */\n.record-form {\n min-height: 0 !important;\n}\n\n.sql-editor-container {\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n\n.filters-help .filter-card {\n transition: transform 0.2s ease;\n}\n\n.filters-help .filter-card:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 8px rgba(0,0,0,0.1);\n}\n\n.toolbar-actions {\n margin-left: auto;\n}\n\n.query-header {\n border-bottom: 2px solid #dee2e6;\n}\n\n.badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n/* Modern Expansion Panel Styling */\n::ng-deep .query-content kendo-expansionpanel {\n border: none !important;\n border-radius: 12px !important;\n margin-bottom: 16px !important;\n box-shadow: 0 2px 8px rgba(0,0,0,0.06) !important;\n background: white !important;\n overflow: hidden !important;\n}\n\n::ng-deep .query-content .k-expander-header {\n background: white !important;\n border: none !important;\n padding: 16px 20px !important;\n border-radius: 12px !important;\n color: #2c3e50 !important;\n font-weight: 600 !important;\n font-size: 16px !important;\n transition: all 0.2s ease !important;\n}\n\n::ng-deep .query-content .k-expander-header:hover {\n background: #f8f9fa !important;\n}\n\n/* Expanded state header */\n::ng-deep .query-content kendo-expansionpanel[aria-expanded=\"true\"] .k-expander-header {\n background: #2196f3 !important;\n color: white !important;\n border-radius: 12px 12px 0 0 !important;\n}\n\n/* Content area */\n::ng-deep .query-content .k-expander-content {\n padding: 0 !important;\n border: none !important;\n background: white !important;\n border-radius: 0 0 12px 12px !important;\n}\n\n/* Icon in header */\n::ng-deep .query-content .k-expander-header .fa-solid {\n transition: transform 0.2s ease !important;\n}\n\n::ng-deep .query-content kendo-expansionpanel[aria-expanded=\"true\"] .k-expander-header .fa-chevron-down {\n transform: rotate(180deg) !important;\n}\n\n/* Parameter Cards */\n.parameters-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(350px, 1fr));\n gap: 16px;\n padding: 20px;\n}\n\n.param-card {\n background: white;\n border: 2px solid #e9ecef;\n border-radius: 8px;\n padding: 16px;\n transition: all 0.2s;\n cursor: pointer;\n position: relative;\n}\n\n.param-card:hover {\n border-color: #007bff;\n box-shadow: 0 2px 8px rgba(0,123,255,0.1);\n transform: translateY(-1px);\n}\n\n.param-card.required {\n border-color: #ffc107;\n}\n\n.param-card-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 12px;\n}\n\n.param-name {\n font-weight: 600;\n font-size: 1.1em;\n color: #2c3e50;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.param-badges {\n display: flex;\n gap: 6px;\n}\n\n.param-badge {\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 0.75em;\n font-weight: 600;\n color: white;\n}\n\n.param-badge.required {\n background: #ffc107;\n}\n\n.param-badge.array {\n background: #9c27b0;\n}\n\n.param-card-body {\n color: #6c757d;\n font-size: 0.9em;\n}\n\n.param-actions {\n position: absolute;\n top: 12px;\n right: 12px;\n display: flex;\n gap: 4px;\n opacity: 0;\n transition: opacity 0.2s;\n}\n\n.param-card:hover .param-actions {\n opacity: 1;\n}\n\n.param-action-btn {\n background: none;\n border: none;\n padding: 4px 8px;\n border-radius: 4px;\n cursor: pointer;\n color: #6c757d;\n transition: all 0.2s;\n}\n\n.param-action-btn:hover {\n background: #f8f9fa;\n color: #007bff;\n}\n\n.param-action-btn.delete:hover {\n background: #fff5f5;\n color: #dc3545;\n}\n\n/* Details Section */\n.details-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 20px;\n padding: 20px;\n}\n\n.detail-item {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.detail-label {\n font-size: 0.85em;\n font-weight: 600;\n color: #6c757d;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.detail-value {\n font-size: 1em;\n color: #2c3e50;\n}\n\n/* Category Tree Dropdown */\n.category-selector {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.category-tree-dropdown {\n flex: 1;\n}\n\n.add-category-btn {\n background: #28a745;\n color: white;\n border: none;\n padding: 8px 12px;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.add-category-btn:hover {\n background: #218838;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(40,167,69,0.2);\n}\n\n/* Empty State */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n text-align: center;\n color: #6c757d;\n}\n\n.empty-state-icon {\n font-size: 48px;\n margin-bottom: 16px;\n opacity: 0.3;\n}\n\n.empty-state-title {\n font-size: 1.2em;\n font-weight: 600;\n margin-bottom: 8px;\n color: #495057;\n}\n\n.empty-state-text {\n font-size: 0.9em;\n margin-bottom: 20px;\n}\n\n.add-param-btn {\n background: #007bff;\n color: white;\n border: none;\n padding: 10px 20px;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 500;\n}\n\n.add-param-btn:hover {\n background: #0056b3;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0,123,255,0.2);\n}"] }]
|
|
1656
|
+
args: [{ standalone: false, selector: 'mj-query-form', template: "<div class=\"record-form-container\" style=\"height: 100%; display: flex; flex-direction: column;\">\n @if (record) {\n <form class=\"record-form\" #form=\"ngForm\" style=\"display: flex; flex-direction: column; height: 100%; overflow: hidden;\">\n <mj-form-toolbar [Form]=\"this\"></mj-form-toolbar>\n\n <!-- Header Section -->\n <div class=\"query-header\">\n <div class=\"query-header-content\">\n <!-- Top Row: Name and Run Button -->\n <div class=\"query-header-top\">\n <!-- Left: Query Name -->\n <div class=\"query-name-section\">\n <i class=\"fa-solid fa-database query-title-icon\"></i>\n @if (EditMode) {\n <kendo-textbox [(ngModel)]=\"record.Name\"\n name=\"queryName\"\n placeholder=\"Enter query name...\"\n class=\"query-name-input\">\n </kendo-textbox>\n } @else {\n <h4 class=\"query-name-display\">{{ record.Name || 'Untitled Query' }}</h4>\n }\n </div>\n\n <!-- Right: Action Buttons -->\n <div class=\"query-header-actions\">\n @if (record.ID) {\n <button kendoButton\n [themeColor]=\"'primary'\"\n [size]=\"'large'\"\n [disabled]=\"EditMode || !record.SQL || record.SQL.trim().length === 0\"\n (click)=\"runQuery()\"\n title=\"Run Query\"\n class=\"run-query-btn\">\n <i class=\"fa-solid fa-play\"></i> Run\n </button>\n }\n </div>\n </div>\n\n <!-- Second Row: Category and Status -->\n <div class=\"query-meta-row\">\n <!-- Category -->\n <div class=\"query-meta-item\">\n <label class=\"meta-label\">Category</label>\n @if (EditMode) {\n <kendo-dropdownlist\n [(ngModel)]=\"record.CategoryID\"\n name=\"categoryId\"\n [data]=\"categoryOptions\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n placeholder=\"Select category...\"\n class=\"meta-dropdown\">\n </kendo-dropdownlist>\n } @else {\n <span class=\"meta-value\">{{ getCategoryPath() || 'Uncategorized' }}</span>\n }\n </div>\n\n <!-- Status -->\n <div class=\"query-meta-item\">\n <label class=\"meta-label\">Status</label>\n @if (EditMode) {\n <kendo-dropdownlist\n [(ngModel)]=\"record.Status\"\n name=\"status\"\n [data]=\"statusOptions\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n class=\"meta-dropdown status-dropdown\">\n </kendo-dropdownlist>\n } @else {\n <span class=\"status-pill\"\n [style.background]=\"getStatusBadgeColor()\">\n <i class=\"fa-solid\" [class]=\"getStatusBannerIcon()\"></i>\n {{ record.Status || 'Unknown' }}\n </span>\n }\n </div>\n </div>\n\n <!-- Third Row: Description -->\n @if (EditMode || record.Description) {\n <div class=\"query-description-row\">\n @if (EditMode) {\n <kendo-textarea [(ngModel)]=\"record.Description\"\n name=\"description\"\n [rows]=\"2\"\n placeholder=\"Enter query description...\"\n class=\"query-description-input\">\n </kendo-textarea>\n } @else {\n <p class=\"query-description-text\">{{ record.Description }}</p>\n }\n </div>\n }\n </div>\n </div>\n\n <!-- Status Warning Banner for Non-Approved Queries -->\n @if (record.Status && record.Status !== 'Approved' && !EditMode) {\n <div class=\"status-warning-banner\" [style.border-left-color]=\"getStatusBadgeColor()\">\n <i class=\"fa-solid\" [class]=\"getStatusBannerIcon()\"\n [style.color]=\"getStatusBadgeColor()\"></i>\n <span>\n This query has status <strong>{{ record.Status }}</strong>. {{ getStatusBannerMessage() }}\n </span>\n </div>\n }\n\n <!-- Main Content Area with Expansion Panels -->\n <div class=\"query-content\">\n\n <!-- SQL Query Panel -->\n <kendo-expansionpanel\n [(expanded)]=\"sqlPanelExpanded\"\n class=\"query-panel\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span class=\"panel-title-row\">\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-code panel-icon sql-icon\"></i>\n SQL\n @if (record.SQL) {\n <span class=\"panel-badge defined\">\n <i class=\"fa-solid fa-check\"></i> Defined\n </span>\n }\n </span>\n <button type=\"button\"\n kendoButton\n fillMode=\"flat\"\n size=\"small\"\n (click)=\"toggleFiltersHelp(); $event.stopPropagation()\"\n title=\"Show/hide SQL filters help\"\n class=\"filters-help-btn\">\n <i class=\"fa-solid fa-question-circle\"></i>\n <span>Filters Help</span>\n <i class=\"fa-solid\" [ngClass]=\"showFiltersHelp ? 'fa-chevron-up' : 'fa-chevron-down'\"></i>\n </button>\n </span>\n </ng-template>\n\n <div class=\"sql-panel-content\">\n <!-- Code Editor -->\n <mj-code-editor #sqlEditor\n (change)=\"onSQLChange($event)\"\n [language]=\"'sql'\"\n class=\"sql-editor\">\n </mj-code-editor>\n\n <!-- SQL Filters Help (Below Editor) -->\n @if (showFiltersHelp) {\n <div class=\"filters-help\">\n <h6 class=\"filters-help-title\">\n <i class=\"fa-solid fa-filter\"></i> Available SQL Filters for Parameterized Queries\n </h6>\n <div class=\"filters-grid\">\n @for (filter of sqlFilters; track filter.name) {\n <div class=\"filter-card\">\n <div class=\"filter-name\">{{ filter.name }}</div>\n <div class=\"filter-description\">{{ filter.description }}</div>\n <div class=\"filter-syntax\">{{ filter.exampleSyntax }}</div>\n @if (filter.notes) {\n <div class=\"filter-notes\">{{ filter.notes }}</div>\n }\n </div>\n }\n </div>\n </div>\n }\n </div>\n </kendo-expansionpanel>\n\n <!-- Technical Description Panel -->\n @if (record.TechnicalDescription || EditMode) {\n <kendo-expansionpanel\n [(expanded)]=\"technicalDescriptionPanelExpanded\"\n class=\"query-panel\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-book panel-icon\"></i>\n Technical Description\n @if (record.TechnicalDescription) {\n <span class=\"panel-badge defined\">\n <i class=\"fa-solid fa-check\"></i> Documented\n </span>\n }\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n @if (EditMode) {\n <kendo-textarea [(ngModel)]=\"record.TechnicalDescription\"\n name=\"technicalDescription\"\n [rows]=\"8\"\n placeholder=\"Technical documentation of the query logic, performance considerations, and parameter usage. Supports markdown and mermaid diagrams.\"\n class=\"technical-description-textarea\">\n </kendo-textarea>\n @if (record.TechnicalDescription) {\n <div class=\"technical-description-preview\">\n <div class=\"preview-label\">\n <i class=\"fa-solid fa-eye\"></i> Preview\n </div>\n <mj-markdown\n [data]=\"record.TechnicalDescription || ''\"\n [enableMermaid]=\"true\"\n [enableHighlight]=\"true\"\n [enableCollapsibleHeadings]=\"false\"\n [enableSmartypants]=\"true\">\n </mj-markdown>\n </div>\n }\n } @else {\n <div class=\"technical-description-view\">\n <mj-markdown\n [data]=\"record.TechnicalDescription || ''\"\n [enableMermaid]=\"true\"\n [enableHighlight]=\"true\"\n [enableCollapsibleHeadings]=\"false\"\n [enableSmartypants]=\"true\">\n </mj-markdown>\n </div>\n }\n </div>\n </kendo-expansionpanel>\n }\n\n <!-- Parameters Panel -->\n @if (record.IsSaved) {\n <kendo-expansionpanel\n [(expanded)]=\"parametersPanelExpanded\"\n class=\"query-panel\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-sliders panel-icon\"></i>\n Query Parameters\n @if (queryParameters.length > 0) {\n <span class=\"panel-badge count\">{{ queryParameters.length }}</span>\n }\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n @if (isLoadingParameters) {\n <div class=\"panel-loading\">\n <mj-loading text=\"Loading parameters...\"></mj-loading>\n </div>\n } @else {\n @if (queryParameters.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-sliders empty-state-icon\"></i>\n <div class=\"empty-state-title\">No Parameters Defined</div>\n <div class=\"empty-state-text\">\n Add parameters to make your query dynamic and reusable.\n </div>\n @if (EditMode) {\n <button type=\"button\" class=\"add-item-btn\" (click)=\"addParameter()\">\n <i class=\"fa-solid fa-plus\"></i> Add First Parameter\n </button>\n }\n </div>\n } @else {\n @if (EditMode) {\n <div class=\"panel-toolbar\">\n <button type=\"button\" class=\"add-item-btn\" (click)=\"addParameter()\">\n <i class=\"fa-solid fa-plus\"></i> Add Parameter\n </button>\n </div>\n }\n <div class=\"card-grid\">\n @for (param of queryParameters; track param.ID || $index) {\n <div class=\"item-card\" [class.required]=\"param.IsRequired\" (click)=\"editParameter(param)\">\n <div class=\"item-card-header\">\n <div class=\"item-name\">\n <i class=\"fa-solid fa-at item-name-icon param-icon\"></i>\n {{ param.Name }}\n </div>\n <div class=\"item-badges\">\n @if (param.IsRequired) {\n <span class=\"item-badge required\">Required</span>\n }\n </div>\n </div>\n <div class=\"item-card-body\">\n @if (param.Description) {\n <div class=\"item-description\">{{ param.Description }}</div>\n }\n <div class=\"item-meta\">\n <span class=\"meta-tag\">\n <strong>Type:</strong> {{ param.Type || 'Text' }}\n </span>\n @if (param.DefaultValue) {\n <span class=\"meta-tag\">\n <strong>Default:</strong>\n <code class=\"meta-code\">{{ param.DefaultValue }}</code>\n </span>\n }\n </div>\n </div>\n @if (EditMode) {\n <div class=\"item-actions\" (click)=\"$event.stopPropagation()\">\n <button type=\"button\" class=\"item-action-btn\" (click)=\"editParameter(param)\" title=\"Edit parameter\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n <button type=\"button\" class=\"item-action-btn delete\" (click)=\"deleteParameter(param)\" title=\"Delete parameter\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n </div>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n </kendo-expansionpanel>\n }\n\n <!-- Query Fields Panel -->\n @if (record.IsSaved) {\n <kendo-expansionpanel\n [(expanded)]=\"fieldsPanelExpanded\"\n class=\"query-panel\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-table panel-icon\"></i>\n Query Fields\n @if (queryFields.length > 0) {\n <span class=\"panel-badge count\">{{ queryFields.length }}</span>\n }\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n @if (isLoadingFields) {\n <div class=\"panel-loading\">\n <mj-loading text=\"Loading fields...\"></mj-loading>\n </div>\n } @else {\n @if (queryFields.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-table empty-state-icon\"></i>\n <div class=\"empty-state-title\">No Fields Defined</div>\n <div class=\"empty-state-text\">\n Define output fields for your query results.\n </div>\n @if (EditMode) {\n <button type=\"button\" class=\"add-item-btn\" (click)=\"addField()\">\n <i class=\"fa-solid fa-plus\"></i> Add First Field\n </button>\n }\n </div>\n } @else {\n @if (EditMode) {\n <div class=\"panel-toolbar\">\n <button type=\"button\" class=\"add-item-btn\" (click)=\"addField()\">\n <i class=\"fa-solid fa-plus\"></i> Add Field\n </button>\n </div>\n }\n <div class=\"card-grid\">\n @for (field of queryFields; track field.ID) {\n <div class=\"item-card\">\n <div class=\"item-card-header\">\n <div class=\"item-name\">\n <i class=\"fa-solid fa-columns item-name-icon field-icon\"></i>\n {{ field.Name }}\n </div>\n <div class=\"item-badges\">\n <span class=\"item-badge type\">{{ field.SQLBaseType }}</span>\n @if (field.Sequence) {\n <span class=\"item-badge sequence\">#{{ field.Sequence }}</span>\n }\n </div>\n </div>\n <div class=\"item-card-body\">\n @if (field.Description) {\n <div class=\"item-description\">{{ field.Description }}</div>\n }\n <div class=\"item-meta\">\n <span class=\"meta-tag\">\n <i class=\"fa-solid fa-code\"></i> {{ field.SQLFullType || field.SQLBaseType }}\n </span>\n </div>\n </div>\n @if (EditMode) {\n <div class=\"item-card-actions\">\n <button type=\"button\" class=\"item-action-btn delete\" (click)=\"deleteField(field)\" title=\"Delete field\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n </div>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n </kendo-expansionpanel>\n }\n\n <!-- Query Entities Panel -->\n @if (record.IsSaved) {\n <kendo-expansionpanel\n [(expanded)]=\"entitiesPanelExpanded\"\n class=\"query-panel\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-database panel-icon\"></i>\n Query Entities\n @if (queryEntities.length > 0) {\n <span class=\"panel-badge count\">{{ queryEntities.length }}</span>\n }\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n @if (isLoadingEntities) {\n <div class=\"panel-loading\">\n <mj-loading text=\"Loading entities...\"></mj-loading>\n </div>\n } @else {\n @if (queryEntities.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-database empty-state-icon\"></i>\n <div class=\"empty-state-title\">No Entities Tracked</div>\n <div class=\"empty-state-text\">\n Track which entities this query uses for documentation.\n </div>\n @if (EditMode) {\n <button type=\"button\" class=\"add-item-btn\" (click)=\"addEntity()\">\n <i class=\"fa-solid fa-plus\"></i> Add First Entity\n </button>\n }\n </div>\n } @else {\n @if (EditMode) {\n <div class=\"panel-toolbar\">\n <button type=\"button\" class=\"add-item-btn\" (click)=\"addEntity()\">\n <i class=\"fa-solid fa-plus\"></i> Add Entity\n </button>\n </div>\n }\n <div class=\"card-grid\">\n @for (entity of queryEntities; track entity.ID) {\n <div class=\"item-card\">\n <div class=\"item-card-header\">\n <div class=\"item-name\">\n <i class=\"fa-solid fa-table item-name-icon entity-icon\"></i>\n {{ entity.Entity || 'Select Entity...' }}\n </div>\n @if (EditMode) {\n <div class=\"entity-dropdown-wrapper\">\n <kendo-dropdownlist\n [(ngModel)]=\"entity.EntityID\"\n [name]=\"'entity_' + entity.ID\"\n [data]=\"getEntityOptions()\"\n textField=\"text\"\n valueField=\"id\"\n [valuePrimitive]=\"true\"\n placeholder=\"Select entity...\"\n class=\"entity-dropdown\">\n </kendo-dropdownlist>\n </div>\n }\n </div>\n @if (!EditMode && entity.Entity) {\n <div class=\"item-card-body\">\n <div class=\"item-meta\">\n <span class=\"meta-tag\">\n <i class=\"fa-solid fa-database\"></i> Data Source\n </span>\n </div>\n </div>\n }\n @if (EditMode) {\n <div class=\"item-card-actions\">\n <button type=\"button\" class=\"item-action-btn delete\" (click)=\"deleteEntity(entity)\" title=\"Delete entity\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n </div>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n </kendo-expansionpanel>\n }\n\n <!-- Details Panel -->\n <kendo-expansionpanel\n [(expanded)]=\"detailsPanelExpanded\"\n class=\"query-panel\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-info-circle panel-icon\"></i>\n Query Details\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n <div class=\"details-grid\">\n <!-- Uses Template -->\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-file-code\"></i> Template Usage\n </label>\n @if (EditMode) {\n <kendo-switch [(ngModel)]=\"record.UsesTemplate\" name=\"usesTemplate\"></kendo-switch>\n } @else {\n <div class=\"detail-value\">\n @if (record.UsesTemplate) {\n <span class=\"detail-tag positive\"><i class=\"fa-solid fa-check\"></i> Uses Templates</span>\n } @else {\n <span class=\"detail-tag neutral\"><i class=\"fa-solid fa-times\"></i> No Templates</span>\n }\n </div>\n }\n </div>\n\n <!-- Created Date -->\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-calendar-plus\"></i> Created\n </label>\n <div class=\"detail-value\">{{ formatDate(record.__mj_CreatedAt) }}</div>\n </div>\n\n <!-- Updated Date -->\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-calendar-check\"></i> Last Updated\n </label>\n <div class=\"detail-value\">{{ formatDate(record.__mj_UpdatedAt) }}</div>\n </div>\n\n <!-- Quality Rank -->\n @if (record.QualityRank != null) {\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-star\"></i> Quality Rank\n </label>\n <div class=\"detail-value\">{{ record.QualityRank }}/10</div>\n </div>\n }\n </div>\n </div>\n </kendo-expansionpanel>\n\n <!-- Permissions Panel -->\n @if (record.IsSaved) {\n <kendo-expansionpanel\n [(expanded)]=\"permissionsPanelExpanded\"\n class=\"query-panel\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-shield-alt panel-icon\"></i>\n Query Permissions\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n @if (isLoadingPermissions) {\n <div class=\"panel-loading\">\n <mj-loading text=\"Loading permissions...\"></mj-loading>\n </div>\n } @else {\n @if (queryPermissions.length === 0 && !EditMode) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-shield-alt empty-state-icon\"></i>\n <div class=\"empty-state-title\">No Permissions Set</div>\n <div class=\"empty-state-text\">\n This query uses default permissions.\n </div>\n </div>\n } @else {\n @if (EditMode) {\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Query Permissions','QueryID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Query Permissions')\"\n [AllowLoad]=\"true\"\n [ShowToolbar]=\"false\">\n </mj-explorer-entity-data-grid>\n } @else {\n <div class=\"permissions-list\">\n @for (permission of queryPermissions; track permission.ID) {\n <div class=\"permission-card\">\n <i class=\"fa-solid fa-users permission-icon\"></i>\n <div class=\"permission-info\">\n <div class=\"permission-role\">{{ permission.Role }}</div>\n <div class=\"permission-type\">Role Permission</div>\n </div>\n <span class=\"permission-badge\">\n <i class=\"fa-solid fa-play\"></i> Can Execute\n </span>\n </div>\n }\n </div>\n }\n }\n }\n </div>\n </kendo-expansionpanel>\n }\n </div>\n </form>\n\n <!-- Query Run Dialog -->\n <mj-query-run-dialog\n [query]=\"record\"\n [parameters]=\"queryParameters\"\n [(isVisible)]=\"showRunDialog\"\n (onClose)=\"onRunDialogClose()\">\n </mj-query-run-dialog>\n\n <!-- Category Creation Dialog -->\n <mj-query-category-dialog\n [(isVisible)]=\"showCategoryDialog\"\n (onCategoryCreated)=\"onCategoryCreated($event)\">\n </mj-query-category-dialog>\n }\n</div>\n", styles: [".k-pane {\n background-color: #F5F6FA;\n}\n\n.content-margin {\n margin: 10px;\n} \n\n\na {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon {\n margin-right: 5px;\n}\n\n.record-form {\n display: block;\n flex-direction: column;\n background-color: #F5F6FA;\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group {\n margin-top: 0px;\n background-color: #F5F6FA;\n}\n\nbutton {\n margin-right: 5px;\n}\n\n.record-form h2 {\n margin-bottom: 10px;\n}\n\n.k-splitter {\n border-width: 0px;\n}\n\n.record-form-row {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n\n/* .record-form .record-form-row:nth-child(odd) {\n background-color: #f2f2f2; \n} */\n\n/* \n.record-form .record-form-row:nth-child(even) {\n background-color: #ffffff; \n} */\n\n.record-form .record-form-row > :first-child {\n font-weight: bold;\n padding-right: 10px;\n} \n\n.record-form .record-form-row > span {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n \n\n@media (min-width: 768px) {\n .record-form-row {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row label {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n/* Collapsible Panel Styles */\n.form-panels-container {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: #F5F6FA;\n}\n\n/* All field sections take full width */\n.form-panels-container > .form-card {\n width: 100%;\n}\n\n/* Related entity grid container - responsive layout */\n.form-panels-container .related-entity-grid {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n/* Responsive multi-column layout for related entities on wider screens */\n@media (min-width: 1400px) {\n .form-panels-container .related-entity-grid {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card {\n background: white;\n border-radius: 8px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n overflow: hidden;\n}\n\n.collapsible-card {\n overflow: hidden;\n}\n\n.collapsible-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: linear-gradient(135deg, #f9fafb 0%, #ffffff 100%);\n border-bottom: 2px solid #e5e7eb;\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header:hover {\n background: linear-gradient(135deg, #f3f4f6 0%, #f9fafb 100%);\n border-bottom-color: #667eea;\n}\n\n.collapsible-title {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title i {\n font-size: 20px;\n color: #667eea;\n}\n\n.collapsible-title h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #1f2937;\n}\n\n.collapsible-header .collapse-icon {\n color: #6b7280;\n transition: transform 0.3s ease;\n}\n\n.collapsible-body {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body {\n padding: 24px;\n}\n\n/* Related Entity Sections - Visual Distinction */\n.form-card.related-entity {\n background: linear-gradient(135deg, #f0f9ff 0%, #ffffff 100%);\n border-left: 3px solid #3b82f6;\n}\n\n.form-card.related-entity .collapsible-header {\n background: linear-gradient(135deg, #e0f2fe 0%, #f0f9ff 100%);\n}\n\n.form-card.related-entity .collapsible-header:hover {\n background: linear-gradient(135deg, #bfdbfe 0%, #e0f2fe 100%);\n border-bottom-color: #3b82f6;\n}\n\n.form-card.related-entity .collapsible-title i {\n color: #3b82f6;\n}\n\n/* Section Controls */\n.form-section-controls {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: linear-gradient(135deg, #f9fafb 0%, #ffffff 100%);\n border-bottom: 2px solid #e5e7eb;\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n}\n\n.form-section-controls .control-group {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls button {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid #d1d5db;\n background: white;\n color: #374151;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls button:hover {\n background: #667eea;\n color: white;\n border-color: #667eea;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(102, 126, 234, 0.2);\n}\n\n.form-section-controls button:active {\n transform: translateY(0);\n}\n\n.form-section-controls button i {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls .section-search {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid #d1d5db;\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: white;\n}\n\n.form-section-controls .section-search:focus {\n outline: none;\n border-color: #667eea;\n box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);\n}\n\n.form-section-controls .section-search::placeholder {\n color: #9ca3af;\n font-style: italic;\n}\n\n.form-section-controls .section-count {\n font-size: 13px;\n color: #6b7280;\n margin-left: auto;\n font-weight: 500;\n}\n\n/* Hidden sections for search filter */\n.form-card.search-hidden {\n display: none;\n}\n\n/* Section count badge */\n.section-count-badge {\n background: #667eea;\n color: white;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n/* Search highlighting in section names */\n.collapsible-title h3 .search-highlight {\n background-color: #fef08a;\n color: #854d0e;\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n/* Row count badge in section headers */\n.collapsible-title .row-count-badge {\n background: #10b981;\n color: white;\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n/* Gray badge for zero rows (loaded but empty) */\n.collapsible-title .row-count-badge.zero-rows {\n background: #9ca3af;\n}\n", "/* Override shared form-styles to enable flex layout */\n:host {\n display: block;\n height: 100%;\n}\n\n/* Override the shared record-form min-height so flex layout works properly */\n.record-form {\n min-height: 0 !important;\n}\n\n/* ========================================\n Header Section \u2014 matches Query Browser gradient\n ======================================== */\n\n.query-header {\n flex-shrink: 0;\n background: linear-gradient(135deg, #5c6bc0 0%, #3949ab 100%);\n border-bottom: none;\n padding: 0;\n}\n\n.query-header-content {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 16px 20px;\n}\n\n.query-header-top {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 20px;\n}\n\n.query-name-section {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.query-title-icon {\n color: rgba(255, 255, 255, 0.85);\n font-size: 1.3em;\n flex-shrink: 0;\n}\n\n.query-name-input {\n font-size: 1.2em;\n font-weight: 600;\n min-width: 300px;\n flex: 1;\n}\n\n.query-name-display {\n margin: 0;\n color: #fff;\n font-weight: 600;\n font-size: 1.2em;\n flex: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.query-header-actions {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.run-query-btn {\n white-space: nowrap;\n}\n\n/* Meta row (category + status) */\n.query-meta-row {\n display: flex;\n gap: 24px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.query-meta-item {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.meta-label {\n font-weight: 500;\n color: rgba(255, 255, 255, 0.75);\n font-size: 13px;\n min-width: 60px;\n}\n\n.meta-value {\n color: rgba(255, 255, 255, 0.95);\n font-size: 14px;\n}\n\n.meta-dropdown {\n min-width: 200px;\n}\n\n.status-pill {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 14px;\n color: #fff;\n font-size: 13px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.status-pill i {\n font-size: 12px;\n}\n\n/* Description row */\n.query-description-row {\n margin-top: 2px;\n}\n\n.query-description-input {\n width: 100%;\n}\n\n.query-description-text {\n margin: 0;\n color: rgba(255, 255, 255, 0.8);\n font-size: 13px;\n line-height: 1.4;\n}\n\n/* ========================================\n Status Warning Banner\n ======================================== */\n\n.status-warning-banner {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 16px;\n margin: 0;\n background: #fff8e1;\n border-left: 4px solid #f59e0b;\n font-size: 13px;\n color: #5d4037;\n flex-shrink: 0;\n}\n\n.status-warning-banner i {\n font-size: 16px;\n flex-shrink: 0;\n}\n\n.status-warning-banner strong {\n font-weight: 600;\n}\n\n/* ========================================\n Main Content Area\n ======================================== */\n\n.query-content {\n flex: 1;\n min-height: 0;\n padding: 16px;\n overflow-y: auto;\n background: #f5f5f5;\n}\n\n/* ========================================\n Expansion Panel Overrides \u2014 Modern Style\n ======================================== */\n\n.query-panel {\n margin-bottom: 12px;\n}\n\n::ng-deep .query-content kendo-expansionpanel {\n border: none !important;\n border-radius: 8px !important;\n margin-bottom: 12px !important;\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08) !important;\n background: white !important;\n overflow: hidden !important;\n}\n\n::ng-deep .query-content .k-expander-header {\n background: white !important;\n border: none !important;\n padding: 14px 18px !important;\n border-radius: 8px !important;\n color: #333 !important;\n font-weight: 600 !important;\n font-size: 14px !important;\n transition: background 0.15s ease !important;\n}\n\n::ng-deep .query-content .k-expander-header:hover {\n background: #f8f9fa !important;\n}\n\n::ng-deep .query-content kendo-expansionpanel[aria-expanded=\"true\"] .k-expander-header {\n background: #5c6bc0 !important;\n color: white !important;\n border-radius: 8px 8px 0 0 !important;\n}\n\n::ng-deep .query-content .k-expander-content {\n padding: 0 !important;\n border: none !important;\n background: white !important;\n border-radius: 0 0 8px 8px !important;\n}\n\n/* ========================================\n Panel Title & Badges\n ======================================== */\n\n.panel-title-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n}\n\n.panel-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n}\n\n.panel-icon {\n font-size: 14px;\n opacity: 0.7;\n}\n\n.sql-icon {\n color: #5c6bc0;\n}\n\n::ng-deep kendo-expansionpanel[aria-expanded=\"true\"] .panel-icon {\n color: rgba(255, 255, 255, 0.85) !important;\n opacity: 1;\n}\n\n.panel-badge {\n padding: 2px 8px;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.panel-badge.defined {\n background: #28a745;\n color: white;\n}\n\n.panel-badge.count {\n background: #5c6bc0;\n color: white;\n}\n\n::ng-deep kendo-expansionpanel[aria-expanded=\"true\"] .panel-badge.count {\n background: rgba(255, 255, 255, 0.25) !important;\n}\n\n::ng-deep kendo-expansionpanel[aria-expanded=\"true\"] .panel-badge.defined {\n background: rgba(255, 255, 255, 0.25) !important;\n}\n\n.filters-help-btn {\n display: flex;\n align-items: center;\n gap: 4px;\n margin-right: 8px;\n font-size: 12px;\n}\n\n/* ========================================\n Panel Body & Loading\n ======================================== */\n\n.panel-body {\n padding: 16px 0;\n}\n\n.panel-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px;\n}\n\n.panel-toolbar {\n display: flex;\n justify-content: flex-end;\n padding: 0 20px 12px;\n}\n\n/* ========================================\n SQL Panel\n ======================================== */\n\n.sql-panel-content {\n display: flex;\n flex-direction: column;\n}\n\n.sql-editor {\n flex: 1;\n height: 400px;\n border: 1px solid #e0e0e0;\n border-radius: 4px;\n margin: 16px;\n}\n\n/* Filters Help */\n.filters-help {\n background: #fafafa;\n border: 1px solid #e0e0e0;\n border-radius: 6px;\n padding: 16px;\n margin: 0 16px 16px;\n}\n\n.filters-help-title {\n margin: 0 0 12px 0;\n color: #333;\n font-weight: 600;\n font-size: 14px;\n}\n\n.filters-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 10px;\n}\n\n.filter-card {\n background: white;\n border: 1px solid #e0e0e0;\n border-radius: 6px;\n padding: 12px;\n transition: transform 0.15s ease, box-shadow 0.15s ease;\n}\n\n.filter-card:hover {\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n}\n\n.filter-name {\n font-family: 'Courier New', monospace;\n font-weight: bold;\n color: #5c6bc0;\n margin-bottom: 4px;\n}\n\n.filter-description {\n font-size: 12px;\n color: #555;\n margin-bottom: 6px;\n}\n\n.filter-syntax {\n font-family: 'Courier New', monospace;\n font-size: 11px;\n background: #f5f5f5;\n padding: 6px;\n border-radius: 4px;\n margin-bottom: 4px;\n}\n\n.filter-notes {\n font-size: 11px;\n color: #888;\n font-style: italic;\n}\n\n/* ========================================\n Card Grid (Parameters, Fields, Entities)\n ======================================== */\n\n.card-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));\n gap: 12px;\n padding: 0 20px 20px;\n}\n\n.item-card {\n background: white;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n padding: 14px;\n transition: all 0.15s ease;\n cursor: pointer;\n position: relative;\n}\n\n.item-card:hover {\n border-color: #5c6bc0;\n box-shadow: 0 2px 8px rgba(92, 107, 192, 0.12);\n}\n\n.item-card.required {\n border-left: 3px solid #f59e0b;\n}\n\n.item-card-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 10px;\n}\n\n.item-name {\n font-weight: 600;\n font-size: 14px;\n color: #333;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.item-name-icon {\n font-size: 14px;\n}\n\n.item-name-icon.param-icon {\n color: #5c6bc0;\n}\n\n.item-name-icon.field-icon {\n color: #5c6bc0;\n}\n\n.item-name-icon.entity-icon {\n color: #28a745;\n}\n\n.item-badges {\n display: flex;\n gap: 6px;\n}\n\n.item-badge {\n padding: 2px 8px;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n color: white;\n}\n\n.item-badge.required {\n background: #f59e0b;\n}\n\n.item-badge.type {\n background: #e8eaf6;\n color: #3949ab;\n}\n\n.item-badge.sequence {\n background: #f3e5f5;\n color: #7b1fa2;\n}\n\n.item-card-body {\n color: #666;\n font-size: 13px;\n}\n\n.item-description {\n margin-bottom: 8px;\n}\n\n.item-meta {\n display: flex;\n gap: 16px;\n font-size: 12px;\n}\n\n.meta-tag {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n.meta-code {\n background: #f5f5f5;\n padding: 1px 4px;\n border-radius: 3px;\n font-size: 11px;\n}\n\n/* Card actions (edit/delete) */\n.item-actions {\n position: absolute;\n top: 10px;\n right: 10px;\n display: flex;\n gap: 4px;\n opacity: 0;\n transition: opacity 0.15s ease;\n}\n\n.item-card:hover .item-actions {\n opacity: 1;\n}\n\n.item-card-actions {\n display: flex;\n justify-content: flex-end;\n margin-top: 8px;\n}\n\n.item-action-btn {\n background: none;\n border: none;\n padding: 4px 8px;\n border-radius: 4px;\n cursor: pointer;\n color: #888;\n transition: all 0.15s ease;\n}\n\n.item-action-btn:hover {\n background: #f0f0f0;\n color: #5c6bc0;\n}\n\n.item-action-btn.delete:hover {\n background: #fff5f5;\n color: #dc3545;\n}\n\n/* Entity dropdown in card */\n.entity-dropdown-wrapper {\n flex: 1;\n margin-left: 12px;\n}\n\n.entity-dropdown {\n width: 100%;\n}\n\n/* ========================================\n Details Grid\n ======================================== */\n\n.details-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 16px;\n padding: 16px 20px;\n}\n\n.detail-item {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.detail-label {\n font-size: 12px;\n font-weight: 600;\n color: #888;\n display: flex;\n align-items: center;\n gap: 6px;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.detail-value {\n font-size: 14px;\n color: #333;\n}\n\n.detail-tag {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 13px;\n}\n\n.detail-tag.positive {\n color: #28a745;\n}\n\n.detail-tag.neutral {\n color: #888;\n}\n\n/* ========================================\n Permissions\n ======================================== */\n\n.permissions-list {\n padding: 0 20px;\n}\n\n.permission-card {\n display: flex;\n align-items: center;\n gap: 14px;\n background: #fafafa;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n padding: 14px 16px;\n margin-bottom: 8px;\n}\n\n.permission-icon {\n font-size: 1.3em;\n color: #5c6bc0;\n}\n\n.permission-info {\n flex: 1;\n}\n\n.permission-role {\n font-weight: 600;\n color: #333;\n font-size: 14px;\n}\n\n.permission-type {\n font-size: 12px;\n color: #888;\n}\n\n.permission-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n background: #5c6bc0;\n color: white;\n padding: 4px 10px;\n border-radius: 6px;\n font-size: 12px;\n font-weight: 500;\n}\n\n/* ========================================\n Empty State\n ======================================== */\n\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 20px;\n text-align: center;\n color: #888;\n}\n\n.empty-state-icon {\n font-size: 40px;\n margin-bottom: 14px;\n opacity: 0.25;\n color: #333;\n}\n\n.empty-state-title {\n font-size: 15px;\n font-weight: 600;\n margin-bottom: 6px;\n color: #555;\n}\n\n.empty-state-text {\n font-size: 13px;\n margin-bottom: 16px;\n color: #888;\n}\n\n/* ========================================\n Buttons\n ======================================== */\n\n.add-item-btn {\n background: #5c6bc0;\n color: white;\n border: none;\n padding: 8px 16px;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n font-size: 13px;\n}\n\n.add-item-btn:hover {\n background: #3949ab;\n box-shadow: 0 2px 6px rgba(92, 107, 192, 0.3);\n}\n\n/* ========================================\n Badge (reused across components)\n ======================================== */\n\n.badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n/* ========================================\n Technical Description Panel\n ======================================== */\n\n.technical-description-textarea {\n width: 100%;\n font-family: 'Consolas', 'Monaco', 'Courier New', monospace;\n font-size: 13px;\n}\n\n.technical-description-preview {\n margin-top: 16px;\n border-top: 1px solid #e0e0e0;\n padding-top: 12px;\n}\n\n.preview-label {\n font-size: 12px;\n font-weight: 600;\n color: #666;\n margin-bottom: 8px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.technical-description-view {\n max-height: 500px;\n overflow-y: auto;\n padding: 12px 16px;\n}\n"] }]
|
|
1549
1657
|
}], null, { sqlEditor: [{
|
|
1550
1658
|
type: ViewChild,
|
|
1551
1659
|
args: ['sqlEditor']
|