@memberjunction/ng-core-entity-forms 5.27.1 → 5.29.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/Queries/query-form.component.d.ts +11 -1
- package/dist/lib/custom/Queries/query-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.js +669 -414
- package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js +151 -157
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJArchiveConfiguration/mjarchiveconfiguration.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJArchiveConfiguration/mjarchiveconfiguration.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJArchiveConfiguration/mjarchiveconfiguration.form.component.js +123 -0
- package/dist/lib/generated/Entities/MJArchiveConfiguration/mjarchiveconfiguration.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJArchiveConfigurationEntity/mjarchiveconfigurationentity.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJArchiveConfigurationEntity/mjarchiveconfigurationentity.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJArchiveConfigurationEntity/mjarchiveconfigurationentity.form.component.js +87 -0
- package/dist/lib/generated/Entities/MJArchiveConfigurationEntity/mjarchiveconfigurationentity.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJArchiveRun/mjarchiverun.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJArchiveRun/mjarchiverun.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJArchiveRun/mjarchiverun.form.component.js +109 -0
- package/dist/lib/generated/Entities/MJArchiveRun/mjarchiverun.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJArchiveRunDetail/mjarchiverundetail.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJArchiveRunDetail/mjarchiverundetail.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJArchiveRunDetail/mjarchiverundetail.form.component.js +83 -0
- package/dist/lib/generated/Entities/MJArchiveRunDetail/mjarchiverundetail.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJArtifactType/mjartifacttype.form.component.js +39 -37
- package/dist/lib/generated/Entities/MJArtifactType/mjartifacttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCompanyIntegrationEntityMap/mjcompanyintegrationentitymap.form.component.js +10 -10
- package/dist/lib/generated/Entities/MJCompanyIntegrationEntityMap/mjcompanyintegrationentitymap.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +104 -68
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJFileStorageAccount/mjfilestorageaccount.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJFileStorageAccount/mjfilestorageaccount.form.component.js +35 -17
- package/dist/lib/generated/Entities/MJFileStorageAccount/mjfilestorageaccount.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMCPServerTool/mjmcpservertool.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJMCPServerTool/mjmcpservertool.form.component.js +24 -6
- package/dist/lib/generated/Entities/MJMCPServerTool/mjmcpservertool.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMCPToolFavorite/mjmcptoolfavorite.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMCPToolFavorite/mjmcptoolfavorite.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMCPToolFavorite/mjmcptoolfavorite.form.component.js +55 -0
- package/dist/lib/generated/Entities/MJMCPToolFavorite/mjmcptoolfavorite.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRecordChange/mjrecordchange.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJRecordChange/mjrecordchange.form.component.js +40 -10
- package/dist/lib/generated/Entities/MJRecordChange/mjrecordchange.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTag/mjtag.form.component.js +30 -30
- package/dist/lib/generated/Entities/MJTag/mjtag.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +235 -181
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
- package/dist/lib/generated/generated-forms.module.d.ts +251 -246
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +147 -132
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/package.json +34 -34
|
@@ -20,23 +20,31 @@ import * as i4 from "@memberjunction/ng-base-forms";
|
|
|
20
20
|
import * as i5 from "@memberjunction/ng-code-editor";
|
|
21
21
|
import * as i6 from "@memberjunction/ng-shared-generic";
|
|
22
22
|
import * as i7 from "@memberjunction/ng-markdown";
|
|
23
|
-
import * as i8 from "
|
|
24
|
-
import * as i9 from "./query-
|
|
23
|
+
import * as i8 from "@memberjunction/ng-trees";
|
|
24
|
+
import * as i9 from "./query-run-dialog.component";
|
|
25
|
+
import * as i10 from "./query-category-dialog.component";
|
|
25
26
|
const _c0 = ["sqlEditor"];
|
|
26
27
|
const _forTrack0 = ($index, $item) => $item.name;
|
|
27
28
|
const _forTrack1 = ($index, $item) => $item.ID || $index;
|
|
28
29
|
const _forTrack2 = ($index, $item) => $item.ID;
|
|
29
|
-
function
|
|
30
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
31
|
+
i0.ɵɵelementStart(0, "div", 5);
|
|
32
|
+
i0.ɵɵelement(1, "i", 49);
|
|
33
|
+
i0.ɵɵelementStart(2, "span");
|
|
34
|
+
i0.ɵɵtext(3, "Saving...");
|
|
35
|
+
i0.ɵɵelementEnd()();
|
|
36
|
+
} }
|
|
37
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
30
38
|
const _r2 = i0.ɵɵgetCurrentView();
|
|
31
|
-
i0.ɵɵelementStart(0, "input",
|
|
32
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
39
|
+
i0.ɵɵelementStart(0, "input", 50);
|
|
40
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_9_Template_input_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
41
|
i0.ɵɵelementEnd();
|
|
34
42
|
} if (rf & 2) {
|
|
35
43
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
36
44
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r2.record.Name);
|
|
37
45
|
} }
|
|
38
|
-
function
|
|
39
|
-
i0.ɵɵelementStart(0, "h4",
|
|
46
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
47
|
+
i0.ɵɵelementStart(0, "h4", 12);
|
|
40
48
|
i0.ɵɵtext(1);
|
|
41
49
|
i0.ɵɵelementEnd();
|
|
42
50
|
} if (rf & 2) {
|
|
@@ -44,29 +52,28 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_9_Template(rf, c
|
|
|
44
52
|
i0.ɵɵadvance();
|
|
45
53
|
i0.ɵɵtextInterpolate(ctx_r2.record.Name || "Untitled Query");
|
|
46
54
|
} }
|
|
47
|
-
function
|
|
55
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
48
56
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
49
|
-
i0.ɵɵelementStart(0, "button",
|
|
50
|
-
i0.ɵɵlistener("click", function
|
|
51
|
-
i0.ɵɵelement(1, "i",
|
|
57
|
+
i0.ɵɵelementStart(0, "button", 51);
|
|
58
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_12_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.runQuery()); });
|
|
59
|
+
i0.ɵɵelement(1, "i", 52);
|
|
52
60
|
i0.ɵɵtext(2, " Run ");
|
|
53
61
|
i0.ɵɵelementEnd();
|
|
54
62
|
} if (rf & 2) {
|
|
55
63
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
56
64
|
i0.ɵɵproperty("disabled", ctx_r2.EditMode || !ctx_r2.record.SQL || ctx_r2.record.SQL.trim().length === 0);
|
|
57
65
|
} }
|
|
58
|
-
function
|
|
66
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
59
67
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
60
|
-
i0.ɵɵelementStart(0, "mj-dropdown",
|
|
61
|
-
i0.ɵɵ
|
|
68
|
+
i0.ɵɵelementStart(0, "mj-tree-dropdown", 53);
|
|
69
|
+
i0.ɵɵlistener("ValueChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_17_Template_mj_tree_dropdown_ValueChange_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnCategoryTreeChange($event)); });
|
|
62
70
|
i0.ɵɵelementEnd();
|
|
63
71
|
} if (rf & 2) {
|
|
64
72
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
65
|
-
i0.ɵɵ
|
|
66
|
-
i0.ɵɵproperty("Data", ctx_r2.categoryOptions)("ValuePrimitive", true);
|
|
73
|
+
i0.ɵɵproperty("BranchConfig", ctx_r2.CategoryBranchConfig)("Value", ctx_r2.CategoryIDAsKey)("SelectableTypes", "branch")("SelectionMode", "single")("Placeholder", "Select category...")("EnableSearch", true)("Clearable", true);
|
|
67
74
|
} }
|
|
68
|
-
function
|
|
69
|
-
i0.ɵɵelementStart(0, "span",
|
|
75
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
76
|
+
i0.ɵɵelementStart(0, "span", 19);
|
|
70
77
|
i0.ɵɵtext(1);
|
|
71
78
|
i0.ɵɵelementEnd();
|
|
72
79
|
} if (rf & 2) {
|
|
@@ -74,19 +81,19 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_17_Template(rf,
|
|
|
74
81
|
i0.ɵɵadvance();
|
|
75
82
|
i0.ɵɵtextInterpolate(ctx_r2.categoryPathDisplay || "Uncategorized");
|
|
76
83
|
} }
|
|
77
|
-
function
|
|
84
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
78
85
|
const _r6 = i0.ɵɵgetCurrentView();
|
|
79
|
-
i0.ɵɵelementStart(0, "mj-dropdown",
|
|
80
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
86
|
+
i0.ɵɵelementStart(0, "mj-dropdown", 54);
|
|
87
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_22_Template_mj_dropdown_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
88
|
i0.ɵɵelementEnd();
|
|
82
89
|
} if (rf & 2) {
|
|
83
90
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
84
91
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r2.record.Status);
|
|
85
92
|
i0.ɵɵproperty("Data", ctx_r2.statusOptions)("ValuePrimitive", true);
|
|
86
93
|
} }
|
|
87
|
-
function
|
|
88
|
-
i0.ɵɵelementStart(0, "span",
|
|
89
|
-
i0.ɵɵelement(1, "i",
|
|
94
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
95
|
+
i0.ɵɵelementStart(0, "span", 55);
|
|
96
|
+
i0.ɵɵelement(1, "i", 56);
|
|
90
97
|
i0.ɵɵtext(2);
|
|
91
98
|
i0.ɵɵelementEnd();
|
|
92
99
|
} if (rf & 2) {
|
|
@@ -97,18 +104,18 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_22_Template(rf,
|
|
|
97
104
|
i0.ɵɵadvance();
|
|
98
105
|
i0.ɵɵtextInterpolate1(" ", ctx_r2.record.Status || "Unknown", " ");
|
|
99
106
|
} }
|
|
100
|
-
function
|
|
107
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_24_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
101
108
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
102
|
-
i0.ɵɵelementStart(0, "textarea",
|
|
103
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
109
|
+
i0.ɵɵelementStart(0, "textarea", 59);
|
|
110
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_24_Conditional_1_Template_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); });
|
|
104
111
|
i0.ɵɵtext(1, " ");
|
|
105
112
|
i0.ɵɵelementEnd();
|
|
106
113
|
} if (rf & 2) {
|
|
107
114
|
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
108
115
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r2.record.Description);
|
|
109
116
|
} }
|
|
110
|
-
function
|
|
111
|
-
i0.ɵɵelementStart(0, "p",
|
|
117
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_24_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
118
|
+
i0.ɵɵelementStart(0, "p", 58);
|
|
112
119
|
i0.ɵɵtext(1);
|
|
113
120
|
i0.ɵɵelementEnd();
|
|
114
121
|
} if (rf & 2) {
|
|
@@ -116,18 +123,18 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_23_Conditional_2
|
|
|
116
123
|
i0.ɵɵadvance();
|
|
117
124
|
i0.ɵɵtextInterpolate(ctx_r2.record.Description);
|
|
118
125
|
} }
|
|
119
|
-
function
|
|
120
|
-
i0.ɵɵelementStart(0, "div",
|
|
121
|
-
i0.ɵɵconditionalCreate(1,
|
|
126
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_24_Template(rf, ctx) { if (rf & 1) {
|
|
127
|
+
i0.ɵɵelementStart(0, "div", 22);
|
|
128
|
+
i0.ɵɵconditionalCreate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_24_Conditional_1_Template, 2, 1, "textarea", 57)(2, MJQueryFormComponentExtended_Conditional_1_Conditional_24_Conditional_2_Template, 2, 1, "p", 58);
|
|
122
129
|
i0.ɵɵelementEnd();
|
|
123
130
|
} if (rf & 2) {
|
|
124
131
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
125
132
|
i0.ɵɵadvance();
|
|
126
133
|
i0.ɵɵconditional(ctx_r2.EditMode ? 1 : 2);
|
|
127
134
|
} }
|
|
128
|
-
function
|
|
129
|
-
i0.ɵɵelementStart(0, "div",
|
|
130
|
-
i0.ɵɵelement(1, "i",
|
|
135
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_25_Template(rf, ctx) { if (rf & 1) {
|
|
136
|
+
i0.ɵɵelementStart(0, "div", 60);
|
|
137
|
+
i0.ɵɵelement(1, "i", 56);
|
|
131
138
|
i0.ɵɵelementStart(2, "span");
|
|
132
139
|
i0.ɵɵtext(3, " This query has status ");
|
|
133
140
|
i0.ɵɵelementStart(4, "strong");
|
|
@@ -146,24 +153,24 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_24_Template(rf,
|
|
|
146
153
|
i0.ɵɵadvance();
|
|
147
154
|
i0.ɵɵtextInterpolate1(". ", ctx_r2.getStatusBannerMessage(), " ");
|
|
148
155
|
} }
|
|
149
|
-
function
|
|
150
|
-
i0.ɵɵelementStart(0, "span",
|
|
156
|
+
function MJQueryFormComponentExtended_Conditional_1_ng_template_28_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
157
|
+
i0.ɵɵelementStart(0, "span", 64);
|
|
151
158
|
i0.ɵɵtext(1, "\u2014 Defined");
|
|
152
159
|
i0.ɵɵelementEnd();
|
|
153
160
|
} }
|
|
154
|
-
function
|
|
155
|
-
i0.ɵɵelementStart(0, "span",
|
|
156
|
-
i0.ɵɵelement(2, "i",
|
|
161
|
+
function MJQueryFormComponentExtended_Conditional_1_ng_template_28_Template(rf, ctx) { if (rf & 1) {
|
|
162
|
+
i0.ɵɵelementStart(0, "span", 61)(1, "span", 62);
|
|
163
|
+
i0.ɵɵelement(2, "i", 63);
|
|
157
164
|
i0.ɵɵtext(3, " SQL ");
|
|
158
|
-
i0.ɵɵconditionalCreate(4,
|
|
165
|
+
i0.ɵɵconditionalCreate(4, MJQueryFormComponentExtended_Conditional_1_ng_template_28_Conditional_4_Template, 2, 0, "span", 64);
|
|
159
166
|
i0.ɵɵelementEnd()();
|
|
160
167
|
} if (rf & 2) {
|
|
161
168
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
162
169
|
i0.ɵɵadvance(4);
|
|
163
170
|
i0.ɵɵconditional(ctx_r2.record.SQL ? 4 : -1);
|
|
164
171
|
} }
|
|
165
|
-
function
|
|
166
|
-
i0.ɵɵelementStart(0, "div",
|
|
172
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_38_For_6_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
173
|
+
i0.ɵɵelementStart(0, "div", 72);
|
|
167
174
|
i0.ɵɵtext(1);
|
|
168
175
|
i0.ɵɵelementEnd();
|
|
169
176
|
} if (rf & 2) {
|
|
@@ -171,17 +178,17 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_37_For_6_Conditi
|
|
|
171
178
|
i0.ɵɵadvance();
|
|
172
179
|
i0.ɵɵtextInterpolate(filter_r8.notes);
|
|
173
180
|
} }
|
|
174
|
-
function
|
|
175
|
-
i0.ɵɵelementStart(0, "div",
|
|
181
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_38_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
182
|
+
i0.ɵɵelementStart(0, "div", 68)(1, "div", 69);
|
|
176
183
|
i0.ɵɵtext(2);
|
|
177
184
|
i0.ɵɵelementEnd();
|
|
178
|
-
i0.ɵɵelementStart(3, "div",
|
|
185
|
+
i0.ɵɵelementStart(3, "div", 70);
|
|
179
186
|
i0.ɵɵtext(4);
|
|
180
187
|
i0.ɵɵelementEnd();
|
|
181
|
-
i0.ɵɵelementStart(5, "div",
|
|
188
|
+
i0.ɵɵelementStart(5, "div", 71);
|
|
182
189
|
i0.ɵɵtext(6);
|
|
183
190
|
i0.ɵɵelementEnd();
|
|
184
|
-
i0.ɵɵconditionalCreate(7,
|
|
191
|
+
i0.ɵɵconditionalCreate(7, MJQueryFormComponentExtended_Conditional_1_Conditional_38_For_6_Conditional_7_Template, 2, 1, "div", 72);
|
|
185
192
|
i0.ɵɵelementEnd();
|
|
186
193
|
} if (rf & 2) {
|
|
187
194
|
const filter_r8 = ctx.$implicit;
|
|
@@ -194,76 +201,76 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_37_For_6_Templat
|
|
|
194
201
|
i0.ɵɵadvance();
|
|
195
202
|
i0.ɵɵconditional(filter_r8.notes ? 7 : -1);
|
|
196
203
|
} }
|
|
197
|
-
function
|
|
198
|
-
i0.ɵɵelementStart(0, "div",
|
|
199
|
-
i0.ɵɵelement(2, "i",
|
|
204
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_38_Template(rf, ctx) { if (rf & 1) {
|
|
205
|
+
i0.ɵɵelementStart(0, "div", 33)(1, "h6", 65);
|
|
206
|
+
i0.ɵɵelement(2, "i", 66);
|
|
200
207
|
i0.ɵɵtext(3, " Available SQL Filters for Parameterized Queries ");
|
|
201
208
|
i0.ɵɵelementEnd();
|
|
202
|
-
i0.ɵɵelementStart(4, "div",
|
|
203
|
-
i0.ɵɵrepeaterCreate(5,
|
|
209
|
+
i0.ɵɵelementStart(4, "div", 67);
|
|
210
|
+
i0.ɵɵrepeaterCreate(5, MJQueryFormComponentExtended_Conditional_1_Conditional_38_For_6_Template, 8, 4, "div", 68, _forTrack0);
|
|
204
211
|
i0.ɵɵelementEnd()();
|
|
205
212
|
} if (rf & 2) {
|
|
206
213
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
207
214
|
i0.ɵɵadvance(5);
|
|
208
215
|
i0.ɵɵrepeater(ctx_r2.sqlFilters);
|
|
209
216
|
} }
|
|
210
|
-
function
|
|
211
|
-
i0.ɵɵelementStart(0, "span",
|
|
217
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_39_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
218
|
+
i0.ɵɵelementStart(0, "span", 64);
|
|
212
219
|
i0.ɵɵtext(1, "\u2014 Documented");
|
|
213
220
|
i0.ɵɵelementEnd();
|
|
214
221
|
} }
|
|
215
|
-
function
|
|
216
|
-
i0.ɵɵelementStart(0, "span",
|
|
217
|
-
i0.ɵɵelement(1, "i",
|
|
222
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_39_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
223
|
+
i0.ɵɵelementStart(0, "span", 62);
|
|
224
|
+
i0.ɵɵelement(1, "i", 74);
|
|
218
225
|
i0.ɵɵtext(2, " Technical Description ");
|
|
219
|
-
i0.ɵɵconditionalCreate(3,
|
|
226
|
+
i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_39_ng_template_1_Conditional_3_Template, 2, 0, "span", 64);
|
|
220
227
|
i0.ɵɵelementEnd();
|
|
221
228
|
} if (rf & 2) {
|
|
222
229
|
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
223
230
|
i0.ɵɵadvance(3);
|
|
224
231
|
i0.ɵɵconditional(ctx_r2.record.TechnicalDescription ? 3 : -1);
|
|
225
232
|
} }
|
|
226
|
-
function
|
|
227
|
-
i0.ɵɵelementStart(0, "div",
|
|
228
|
-
i0.ɵɵelement(2, "i",
|
|
233
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_3_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
234
|
+
i0.ɵɵelementStart(0, "div", 76)(1, "div", 77);
|
|
235
|
+
i0.ɵɵelement(2, "i", 78);
|
|
229
236
|
i0.ɵɵtext(3, " Preview ");
|
|
230
237
|
i0.ɵɵelementEnd();
|
|
231
|
-
i0.ɵɵelement(4, "mj-markdown",
|
|
238
|
+
i0.ɵɵelement(4, "mj-markdown", 79);
|
|
232
239
|
i0.ɵɵelementEnd();
|
|
233
240
|
} if (rf & 2) {
|
|
234
241
|
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
235
242
|
i0.ɵɵadvance(4);
|
|
236
243
|
i0.ɵɵproperty("data", ctx_r2.record.TechnicalDescription || "")("enableMermaid", true)("enableHighlight", true)("enableCollapsibleHeadings", false)("enableSmartypants", true);
|
|
237
244
|
} }
|
|
238
|
-
function
|
|
245
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
239
246
|
const _r10 = i0.ɵɵgetCurrentView();
|
|
240
|
-
i0.ɵɵelementStart(0, "textarea",
|
|
241
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
247
|
+
i0.ɵɵelementStart(0, "textarea", 75);
|
|
248
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_3_Template_textarea_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r2.record.TechnicalDescription, $event) || (ctx_r2.record.TechnicalDescription = $event); return i0.ɵɵresetView($event); });
|
|
242
249
|
i0.ɵɵtext(1, " ");
|
|
243
250
|
i0.ɵɵelementEnd();
|
|
244
|
-
i0.ɵɵconditionalCreate(2,
|
|
251
|
+
i0.ɵɵconditionalCreate(2, MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_3_Conditional_2_Template, 5, 5, "div", 76);
|
|
245
252
|
} if (rf & 2) {
|
|
246
253
|
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
247
254
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r2.record.TechnicalDescription);
|
|
248
255
|
i0.ɵɵadvance(2);
|
|
249
256
|
i0.ɵɵconditional(ctx_r2.record.TechnicalDescription ? 2 : -1);
|
|
250
257
|
} }
|
|
251
|
-
function
|
|
252
|
-
i0.ɵɵelementStart(0, "div",
|
|
253
|
-
i0.ɵɵelement(1, "mj-markdown",
|
|
258
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
259
|
+
i0.ɵɵelementStart(0, "div", 73);
|
|
260
|
+
i0.ɵɵelement(1, "mj-markdown", 79);
|
|
254
261
|
i0.ɵɵelementEnd();
|
|
255
262
|
} if (rf & 2) {
|
|
256
263
|
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
257
264
|
i0.ɵɵadvance();
|
|
258
265
|
i0.ɵɵproperty("data", ctx_r2.record.TechnicalDescription || "")("enableMermaid", true)("enableHighlight", true)("enableCollapsibleHeadings", false)("enableSmartypants", true);
|
|
259
266
|
} }
|
|
260
|
-
function
|
|
267
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Template(rf, ctx) { if (rf & 1) {
|
|
261
268
|
const _r9 = i0.ɵɵgetCurrentView();
|
|
262
|
-
i0.ɵɵelementStart(0, "mj-accordion-panel",
|
|
263
|
-
i0.ɵɵtwoWayListener("ExpandedChange", function
|
|
264
|
-
i0.ɵɵtemplate(1,
|
|
265
|
-
i0.ɵɵelementStart(2, "div",
|
|
266
|
-
i0.ɵɵconditionalCreate(3,
|
|
269
|
+
i0.ɵɵelementStart(0, "mj-accordion-panel", 25);
|
|
270
|
+
i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.technicalDescriptionPanelExpanded, $event) || (ctx_r2.technicalDescriptionPanelExpanded = $event); return i0.ɵɵresetView($event); });
|
|
271
|
+
i0.ɵɵtemplate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_39_ng_template_1_Template, 4, 1, "ng-template", 26);
|
|
272
|
+
i0.ɵɵelementStart(2, "div", 35);
|
|
273
|
+
i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_3_Template, 3, 2)(4, MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4_Template, 2, 5, "div", 73);
|
|
267
274
|
i0.ɵɵelementEnd()();
|
|
268
275
|
} if (rf & 2) {
|
|
269
276
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
@@ -271,8 +278,8 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_38_Template(rf,
|
|
|
271
278
|
i0.ɵɵadvance(3);
|
|
272
279
|
i0.ɵɵconditional(ctx_r2.EditMode ? 3 : 4);
|
|
273
280
|
} }
|
|
274
|
-
function
|
|
275
|
-
i0.ɵɵelementStart(0, "span",
|
|
281
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_40_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
282
|
+
i0.ɵɵelementStart(0, "span", 82);
|
|
276
283
|
i0.ɵɵtext(1);
|
|
277
284
|
i0.ɵɵelementEnd();
|
|
278
285
|
} if (rf & 2) {
|
|
@@ -280,61 +287,61 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_39_ng_template_1
|
|
|
280
287
|
i0.ɵɵadvance();
|
|
281
288
|
i0.ɵɵtextInterpolate(ctx_r2.queryParameters.length);
|
|
282
289
|
} }
|
|
283
|
-
function
|
|
284
|
-
i0.ɵɵelementStart(0, "span",
|
|
285
|
-
i0.ɵɵelement(1, "i",
|
|
290
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_40_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
291
|
+
i0.ɵɵelementStart(0, "span", 62);
|
|
292
|
+
i0.ɵɵelement(1, "i", 81);
|
|
286
293
|
i0.ɵɵtext(2, " Parameters ");
|
|
287
|
-
i0.ɵɵconditionalCreate(3,
|
|
294
|
+
i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_40_ng_template_1_Conditional_3_Template, 2, 1, "span", 82);
|
|
288
295
|
i0.ɵɵelementEnd();
|
|
289
296
|
} if (rf & 2) {
|
|
290
297
|
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
291
298
|
i0.ɵɵadvance(3);
|
|
292
299
|
i0.ɵɵconditional(ctx_r2.queryParameters.length > 0 ? 3 : -1);
|
|
293
300
|
} }
|
|
294
|
-
function
|
|
295
|
-
i0.ɵɵelementStart(0, "div",
|
|
296
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
301
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
302
|
+
i0.ɵɵelementStart(0, "div", 80);
|
|
303
|
+
i0.ɵɵelement(1, "mj-loading", 83);
|
|
297
304
|
i0.ɵɵelementEnd();
|
|
298
305
|
} }
|
|
299
|
-
function
|
|
306
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_0_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
300
307
|
const _r12 = i0.ɵɵgetCurrentView();
|
|
301
|
-
i0.ɵɵelementStart(0, "button",
|
|
302
|
-
i0.ɵɵlistener("click", function
|
|
303
|
-
i0.ɵɵelement(1, "i",
|
|
308
|
+
i0.ɵɵelementStart(0, "button", 89);
|
|
309
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_0_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.addParameter()); });
|
|
310
|
+
i0.ɵɵelement(1, "i", 90);
|
|
304
311
|
i0.ɵɵtext(2, " Add First Parameter ");
|
|
305
312
|
i0.ɵɵelementEnd();
|
|
306
313
|
} }
|
|
307
|
-
function
|
|
308
|
-
i0.ɵɵelementStart(0, "div",
|
|
309
|
-
i0.ɵɵelement(1, "i",
|
|
310
|
-
i0.ɵɵelementStart(2, "div",
|
|
314
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
315
|
+
i0.ɵɵelementStart(0, "div", 84);
|
|
316
|
+
i0.ɵɵelement(1, "i", 85);
|
|
317
|
+
i0.ɵɵelementStart(2, "div", 86);
|
|
311
318
|
i0.ɵɵtext(3, "No Parameters Defined");
|
|
312
319
|
i0.ɵɵelementEnd();
|
|
313
|
-
i0.ɵɵelementStart(4, "div",
|
|
320
|
+
i0.ɵɵelementStart(4, "div", 87);
|
|
314
321
|
i0.ɵɵtext(5, " Add parameters to make your query dynamic and reusable. ");
|
|
315
322
|
i0.ɵɵelementEnd();
|
|
316
|
-
i0.ɵɵconditionalCreate(6,
|
|
323
|
+
i0.ɵɵconditionalCreate(6, MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_0_Conditional_6_Template, 3, 0, "button", 88);
|
|
317
324
|
i0.ɵɵelementEnd();
|
|
318
325
|
} if (rf & 2) {
|
|
319
326
|
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
320
327
|
i0.ɵɵadvance(6);
|
|
321
328
|
i0.ɵɵconditional(ctx_r2.EditMode ? 6 : -1);
|
|
322
329
|
} }
|
|
323
|
-
function
|
|
330
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
324
331
|
const _r13 = i0.ɵɵgetCurrentView();
|
|
325
|
-
i0.ɵɵelementStart(0, "div",
|
|
326
|
-
i0.ɵɵlistener("click", function
|
|
327
|
-
i0.ɵɵelement(2, "i",
|
|
332
|
+
i0.ɵɵelementStart(0, "div", 91)(1, "button", 89);
|
|
333
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_Conditional_0_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r13); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.addParameter()); });
|
|
334
|
+
i0.ɵɵelement(2, "i", 90);
|
|
328
335
|
i0.ɵɵtext(3, " Add Parameter ");
|
|
329
336
|
i0.ɵɵelementEnd()();
|
|
330
337
|
} }
|
|
331
|
-
function
|
|
332
|
-
i0.ɵɵelementStart(0, "span",
|
|
338
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
339
|
+
i0.ɵɵelementStart(0, "span", 99);
|
|
333
340
|
i0.ɵɵtext(1, "Required");
|
|
334
341
|
i0.ɵɵelementEnd();
|
|
335
342
|
} }
|
|
336
|
-
function
|
|
337
|
-
i0.ɵɵelementStart(0, "div",
|
|
343
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
344
|
+
i0.ɵɵelementStart(0, "div", 101);
|
|
338
345
|
i0.ɵɵtext(1);
|
|
339
346
|
i0.ɵɵelementEnd();
|
|
340
347
|
} if (rf & 2) {
|
|
@@ -342,11 +349,11 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4
|
|
|
342
349
|
i0.ɵɵadvance();
|
|
343
350
|
i0.ɵɵtextInterpolate(param_r15.Description);
|
|
344
351
|
} }
|
|
345
|
-
function
|
|
346
|
-
i0.ɵɵelementStart(0, "span",
|
|
352
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
353
|
+
i0.ɵɵelementStart(0, "span", 103)(1, "strong");
|
|
347
354
|
i0.ɵɵtext(2, "Default:");
|
|
348
355
|
i0.ɵɵelementEnd();
|
|
349
|
-
i0.ɵɵelementStart(3, "code",
|
|
356
|
+
i0.ɵɵelementStart(3, "code", 105);
|
|
350
357
|
i0.ɵɵtext(4);
|
|
351
358
|
i0.ɵɵelementEnd()();
|
|
352
359
|
} if (rf & 2) {
|
|
@@ -354,40 +361,40 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4
|
|
|
354
361
|
i0.ɵɵadvance(4);
|
|
355
362
|
i0.ɵɵtextInterpolate(param_r15.DefaultValue);
|
|
356
363
|
} }
|
|
357
|
-
function
|
|
364
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
358
365
|
const _r16 = i0.ɵɵgetCurrentView();
|
|
359
|
-
i0.ɵɵelementStart(0, "div",
|
|
360
|
-
i0.ɵɵlistener("click", function
|
|
361
|
-
i0.ɵɵelementStart(1, "button",
|
|
362
|
-
i0.ɵɵlistener("click", function
|
|
363
|
-
i0.ɵɵelement(2, "i",
|
|
364
|
-
i0.ɵɵelementEnd();
|
|
365
|
-
i0.ɵɵelementStart(3, "button",
|
|
366
|
-
i0.ɵɵlistener("click", function
|
|
367
|
-
i0.ɵɵelement(4, "i",
|
|
366
|
+
i0.ɵɵelementStart(0, "div", 106);
|
|
367
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_15_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r16); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
368
|
+
i0.ɵɵelementStart(1, "button", 107);
|
|
369
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_15_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r16); const param_r15 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.editParameter(param_r15)); });
|
|
370
|
+
i0.ɵɵelement(2, "i", 108);
|
|
371
|
+
i0.ɵɵelementEnd();
|
|
372
|
+
i0.ɵɵelementStart(3, "button", 109);
|
|
373
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_15_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r16); const param_r15 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.deleteParameter(param_r15)); });
|
|
374
|
+
i0.ɵɵelement(4, "i", 110);
|
|
368
375
|
i0.ɵɵelementEnd()();
|
|
369
376
|
} }
|
|
370
|
-
function
|
|
377
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_For_3_Template(rf, ctx) { if (rf & 1) {
|
|
371
378
|
const _r14 = i0.ɵɵgetCurrentView();
|
|
372
|
-
i0.ɵɵelementStart(0, "div",
|
|
373
|
-
i0.ɵɵlistener("click", function
|
|
374
|
-
i0.ɵɵelementStart(1, "div",
|
|
375
|
-
i0.ɵɵelement(3, "i",
|
|
379
|
+
i0.ɵɵelementStart(0, "div", 94);
|
|
380
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_For_3_Template_div_click_0_listener() { const param_r15 = i0.ɵɵrestoreView(_r14).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.editParameter(param_r15)); });
|
|
381
|
+
i0.ɵɵelementStart(1, "div", 95)(2, "div", 96);
|
|
382
|
+
i0.ɵɵelement(3, "i", 97);
|
|
376
383
|
i0.ɵɵtext(4);
|
|
377
384
|
i0.ɵɵelementEnd();
|
|
378
|
-
i0.ɵɵelementStart(5, "div",
|
|
379
|
-
i0.ɵɵconditionalCreate(6,
|
|
385
|
+
i0.ɵɵelementStart(5, "div", 98);
|
|
386
|
+
i0.ɵɵconditionalCreate(6, MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_6_Template, 2, 0, "span", 99);
|
|
380
387
|
i0.ɵɵelementEnd()();
|
|
381
|
-
i0.ɵɵelementStart(7, "div",
|
|
382
|
-
i0.ɵɵconditionalCreate(8,
|
|
383
|
-
i0.ɵɵelementStart(9, "div",
|
|
388
|
+
i0.ɵɵelementStart(7, "div", 100);
|
|
389
|
+
i0.ɵɵconditionalCreate(8, MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_8_Template, 2, 1, "div", 101);
|
|
390
|
+
i0.ɵɵelementStart(9, "div", 102)(10, "span", 103)(11, "strong");
|
|
384
391
|
i0.ɵɵtext(12, "Type:");
|
|
385
392
|
i0.ɵɵelementEnd();
|
|
386
393
|
i0.ɵɵtext(13);
|
|
387
394
|
i0.ɵɵelementEnd();
|
|
388
|
-
i0.ɵɵconditionalCreate(14,
|
|
395
|
+
i0.ɵɵconditionalCreate(14, MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_14_Template, 5, 1, "span", 103);
|
|
389
396
|
i0.ɵɵelementEnd()();
|
|
390
|
-
i0.ɵɵconditionalCreate(15,
|
|
397
|
+
i0.ɵɵconditionalCreate(15, MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_15_Template, 5, 0, "div", 104);
|
|
391
398
|
i0.ɵɵelementEnd();
|
|
392
399
|
} if (rf & 2) {
|
|
393
400
|
const param_r15 = ctx.$implicit;
|
|
@@ -406,10 +413,10 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4
|
|
|
406
413
|
i0.ɵɵadvance();
|
|
407
414
|
i0.ɵɵconditional(ctx_r2.EditMode ? 15 : -1);
|
|
408
415
|
} }
|
|
409
|
-
function
|
|
410
|
-
i0.ɵɵconditionalCreate(0,
|
|
411
|
-
i0.ɵɵelementStart(1, "div",
|
|
412
|
-
i0.ɵɵrepeaterCreate(2,
|
|
416
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
417
|
+
i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_Conditional_0_Template, 4, 0, "div", 91);
|
|
418
|
+
i0.ɵɵelementStart(1, "div", 92);
|
|
419
|
+
i0.ɵɵrepeaterCreate(2, MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_For_3_Template, 16, 8, "div", 93, _forTrack1);
|
|
413
420
|
i0.ɵɵelementEnd();
|
|
414
421
|
} if (rf & 2) {
|
|
415
422
|
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
@@ -417,19 +424,19 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4
|
|
|
417
424
|
i0.ɵɵadvance(2);
|
|
418
425
|
i0.ɵɵrepeater(ctx_r2.queryParameters);
|
|
419
426
|
} }
|
|
420
|
-
function
|
|
421
|
-
i0.ɵɵconditionalCreate(0,
|
|
427
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
428
|
+
i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_0_Template, 7, 1, "div", 84)(1, MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Conditional_1_Template, 4, 1);
|
|
422
429
|
} if (rf & 2) {
|
|
423
430
|
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
424
431
|
i0.ɵɵconditional(ctx_r2.queryParameters.length === 0 ? 0 : 1);
|
|
425
432
|
} }
|
|
426
|
-
function
|
|
433
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Template(rf, ctx) { if (rf & 1) {
|
|
427
434
|
const _r11 = i0.ɵɵgetCurrentView();
|
|
428
|
-
i0.ɵɵelementStart(0, "mj-accordion-panel",
|
|
429
|
-
i0.ɵɵtwoWayListener("ExpandedChange", function
|
|
430
|
-
i0.ɵɵtemplate(1,
|
|
431
|
-
i0.ɵɵelementStart(2, "div",
|
|
432
|
-
i0.ɵɵconditionalCreate(3,
|
|
435
|
+
i0.ɵɵelementStart(0, "mj-accordion-panel", 25);
|
|
436
|
+
i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.parametersPanelExpanded, $event) || (ctx_r2.parametersPanelExpanded = $event); return i0.ɵɵresetView($event); });
|
|
437
|
+
i0.ɵɵtemplate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_40_ng_template_1_Template, 4, 1, "ng-template", 26);
|
|
438
|
+
i0.ɵɵelementStart(2, "div", 35);
|
|
439
|
+
i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_3_Template, 2, 0, "div", 80)(4, MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4_Template, 2, 1);
|
|
433
440
|
i0.ɵɵelementEnd()();
|
|
434
441
|
} if (rf & 2) {
|
|
435
442
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
@@ -437,8 +444,8 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Template(rf,
|
|
|
437
444
|
i0.ɵɵadvance(3);
|
|
438
445
|
i0.ɵɵconditional(ctx_r2.isLoadingParameters ? 3 : 4);
|
|
439
446
|
} }
|
|
440
|
-
function
|
|
441
|
-
i0.ɵɵelementStart(0, "span",
|
|
447
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_41_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
448
|
+
i0.ɵɵelementStart(0, "span", 82);
|
|
442
449
|
i0.ɵɵtext(1);
|
|
443
450
|
i0.ɵɵelementEnd();
|
|
444
451
|
} if (rf & 2) {
|
|
@@ -446,56 +453,56 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_40_ng_template_1
|
|
|
446
453
|
i0.ɵɵadvance();
|
|
447
454
|
i0.ɵɵtextInterpolate(ctx_r2.queryFields.length);
|
|
448
455
|
} }
|
|
449
|
-
function
|
|
450
|
-
i0.ɵɵelementStart(0, "span",
|
|
451
|
-
i0.ɵɵelement(1, "i",
|
|
456
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_41_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
457
|
+
i0.ɵɵelementStart(0, "span", 62);
|
|
458
|
+
i0.ɵɵelement(1, "i", 111);
|
|
452
459
|
i0.ɵɵtext(2, " Fields ");
|
|
453
|
-
i0.ɵɵconditionalCreate(3,
|
|
460
|
+
i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_41_ng_template_1_Conditional_3_Template, 2, 1, "span", 82);
|
|
454
461
|
i0.ɵɵelementEnd();
|
|
455
462
|
} if (rf & 2) {
|
|
456
463
|
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
457
464
|
i0.ɵɵadvance(3);
|
|
458
465
|
i0.ɵɵconditional(ctx_r2.queryFields.length > 0 ? 3 : -1);
|
|
459
466
|
} }
|
|
460
|
-
function
|
|
461
|
-
i0.ɵɵelementStart(0, "div",
|
|
462
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
467
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
468
|
+
i0.ɵɵelementStart(0, "div", 80);
|
|
469
|
+
i0.ɵɵelement(1, "mj-loading", 112);
|
|
463
470
|
i0.ɵɵelementEnd();
|
|
464
471
|
} }
|
|
465
|
-
function
|
|
472
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Conditional_0_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
466
473
|
const _r18 = i0.ɵɵgetCurrentView();
|
|
467
|
-
i0.ɵɵelementStart(0, "button",
|
|
468
|
-
i0.ɵɵlistener("click", function
|
|
469
|
-
i0.ɵɵelement(1, "i",
|
|
474
|
+
i0.ɵɵelementStart(0, "button", 89);
|
|
475
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Conditional_0_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r18); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.addField()); });
|
|
476
|
+
i0.ɵɵelement(1, "i", 90);
|
|
470
477
|
i0.ɵɵtext(2, " Add First Field ");
|
|
471
478
|
i0.ɵɵelementEnd();
|
|
472
479
|
} }
|
|
473
|
-
function
|
|
474
|
-
i0.ɵɵelementStart(0, "div",
|
|
475
|
-
i0.ɵɵelement(1, "i",
|
|
476
|
-
i0.ɵɵelementStart(2, "div",
|
|
480
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
481
|
+
i0.ɵɵelementStart(0, "div", 84);
|
|
482
|
+
i0.ɵɵelement(1, "i", 113);
|
|
483
|
+
i0.ɵɵelementStart(2, "div", 86);
|
|
477
484
|
i0.ɵɵtext(3, "No Fields Defined");
|
|
478
485
|
i0.ɵɵelementEnd();
|
|
479
|
-
i0.ɵɵelementStart(4, "div",
|
|
486
|
+
i0.ɵɵelementStart(4, "div", 87);
|
|
480
487
|
i0.ɵɵtext(5, " Define output fields for your query results. ");
|
|
481
488
|
i0.ɵɵelementEnd();
|
|
482
|
-
i0.ɵɵconditionalCreate(6,
|
|
489
|
+
i0.ɵɵconditionalCreate(6, MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Conditional_0_Conditional_6_Template, 3, 0, "button", 88);
|
|
483
490
|
i0.ɵɵelementEnd();
|
|
484
491
|
} if (rf & 2) {
|
|
485
492
|
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
486
493
|
i0.ɵɵadvance(6);
|
|
487
494
|
i0.ɵɵconditional(ctx_r2.EditMode ? 6 : -1);
|
|
488
495
|
} }
|
|
489
|
-
function
|
|
496
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
490
497
|
const _r19 = i0.ɵɵgetCurrentView();
|
|
491
|
-
i0.ɵɵelementStart(0, "div",
|
|
492
|
-
i0.ɵɵlistener("click", function
|
|
493
|
-
i0.ɵɵelement(2, "i",
|
|
498
|
+
i0.ɵɵelementStart(0, "div", 91)(1, "button", 89);
|
|
499
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Conditional_1_Conditional_0_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r19); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.addField()); });
|
|
500
|
+
i0.ɵɵelement(2, "i", 90);
|
|
494
501
|
i0.ɵɵtext(3, " Add Field ");
|
|
495
502
|
i0.ɵɵelementEnd()();
|
|
496
503
|
} }
|
|
497
|
-
function
|
|
498
|
-
i0.ɵɵelementStart(0, "span",
|
|
504
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Conditional_1_For_3_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
505
|
+
i0.ɵɵelementStart(0, "span", 117);
|
|
499
506
|
i0.ɵɵtext(1);
|
|
500
507
|
i0.ɵɵelementEnd();
|
|
501
508
|
} if (rf & 2) {
|
|
@@ -503,8 +510,8 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4
|
|
|
503
510
|
i0.ɵɵadvance();
|
|
504
511
|
i0.ɵɵtextInterpolate1("#", field_r20.Sequence);
|
|
505
512
|
} }
|
|
506
|
-
function
|
|
507
|
-
i0.ɵɵelementStart(0, "div",
|
|
513
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Conditional_1_For_3_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
514
|
+
i0.ɵɵelementStart(0, "div", 101);
|
|
508
515
|
i0.ɵɵtext(1);
|
|
509
516
|
i0.ɵɵelementEnd();
|
|
510
517
|
} if (rf & 2) {
|
|
@@ -512,30 +519,30 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4
|
|
|
512
519
|
i0.ɵɵadvance();
|
|
513
520
|
i0.ɵɵtextInterpolate(field_r20.Description);
|
|
514
521
|
} }
|
|
515
|
-
function
|
|
522
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Conditional_1_For_3_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
516
523
|
const _r21 = i0.ɵɵgetCurrentView();
|
|
517
|
-
i0.ɵɵelementStart(0, "div",
|
|
518
|
-
i0.ɵɵlistener("click", function
|
|
519
|
-
i0.ɵɵelement(2, "i",
|
|
524
|
+
i0.ɵɵelementStart(0, "div", 119)(1, "button", 120);
|
|
525
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Conditional_1_For_3_Conditional_15_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r21); const field_r20 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.deleteField(field_r20)); });
|
|
526
|
+
i0.ɵɵelement(2, "i", 110);
|
|
520
527
|
i0.ɵɵelementEnd()();
|
|
521
528
|
} }
|
|
522
|
-
function
|
|
523
|
-
i0.ɵɵelementStart(0, "div",
|
|
524
|
-
i0.ɵɵelement(3, "i",
|
|
529
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Conditional_1_For_3_Template(rf, ctx) { if (rf & 1) {
|
|
530
|
+
i0.ɵɵelementStart(0, "div", 114)(1, "div", 95)(2, "div", 96);
|
|
531
|
+
i0.ɵɵelement(3, "i", 115);
|
|
525
532
|
i0.ɵɵtext(4);
|
|
526
533
|
i0.ɵɵelementEnd();
|
|
527
|
-
i0.ɵɵelementStart(5, "div",
|
|
534
|
+
i0.ɵɵelementStart(5, "div", 98)(6, "span", 116);
|
|
528
535
|
i0.ɵɵtext(7);
|
|
529
536
|
i0.ɵɵelementEnd();
|
|
530
|
-
i0.ɵɵconditionalCreate(8,
|
|
537
|
+
i0.ɵɵconditionalCreate(8, MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Conditional_1_For_3_Conditional_8_Template, 2, 1, "span", 117);
|
|
531
538
|
i0.ɵɵelementEnd()();
|
|
532
|
-
i0.ɵɵelementStart(9, "div",
|
|
533
|
-
i0.ɵɵconditionalCreate(10,
|
|
534
|
-
i0.ɵɵelementStart(11, "div",
|
|
535
|
-
i0.ɵɵelement(13, "i",
|
|
539
|
+
i0.ɵɵelementStart(9, "div", 100);
|
|
540
|
+
i0.ɵɵconditionalCreate(10, MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Conditional_1_For_3_Conditional_10_Template, 2, 1, "div", 101);
|
|
541
|
+
i0.ɵɵelementStart(11, "div", 102)(12, "span", 103);
|
|
542
|
+
i0.ɵɵelement(13, "i", 118);
|
|
536
543
|
i0.ɵɵtext(14);
|
|
537
544
|
i0.ɵɵelementEnd()()();
|
|
538
|
-
i0.ɵɵconditionalCreate(15,
|
|
545
|
+
i0.ɵɵconditionalCreate(15, MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Conditional_1_For_3_Conditional_15_Template, 3, 0, "div", 119);
|
|
539
546
|
i0.ɵɵelementEnd();
|
|
540
547
|
} if (rf & 2) {
|
|
541
548
|
const field_r20 = ctx.$implicit;
|
|
@@ -553,10 +560,10 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4
|
|
|
553
560
|
i0.ɵɵadvance();
|
|
554
561
|
i0.ɵɵconditional(ctx_r2.EditMode ? 15 : -1);
|
|
555
562
|
} }
|
|
556
|
-
function
|
|
557
|
-
i0.ɵɵconditionalCreate(0,
|
|
558
|
-
i0.ɵɵelementStart(1, "div",
|
|
559
|
-
i0.ɵɵrepeaterCreate(2,
|
|
563
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
564
|
+
i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Conditional_1_Conditional_0_Template, 4, 0, "div", 91);
|
|
565
|
+
i0.ɵɵelementStart(1, "div", 92);
|
|
566
|
+
i0.ɵɵrepeaterCreate(2, MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Conditional_1_For_3_Template, 16, 6, "div", 114, _forTrack2);
|
|
560
567
|
i0.ɵɵelementEnd();
|
|
561
568
|
} if (rf & 2) {
|
|
562
569
|
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
@@ -564,19 +571,19 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4
|
|
|
564
571
|
i0.ɵɵadvance(2);
|
|
565
572
|
i0.ɵɵrepeater(ctx_r2.queryFields);
|
|
566
573
|
} }
|
|
567
|
-
function
|
|
568
|
-
i0.ɵɵconditionalCreate(0,
|
|
574
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
575
|
+
i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Conditional_0_Template, 7, 1, "div", 84)(1, MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Conditional_1_Template, 4, 1);
|
|
569
576
|
} if (rf & 2) {
|
|
570
577
|
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
571
578
|
i0.ɵɵconditional(ctx_r2.queryFields.length === 0 ? 0 : 1);
|
|
572
579
|
} }
|
|
573
|
-
function
|
|
580
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_41_Template(rf, ctx) { if (rf & 1) {
|
|
574
581
|
const _r17 = i0.ɵɵgetCurrentView();
|
|
575
|
-
i0.ɵɵelementStart(0, "mj-accordion-panel",
|
|
576
|
-
i0.ɵɵtwoWayListener("ExpandedChange", function
|
|
577
|
-
i0.ɵɵtemplate(1,
|
|
578
|
-
i0.ɵɵelementStart(2, "div",
|
|
579
|
-
i0.ɵɵconditionalCreate(3,
|
|
582
|
+
i0.ɵɵelementStart(0, "mj-accordion-panel", 25);
|
|
583
|
+
i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_41_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.fieldsPanelExpanded, $event) || (ctx_r2.fieldsPanelExpanded = $event); return i0.ɵɵresetView($event); });
|
|
584
|
+
i0.ɵɵtemplate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_41_ng_template_1_Template, 4, 1, "ng-template", 26);
|
|
585
|
+
i0.ɵɵelementStart(2, "div", 35);
|
|
586
|
+
i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_3_Template, 2, 0, "div", 80)(4, MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4_Template, 2, 1);
|
|
580
587
|
i0.ɵɵelementEnd()();
|
|
581
588
|
} if (rf & 2) {
|
|
582
589
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
@@ -584,11 +591,11 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Template(rf,
|
|
|
584
591
|
i0.ɵɵadvance(3);
|
|
585
592
|
i0.ɵɵconditional(ctx_r2.isLoadingFields ? 3 : 4);
|
|
586
593
|
} }
|
|
587
|
-
function
|
|
588
|
-
i0.ɵɵelementStart(0, "span",
|
|
589
|
-
i0.ɵɵelement(1, "i",
|
|
594
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_42_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
595
|
+
i0.ɵɵelementStart(0, "span", 62);
|
|
596
|
+
i0.ɵɵelement(1, "i", 123);
|
|
590
597
|
i0.ɵɵtext(2, " Dependent Queries ");
|
|
591
|
-
i0.ɵɵelementStart(3, "span",
|
|
598
|
+
i0.ɵɵelementStart(3, "span", 82);
|
|
592
599
|
i0.ɵɵtext(4);
|
|
593
600
|
i0.ɵɵelementEnd()();
|
|
594
601
|
} if (rf & 2) {
|
|
@@ -596,9 +603,9 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_41_ng_template_1
|
|
|
596
603
|
i0.ɵɵadvance(4);
|
|
597
604
|
i0.ɵɵtextInterpolate(ctx_r2.DependentQueries.length);
|
|
598
605
|
} }
|
|
599
|
-
function
|
|
600
|
-
i0.ɵɵelementStart(0, "div",
|
|
601
|
-
i0.ɵɵelement(2, "i",
|
|
606
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_42_For_10_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
607
|
+
i0.ɵɵelementStart(0, "div", 102)(1, "span", 103);
|
|
608
|
+
i0.ɵɵelement(2, "i", 129);
|
|
602
609
|
i0.ɵɵtext(3);
|
|
603
610
|
i0.ɵɵelementEnd()();
|
|
604
611
|
} if (rf & 2) {
|
|
@@ -606,11 +613,11 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_41_For_10_Condit
|
|
|
606
613
|
i0.ɵɵadvance(3);
|
|
607
614
|
i0.ɵɵtextInterpolate1(" ", dep_r24.ReferencePath, " ");
|
|
608
615
|
} }
|
|
609
|
-
function
|
|
610
|
-
i0.ɵɵelementStart(0, "div",
|
|
616
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_42_For_10_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
617
|
+
i0.ɵɵelementStart(0, "div", 102)(1, "span", 103)(2, "strong");
|
|
611
618
|
i0.ɵɵtext(3, "Alias:");
|
|
612
619
|
i0.ɵɵelementEnd();
|
|
613
|
-
i0.ɵɵelementStart(4, "code",
|
|
620
|
+
i0.ɵɵelementStart(4, "code", 105);
|
|
614
621
|
i0.ɵɵtext(5);
|
|
615
622
|
i0.ɵɵelementEnd()()();
|
|
616
623
|
} if (rf & 2) {
|
|
@@ -618,20 +625,20 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_41_For_10_Condit
|
|
|
618
625
|
i0.ɵɵadvance(5);
|
|
619
626
|
i0.ɵɵtextInterpolate(dep_r24.Alias);
|
|
620
627
|
} }
|
|
621
|
-
function
|
|
628
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_42_For_10_Template(rf, ctx) { if (rf & 1) {
|
|
622
629
|
const _r23 = i0.ɵɵgetCurrentView();
|
|
623
|
-
i0.ɵɵelementStart(0, "div",
|
|
624
|
-
i0.ɵɵlistener("click", function
|
|
625
|
-
i0.ɵɵelementStart(1, "div",
|
|
626
|
-
i0.ɵɵelement(3, "i",
|
|
630
|
+
i0.ɵɵelementStart(0, "div", 124);
|
|
631
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_42_For_10_Template_div_click_0_listener() { const dep_r24 = i0.ɵɵrestoreView(_r23).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onDependentQueryClick(dep_r24)); });
|
|
632
|
+
i0.ɵɵelementStart(1, "div", 95)(2, "div", 96);
|
|
633
|
+
i0.ɵɵelement(3, "i", 125);
|
|
627
634
|
i0.ɵɵtext(4);
|
|
628
635
|
i0.ɵɵelementEnd()();
|
|
629
|
-
i0.ɵɵelementStart(5, "div",
|
|
630
|
-
i0.ɵɵconditionalCreate(6,
|
|
631
|
-
i0.ɵɵconditionalCreate(7,
|
|
636
|
+
i0.ɵɵelementStart(5, "div", 100);
|
|
637
|
+
i0.ɵɵconditionalCreate(6, MJQueryFormComponentExtended_Conditional_1_Conditional_42_For_10_Conditional_6_Template, 4, 1, "div", 102);
|
|
638
|
+
i0.ɵɵconditionalCreate(7, MJQueryFormComponentExtended_Conditional_1_Conditional_42_For_10_Conditional_7_Template, 6, 1, "div", 102);
|
|
632
639
|
i0.ɵɵelementEnd();
|
|
633
|
-
i0.ɵɵelementStart(8, "div",
|
|
634
|
-
i0.ɵɵelement(10, "i",
|
|
640
|
+
i0.ɵɵelementStart(8, "div", 126)(9, "span", 127);
|
|
641
|
+
i0.ɵɵelement(10, "i", 128);
|
|
635
642
|
i0.ɵɵtext(11, " Open ");
|
|
636
643
|
i0.ɵɵelementEnd()()();
|
|
637
644
|
} if (rf & 2) {
|
|
@@ -643,20 +650,20 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_41_For_10_Templa
|
|
|
643
650
|
i0.ɵɵadvance();
|
|
644
651
|
i0.ɵɵconditional(dep_r24.Alias ? 7 : -1);
|
|
645
652
|
} }
|
|
646
|
-
function
|
|
653
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_42_Template(rf, ctx) { if (rf & 1) {
|
|
647
654
|
const _r22 = i0.ɵɵgetCurrentView();
|
|
648
|
-
i0.ɵɵelementStart(0, "mj-accordion-panel",
|
|
649
|
-
i0.ɵɵtwoWayListener("ExpandedChange", function
|
|
650
|
-
i0.ɵɵtemplate(1,
|
|
651
|
-
i0.ɵɵelementStart(2, "div",
|
|
655
|
+
i0.ɵɵelementStart(0, "mj-accordion-panel", 25);
|
|
656
|
+
i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_42_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r22); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.dependentsPanelExpanded, $event) || (ctx_r2.dependentsPanelExpanded = $event); return i0.ɵɵresetView($event); });
|
|
657
|
+
i0.ɵɵtemplate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_42_ng_template_1_Template, 5, 1, "ng-template", 26);
|
|
658
|
+
i0.ɵɵelementStart(2, "div", 35)(3, "div", 121);
|
|
652
659
|
i0.ɵɵtext(4, " These queries reference this query via ");
|
|
653
660
|
i0.ɵɵelementStart(5, "code");
|
|
654
661
|
i0.ɵɵtext(6);
|
|
655
662
|
i0.ɵɵelementEnd();
|
|
656
663
|
i0.ɵɵtext(7, " composition syntax. ");
|
|
657
664
|
i0.ɵɵelementEnd();
|
|
658
|
-
i0.ɵɵelementStart(8, "div",
|
|
659
|
-
i0.ɵɵrepeaterCreate(9,
|
|
665
|
+
i0.ɵɵelementStart(8, "div", 92);
|
|
666
|
+
i0.ɵɵrepeaterCreate(9, MJQueryFormComponentExtended_Conditional_1_Conditional_42_For_10_Template, 12, 3, "div", 122, _forTrack2);
|
|
660
667
|
i0.ɵɵelementEnd()()();
|
|
661
668
|
} if (rf & 2) {
|
|
662
669
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
@@ -666,8 +673,8 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_41_Template(rf,
|
|
|
666
673
|
i0.ɵɵadvance(3);
|
|
667
674
|
i0.ɵɵrepeater(ctx_r2.DependentQueries);
|
|
668
675
|
} }
|
|
669
|
-
function
|
|
670
|
-
i0.ɵɵelementStart(0, "span",
|
|
676
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_43_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
677
|
+
i0.ɵɵelementStart(0, "span", 82);
|
|
671
678
|
i0.ɵɵtext(1);
|
|
672
679
|
i0.ɵɵelementEnd();
|
|
673
680
|
} if (rf & 2) {
|
|
@@ -675,58 +682,58 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_42_ng_template_1
|
|
|
675
682
|
i0.ɵɵadvance();
|
|
676
683
|
i0.ɵɵtextInterpolate(ctx_r2.queryEntities.length);
|
|
677
684
|
} }
|
|
678
|
-
function
|
|
679
|
-
i0.ɵɵelementStart(0, "span",
|
|
680
|
-
i0.ɵɵelement(1, "i",
|
|
685
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_43_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
686
|
+
i0.ɵɵelementStart(0, "span", 62);
|
|
687
|
+
i0.ɵɵelement(1, "i", 130);
|
|
681
688
|
i0.ɵɵtext(2, " Entities ");
|
|
682
|
-
i0.ɵɵconditionalCreate(3,
|
|
689
|
+
i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_43_ng_template_1_Conditional_3_Template, 2, 1, "span", 82);
|
|
683
690
|
i0.ɵɵelementEnd();
|
|
684
691
|
} if (rf & 2) {
|
|
685
692
|
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
686
693
|
i0.ɵɵadvance(3);
|
|
687
694
|
i0.ɵɵconditional(ctx_r2.queryEntities.length > 0 ? 3 : -1);
|
|
688
695
|
} }
|
|
689
|
-
function
|
|
690
|
-
i0.ɵɵelementStart(0, "div",
|
|
691
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
696
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
697
|
+
i0.ɵɵelementStart(0, "div", 80);
|
|
698
|
+
i0.ɵɵelement(1, "mj-loading", 131);
|
|
692
699
|
i0.ɵɵelementEnd();
|
|
693
700
|
} }
|
|
694
|
-
function
|
|
701
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_0_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
695
702
|
const _r26 = i0.ɵɵgetCurrentView();
|
|
696
|
-
i0.ɵɵelementStart(0, "button",
|
|
697
|
-
i0.ɵɵlistener("click", function
|
|
698
|
-
i0.ɵɵelement(1, "i",
|
|
703
|
+
i0.ɵɵelementStart(0, "button", 89);
|
|
704
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_0_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r26); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.addEntity()); });
|
|
705
|
+
i0.ɵɵelement(1, "i", 90);
|
|
699
706
|
i0.ɵɵtext(2, " Add First Entity ");
|
|
700
707
|
i0.ɵɵelementEnd();
|
|
701
708
|
} }
|
|
702
|
-
function
|
|
703
|
-
i0.ɵɵelementStart(0, "div",
|
|
704
|
-
i0.ɵɵelement(1, "i",
|
|
705
|
-
i0.ɵɵelementStart(2, "div",
|
|
709
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
710
|
+
i0.ɵɵelementStart(0, "div", 84);
|
|
711
|
+
i0.ɵɵelement(1, "i", 132);
|
|
712
|
+
i0.ɵɵelementStart(2, "div", 86);
|
|
706
713
|
i0.ɵɵtext(3, "No Entities Tracked");
|
|
707
714
|
i0.ɵɵelementEnd();
|
|
708
|
-
i0.ɵɵelementStart(4, "div",
|
|
715
|
+
i0.ɵɵelementStart(4, "div", 87);
|
|
709
716
|
i0.ɵɵtext(5, " Track which entities this query uses for documentation. ");
|
|
710
717
|
i0.ɵɵelementEnd();
|
|
711
|
-
i0.ɵɵconditionalCreate(6,
|
|
718
|
+
i0.ɵɵconditionalCreate(6, MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_0_Conditional_6_Template, 3, 0, "button", 88);
|
|
712
719
|
i0.ɵɵelementEnd();
|
|
713
720
|
} if (rf & 2) {
|
|
714
721
|
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
715
722
|
i0.ɵɵadvance(6);
|
|
716
723
|
i0.ɵɵconditional(ctx_r2.EditMode ? 6 : -1);
|
|
717
724
|
} }
|
|
718
|
-
function
|
|
725
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
719
726
|
const _r27 = i0.ɵɵgetCurrentView();
|
|
720
|
-
i0.ɵɵelementStart(0, "div",
|
|
721
|
-
i0.ɵɵlistener("click", function
|
|
722
|
-
i0.ɵɵelement(2, "i",
|
|
727
|
+
i0.ɵɵelementStart(0, "div", 91)(1, "button", 89);
|
|
728
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_1_Conditional_0_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r27); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.addEntity()); });
|
|
729
|
+
i0.ɵɵelement(2, "i", 90);
|
|
723
730
|
i0.ɵɵtext(3, " Add Entity ");
|
|
724
731
|
i0.ɵɵelementEnd()();
|
|
725
732
|
} }
|
|
726
|
-
function
|
|
733
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_1_For_3_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
727
734
|
const _r28 = i0.ɵɵgetCurrentView();
|
|
728
|
-
i0.ɵɵelementStart(0, "div",
|
|
729
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
735
|
+
i0.ɵɵelementStart(0, "div", 134)(1, "mj-dropdown", 135);
|
|
736
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_1_For_3_Conditional_5_Template_mj_dropdown_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r28); const entity_r29 = i0.ɵɵnextContext().$implicit; i0.ɵɵtwoWayBindingSet(entity_r29.EntityID, $event) || (entity_r29.EntityID = $event); return i0.ɵɵresetView($event); });
|
|
730
737
|
i0.ɵɵelementEnd()();
|
|
731
738
|
} if (rf & 2) {
|
|
732
739
|
const entity_r29 = i0.ɵɵnextContext().$implicit;
|
|
@@ -735,28 +742,28 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_42_Conditional_4
|
|
|
735
742
|
i0.ɵɵtwoWayProperty("ngModel", entity_r29.EntityID);
|
|
736
743
|
i0.ɵɵproperty("name", "entity_" + entity_r29.ID)("Data", ctx_r2.getEntityOptions())("ValuePrimitive", true);
|
|
737
744
|
} }
|
|
738
|
-
function
|
|
739
|
-
i0.ɵɵelementStart(0, "div",
|
|
740
|
-
i0.ɵɵelement(3, "i",
|
|
745
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_1_For_3_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
746
|
+
i0.ɵɵelementStart(0, "div", 100)(1, "div", 102)(2, "span", 103);
|
|
747
|
+
i0.ɵɵelement(3, "i", 136);
|
|
741
748
|
i0.ɵɵtext(4, " Data Source ");
|
|
742
749
|
i0.ɵɵelementEnd()()();
|
|
743
750
|
} }
|
|
744
|
-
function
|
|
751
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_1_For_3_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
745
752
|
const _r30 = i0.ɵɵgetCurrentView();
|
|
746
|
-
i0.ɵɵelementStart(0, "div",
|
|
747
|
-
i0.ɵɵlistener("click", function
|
|
748
|
-
i0.ɵɵelement(2, "i",
|
|
753
|
+
i0.ɵɵelementStart(0, "div", 119)(1, "button", 137);
|
|
754
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_1_For_3_Conditional_7_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r30); const entity_r29 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.deleteEntity(entity_r29)); });
|
|
755
|
+
i0.ɵɵelement(2, "i", 110);
|
|
749
756
|
i0.ɵɵelementEnd()();
|
|
750
757
|
} }
|
|
751
|
-
function
|
|
752
|
-
i0.ɵɵelementStart(0, "div",
|
|
753
|
-
i0.ɵɵelement(3, "i",
|
|
758
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_1_For_3_Template(rf, ctx) { if (rf & 1) {
|
|
759
|
+
i0.ɵɵelementStart(0, "div", 114)(1, "div", 95)(2, "div", 96);
|
|
760
|
+
i0.ɵɵelement(3, "i", 133);
|
|
754
761
|
i0.ɵɵtext(4);
|
|
755
762
|
i0.ɵɵelementEnd();
|
|
756
|
-
i0.ɵɵconditionalCreate(5,
|
|
763
|
+
i0.ɵɵconditionalCreate(5, MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_1_For_3_Conditional_5_Template, 2, 4, "div", 134);
|
|
757
764
|
i0.ɵɵelementEnd();
|
|
758
|
-
i0.ɵɵconditionalCreate(6,
|
|
759
|
-
i0.ɵɵconditionalCreate(7,
|
|
765
|
+
i0.ɵɵconditionalCreate(6, MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_1_For_3_Conditional_6_Template, 5, 0, "div", 100);
|
|
766
|
+
i0.ɵɵconditionalCreate(7, MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_1_For_3_Conditional_7_Template, 3, 0, "div", 119);
|
|
760
767
|
i0.ɵɵelementEnd();
|
|
761
768
|
} if (rf & 2) {
|
|
762
769
|
const entity_r29 = ctx.$implicit;
|
|
@@ -770,10 +777,10 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_42_Conditional_4
|
|
|
770
777
|
i0.ɵɵadvance();
|
|
771
778
|
i0.ɵɵconditional(ctx_r2.EditMode ? 7 : -1);
|
|
772
779
|
} }
|
|
773
|
-
function
|
|
774
|
-
i0.ɵɵconditionalCreate(0,
|
|
775
|
-
i0.ɵɵelementStart(1, "div",
|
|
776
|
-
i0.ɵɵrepeaterCreate(2,
|
|
780
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
781
|
+
i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_1_Conditional_0_Template, 4, 0, "div", 91);
|
|
782
|
+
i0.ɵɵelementStart(1, "div", 92);
|
|
783
|
+
i0.ɵɵrepeaterCreate(2, MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_1_For_3_Template, 8, 4, "div", 114, _forTrack2);
|
|
777
784
|
i0.ɵɵelementEnd();
|
|
778
785
|
} if (rf & 2) {
|
|
779
786
|
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
@@ -781,19 +788,19 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_42_Conditional_4
|
|
|
781
788
|
i0.ɵɵadvance(2);
|
|
782
789
|
i0.ɵɵrepeater(ctx_r2.queryEntities);
|
|
783
790
|
} }
|
|
784
|
-
function
|
|
785
|
-
i0.ɵɵconditionalCreate(0,
|
|
791
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
792
|
+
i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_0_Template, 7, 1, "div", 84)(1, MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Conditional_1_Template, 4, 1);
|
|
786
793
|
} if (rf & 2) {
|
|
787
794
|
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
788
795
|
i0.ɵɵconditional(ctx_r2.queryEntities.length === 0 ? 0 : 1);
|
|
789
796
|
} }
|
|
790
|
-
function
|
|
797
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_43_Template(rf, ctx) { if (rf & 1) {
|
|
791
798
|
const _r25 = i0.ɵɵgetCurrentView();
|
|
792
|
-
i0.ɵɵelementStart(0, "mj-accordion-panel",
|
|
793
|
-
i0.ɵɵtwoWayListener("ExpandedChange", function
|
|
794
|
-
i0.ɵɵtemplate(1,
|
|
795
|
-
i0.ɵɵelementStart(2, "div",
|
|
796
|
-
i0.ɵɵconditionalCreate(3,
|
|
799
|
+
i0.ɵɵelementStart(0, "mj-accordion-panel", 25);
|
|
800
|
+
i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_43_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.entitiesPanelExpanded, $event) || (ctx_r2.entitiesPanelExpanded = $event); return i0.ɵɵresetView($event); });
|
|
801
|
+
i0.ɵɵtemplate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_43_ng_template_1_Template, 4, 1, "ng-template", 26);
|
|
802
|
+
i0.ɵɵelementStart(2, "div", 35);
|
|
803
|
+
i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_3_Template, 2, 0, "div", 80)(4, MJQueryFormComponentExtended_Conditional_1_Conditional_43_Conditional_4_Template, 2, 1);
|
|
797
804
|
i0.ɵɵelementEnd()();
|
|
798
805
|
} if (rf & 2) {
|
|
799
806
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
@@ -801,45 +808,177 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_42_Template(rf,
|
|
|
801
808
|
i0.ɵɵadvance(3);
|
|
802
809
|
i0.ɵɵconditional(ctx_r2.isLoadingEntities ? 3 : 4);
|
|
803
810
|
} }
|
|
804
|
-
function
|
|
805
|
-
i0.ɵɵelementStart(0, "span",
|
|
806
|
-
i0.ɵɵelement(1, "i",
|
|
811
|
+
function MJQueryFormComponentExtended_Conditional_1_ng_template_45_Template(rf, ctx) { if (rf & 1) {
|
|
812
|
+
i0.ɵɵelementStart(0, "span", 62);
|
|
813
|
+
i0.ɵɵelement(1, "i", 138);
|
|
807
814
|
i0.ɵɵtext(2, " Details ");
|
|
808
815
|
i0.ɵɵelementEnd();
|
|
809
816
|
} }
|
|
810
|
-
function
|
|
817
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_52_Template(rf, ctx) { if (rf & 1) {
|
|
811
818
|
const _r31 = i0.ɵɵgetCurrentView();
|
|
812
|
-
i0.ɵɵelementStart(0, "mj-switch",
|
|
813
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
819
|
+
i0.ɵɵelementStart(0, "mj-switch", 139);
|
|
820
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_52_Template_mj_switch_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r31); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.record.Reusable, $event) || (ctx_r2.record.Reusable = $event); return i0.ɵɵresetView($event); });
|
|
821
|
+
i0.ɵɵelementEnd();
|
|
822
|
+
i0.ɵɵelementStart(1, "div", 140);
|
|
823
|
+
i0.ɵɵtext(2, "Allow other queries to reference this query using composition syntax");
|
|
824
|
+
i0.ɵɵelementEnd();
|
|
825
|
+
} if (rf & 2) {
|
|
826
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
827
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r2.record.Reusable);
|
|
828
|
+
} }
|
|
829
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_53_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
830
|
+
i0.ɵɵelementStart(0, "span", 141);
|
|
831
|
+
i0.ɵɵelement(1, "i", 143);
|
|
832
|
+
i0.ɵɵtext(2, " Reusable");
|
|
833
|
+
i0.ɵɵelementEnd();
|
|
834
|
+
} }
|
|
835
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_53_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
836
|
+
i0.ɵɵelementStart(0, "span", 142);
|
|
837
|
+
i0.ɵɵelement(1, "i", 144);
|
|
838
|
+
i0.ɵɵtext(2, " Not Reusable");
|
|
839
|
+
i0.ɵɵelementEnd();
|
|
840
|
+
} }
|
|
841
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_53_Template(rf, ctx) { if (rf & 1) {
|
|
842
|
+
i0.ɵɵelementStart(0, "div", 40);
|
|
843
|
+
i0.ɵɵconditionalCreate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_53_Conditional_1_Template, 3, 0, "span", 141)(2, MJQueryFormComponentExtended_Conditional_1_Conditional_53_Conditional_2_Template, 3, 0, "span", 142);
|
|
844
|
+
i0.ɵɵelementEnd();
|
|
845
|
+
} if (rf & 2) {
|
|
846
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
847
|
+
i0.ɵɵadvance();
|
|
848
|
+
i0.ɵɵconditional(ctx_r2.record.Reusable ? 1 : 2);
|
|
849
|
+
} }
|
|
850
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_58_Template(rf, ctx) { if (rf & 1) {
|
|
851
|
+
const _r32 = i0.ɵɵgetCurrentView();
|
|
852
|
+
i0.ɵɵelementStart(0, "mj-switch", 145);
|
|
853
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_58_Template_mj_switch_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r32); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.record.CacheEnabled, $event) || (ctx_r2.record.CacheEnabled = $event); return i0.ɵɵresetView($event); });
|
|
854
|
+
i0.ɵɵelementEnd();
|
|
855
|
+
i0.ɵɵelementStart(1, "div", 140);
|
|
856
|
+
i0.ɵɵtext(2, "Cache query results in memory to reduce database load on repeated runs");
|
|
857
|
+
i0.ɵɵelementEnd();
|
|
858
|
+
} if (rf & 2) {
|
|
859
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
860
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r2.record.CacheEnabled);
|
|
861
|
+
} }
|
|
862
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_59_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
863
|
+
i0.ɵɵelementStart(0, "span", 141);
|
|
864
|
+
i0.ɵɵelement(1, "i", 143);
|
|
865
|
+
i0.ɵɵtext(2, " Caching On");
|
|
866
|
+
i0.ɵɵelementEnd();
|
|
867
|
+
} }
|
|
868
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_59_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
869
|
+
i0.ɵɵelementStart(0, "span", 142);
|
|
870
|
+
i0.ɵɵelement(1, "i", 144);
|
|
871
|
+
i0.ɵɵtext(2, " Caching Off");
|
|
872
|
+
i0.ɵɵelementEnd();
|
|
873
|
+
} }
|
|
874
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_59_Template(rf, ctx) { if (rf & 1) {
|
|
875
|
+
i0.ɵɵelementStart(0, "div", 40);
|
|
876
|
+
i0.ɵɵconditionalCreate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_59_Conditional_1_Template, 3, 0, "span", 141)(2, MJQueryFormComponentExtended_Conditional_1_Conditional_59_Conditional_2_Template, 3, 0, "span", 142);
|
|
877
|
+
i0.ɵɵelementEnd();
|
|
878
|
+
} if (rf & 2) {
|
|
879
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
880
|
+
i0.ɵɵadvance();
|
|
881
|
+
i0.ɵɵconditional(ctx_r2.record.CacheEnabled ? 1 : 2);
|
|
882
|
+
} }
|
|
883
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_60_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
884
|
+
const _r33 = i0.ɵɵgetCurrentView();
|
|
885
|
+
i0.ɵɵelementStart(0, "input", 147);
|
|
886
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_60_Conditional_4_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r33); const ctx_r2 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r2.record.CacheTTLMinutes, $event) || (ctx_r2.record.CacheTTLMinutes = $event); return i0.ɵɵresetView($event); });
|
|
887
|
+
i0.ɵɵelementEnd();
|
|
888
|
+
i0.ɵɵelementStart(1, "div", 140);
|
|
889
|
+
i0.ɵɵtext(2, "How long cached results remain valid. Leave blank for default TTL.");
|
|
890
|
+
i0.ɵɵelementEnd();
|
|
891
|
+
} if (rf & 2) {
|
|
892
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
893
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r2.record.CacheTTLMinutes);
|
|
894
|
+
} }
|
|
895
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_60_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
896
|
+
i0.ɵɵelementStart(0, "div", 40);
|
|
897
|
+
i0.ɵɵtext(1);
|
|
898
|
+
i0.ɵɵelementEnd();
|
|
899
|
+
} if (rf & 2) {
|
|
900
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
901
|
+
i0.ɵɵadvance();
|
|
902
|
+
i0.ɵɵtextInterpolate(ctx_r2.record.CacheTTLMinutes != null ? ctx_r2.record.CacheTTLMinutes + " min" : "Default");
|
|
903
|
+
} }
|
|
904
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_60_Template(rf, ctx) { if (rf & 1) {
|
|
905
|
+
i0.ɵɵelementStart(0, "div", 37)(1, "label", 38);
|
|
906
|
+
i0.ɵɵelement(2, "i", 146);
|
|
907
|
+
i0.ɵɵtext(3, " Cache TTL (Minutes) ");
|
|
908
|
+
i0.ɵɵelementEnd();
|
|
909
|
+
i0.ɵɵconditionalCreate(4, MJQueryFormComponentExtended_Conditional_1_Conditional_60_Conditional_4_Template, 3, 1)(5, MJQueryFormComponentExtended_Conditional_1_Conditional_60_Conditional_5_Template, 2, 1, "div", 40);
|
|
910
|
+
i0.ɵɵelementEnd();
|
|
911
|
+
} if (rf & 2) {
|
|
912
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
913
|
+
i0.ɵɵadvance(4);
|
|
914
|
+
i0.ɵɵconditional(ctx_r2.EditMode ? 4 : 5);
|
|
915
|
+
} }
|
|
916
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_65_Template(rf, ctx) { if (rf & 1) {
|
|
917
|
+
const _r34 = i0.ɵɵgetCurrentView();
|
|
918
|
+
i0.ɵɵelementStart(0, "mj-switch", 148);
|
|
919
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_65_Template_mj_switch_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r34); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.record.AuditQueryRuns, $event) || (ctx_r2.record.AuditQueryRuns = $event); return i0.ɵɵresetView($event); });
|
|
920
|
+
i0.ɵɵelementEnd();
|
|
921
|
+
i0.ɵɵelementStart(1, "div", 140);
|
|
922
|
+
i0.ɵɵtext(2, "Log all executions of this query to the Audit Log for tracking and compliance");
|
|
923
|
+
i0.ɵɵelementEnd();
|
|
924
|
+
} if (rf & 2) {
|
|
925
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
926
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r2.record.AuditQueryRuns);
|
|
927
|
+
} }
|
|
928
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_66_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
929
|
+
i0.ɵɵelementStart(0, "span", 141);
|
|
930
|
+
i0.ɵɵelement(1, "i", 143);
|
|
931
|
+
i0.ɵɵtext(2, " Auditing On");
|
|
932
|
+
i0.ɵɵelementEnd();
|
|
933
|
+
} }
|
|
934
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_66_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
935
|
+
i0.ɵɵelementStart(0, "span", 142);
|
|
936
|
+
i0.ɵɵelement(1, "i", 144);
|
|
937
|
+
i0.ɵɵtext(2, " Auditing Off");
|
|
938
|
+
i0.ɵɵelementEnd();
|
|
939
|
+
} }
|
|
940
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_66_Template(rf, ctx) { if (rf & 1) {
|
|
941
|
+
i0.ɵɵelementStart(0, "div", 40);
|
|
942
|
+
i0.ɵɵconditionalCreate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_66_Conditional_1_Template, 3, 0, "span", 141)(2, MJQueryFormComponentExtended_Conditional_1_Conditional_66_Conditional_2_Template, 3, 0, "span", 142);
|
|
943
|
+
i0.ɵɵelementEnd();
|
|
944
|
+
} if (rf & 2) {
|
|
945
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
946
|
+
i0.ɵɵadvance();
|
|
947
|
+
i0.ɵɵconditional(ctx_r2.record.AuditQueryRuns ? 1 : 2);
|
|
948
|
+
} }
|
|
949
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_71_Template(rf, ctx) { if (rf & 1) {
|
|
950
|
+
const _r35 = i0.ɵɵgetCurrentView();
|
|
951
|
+
i0.ɵɵelementStart(0, "mj-switch", 149);
|
|
952
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_71_Template_mj_switch_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r35); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.record.UsesTemplate, $event) || (ctx_r2.record.UsesTemplate = $event); return i0.ɵɵresetView($event); });
|
|
814
953
|
i0.ɵɵelementEnd();
|
|
815
954
|
} if (rf & 2) {
|
|
816
955
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
817
956
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r2.record.UsesTemplate);
|
|
818
957
|
} }
|
|
819
|
-
function
|
|
820
|
-
i0.ɵɵelementStart(0, "span",
|
|
821
|
-
i0.ɵɵelement(1, "i",
|
|
958
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_72_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
959
|
+
i0.ɵɵelementStart(0, "span", 141);
|
|
960
|
+
i0.ɵɵelement(1, "i", 143);
|
|
822
961
|
i0.ɵɵtext(2, " Uses Templates");
|
|
823
962
|
i0.ɵɵelementEnd();
|
|
824
963
|
} }
|
|
825
|
-
function
|
|
826
|
-
i0.ɵɵelementStart(0, "span",
|
|
827
|
-
i0.ɵɵelement(1, "i",
|
|
964
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_72_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
965
|
+
i0.ɵɵelementStart(0, "span", 142);
|
|
966
|
+
i0.ɵɵelement(1, "i", 144);
|
|
828
967
|
i0.ɵɵtext(2, " No Templates");
|
|
829
968
|
i0.ɵɵelementEnd();
|
|
830
969
|
} }
|
|
831
|
-
function
|
|
970
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_72_Template(rf, ctx) { if (rf & 1) {
|
|
832
971
|
i0.ɵɵelementStart(0, "div", 40);
|
|
833
|
-
i0.ɵɵconditionalCreate(1,
|
|
972
|
+
i0.ɵɵconditionalCreate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_72_Conditional_1_Template, 3, 0, "span", 141)(2, MJQueryFormComponentExtended_Conditional_1_Conditional_72_Conditional_2_Template, 3, 0, "span", 142);
|
|
834
973
|
i0.ɵɵelementEnd();
|
|
835
974
|
} if (rf & 2) {
|
|
836
975
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
837
976
|
i0.ɵɵadvance();
|
|
838
977
|
i0.ɵɵconditional(ctx_r2.record.UsesTemplate ? 1 : 2);
|
|
839
978
|
} }
|
|
840
|
-
function
|
|
841
|
-
i0.ɵɵelementStart(0, "div",
|
|
842
|
-
i0.ɵɵelement(2, "i",
|
|
979
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_85_Template(rf, ctx) { if (rf & 1) {
|
|
980
|
+
i0.ɵɵelementStart(0, "div", 37)(1, "label", 38);
|
|
981
|
+
i0.ɵɵelement(2, "i", 150);
|
|
843
982
|
i0.ɵɵtext(3, " Quality Rank ");
|
|
844
983
|
i0.ɵɵelementEnd();
|
|
845
984
|
i0.ɵɵelementStart(4, "div", 40);
|
|
@@ -850,79 +989,79 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_65_Template(rf,
|
|
|
850
989
|
i0.ɵɵadvance(5);
|
|
851
990
|
i0.ɵɵtextInterpolate1("", ctx_r2.record.QualityRank, "/10");
|
|
852
991
|
} }
|
|
853
|
-
function
|
|
854
|
-
i0.ɵɵelementStart(0, "span",
|
|
855
|
-
i0.ɵɵelement(1, "i",
|
|
992
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_86_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
993
|
+
i0.ɵɵelementStart(0, "span", 62);
|
|
994
|
+
i0.ɵɵelement(1, "i", 151);
|
|
856
995
|
i0.ɵɵtext(2, " Permissions ");
|
|
857
996
|
i0.ɵɵelementEnd();
|
|
858
997
|
} }
|
|
859
|
-
function
|
|
860
|
-
i0.ɵɵelementStart(0, "div",
|
|
861
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
998
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_86_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
999
|
+
i0.ɵɵelementStart(0, "div", 80);
|
|
1000
|
+
i0.ɵɵelement(1, "mj-loading", 152);
|
|
862
1001
|
i0.ɵɵelementEnd();
|
|
863
1002
|
} }
|
|
864
|
-
function
|
|
865
|
-
i0.ɵɵelementStart(0, "div",
|
|
866
|
-
i0.ɵɵelement(1, "i",
|
|
867
|
-
i0.ɵɵelementStart(2, "div",
|
|
1003
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_86_Conditional_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
1004
|
+
i0.ɵɵelementStart(0, "div", 84);
|
|
1005
|
+
i0.ɵɵelement(1, "i", 153);
|
|
1006
|
+
i0.ɵɵelementStart(2, "div", 86);
|
|
868
1007
|
i0.ɵɵtext(3, "No Permissions Set");
|
|
869
1008
|
i0.ɵɵelementEnd();
|
|
870
|
-
i0.ɵɵelementStart(4, "div",
|
|
1009
|
+
i0.ɵɵelementStart(4, "div", 87);
|
|
871
1010
|
i0.ɵɵtext(5, " This query uses default permissions. ");
|
|
872
1011
|
i0.ɵɵelementEnd()();
|
|
873
1012
|
} }
|
|
874
|
-
function
|
|
875
|
-
i0.ɵɵelement(0, "mj-explorer-entity-data-grid",
|
|
1013
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_86_Conditional_4_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
1014
|
+
i0.ɵɵelement(0, "mj-explorer-entity-data-grid", 154);
|
|
876
1015
|
} if (rf & 2) {
|
|
877
1016
|
const ctx_r2 = i0.ɵɵnextContext(5);
|
|
878
1017
|
i0.ɵɵproperty("Params", ctx_r2.BuildRelationshipViewParamsByEntityName("MJ: Query Permissions", "QueryID"))("NewRecordValues", ctx_r2.NewRecordValues("MJ: Query Permissions"))("AllowLoad", true)("ShowToolbar", false);
|
|
879
1018
|
} }
|
|
880
|
-
function
|
|
881
|
-
i0.ɵɵelementStart(0, "div",
|
|
882
|
-
i0.ɵɵelement(1, "i",
|
|
883
|
-
i0.ɵɵelementStart(2, "div",
|
|
1019
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_86_Conditional_4_Conditional_1_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
1020
|
+
i0.ɵɵelementStart(0, "div", 156);
|
|
1021
|
+
i0.ɵɵelement(1, "i", 157);
|
|
1022
|
+
i0.ɵɵelementStart(2, "div", 158)(3, "div", 159);
|
|
884
1023
|
i0.ɵɵtext(4);
|
|
885
1024
|
i0.ɵɵelementEnd();
|
|
886
|
-
i0.ɵɵelementStart(5, "div",
|
|
1025
|
+
i0.ɵɵelementStart(5, "div", 160);
|
|
887
1026
|
i0.ɵɵtext(6, "Role Permission");
|
|
888
1027
|
i0.ɵɵelementEnd()();
|
|
889
|
-
i0.ɵɵelementStart(7, "span",
|
|
890
|
-
i0.ɵɵelement(8, "i",
|
|
1028
|
+
i0.ɵɵelementStart(7, "span", 161);
|
|
1029
|
+
i0.ɵɵelement(8, "i", 52);
|
|
891
1030
|
i0.ɵɵtext(9, " Can Execute ");
|
|
892
1031
|
i0.ɵɵelementEnd()();
|
|
893
1032
|
} if (rf & 2) {
|
|
894
|
-
const
|
|
1033
|
+
const permission_r37 = ctx.$implicit;
|
|
895
1034
|
i0.ɵɵadvance(4);
|
|
896
|
-
i0.ɵɵtextInterpolate(
|
|
1035
|
+
i0.ɵɵtextInterpolate(permission_r37.Role);
|
|
897
1036
|
} }
|
|
898
|
-
function
|
|
899
|
-
i0.ɵɵelementStart(0, "div",
|
|
900
|
-
i0.ɵɵrepeaterCreate(1,
|
|
1037
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_86_Conditional_4_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
1038
|
+
i0.ɵɵelementStart(0, "div", 155);
|
|
1039
|
+
i0.ɵɵrepeaterCreate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_86_Conditional_4_Conditional_1_Conditional_1_For_2_Template, 10, 1, "div", 156, _forTrack2);
|
|
901
1040
|
i0.ɵɵelementEnd();
|
|
902
1041
|
} if (rf & 2) {
|
|
903
1042
|
const ctx_r2 = i0.ɵɵnextContext(5);
|
|
904
1043
|
i0.ɵɵadvance();
|
|
905
1044
|
i0.ɵɵrepeater(ctx_r2.queryPermissions);
|
|
906
1045
|
} }
|
|
907
|
-
function
|
|
908
|
-
i0.ɵɵconditionalCreate(0,
|
|
1046
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_86_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
1047
|
+
i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_1_Conditional_86_Conditional_4_Conditional_1_Conditional_0_Template, 1, 4, "mj-explorer-entity-data-grid", 154)(1, MJQueryFormComponentExtended_Conditional_1_Conditional_86_Conditional_4_Conditional_1_Conditional_1_Template, 3, 0, "div", 155);
|
|
909
1048
|
} if (rf & 2) {
|
|
910
1049
|
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
911
1050
|
i0.ɵɵconditional(ctx_r2.EditMode ? 0 : 1);
|
|
912
1051
|
} }
|
|
913
|
-
function
|
|
914
|
-
i0.ɵɵconditionalCreate(0,
|
|
1052
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_86_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
1053
|
+
i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_1_Conditional_86_Conditional_4_Conditional_0_Template, 6, 0, "div", 84)(1, MJQueryFormComponentExtended_Conditional_1_Conditional_86_Conditional_4_Conditional_1_Template, 2, 1);
|
|
915
1054
|
} if (rf & 2) {
|
|
916
1055
|
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
917
1056
|
i0.ɵɵconditional(ctx_r2.queryPermissions.length === 0 && !ctx_r2.EditMode ? 0 : 1);
|
|
918
1057
|
} }
|
|
919
|
-
function
|
|
920
|
-
const
|
|
921
|
-
i0.ɵɵelementStart(0, "mj-accordion-panel",
|
|
922
|
-
i0.ɵɵtwoWayListener("ExpandedChange", function
|
|
923
|
-
i0.ɵɵtemplate(1,
|
|
924
|
-
i0.ɵɵelementStart(2, "div",
|
|
925
|
-
i0.ɵɵconditionalCreate(3,
|
|
1058
|
+
function MJQueryFormComponentExtended_Conditional_1_Conditional_86_Template(rf, ctx) { if (rf & 1) {
|
|
1059
|
+
const _r36 = i0.ɵɵgetCurrentView();
|
|
1060
|
+
i0.ɵɵelementStart(0, "mj-accordion-panel", 25);
|
|
1061
|
+
i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_1_Conditional_86_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r36); const ctx_r2 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r2.permissionsPanelExpanded, $event) || (ctx_r2.permissionsPanelExpanded = $event); return i0.ɵɵresetView($event); });
|
|
1062
|
+
i0.ɵɵtemplate(1, MJQueryFormComponentExtended_Conditional_1_Conditional_86_ng_template_1_Template, 3, 0, "ng-template", 26);
|
|
1063
|
+
i0.ɵɵelementStart(2, "div", 35);
|
|
1064
|
+
i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_86_Conditional_3_Template, 2, 0, "div", 80)(4, MJQueryFormComponentExtended_Conditional_1_Conditional_86_Conditional_4_Template, 2, 1);
|
|
926
1065
|
i0.ɵɵelementEnd()();
|
|
927
1066
|
} if (rf & 2) {
|
|
928
1067
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
@@ -934,128 +1073,162 @@ function MJQueryFormComponentExtended_Conditional_1_Template(rf, ctx) { if (rf &
|
|
|
934
1073
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
935
1074
|
i0.ɵɵelementStart(0, "form", 3, 0);
|
|
936
1075
|
i0.ɵɵelement(2, "mj-form-toolbar", 4);
|
|
937
|
-
i0.ɵɵ
|
|
938
|
-
i0.ɵɵ
|
|
939
|
-
i0.ɵɵ
|
|
1076
|
+
i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_1_Conditional_3_Template, 4, 0, "div", 5);
|
|
1077
|
+
i0.ɵɵelementStart(4, "div", 6)(5, "div", 7)(6, "div", 8)(7, "div", 9);
|
|
1078
|
+
i0.ɵɵelement(8, "i", 10);
|
|
1079
|
+
i0.ɵɵconditionalCreate(9, MJQueryFormComponentExtended_Conditional_1_Conditional_9_Template, 1, 1, "input", 11)(10, MJQueryFormComponentExtended_Conditional_1_Conditional_10_Template, 2, 1, "h4", 12);
|
|
940
1080
|
i0.ɵɵelementEnd();
|
|
941
|
-
i0.ɵɵelementStart(
|
|
942
|
-
i0.ɵɵconditionalCreate(
|
|
1081
|
+
i0.ɵɵelementStart(11, "div", 13);
|
|
1082
|
+
i0.ɵɵconditionalCreate(12, MJQueryFormComponentExtended_Conditional_1_Conditional_12_Template, 3, 1, "button", 14);
|
|
943
1083
|
i0.ɵɵelementEnd()();
|
|
944
|
-
i0.ɵɵelementStart(
|
|
945
|
-
i0.ɵɵtext(
|
|
1084
|
+
i0.ɵɵelementStart(13, "div", 15)(14, "div", 16)(15, "label", 17);
|
|
1085
|
+
i0.ɵɵtext(16, "Category");
|
|
946
1086
|
i0.ɵɵelementEnd();
|
|
947
|
-
i0.ɵɵconditionalCreate(
|
|
1087
|
+
i0.ɵɵconditionalCreate(17, MJQueryFormComponentExtended_Conditional_1_Conditional_17_Template, 1, 7, "mj-tree-dropdown", 18)(18, MJQueryFormComponentExtended_Conditional_1_Conditional_18_Template, 2, 1, "span", 19);
|
|
948
1088
|
i0.ɵɵelementEnd();
|
|
949
|
-
i0.ɵɵelementStart(
|
|
950
|
-
i0.ɵɵtext(
|
|
1089
|
+
i0.ɵɵelementStart(19, "div", 16)(20, "label", 17);
|
|
1090
|
+
i0.ɵɵtext(21, "Status");
|
|
951
1091
|
i0.ɵɵelementEnd();
|
|
952
|
-
i0.ɵɵconditionalCreate(
|
|
1092
|
+
i0.ɵɵconditionalCreate(22, MJQueryFormComponentExtended_Conditional_1_Conditional_22_Template, 1, 3, "mj-dropdown", 20)(23, MJQueryFormComponentExtended_Conditional_1_Conditional_23_Template, 3, 5, "span", 21);
|
|
953
1093
|
i0.ɵɵelementEnd()();
|
|
954
|
-
i0.ɵɵconditionalCreate(
|
|
1094
|
+
i0.ɵɵconditionalCreate(24, MJQueryFormComponentExtended_Conditional_1_Conditional_24_Template, 3, 1, "div", 22);
|
|
955
1095
|
i0.ɵɵelementEnd()();
|
|
956
|
-
i0.ɵɵconditionalCreate(
|
|
957
|
-
i0.ɵɵelementStart(
|
|
958
|
-
i0.ɵɵtwoWayListener("ExpandedChange", function
|
|
959
|
-
i0.ɵɵtemplate(
|
|
960
|
-
i0.ɵɵelementStart(
|
|
961
|
-
i0.ɵɵlistener("click", function
|
|
962
|
-
i0.ɵɵelement(
|
|
963
|
-
i0.ɵɵelementStart(
|
|
964
|
-
i0.ɵɵtext(
|
|
965
|
-
i0.ɵɵelementEnd();
|
|
966
|
-
i0.ɵɵelement(
|
|
1096
|
+
i0.ɵɵconditionalCreate(25, MJQueryFormComponentExtended_Conditional_1_Conditional_25_Template, 7, 8, "div", 23);
|
|
1097
|
+
i0.ɵɵelementStart(26, "div", 24)(27, "mj-accordion-panel", 25);
|
|
1098
|
+
i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_1_Template_mj_accordion_panel_ExpandedChange_27_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.sqlPanelExpanded, $event) || (ctx_r2.sqlPanelExpanded = $event); return i0.ɵɵresetView($event); });
|
|
1099
|
+
i0.ɵɵtemplate(28, MJQueryFormComponentExtended_Conditional_1_ng_template_28_Template, 5, 1, "ng-template", 26);
|
|
1100
|
+
i0.ɵɵelementStart(29, "div", 27)(30, "button", 28);
|
|
1101
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_1_Template_button_click_30_listener() { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.toggleFiltersHelp()); });
|
|
1102
|
+
i0.ɵɵelement(31, "i", 29);
|
|
1103
|
+
i0.ɵɵelementStart(32, "span");
|
|
1104
|
+
i0.ɵɵtext(33, "Filters Help");
|
|
1105
|
+
i0.ɵɵelementEnd();
|
|
1106
|
+
i0.ɵɵelement(34, "i", 30);
|
|
967
1107
|
i0.ɵɵelementEnd()();
|
|
968
|
-
i0.ɵɵelementStart(
|
|
969
|
-
i0.ɵɵlistener("change", function
|
|
1108
|
+
i0.ɵɵelementStart(35, "div", 31)(36, "mj-code-editor", 32, 1);
|
|
1109
|
+
i0.ɵɵlistener("change", function MJQueryFormComponentExtended_Conditional_1_Template_mj_code_editor_change_36_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onSQLChange($event)); })("CompositionTokenClick", function MJQueryFormComponentExtended_Conditional_1_Template_mj_code_editor_CompositionTokenClick_36_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onCompositionTokenClick($event)); });
|
|
970
1110
|
i0.ɵɵelementEnd();
|
|
971
|
-
i0.ɵɵconditionalCreate(
|
|
1111
|
+
i0.ɵɵconditionalCreate(38, MJQueryFormComponentExtended_Conditional_1_Conditional_38_Template, 7, 0, "div", 33);
|
|
972
1112
|
i0.ɵɵelementEnd()();
|
|
973
|
-
i0.ɵɵconditionalCreate(
|
|
974
|
-
i0.ɵɵconditionalCreate(
|
|
975
|
-
i0.ɵɵconditionalCreate(
|
|
976
|
-
i0.ɵɵconditionalCreate(
|
|
977
|
-
i0.ɵɵconditionalCreate(
|
|
978
|
-
i0.ɵɵelementStart(
|
|
979
|
-
i0.ɵɵtwoWayListener("ExpandedChange", function
|
|
980
|
-
i0.ɵɵtemplate(
|
|
981
|
-
i0.ɵɵelementStart(
|
|
982
|
-
i0.ɵɵelement(
|
|
983
|
-
i0.ɵɵtext(
|
|
984
|
-
i0.ɵɵelementEnd();
|
|
985
|
-
i0.ɵɵconditionalCreate(
|
|
986
|
-
i0.ɵɵelementEnd();
|
|
987
|
-
i0.ɵɵelementStart(
|
|
988
|
-
i0.ɵɵelement(
|
|
989
|
-
i0.ɵɵtext(
|
|
990
|
-
i0.ɵɵelementEnd();
|
|
991
|
-
i0.ɵɵ
|
|
992
|
-
i0.ɵɵ
|
|
1113
|
+
i0.ɵɵconditionalCreate(39, MJQueryFormComponentExtended_Conditional_1_Conditional_39_Template, 5, 2, "mj-accordion-panel", 34);
|
|
1114
|
+
i0.ɵɵconditionalCreate(40, MJQueryFormComponentExtended_Conditional_1_Conditional_40_Template, 5, 2, "mj-accordion-panel", 34);
|
|
1115
|
+
i0.ɵɵconditionalCreate(41, MJQueryFormComponentExtended_Conditional_1_Conditional_41_Template, 5, 2, "mj-accordion-panel", 34);
|
|
1116
|
+
i0.ɵɵconditionalCreate(42, MJQueryFormComponentExtended_Conditional_1_Conditional_42_Template, 11, 2, "mj-accordion-panel", 34);
|
|
1117
|
+
i0.ɵɵconditionalCreate(43, MJQueryFormComponentExtended_Conditional_1_Conditional_43_Template, 5, 2, "mj-accordion-panel", 34);
|
|
1118
|
+
i0.ɵɵelementStart(44, "mj-accordion-panel", 25);
|
|
1119
|
+
i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_1_Template_mj_accordion_panel_ExpandedChange_44_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.detailsPanelExpanded, $event) || (ctx_r2.detailsPanelExpanded = $event); return i0.ɵɵresetView($event); });
|
|
1120
|
+
i0.ɵɵtemplate(45, MJQueryFormComponentExtended_Conditional_1_ng_template_45_Template, 3, 0, "ng-template", 26);
|
|
1121
|
+
i0.ɵɵelementStart(46, "div", 35)(47, "div", 36)(48, "div", 37)(49, "label", 38);
|
|
1122
|
+
i0.ɵɵelement(50, "i", 39);
|
|
1123
|
+
i0.ɵɵtext(51, " Reusable ");
|
|
1124
|
+
i0.ɵɵelementEnd();
|
|
1125
|
+
i0.ɵɵconditionalCreate(52, MJQueryFormComponentExtended_Conditional_1_Conditional_52_Template, 3, 1)(53, MJQueryFormComponentExtended_Conditional_1_Conditional_53_Template, 3, 1, "div", 40);
|
|
1126
|
+
i0.ɵɵelementEnd();
|
|
1127
|
+
i0.ɵɵelementStart(54, "div", 37)(55, "label", 38);
|
|
1128
|
+
i0.ɵɵelement(56, "i", 41);
|
|
1129
|
+
i0.ɵɵtext(57, " Cache Enabled ");
|
|
1130
|
+
i0.ɵɵelementEnd();
|
|
1131
|
+
i0.ɵɵconditionalCreate(58, MJQueryFormComponentExtended_Conditional_1_Conditional_58_Template, 3, 1)(59, MJQueryFormComponentExtended_Conditional_1_Conditional_59_Template, 3, 1, "div", 40);
|
|
1132
|
+
i0.ɵɵelementEnd();
|
|
1133
|
+
i0.ɵɵconditionalCreate(60, MJQueryFormComponentExtended_Conditional_1_Conditional_60_Template, 6, 1, "div", 37);
|
|
1134
|
+
i0.ɵɵelementStart(61, "div", 37)(62, "label", 38);
|
|
1135
|
+
i0.ɵɵelement(63, "i", 42);
|
|
1136
|
+
i0.ɵɵtext(64, " Audit Runs ");
|
|
1137
|
+
i0.ɵɵelementEnd();
|
|
1138
|
+
i0.ɵɵconditionalCreate(65, MJQueryFormComponentExtended_Conditional_1_Conditional_65_Template, 3, 1)(66, MJQueryFormComponentExtended_Conditional_1_Conditional_66_Template, 3, 1, "div", 40);
|
|
1139
|
+
i0.ɵɵelementEnd();
|
|
1140
|
+
i0.ɵɵelementStart(67, "div", 37)(68, "label", 38);
|
|
1141
|
+
i0.ɵɵelement(69, "i", 43);
|
|
1142
|
+
i0.ɵɵtext(70, " Template Usage ");
|
|
1143
|
+
i0.ɵɵelementEnd();
|
|
1144
|
+
i0.ɵɵconditionalCreate(71, MJQueryFormComponentExtended_Conditional_1_Conditional_71_Template, 1, 1, "mj-switch", 44)(72, MJQueryFormComponentExtended_Conditional_1_Conditional_72_Template, 3, 1, "div", 40);
|
|
1145
|
+
i0.ɵɵelementEnd();
|
|
1146
|
+
i0.ɵɵelementStart(73, "div", 37)(74, "label", 38);
|
|
1147
|
+
i0.ɵɵelement(75, "i", 45);
|
|
1148
|
+
i0.ɵɵtext(76, " Created ");
|
|
1149
|
+
i0.ɵɵelementEnd();
|
|
1150
|
+
i0.ɵɵelementStart(77, "div", 40);
|
|
1151
|
+
i0.ɵɵtext(78);
|
|
993
1152
|
i0.ɵɵelementEnd()();
|
|
994
|
-
i0.ɵɵelementStart(
|
|
995
|
-
i0.ɵɵelement(
|
|
996
|
-
i0.ɵɵtext(
|
|
1153
|
+
i0.ɵɵelementStart(79, "div", 37)(80, "label", 38);
|
|
1154
|
+
i0.ɵɵelement(81, "i", 46);
|
|
1155
|
+
i0.ɵɵtext(82, " Last Updated ");
|
|
997
1156
|
i0.ɵɵelementEnd();
|
|
998
|
-
i0.ɵɵelementStart(
|
|
999
|
-
i0.ɵɵtext(
|
|
1157
|
+
i0.ɵɵelementStart(83, "div", 40);
|
|
1158
|
+
i0.ɵɵtext(84);
|
|
1000
1159
|
i0.ɵɵelementEnd()();
|
|
1001
|
-
i0.ɵɵconditionalCreate(
|
|
1160
|
+
i0.ɵɵconditionalCreate(85, MJQueryFormComponentExtended_Conditional_1_Conditional_85_Template, 6, 1, "div", 37);
|
|
1002
1161
|
i0.ɵɵelementEnd()()();
|
|
1003
|
-
i0.ɵɵconditionalCreate(
|
|
1162
|
+
i0.ɵɵconditionalCreate(86, MJQueryFormComponentExtended_Conditional_1_Conditional_86_Template, 5, 2, "mj-accordion-panel", 34);
|
|
1004
1163
|
i0.ɵɵelementEnd()();
|
|
1005
|
-
i0.ɵɵelementStart(
|
|
1006
|
-
i0.ɵɵtwoWayListener("isVisibleChange", function
|
|
1007
|
-
i0.ɵɵlistener("onClose", function
|
|
1164
|
+
i0.ɵɵelementStart(87, "mj-query-run-dialog", 47);
|
|
1165
|
+
i0.ɵɵtwoWayListener("isVisibleChange", function MJQueryFormComponentExtended_Conditional_1_Template_mj_query_run_dialog_isVisibleChange_87_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.showRunDialog, $event) || (ctx_r2.showRunDialog = $event); return i0.ɵɵresetView($event); });
|
|
1166
|
+
i0.ɵɵlistener("onClose", function MJQueryFormComponentExtended_Conditional_1_Template_mj_query_run_dialog_onClose_87_listener() { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onRunDialogClose()); });
|
|
1008
1167
|
i0.ɵɵelementEnd();
|
|
1009
|
-
i0.ɵɵelementStart(
|
|
1010
|
-
i0.ɵɵtwoWayListener("isVisibleChange", function
|
|
1011
|
-
i0.ɵɵlistener("onCategoryCreated", function
|
|
1168
|
+
i0.ɵɵelementStart(88, "mj-query-category-dialog", 48);
|
|
1169
|
+
i0.ɵɵtwoWayListener("isVisibleChange", function MJQueryFormComponentExtended_Conditional_1_Template_mj_query_category_dialog_isVisibleChange_88_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.showCategoryDialog, $event) || (ctx_r2.showCategoryDialog = $event); return i0.ɵɵresetView($event); });
|
|
1170
|
+
i0.ɵɵlistener("onCategoryCreated", function MJQueryFormComponentExtended_Conditional_1_Template_mj_query_category_dialog_onCategoryCreated_88_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onCategoryCreated($event)); });
|
|
1012
1171
|
i0.ɵɵelementEnd();
|
|
1013
1172
|
} if (rf & 2) {
|
|
1014
1173
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
1015
1174
|
i0.ɵɵadvance(2);
|
|
1016
|
-
i0.ɵɵproperty("Form", ctx_r2)("Config", ctx_r2.ToolbarConfig);
|
|
1017
|
-
i0.ɵɵadvance(
|
|
1018
|
-
i0.ɵɵconditional(ctx_r2.
|
|
1175
|
+
i0.ɵɵproperty("Form", ctx_r2)("Config", ctx_r2.ToolbarConfig)("IsSaving", ctx_r2.IsSaving);
|
|
1176
|
+
i0.ɵɵadvance();
|
|
1177
|
+
i0.ɵɵconditional(ctx_r2.IsSaving ? 3 : -1);
|
|
1178
|
+
i0.ɵɵadvance();
|
|
1179
|
+
i0.ɵɵclassProp("content-saving", ctx_r2.IsSaving);
|
|
1180
|
+
i0.ɵɵadvance(5);
|
|
1181
|
+
i0.ɵɵconditional(ctx_r2.EditMode ? 9 : 10);
|
|
1019
1182
|
i0.ɵɵadvance(3);
|
|
1020
|
-
i0.ɵɵconditional(ctx_r2.record.ID ?
|
|
1183
|
+
i0.ɵɵconditional(ctx_r2.record.ID ? 12 : -1);
|
|
1021
1184
|
i0.ɵɵadvance(5);
|
|
1022
|
-
i0.ɵɵconditional(ctx_r2.EditMode ?
|
|
1185
|
+
i0.ɵɵconditional(ctx_r2.EditMode ? 17 : 18);
|
|
1023
1186
|
i0.ɵɵadvance(5);
|
|
1024
|
-
i0.ɵɵconditional(ctx_r2.EditMode ?
|
|
1187
|
+
i0.ɵɵconditional(ctx_r2.EditMode ? 22 : 23);
|
|
1025
1188
|
i0.ɵɵadvance(2);
|
|
1026
|
-
i0.ɵɵconditional(ctx_r2.EditMode || ctx_r2.record.Description ?
|
|
1189
|
+
i0.ɵɵconditional(ctx_r2.EditMode || ctx_r2.record.Description ? 24 : -1);
|
|
1190
|
+
i0.ɵɵadvance();
|
|
1191
|
+
i0.ɵɵconditional(ctx_r2.record.Status && ctx_r2.record.Status !== "Approved" && !ctx_r2.EditMode ? 25 : -1);
|
|
1192
|
+
i0.ɵɵadvance();
|
|
1193
|
+
i0.ɵɵclassProp("content-saving", ctx_r2.IsSaving);
|
|
1027
1194
|
i0.ɵɵadvance();
|
|
1028
|
-
i0.ɵɵconditional(ctx_r2.record.Status && ctx_r2.record.Status !== "Approved" && !ctx_r2.EditMode ? 24 : -1);
|
|
1029
|
-
i0.ɵɵadvance(2);
|
|
1030
1195
|
i0.ɵɵtwoWayProperty("Expanded", ctx_r2.sqlPanelExpanded);
|
|
1031
1196
|
i0.ɵɵadvance(7);
|
|
1032
1197
|
i0.ɵɵproperty("ngClass", ctx_r2.showFiltersHelp ? "fa-chevron-up" : "fa-chevron-down");
|
|
1033
1198
|
i0.ɵɵadvance(2);
|
|
1034
1199
|
i0.ɵɵproperty("language", "sql");
|
|
1035
1200
|
i0.ɵɵadvance(2);
|
|
1036
|
-
i0.ɵɵconditional(ctx_r2.showFiltersHelp ?
|
|
1201
|
+
i0.ɵɵconditional(ctx_r2.showFiltersHelp ? 38 : -1);
|
|
1037
1202
|
i0.ɵɵadvance();
|
|
1038
|
-
i0.ɵɵconditional(ctx_r2.record.TechnicalDescription || ctx_r2.EditMode ?
|
|
1039
|
-
i0.ɵɵadvance();
|
|
1040
|
-
i0.ɵɵconditional(ctx_r2.record.IsSaved ? 39 : -1);
|
|
1203
|
+
i0.ɵɵconditional(ctx_r2.record.TechnicalDescription || ctx_r2.EditMode ? 39 : -1);
|
|
1041
1204
|
i0.ɵɵadvance();
|
|
1042
1205
|
i0.ɵɵconditional(ctx_r2.record.IsSaved ? 40 : -1);
|
|
1043
1206
|
i0.ɵɵadvance();
|
|
1044
|
-
i0.ɵɵconditional(ctx_r2.record.IsSaved
|
|
1207
|
+
i0.ɵɵconditional(ctx_r2.record.IsSaved ? 41 : -1);
|
|
1208
|
+
i0.ɵɵadvance();
|
|
1209
|
+
i0.ɵɵconditional(ctx_r2.record.IsSaved && ctx_r2.DependentQueries.length > 0 ? 42 : -1);
|
|
1045
1210
|
i0.ɵɵadvance();
|
|
1046
|
-
i0.ɵɵconditional(ctx_r2.record.IsSaved ?
|
|
1211
|
+
i0.ɵɵconditional(ctx_r2.record.IsSaved ? 43 : -1);
|
|
1047
1212
|
i0.ɵɵadvance();
|
|
1048
1213
|
i0.ɵɵtwoWayProperty("Expanded", ctx_r2.detailsPanelExpanded);
|
|
1049
1214
|
i0.ɵɵadvance(8);
|
|
1050
|
-
i0.ɵɵconditional(ctx_r2.EditMode ?
|
|
1215
|
+
i0.ɵɵconditional(ctx_r2.EditMode ? 52 : 53);
|
|
1216
|
+
i0.ɵɵadvance(6);
|
|
1217
|
+
i0.ɵɵconditional(ctx_r2.EditMode ? 58 : 59);
|
|
1218
|
+
i0.ɵɵadvance(2);
|
|
1219
|
+
i0.ɵɵconditional(ctx_r2.record.CacheEnabled ? 60 : -1);
|
|
1220
|
+
i0.ɵɵadvance(5);
|
|
1221
|
+
i0.ɵɵconditional(ctx_r2.EditMode ? 65 : 66);
|
|
1222
|
+
i0.ɵɵadvance(6);
|
|
1223
|
+
i0.ɵɵconditional(ctx_r2.EditMode ? 71 : 72);
|
|
1051
1224
|
i0.ɵɵadvance(7);
|
|
1052
1225
|
i0.ɵɵtextInterpolate(ctx_r2.formatDate(ctx_r2.record.__mj_CreatedAt));
|
|
1053
1226
|
i0.ɵɵadvance(6);
|
|
1054
1227
|
i0.ɵɵtextInterpolate(ctx_r2.formatDate(ctx_r2.record.__mj_UpdatedAt));
|
|
1055
1228
|
i0.ɵɵadvance();
|
|
1056
|
-
i0.ɵɵconditional(ctx_r2.record.QualityRank != null ?
|
|
1229
|
+
i0.ɵɵconditional(ctx_r2.record.QualityRank != null ? 85 : -1);
|
|
1057
1230
|
i0.ɵɵadvance();
|
|
1058
|
-
i0.ɵɵconditional(ctx_r2.record.IsSaved ?
|
|
1231
|
+
i0.ɵɵconditional(ctx_r2.record.IsSaved ? 86 : -1);
|
|
1059
1232
|
i0.ɵɵadvance();
|
|
1060
1233
|
i0.ɵɵproperty("query", ctx_r2.record)("parameters", ctx_r2.queryParameters);
|
|
1061
1234
|
i0.ɵɵtwoWayProperty("isVisible", ctx_r2.showRunDialog);
|
|
@@ -1078,6 +1251,7 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
|
|
|
1078
1251
|
this.showRunDialog = false;
|
|
1079
1252
|
this.showCategoryDialog = false;
|
|
1080
1253
|
this.categoryPathDisplay = '';
|
|
1254
|
+
this.IsSaving = false;
|
|
1081
1255
|
// Expansion panel states
|
|
1082
1256
|
this.sqlPanelExpanded = true;
|
|
1083
1257
|
this.parametersPanelExpanded = false;
|
|
@@ -1093,6 +1267,16 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
|
|
|
1093
1267
|
];
|
|
1094
1268
|
this.categories = [];
|
|
1095
1269
|
this.categoryTreeData = [];
|
|
1270
|
+
/** Tree dropdown config for Query Categories */
|
|
1271
|
+
this.CategoryBranchConfig = {
|
|
1272
|
+
EntityName: 'MJ: Query Categories',
|
|
1273
|
+
DisplayField: 'Name',
|
|
1274
|
+
IDField: 'ID',
|
|
1275
|
+
ParentIDField: 'ParentID',
|
|
1276
|
+
DefaultIcon: 'fa-solid fa-folder',
|
|
1277
|
+
DescriptionField: 'Description',
|
|
1278
|
+
OrderBy: 'Name ASC'
|
|
1279
|
+
};
|
|
1096
1280
|
// Status options — matches MJQueryEntity.Status type from database CHECK constraint
|
|
1097
1281
|
this.statusOptions = [
|
|
1098
1282
|
{ text: 'Pending', value: 'Pending' },
|
|
@@ -1121,6 +1305,22 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
|
|
|
1121
1305
|
this.isUpdatingEditorValue = false;
|
|
1122
1306
|
this.isInitialLoad = true;
|
|
1123
1307
|
}
|
|
1308
|
+
/** CategoryID as CompositeKey for tree dropdown binding */
|
|
1309
|
+
get CategoryIDAsKey() {
|
|
1310
|
+
return this.record?.CategoryID ? CompositeKey.FromID(this.record.CategoryID) : null;
|
|
1311
|
+
}
|
|
1312
|
+
/** Handle tree dropdown category selection */
|
|
1313
|
+
OnCategoryTreeChange(value) {
|
|
1314
|
+
if (!this.record)
|
|
1315
|
+
return;
|
|
1316
|
+
if (value instanceof CompositeKey && value.HasValue) {
|
|
1317
|
+
this.record.CategoryID = value.KeyValuePairs[0]?.Value ?? null;
|
|
1318
|
+
}
|
|
1319
|
+
else {
|
|
1320
|
+
this.record.CategoryID = null;
|
|
1321
|
+
}
|
|
1322
|
+
this.updateCategoryPathDisplay();
|
|
1323
|
+
}
|
|
1124
1324
|
/**
|
|
1125
1325
|
* Gets the QueryInfo metadata object for the current record, used to access Dependents.
|
|
1126
1326
|
*/
|
|
@@ -1511,16 +1711,26 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
|
|
|
1511
1711
|
return;
|
|
1512
1712
|
}
|
|
1513
1713
|
try {
|
|
1514
|
-
|
|
1714
|
+
// Reload the parameter entity fresh to ensure we have a clean copy
|
|
1715
|
+
// not tied to any form transaction state
|
|
1716
|
+
const md = new Metadata();
|
|
1717
|
+
const freshParam = await md.GetEntityObject('MJ: Query Parameters');
|
|
1718
|
+
const loaded = await freshParam.Load(param.ID);
|
|
1719
|
+
if (!loaded) {
|
|
1720
|
+
MJNotificationService.Instance.CreateSimpleNotification('Could not load parameter record. It may have already been deleted.', 'warning', 3000);
|
|
1721
|
+
// Remove from local list anyway since it doesn't exist
|
|
1722
|
+
this.removeParameterFromList(param);
|
|
1723
|
+
return;
|
|
1724
|
+
}
|
|
1725
|
+
const deleted = await freshParam.Delete();
|
|
1515
1726
|
if (deleted) {
|
|
1516
|
-
|
|
1517
|
-
if (index > -1) {
|
|
1518
|
-
this.queryParameters.splice(index, 1);
|
|
1519
|
-
}
|
|
1727
|
+
this.removeParameterFromList(param);
|
|
1520
1728
|
MJNotificationService.Instance.CreateSimpleNotification('Parameter deleted successfully', 'success', 3000);
|
|
1521
1729
|
}
|
|
1522
1730
|
else {
|
|
1523
|
-
|
|
1731
|
+
const errorDetail = freshParam.LatestResult?.CompleteMessage ?? 'Unknown reason';
|
|
1732
|
+
console.error('Failed to delete parameter:', errorDetail);
|
|
1733
|
+
MJNotificationService.Instance.CreateSimpleNotification(`Failed to delete parameter: ${errorDetail}`, 'error', 5000);
|
|
1524
1734
|
}
|
|
1525
1735
|
}
|
|
1526
1736
|
catch (error) {
|
|
@@ -1528,6 +1738,13 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
|
|
|
1528
1738
|
MJNotificationService.Instance.CreateSimpleNotification('Error deleting parameter', 'error', 3000);
|
|
1529
1739
|
}
|
|
1530
1740
|
}
|
|
1741
|
+
removeParameterFromList(param) {
|
|
1742
|
+
const index = this.queryParameters.indexOf(param);
|
|
1743
|
+
if (index > -1) {
|
|
1744
|
+
this.queryParameters.splice(index, 1);
|
|
1745
|
+
}
|
|
1746
|
+
this.cdr.detectChanges();
|
|
1747
|
+
}
|
|
1531
1748
|
/**
|
|
1532
1749
|
* Handle category creation from dialog
|
|
1533
1750
|
*/
|
|
@@ -1549,6 +1766,18 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
|
|
|
1549
1766
|
return d.toLocaleDateString() + ' ' + d.toLocaleTimeString();
|
|
1550
1767
|
}
|
|
1551
1768
|
async SaveRecord(StopEditModeAfterSave = true) {
|
|
1769
|
+
this.IsSaving = true;
|
|
1770
|
+
this.cdr.markForCheck();
|
|
1771
|
+
try {
|
|
1772
|
+
return await this.internalSaveRecord(StopEditModeAfterSave);
|
|
1773
|
+
}
|
|
1774
|
+
finally {
|
|
1775
|
+
await Promise.resolve(); // microtask to avoid ExpressionChangedAfterItHasBeenCheckedError
|
|
1776
|
+
this.IsSaving = false;
|
|
1777
|
+
this.cdr.markForCheck();
|
|
1778
|
+
}
|
|
1779
|
+
}
|
|
1780
|
+
async internalSaveRecord(StopEditModeAfterSave) {
|
|
1552
1781
|
// Handle category creation before saving query
|
|
1553
1782
|
if (this.record.CategoryID && !this.categoryOptions.find(opt => opt.value === this.record.CategoryID)) {
|
|
1554
1783
|
if (this.isDuplicateCategory(this.record.CategoryID)) {
|
|
@@ -1722,12 +1951,25 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
|
|
|
1722
1951
|
return;
|
|
1723
1952
|
}
|
|
1724
1953
|
try {
|
|
1725
|
-
const
|
|
1954
|
+
const md = new Metadata();
|
|
1955
|
+
const freshField = await md.GetEntityObject('MJ: Query Fields');
|
|
1956
|
+
const loaded = await freshField.Load(field.ID);
|
|
1957
|
+
if (!loaded) {
|
|
1958
|
+
this.queryFields = this.queryFields.filter(f => !UUIDsEqual(f.ID, field.ID));
|
|
1959
|
+
this.cdr.detectChanges();
|
|
1960
|
+
return;
|
|
1961
|
+
}
|
|
1962
|
+
const deleted = await freshField.Delete();
|
|
1726
1963
|
if (deleted) {
|
|
1727
1964
|
this.queryFields = this.queryFields.filter(f => !UUIDsEqual(f.ID, field.ID));
|
|
1728
1965
|
this.updateUnsavedChangesFlag();
|
|
1729
1966
|
MJNotificationService.Instance.CreateSimpleNotification('Field deleted successfully', 'success', 3000);
|
|
1730
1967
|
}
|
|
1968
|
+
else {
|
|
1969
|
+
const errorDetail = freshField.LatestResult?.CompleteMessage ?? 'Unknown reason';
|
|
1970
|
+
console.error('Failed to delete field:', errorDetail);
|
|
1971
|
+
MJNotificationService.Instance.CreateSimpleNotification(`Failed to delete field: ${errorDetail}`, 'error', 5000);
|
|
1972
|
+
}
|
|
1731
1973
|
}
|
|
1732
1974
|
catch (error) {
|
|
1733
1975
|
console.error('Error deleting field:', error);
|
|
@@ -1759,12 +2001,25 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
|
|
|
1759
2001
|
return;
|
|
1760
2002
|
}
|
|
1761
2003
|
try {
|
|
1762
|
-
const
|
|
2004
|
+
const md = new Metadata();
|
|
2005
|
+
const freshEntity = await md.GetEntityObject('MJ: Query Entities');
|
|
2006
|
+
const loaded = await freshEntity.Load(entity.ID);
|
|
2007
|
+
if (!loaded) {
|
|
2008
|
+
this.queryEntities = this.queryEntities.filter(e => !UUIDsEqual(e.ID, entity.ID));
|
|
2009
|
+
this.cdr.detectChanges();
|
|
2010
|
+
return;
|
|
2011
|
+
}
|
|
2012
|
+
const deleted = await freshEntity.Delete();
|
|
1763
2013
|
if (deleted) {
|
|
1764
2014
|
this.queryEntities = this.queryEntities.filter(e => !UUIDsEqual(e.ID, entity.ID));
|
|
1765
2015
|
this.updateUnsavedChangesFlag();
|
|
1766
2016
|
MJNotificationService.Instance.CreateSimpleNotification('Entity deleted successfully', 'success', 3000);
|
|
1767
2017
|
}
|
|
2018
|
+
else {
|
|
2019
|
+
const errorDetail = freshEntity.LatestResult?.CompleteMessage ?? 'Unknown reason';
|
|
2020
|
+
console.error('Failed to delete entity:', errorDetail);
|
|
2021
|
+
MJNotificationService.Instance.CreateSimpleNotification(`Failed to delete entity: ${errorDetail}`, 'error', 5000);
|
|
2022
|
+
}
|
|
1768
2023
|
}
|
|
1769
2024
|
catch (error) {
|
|
1770
2025
|
console.error('Error deleting entity:', error);
|
|
@@ -1792,14 +2047,14 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
|
|
|
1792
2047
|
} if (rf & 2) {
|
|
1793
2048
|
let _t;
|
|
1794
2049
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.sqlEditor = _t.first);
|
|
1795
|
-
} }, 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", "Config"], [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, "mj-input", "query-name-input", 3, "ngModel"], [1, "query-name-display"], [1, "query-header-actions"], ["mjButton", "", "variant", "primary", "title", "Run Query", 1, "run-query-btn", 3, "disabled"], [1, "query-meta-row"], [1, "query-meta-item"], [1, "meta-label"], [
|
|
2050
|
+
} }, 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", "Config", "IsSaving"], [1, "saving-overlay"], [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, "mj-input", "query-name-input", 3, "ngModel"], [1, "query-name-display"], [1, "query-header-actions"], ["mjButton", "", "variant", "primary", "title", "Run Query", 1, "run-query-btn", 3, "disabled"], [1, "query-meta-row"], [1, "query-meta-item"], [1, "meta-label"], [1, "meta-dropdown", 3, "BranchConfig", "Value", "SelectableTypes", "SelectionMode", "Placeholder", "EnableSearch", "Clearable"], [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"], ["mjAccordionTitle", ""], [1, "sql-panel-toolbar", 2, "display", "flex", "justify-content", "flex-end", "padding", "4px 0 8px"], ["type", "button", "mjButton", "", "variant", "flat", "title", "Show/hide SQL filters help", 1, "filters-help-btn", 3, "click"], [1, "fa-solid", "fa-question-circle"], [1, "fa-solid", 3, "ngClass"], [1, "sql-panel-content"], [1, "sql-editor", 3, "change", "CompositionTokenClick", "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-puzzle-piece"], [1, "detail-value"], [1, "fa-solid", "fa-bolt"], [1, "fa-solid", "fa-clipboard-list"], [1, "fa-solid", "fa-file-code"], ["name", "usesTemplate", 3, "ngModel"], [1, "fa-solid", "fa-calendar-plus"], [1, "fa-solid", "fa-calendar-check"], [3, "isVisibleChange", "onClose", "query", "parameters", "isVisible"], [3, "isVisibleChange", "onCategoryCreated", "isVisible"], [1, "fa-solid", "fa-spinner", "fa-spin", "saving-spinner"], ["name", "queryName", "placeholder", "Enter query name...", 1, "mj-input", "query-name-input", 3, "ngModelChange", "ngModel"], ["mjButton", "", "variant", "primary", "title", "Run Query", 1, "run-query-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-play"], [1, "meta-dropdown", 3, "ValueChange", "BranchConfig", "Value", "SelectableTypes", "SelectionMode", "Placeholder", "EnableSearch", "Clearable"], ["name", "status", "TextField", "text", "ValueField", "value", 1, "meta-dropdown", "status-dropdown", 3, "ngModelChange", "ngModel", "Data", "ValuePrimitive"], [1, "status-pill"], [1, "fa-solid"], ["name", "description", "rows", "2", "placeholder", "Enter query description...", 1, "mj-input", "query-description-input", 3, "ngModel"], [1, "query-description-text"], ["name", "description", "rows", "2", "placeholder", "Enter query description...", 1, "mj-input", "query-description-input", 3, "ngModelChange", "ngModel"], [1, "status-warning-banner"], [1, "panel-title-row"], [1, "panel-title"], [1, "fa-solid", "fa-code", "panel-icon", "sql-icon"], [1, "panel-badge", "defined"], [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", "rows", "8", "placeholder", "Technical documentation of the query logic, performance considerations, and parameter usage. Supports markdown and mermaid diagrams.", 1, "mj-input", "technical-description-textarea", 3, "ngModelChange", "ngModel"], [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, "dependents-description"], [1, "item-card", "dependent-card"], [1, "fa-solid", "fa-arrow-left", "panel-icon", "dependents-icon"], [1, "item-card", "dependent-card", 3, "click"], [1, "fa-solid", "fa-arrow-left", "item-name-icon", "dependent-query-icon"], [1, "item-card-footer"], [1, "open-link"], [1, "fa-solid", "fa-arrow-up-right-from-square"], [1, "fa-solid", "fa-link"], [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", "reusable", 3, "ngModelChange", "ngModel"], [1, "detail-hint"], [1, "detail-tag", "positive"], [1, "detail-tag", "neutral"], [1, "fa-solid", "fa-check"], [1, "fa-solid", "fa-times"], ["name", "cacheEnabled", 3, "ngModelChange", "ngModel"], [1, "fa-solid", "fa-clock"], ["type", "number", "name", "cacheTTLMinutes", "min", "1", "placeholder", "Default", 1, "mj-input", "detail-input-narrow", 3, "ngModelChange", "ngModel"], ["name", "auditQueryRuns", 3, "ngModelChange", "ngModel"], ["name", "usesTemplate", 3, "ngModelChange", "ngModel"], [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) {
|
|
1796
2051
|
i0.ɵɵelementStart(0, "div", 2);
|
|
1797
|
-
i0.ɵɵconditionalCreate(1, MJQueryFormComponentExtended_Conditional_1_Template,
|
|
2052
|
+
i0.ɵɵconditionalCreate(1, MJQueryFormComponentExtended_Conditional_1_Template, 89, 37);
|
|
1798
2053
|
i0.ɵɵelementEnd();
|
|
1799
2054
|
} if (rf & 2) {
|
|
1800
2055
|
i0.ɵɵadvance();
|
|
1801
2056
|
i0.ɵɵconditional(ctx.record ? 1 : -1);
|
|
1802
|
-
} }, dependencies: [i1.NgClass, i2.ɵNgNoValidate, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgControlStatusGroup, i2.NgModel, i2.NgForm, i3.MJButtonDirective, i3.MJAccordionPanelComponent, i3.MJAccordionTitleDirective, i3.MJDropdownComponent, i3.MJSwitchComponent, i4.MjFormToolbarComponent, i4.ExplorerEntityDataGridComponent, i5.CodeEditorComponent, i6.LoadingComponent, i7.MarkdownComponent, i8.QueryRunDialogComponent, i9.QueryCategoryDialogComponent], styles: [".k-pane[_ngcontent-%COMP%] {\n background-color: var(--mj-bg-surface);\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: var(--mj-bg-surface);\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group[_ngcontent-%COMP%] {\n margin-top: 0px;\n background-color: var(--mj-bg-surface);\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.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@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: var(--mj-bg-surface);\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: var(--mj-bg-surface-card);\n border-radius: 8px;\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\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: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-bottom-color: var(--mj-brand-primary);\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: var(--mj-brand-primary);\n}\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.collapsible-header[_ngcontent-%COMP%] .collapse-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\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: var(--mj-bg-surface-card);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n\n\n.form-section-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px var(--mj-shadow-sm);\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 var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\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: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px var(--mj-shadow-md);\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 var(--mj-border-strong);\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\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: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\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: var(--mj-status-warning);\n color: var(--mj-text-primary);\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: var(--mj-status-success);\n color: var(--mj-text-inverse);\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: var(--mj-text-muted);\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: var(--mj-brand-primary);\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: var(--mj-text-inverse, white);\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: var(--mj-text-sm);\n min-width: 60px;\n}\n\n.meta-value[_ngcontent-%COMP%] {\n color: rgba(255, 255, 255, 0.95);\n font-size: var(--mj-text-sm);\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: var(--mj-radius-xl);\n color: var(--mj-text-inverse, white);\n font-size: var(--mj-text-sm);\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: var(--mj-text-xs);\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: var(--mj-text-sm);\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: color-mix(in srgb, var(--mj-status-warning) 10%, var(--mj-bg-surface));\n border-left: 4px solid var(--mj-status-warning);\n font-size: var(--mj-text-sm);\n color: var(--mj-text-secondary);\n flex-shrink: 0;\n}\n\n.status-warning-banner[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: var(--mj-text-base);\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: var(--mj-bg-surface-card);\n}\n\n\n\n\n\n\n.query-panel[_ngcontent-%COMP%] {\n margin-bottom: 12px;\n}\n\n .query-content mj-accordion-panel .mj-accordion-panel {\n border: none !important;\n border-radius: var(--mj-radius-md) !important;\n margin-bottom: 12px !important;\n box-shadow: var(--mj-shadow-sm) !important;\n background: var(--mj-bg-surface) !important;\n overflow: hidden !important;\n}\n\n .query-content .mj-accordion-header {\n background: var(--mj-bg-surface) !important;\n border: none !important;\n padding: 14px 18px !important;\n border-radius: var(--mj-radius-md) !important;\n color: var(--mj-text-primary) !important;\n font-weight: 600 !important;\n font-size: var(--mj-text-sm) !important;\n transition: background 0.15s ease !important;\n}\n\n .query-content .mj-accordion-header:hover {\n background: var(--mj-bg-surface-card) !important;\n}\n\n .query-content .mj-accordion-panel--expanded .mj-accordion-header {\n background: var(--mj-brand-primary) !important;\n color: white !important;\n border-radius: var(--mj-radius-md) var(--mj-radius-md) 0 0 !important;\n}\n\n .query-content .mj-accordion-body {\n padding: 0 !important;\n border: none !important;\n background: var(--mj-bg-surface) !important;\n border-radius: 0 0 var(--mj-radius-md) var(--mj-radius-md) !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: var(--mj-text-sm);\n opacity: 0.7;\n}\n\n.sql-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n .mj-accordion-panel--expanded .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: var(--mj-radius-lg);\n font-size: var(--mj-text-xs);\n font-weight: 600;\n}\n\n.panel-badge.defined[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: white;\n}\n\n.panel-badge.count[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: white;\n}\n\n .mj-accordion-panel--expanded .panel-badge.count {\n background: rgba(255, 255, 255, 0.25) !important;\n}\n\n .mj-accordion-panel--expanded .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: var(--mj-text-xs);\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 var(--mj-border-default);\n border-radius: var(--mj-radius-sm);\n margin: 16px;\n}\n\n\n\n.filters-help[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 16px;\n margin: 0 16px 16px;\n}\n\n.filters-help-title[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n color: var(--mj-text-primary);\n font-weight: 600;\n font-size: var(--mj-text-sm);\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: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\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: var(--mj-shadow-md);\n}\n\n.filter-name[_ngcontent-%COMP%] {\n font-family: 'Courier New', monospace;\n font-weight: bold;\n color: var(--mj-brand-primary);\n margin-bottom: 4px;\n}\n\n.filter-description[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-secondary);\n margin-bottom: 6px;\n}\n\n.filter-syntax[_ngcontent-%COMP%] {\n font-family: 'Courier New', monospace;\n font-size: var(--mj-text-xs);\n background: var(--mj-bg-surface-card);\n padding: 6px;\n border-radius: var(--mj-radius-sm);\n margin-bottom: 4px;\n}\n\n.filter-notes[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-disabled);\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: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\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: var(--mj-brand-primary);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n}\n\n.item-card.required[_ngcontent-%COMP%] {\n border-left: 3px solid var(--mj-status-warning);\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: var(--mj-text-sm);\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.item-name-icon[_ngcontent-%COMP%] {\n font-size: var(--mj-text-sm);\n}\n\n.item-name-icon.param-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.item-name-icon.field-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.item-name-icon.entity-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\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: var(--mj-radius-lg);\n font-size: var(--mj-text-xs);\n font-weight: 600;\n color: white;\n}\n\n.item-badge.required[_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n}\n\n.item-badge.type[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.item-badge.sequence[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: color-mix(in srgb, var(--mj-brand-primary) 80%, purple);\n}\n\n.item-card-body[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-size: var(--mj-text-sm);\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: var(--mj-text-xs);\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: var(--mj-bg-surface-card);\n padding: 1px 4px;\n border-radius: var(--mj-radius-sm);\n font-size: var(--mj-text-xs);\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: var(--mj-radius-sm);\n cursor: pointer;\n color: var(--mj-text-disabled);\n transition: all 0.15s ease;\n}\n\n.item-action-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-brand-primary);\n}\n\n.item-action-btn.delete[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-error) 8%, var(--mj-bg-surface));\n color: var(--mj-status-error);\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: var(--mj-text-xs);\n font-weight: 600;\n color: var(--mj-text-disabled);\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: var(--mj-text-sm);\n color: var(--mj-text-primary);\n}\n\n.detail-tag[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: var(--mj-text-sm);\n}\n\n.detail-tag.positive[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.detail-tag.neutral[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\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: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 14px 16px;\n margin-bottom: 8px;\n}\n\n.permission-icon[_ngcontent-%COMP%] {\n font-size: 1.3em;\n color: var(--mj-brand-primary);\n}\n\n.permission-info[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.permission-role[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n font-size: var(--mj-text-sm);\n}\n\n.permission-type[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-disabled);\n}\n\n.permission-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n background: var(--mj-brand-primary);\n color: white;\n padding: 4px 10px;\n border-radius: var(--mj-radius-md);\n font-size: var(--mj-text-xs);\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: var(--mj-text-disabled);\n}\n\n.empty-state-icon[_ngcontent-%COMP%] {\n font-size: 40px;\n margin-bottom: 14px;\n opacity: 0.25;\n color: var(--mj-text-primary);\n}\n\n.empty-state-title[_ngcontent-%COMP%] {\n font-size: var(--mj-text-base);\n font-weight: 600;\n margin-bottom: 6px;\n color: var(--mj-text-secondary);\n}\n\n.empty-state-text[_ngcontent-%COMP%] {\n font-size: var(--mj-text-sm);\n margin-bottom: 16px;\n color: var(--mj-text-disabled);\n}\n\n\n\n\n\n\n.add-item-btn[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: white;\n border: none;\n padding: 8px 16px;\n border-radius: var(--mj-radius-md);\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: var(--mj-text-sm);\n}\n\n.add-item-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 85%, black);\n box-shadow: 0 2px 6px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\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 var(--mj-border-default);\n padding-top: 12px;\n}\n\n.preview-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\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}\n\n\n\n.dependents-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\n}\n\n.dependents-description[_ngcontent-%COMP%] {\n padding: 0 20px 12px;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.dependents-description[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n padding: 1px 5px;\n border-radius: 3px;\n font-size: 12px;\n}\n\n.dependent-card[_ngcontent-%COMP%] {\n cursor: pointer;\n border-left: 3px solid var(--mj-status-warning) !important;\n}\n\n.dependent-card[_ngcontent-%COMP%]:hover {\n border-left-color: var(--mj-status-warning-text) !important;\n background: color-mix(in srgb, var(--mj-status-warning) 8%, var(--mj-bg-surface)) !important;\n}\n\n.dependent-query-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-warning) !important;\n}\n\n.item-card-footer[_ngcontent-%COMP%] {\n padding-top: 8px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n margin-top: 8px;\n}\n\n.open-link[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-brand-primary);\n font-weight: 500;\n}\n\n.dependent-card[_ngcontent-%COMP%]:hover .open-link[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary-hover);\n}"] }); }
|
|
2057
|
+
} }, dependencies: [i1.NgClass, i2.ɵNgNoValidate, i2.DefaultValueAccessor, i2.NumberValueAccessor, i2.NgControlStatus, i2.NgControlStatusGroup, i2.MinValidator, i2.NgModel, i2.NgForm, i3.MJButtonDirective, i3.MJAccordionPanelComponent, i3.MJAccordionTitleDirective, i3.MJDropdownComponent, i3.MJSwitchComponent, i4.MjFormToolbarComponent, i4.ExplorerEntityDataGridComponent, i5.CodeEditorComponent, i6.LoadingComponent, i7.MarkdownComponent, i8.TreeDropdownComponent, i9.QueryRunDialogComponent, i10.QueryCategoryDialogComponent], styles: [".k-pane[_ngcontent-%COMP%] {\n background-color: var(--mj-bg-surface);\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: var(--mj-bg-surface);\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group[_ngcontent-%COMP%] {\n margin-top: 0px;\n background-color: var(--mj-bg-surface);\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.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@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: var(--mj-bg-surface);\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: var(--mj-bg-surface-card);\n border-radius: 8px;\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\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: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-bottom-color: var(--mj-brand-primary);\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: var(--mj-brand-primary);\n}\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.collapsible-header[_ngcontent-%COMP%] .collapse-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\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: var(--mj-bg-surface-card);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n\n\n.form-section-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px var(--mj-shadow-sm);\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 var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\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: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px var(--mj-shadow-md);\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 var(--mj-border-strong);\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\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: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\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: var(--mj-status-warning);\n color: var(--mj-text-primary);\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: var(--mj-status-success);\n color: var(--mj-text-inverse);\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: var(--mj-text-muted);\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.saving-overlay[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 8px 16px;\n background: color-mix(in srgb, var(--mj-status-info) 10%, var(--mj-bg-surface));\n border-bottom: 1px solid var(--mj-border-subtle);\n color: var(--mj-text-secondary);\n font-size: 13px;\n font-weight: 500;\n flex-shrink: 0;\n}\n\n.saving-spinner[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.content-saving[_ngcontent-%COMP%] {\n pointer-events: none;\n opacity: 0.6;\n}\n\n\n\n\n\n\n.query-header[_ngcontent-%COMP%] {\n flex-shrink: 0;\n background: var(--mj-brand-primary);\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: var(--mj-text-inverse, white);\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: var(--mj-text-sm);\n min-width: 60px;\n}\n\n.meta-value[_ngcontent-%COMP%] {\n color: rgba(255, 255, 255, 0.95);\n font-size: var(--mj-text-sm);\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: var(--mj-radius-xl);\n color: var(--mj-text-inverse, white);\n font-size: var(--mj-text-sm);\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: var(--mj-text-xs);\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: var(--mj-text-sm);\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: color-mix(in srgb, var(--mj-status-warning) 10%, var(--mj-bg-surface));\n border-left: 4px solid var(--mj-status-warning);\n font-size: var(--mj-text-sm);\n color: var(--mj-text-secondary);\n flex-shrink: 0;\n}\n\n.status-warning-banner[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: var(--mj-text-base);\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: var(--mj-bg-surface-card);\n}\n\n\n\n\n\n\n.query-panel[_ngcontent-%COMP%] {\n margin-bottom: 12px;\n}\n\n .query-content mj-accordion-panel .mj-accordion-panel {\n border: none !important;\n border-radius: var(--mj-radius-md) !important;\n margin-bottom: 12px !important;\n box-shadow: var(--mj-shadow-sm) !important;\n background: var(--mj-bg-surface) !important;\n overflow: hidden !important;\n}\n\n .query-content .mj-accordion-header {\n background: var(--mj-bg-surface) !important;\n border: none !important;\n padding: 14px 18px !important;\n border-radius: var(--mj-radius-md) !important;\n color: var(--mj-text-primary) !important;\n font-weight: 600 !important;\n font-size: var(--mj-text-sm) !important;\n transition: background 0.15s ease !important;\n}\n\n .query-content .mj-accordion-header:hover {\n background: var(--mj-bg-surface-card) !important;\n}\n\n .query-content .mj-accordion-panel--expanded .mj-accordion-header {\n background: var(--mj-brand-primary) !important;\n color: white !important;\n border-radius: var(--mj-radius-md) var(--mj-radius-md) 0 0 !important;\n}\n\n .query-content .mj-accordion-body {\n padding: 0 !important;\n border: none !important;\n background: var(--mj-bg-surface) !important;\n border-radius: 0 0 var(--mj-radius-md) var(--mj-radius-md) !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: var(--mj-text-sm);\n opacity: 0.7;\n}\n\n.sql-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n .mj-accordion-panel--expanded .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: var(--mj-radius-lg);\n font-size: var(--mj-text-xs);\n font-weight: 600;\n}\n\n.panel-badge.defined[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: white;\n}\n\n.panel-badge.count[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: white;\n}\n\n .mj-accordion-panel--expanded .panel-badge.count {\n background: rgba(255, 255, 255, 0.25) !important;\n}\n\n .mj-accordion-panel--expanded .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: var(--mj-text-xs);\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 var(--mj-border-default);\n border-radius: var(--mj-radius-sm);\n margin: 16px;\n}\n\n\n\n.filters-help[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 16px;\n margin: 0 16px 16px;\n}\n\n.filters-help-title[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n color: var(--mj-text-primary);\n font-weight: 600;\n font-size: var(--mj-text-sm);\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: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\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: var(--mj-shadow-md);\n}\n\n.filter-name[_ngcontent-%COMP%] {\n font-family: 'Courier New', monospace;\n font-weight: bold;\n color: var(--mj-brand-primary);\n margin-bottom: 4px;\n}\n\n.filter-description[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-secondary);\n margin-bottom: 6px;\n}\n\n.filter-syntax[_ngcontent-%COMP%] {\n font-family: 'Courier New', monospace;\n font-size: var(--mj-text-xs);\n background: var(--mj-bg-surface-card);\n padding: 6px;\n border-radius: var(--mj-radius-sm);\n margin-bottom: 4px;\n}\n\n.filter-notes[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-disabled);\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: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\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: var(--mj-brand-primary);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n}\n\n.item-card.required[_ngcontent-%COMP%] {\n border-left: 3px solid var(--mj-status-warning);\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: var(--mj-text-sm);\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.item-name-icon[_ngcontent-%COMP%] {\n font-size: var(--mj-text-sm);\n}\n\n.item-name-icon.param-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.item-name-icon.field-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.item-name-icon.entity-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\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: var(--mj-radius-lg);\n font-size: var(--mj-text-xs);\n font-weight: 600;\n color: white;\n}\n\n.item-badge.required[_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n}\n\n.item-badge.type[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.item-badge.sequence[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: color-mix(in srgb, var(--mj-brand-primary) 80%, purple);\n}\n\n.item-card-body[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-size: var(--mj-text-sm);\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: var(--mj-text-xs);\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: var(--mj-bg-surface-card);\n padding: 1px 4px;\n border-radius: var(--mj-radius-sm);\n font-size: var(--mj-text-xs);\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: var(--mj-radius-sm);\n cursor: pointer;\n color: var(--mj-text-disabled);\n transition: all 0.15s ease;\n}\n\n.item-action-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-brand-primary);\n}\n\n.item-action-btn.delete[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-error) 8%, var(--mj-bg-surface));\n color: var(--mj-status-error);\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: var(--mj-text-xs);\n font-weight: 600;\n color: var(--mj-text-disabled);\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: var(--mj-text-sm);\n color: var(--mj-text-primary);\n}\n\n.detail-tag[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: var(--mj-text-sm);\n}\n\n.detail-tag.positive[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.detail-tag.neutral[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n}\n\n.detail-hint[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n line-height: 1.4;\n}\n\n.detail-input-narrow[_ngcontent-%COMP%] {\n max-width: 120px;\n padding: 4px 8px;\n font-size: var(--mj-text-sm);\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: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 14px 16px;\n margin-bottom: 8px;\n}\n\n.permission-icon[_ngcontent-%COMP%] {\n font-size: 1.3em;\n color: var(--mj-brand-primary);\n}\n\n.permission-info[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.permission-role[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n font-size: var(--mj-text-sm);\n}\n\n.permission-type[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-disabled);\n}\n\n.permission-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n background: var(--mj-brand-primary);\n color: white;\n padding: 4px 10px;\n border-radius: var(--mj-radius-md);\n font-size: var(--mj-text-xs);\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: var(--mj-text-disabled);\n}\n\n.empty-state-icon[_ngcontent-%COMP%] {\n font-size: 40px;\n margin-bottom: 14px;\n opacity: 0.25;\n color: var(--mj-text-primary);\n}\n\n.empty-state-title[_ngcontent-%COMP%] {\n font-size: var(--mj-text-base);\n font-weight: 600;\n margin-bottom: 6px;\n color: var(--mj-text-secondary);\n}\n\n.empty-state-text[_ngcontent-%COMP%] {\n font-size: var(--mj-text-sm);\n margin-bottom: 16px;\n color: var(--mj-text-disabled);\n}\n\n\n\n\n\n\n.add-item-btn[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: white;\n border: none;\n padding: 8px 16px;\n border-radius: var(--mj-radius-md);\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: var(--mj-text-sm);\n}\n\n.add-item-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 85%, black);\n box-shadow: 0 2px 6px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\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 var(--mj-border-default);\n padding-top: 12px;\n}\n\n.preview-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\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}\n\n\n\n.dependents-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\n}\n\n.dependents-description[_ngcontent-%COMP%] {\n padding: 0 20px 12px;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.dependents-description[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n padding: 1px 5px;\n border-radius: 3px;\n font-size: 12px;\n}\n\n.dependent-card[_ngcontent-%COMP%] {\n cursor: pointer;\n border-left: 3px solid var(--mj-status-warning) !important;\n}\n\n.dependent-card[_ngcontent-%COMP%]:hover {\n border-left-color: var(--mj-status-warning-text) !important;\n background: color-mix(in srgb, var(--mj-status-warning) 8%, var(--mj-bg-surface)) !important;\n}\n\n.dependent-query-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-warning) !important;\n}\n\n.item-card-footer[_ngcontent-%COMP%] {\n padding-top: 8px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n margin-top: 8px;\n}\n\n.open-link[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-brand-primary);\n font-weight: 500;\n}\n\n.dependent-card[_ngcontent-%COMP%]:hover .open-link[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary-hover);\n}"] }); }
|
|
1803
2058
|
};
|
|
1804
2059
|
MJQueryFormComponentExtended = __decorate([
|
|
1805
2060
|
RegisterClass(BaseFormComponent, 'MJ: Queries')
|
|
@@ -1807,10 +2062,10 @@ MJQueryFormComponentExtended = __decorate([
|
|
|
1807
2062
|
export { MJQueryFormComponentExtended };
|
|
1808
2063
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJQueryFormComponentExtended, [{
|
|
1809
2064
|
type: Component,
|
|
1810
|
-
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\" [Config]=\"ToolbarConfig\"></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 <input class=\"mj-input query-name-input\"\n [(ngModel)]=\"record.Name\"\n name=\"queryName\"\n placeholder=\"Enter query name...\" />\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 mjButton\n variant=\"primary\"\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 <mj-dropdown\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 </mj-dropdown>\n } @else {\n <span class=\"meta-value\">{{ categoryPathDisplay || '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 <mj-dropdown\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 </mj-dropdown>\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 <textarea class=\"mj-input query-description-input\"\n [(ngModel)]=\"record.Description\"\n name=\"description\"\n rows=\"2\"\n placeholder=\"Enter query description...\">\n </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 <mj-accordion-panel\n [(Expanded)]=\"sqlPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\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\">— Defined</span>\n }\n </span>\n </span>\n </ng-template>\n\n <div class=\"sql-panel-toolbar\" style=\"display: flex; justify-content: flex-end; padding: 4px 0 8px;\">\n <button type=\"button\"\n mjButton\n variant=\"flat\"\n (click)=\"toggleFiltersHelp()\"\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 </div>\n\n <div class=\"sql-panel-content\">\n <!-- Code Editor -->\n <mj-code-editor #sqlEditor\n (change)=\"onSQLChange($event)\"\n (CompositionTokenClick)=\"onCompositionTokenClick($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 </mj-accordion-panel>\n\n <!-- Technical Description Panel -->\n @if (record.TechnicalDescription || EditMode) {\n <mj-accordion-panel\n [(Expanded)]=\"technicalDescriptionPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\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\">— Documented</span>\n }\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n @if (EditMode) {\n <textarea class=\"mj-input technical-description-textarea\"\n [(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 </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 </mj-accordion-panel>\n }\n\n <!-- Parameters Panel -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [(Expanded)]=\"parametersPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-sliders panel-icon\"></i>\n 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 </mj-accordion-panel>\n }\n\n <!-- Query Fields Panel -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [(Expanded)]=\"fieldsPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-table panel-icon\"></i>\n 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 </mj-accordion-panel>\n }\n\n <!-- Dependent Queries Panel -->\n @if (record.IsSaved && DependentQueries.length > 0) {\n <mj-accordion-panel\n [(Expanded)]=\"dependentsPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-arrow-left panel-icon dependents-icon\"></i>\n Dependent Queries\n <span class=\"panel-badge count\">{{ DependentQueries.length }}</span>\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n <div class=\"dependents-description\">\n These queries reference this query via <code>{{\"{{query:\\\"...\\\"}}\"}} </code> composition syntax.\n </div>\n <div class=\"card-grid\">\n @for (dep of DependentQueries; track dep.ID) {\n <div class=\"item-card dependent-card\" (click)=\"onDependentQueryClick(dep)\">\n <div class=\"item-card-header\">\n <div class=\"item-name\">\n <i class=\"fa-solid fa-arrow-left item-name-icon dependent-query-icon\"></i>\n {{ dep.Query }}\n </div>\n </div>\n <div class=\"item-card-body\">\n @if (dep.ReferencePath) {\n <div class=\"item-meta\">\n <span class=\"meta-tag\">\n <i class=\"fa-solid fa-link\"></i> {{ dep.ReferencePath }}\n </span>\n </div>\n }\n @if (dep.Alias) {\n <div class=\"item-meta\">\n <span class=\"meta-tag\">\n <strong>Alias:</strong> <code class=\"meta-code\">{{ dep.Alias }}</code>\n </span>\n </div>\n }\n </div>\n <div class=\"item-card-footer\">\n <span class=\"open-link\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\"></i> Open\n </span>\n </div>\n </div>\n }\n </div>\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Query Entities Panel -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [(Expanded)]=\"entitiesPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-database panel-icon\"></i>\n 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 <mj-dropdown\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 </mj-dropdown>\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 </mj-accordion-panel>\n }\n\n <!-- Details Panel -->\n <mj-accordion-panel\n [(Expanded)]=\"detailsPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-info-circle panel-icon\"></i>\n 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 <mj-switch [(ngModel)]=\"record.UsesTemplate\" name=\"usesTemplate\"></mj-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 </mj-accordion-panel>\n\n <!-- Permissions Panel -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [(Expanded)]=\"permissionsPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-shield-alt panel-icon\"></i>\n 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 </mj-accordion-panel>\n }\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: var(--mj-bg-surface);\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: var(--mj-bg-surface);\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group {\n margin-top: 0px;\n background-color: var(--mj-bg-surface);\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.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@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: var(--mj-bg-surface);\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: var(--mj-bg-surface-card);\n border-radius: 8px;\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\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: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header:hover {\n background: var(--mj-bg-surface-sunken);\n border-bottom-color: var(--mj-brand-primary);\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: var(--mj-brand-primary);\n}\n\n.collapsible-title h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.collapsible-header .collapse-icon {\n color: var(--mj-text-muted);\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: var(--mj-bg-surface-card);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.form-card.related-entity .collapsible-header {\n background: var(--mj-bg-surface-sunken);\n}\n\n.form-card.related-entity .collapsible-header:hover {\n background: var(--mj-bg-surface-card);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.form-card.related-entity .collapsible-title i {\n color: var(--mj-brand-primary);\n}\n\n/* Section Controls */\n.form-section-controls {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px var(--mj-shadow-sm);\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 var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\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: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px var(--mj-shadow-md);\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 var(--mj-border-strong);\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n.form-section-controls .section-search:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-section-controls .section-search::placeholder {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n.form-section-controls .section-count {\n font-size: 13px;\n color: var(--mj-text-muted);\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: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\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: var(--mj-status-warning);\n color: var(--mj-text-primary);\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: var(--mj-status-success);\n color: var(--mj-text-inverse);\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: var(--mj-text-muted);\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: var(--mj-brand-primary);\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: var(--mj-text-inverse, white);\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: var(--mj-text-sm);\n min-width: 60px;\n}\n\n.meta-value {\n color: rgba(255, 255, 255, 0.95);\n font-size: var(--mj-text-sm);\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: var(--mj-radius-xl);\n color: var(--mj-text-inverse, white);\n font-size: var(--mj-text-sm);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.status-pill i {\n font-size: var(--mj-text-xs);\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: var(--mj-text-sm);\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: color-mix(in srgb, var(--mj-status-warning) 10%, var(--mj-bg-surface));\n border-left: 4px solid var(--mj-status-warning);\n font-size: var(--mj-text-sm);\n color: var(--mj-text-secondary);\n flex-shrink: 0;\n}\n\n.status-warning-banner i {\n font-size: var(--mj-text-base);\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: var(--mj-bg-surface-card);\n}\n\n/* ========================================\n Accordion Panel Overrides \u2014 Modern Style\n ======================================== */\n\n.query-panel {\n margin-bottom: 12px;\n}\n\n::ng-deep .query-content mj-accordion-panel .mj-accordion-panel {\n border: none !important;\n border-radius: var(--mj-radius-md) !important;\n margin-bottom: 12px !important;\n box-shadow: var(--mj-shadow-sm) !important;\n background: var(--mj-bg-surface) !important;\n overflow: hidden !important;\n}\n\n::ng-deep .query-content .mj-accordion-header {\n background: var(--mj-bg-surface) !important;\n border: none !important;\n padding: 14px 18px !important;\n border-radius: var(--mj-radius-md) !important;\n color: var(--mj-text-primary) !important;\n font-weight: 600 !important;\n font-size: var(--mj-text-sm) !important;\n transition: background 0.15s ease !important;\n}\n\n::ng-deep .query-content .mj-accordion-header:hover {\n background: var(--mj-bg-surface-card) !important;\n}\n\n::ng-deep .query-content .mj-accordion-panel--expanded .mj-accordion-header {\n background: var(--mj-brand-primary) !important;\n color: white !important;\n border-radius: var(--mj-radius-md) var(--mj-radius-md) 0 0 !important;\n}\n\n::ng-deep .query-content .mj-accordion-body {\n padding: 0 !important;\n border: none !important;\n background: var(--mj-bg-surface) !important;\n border-radius: 0 0 var(--mj-radius-md) var(--mj-radius-md) !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: var(--mj-text-sm);\n opacity: 0.7;\n}\n\n.sql-icon {\n color: var(--mj-brand-primary);\n}\n\n::ng-deep .mj-accordion-panel--expanded .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: var(--mj-radius-lg);\n font-size: var(--mj-text-xs);\n font-weight: 600;\n}\n\n.panel-badge.defined {\n background: var(--mj-status-success);\n color: white;\n}\n\n.panel-badge.count {\n background: var(--mj-brand-primary);\n color: white;\n}\n\n::ng-deep .mj-accordion-panel--expanded .panel-badge.count {\n background: rgba(255, 255, 255, 0.25) !important;\n}\n\n::ng-deep .mj-accordion-panel--expanded .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: var(--mj-text-xs);\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 var(--mj-border-default);\n border-radius: var(--mj-radius-sm);\n margin: 16px;\n}\n\n/* Filters Help */\n.filters-help {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 16px;\n margin: 0 16px 16px;\n}\n\n.filters-help-title {\n margin: 0 0 12px 0;\n color: var(--mj-text-primary);\n font-weight: 600;\n font-size: var(--mj-text-sm);\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: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\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: var(--mj-shadow-md);\n}\n\n.filter-name {\n font-family: 'Courier New', monospace;\n font-weight: bold;\n color: var(--mj-brand-primary);\n margin-bottom: 4px;\n}\n\n.filter-description {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-secondary);\n margin-bottom: 6px;\n}\n\n.filter-syntax {\n font-family: 'Courier New', monospace;\n font-size: var(--mj-text-xs);\n background: var(--mj-bg-surface-card);\n padding: 6px;\n border-radius: var(--mj-radius-sm);\n margin-bottom: 4px;\n}\n\n.filter-notes {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-disabled);\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: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 14px;\n transition: all 0.15s ease;\n cursor: pointer;\n position: relative;\n}\n\n.item-card:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n}\n\n.item-card.required {\n border-left: 3px solid var(--mj-status-warning);\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: var(--mj-text-sm);\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.item-name-icon {\n font-size: var(--mj-text-sm);\n}\n\n.item-name-icon.param-icon {\n color: var(--mj-brand-primary);\n}\n\n.item-name-icon.field-icon {\n color: var(--mj-brand-primary);\n}\n\n.item-name-icon.entity-icon {\n color: var(--mj-status-success);\n}\n\n.item-badges {\n display: flex;\n gap: 6px;\n}\n\n.item-badge {\n padding: 2px 8px;\n border-radius: var(--mj-radius-lg);\n font-size: var(--mj-text-xs);\n font-weight: 600;\n color: white;\n}\n\n.item-badge.required {\n background: var(--mj-status-warning);\n}\n\n.item-badge.type {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.item-badge.sequence {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: color-mix(in srgb, var(--mj-brand-primary) 80%, purple);\n}\n\n.item-card-body {\n color: var(--mj-text-secondary);\n font-size: var(--mj-text-sm);\n}\n\n.item-description {\n margin-bottom: 8px;\n}\n\n.item-meta {\n display: flex;\n gap: 16px;\n font-size: var(--mj-text-xs);\n}\n\n.meta-tag {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n.meta-code {\n background: var(--mj-bg-surface-card);\n padding: 1px 4px;\n border-radius: var(--mj-radius-sm);\n font-size: var(--mj-text-xs);\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: var(--mj-radius-sm);\n cursor: pointer;\n color: var(--mj-text-disabled);\n transition: all 0.15s ease;\n}\n\n.item-action-btn:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-brand-primary);\n}\n\n.item-action-btn.delete:hover {\n background: color-mix(in srgb, var(--mj-status-error) 8%, var(--mj-bg-surface));\n color: var(--mj-status-error);\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: var(--mj-text-xs);\n font-weight: 600;\n color: var(--mj-text-disabled);\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: var(--mj-text-sm);\n color: var(--mj-text-primary);\n}\n\n.detail-tag {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: var(--mj-text-sm);\n}\n\n.detail-tag.positive {\n color: var(--mj-status-success);\n}\n\n.detail-tag.neutral {\n color: var(--mj-text-disabled);\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: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 14px 16px;\n margin-bottom: 8px;\n}\n\n.permission-icon {\n font-size: 1.3em;\n color: var(--mj-brand-primary);\n}\n\n.permission-info {\n flex: 1;\n}\n\n.permission-role {\n font-weight: 600;\n color: var(--mj-text-primary);\n font-size: var(--mj-text-sm);\n}\n\n.permission-type {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-disabled);\n}\n\n.permission-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n background: var(--mj-brand-primary);\n color: white;\n padding: 4px 10px;\n border-radius: var(--mj-radius-md);\n font-size: var(--mj-text-xs);\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: var(--mj-text-disabled);\n}\n\n.empty-state-icon {\n font-size: 40px;\n margin-bottom: 14px;\n opacity: 0.25;\n color: var(--mj-text-primary);\n}\n\n.empty-state-title {\n font-size: var(--mj-text-base);\n font-weight: 600;\n margin-bottom: 6px;\n color: var(--mj-text-secondary);\n}\n\n.empty-state-text {\n font-size: var(--mj-text-sm);\n margin-bottom: 16px;\n color: var(--mj-text-disabled);\n}\n\n/* ========================================\n Buttons\n ======================================== */\n\n.add-item-btn {\n background: var(--mj-brand-primary);\n color: white;\n border: none;\n padding: 8px 16px;\n border-radius: var(--mj-radius-md);\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: var(--mj-text-sm);\n}\n\n.add-item-btn:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 85%, black);\n box-shadow: 0 2px 6px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\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 var(--mj-border-default);\n padding-top: 12px;\n}\n\n.preview-label {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\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\n/* Dependent Queries */\n.dependents-icon {\n color: var(--mj-status-warning);\n}\n\n.dependents-description {\n padding: 0 20px 12px;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.dependents-description code {\n background: var(--mj-bg-surface-sunken);\n padding: 1px 5px;\n border-radius: 3px;\n font-size: 12px;\n}\n\n.dependent-card {\n cursor: pointer;\n border-left: 3px solid var(--mj-status-warning) !important;\n}\n\n.dependent-card:hover {\n border-left-color: var(--mj-status-warning-text) !important;\n background: color-mix(in srgb, var(--mj-status-warning) 8%, var(--mj-bg-surface)) !important;\n}\n\n.dependent-query-icon {\n color: var(--mj-status-warning) !important;\n}\n\n.item-card-footer {\n padding-top: 8px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n margin-top: 8px;\n}\n\n.open-link {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-brand-primary);\n font-weight: 500;\n}\n\n.dependent-card:hover .open-link {\n color: var(--mj-brand-primary-hover);\n}\n"] }]
|
|
2065
|
+
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\" [Config]=\"ToolbarConfig\" [IsSaving]=\"IsSaving\"></mj-form-toolbar>\n\n <!-- Saving Overlay -->\n @if (IsSaving) {\n <div class=\"saving-overlay\">\n <i class=\"fa-solid fa-spinner fa-spin saving-spinner\"></i>\n <span>Saving...</span>\n </div>\n }\n\n <!-- Header Section -->\n <div class=\"query-header\" [class.content-saving]=\"IsSaving\">\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 <input class=\"mj-input query-name-input\"\n [(ngModel)]=\"record.Name\"\n name=\"queryName\"\n placeholder=\"Enter query name...\" />\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 mjButton\n variant=\"primary\"\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 <mj-tree-dropdown\n [BranchConfig]=\"CategoryBranchConfig\"\n [Value]=\"CategoryIDAsKey\"\n [SelectableTypes]=\"'branch'\"\n [SelectionMode]=\"'single'\"\n [Placeholder]=\"'Select category...'\"\n [EnableSearch]=\"true\"\n [Clearable]=\"true\"\n (ValueChange)=\"OnCategoryTreeChange($event)\"\n class=\"meta-dropdown\">\n </mj-tree-dropdown>\n } @else {\n <span class=\"meta-value\">{{ categoryPathDisplay || '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 <mj-dropdown\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 </mj-dropdown>\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 <textarea class=\"mj-input query-description-input\"\n [(ngModel)]=\"record.Description\"\n name=\"description\"\n rows=\"2\"\n placeholder=\"Enter query description...\">\n </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\" [class.content-saving]=\"IsSaving\">\n\n <!-- SQL Query Panel -->\n <mj-accordion-panel\n [(Expanded)]=\"sqlPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\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\">— Defined</span>\n }\n </span>\n </span>\n </ng-template>\n\n <div class=\"sql-panel-toolbar\" style=\"display: flex; justify-content: flex-end; padding: 4px 0 8px;\">\n <button type=\"button\"\n mjButton\n variant=\"flat\"\n (click)=\"toggleFiltersHelp()\"\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 </div>\n\n <div class=\"sql-panel-content\">\n <!-- Code Editor -->\n <mj-code-editor #sqlEditor\n (change)=\"onSQLChange($event)\"\n (CompositionTokenClick)=\"onCompositionTokenClick($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 </mj-accordion-panel>\n\n <!-- Technical Description Panel -->\n @if (record.TechnicalDescription || EditMode) {\n <mj-accordion-panel\n [(Expanded)]=\"technicalDescriptionPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\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\">— Documented</span>\n }\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n @if (EditMode) {\n <textarea class=\"mj-input technical-description-textarea\"\n [(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 </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 </mj-accordion-panel>\n }\n\n <!-- Parameters Panel -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [(Expanded)]=\"parametersPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-sliders panel-icon\"></i>\n 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 </mj-accordion-panel>\n }\n\n <!-- Query Fields Panel -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [(Expanded)]=\"fieldsPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-table panel-icon\"></i>\n 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 </mj-accordion-panel>\n }\n\n <!-- Dependent Queries Panel -->\n @if (record.IsSaved && DependentQueries.length > 0) {\n <mj-accordion-panel\n [(Expanded)]=\"dependentsPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-arrow-left panel-icon dependents-icon\"></i>\n Dependent Queries\n <span class=\"panel-badge count\">{{ DependentQueries.length }}</span>\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n <div class=\"dependents-description\">\n These queries reference this query via <code>{{\"{{query:\\\"...\\\"}}\"}} </code> composition syntax.\n </div>\n <div class=\"card-grid\">\n @for (dep of DependentQueries; track dep.ID) {\n <div class=\"item-card dependent-card\" (click)=\"onDependentQueryClick(dep)\">\n <div class=\"item-card-header\">\n <div class=\"item-name\">\n <i class=\"fa-solid fa-arrow-left item-name-icon dependent-query-icon\"></i>\n {{ dep.Query }}\n </div>\n </div>\n <div class=\"item-card-body\">\n @if (dep.ReferencePath) {\n <div class=\"item-meta\">\n <span class=\"meta-tag\">\n <i class=\"fa-solid fa-link\"></i> {{ dep.ReferencePath }}\n </span>\n </div>\n }\n @if (dep.Alias) {\n <div class=\"item-meta\">\n <span class=\"meta-tag\">\n <strong>Alias:</strong> <code class=\"meta-code\">{{ dep.Alias }}</code>\n </span>\n </div>\n }\n </div>\n <div class=\"item-card-footer\">\n <span class=\"open-link\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\"></i> Open\n </span>\n </div>\n </div>\n }\n </div>\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Query Entities Panel -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [(Expanded)]=\"entitiesPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-database panel-icon\"></i>\n 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 <mj-dropdown\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 </mj-dropdown>\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 </mj-accordion-panel>\n }\n\n <!-- Details Panel -->\n <mj-accordion-panel\n [(Expanded)]=\"detailsPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-info-circle panel-icon\"></i>\n Details\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n <div class=\"details-grid\">\n <!-- Reusable -->\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-puzzle-piece\"></i> Reusable\n </label>\n @if (EditMode) {\n <mj-switch [(ngModel)]=\"record.Reusable\" name=\"reusable\"></mj-switch>\n <div class=\"detail-hint\">Allow other queries to reference this query using composition syntax</div>\n } @else {\n <div class=\"detail-value\">\n @if (record.Reusable) {\n <span class=\"detail-tag positive\"><i class=\"fa-solid fa-check\"></i> Reusable</span>\n } @else {\n <span class=\"detail-tag neutral\"><i class=\"fa-solid fa-times\"></i> Not Reusable</span>\n }\n </div>\n }\n </div>\n\n <!-- Cache Enabled -->\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-bolt\"></i> Cache Enabled\n </label>\n @if (EditMode) {\n <mj-switch [(ngModel)]=\"record.CacheEnabled\" name=\"cacheEnabled\"></mj-switch>\n <div class=\"detail-hint\">Cache query results in memory to reduce database load on repeated runs</div>\n } @else {\n <div class=\"detail-value\">\n @if (record.CacheEnabled) {\n <span class=\"detail-tag positive\"><i class=\"fa-solid fa-check\"></i> Caching On</span>\n } @else {\n <span class=\"detail-tag neutral\"><i class=\"fa-solid fa-times\"></i> Caching Off</span>\n }\n </div>\n }\n </div>\n\n <!-- Cache TTL -->\n @if (record.CacheEnabled) {\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-clock\"></i> Cache TTL (Minutes)\n </label>\n @if (EditMode) {\n <input class=\"mj-input detail-input-narrow\"\n type=\"number\"\n [(ngModel)]=\"record.CacheTTLMinutes\"\n name=\"cacheTTLMinutes\"\n min=\"1\"\n placeholder=\"Default\" />\n <div class=\"detail-hint\">How long cached results remain valid. Leave blank for default TTL.</div>\n } @else {\n <div class=\"detail-value\">{{ record.CacheTTLMinutes != null ? record.CacheTTLMinutes + ' min' : 'Default' }}</div>\n }\n </div>\n }\n\n <!-- Audit Query Runs -->\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-clipboard-list\"></i> Audit Runs\n </label>\n @if (EditMode) {\n <mj-switch [(ngModel)]=\"record.AuditQueryRuns\" name=\"auditQueryRuns\"></mj-switch>\n <div class=\"detail-hint\">Log all executions of this query to the Audit Log for tracking and compliance</div>\n } @else {\n <div class=\"detail-value\">\n @if (record.AuditQueryRuns) {\n <span class=\"detail-tag positive\"><i class=\"fa-solid fa-check\"></i> Auditing On</span>\n } @else {\n <span class=\"detail-tag neutral\"><i class=\"fa-solid fa-times\"></i> Auditing Off</span>\n }\n </div>\n }\n </div>\n\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 <mj-switch [(ngModel)]=\"record.UsesTemplate\" name=\"usesTemplate\"></mj-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 </mj-accordion-panel>\n\n <!-- Permissions Panel -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [(Expanded)]=\"permissionsPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-shield-alt panel-icon\"></i>\n 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 </mj-accordion-panel>\n }\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: var(--mj-bg-surface);\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: var(--mj-bg-surface);\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group {\n margin-top: 0px;\n background-color: var(--mj-bg-surface);\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.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@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: var(--mj-bg-surface);\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: var(--mj-bg-surface-card);\n border-radius: 8px;\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\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: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header:hover {\n background: var(--mj-bg-surface-sunken);\n border-bottom-color: var(--mj-brand-primary);\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: var(--mj-brand-primary);\n}\n\n.collapsible-title h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.collapsible-header .collapse-icon {\n color: var(--mj-text-muted);\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: var(--mj-bg-surface-card);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.form-card.related-entity .collapsible-header {\n background: var(--mj-bg-surface-sunken);\n}\n\n.form-card.related-entity .collapsible-header:hover {\n background: var(--mj-bg-surface-card);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.form-card.related-entity .collapsible-title i {\n color: var(--mj-brand-primary);\n}\n\n/* Section Controls */\n.form-section-controls {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px var(--mj-shadow-sm);\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 var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\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: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px var(--mj-shadow-md);\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 var(--mj-border-strong);\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n.form-section-controls .section-search:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-section-controls .section-search::placeholder {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n.form-section-controls .section-count {\n font-size: 13px;\n color: var(--mj-text-muted);\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: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\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: var(--mj-status-warning);\n color: var(--mj-text-primary);\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: var(--mj-status-success);\n color: var(--mj-text-inverse);\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: var(--mj-text-muted);\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 Saving Overlay\n ======================================== */\n\n.saving-overlay {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 8px 16px;\n background: color-mix(in srgb, var(--mj-status-info) 10%, var(--mj-bg-surface));\n border-bottom: 1px solid var(--mj-border-subtle);\n color: var(--mj-text-secondary);\n font-size: 13px;\n font-weight: 500;\n flex-shrink: 0;\n}\n\n.saving-spinner {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.content-saving {\n pointer-events: none;\n opacity: 0.6;\n}\n\n/* ========================================\n Header Section \u2014 matches Query Browser gradient\n ======================================== */\n\n.query-header {\n flex-shrink: 0;\n background: var(--mj-brand-primary);\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: var(--mj-text-inverse, white);\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: var(--mj-text-sm);\n min-width: 60px;\n}\n\n.meta-value {\n color: rgba(255, 255, 255, 0.95);\n font-size: var(--mj-text-sm);\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: var(--mj-radius-xl);\n color: var(--mj-text-inverse, white);\n font-size: var(--mj-text-sm);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.status-pill i {\n font-size: var(--mj-text-xs);\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: var(--mj-text-sm);\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: color-mix(in srgb, var(--mj-status-warning) 10%, var(--mj-bg-surface));\n border-left: 4px solid var(--mj-status-warning);\n font-size: var(--mj-text-sm);\n color: var(--mj-text-secondary);\n flex-shrink: 0;\n}\n\n.status-warning-banner i {\n font-size: var(--mj-text-base);\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: var(--mj-bg-surface-card);\n}\n\n/* ========================================\n Accordion Panel Overrides \u2014 Modern Style\n ======================================== */\n\n.query-panel {\n margin-bottom: 12px;\n}\n\n::ng-deep .query-content mj-accordion-panel .mj-accordion-panel {\n border: none !important;\n border-radius: var(--mj-radius-md) !important;\n margin-bottom: 12px !important;\n box-shadow: var(--mj-shadow-sm) !important;\n background: var(--mj-bg-surface) !important;\n overflow: hidden !important;\n}\n\n::ng-deep .query-content .mj-accordion-header {\n background: var(--mj-bg-surface) !important;\n border: none !important;\n padding: 14px 18px !important;\n border-radius: var(--mj-radius-md) !important;\n color: var(--mj-text-primary) !important;\n font-weight: 600 !important;\n font-size: var(--mj-text-sm) !important;\n transition: background 0.15s ease !important;\n}\n\n::ng-deep .query-content .mj-accordion-header:hover {\n background: var(--mj-bg-surface-card) !important;\n}\n\n::ng-deep .query-content .mj-accordion-panel--expanded .mj-accordion-header {\n background: var(--mj-brand-primary) !important;\n color: white !important;\n border-radius: var(--mj-radius-md) var(--mj-radius-md) 0 0 !important;\n}\n\n::ng-deep .query-content .mj-accordion-body {\n padding: 0 !important;\n border: none !important;\n background: var(--mj-bg-surface) !important;\n border-radius: 0 0 var(--mj-radius-md) var(--mj-radius-md) !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: var(--mj-text-sm);\n opacity: 0.7;\n}\n\n.sql-icon {\n color: var(--mj-brand-primary);\n}\n\n::ng-deep .mj-accordion-panel--expanded .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: var(--mj-radius-lg);\n font-size: var(--mj-text-xs);\n font-weight: 600;\n}\n\n.panel-badge.defined {\n background: var(--mj-status-success);\n color: white;\n}\n\n.panel-badge.count {\n background: var(--mj-brand-primary);\n color: white;\n}\n\n::ng-deep .mj-accordion-panel--expanded .panel-badge.count {\n background: rgba(255, 255, 255, 0.25) !important;\n}\n\n::ng-deep .mj-accordion-panel--expanded .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: var(--mj-text-xs);\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 var(--mj-border-default);\n border-radius: var(--mj-radius-sm);\n margin: 16px;\n}\n\n/* Filters Help */\n.filters-help {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 16px;\n margin: 0 16px 16px;\n}\n\n.filters-help-title {\n margin: 0 0 12px 0;\n color: var(--mj-text-primary);\n font-weight: 600;\n font-size: var(--mj-text-sm);\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: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\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: var(--mj-shadow-md);\n}\n\n.filter-name {\n font-family: 'Courier New', monospace;\n font-weight: bold;\n color: var(--mj-brand-primary);\n margin-bottom: 4px;\n}\n\n.filter-description {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-secondary);\n margin-bottom: 6px;\n}\n\n.filter-syntax {\n font-family: 'Courier New', monospace;\n font-size: var(--mj-text-xs);\n background: var(--mj-bg-surface-card);\n padding: 6px;\n border-radius: var(--mj-radius-sm);\n margin-bottom: 4px;\n}\n\n.filter-notes {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-disabled);\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: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 14px;\n transition: all 0.15s ease;\n cursor: pointer;\n position: relative;\n}\n\n.item-card:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n}\n\n.item-card.required {\n border-left: 3px solid var(--mj-status-warning);\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: var(--mj-text-sm);\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.item-name-icon {\n font-size: var(--mj-text-sm);\n}\n\n.item-name-icon.param-icon {\n color: var(--mj-brand-primary);\n}\n\n.item-name-icon.field-icon {\n color: var(--mj-brand-primary);\n}\n\n.item-name-icon.entity-icon {\n color: var(--mj-status-success);\n}\n\n.item-badges {\n display: flex;\n gap: 6px;\n}\n\n.item-badge {\n padding: 2px 8px;\n border-radius: var(--mj-radius-lg);\n font-size: var(--mj-text-xs);\n font-weight: 600;\n color: white;\n}\n\n.item-badge.required {\n background: var(--mj-status-warning);\n}\n\n.item-badge.type {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.item-badge.sequence {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: color-mix(in srgb, var(--mj-brand-primary) 80%, purple);\n}\n\n.item-card-body {\n color: var(--mj-text-secondary);\n font-size: var(--mj-text-sm);\n}\n\n.item-description {\n margin-bottom: 8px;\n}\n\n.item-meta {\n display: flex;\n gap: 16px;\n font-size: var(--mj-text-xs);\n}\n\n.meta-tag {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n.meta-code {\n background: var(--mj-bg-surface-card);\n padding: 1px 4px;\n border-radius: var(--mj-radius-sm);\n font-size: var(--mj-text-xs);\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: var(--mj-radius-sm);\n cursor: pointer;\n color: var(--mj-text-disabled);\n transition: all 0.15s ease;\n}\n\n.item-action-btn:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-brand-primary);\n}\n\n.item-action-btn.delete:hover {\n background: color-mix(in srgb, var(--mj-status-error) 8%, var(--mj-bg-surface));\n color: var(--mj-status-error);\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: var(--mj-text-xs);\n font-weight: 600;\n color: var(--mj-text-disabled);\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: var(--mj-text-sm);\n color: var(--mj-text-primary);\n}\n\n.detail-tag {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: var(--mj-text-sm);\n}\n\n.detail-tag.positive {\n color: var(--mj-status-success);\n}\n\n.detail-tag.neutral {\n color: var(--mj-text-disabled);\n}\n\n.detail-hint {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n line-height: 1.4;\n}\n\n.detail-input-narrow {\n max-width: 120px;\n padding: 4px 8px;\n font-size: var(--mj-text-sm);\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: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 14px 16px;\n margin-bottom: 8px;\n}\n\n.permission-icon {\n font-size: 1.3em;\n color: var(--mj-brand-primary);\n}\n\n.permission-info {\n flex: 1;\n}\n\n.permission-role {\n font-weight: 600;\n color: var(--mj-text-primary);\n font-size: var(--mj-text-sm);\n}\n\n.permission-type {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-disabled);\n}\n\n.permission-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n background: var(--mj-brand-primary);\n color: white;\n padding: 4px 10px;\n border-radius: var(--mj-radius-md);\n font-size: var(--mj-text-xs);\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: var(--mj-text-disabled);\n}\n\n.empty-state-icon {\n font-size: 40px;\n margin-bottom: 14px;\n opacity: 0.25;\n color: var(--mj-text-primary);\n}\n\n.empty-state-title {\n font-size: var(--mj-text-base);\n font-weight: 600;\n margin-bottom: 6px;\n color: var(--mj-text-secondary);\n}\n\n.empty-state-text {\n font-size: var(--mj-text-sm);\n margin-bottom: 16px;\n color: var(--mj-text-disabled);\n}\n\n/* ========================================\n Buttons\n ======================================== */\n\n.add-item-btn {\n background: var(--mj-brand-primary);\n color: white;\n border: none;\n padding: 8px 16px;\n border-radius: var(--mj-radius-md);\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: var(--mj-text-sm);\n}\n\n.add-item-btn:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 85%, black);\n box-shadow: 0 2px 6px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\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 var(--mj-border-default);\n padding-top: 12px;\n}\n\n.preview-label {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\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\n/* Dependent Queries */\n.dependents-icon {\n color: var(--mj-status-warning);\n}\n\n.dependents-description {\n padding: 0 20px 12px;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.dependents-description code {\n background: var(--mj-bg-surface-sunken);\n padding: 1px 5px;\n border-radius: 3px;\n font-size: 12px;\n}\n\n.dependent-card {\n cursor: pointer;\n border-left: 3px solid var(--mj-status-warning) !important;\n}\n\n.dependent-card:hover {\n border-left-color: var(--mj-status-warning-text) !important;\n background: color-mix(in srgb, var(--mj-status-warning) 8%, var(--mj-bg-surface)) !important;\n}\n\n.dependent-query-icon {\n color: var(--mj-status-warning) !important;\n}\n\n.item-card-footer {\n padding-top: 8px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n margin-top: 8px;\n}\n\n.open-link {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-brand-primary);\n font-weight: 500;\n}\n\n.dependent-card:hover .open-link {\n color: var(--mj-brand-primary-hover);\n}\n"] }]
|
|
1811
2066
|
}], null, { sqlEditor: [{
|
|
1812
2067
|
type: ViewChild,
|
|
1813
2068
|
args: ['sqlEditor']
|
|
1814
2069
|
}] }); })();
|
|
1815
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJQueryFormComponentExtended, { className: "MJQueryFormComponentExtended", filePath: "src/lib/custom/Queries/query-form.component.ts", lineNumber:
|
|
2070
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJQueryFormComponentExtended, { className: "MJQueryFormComponentExtended", filePath: "src/lib/custom/Queries/query-form.component.ts", lineNumber: 26 }); })();
|
|
1816
2071
|
//# sourceMappingURL=query-form.component.js.map
|