@memberjunction/ng-core-entity-forms 5.29.0 → 5.30.1
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/AIAgents/ai-agent-form.component.d.ts +4 -0
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js +567 -566
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts +3 -0
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +243 -244
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts +3 -0
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +417 -416
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts +51 -16
- package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Actions/action-execution-log-form.component.js +422 -139
- package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-form.component.d.ts +68 -1
- package/dist/lib/custom/Actions/action-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Actions/action-form.component.js +882 -422
- package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
- package/dist/lib/custom/EntityActions/entityaction.form.component.d.ts +3 -0
- package/dist/lib/custom/EntityActions/entityaction.form.component.d.ts.map +1 -1
- package/dist/lib/custom/EntityActions/entityaction.form.component.js +23 -22
- package/dist/lib/custom/EntityActions/entityaction.form.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.d.ts +2 -0
- package/dist/lib/custom/Queries/query-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.js +617 -627
- package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
- package/dist/lib/custom/Templates/templates-form.component.d.ts +3 -0
- package/dist/lib/custom/Templates/templates-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Templates/templates-form.component.js +157 -158
- package/dist/lib/custom/Templates/templates-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 +176 -152
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentNote/mjaiagentnote.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentNote/mjaiagentnote.form.component.js +42 -6
- package/dist/lib/generated/Entities/MJAIAgentNote/mjaiagentnote.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js +57 -49
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js +83 -77
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJArchiveRunDetail/mjarchiverundetail.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJArchiveRunDetail/mjarchiverundetail.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/MJEntityPermission/mjentitypermission.form.component.js +11 -9
- package/dist/lib/generated/Entities/MJEntityPermission/mjentitypermission.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJFileStorageAccount/mjfilestorageaccount.form.component.js +9 -9
- package/dist/lib/generated/Entities/MJFileStorageAccount/mjfilestorageaccount.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJIntegrationObject/mjintegrationobject.form.component.js +23 -21
- package/dist/lib/generated/Entities/MJIntegrationObject/mjintegrationobject.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJIntegrationObjectField/mjintegrationobjectfield.form.component.js +9 -7
- package/dist/lib/generated/Entities/MJIntegrationObjectField/mjintegrationobjectfield.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJPermissionDomain/mjpermissiondomain.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJPermissionDomain/mjpermissiondomain.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJPermissionDomain/mjpermissiondomain.form.component.js +85 -0
- package/dist/lib/generated/Entities/MJPermissionDomain/mjpermissiondomain.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJResourcePermission/mjresourcepermission.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJResourcePermission/mjresourcepermission.form.component.js +21 -12
- package/dist/lib/generated/Entities/MJResourcePermission/mjresourcepermission.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJRowLevelSecurityFilter/mjrowlevelsecurityfilter.form.component.js +5 -5
- package/dist/lib/generated/Entities/MJRowLevelSecurityFilter/mjrowlevelsecurityfilter.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTag/mjtag.form.component.js +21 -21
- 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 +201 -183
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
- package/dist/lib/generated/generated-forms.module.d.ts +97 -96
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +36 -33
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/dist/lib/shared/components/template-editor.component.d.ts.map +1 -1
- package/dist/lib/shared/components/template-editor.component.js +14 -8
- package/dist/lib/shared/components/template-editor.component.js.map +1 -1
- package/package.json +34 -34
|
@@ -6,7 +6,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
6
6
|
};
|
|
7
7
|
import { Component, ViewChild, inject } from '@angular/core';
|
|
8
8
|
import { RegisterClass, UUIDsEqual } from '@memberjunction/global';
|
|
9
|
-
import { BaseFormComponent,
|
|
9
|
+
import { BaseFormComponent, CUSTOM_LAYOUT_TOOLBAR_CONFIG } from '@memberjunction/ng-base-forms';
|
|
10
10
|
import { MJQueryFormComponent } from '../../generated/Entities/MJQuery/mjquery.form.component';
|
|
11
11
|
import { Metadata, RunView, RUN_QUERY_SQL_FILTERS, CompositeKey } from '@memberjunction/core';
|
|
12
12
|
import { MJNotificationService } from '@memberjunction/ng-notifications';
|
|
@@ -27,114 +27,114 @@ const _c0 = ["sqlEditor"];
|
|
|
27
27
|
const _forTrack0 = ($index, $item) => $item.name;
|
|
28
28
|
const _forTrack1 = ($index, $item) => $item.ID || $index;
|
|
29
29
|
const _forTrack2 = ($index, $item) => $item.ID;
|
|
30
|
-
function
|
|
31
|
-
i0.ɵɵelementStart(0, "div",
|
|
32
|
-
i0.ɵɵelement(1, "i",
|
|
30
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
31
|
+
i0.ɵɵelementStart(0, "div", 4);
|
|
32
|
+
i0.ɵɵelement(1, "i", 48);
|
|
33
33
|
i0.ɵɵelementStart(2, "span");
|
|
34
34
|
i0.ɵɵtext(3, "Saving...");
|
|
35
35
|
i0.ɵɵelementEnd()();
|
|
36
36
|
} }
|
|
37
|
-
function
|
|
38
|
-
const
|
|
39
|
-
i0.ɵɵelementStart(0, "input",
|
|
40
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
37
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
38
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
39
|
+
i0.ɵɵelementStart(0, "input", 49);
|
|
40
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_0_Conditional_9_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.record.Name, $event) || (ctx_r1.record.Name = $event); return i0.ɵɵresetView($event); });
|
|
41
41
|
i0.ɵɵelementEnd();
|
|
42
42
|
} if (rf & 2) {
|
|
43
|
-
const
|
|
44
|
-
i0.ɵɵtwoWayProperty("ngModel",
|
|
43
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
44
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.Name);
|
|
45
45
|
} }
|
|
46
|
-
function
|
|
47
|
-
i0.ɵɵelementStart(0, "h4",
|
|
46
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
47
|
+
i0.ɵɵelementStart(0, "h4", 11);
|
|
48
48
|
i0.ɵɵtext(1);
|
|
49
49
|
i0.ɵɵelementEnd();
|
|
50
50
|
} if (rf & 2) {
|
|
51
|
-
const
|
|
51
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
52
52
|
i0.ɵɵadvance();
|
|
53
|
-
i0.ɵɵtextInterpolate(
|
|
53
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.Name || "Untitled Query");
|
|
54
54
|
} }
|
|
55
|
-
function
|
|
55
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
56
56
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
57
|
-
i0.ɵɵelementStart(0, "button",
|
|
58
|
-
i0.ɵɵlistener("click", function
|
|
59
|
-
i0.ɵɵelement(1, "i",
|
|
57
|
+
i0.ɵɵelementStart(0, "button", 50);
|
|
58
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_0_Conditional_12_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.runQuery()); });
|
|
59
|
+
i0.ɵɵelement(1, "i", 51);
|
|
60
60
|
i0.ɵɵtext(2, " Run ");
|
|
61
61
|
i0.ɵɵelementEnd();
|
|
62
62
|
} if (rf & 2) {
|
|
63
|
-
const
|
|
64
|
-
i0.ɵɵproperty("disabled",
|
|
63
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
64
|
+
i0.ɵɵproperty("disabled", ctx_r1.EditMode || !ctx_r1.record.SQL || ctx_r1.record.SQL.trim().length === 0);
|
|
65
65
|
} }
|
|
66
|
-
function
|
|
66
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
67
67
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
68
|
-
i0.ɵɵelementStart(0, "mj-tree-dropdown",
|
|
69
|
-
i0.ɵɵlistener("ValueChange", function
|
|
68
|
+
i0.ɵɵelementStart(0, "mj-tree-dropdown", 52);
|
|
69
|
+
i0.ɵɵlistener("ValueChange", function MJQueryFormComponentExtended_Conditional_0_Conditional_17_Template_mj_tree_dropdown_ValueChange_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnCategoryTreeChange($event)); });
|
|
70
70
|
i0.ɵɵelementEnd();
|
|
71
71
|
} if (rf & 2) {
|
|
72
|
-
const
|
|
73
|
-
i0.ɵɵproperty("BranchConfig",
|
|
72
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
73
|
+
i0.ɵɵproperty("BranchConfig", ctx_r1.CategoryBranchConfig)("Value", ctx_r1.CategoryIDAsKey)("SelectableTypes", "branch")("SelectionMode", "single")("Placeholder", "Select category...")("EnableSearch", true)("Clearable", true);
|
|
74
74
|
} }
|
|
75
|
-
function
|
|
76
|
-
i0.ɵɵelementStart(0, "span",
|
|
75
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
76
|
+
i0.ɵɵelementStart(0, "span", 18);
|
|
77
77
|
i0.ɵɵtext(1);
|
|
78
78
|
i0.ɵɵelementEnd();
|
|
79
79
|
} if (rf & 2) {
|
|
80
|
-
const
|
|
80
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
81
81
|
i0.ɵɵadvance();
|
|
82
|
-
i0.ɵɵtextInterpolate(
|
|
82
|
+
i0.ɵɵtextInterpolate(ctx_r1.categoryPathDisplay || "Uncategorized");
|
|
83
83
|
} }
|
|
84
|
-
function
|
|
84
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
85
85
|
const _r6 = i0.ɵɵgetCurrentView();
|
|
86
|
-
i0.ɵɵelementStart(0, "mj-dropdown",
|
|
87
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
86
|
+
i0.ɵɵelementStart(0, "mj-dropdown", 53);
|
|
87
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_0_Conditional_22_Template_mj_dropdown_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.record.Status, $event) || (ctx_r1.record.Status = $event); return i0.ɵɵresetView($event); });
|
|
88
88
|
i0.ɵɵelementEnd();
|
|
89
89
|
} if (rf & 2) {
|
|
90
|
-
const
|
|
91
|
-
i0.ɵɵtwoWayProperty("ngModel",
|
|
92
|
-
i0.ɵɵproperty("Data",
|
|
90
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
91
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.Status);
|
|
92
|
+
i0.ɵɵproperty("Data", ctx_r1.statusOptions)("ValuePrimitive", true);
|
|
93
93
|
} }
|
|
94
|
-
function
|
|
95
|
-
i0.ɵɵelementStart(0, "span",
|
|
96
|
-
i0.ɵɵelement(1, "i",
|
|
94
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
95
|
+
i0.ɵɵelementStart(0, "span", 54);
|
|
96
|
+
i0.ɵɵelement(1, "i", 55);
|
|
97
97
|
i0.ɵɵtext(2);
|
|
98
98
|
i0.ɵɵelementEnd();
|
|
99
99
|
} if (rf & 2) {
|
|
100
|
-
const
|
|
101
|
-
i0.ɵɵstyleProp("background",
|
|
100
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
101
|
+
i0.ɵɵstyleProp("background", ctx_r1.getStatusBadgeColor());
|
|
102
102
|
i0.ɵɵadvance();
|
|
103
|
-
i0.ɵɵclassMap(
|
|
103
|
+
i0.ɵɵclassMap(ctx_r1.getStatusBannerIcon());
|
|
104
104
|
i0.ɵɵadvance();
|
|
105
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
105
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Status || "Unknown", " ");
|
|
106
106
|
} }
|
|
107
|
-
function
|
|
107
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_24_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
108
108
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
109
|
-
i0.ɵɵelementStart(0, "textarea",
|
|
110
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
109
|
+
i0.ɵɵelementStart(0, "textarea", 58);
|
|
110
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_0_Conditional_24_Conditional_1_Template_textarea_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.record.Description, $event) || (ctx_r1.record.Description = $event); return i0.ɵɵresetView($event); });
|
|
111
111
|
i0.ɵɵtext(1, " ");
|
|
112
112
|
i0.ɵɵelementEnd();
|
|
113
113
|
} if (rf & 2) {
|
|
114
|
-
const
|
|
115
|
-
i0.ɵɵtwoWayProperty("ngModel",
|
|
114
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
115
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.Description);
|
|
116
116
|
} }
|
|
117
|
-
function
|
|
118
|
-
i0.ɵɵelementStart(0, "p",
|
|
117
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_24_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
118
|
+
i0.ɵɵelementStart(0, "p", 57);
|
|
119
119
|
i0.ɵɵtext(1);
|
|
120
120
|
i0.ɵɵelementEnd();
|
|
121
121
|
} if (rf & 2) {
|
|
122
|
-
const
|
|
122
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
123
123
|
i0.ɵɵadvance();
|
|
124
|
-
i0.ɵɵtextInterpolate(
|
|
124
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.Description);
|
|
125
125
|
} }
|
|
126
|
-
function
|
|
127
|
-
i0.ɵɵelementStart(0, "div",
|
|
128
|
-
i0.ɵɵconditionalCreate(1,
|
|
126
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_24_Template(rf, ctx) { if (rf & 1) {
|
|
127
|
+
i0.ɵɵelementStart(0, "div", 21);
|
|
128
|
+
i0.ɵɵconditionalCreate(1, MJQueryFormComponentExtended_Conditional_0_Conditional_24_Conditional_1_Template, 2, 1, "textarea", 56)(2, MJQueryFormComponentExtended_Conditional_0_Conditional_24_Conditional_2_Template, 2, 1, "p", 57);
|
|
129
129
|
i0.ɵɵelementEnd();
|
|
130
130
|
} if (rf & 2) {
|
|
131
|
-
const
|
|
131
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
132
132
|
i0.ɵɵadvance();
|
|
133
|
-
i0.ɵɵconditional(
|
|
133
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 1 : 2);
|
|
134
134
|
} }
|
|
135
|
-
function
|
|
136
|
-
i0.ɵɵelementStart(0, "div",
|
|
137
|
-
i0.ɵɵelement(1, "i",
|
|
135
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_25_Template(rf, ctx) { if (rf & 1) {
|
|
136
|
+
i0.ɵɵelementStart(0, "div", 59);
|
|
137
|
+
i0.ɵɵelement(1, "i", 55);
|
|
138
138
|
i0.ɵɵelementStart(2, "span");
|
|
139
139
|
i0.ɵɵtext(3, " This query has status ");
|
|
140
140
|
i0.ɵɵelementStart(4, "strong");
|
|
@@ -143,34 +143,34 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_25_Template(rf,
|
|
|
143
143
|
i0.ɵɵtext(6);
|
|
144
144
|
i0.ɵɵelementEnd()();
|
|
145
145
|
} if (rf & 2) {
|
|
146
|
-
const
|
|
147
|
-
i0.ɵɵstyleProp("border-left-color",
|
|
146
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
147
|
+
i0.ɵɵstyleProp("border-left-color", ctx_r1.getStatusBadgeColor());
|
|
148
148
|
i0.ɵɵadvance();
|
|
149
|
-
i0.ɵɵclassMap(
|
|
150
|
-
i0.ɵɵstyleProp("color",
|
|
149
|
+
i0.ɵɵclassMap(ctx_r1.getStatusBannerIcon());
|
|
150
|
+
i0.ɵɵstyleProp("color", ctx_r1.getStatusBadgeColor());
|
|
151
151
|
i0.ɵɵadvance(4);
|
|
152
|
-
i0.ɵɵtextInterpolate(
|
|
152
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.Status);
|
|
153
153
|
i0.ɵɵadvance();
|
|
154
|
-
i0.ɵɵtextInterpolate1(". ",
|
|
154
|
+
i0.ɵɵtextInterpolate1(". ", ctx_r1.getStatusBannerMessage(), " ");
|
|
155
155
|
} }
|
|
156
|
-
function
|
|
157
|
-
i0.ɵɵelementStart(0, "span",
|
|
156
|
+
function MJQueryFormComponentExtended_Conditional_0_ng_template_28_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
157
|
+
i0.ɵɵelementStart(0, "span", 63);
|
|
158
158
|
i0.ɵɵtext(1, "\u2014 Defined");
|
|
159
159
|
i0.ɵɵelementEnd();
|
|
160
160
|
} }
|
|
161
|
-
function
|
|
162
|
-
i0.ɵɵelementStart(0, "span",
|
|
163
|
-
i0.ɵɵelement(2, "i",
|
|
161
|
+
function MJQueryFormComponentExtended_Conditional_0_ng_template_28_Template(rf, ctx) { if (rf & 1) {
|
|
162
|
+
i0.ɵɵelementStart(0, "span", 60)(1, "span", 61);
|
|
163
|
+
i0.ɵɵelement(2, "i", 62);
|
|
164
164
|
i0.ɵɵtext(3, " SQL ");
|
|
165
|
-
i0.ɵɵconditionalCreate(4,
|
|
165
|
+
i0.ɵɵconditionalCreate(4, MJQueryFormComponentExtended_Conditional_0_ng_template_28_Conditional_4_Template, 2, 0, "span", 63);
|
|
166
166
|
i0.ɵɵelementEnd()();
|
|
167
167
|
} if (rf & 2) {
|
|
168
|
-
const
|
|
168
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
169
169
|
i0.ɵɵadvance(4);
|
|
170
|
-
i0.ɵɵconditional(
|
|
170
|
+
i0.ɵɵconditional(ctx_r1.record.SQL ? 4 : -1);
|
|
171
171
|
} }
|
|
172
|
-
function
|
|
173
|
-
i0.ɵɵelementStart(0, "div",
|
|
172
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_38_For_6_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
173
|
+
i0.ɵɵelementStart(0, "div", 71);
|
|
174
174
|
i0.ɵɵtext(1);
|
|
175
175
|
i0.ɵɵelementEnd();
|
|
176
176
|
} if (rf & 2) {
|
|
@@ -178,17 +178,17 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_38_For_6_Conditi
|
|
|
178
178
|
i0.ɵɵadvance();
|
|
179
179
|
i0.ɵɵtextInterpolate(filter_r8.notes);
|
|
180
180
|
} }
|
|
181
|
-
function
|
|
182
|
-
i0.ɵɵelementStart(0, "div",
|
|
181
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_38_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
182
|
+
i0.ɵɵelementStart(0, "div", 67)(1, "div", 68);
|
|
183
183
|
i0.ɵɵtext(2);
|
|
184
184
|
i0.ɵɵelementEnd();
|
|
185
|
-
i0.ɵɵelementStart(3, "div",
|
|
185
|
+
i0.ɵɵelementStart(3, "div", 69);
|
|
186
186
|
i0.ɵɵtext(4);
|
|
187
187
|
i0.ɵɵelementEnd();
|
|
188
|
-
i0.ɵɵelementStart(5, "div",
|
|
188
|
+
i0.ɵɵelementStart(5, "div", 70);
|
|
189
189
|
i0.ɵɵtext(6);
|
|
190
190
|
i0.ɵɵelementEnd();
|
|
191
|
-
i0.ɵɵconditionalCreate(7,
|
|
191
|
+
i0.ɵɵconditionalCreate(7, MJQueryFormComponentExtended_Conditional_0_Conditional_38_For_6_Conditional_7_Template, 2, 1, "div", 71);
|
|
192
192
|
i0.ɵɵelementEnd();
|
|
193
193
|
} if (rf & 2) {
|
|
194
194
|
const filter_r8 = ctx.$implicit;
|
|
@@ -201,147 +201,147 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_38_For_6_Templat
|
|
|
201
201
|
i0.ɵɵadvance();
|
|
202
202
|
i0.ɵɵconditional(filter_r8.notes ? 7 : -1);
|
|
203
203
|
} }
|
|
204
|
-
function
|
|
205
|
-
i0.ɵɵelementStart(0, "div",
|
|
206
|
-
i0.ɵɵelement(2, "i",
|
|
204
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_38_Template(rf, ctx) { if (rf & 1) {
|
|
205
|
+
i0.ɵɵelementStart(0, "div", 32)(1, "h6", 64);
|
|
206
|
+
i0.ɵɵelement(2, "i", 65);
|
|
207
207
|
i0.ɵɵtext(3, " Available SQL Filters for Parameterized Queries ");
|
|
208
208
|
i0.ɵɵelementEnd();
|
|
209
|
-
i0.ɵɵelementStart(4, "div",
|
|
210
|
-
i0.ɵɵrepeaterCreate(5,
|
|
209
|
+
i0.ɵɵelementStart(4, "div", 66);
|
|
210
|
+
i0.ɵɵrepeaterCreate(5, MJQueryFormComponentExtended_Conditional_0_Conditional_38_For_6_Template, 8, 4, "div", 67, _forTrack0);
|
|
211
211
|
i0.ɵɵelementEnd()();
|
|
212
212
|
} if (rf & 2) {
|
|
213
|
-
const
|
|
213
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
214
214
|
i0.ɵɵadvance(5);
|
|
215
|
-
i0.ɵɵrepeater(
|
|
215
|
+
i0.ɵɵrepeater(ctx_r1.sqlFilters);
|
|
216
216
|
} }
|
|
217
|
-
function
|
|
218
|
-
i0.ɵɵelementStart(0, "span",
|
|
217
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_39_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
218
|
+
i0.ɵɵelementStart(0, "span", 63);
|
|
219
219
|
i0.ɵɵtext(1, "\u2014 Documented");
|
|
220
220
|
i0.ɵɵelementEnd();
|
|
221
221
|
} }
|
|
222
|
-
function
|
|
223
|
-
i0.ɵɵelementStart(0, "span",
|
|
224
|
-
i0.ɵɵelement(1, "i",
|
|
222
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_39_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
223
|
+
i0.ɵɵelementStart(0, "span", 61);
|
|
224
|
+
i0.ɵɵelement(1, "i", 73);
|
|
225
225
|
i0.ɵɵtext(2, " Technical Description ");
|
|
226
|
-
i0.ɵɵconditionalCreate(3,
|
|
226
|
+
i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_0_Conditional_39_ng_template_1_Conditional_3_Template, 2, 0, "span", 63);
|
|
227
227
|
i0.ɵɵelementEnd();
|
|
228
228
|
} if (rf & 2) {
|
|
229
|
-
const
|
|
229
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
230
230
|
i0.ɵɵadvance(3);
|
|
231
|
-
i0.ɵɵconditional(
|
|
231
|
+
i0.ɵɵconditional(ctx_r1.record.TechnicalDescription ? 3 : -1);
|
|
232
232
|
} }
|
|
233
|
-
function
|
|
234
|
-
i0.ɵɵelementStart(0, "div",
|
|
235
|
-
i0.ɵɵelement(2, "i",
|
|
233
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_39_Conditional_3_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
234
|
+
i0.ɵɵelementStart(0, "div", 75)(1, "div", 76);
|
|
235
|
+
i0.ɵɵelement(2, "i", 77);
|
|
236
236
|
i0.ɵɵtext(3, " Preview ");
|
|
237
237
|
i0.ɵɵelementEnd();
|
|
238
|
-
i0.ɵɵelement(4, "mj-markdown",
|
|
238
|
+
i0.ɵɵelement(4, "mj-markdown", 78);
|
|
239
239
|
i0.ɵɵelementEnd();
|
|
240
240
|
} if (rf & 2) {
|
|
241
|
-
const
|
|
241
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
242
242
|
i0.ɵɵadvance(4);
|
|
243
|
-
i0.ɵɵproperty("data",
|
|
243
|
+
i0.ɵɵproperty("data", ctx_r1.record.TechnicalDescription || "")("enableMermaid", true)("enableHighlight", true)("enableCollapsibleHeadings", false)("enableSmartypants", true);
|
|
244
244
|
} }
|
|
245
|
-
function
|
|
245
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_39_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
246
246
|
const _r10 = i0.ɵɵgetCurrentView();
|
|
247
|
-
i0.ɵɵelementStart(0, "textarea",
|
|
248
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
247
|
+
i0.ɵɵelementStart(0, "textarea", 74);
|
|
248
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_0_Conditional_39_Conditional_3_Template_textarea_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.record.TechnicalDescription, $event) || (ctx_r1.record.TechnicalDescription = $event); return i0.ɵɵresetView($event); });
|
|
249
249
|
i0.ɵɵtext(1, " ");
|
|
250
250
|
i0.ɵɵelementEnd();
|
|
251
|
-
i0.ɵɵconditionalCreate(2,
|
|
251
|
+
i0.ɵɵconditionalCreate(2, MJQueryFormComponentExtended_Conditional_0_Conditional_39_Conditional_3_Conditional_2_Template, 5, 5, "div", 75);
|
|
252
252
|
} if (rf & 2) {
|
|
253
|
-
const
|
|
254
|
-
i0.ɵɵtwoWayProperty("ngModel",
|
|
253
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
254
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.TechnicalDescription);
|
|
255
255
|
i0.ɵɵadvance(2);
|
|
256
|
-
i0.ɵɵconditional(
|
|
256
|
+
i0.ɵɵconditional(ctx_r1.record.TechnicalDescription ? 2 : -1);
|
|
257
257
|
} }
|
|
258
|
-
function
|
|
259
|
-
i0.ɵɵelementStart(0, "div",
|
|
260
|
-
i0.ɵɵelement(1, "mj-markdown",
|
|
258
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
259
|
+
i0.ɵɵelementStart(0, "div", 72);
|
|
260
|
+
i0.ɵɵelement(1, "mj-markdown", 78);
|
|
261
261
|
i0.ɵɵelementEnd();
|
|
262
262
|
} if (rf & 2) {
|
|
263
|
-
const
|
|
263
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
264
264
|
i0.ɵɵadvance();
|
|
265
|
-
i0.ɵɵproperty("data",
|
|
265
|
+
i0.ɵɵproperty("data", ctx_r1.record.TechnicalDescription || "")("enableMermaid", true)("enableHighlight", true)("enableCollapsibleHeadings", false)("enableSmartypants", true);
|
|
266
266
|
} }
|
|
267
|
-
function
|
|
267
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_39_Template(rf, ctx) { if (rf & 1) {
|
|
268
268
|
const _r9 = i0.ɵɵgetCurrentView();
|
|
269
|
-
i0.ɵɵelementStart(0, "mj-accordion-panel",
|
|
270
|
-
i0.ɵɵtwoWayListener("ExpandedChange", function
|
|
271
|
-
i0.ɵɵtemplate(1,
|
|
272
|
-
i0.ɵɵelementStart(2, "div",
|
|
273
|
-
i0.ɵɵconditionalCreate(3,
|
|
269
|
+
i0.ɵɵelementStart(0, "mj-accordion-panel", 24);
|
|
270
|
+
i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_0_Conditional_39_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.technicalDescriptionPanelExpanded, $event) || (ctx_r1.technicalDescriptionPanelExpanded = $event); return i0.ɵɵresetView($event); });
|
|
271
|
+
i0.ɵɵtemplate(1, MJQueryFormComponentExtended_Conditional_0_Conditional_39_ng_template_1_Template, 4, 1, "ng-template", 25);
|
|
272
|
+
i0.ɵɵelementStart(2, "div", 34);
|
|
273
|
+
i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_0_Conditional_39_Conditional_3_Template, 3, 2)(4, MJQueryFormComponentExtended_Conditional_0_Conditional_39_Conditional_4_Template, 2, 5, "div", 72);
|
|
274
274
|
i0.ɵɵelementEnd()();
|
|
275
275
|
} if (rf & 2) {
|
|
276
|
-
const
|
|
277
|
-
i0.ɵɵtwoWayProperty("Expanded",
|
|
276
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
277
|
+
i0.ɵɵtwoWayProperty("Expanded", ctx_r1.technicalDescriptionPanelExpanded);
|
|
278
278
|
i0.ɵɵadvance(3);
|
|
279
|
-
i0.ɵɵconditional(
|
|
279
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 3 : 4);
|
|
280
280
|
} }
|
|
281
|
-
function
|
|
282
|
-
i0.ɵɵelementStart(0, "span",
|
|
281
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_40_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
282
|
+
i0.ɵɵelementStart(0, "span", 81);
|
|
283
283
|
i0.ɵɵtext(1);
|
|
284
284
|
i0.ɵɵelementEnd();
|
|
285
285
|
} if (rf & 2) {
|
|
286
|
-
const
|
|
286
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
287
287
|
i0.ɵɵadvance();
|
|
288
|
-
i0.ɵɵtextInterpolate(
|
|
288
|
+
i0.ɵɵtextInterpolate(ctx_r1.queryParameters.length);
|
|
289
289
|
} }
|
|
290
|
-
function
|
|
291
|
-
i0.ɵɵelementStart(0, "span",
|
|
292
|
-
i0.ɵɵelement(1, "i",
|
|
290
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_40_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
291
|
+
i0.ɵɵelementStart(0, "span", 61);
|
|
292
|
+
i0.ɵɵelement(1, "i", 80);
|
|
293
293
|
i0.ɵɵtext(2, " Parameters ");
|
|
294
|
-
i0.ɵɵconditionalCreate(3,
|
|
294
|
+
i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_0_Conditional_40_ng_template_1_Conditional_3_Template, 2, 1, "span", 81);
|
|
295
295
|
i0.ɵɵelementEnd();
|
|
296
296
|
} if (rf & 2) {
|
|
297
|
-
const
|
|
297
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
298
298
|
i0.ɵɵadvance(3);
|
|
299
|
-
i0.ɵɵconditional(
|
|
299
|
+
i0.ɵɵconditional(ctx_r1.queryParameters.length > 0 ? 3 : -1);
|
|
300
300
|
} }
|
|
301
|
-
function
|
|
302
|
-
i0.ɵɵelementStart(0, "div",
|
|
303
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
301
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
302
|
+
i0.ɵɵelementStart(0, "div", 79);
|
|
303
|
+
i0.ɵɵelement(1, "mj-loading", 82);
|
|
304
304
|
i0.ɵɵelementEnd();
|
|
305
305
|
} }
|
|
306
|
-
function
|
|
306
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Conditional_0_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
307
307
|
const _r12 = i0.ɵɵgetCurrentView();
|
|
308
|
-
i0.ɵɵelementStart(0, "button",
|
|
309
|
-
i0.ɵɵlistener("click", function
|
|
310
|
-
i0.ɵɵelement(1, "i",
|
|
308
|
+
i0.ɵɵelementStart(0, "button", 88);
|
|
309
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Conditional_0_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.addParameter()); });
|
|
310
|
+
i0.ɵɵelement(1, "i", 89);
|
|
311
311
|
i0.ɵɵtext(2, " Add First Parameter ");
|
|
312
312
|
i0.ɵɵelementEnd();
|
|
313
313
|
} }
|
|
314
|
-
function
|
|
315
|
-
i0.ɵɵelementStart(0, "div",
|
|
316
|
-
i0.ɵɵelement(1, "i",
|
|
317
|
-
i0.ɵɵelementStart(2, "div",
|
|
314
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
315
|
+
i0.ɵɵelementStart(0, "div", 83);
|
|
316
|
+
i0.ɵɵelement(1, "i", 84);
|
|
317
|
+
i0.ɵɵelementStart(2, "div", 85);
|
|
318
318
|
i0.ɵɵtext(3, "No Parameters Defined");
|
|
319
319
|
i0.ɵɵelementEnd();
|
|
320
|
-
i0.ɵɵelementStart(4, "div",
|
|
320
|
+
i0.ɵɵelementStart(4, "div", 86);
|
|
321
321
|
i0.ɵɵtext(5, " Add parameters to make your query dynamic and reusable. ");
|
|
322
322
|
i0.ɵɵelementEnd();
|
|
323
|
-
i0.ɵɵconditionalCreate(6,
|
|
323
|
+
i0.ɵɵconditionalCreate(6, MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Conditional_0_Conditional_6_Template, 3, 0, "button", 87);
|
|
324
324
|
i0.ɵɵelementEnd();
|
|
325
325
|
} if (rf & 2) {
|
|
326
|
-
const
|
|
326
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
327
327
|
i0.ɵɵadvance(6);
|
|
328
|
-
i0.ɵɵconditional(
|
|
328
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 6 : -1);
|
|
329
329
|
} }
|
|
330
|
-
function
|
|
330
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
331
331
|
const _r13 = i0.ɵɵgetCurrentView();
|
|
332
|
-
i0.ɵɵelementStart(0, "div",
|
|
333
|
-
i0.ɵɵlistener("click", function
|
|
334
|
-
i0.ɵɵelement(2, "i",
|
|
332
|
+
i0.ɵɵelementStart(0, "div", 90)(1, "button", 88);
|
|
333
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Conditional_1_Conditional_0_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.addParameter()); });
|
|
334
|
+
i0.ɵɵelement(2, "i", 89);
|
|
335
335
|
i0.ɵɵtext(3, " Add Parameter ");
|
|
336
336
|
i0.ɵɵelementEnd()();
|
|
337
337
|
} }
|
|
338
|
-
function
|
|
339
|
-
i0.ɵɵelementStart(0, "span",
|
|
338
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
339
|
+
i0.ɵɵelementStart(0, "span", 98);
|
|
340
340
|
i0.ɵɵtext(1, "Required");
|
|
341
341
|
i0.ɵɵelementEnd();
|
|
342
342
|
} }
|
|
343
|
-
function
|
|
344
|
-
i0.ɵɵelementStart(0, "div",
|
|
343
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
344
|
+
i0.ɵɵelementStart(0, "div", 100);
|
|
345
345
|
i0.ɵɵtext(1);
|
|
346
346
|
i0.ɵɵelementEnd();
|
|
347
347
|
} if (rf & 2) {
|
|
@@ -349,11 +349,11 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4
|
|
|
349
349
|
i0.ɵɵadvance();
|
|
350
350
|
i0.ɵɵtextInterpolate(param_r15.Description);
|
|
351
351
|
} }
|
|
352
|
-
function
|
|
353
|
-
i0.ɵɵelementStart(0, "span",
|
|
352
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
353
|
+
i0.ɵɵelementStart(0, "span", 102)(1, "strong");
|
|
354
354
|
i0.ɵɵtext(2, "Default:");
|
|
355
355
|
i0.ɵɵelementEnd();
|
|
356
|
-
i0.ɵɵelementStart(3, "code",
|
|
356
|
+
i0.ɵɵelementStart(3, "code", 104);
|
|
357
357
|
i0.ɵɵtext(4);
|
|
358
358
|
i0.ɵɵelementEnd()();
|
|
359
359
|
} if (rf & 2) {
|
|
@@ -361,44 +361,44 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4
|
|
|
361
361
|
i0.ɵɵadvance(4);
|
|
362
362
|
i0.ɵɵtextInterpolate(param_r15.DefaultValue);
|
|
363
363
|
} }
|
|
364
|
-
function
|
|
364
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
365
365
|
const _r16 = i0.ɵɵgetCurrentView();
|
|
366
|
-
i0.ɵɵelementStart(0, "div",
|
|
367
|
-
i0.ɵɵlistener("click", function
|
|
368
|
-
i0.ɵɵelementStart(1, "button",
|
|
369
|
-
i0.ɵɵlistener("click", function
|
|
370
|
-
i0.ɵɵelement(2, "i",
|
|
371
|
-
i0.ɵɵelementEnd();
|
|
372
|
-
i0.ɵɵelementStart(3, "button",
|
|
373
|
-
i0.ɵɵlistener("click", function
|
|
374
|
-
i0.ɵɵelement(4, "i",
|
|
366
|
+
i0.ɵɵelementStart(0, "div", 105);
|
|
367
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_0_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", 106);
|
|
369
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_0_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_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.editParameter(param_r15)); });
|
|
370
|
+
i0.ɵɵelement(2, "i", 107);
|
|
371
|
+
i0.ɵɵelementEnd();
|
|
372
|
+
i0.ɵɵelementStart(3, "button", 108);
|
|
373
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_0_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_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.deleteParameter(param_r15)); });
|
|
374
|
+
i0.ɵɵelement(4, "i", 109);
|
|
375
375
|
i0.ɵɵelementEnd()();
|
|
376
376
|
} }
|
|
377
|
-
function
|
|
377
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Conditional_1_For_3_Template(rf, ctx) { if (rf & 1) {
|
|
378
378
|
const _r14 = i0.ɵɵgetCurrentView();
|
|
379
|
-
i0.ɵɵelementStart(0, "div",
|
|
380
|
-
i0.ɵɵlistener("click", function
|
|
381
|
-
i0.ɵɵelementStart(1, "div",
|
|
382
|
-
i0.ɵɵelement(3, "i",
|
|
379
|
+
i0.ɵɵelementStart(0, "div", 93);
|
|
380
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Conditional_1_For_3_Template_div_click_0_listener() { const param_r15 = i0.ɵɵrestoreView(_r14).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.editParameter(param_r15)); });
|
|
381
|
+
i0.ɵɵelementStart(1, "div", 94)(2, "div", 95);
|
|
382
|
+
i0.ɵɵelement(3, "i", 96);
|
|
383
383
|
i0.ɵɵtext(4);
|
|
384
384
|
i0.ɵɵelementEnd();
|
|
385
|
-
i0.ɵɵelementStart(5, "div",
|
|
386
|
-
i0.ɵɵconditionalCreate(6,
|
|
385
|
+
i0.ɵɵelementStart(5, "div", 97);
|
|
386
|
+
i0.ɵɵconditionalCreate(6, MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_6_Template, 2, 0, "span", 98);
|
|
387
387
|
i0.ɵɵelementEnd()();
|
|
388
|
-
i0.ɵɵelementStart(7, "div",
|
|
389
|
-
i0.ɵɵconditionalCreate(8,
|
|
390
|
-
i0.ɵɵelementStart(9, "div",
|
|
388
|
+
i0.ɵɵelementStart(7, "div", 99);
|
|
389
|
+
i0.ɵɵconditionalCreate(8, MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_8_Template, 2, 1, "div", 100);
|
|
390
|
+
i0.ɵɵelementStart(9, "div", 101)(10, "span", 102)(11, "strong");
|
|
391
391
|
i0.ɵɵtext(12, "Type:");
|
|
392
392
|
i0.ɵɵelementEnd();
|
|
393
393
|
i0.ɵɵtext(13);
|
|
394
394
|
i0.ɵɵelementEnd();
|
|
395
|
-
i0.ɵɵconditionalCreate(14,
|
|
395
|
+
i0.ɵɵconditionalCreate(14, MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_14_Template, 5, 1, "span", 102);
|
|
396
396
|
i0.ɵɵelementEnd()();
|
|
397
|
-
i0.ɵɵconditionalCreate(15,
|
|
397
|
+
i0.ɵɵconditionalCreate(15, MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_15_Template, 5, 0, "div", 103);
|
|
398
398
|
i0.ɵɵelementEnd();
|
|
399
399
|
} if (rf & 2) {
|
|
400
400
|
const param_r15 = ctx.$implicit;
|
|
401
|
-
const
|
|
401
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
402
402
|
i0.ɵɵclassProp("required", param_r15.IsRequired);
|
|
403
403
|
i0.ɵɵadvance(4);
|
|
404
404
|
i0.ɵɵtextInterpolate1(" ", param_r15.Name, " ");
|
|
@@ -411,98 +411,98 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4
|
|
|
411
411
|
i0.ɵɵadvance();
|
|
412
412
|
i0.ɵɵconditional(param_r15.DefaultValue ? 14 : -1);
|
|
413
413
|
i0.ɵɵadvance();
|
|
414
|
-
i0.ɵɵconditional(
|
|
414
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 15 : -1);
|
|
415
415
|
} }
|
|
416
|
-
function
|
|
417
|
-
i0.ɵɵconditionalCreate(0,
|
|
418
|
-
i0.ɵɵelementStart(1, "div",
|
|
419
|
-
i0.ɵɵrepeaterCreate(2,
|
|
416
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
417
|
+
i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Conditional_1_Conditional_0_Template, 4, 0, "div", 90);
|
|
418
|
+
i0.ɵɵelementStart(1, "div", 91);
|
|
419
|
+
i0.ɵɵrepeaterCreate(2, MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Conditional_1_For_3_Template, 16, 8, "div", 92, _forTrack1);
|
|
420
420
|
i0.ɵɵelementEnd();
|
|
421
421
|
} if (rf & 2) {
|
|
422
|
-
const
|
|
423
|
-
i0.ɵɵconditional(
|
|
422
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
423
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 0 : -1);
|
|
424
424
|
i0.ɵɵadvance(2);
|
|
425
|
-
i0.ɵɵrepeater(
|
|
425
|
+
i0.ɵɵrepeater(ctx_r1.queryParameters);
|
|
426
426
|
} }
|
|
427
|
-
function
|
|
428
|
-
i0.ɵɵconditionalCreate(0,
|
|
427
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
428
|
+
i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Conditional_0_Template, 7, 1, "div", 83)(1, MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Conditional_1_Template, 4, 1);
|
|
429
429
|
} if (rf & 2) {
|
|
430
|
-
const
|
|
431
|
-
i0.ɵɵconditional(
|
|
430
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
431
|
+
i0.ɵɵconditional(ctx_r1.queryParameters.length === 0 ? 0 : 1);
|
|
432
432
|
} }
|
|
433
|
-
function
|
|
433
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_40_Template(rf, ctx) { if (rf & 1) {
|
|
434
434
|
const _r11 = i0.ɵɵgetCurrentView();
|
|
435
|
-
i0.ɵɵelementStart(0, "mj-accordion-panel",
|
|
436
|
-
i0.ɵɵtwoWayListener("ExpandedChange", function
|
|
437
|
-
i0.ɵɵtemplate(1,
|
|
438
|
-
i0.ɵɵelementStart(2, "div",
|
|
439
|
-
i0.ɵɵconditionalCreate(3,
|
|
435
|
+
i0.ɵɵelementStart(0, "mj-accordion-panel", 24);
|
|
436
|
+
i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_0_Conditional_40_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.parametersPanelExpanded, $event) || (ctx_r1.parametersPanelExpanded = $event); return i0.ɵɵresetView($event); });
|
|
437
|
+
i0.ɵɵtemplate(1, MJQueryFormComponentExtended_Conditional_0_Conditional_40_ng_template_1_Template, 4, 1, "ng-template", 25);
|
|
438
|
+
i0.ɵɵelementStart(2, "div", 34);
|
|
439
|
+
i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_3_Template, 2, 0, "div", 79)(4, MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Template, 2, 1);
|
|
440
440
|
i0.ɵɵelementEnd()();
|
|
441
441
|
} if (rf & 2) {
|
|
442
|
-
const
|
|
443
|
-
i0.ɵɵtwoWayProperty("Expanded",
|
|
442
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
443
|
+
i0.ɵɵtwoWayProperty("Expanded", ctx_r1.parametersPanelExpanded);
|
|
444
444
|
i0.ɵɵadvance(3);
|
|
445
|
-
i0.ɵɵconditional(
|
|
445
|
+
i0.ɵɵconditional(ctx_r1.isLoadingParameters ? 3 : 4);
|
|
446
446
|
} }
|
|
447
|
-
function
|
|
448
|
-
i0.ɵɵelementStart(0, "span",
|
|
447
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_41_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
448
|
+
i0.ɵɵelementStart(0, "span", 81);
|
|
449
449
|
i0.ɵɵtext(1);
|
|
450
450
|
i0.ɵɵelementEnd();
|
|
451
451
|
} if (rf & 2) {
|
|
452
|
-
const
|
|
452
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
453
453
|
i0.ɵɵadvance();
|
|
454
|
-
i0.ɵɵtextInterpolate(
|
|
454
|
+
i0.ɵɵtextInterpolate(ctx_r1.queryFields.length);
|
|
455
455
|
} }
|
|
456
|
-
function
|
|
457
|
-
i0.ɵɵelementStart(0, "span",
|
|
458
|
-
i0.ɵɵelement(1, "i",
|
|
456
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_41_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
457
|
+
i0.ɵɵelementStart(0, "span", 61);
|
|
458
|
+
i0.ɵɵelement(1, "i", 110);
|
|
459
459
|
i0.ɵɵtext(2, " Fields ");
|
|
460
|
-
i0.ɵɵconditionalCreate(3,
|
|
460
|
+
i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_0_Conditional_41_ng_template_1_Conditional_3_Template, 2, 1, "span", 81);
|
|
461
461
|
i0.ɵɵelementEnd();
|
|
462
462
|
} if (rf & 2) {
|
|
463
|
-
const
|
|
463
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
464
464
|
i0.ɵɵadvance(3);
|
|
465
|
-
i0.ɵɵconditional(
|
|
465
|
+
i0.ɵɵconditional(ctx_r1.queryFields.length > 0 ? 3 : -1);
|
|
466
466
|
} }
|
|
467
|
-
function
|
|
468
|
-
i0.ɵɵelementStart(0, "div",
|
|
469
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
467
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_41_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
468
|
+
i0.ɵɵelementStart(0, "div", 79);
|
|
469
|
+
i0.ɵɵelement(1, "mj-loading", 111);
|
|
470
470
|
i0.ɵɵelementEnd();
|
|
471
471
|
} }
|
|
472
|
-
function
|
|
472
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_41_Conditional_4_Conditional_0_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
473
473
|
const _r18 = i0.ɵɵgetCurrentView();
|
|
474
|
-
i0.ɵɵelementStart(0, "button",
|
|
475
|
-
i0.ɵɵlistener("click", function
|
|
476
|
-
i0.ɵɵelement(1, "i",
|
|
474
|
+
i0.ɵɵelementStart(0, "button", 88);
|
|
475
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_0_Conditional_41_Conditional_4_Conditional_0_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.addField()); });
|
|
476
|
+
i0.ɵɵelement(1, "i", 89);
|
|
477
477
|
i0.ɵɵtext(2, " Add First Field ");
|
|
478
478
|
i0.ɵɵelementEnd();
|
|
479
479
|
} }
|
|
480
|
-
function
|
|
481
|
-
i0.ɵɵelementStart(0, "div",
|
|
482
|
-
i0.ɵɵelement(1, "i",
|
|
483
|
-
i0.ɵɵelementStart(2, "div",
|
|
480
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_41_Conditional_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
481
|
+
i0.ɵɵelementStart(0, "div", 83);
|
|
482
|
+
i0.ɵɵelement(1, "i", 112);
|
|
483
|
+
i0.ɵɵelementStart(2, "div", 85);
|
|
484
484
|
i0.ɵɵtext(3, "No Fields Defined");
|
|
485
485
|
i0.ɵɵelementEnd();
|
|
486
|
-
i0.ɵɵelementStart(4, "div",
|
|
486
|
+
i0.ɵɵelementStart(4, "div", 86);
|
|
487
487
|
i0.ɵɵtext(5, " Define output fields for your query results. ");
|
|
488
488
|
i0.ɵɵelementEnd();
|
|
489
|
-
i0.ɵɵconditionalCreate(6,
|
|
489
|
+
i0.ɵɵconditionalCreate(6, MJQueryFormComponentExtended_Conditional_0_Conditional_41_Conditional_4_Conditional_0_Conditional_6_Template, 3, 0, "button", 87);
|
|
490
490
|
i0.ɵɵelementEnd();
|
|
491
491
|
} if (rf & 2) {
|
|
492
|
-
const
|
|
492
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
493
493
|
i0.ɵɵadvance(6);
|
|
494
|
-
i0.ɵɵconditional(
|
|
494
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 6 : -1);
|
|
495
495
|
} }
|
|
496
|
-
function
|
|
496
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_41_Conditional_4_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
497
497
|
const _r19 = i0.ɵɵgetCurrentView();
|
|
498
|
-
i0.ɵɵelementStart(0, "div",
|
|
499
|
-
i0.ɵɵlistener("click", function
|
|
500
|
-
i0.ɵɵelement(2, "i",
|
|
498
|
+
i0.ɵɵelementStart(0, "div", 90)(1, "button", 88);
|
|
499
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_0_Conditional_41_Conditional_4_Conditional_1_Conditional_0_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.addField()); });
|
|
500
|
+
i0.ɵɵelement(2, "i", 89);
|
|
501
501
|
i0.ɵɵtext(3, " Add Field ");
|
|
502
502
|
i0.ɵɵelementEnd()();
|
|
503
503
|
} }
|
|
504
|
-
function
|
|
505
|
-
i0.ɵɵelementStart(0, "span",
|
|
504
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_41_Conditional_4_Conditional_1_For_3_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
505
|
+
i0.ɵɵelementStart(0, "span", 116);
|
|
506
506
|
i0.ɵɵtext(1);
|
|
507
507
|
i0.ɵɵelementEnd();
|
|
508
508
|
} if (rf & 2) {
|
|
@@ -510,8 +510,8 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4
|
|
|
510
510
|
i0.ɵɵadvance();
|
|
511
511
|
i0.ɵɵtextInterpolate1("#", field_r20.Sequence);
|
|
512
512
|
} }
|
|
513
|
-
function
|
|
514
|
-
i0.ɵɵelementStart(0, "div",
|
|
513
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_41_Conditional_4_Conditional_1_For_3_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
514
|
+
i0.ɵɵelementStart(0, "div", 100);
|
|
515
515
|
i0.ɵɵtext(1);
|
|
516
516
|
i0.ɵɵelementEnd();
|
|
517
517
|
} if (rf & 2) {
|
|
@@ -519,34 +519,34 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4
|
|
|
519
519
|
i0.ɵɵadvance();
|
|
520
520
|
i0.ɵɵtextInterpolate(field_r20.Description);
|
|
521
521
|
} }
|
|
522
|
-
function
|
|
522
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_41_Conditional_4_Conditional_1_For_3_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
523
523
|
const _r21 = i0.ɵɵgetCurrentView();
|
|
524
|
-
i0.ɵɵelementStart(0, "div",
|
|
525
|
-
i0.ɵɵlistener("click", function
|
|
526
|
-
i0.ɵɵelement(2, "i",
|
|
524
|
+
i0.ɵɵelementStart(0, "div", 118)(1, "button", 119);
|
|
525
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_0_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_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.deleteField(field_r20)); });
|
|
526
|
+
i0.ɵɵelement(2, "i", 109);
|
|
527
527
|
i0.ɵɵelementEnd()();
|
|
528
528
|
} }
|
|
529
|
-
function
|
|
530
|
-
i0.ɵɵelementStart(0, "div",
|
|
531
|
-
i0.ɵɵelement(3, "i",
|
|
529
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_41_Conditional_4_Conditional_1_For_3_Template(rf, ctx) { if (rf & 1) {
|
|
530
|
+
i0.ɵɵelementStart(0, "div", 113)(1, "div", 94)(2, "div", 95);
|
|
531
|
+
i0.ɵɵelement(3, "i", 114);
|
|
532
532
|
i0.ɵɵtext(4);
|
|
533
533
|
i0.ɵɵelementEnd();
|
|
534
|
-
i0.ɵɵelementStart(5, "div",
|
|
534
|
+
i0.ɵɵelementStart(5, "div", 97)(6, "span", 115);
|
|
535
535
|
i0.ɵɵtext(7);
|
|
536
536
|
i0.ɵɵelementEnd();
|
|
537
|
-
i0.ɵɵconditionalCreate(8,
|
|
537
|
+
i0.ɵɵconditionalCreate(8, MJQueryFormComponentExtended_Conditional_0_Conditional_41_Conditional_4_Conditional_1_For_3_Conditional_8_Template, 2, 1, "span", 116);
|
|
538
538
|
i0.ɵɵelementEnd()();
|
|
539
|
-
i0.ɵɵelementStart(9, "div",
|
|
540
|
-
i0.ɵɵconditionalCreate(10,
|
|
541
|
-
i0.ɵɵelementStart(11, "div",
|
|
542
|
-
i0.ɵɵelement(13, "i",
|
|
539
|
+
i0.ɵɵelementStart(9, "div", 99);
|
|
540
|
+
i0.ɵɵconditionalCreate(10, MJQueryFormComponentExtended_Conditional_0_Conditional_41_Conditional_4_Conditional_1_For_3_Conditional_10_Template, 2, 1, "div", 100);
|
|
541
|
+
i0.ɵɵelementStart(11, "div", 101)(12, "span", 102);
|
|
542
|
+
i0.ɵɵelement(13, "i", 117);
|
|
543
543
|
i0.ɵɵtext(14);
|
|
544
544
|
i0.ɵɵelementEnd()()();
|
|
545
|
-
i0.ɵɵconditionalCreate(15,
|
|
545
|
+
i0.ɵɵconditionalCreate(15, MJQueryFormComponentExtended_Conditional_0_Conditional_41_Conditional_4_Conditional_1_For_3_Conditional_15_Template, 3, 0, "div", 118);
|
|
546
546
|
i0.ɵɵelementEnd();
|
|
547
547
|
} if (rf & 2) {
|
|
548
548
|
const field_r20 = ctx.$implicit;
|
|
549
|
-
const
|
|
549
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
550
550
|
i0.ɵɵadvance(4);
|
|
551
551
|
i0.ɵɵtextInterpolate1(" ", field_r20.Name, " ");
|
|
552
552
|
i0.ɵɵadvance(3);
|
|
@@ -558,54 +558,54 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_41_Conditional_4
|
|
|
558
558
|
i0.ɵɵadvance(4);
|
|
559
559
|
i0.ɵɵtextInterpolate1(" ", field_r20.SQLFullType || field_r20.SQLBaseType, " ");
|
|
560
560
|
i0.ɵɵadvance();
|
|
561
|
-
i0.ɵɵconditional(
|
|
561
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 15 : -1);
|
|
562
562
|
} }
|
|
563
|
-
function
|
|
564
|
-
i0.ɵɵconditionalCreate(0,
|
|
565
|
-
i0.ɵɵelementStart(1, "div",
|
|
566
|
-
i0.ɵɵrepeaterCreate(2,
|
|
563
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_41_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
564
|
+
i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_0_Conditional_41_Conditional_4_Conditional_1_Conditional_0_Template, 4, 0, "div", 90);
|
|
565
|
+
i0.ɵɵelementStart(1, "div", 91);
|
|
566
|
+
i0.ɵɵrepeaterCreate(2, MJQueryFormComponentExtended_Conditional_0_Conditional_41_Conditional_4_Conditional_1_For_3_Template, 16, 6, "div", 113, _forTrack2);
|
|
567
567
|
i0.ɵɵelementEnd();
|
|
568
568
|
} if (rf & 2) {
|
|
569
|
-
const
|
|
570
|
-
i0.ɵɵconditional(
|
|
569
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
570
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 0 : -1);
|
|
571
571
|
i0.ɵɵadvance(2);
|
|
572
|
-
i0.ɵɵrepeater(
|
|
572
|
+
i0.ɵɵrepeater(ctx_r1.queryFields);
|
|
573
573
|
} }
|
|
574
|
-
function
|
|
575
|
-
i0.ɵɵconditionalCreate(0,
|
|
574
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_41_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
575
|
+
i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_0_Conditional_41_Conditional_4_Conditional_0_Template, 7, 1, "div", 83)(1, MJQueryFormComponentExtended_Conditional_0_Conditional_41_Conditional_4_Conditional_1_Template, 4, 1);
|
|
576
576
|
} if (rf & 2) {
|
|
577
|
-
const
|
|
578
|
-
i0.ɵɵconditional(
|
|
577
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
578
|
+
i0.ɵɵconditional(ctx_r1.queryFields.length === 0 ? 0 : 1);
|
|
579
579
|
} }
|
|
580
|
-
function
|
|
580
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_41_Template(rf, ctx) { if (rf & 1) {
|
|
581
581
|
const _r17 = i0.ɵɵgetCurrentView();
|
|
582
|
-
i0.ɵɵelementStart(0, "mj-accordion-panel",
|
|
583
|
-
i0.ɵɵtwoWayListener("ExpandedChange", function
|
|
584
|
-
i0.ɵɵtemplate(1,
|
|
585
|
-
i0.ɵɵelementStart(2, "div",
|
|
586
|
-
i0.ɵɵconditionalCreate(3,
|
|
582
|
+
i0.ɵɵelementStart(0, "mj-accordion-panel", 24);
|
|
583
|
+
i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_0_Conditional_41_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.fieldsPanelExpanded, $event) || (ctx_r1.fieldsPanelExpanded = $event); return i0.ɵɵresetView($event); });
|
|
584
|
+
i0.ɵɵtemplate(1, MJQueryFormComponentExtended_Conditional_0_Conditional_41_ng_template_1_Template, 4, 1, "ng-template", 25);
|
|
585
|
+
i0.ɵɵelementStart(2, "div", 34);
|
|
586
|
+
i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_0_Conditional_41_Conditional_3_Template, 2, 0, "div", 79)(4, MJQueryFormComponentExtended_Conditional_0_Conditional_41_Conditional_4_Template, 2, 1);
|
|
587
587
|
i0.ɵɵelementEnd()();
|
|
588
588
|
} if (rf & 2) {
|
|
589
|
-
const
|
|
590
|
-
i0.ɵɵtwoWayProperty("Expanded",
|
|
589
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
590
|
+
i0.ɵɵtwoWayProperty("Expanded", ctx_r1.fieldsPanelExpanded);
|
|
591
591
|
i0.ɵɵadvance(3);
|
|
592
|
-
i0.ɵɵconditional(
|
|
592
|
+
i0.ɵɵconditional(ctx_r1.isLoadingFields ? 3 : 4);
|
|
593
593
|
} }
|
|
594
|
-
function
|
|
595
|
-
i0.ɵɵelementStart(0, "span",
|
|
596
|
-
i0.ɵɵelement(1, "i",
|
|
594
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_42_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
595
|
+
i0.ɵɵelementStart(0, "span", 61);
|
|
596
|
+
i0.ɵɵelement(1, "i", 122);
|
|
597
597
|
i0.ɵɵtext(2, " Dependent Queries ");
|
|
598
|
-
i0.ɵɵelementStart(3, "span",
|
|
598
|
+
i0.ɵɵelementStart(3, "span", 81);
|
|
599
599
|
i0.ɵɵtext(4);
|
|
600
600
|
i0.ɵɵelementEnd()();
|
|
601
601
|
} if (rf & 2) {
|
|
602
|
-
const
|
|
602
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
603
603
|
i0.ɵɵadvance(4);
|
|
604
|
-
i0.ɵɵtextInterpolate(
|
|
604
|
+
i0.ɵɵtextInterpolate(ctx_r1.DependentQueries.length);
|
|
605
605
|
} }
|
|
606
|
-
function
|
|
607
|
-
i0.ɵɵelementStart(0, "div",
|
|
608
|
-
i0.ɵɵelement(2, "i",
|
|
606
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_42_For_10_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
607
|
+
i0.ɵɵelementStart(0, "div", 101)(1, "span", 102);
|
|
608
|
+
i0.ɵɵelement(2, "i", 128);
|
|
609
609
|
i0.ɵɵtext(3);
|
|
610
610
|
i0.ɵɵelementEnd()();
|
|
611
611
|
} if (rf & 2) {
|
|
@@ -613,11 +613,11 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_42_For_10_Condit
|
|
|
613
613
|
i0.ɵɵadvance(3);
|
|
614
614
|
i0.ɵɵtextInterpolate1(" ", dep_r24.ReferencePath, " ");
|
|
615
615
|
} }
|
|
616
|
-
function
|
|
617
|
-
i0.ɵɵelementStart(0, "div",
|
|
616
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_42_For_10_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
617
|
+
i0.ɵɵelementStart(0, "div", 101)(1, "span", 102)(2, "strong");
|
|
618
618
|
i0.ɵɵtext(3, "Alias:");
|
|
619
619
|
i0.ɵɵelementEnd();
|
|
620
|
-
i0.ɵɵelementStart(4, "code",
|
|
620
|
+
i0.ɵɵelementStart(4, "code", 104);
|
|
621
621
|
i0.ɵɵtext(5);
|
|
622
622
|
i0.ɵɵelementEnd()()();
|
|
623
623
|
} if (rf & 2) {
|
|
@@ -625,20 +625,20 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_42_For_10_Condit
|
|
|
625
625
|
i0.ɵɵadvance(5);
|
|
626
626
|
i0.ɵɵtextInterpolate(dep_r24.Alias);
|
|
627
627
|
} }
|
|
628
|
-
function
|
|
628
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_42_For_10_Template(rf, ctx) { if (rf & 1) {
|
|
629
629
|
const _r23 = i0.ɵɵgetCurrentView();
|
|
630
|
-
i0.ɵɵelementStart(0, "div",
|
|
631
|
-
i0.ɵɵlistener("click", function
|
|
632
|
-
i0.ɵɵelementStart(1, "div",
|
|
633
|
-
i0.ɵɵelement(3, "i",
|
|
630
|
+
i0.ɵɵelementStart(0, "div", 123);
|
|
631
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_0_Conditional_42_For_10_Template_div_click_0_listener() { const dep_r24 = i0.ɵɵrestoreView(_r23).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onDependentQueryClick(dep_r24)); });
|
|
632
|
+
i0.ɵɵelementStart(1, "div", 94)(2, "div", 95);
|
|
633
|
+
i0.ɵɵelement(3, "i", 124);
|
|
634
634
|
i0.ɵɵtext(4);
|
|
635
635
|
i0.ɵɵelementEnd()();
|
|
636
|
-
i0.ɵɵelementStart(5, "div",
|
|
637
|
-
i0.ɵɵconditionalCreate(6,
|
|
638
|
-
i0.ɵɵconditionalCreate(7,
|
|
636
|
+
i0.ɵɵelementStart(5, "div", 99);
|
|
637
|
+
i0.ɵɵconditionalCreate(6, MJQueryFormComponentExtended_Conditional_0_Conditional_42_For_10_Conditional_6_Template, 4, 1, "div", 101);
|
|
638
|
+
i0.ɵɵconditionalCreate(7, MJQueryFormComponentExtended_Conditional_0_Conditional_42_For_10_Conditional_7_Template, 6, 1, "div", 101);
|
|
639
639
|
i0.ɵɵelementEnd();
|
|
640
|
-
i0.ɵɵelementStart(8, "div",
|
|
641
|
-
i0.ɵɵelement(10, "i",
|
|
640
|
+
i0.ɵɵelementStart(8, "div", 125)(9, "span", 126);
|
|
641
|
+
i0.ɵɵelement(10, "i", 127);
|
|
642
642
|
i0.ɵɵtext(11, " Open ");
|
|
643
643
|
i0.ɵɵelementEnd()()();
|
|
644
644
|
} if (rf & 2) {
|
|
@@ -650,383 +650,383 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_42_For_10_Templa
|
|
|
650
650
|
i0.ɵɵadvance();
|
|
651
651
|
i0.ɵɵconditional(dep_r24.Alias ? 7 : -1);
|
|
652
652
|
} }
|
|
653
|
-
function
|
|
653
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_42_Template(rf, ctx) { if (rf & 1) {
|
|
654
654
|
const _r22 = i0.ɵɵgetCurrentView();
|
|
655
|
-
i0.ɵɵelementStart(0, "mj-accordion-panel",
|
|
656
|
-
i0.ɵɵtwoWayListener("ExpandedChange", function
|
|
657
|
-
i0.ɵɵtemplate(1,
|
|
658
|
-
i0.ɵɵelementStart(2, "div",
|
|
655
|
+
i0.ɵɵelementStart(0, "mj-accordion-panel", 24);
|
|
656
|
+
i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_0_Conditional_42_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r22); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.dependentsPanelExpanded, $event) || (ctx_r1.dependentsPanelExpanded = $event); return i0.ɵɵresetView($event); });
|
|
657
|
+
i0.ɵɵtemplate(1, MJQueryFormComponentExtended_Conditional_0_Conditional_42_ng_template_1_Template, 5, 1, "ng-template", 25);
|
|
658
|
+
i0.ɵɵelementStart(2, "div", 34)(3, "div", 120);
|
|
659
659
|
i0.ɵɵtext(4, " These queries reference this query via ");
|
|
660
660
|
i0.ɵɵelementStart(5, "code");
|
|
661
661
|
i0.ɵɵtext(6);
|
|
662
662
|
i0.ɵɵelementEnd();
|
|
663
663
|
i0.ɵɵtext(7, " composition syntax. ");
|
|
664
664
|
i0.ɵɵelementEnd();
|
|
665
|
-
i0.ɵɵelementStart(8, "div",
|
|
666
|
-
i0.ɵɵrepeaterCreate(9,
|
|
665
|
+
i0.ɵɵelementStart(8, "div", 91);
|
|
666
|
+
i0.ɵɵrepeaterCreate(9, MJQueryFormComponentExtended_Conditional_0_Conditional_42_For_10_Template, 12, 3, "div", 121, _forTrack2);
|
|
667
667
|
i0.ɵɵelementEnd()()();
|
|
668
668
|
} if (rf & 2) {
|
|
669
|
-
const
|
|
670
|
-
i0.ɵɵtwoWayProperty("Expanded",
|
|
669
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
670
|
+
i0.ɵɵtwoWayProperty("Expanded", ctx_r1.dependentsPanelExpanded);
|
|
671
671
|
i0.ɵɵadvance(6);
|
|
672
672
|
i0.ɵɵtextInterpolate1("", "{{query:\"...\"}}", " ");
|
|
673
673
|
i0.ɵɵadvance(3);
|
|
674
|
-
i0.ɵɵrepeater(
|
|
674
|
+
i0.ɵɵrepeater(ctx_r1.DependentQueries);
|
|
675
675
|
} }
|
|
676
|
-
function
|
|
677
|
-
i0.ɵɵelementStart(0, "span",
|
|
676
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_43_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
677
|
+
i0.ɵɵelementStart(0, "span", 81);
|
|
678
678
|
i0.ɵɵtext(1);
|
|
679
679
|
i0.ɵɵelementEnd();
|
|
680
680
|
} if (rf & 2) {
|
|
681
|
-
const
|
|
681
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
682
682
|
i0.ɵɵadvance();
|
|
683
|
-
i0.ɵɵtextInterpolate(
|
|
683
|
+
i0.ɵɵtextInterpolate(ctx_r1.queryEntities.length);
|
|
684
684
|
} }
|
|
685
|
-
function
|
|
686
|
-
i0.ɵɵelementStart(0, "span",
|
|
687
|
-
i0.ɵɵelement(1, "i",
|
|
685
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_43_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
686
|
+
i0.ɵɵelementStart(0, "span", 61);
|
|
687
|
+
i0.ɵɵelement(1, "i", 129);
|
|
688
688
|
i0.ɵɵtext(2, " Entities ");
|
|
689
|
-
i0.ɵɵconditionalCreate(3,
|
|
689
|
+
i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_0_Conditional_43_ng_template_1_Conditional_3_Template, 2, 1, "span", 81);
|
|
690
690
|
i0.ɵɵelementEnd();
|
|
691
691
|
} if (rf & 2) {
|
|
692
|
-
const
|
|
692
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
693
693
|
i0.ɵɵadvance(3);
|
|
694
|
-
i0.ɵɵconditional(
|
|
694
|
+
i0.ɵɵconditional(ctx_r1.queryEntities.length > 0 ? 3 : -1);
|
|
695
695
|
} }
|
|
696
|
-
function
|
|
697
|
-
i0.ɵɵelementStart(0, "div",
|
|
698
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
696
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_43_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
697
|
+
i0.ɵɵelementStart(0, "div", 79);
|
|
698
|
+
i0.ɵɵelement(1, "mj-loading", 130);
|
|
699
699
|
i0.ɵɵelementEnd();
|
|
700
700
|
} }
|
|
701
|
-
function
|
|
701
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_0_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
702
702
|
const _r26 = i0.ɵɵgetCurrentView();
|
|
703
|
-
i0.ɵɵelementStart(0, "button",
|
|
704
|
-
i0.ɵɵlistener("click", function
|
|
705
|
-
i0.ɵɵelement(1, "i",
|
|
703
|
+
i0.ɵɵelementStart(0, "button", 88);
|
|
704
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_0_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r26); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.addEntity()); });
|
|
705
|
+
i0.ɵɵelement(1, "i", 89);
|
|
706
706
|
i0.ɵɵtext(2, " Add First Entity ");
|
|
707
707
|
i0.ɵɵelementEnd();
|
|
708
708
|
} }
|
|
709
|
-
function
|
|
710
|
-
i0.ɵɵelementStart(0, "div",
|
|
711
|
-
i0.ɵɵelement(1, "i",
|
|
712
|
-
i0.ɵɵelementStart(2, "div",
|
|
709
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
710
|
+
i0.ɵɵelementStart(0, "div", 83);
|
|
711
|
+
i0.ɵɵelement(1, "i", 131);
|
|
712
|
+
i0.ɵɵelementStart(2, "div", 85);
|
|
713
713
|
i0.ɵɵtext(3, "No Entities Tracked");
|
|
714
714
|
i0.ɵɵelementEnd();
|
|
715
|
-
i0.ɵɵelementStart(4, "div",
|
|
715
|
+
i0.ɵɵelementStart(4, "div", 86);
|
|
716
716
|
i0.ɵɵtext(5, " Track which entities this query uses for documentation. ");
|
|
717
717
|
i0.ɵɵelementEnd();
|
|
718
|
-
i0.ɵɵconditionalCreate(6,
|
|
718
|
+
i0.ɵɵconditionalCreate(6, MJQueryFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_0_Conditional_6_Template, 3, 0, "button", 87);
|
|
719
719
|
i0.ɵɵelementEnd();
|
|
720
720
|
} if (rf & 2) {
|
|
721
|
-
const
|
|
721
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
722
722
|
i0.ɵɵadvance(6);
|
|
723
|
-
i0.ɵɵconditional(
|
|
723
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 6 : -1);
|
|
724
724
|
} }
|
|
725
|
-
function
|
|
725
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
726
726
|
const _r27 = i0.ɵɵgetCurrentView();
|
|
727
|
-
i0.ɵɵelementStart(0, "div",
|
|
728
|
-
i0.ɵɵlistener("click", function
|
|
729
|
-
i0.ɵɵelement(2, "i",
|
|
727
|
+
i0.ɵɵelementStart(0, "div", 90)(1, "button", 88);
|
|
728
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_1_Conditional_0_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r27); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.addEntity()); });
|
|
729
|
+
i0.ɵɵelement(2, "i", 89);
|
|
730
730
|
i0.ɵɵtext(3, " Add Entity ");
|
|
731
731
|
i0.ɵɵelementEnd()();
|
|
732
732
|
} }
|
|
733
|
-
function
|
|
733
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_1_For_3_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
734
734
|
const _r28 = i0.ɵɵgetCurrentView();
|
|
735
|
-
i0.ɵɵelementStart(0, "div",
|
|
736
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
735
|
+
i0.ɵɵelementStart(0, "div", 133)(1, "mj-dropdown", 134);
|
|
736
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_0_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); });
|
|
737
737
|
i0.ɵɵelementEnd()();
|
|
738
738
|
} if (rf & 2) {
|
|
739
739
|
const entity_r29 = i0.ɵɵnextContext().$implicit;
|
|
740
|
-
const
|
|
740
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
741
741
|
i0.ɵɵadvance();
|
|
742
742
|
i0.ɵɵtwoWayProperty("ngModel", entity_r29.EntityID);
|
|
743
|
-
i0.ɵɵproperty("name", "entity_" + entity_r29.ID)("Data",
|
|
743
|
+
i0.ɵɵproperty("name", "entity_" + entity_r29.ID)("Data", ctx_r1.getEntityOptions())("ValuePrimitive", true);
|
|
744
744
|
} }
|
|
745
|
-
function
|
|
746
|
-
i0.ɵɵelementStart(0, "div",
|
|
747
|
-
i0.ɵɵelement(3, "i",
|
|
745
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_1_For_3_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
746
|
+
i0.ɵɵelementStart(0, "div", 99)(1, "div", 101)(2, "span", 102);
|
|
747
|
+
i0.ɵɵelement(3, "i", 135);
|
|
748
748
|
i0.ɵɵtext(4, " Data Source ");
|
|
749
749
|
i0.ɵɵelementEnd()()();
|
|
750
750
|
} }
|
|
751
|
-
function
|
|
751
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_1_For_3_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
752
752
|
const _r30 = i0.ɵɵgetCurrentView();
|
|
753
|
-
i0.ɵɵelementStart(0, "div",
|
|
754
|
-
i0.ɵɵlistener("click", function
|
|
755
|
-
i0.ɵɵelement(2, "i",
|
|
753
|
+
i0.ɵɵelementStart(0, "div", 118)(1, "button", 136);
|
|
754
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_0_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_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.deleteEntity(entity_r29)); });
|
|
755
|
+
i0.ɵɵelement(2, "i", 109);
|
|
756
756
|
i0.ɵɵelementEnd()();
|
|
757
757
|
} }
|
|
758
|
-
function
|
|
759
|
-
i0.ɵɵelementStart(0, "div",
|
|
760
|
-
i0.ɵɵelement(3, "i",
|
|
758
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_1_For_3_Template(rf, ctx) { if (rf & 1) {
|
|
759
|
+
i0.ɵɵelementStart(0, "div", 113)(1, "div", 94)(2, "div", 95);
|
|
760
|
+
i0.ɵɵelement(3, "i", 132);
|
|
761
761
|
i0.ɵɵtext(4);
|
|
762
762
|
i0.ɵɵelementEnd();
|
|
763
|
-
i0.ɵɵconditionalCreate(5,
|
|
763
|
+
i0.ɵɵconditionalCreate(5, MJQueryFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_1_For_3_Conditional_5_Template, 2, 4, "div", 133);
|
|
764
764
|
i0.ɵɵelementEnd();
|
|
765
|
-
i0.ɵɵconditionalCreate(6,
|
|
766
|
-
i0.ɵɵconditionalCreate(7,
|
|
765
|
+
i0.ɵɵconditionalCreate(6, MJQueryFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_1_For_3_Conditional_6_Template, 5, 0, "div", 99);
|
|
766
|
+
i0.ɵɵconditionalCreate(7, MJQueryFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_1_For_3_Conditional_7_Template, 3, 0, "div", 118);
|
|
767
767
|
i0.ɵɵelementEnd();
|
|
768
768
|
} if (rf & 2) {
|
|
769
769
|
const entity_r29 = ctx.$implicit;
|
|
770
|
-
const
|
|
770
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
771
771
|
i0.ɵɵadvance(4);
|
|
772
772
|
i0.ɵɵtextInterpolate1(" ", entity_r29.Entity || "Select Entity...", " ");
|
|
773
773
|
i0.ɵɵadvance();
|
|
774
|
-
i0.ɵɵconditional(
|
|
774
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 5 : -1);
|
|
775
775
|
i0.ɵɵadvance();
|
|
776
|
-
i0.ɵɵconditional(!
|
|
776
|
+
i0.ɵɵconditional(!ctx_r1.EditMode && entity_r29.Entity ? 6 : -1);
|
|
777
777
|
i0.ɵɵadvance();
|
|
778
|
-
i0.ɵɵconditional(
|
|
778
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 7 : -1);
|
|
779
779
|
} }
|
|
780
|
-
function
|
|
781
|
-
i0.ɵɵconditionalCreate(0,
|
|
782
|
-
i0.ɵɵelementStart(1, "div",
|
|
783
|
-
i0.ɵɵrepeaterCreate(2,
|
|
780
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
781
|
+
i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_1_Conditional_0_Template, 4, 0, "div", 90);
|
|
782
|
+
i0.ɵɵelementStart(1, "div", 91);
|
|
783
|
+
i0.ɵɵrepeaterCreate(2, MJQueryFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_1_For_3_Template, 8, 4, "div", 113, _forTrack2);
|
|
784
784
|
i0.ɵɵelementEnd();
|
|
785
785
|
} if (rf & 2) {
|
|
786
|
-
const
|
|
787
|
-
i0.ɵɵconditional(
|
|
786
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
787
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 0 : -1);
|
|
788
788
|
i0.ɵɵadvance(2);
|
|
789
|
-
i0.ɵɵrepeater(
|
|
789
|
+
i0.ɵɵrepeater(ctx_r1.queryEntities);
|
|
790
790
|
} }
|
|
791
|
-
function
|
|
792
|
-
i0.ɵɵconditionalCreate(0,
|
|
791
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
792
|
+
i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_0_Template, 7, 1, "div", 83)(1, MJQueryFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_1_Template, 4, 1);
|
|
793
793
|
} if (rf & 2) {
|
|
794
|
-
const
|
|
795
|
-
i0.ɵɵconditional(
|
|
794
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
795
|
+
i0.ɵɵconditional(ctx_r1.queryEntities.length === 0 ? 0 : 1);
|
|
796
796
|
} }
|
|
797
|
-
function
|
|
797
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_43_Template(rf, ctx) { if (rf & 1) {
|
|
798
798
|
const _r25 = i0.ɵɵgetCurrentView();
|
|
799
|
-
i0.ɵɵelementStart(0, "mj-accordion-panel",
|
|
800
|
-
i0.ɵɵtwoWayListener("ExpandedChange", function
|
|
801
|
-
i0.ɵɵtemplate(1,
|
|
802
|
-
i0.ɵɵelementStart(2, "div",
|
|
803
|
-
i0.ɵɵconditionalCreate(3,
|
|
799
|
+
i0.ɵɵelementStart(0, "mj-accordion-panel", 24);
|
|
800
|
+
i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_0_Conditional_43_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.entitiesPanelExpanded, $event) || (ctx_r1.entitiesPanelExpanded = $event); return i0.ɵɵresetView($event); });
|
|
801
|
+
i0.ɵɵtemplate(1, MJQueryFormComponentExtended_Conditional_0_Conditional_43_ng_template_1_Template, 4, 1, "ng-template", 25);
|
|
802
|
+
i0.ɵɵelementStart(2, "div", 34);
|
|
803
|
+
i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_0_Conditional_43_Conditional_3_Template, 2, 0, "div", 79)(4, MJQueryFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Template, 2, 1);
|
|
804
804
|
i0.ɵɵelementEnd()();
|
|
805
805
|
} if (rf & 2) {
|
|
806
|
-
const
|
|
807
|
-
i0.ɵɵtwoWayProperty("Expanded",
|
|
806
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
807
|
+
i0.ɵɵtwoWayProperty("Expanded", ctx_r1.entitiesPanelExpanded);
|
|
808
808
|
i0.ɵɵadvance(3);
|
|
809
|
-
i0.ɵɵconditional(
|
|
809
|
+
i0.ɵɵconditional(ctx_r1.isLoadingEntities ? 3 : 4);
|
|
810
810
|
} }
|
|
811
|
-
function
|
|
812
|
-
i0.ɵɵelementStart(0, "span",
|
|
813
|
-
i0.ɵɵelement(1, "i",
|
|
811
|
+
function MJQueryFormComponentExtended_Conditional_0_ng_template_45_Template(rf, ctx) { if (rf & 1) {
|
|
812
|
+
i0.ɵɵelementStart(0, "span", 61);
|
|
813
|
+
i0.ɵɵelement(1, "i", 137);
|
|
814
814
|
i0.ɵɵtext(2, " Details ");
|
|
815
815
|
i0.ɵɵelementEnd();
|
|
816
816
|
} }
|
|
817
|
-
function
|
|
817
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_52_Template(rf, ctx) { if (rf & 1) {
|
|
818
818
|
const _r31 = i0.ɵɵgetCurrentView();
|
|
819
|
-
i0.ɵɵelementStart(0, "mj-switch",
|
|
820
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
819
|
+
i0.ɵɵelementStart(0, "mj-switch", 138);
|
|
820
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_0_Conditional_52_Template_mj_switch_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r31); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.record.Reusable, $event) || (ctx_r1.record.Reusable = $event); return i0.ɵɵresetView($event); });
|
|
821
821
|
i0.ɵɵelementEnd();
|
|
822
|
-
i0.ɵɵelementStart(1, "div",
|
|
822
|
+
i0.ɵɵelementStart(1, "div", 139);
|
|
823
823
|
i0.ɵɵtext(2, "Allow other queries to reference this query using composition syntax");
|
|
824
824
|
i0.ɵɵelementEnd();
|
|
825
825
|
} if (rf & 2) {
|
|
826
|
-
const
|
|
827
|
-
i0.ɵɵtwoWayProperty("ngModel",
|
|
826
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
827
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.Reusable);
|
|
828
828
|
} }
|
|
829
|
-
function
|
|
830
|
-
i0.ɵɵelementStart(0, "span",
|
|
831
|
-
i0.ɵɵelement(1, "i",
|
|
829
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_53_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
830
|
+
i0.ɵɵelementStart(0, "span", 140);
|
|
831
|
+
i0.ɵɵelement(1, "i", 142);
|
|
832
832
|
i0.ɵɵtext(2, " Reusable");
|
|
833
833
|
i0.ɵɵelementEnd();
|
|
834
834
|
} }
|
|
835
|
-
function
|
|
836
|
-
i0.ɵɵelementStart(0, "span",
|
|
837
|
-
i0.ɵɵelement(1, "i",
|
|
835
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_53_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
836
|
+
i0.ɵɵelementStart(0, "span", 141);
|
|
837
|
+
i0.ɵɵelement(1, "i", 143);
|
|
838
838
|
i0.ɵɵtext(2, " Not Reusable");
|
|
839
839
|
i0.ɵɵelementEnd();
|
|
840
840
|
} }
|
|
841
|
-
function
|
|
842
|
-
i0.ɵɵelementStart(0, "div",
|
|
843
|
-
i0.ɵɵconditionalCreate(1,
|
|
841
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_53_Template(rf, ctx) { if (rf & 1) {
|
|
842
|
+
i0.ɵɵelementStart(0, "div", 39);
|
|
843
|
+
i0.ɵɵconditionalCreate(1, MJQueryFormComponentExtended_Conditional_0_Conditional_53_Conditional_1_Template, 3, 0, "span", 140)(2, MJQueryFormComponentExtended_Conditional_0_Conditional_53_Conditional_2_Template, 3, 0, "span", 141);
|
|
844
844
|
i0.ɵɵelementEnd();
|
|
845
845
|
} if (rf & 2) {
|
|
846
|
-
const
|
|
846
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
847
847
|
i0.ɵɵadvance();
|
|
848
|
-
i0.ɵɵconditional(
|
|
848
|
+
i0.ɵɵconditional(ctx_r1.record.Reusable ? 1 : 2);
|
|
849
849
|
} }
|
|
850
|
-
function
|
|
850
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_58_Template(rf, ctx) { if (rf & 1) {
|
|
851
851
|
const _r32 = i0.ɵɵgetCurrentView();
|
|
852
|
-
i0.ɵɵelementStart(0, "mj-switch",
|
|
853
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
852
|
+
i0.ɵɵelementStart(0, "mj-switch", 144);
|
|
853
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_0_Conditional_58_Template_mj_switch_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r32); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.record.CacheEnabled, $event) || (ctx_r1.record.CacheEnabled = $event); return i0.ɵɵresetView($event); });
|
|
854
854
|
i0.ɵɵelementEnd();
|
|
855
|
-
i0.ɵɵelementStart(1, "div",
|
|
855
|
+
i0.ɵɵelementStart(1, "div", 139);
|
|
856
856
|
i0.ɵɵtext(2, "Cache query results in memory to reduce database load on repeated runs");
|
|
857
857
|
i0.ɵɵelementEnd();
|
|
858
858
|
} if (rf & 2) {
|
|
859
|
-
const
|
|
860
|
-
i0.ɵɵtwoWayProperty("ngModel",
|
|
859
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
860
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.CacheEnabled);
|
|
861
861
|
} }
|
|
862
|
-
function
|
|
863
|
-
i0.ɵɵelementStart(0, "span",
|
|
864
|
-
i0.ɵɵelement(1, "i",
|
|
862
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_59_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
863
|
+
i0.ɵɵelementStart(0, "span", 140);
|
|
864
|
+
i0.ɵɵelement(1, "i", 142);
|
|
865
865
|
i0.ɵɵtext(2, " Caching On");
|
|
866
866
|
i0.ɵɵelementEnd();
|
|
867
867
|
} }
|
|
868
|
-
function
|
|
869
|
-
i0.ɵɵelementStart(0, "span",
|
|
870
|
-
i0.ɵɵelement(1, "i",
|
|
868
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
869
|
+
i0.ɵɵelementStart(0, "span", 141);
|
|
870
|
+
i0.ɵɵelement(1, "i", 143);
|
|
871
871
|
i0.ɵɵtext(2, " Caching Off");
|
|
872
872
|
i0.ɵɵelementEnd();
|
|
873
873
|
} }
|
|
874
|
-
function
|
|
875
|
-
i0.ɵɵelementStart(0, "div",
|
|
876
|
-
i0.ɵɵconditionalCreate(1,
|
|
874
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_59_Template(rf, ctx) { if (rf & 1) {
|
|
875
|
+
i0.ɵɵelementStart(0, "div", 39);
|
|
876
|
+
i0.ɵɵconditionalCreate(1, MJQueryFormComponentExtended_Conditional_0_Conditional_59_Conditional_1_Template, 3, 0, "span", 140)(2, MJQueryFormComponentExtended_Conditional_0_Conditional_59_Conditional_2_Template, 3, 0, "span", 141);
|
|
877
877
|
i0.ɵɵelementEnd();
|
|
878
878
|
} if (rf & 2) {
|
|
879
|
-
const
|
|
879
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
880
880
|
i0.ɵɵadvance();
|
|
881
|
-
i0.ɵɵconditional(
|
|
881
|
+
i0.ɵɵconditional(ctx_r1.record.CacheEnabled ? 1 : 2);
|
|
882
882
|
} }
|
|
883
|
-
function
|
|
883
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_60_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
884
884
|
const _r33 = i0.ɵɵgetCurrentView();
|
|
885
|
-
i0.ɵɵelementStart(0, "input",
|
|
886
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
885
|
+
i0.ɵɵelementStart(0, "input", 146);
|
|
886
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_0_Conditional_60_Conditional_4_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r33); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.record.CacheTTLMinutes, $event) || (ctx_r1.record.CacheTTLMinutes = $event); return i0.ɵɵresetView($event); });
|
|
887
887
|
i0.ɵɵelementEnd();
|
|
888
|
-
i0.ɵɵelementStart(1, "div",
|
|
888
|
+
i0.ɵɵelementStart(1, "div", 139);
|
|
889
889
|
i0.ɵɵtext(2, "How long cached results remain valid. Leave blank for default TTL.");
|
|
890
890
|
i0.ɵɵelementEnd();
|
|
891
891
|
} if (rf & 2) {
|
|
892
|
-
const
|
|
893
|
-
i0.ɵɵtwoWayProperty("ngModel",
|
|
892
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
893
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.CacheTTLMinutes);
|
|
894
894
|
} }
|
|
895
|
-
function
|
|
896
|
-
i0.ɵɵelementStart(0, "div",
|
|
895
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_60_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
896
|
+
i0.ɵɵelementStart(0, "div", 39);
|
|
897
897
|
i0.ɵɵtext(1);
|
|
898
898
|
i0.ɵɵelementEnd();
|
|
899
899
|
} if (rf & 2) {
|
|
900
|
-
const
|
|
900
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
901
901
|
i0.ɵɵadvance();
|
|
902
|
-
i0.ɵɵtextInterpolate(
|
|
902
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.CacheTTLMinutes != null ? ctx_r1.record.CacheTTLMinutes + " min" : "Default");
|
|
903
903
|
} }
|
|
904
|
-
function
|
|
905
|
-
i0.ɵɵelementStart(0, "div",
|
|
906
|
-
i0.ɵɵelement(2, "i",
|
|
904
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_60_Template(rf, ctx) { if (rf & 1) {
|
|
905
|
+
i0.ɵɵelementStart(0, "div", 36)(1, "label", 37);
|
|
906
|
+
i0.ɵɵelement(2, "i", 145);
|
|
907
907
|
i0.ɵɵtext(3, " Cache TTL (Minutes) ");
|
|
908
908
|
i0.ɵɵelementEnd();
|
|
909
|
-
i0.ɵɵconditionalCreate(4,
|
|
909
|
+
i0.ɵɵconditionalCreate(4, MJQueryFormComponentExtended_Conditional_0_Conditional_60_Conditional_4_Template, 3, 1)(5, MJQueryFormComponentExtended_Conditional_0_Conditional_60_Conditional_5_Template, 2, 1, "div", 39);
|
|
910
910
|
i0.ɵɵelementEnd();
|
|
911
911
|
} if (rf & 2) {
|
|
912
|
-
const
|
|
912
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
913
913
|
i0.ɵɵadvance(4);
|
|
914
|
-
i0.ɵɵconditional(
|
|
914
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 4 : 5);
|
|
915
915
|
} }
|
|
916
|
-
function
|
|
916
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_65_Template(rf, ctx) { if (rf & 1) {
|
|
917
917
|
const _r34 = i0.ɵɵgetCurrentView();
|
|
918
|
-
i0.ɵɵelementStart(0, "mj-switch",
|
|
919
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
918
|
+
i0.ɵɵelementStart(0, "mj-switch", 147);
|
|
919
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_0_Conditional_65_Template_mj_switch_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r34); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.record.AuditQueryRuns, $event) || (ctx_r1.record.AuditQueryRuns = $event); return i0.ɵɵresetView($event); });
|
|
920
920
|
i0.ɵɵelementEnd();
|
|
921
|
-
i0.ɵɵelementStart(1, "div",
|
|
921
|
+
i0.ɵɵelementStart(1, "div", 139);
|
|
922
922
|
i0.ɵɵtext(2, "Log all executions of this query to the Audit Log for tracking and compliance");
|
|
923
923
|
i0.ɵɵelementEnd();
|
|
924
924
|
} if (rf & 2) {
|
|
925
|
-
const
|
|
926
|
-
i0.ɵɵtwoWayProperty("ngModel",
|
|
925
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
926
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.AuditQueryRuns);
|
|
927
927
|
} }
|
|
928
|
-
function
|
|
929
|
-
i0.ɵɵelementStart(0, "span",
|
|
930
|
-
i0.ɵɵelement(1, "i",
|
|
928
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_66_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
929
|
+
i0.ɵɵelementStart(0, "span", 140);
|
|
930
|
+
i0.ɵɵelement(1, "i", 142);
|
|
931
931
|
i0.ɵɵtext(2, " Auditing On");
|
|
932
932
|
i0.ɵɵelementEnd();
|
|
933
933
|
} }
|
|
934
|
-
function
|
|
935
|
-
i0.ɵɵelementStart(0, "span",
|
|
936
|
-
i0.ɵɵelement(1, "i",
|
|
934
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_66_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
935
|
+
i0.ɵɵelementStart(0, "span", 141);
|
|
936
|
+
i0.ɵɵelement(1, "i", 143);
|
|
937
937
|
i0.ɵɵtext(2, " Auditing Off");
|
|
938
938
|
i0.ɵɵelementEnd();
|
|
939
939
|
} }
|
|
940
|
-
function
|
|
941
|
-
i0.ɵɵelementStart(0, "div",
|
|
942
|
-
i0.ɵɵconditionalCreate(1,
|
|
940
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_66_Template(rf, ctx) { if (rf & 1) {
|
|
941
|
+
i0.ɵɵelementStart(0, "div", 39);
|
|
942
|
+
i0.ɵɵconditionalCreate(1, MJQueryFormComponentExtended_Conditional_0_Conditional_66_Conditional_1_Template, 3, 0, "span", 140)(2, MJQueryFormComponentExtended_Conditional_0_Conditional_66_Conditional_2_Template, 3, 0, "span", 141);
|
|
943
943
|
i0.ɵɵelementEnd();
|
|
944
944
|
} if (rf & 2) {
|
|
945
|
-
const
|
|
945
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
946
946
|
i0.ɵɵadvance();
|
|
947
|
-
i0.ɵɵconditional(
|
|
947
|
+
i0.ɵɵconditional(ctx_r1.record.AuditQueryRuns ? 1 : 2);
|
|
948
948
|
} }
|
|
949
|
-
function
|
|
949
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_71_Template(rf, ctx) { if (rf & 1) {
|
|
950
950
|
const _r35 = i0.ɵɵgetCurrentView();
|
|
951
|
-
i0.ɵɵelementStart(0, "mj-switch",
|
|
952
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
951
|
+
i0.ɵɵelementStart(0, "mj-switch", 148);
|
|
952
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJQueryFormComponentExtended_Conditional_0_Conditional_71_Template_mj_switch_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r35); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.record.UsesTemplate, $event) || (ctx_r1.record.UsesTemplate = $event); return i0.ɵɵresetView($event); });
|
|
953
953
|
i0.ɵɵelementEnd();
|
|
954
954
|
} if (rf & 2) {
|
|
955
|
-
const
|
|
956
|
-
i0.ɵɵtwoWayProperty("ngModel",
|
|
955
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
956
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.UsesTemplate);
|
|
957
957
|
} }
|
|
958
|
-
function
|
|
959
|
-
i0.ɵɵelementStart(0, "span",
|
|
960
|
-
i0.ɵɵelement(1, "i",
|
|
958
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_72_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
959
|
+
i0.ɵɵelementStart(0, "span", 140);
|
|
960
|
+
i0.ɵɵelement(1, "i", 142);
|
|
961
961
|
i0.ɵɵtext(2, " Uses Templates");
|
|
962
962
|
i0.ɵɵelementEnd();
|
|
963
963
|
} }
|
|
964
|
-
function
|
|
965
|
-
i0.ɵɵelementStart(0, "span",
|
|
966
|
-
i0.ɵɵelement(1, "i",
|
|
964
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_72_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
965
|
+
i0.ɵɵelementStart(0, "span", 141);
|
|
966
|
+
i0.ɵɵelement(1, "i", 143);
|
|
967
967
|
i0.ɵɵtext(2, " No Templates");
|
|
968
968
|
i0.ɵɵelementEnd();
|
|
969
969
|
} }
|
|
970
|
-
function
|
|
971
|
-
i0.ɵɵelementStart(0, "div",
|
|
972
|
-
i0.ɵɵconditionalCreate(1,
|
|
970
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_72_Template(rf, ctx) { if (rf & 1) {
|
|
971
|
+
i0.ɵɵelementStart(0, "div", 39);
|
|
972
|
+
i0.ɵɵconditionalCreate(1, MJQueryFormComponentExtended_Conditional_0_Conditional_72_Conditional_1_Template, 3, 0, "span", 140)(2, MJQueryFormComponentExtended_Conditional_0_Conditional_72_Conditional_2_Template, 3, 0, "span", 141);
|
|
973
973
|
i0.ɵɵelementEnd();
|
|
974
974
|
} if (rf & 2) {
|
|
975
|
-
const
|
|
975
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
976
976
|
i0.ɵɵadvance();
|
|
977
|
-
i0.ɵɵconditional(
|
|
977
|
+
i0.ɵɵconditional(ctx_r1.record.UsesTemplate ? 1 : 2);
|
|
978
978
|
} }
|
|
979
|
-
function
|
|
980
|
-
i0.ɵɵelementStart(0, "div",
|
|
981
|
-
i0.ɵɵelement(2, "i",
|
|
979
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_85_Template(rf, ctx) { if (rf & 1) {
|
|
980
|
+
i0.ɵɵelementStart(0, "div", 36)(1, "label", 37);
|
|
981
|
+
i0.ɵɵelement(2, "i", 149);
|
|
982
982
|
i0.ɵɵtext(3, " Quality Rank ");
|
|
983
983
|
i0.ɵɵelementEnd();
|
|
984
|
-
i0.ɵɵelementStart(4, "div",
|
|
984
|
+
i0.ɵɵelementStart(4, "div", 39);
|
|
985
985
|
i0.ɵɵtext(5);
|
|
986
986
|
i0.ɵɵelementEnd()();
|
|
987
987
|
} if (rf & 2) {
|
|
988
|
-
const
|
|
988
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
989
989
|
i0.ɵɵadvance(5);
|
|
990
|
-
i0.ɵɵtextInterpolate1("",
|
|
990
|
+
i0.ɵɵtextInterpolate1("", ctx_r1.record.QualityRank, "/10");
|
|
991
991
|
} }
|
|
992
|
-
function
|
|
993
|
-
i0.ɵɵelementStart(0, "span",
|
|
994
|
-
i0.ɵɵelement(1, "i",
|
|
992
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_86_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
993
|
+
i0.ɵɵelementStart(0, "span", 61);
|
|
994
|
+
i0.ɵɵelement(1, "i", 150);
|
|
995
995
|
i0.ɵɵtext(2, " Permissions ");
|
|
996
996
|
i0.ɵɵelementEnd();
|
|
997
997
|
} }
|
|
998
|
-
function
|
|
999
|
-
i0.ɵɵelementStart(0, "div",
|
|
1000
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
998
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_86_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
999
|
+
i0.ɵɵelementStart(0, "div", 79);
|
|
1000
|
+
i0.ɵɵelement(1, "mj-loading", 151);
|
|
1001
1001
|
i0.ɵɵelementEnd();
|
|
1002
1002
|
} }
|
|
1003
|
-
function
|
|
1004
|
-
i0.ɵɵelementStart(0, "div",
|
|
1005
|
-
i0.ɵɵelement(1, "i",
|
|
1006
|
-
i0.ɵɵelementStart(2, "div",
|
|
1003
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_86_Conditional_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
1004
|
+
i0.ɵɵelementStart(0, "div", 83);
|
|
1005
|
+
i0.ɵɵelement(1, "i", 152);
|
|
1006
|
+
i0.ɵɵelementStart(2, "div", 85);
|
|
1007
1007
|
i0.ɵɵtext(3, "No Permissions Set");
|
|
1008
1008
|
i0.ɵɵelementEnd();
|
|
1009
|
-
i0.ɵɵelementStart(4, "div",
|
|
1009
|
+
i0.ɵɵelementStart(4, "div", 86);
|
|
1010
1010
|
i0.ɵɵtext(5, " This query uses default permissions. ");
|
|
1011
1011
|
i0.ɵɵelementEnd()();
|
|
1012
1012
|
} }
|
|
1013
|
-
function
|
|
1014
|
-
i0.ɵɵelement(0, "mj-explorer-entity-data-grid",
|
|
1013
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_86_Conditional_4_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
1014
|
+
i0.ɵɵelement(0, "mj-explorer-entity-data-grid", 153);
|
|
1015
1015
|
} if (rf & 2) {
|
|
1016
|
-
const
|
|
1017
|
-
i0.ɵɵproperty("Params",
|
|
1016
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
1017
|
+
i0.ɵɵproperty("Params", ctx_r1.BuildRelationshipViewParamsByEntityName("MJ: Query Permissions", "QueryID"))("NewRecordValues", ctx_r1.NewRecordValues("MJ: Query Permissions"))("AllowLoad", true)("ShowToolbar", false);
|
|
1018
1018
|
} }
|
|
1019
|
-
function
|
|
1020
|
-
i0.ɵɵelementStart(0, "div",
|
|
1021
|
-
i0.ɵɵelement(1, "i",
|
|
1022
|
-
i0.ɵɵelementStart(2, "div",
|
|
1019
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_86_Conditional_4_Conditional_1_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
1020
|
+
i0.ɵɵelementStart(0, "div", 155);
|
|
1021
|
+
i0.ɵɵelement(1, "i", 156);
|
|
1022
|
+
i0.ɵɵelementStart(2, "div", 157)(3, "div", 158);
|
|
1023
1023
|
i0.ɵɵtext(4);
|
|
1024
1024
|
i0.ɵɵelementEnd();
|
|
1025
|
-
i0.ɵɵelementStart(5, "div",
|
|
1025
|
+
i0.ɵɵelementStart(5, "div", 159);
|
|
1026
1026
|
i0.ɵɵtext(6, "Role Permission");
|
|
1027
1027
|
i0.ɵɵelementEnd()();
|
|
1028
|
-
i0.ɵɵelementStart(7, "span",
|
|
1029
|
-
i0.ɵɵelement(8, "i",
|
|
1028
|
+
i0.ɵɵelementStart(7, "span", 160);
|
|
1029
|
+
i0.ɵɵelement(8, "i", 51);
|
|
1030
1030
|
i0.ɵɵtext(9, " Can Execute ");
|
|
1031
1031
|
i0.ɵɵelementEnd()();
|
|
1032
1032
|
} if (rf & 2) {
|
|
@@ -1034,206 +1034,206 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_86_Conditional_4
|
|
|
1034
1034
|
i0.ɵɵadvance(4);
|
|
1035
1035
|
i0.ɵɵtextInterpolate(permission_r37.Role);
|
|
1036
1036
|
} }
|
|
1037
|
-
function
|
|
1038
|
-
i0.ɵɵelementStart(0, "div",
|
|
1039
|
-
i0.ɵɵrepeaterCreate(1,
|
|
1037
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_86_Conditional_4_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
1038
|
+
i0.ɵɵelementStart(0, "div", 154);
|
|
1039
|
+
i0.ɵɵrepeaterCreate(1, MJQueryFormComponentExtended_Conditional_0_Conditional_86_Conditional_4_Conditional_1_Conditional_1_For_2_Template, 10, 1, "div", 155, _forTrack2);
|
|
1040
1040
|
i0.ɵɵelementEnd();
|
|
1041
1041
|
} if (rf & 2) {
|
|
1042
|
-
const
|
|
1042
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
1043
1043
|
i0.ɵɵadvance();
|
|
1044
|
-
i0.ɵɵrepeater(
|
|
1044
|
+
i0.ɵɵrepeater(ctx_r1.queryPermissions);
|
|
1045
1045
|
} }
|
|
1046
|
-
function
|
|
1047
|
-
i0.ɵɵconditionalCreate(0,
|
|
1046
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_86_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
1047
|
+
i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_0_Conditional_86_Conditional_4_Conditional_1_Conditional_0_Template, 1, 4, "mj-explorer-entity-data-grid", 153)(1, MJQueryFormComponentExtended_Conditional_0_Conditional_86_Conditional_4_Conditional_1_Conditional_1_Template, 3, 0, "div", 154);
|
|
1048
1048
|
} if (rf & 2) {
|
|
1049
|
-
const
|
|
1050
|
-
i0.ɵɵconditional(
|
|
1049
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
1050
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 0 : 1);
|
|
1051
1051
|
} }
|
|
1052
|
-
function
|
|
1053
|
-
i0.ɵɵconditionalCreate(0,
|
|
1052
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_86_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
1053
|
+
i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_0_Conditional_86_Conditional_4_Conditional_0_Template, 6, 0, "div", 83)(1, MJQueryFormComponentExtended_Conditional_0_Conditional_86_Conditional_4_Conditional_1_Template, 2, 1);
|
|
1054
1054
|
} if (rf & 2) {
|
|
1055
|
-
const
|
|
1056
|
-
i0.ɵɵconditional(
|
|
1055
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1056
|
+
i0.ɵɵconditional(ctx_r1.queryPermissions.length === 0 && !ctx_r1.EditMode ? 0 : 1);
|
|
1057
1057
|
} }
|
|
1058
|
-
function
|
|
1058
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_86_Template(rf, ctx) { if (rf & 1) {
|
|
1059
1059
|
const _r36 = i0.ɵɵgetCurrentView();
|
|
1060
|
-
i0.ɵɵelementStart(0, "mj-accordion-panel",
|
|
1061
|
-
i0.ɵɵtwoWayListener("ExpandedChange", function
|
|
1062
|
-
i0.ɵɵtemplate(1,
|
|
1063
|
-
i0.ɵɵelementStart(2, "div",
|
|
1064
|
-
i0.ɵɵconditionalCreate(3,
|
|
1060
|
+
i0.ɵɵelementStart(0, "mj-accordion-panel", 24);
|
|
1061
|
+
i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_0_Conditional_86_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r36); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.permissionsPanelExpanded, $event) || (ctx_r1.permissionsPanelExpanded = $event); return i0.ɵɵresetView($event); });
|
|
1062
|
+
i0.ɵɵtemplate(1, MJQueryFormComponentExtended_Conditional_0_Conditional_86_ng_template_1_Template, 3, 0, "ng-template", 25);
|
|
1063
|
+
i0.ɵɵelementStart(2, "div", 34);
|
|
1064
|
+
i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_0_Conditional_86_Conditional_3_Template, 2, 0, "div", 79)(4, MJQueryFormComponentExtended_Conditional_0_Conditional_86_Conditional_4_Template, 2, 1);
|
|
1065
1065
|
i0.ɵɵelementEnd()();
|
|
1066
1066
|
} if (rf & 2) {
|
|
1067
|
-
const
|
|
1068
|
-
i0.ɵɵtwoWayProperty("Expanded",
|
|
1067
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
1068
|
+
i0.ɵɵtwoWayProperty("Expanded", ctx_r1.permissionsPanelExpanded);
|
|
1069
1069
|
i0.ɵɵadvance(3);
|
|
1070
|
-
i0.ɵɵconditional(
|
|
1070
|
+
i0.ɵɵconditional(ctx_r1.isLoadingPermissions ? 3 : 4);
|
|
1071
1071
|
} }
|
|
1072
|
-
function
|
|
1072
|
+
function MJQueryFormComponentExtended_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
1073
1073
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
1074
|
-
i0.ɵɵelementStart(0, "form",
|
|
1075
|
-
i0.ɵɵ
|
|
1076
|
-
i0.ɵɵ
|
|
1077
|
-
i0.ɵɵ
|
|
1078
|
-
i0.ɵɵ
|
|
1079
|
-
i0.ɵɵ
|
|
1080
|
-
i0.ɵɵ
|
|
1081
|
-
i0.ɵɵ
|
|
1082
|
-
i0.ɵɵ
|
|
1074
|
+
i0.ɵɵelementStart(0, "mj-record-form-container", 2);
|
|
1075
|
+
i0.ɵɵlistener("Navigate", function MJQueryFormComponentExtended_Conditional_0_Template_mj_record_form_container_Navigate_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); })("DeleteRequested", function MJQueryFormComponentExtended_Conditional_0_Template_mj_record_form_container_DeleteRequested_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnDeleteRequested()); })("FavoriteToggled", function MJQueryFormComponentExtended_Conditional_0_Template_mj_record_form_container_FavoriteToggled_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnFavoriteToggled()); })("HistoryRequested", function MJQueryFormComponentExtended_Conditional_0_Template_mj_record_form_container_HistoryRequested_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnHistoryRequested()); })("ListManagementRequested", function MJQueryFormComponentExtended_Conditional_0_Template_mj_record_form_container_ListManagementRequested_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnListManagementRequested()); });
|
|
1076
|
+
i0.ɵɵelementStart(1, "form", 3, 0);
|
|
1077
|
+
i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_0_Conditional_3_Template, 4, 0, "div", 4);
|
|
1078
|
+
i0.ɵɵelementStart(4, "div", 5)(5, "div", 6)(6, "div", 7)(7, "div", 8);
|
|
1079
|
+
i0.ɵɵelement(8, "i", 9);
|
|
1080
|
+
i0.ɵɵconditionalCreate(9, MJQueryFormComponentExtended_Conditional_0_Conditional_9_Template, 1, 1, "input", 10)(10, MJQueryFormComponentExtended_Conditional_0_Conditional_10_Template, 2, 1, "h4", 11);
|
|
1081
|
+
i0.ɵɵelementEnd();
|
|
1082
|
+
i0.ɵɵelementStart(11, "div", 12);
|
|
1083
|
+
i0.ɵɵconditionalCreate(12, MJQueryFormComponentExtended_Conditional_0_Conditional_12_Template, 3, 1, "button", 13);
|
|
1083
1084
|
i0.ɵɵelementEnd()();
|
|
1084
|
-
i0.ɵɵelementStart(13, "div",
|
|
1085
|
+
i0.ɵɵelementStart(13, "div", 14)(14, "div", 15)(15, "label", 16);
|
|
1085
1086
|
i0.ɵɵtext(16, "Category");
|
|
1086
1087
|
i0.ɵɵelementEnd();
|
|
1087
|
-
i0.ɵɵconditionalCreate(17,
|
|
1088
|
+
i0.ɵɵconditionalCreate(17, MJQueryFormComponentExtended_Conditional_0_Conditional_17_Template, 1, 7, "mj-tree-dropdown", 17)(18, MJQueryFormComponentExtended_Conditional_0_Conditional_18_Template, 2, 1, "span", 18);
|
|
1088
1089
|
i0.ɵɵelementEnd();
|
|
1089
|
-
i0.ɵɵelementStart(19, "div",
|
|
1090
|
+
i0.ɵɵelementStart(19, "div", 15)(20, "label", 16);
|
|
1090
1091
|
i0.ɵɵtext(21, "Status");
|
|
1091
1092
|
i0.ɵɵelementEnd();
|
|
1092
|
-
i0.ɵɵconditionalCreate(22,
|
|
1093
|
+
i0.ɵɵconditionalCreate(22, MJQueryFormComponentExtended_Conditional_0_Conditional_22_Template, 1, 3, "mj-dropdown", 19)(23, MJQueryFormComponentExtended_Conditional_0_Conditional_23_Template, 3, 5, "span", 20);
|
|
1093
1094
|
i0.ɵɵelementEnd()();
|
|
1094
|
-
i0.ɵɵconditionalCreate(24,
|
|
1095
|
+
i0.ɵɵconditionalCreate(24, MJQueryFormComponentExtended_Conditional_0_Conditional_24_Template, 3, 1, "div", 21);
|
|
1095
1096
|
i0.ɵɵelementEnd()();
|
|
1096
|
-
i0.ɵɵconditionalCreate(25,
|
|
1097
|
-
i0.ɵɵelementStart(26, "div",
|
|
1098
|
-
i0.ɵɵtwoWayListener("ExpandedChange", function
|
|
1099
|
-
i0.ɵɵtemplate(28,
|
|
1100
|
-
i0.ɵɵelementStart(29, "div",
|
|
1101
|
-
i0.ɵɵlistener("click", function
|
|
1102
|
-
i0.ɵɵelement(31, "i",
|
|
1097
|
+
i0.ɵɵconditionalCreate(25, MJQueryFormComponentExtended_Conditional_0_Conditional_25_Template, 7, 8, "div", 22);
|
|
1098
|
+
i0.ɵɵelementStart(26, "div", 23)(27, "mj-accordion-panel", 24);
|
|
1099
|
+
i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_0_Template_mj_accordion_panel_ExpandedChange_27_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.sqlPanelExpanded, $event) || (ctx_r1.sqlPanelExpanded = $event); return i0.ɵɵresetView($event); });
|
|
1100
|
+
i0.ɵɵtemplate(28, MJQueryFormComponentExtended_Conditional_0_ng_template_28_Template, 5, 1, "ng-template", 25);
|
|
1101
|
+
i0.ɵɵelementStart(29, "div", 26)(30, "button", 27);
|
|
1102
|
+
i0.ɵɵlistener("click", function MJQueryFormComponentExtended_Conditional_0_Template_button_click_30_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleFiltersHelp()); });
|
|
1103
|
+
i0.ɵɵelement(31, "i", 28);
|
|
1103
1104
|
i0.ɵɵelementStart(32, "span");
|
|
1104
1105
|
i0.ɵɵtext(33, "Filters Help");
|
|
1105
1106
|
i0.ɵɵelementEnd();
|
|
1106
|
-
i0.ɵɵelement(34, "i",
|
|
1107
|
+
i0.ɵɵelement(34, "i", 29);
|
|
1107
1108
|
i0.ɵɵelementEnd()();
|
|
1108
|
-
i0.ɵɵelementStart(35, "div",
|
|
1109
|
-
i0.ɵɵlistener("change", function
|
|
1109
|
+
i0.ɵɵelementStart(35, "div", 30)(36, "mj-code-editor", 31, 1);
|
|
1110
|
+
i0.ɵɵlistener("change", function MJQueryFormComponentExtended_Conditional_0_Template_mj_code_editor_change_36_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onSQLChange($event)); })("CompositionTokenClick", function MJQueryFormComponentExtended_Conditional_0_Template_mj_code_editor_CompositionTokenClick_36_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCompositionTokenClick($event)); });
|
|
1110
1111
|
i0.ɵɵelementEnd();
|
|
1111
|
-
i0.ɵɵconditionalCreate(38,
|
|
1112
|
+
i0.ɵɵconditionalCreate(38, MJQueryFormComponentExtended_Conditional_0_Conditional_38_Template, 7, 0, "div", 32);
|
|
1112
1113
|
i0.ɵɵelementEnd()();
|
|
1113
|
-
i0.ɵɵconditionalCreate(39,
|
|
1114
|
-
i0.ɵɵconditionalCreate(40,
|
|
1115
|
-
i0.ɵɵconditionalCreate(41,
|
|
1116
|
-
i0.ɵɵconditionalCreate(42,
|
|
1117
|
-
i0.ɵɵconditionalCreate(43,
|
|
1118
|
-
i0.ɵɵelementStart(44, "mj-accordion-panel",
|
|
1119
|
-
i0.ɵɵtwoWayListener("ExpandedChange", function
|
|
1120
|
-
i0.ɵɵtemplate(45,
|
|
1121
|
-
i0.ɵɵelementStart(46, "div",
|
|
1122
|
-
i0.ɵɵelement(50, "i",
|
|
1114
|
+
i0.ɵɵconditionalCreate(39, MJQueryFormComponentExtended_Conditional_0_Conditional_39_Template, 5, 2, "mj-accordion-panel", 33);
|
|
1115
|
+
i0.ɵɵconditionalCreate(40, MJQueryFormComponentExtended_Conditional_0_Conditional_40_Template, 5, 2, "mj-accordion-panel", 33);
|
|
1116
|
+
i0.ɵɵconditionalCreate(41, MJQueryFormComponentExtended_Conditional_0_Conditional_41_Template, 5, 2, "mj-accordion-panel", 33);
|
|
1117
|
+
i0.ɵɵconditionalCreate(42, MJQueryFormComponentExtended_Conditional_0_Conditional_42_Template, 11, 2, "mj-accordion-panel", 33);
|
|
1118
|
+
i0.ɵɵconditionalCreate(43, MJQueryFormComponentExtended_Conditional_0_Conditional_43_Template, 5, 2, "mj-accordion-panel", 33);
|
|
1119
|
+
i0.ɵɵelementStart(44, "mj-accordion-panel", 24);
|
|
1120
|
+
i0.ɵɵtwoWayListener("ExpandedChange", function MJQueryFormComponentExtended_Conditional_0_Template_mj_accordion_panel_ExpandedChange_44_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.detailsPanelExpanded, $event) || (ctx_r1.detailsPanelExpanded = $event); return i0.ɵɵresetView($event); });
|
|
1121
|
+
i0.ɵɵtemplate(45, MJQueryFormComponentExtended_Conditional_0_ng_template_45_Template, 3, 0, "ng-template", 25);
|
|
1122
|
+
i0.ɵɵelementStart(46, "div", 34)(47, "div", 35)(48, "div", 36)(49, "label", 37);
|
|
1123
|
+
i0.ɵɵelement(50, "i", 38);
|
|
1123
1124
|
i0.ɵɵtext(51, " Reusable ");
|
|
1124
1125
|
i0.ɵɵelementEnd();
|
|
1125
|
-
i0.ɵɵconditionalCreate(52,
|
|
1126
|
+
i0.ɵɵconditionalCreate(52, MJQueryFormComponentExtended_Conditional_0_Conditional_52_Template, 3, 1)(53, MJQueryFormComponentExtended_Conditional_0_Conditional_53_Template, 3, 1, "div", 39);
|
|
1126
1127
|
i0.ɵɵelementEnd();
|
|
1127
|
-
i0.ɵɵelementStart(54, "div",
|
|
1128
|
-
i0.ɵɵelement(56, "i",
|
|
1128
|
+
i0.ɵɵelementStart(54, "div", 36)(55, "label", 37);
|
|
1129
|
+
i0.ɵɵelement(56, "i", 40);
|
|
1129
1130
|
i0.ɵɵtext(57, " Cache Enabled ");
|
|
1130
1131
|
i0.ɵɵelementEnd();
|
|
1131
|
-
i0.ɵɵconditionalCreate(58,
|
|
1132
|
+
i0.ɵɵconditionalCreate(58, MJQueryFormComponentExtended_Conditional_0_Conditional_58_Template, 3, 1)(59, MJQueryFormComponentExtended_Conditional_0_Conditional_59_Template, 3, 1, "div", 39);
|
|
1132
1133
|
i0.ɵɵelementEnd();
|
|
1133
|
-
i0.ɵɵconditionalCreate(60,
|
|
1134
|
-
i0.ɵɵelementStart(61, "div",
|
|
1135
|
-
i0.ɵɵelement(63, "i",
|
|
1134
|
+
i0.ɵɵconditionalCreate(60, MJQueryFormComponentExtended_Conditional_0_Conditional_60_Template, 6, 1, "div", 36);
|
|
1135
|
+
i0.ɵɵelementStart(61, "div", 36)(62, "label", 37);
|
|
1136
|
+
i0.ɵɵelement(63, "i", 41);
|
|
1136
1137
|
i0.ɵɵtext(64, " Audit Runs ");
|
|
1137
1138
|
i0.ɵɵelementEnd();
|
|
1138
|
-
i0.ɵɵconditionalCreate(65,
|
|
1139
|
+
i0.ɵɵconditionalCreate(65, MJQueryFormComponentExtended_Conditional_0_Conditional_65_Template, 3, 1)(66, MJQueryFormComponentExtended_Conditional_0_Conditional_66_Template, 3, 1, "div", 39);
|
|
1139
1140
|
i0.ɵɵelementEnd();
|
|
1140
|
-
i0.ɵɵelementStart(67, "div",
|
|
1141
|
-
i0.ɵɵelement(69, "i",
|
|
1141
|
+
i0.ɵɵelementStart(67, "div", 36)(68, "label", 37);
|
|
1142
|
+
i0.ɵɵelement(69, "i", 42);
|
|
1142
1143
|
i0.ɵɵtext(70, " Template Usage ");
|
|
1143
1144
|
i0.ɵɵelementEnd();
|
|
1144
|
-
i0.ɵɵconditionalCreate(71,
|
|
1145
|
+
i0.ɵɵconditionalCreate(71, MJQueryFormComponentExtended_Conditional_0_Conditional_71_Template, 1, 1, "mj-switch", 43)(72, MJQueryFormComponentExtended_Conditional_0_Conditional_72_Template, 3, 1, "div", 39);
|
|
1145
1146
|
i0.ɵɵelementEnd();
|
|
1146
|
-
i0.ɵɵelementStart(73, "div",
|
|
1147
|
-
i0.ɵɵelement(75, "i",
|
|
1147
|
+
i0.ɵɵelementStart(73, "div", 36)(74, "label", 37);
|
|
1148
|
+
i0.ɵɵelement(75, "i", 44);
|
|
1148
1149
|
i0.ɵɵtext(76, " Created ");
|
|
1149
1150
|
i0.ɵɵelementEnd();
|
|
1150
|
-
i0.ɵɵelementStart(77, "div",
|
|
1151
|
+
i0.ɵɵelementStart(77, "div", 39);
|
|
1151
1152
|
i0.ɵɵtext(78);
|
|
1152
1153
|
i0.ɵɵelementEnd()();
|
|
1153
|
-
i0.ɵɵelementStart(79, "div",
|
|
1154
|
-
i0.ɵɵelement(81, "i",
|
|
1154
|
+
i0.ɵɵelementStart(79, "div", 36)(80, "label", 37);
|
|
1155
|
+
i0.ɵɵelement(81, "i", 45);
|
|
1155
1156
|
i0.ɵɵtext(82, " Last Updated ");
|
|
1156
1157
|
i0.ɵɵelementEnd();
|
|
1157
|
-
i0.ɵɵelementStart(83, "div",
|
|
1158
|
+
i0.ɵɵelementStart(83, "div", 39);
|
|
1158
1159
|
i0.ɵɵtext(84);
|
|
1159
1160
|
i0.ɵɵelementEnd()();
|
|
1160
|
-
i0.ɵɵconditionalCreate(85,
|
|
1161
|
+
i0.ɵɵconditionalCreate(85, MJQueryFormComponentExtended_Conditional_0_Conditional_85_Template, 6, 1, "div", 36);
|
|
1161
1162
|
i0.ɵɵelementEnd()()();
|
|
1162
|
-
i0.ɵɵconditionalCreate(86,
|
|
1163
|
-
i0.ɵɵelementEnd()();
|
|
1164
|
-
i0.ɵɵelementStart(87, "mj-query-run-dialog",
|
|
1165
|
-
i0.ɵɵtwoWayListener("isVisibleChange", function
|
|
1166
|
-
i0.ɵɵlistener("onClose", function
|
|
1163
|
+
i0.ɵɵconditionalCreate(86, MJQueryFormComponentExtended_Conditional_0_Conditional_86_Template, 5, 2, "mj-accordion-panel", 33);
|
|
1164
|
+
i0.ɵɵelementEnd()()();
|
|
1165
|
+
i0.ɵɵelementStart(87, "mj-query-run-dialog", 46);
|
|
1166
|
+
i0.ɵɵtwoWayListener("isVisibleChange", function MJQueryFormComponentExtended_Conditional_0_Template_mj_query_run_dialog_isVisibleChange_87_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.showRunDialog, $event) || (ctx_r1.showRunDialog = $event); return i0.ɵɵresetView($event); });
|
|
1167
|
+
i0.ɵɵlistener("onClose", function MJQueryFormComponentExtended_Conditional_0_Template_mj_query_run_dialog_onClose_87_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onRunDialogClose()); });
|
|
1167
1168
|
i0.ɵɵelementEnd();
|
|
1168
|
-
i0.ɵɵelementStart(88, "mj-query-category-dialog",
|
|
1169
|
-
i0.ɵɵtwoWayListener("isVisibleChange", function
|
|
1170
|
-
i0.ɵɵlistener("onCategoryCreated", function
|
|
1169
|
+
i0.ɵɵelementStart(88, "mj-query-category-dialog", 47);
|
|
1170
|
+
i0.ɵɵtwoWayListener("isVisibleChange", function MJQueryFormComponentExtended_Conditional_0_Template_mj_query_category_dialog_isVisibleChange_88_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.showCategoryDialog, $event) || (ctx_r1.showCategoryDialog = $event); return i0.ɵɵresetView($event); });
|
|
1171
|
+
i0.ɵɵlistener("onCategoryCreated", function MJQueryFormComponentExtended_Conditional_0_Template_mj_query_category_dialog_onCategoryCreated_88_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCategoryCreated($event)); });
|
|
1171
1172
|
i0.ɵɵelementEnd();
|
|
1172
1173
|
} if (rf & 2) {
|
|
1173
|
-
const
|
|
1174
|
-
i0.ɵɵ
|
|
1175
|
-
i0.ɵɵ
|
|
1176
|
-
i0.ɵɵ
|
|
1177
|
-
i0.ɵɵconditional(ctx_r2.IsSaving ? 3 : -1);
|
|
1174
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
1175
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("FormComponent", ctx_r1)("ToolbarConfig", ctx_r1.ToolbarConfig)("IsSaving", ctx_r1.IsSaving)("WidthMode", "full-width");
|
|
1176
|
+
i0.ɵɵadvance(3);
|
|
1177
|
+
i0.ɵɵconditional(ctx_r1.IsSaving ? 3 : -1);
|
|
1178
1178
|
i0.ɵɵadvance();
|
|
1179
|
-
i0.ɵɵclassProp("content-saving",
|
|
1179
|
+
i0.ɵɵclassProp("content-saving", ctx_r1.IsSaving);
|
|
1180
1180
|
i0.ɵɵadvance(5);
|
|
1181
|
-
i0.ɵɵconditional(
|
|
1181
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 9 : 10);
|
|
1182
1182
|
i0.ɵɵadvance(3);
|
|
1183
|
-
i0.ɵɵconditional(
|
|
1183
|
+
i0.ɵɵconditional(ctx_r1.record.ID ? 12 : -1);
|
|
1184
1184
|
i0.ɵɵadvance(5);
|
|
1185
|
-
i0.ɵɵconditional(
|
|
1185
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 17 : 18);
|
|
1186
1186
|
i0.ɵɵadvance(5);
|
|
1187
|
-
i0.ɵɵconditional(
|
|
1187
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 22 : 23);
|
|
1188
1188
|
i0.ɵɵadvance(2);
|
|
1189
|
-
i0.ɵɵconditional(
|
|
1189
|
+
i0.ɵɵconditional(ctx_r1.EditMode || ctx_r1.record.Description ? 24 : -1);
|
|
1190
1190
|
i0.ɵɵadvance();
|
|
1191
|
-
i0.ɵɵconditional(
|
|
1191
|
+
i0.ɵɵconditional(ctx_r1.record.Status && ctx_r1.record.Status !== "Approved" && !ctx_r1.EditMode ? 25 : -1);
|
|
1192
1192
|
i0.ɵɵadvance();
|
|
1193
|
-
i0.ɵɵclassProp("content-saving",
|
|
1193
|
+
i0.ɵɵclassProp("content-saving", ctx_r1.IsSaving);
|
|
1194
1194
|
i0.ɵɵadvance();
|
|
1195
|
-
i0.ɵɵtwoWayProperty("Expanded",
|
|
1195
|
+
i0.ɵɵtwoWayProperty("Expanded", ctx_r1.sqlPanelExpanded);
|
|
1196
1196
|
i0.ɵɵadvance(7);
|
|
1197
|
-
i0.ɵɵproperty("ngClass",
|
|
1197
|
+
i0.ɵɵproperty("ngClass", ctx_r1.showFiltersHelp ? "fa-chevron-up" : "fa-chevron-down");
|
|
1198
1198
|
i0.ɵɵadvance(2);
|
|
1199
1199
|
i0.ɵɵproperty("language", "sql");
|
|
1200
1200
|
i0.ɵɵadvance(2);
|
|
1201
|
-
i0.ɵɵconditional(
|
|
1201
|
+
i0.ɵɵconditional(ctx_r1.showFiltersHelp ? 38 : -1);
|
|
1202
1202
|
i0.ɵɵadvance();
|
|
1203
|
-
i0.ɵɵconditional(
|
|
1203
|
+
i0.ɵɵconditional(ctx_r1.record.TechnicalDescription || ctx_r1.EditMode ? 39 : -1);
|
|
1204
1204
|
i0.ɵɵadvance();
|
|
1205
|
-
i0.ɵɵconditional(
|
|
1205
|
+
i0.ɵɵconditional(ctx_r1.record.IsSaved ? 40 : -1);
|
|
1206
1206
|
i0.ɵɵadvance();
|
|
1207
|
-
i0.ɵɵconditional(
|
|
1207
|
+
i0.ɵɵconditional(ctx_r1.record.IsSaved ? 41 : -1);
|
|
1208
1208
|
i0.ɵɵadvance();
|
|
1209
|
-
i0.ɵɵconditional(
|
|
1209
|
+
i0.ɵɵconditional(ctx_r1.record.IsSaved && ctx_r1.DependentQueries.length > 0 ? 42 : -1);
|
|
1210
1210
|
i0.ɵɵadvance();
|
|
1211
|
-
i0.ɵɵconditional(
|
|
1211
|
+
i0.ɵɵconditional(ctx_r1.record.IsSaved ? 43 : -1);
|
|
1212
1212
|
i0.ɵɵadvance();
|
|
1213
|
-
i0.ɵɵtwoWayProperty("Expanded",
|
|
1213
|
+
i0.ɵɵtwoWayProperty("Expanded", ctx_r1.detailsPanelExpanded);
|
|
1214
1214
|
i0.ɵɵadvance(8);
|
|
1215
|
-
i0.ɵɵconditional(
|
|
1215
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 52 : 53);
|
|
1216
1216
|
i0.ɵɵadvance(6);
|
|
1217
|
-
i0.ɵɵconditional(
|
|
1217
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 58 : 59);
|
|
1218
1218
|
i0.ɵɵadvance(2);
|
|
1219
|
-
i0.ɵɵconditional(
|
|
1219
|
+
i0.ɵɵconditional(ctx_r1.record.CacheEnabled ? 60 : -1);
|
|
1220
1220
|
i0.ɵɵadvance(5);
|
|
1221
|
-
i0.ɵɵconditional(
|
|
1221
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 65 : 66);
|
|
1222
1222
|
i0.ɵɵadvance(6);
|
|
1223
|
-
i0.ɵɵconditional(
|
|
1223
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 71 : 72);
|
|
1224
1224
|
i0.ɵɵadvance(7);
|
|
1225
|
-
i0.ɵɵtextInterpolate(
|
|
1225
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatDate(ctx_r1.record.__mj_CreatedAt));
|
|
1226
1226
|
i0.ɵɵadvance(6);
|
|
1227
|
-
i0.ɵɵtextInterpolate(
|
|
1227
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatDate(ctx_r1.record.__mj_UpdatedAt));
|
|
1228
1228
|
i0.ɵɵadvance();
|
|
1229
|
-
i0.ɵɵconditional(
|
|
1229
|
+
i0.ɵɵconditional(ctx_r1.record.QualityRank != null ? 85 : -1);
|
|
1230
1230
|
i0.ɵɵadvance();
|
|
1231
|
-
i0.ɵɵconditional(
|
|
1231
|
+
i0.ɵɵconditional(ctx_r1.record.IsSaved ? 86 : -1);
|
|
1232
1232
|
i0.ɵɵadvance();
|
|
1233
|
-
i0.ɵɵproperty("query",
|
|
1234
|
-
i0.ɵɵtwoWayProperty("isVisible",
|
|
1233
|
+
i0.ɵɵproperty("query", ctx_r1.record)("parameters", ctx_r1.queryParameters);
|
|
1234
|
+
i0.ɵɵtwoWayProperty("isVisible", ctx_r1.showRunDialog);
|
|
1235
1235
|
i0.ɵɵadvance();
|
|
1236
|
-
i0.ɵɵtwoWayProperty("isVisible",
|
|
1236
|
+
i0.ɵɵtwoWayProperty("isVisible", ctx_r1.showCategoryDialog);
|
|
1237
1237
|
} }
|
|
1238
1238
|
let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJQueryFormComponent {
|
|
1239
1239
|
constructor() {
|
|
@@ -1284,19 +1284,10 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
|
|
|
1284
1284
|
{ text: 'Rejected', value: 'Rejected' },
|
|
1285
1285
|
{ text: 'Expired', value: 'Expired' }
|
|
1286
1286
|
];
|
|
1287
|
-
// Toolbar config:
|
|
1288
|
-
//
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
ShowDeleteButton: false,
|
|
1292
|
-
ShowFavoriteButton: false,
|
|
1293
|
-
ShowHistoryButton: false,
|
|
1294
|
-
ShowListButton: false,
|
|
1295
|
-
ShowSectionControls: false,
|
|
1296
|
-
ShowSectionFilter: false,
|
|
1297
|
-
AllowSectionReorder: false,
|
|
1298
|
-
ShowSectionManager: false,
|
|
1299
|
-
};
|
|
1287
|
+
// Toolbar config: custom layout — hides the right-hand section-controls
|
|
1288
|
+
// group, keeps all left-side action buttons (delete/favorite/history/list)
|
|
1289
|
+
// since they're now wired through `<mj-record-form-container>`.
|
|
1290
|
+
this.ToolbarConfig = CUSTOM_LAYOUT_TOOLBAR_CONFIG;
|
|
1300
1291
|
this.sqlEditor = null;
|
|
1301
1292
|
// SQL Filters for help display
|
|
1302
1293
|
this.sqlFilters = RUN_QUERY_SQL_FILTERS;
|
|
@@ -1321,6 +1312,8 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
|
|
|
1321
1312
|
}
|
|
1322
1313
|
this.updateCategoryPathDisplay();
|
|
1323
1314
|
}
|
|
1315
|
+
/** Custom-layout Query form looks best full-width on first open. */
|
|
1316
|
+
getDefaultFormWidthMode() { return 'full-width'; }
|
|
1324
1317
|
/**
|
|
1325
1318
|
* Gets the QueryInfo metadata object for the current record, used to access Dependents.
|
|
1326
1319
|
*/
|
|
@@ -2047,14 +2040,11 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
|
|
|
2047
2040
|
} if (rf & 2) {
|
|
2048
2041
|
let _t;
|
|
2049
2042
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.sqlEditor = _t.first);
|
|
2050
|
-
} }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls:
|
|
2051
|
-
i0.ɵɵ
|
|
2052
|
-
i0.ɵɵconditionalCreate(1, MJQueryFormComponentExtended_Conditional_1_Template, 89, 37);
|
|
2053
|
-
i0.ɵɵelementEnd();
|
|
2043
|
+
} }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 1, consts: [["form", "ngForm"], ["sqlEditor", ""], [3, "Navigate", "DeleteRequested", "FavoriteToggled", "HistoryRequested", "ListManagementRequested", "Record", "FormComponent", "ToolbarConfig", "IsSaving", "WidthMode"], [1, "record-form", 2, "display", "flex", "flex-direction", "column", "height", "100%", "overflow", "hidden"], [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) {
|
|
2044
|
+
i0.ɵɵconditionalCreate(0, MJQueryFormComponentExtended_Conditional_0_Template, 89, 39);
|
|
2054
2045
|
} if (rf & 2) {
|
|
2055
|
-
i0.ɵɵ
|
|
2056
|
-
i0.ɵɵconditional(ctx.record ? 1 : -1);
|
|
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}"] }); }
|
|
2046
|
+
i0.ɵɵconditional(ctx.record ? 0 : -1);
|
|
2047
|
+
} }, 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.MjRecordFormContainerComponent, 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}"] }); }
|
|
2058
2048
|
};
|
|
2059
2049
|
MJQueryFormComponentExtended = __decorate([
|
|
2060
2050
|
RegisterClass(BaseFormComponent, 'MJ: Queries')
|
|
@@ -2062,7 +2052,7 @@ MJQueryFormComponentExtended = __decorate([
|
|
|
2062
2052
|
export { MJQueryFormComponentExtended };
|
|
2063
2053
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJQueryFormComponentExtended, [{
|
|
2064
2054
|
type: Component,
|
|
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"] }]
|
|
2055
|
+
args: [{ standalone: false, selector: 'mj-query-form', template: "@if (record) {\n<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n [ToolbarConfig]=\"ToolbarConfig\"\n [IsSaving]=\"IsSaving\"\n [WidthMode]=\"'full-width'\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n <form class=\"record-form\" #form=\"ngForm\" style=\"display: flex; flex-direction: column; height: 100%; overflow: hidden;\">\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</mj-record-form-container>\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", 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"] }]
|
|
2066
2056
|
}], null, { sqlEditor: [{
|
|
2067
2057
|
type: ViewChild,
|
|
2068
2058
|
args: ['sqlEditor']
|