@memberjunction/ng-core-entity-forms 5.28.0 → 5.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/custom/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 +13 -1
- package/dist/lib/custom/Queries/query-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.js +798 -553
- 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 +44 -26
- 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/MJArchiveConfiguration/mjarchiveconfiguration.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJArchiveConfiguration/mjarchiveconfiguration.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJArchiveConfiguration/mjarchiveconfiguration.form.component.js +123 -0
- package/dist/lib/generated/Entities/MJArchiveConfiguration/mjarchiveconfiguration.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJArchiveConfigurationEntity/mjarchiveconfigurationentity.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJArchiveConfigurationEntity/mjarchiveconfigurationentity.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJArchiveConfigurationEntity/mjarchiveconfigurationentity.form.component.js +87 -0
- package/dist/lib/generated/Entities/MJArchiveConfigurationEntity/mjarchiveconfigurationentity.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJArchiveRun/mjarchiverun.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJArchiveRun/mjarchiverun.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJArchiveRun/mjarchiverun.form.component.js +109 -0
- package/dist/lib/generated/Entities/MJArchiveRun/mjarchiverun.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJArchiveRunDetail/mjarchiverundetail.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJArchiveRunDetail/mjarchiverundetail.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJArchiveRunDetail/mjarchiverundetail.form.component.js +83 -0
- package/dist/lib/generated/Entities/MJArchiveRunDetail/mjarchiverundetail.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJArtifactType/mjartifacttype.form.component.js +39 -37
- package/dist/lib/generated/Entities/MJArtifactType/mjartifacttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +104 -68
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/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.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJFileStorageAccount/mjfilestorageaccount.form.component.js +32 -14
- 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/MJMCPServerTool/mjmcpservertool.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJMCPServerTool/mjmcpservertool.form.component.js +24 -6
- package/dist/lib/generated/Entities/MJMCPServerTool/mjmcpservertool.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMCPToolFavorite/mjmcptoolfavorite.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMCPToolFavorite/mjmcptoolfavorite.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMCPToolFavorite/mjmcptoolfavorite.form.component.js +55 -0
- package/dist/lib/generated/Entities/MJMCPToolFavorite/mjmcptoolfavorite.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/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 +17 -17
- 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 +241 -169
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
- package/dist/lib/generated/generated-forms.module.d.ts +252 -246
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +168 -150
- 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';
|
|
@@ -20,114 +20,121 @@ import * as i4 from "@memberjunction/ng-base-forms";
|
|
|
20
20
|
import * as i5 from "@memberjunction/ng-code-editor";
|
|
21
21
|
import * as i6 from "@memberjunction/ng-shared-generic";
|
|
22
22
|
import * as i7 from "@memberjunction/ng-markdown";
|
|
23
|
-
import * as i8 from "
|
|
24
|
-
import * as i9 from "./query-
|
|
23
|
+
import * as i8 from "@memberjunction/ng-trees";
|
|
24
|
+
import * as i9 from "./query-run-dialog.component";
|
|
25
|
+
import * as i10 from "./query-category-dialog.component";
|
|
25
26
|
const _c0 = ["sqlEditor"];
|
|
26
27
|
const _forTrack0 = ($index, $item) => $item.name;
|
|
27
28
|
const _forTrack1 = ($index, $item) => $item.ID || $index;
|
|
28
29
|
const _forTrack2 = ($index, $item) => $item.ID;
|
|
29
|
-
function
|
|
30
|
-
|
|
31
|
-
i0.ɵɵ
|
|
32
|
-
i0.ɵɵ
|
|
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
|
+
i0.ɵɵelementStart(2, "span");
|
|
34
|
+
i0.ɵɵtext(3, "Saving...");
|
|
35
|
+
i0.ɵɵelementEnd()();
|
|
36
|
+
} }
|
|
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); });
|
|
33
41
|
i0.ɵɵelementEnd();
|
|
34
42
|
} if (rf & 2) {
|
|
35
|
-
const
|
|
36
|
-
i0.ɵɵtwoWayProperty("ngModel",
|
|
43
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
44
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.Name);
|
|
37
45
|
} }
|
|
38
|
-
function
|
|
46
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
39
47
|
i0.ɵɵelementStart(0, "h4", 11);
|
|
40
48
|
i0.ɵɵtext(1);
|
|
41
49
|
i0.ɵɵelementEnd();
|
|
42
50
|
} if (rf & 2) {
|
|
43
|
-
const
|
|
51
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
44
52
|
i0.ɵɵadvance();
|
|
45
|
-
i0.ɵɵtextInterpolate(
|
|
53
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.Name || "Untitled Query");
|
|
46
54
|
} }
|
|
47
|
-
function
|
|
55
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
48
56
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
49
|
-
i0.ɵɵelementStart(0, "button",
|
|
50
|
-
i0.ɵɵlistener("click", function
|
|
51
|
-
i0.ɵɵelement(1, "i",
|
|
57
|
+
i0.ɵɵelementStart(0, "button", 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);
|
|
52
60
|
i0.ɵɵtext(2, " Run ");
|
|
53
61
|
i0.ɵɵelementEnd();
|
|
54
62
|
} if (rf & 2) {
|
|
55
|
-
const
|
|
56
|
-
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);
|
|
57
65
|
} }
|
|
58
|
-
function
|
|
66
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
59
67
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
60
|
-
i0.ɵɵelementStart(0, "mj-dropdown",
|
|
61
|
-
i0.ɵɵ
|
|
68
|
+
i0.ɵɵelementStart(0, "mj-tree-dropdown", 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)); });
|
|
62
70
|
i0.ɵɵelementEnd();
|
|
63
71
|
} if (rf & 2) {
|
|
64
|
-
const
|
|
65
|
-
i0.ɵɵ
|
|
66
|
-
i0.ɵɵproperty("Data", ctx_r2.categoryOptions)("ValuePrimitive", true);
|
|
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);
|
|
67
74
|
} }
|
|
68
|
-
function
|
|
75
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
69
76
|
i0.ɵɵelementStart(0, "span", 18);
|
|
70
77
|
i0.ɵɵtext(1);
|
|
71
78
|
i0.ɵɵelementEnd();
|
|
72
79
|
} if (rf & 2) {
|
|
73
|
-
const
|
|
80
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
74
81
|
i0.ɵɵadvance();
|
|
75
|
-
i0.ɵɵtextInterpolate(
|
|
82
|
+
i0.ɵɵtextInterpolate(ctx_r1.categoryPathDisplay || "Uncategorized");
|
|
76
83
|
} }
|
|
77
|
-
function
|
|
84
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
78
85
|
const _r6 = i0.ɵɵgetCurrentView();
|
|
79
|
-
i0.ɵɵelementStart(0, "mj-dropdown",
|
|
80
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
86
|
+
i0.ɵɵelementStart(0, "mj-dropdown", 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); });
|
|
81
88
|
i0.ɵɵelementEnd();
|
|
82
89
|
} if (rf & 2) {
|
|
83
|
-
const
|
|
84
|
-
i0.ɵɵtwoWayProperty("ngModel",
|
|
85
|
-
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);
|
|
86
93
|
} }
|
|
87
|
-
function
|
|
88
|
-
i0.ɵɵelementStart(0, "span",
|
|
89
|
-
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);
|
|
90
97
|
i0.ɵɵtext(2);
|
|
91
98
|
i0.ɵɵelementEnd();
|
|
92
99
|
} if (rf & 2) {
|
|
93
|
-
const
|
|
94
|
-
i0.ɵɵstyleProp("background",
|
|
100
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
101
|
+
i0.ɵɵstyleProp("background", ctx_r1.getStatusBadgeColor());
|
|
95
102
|
i0.ɵɵadvance();
|
|
96
|
-
i0.ɵɵclassMap(
|
|
103
|
+
i0.ɵɵclassMap(ctx_r1.getStatusBannerIcon());
|
|
97
104
|
i0.ɵɵadvance();
|
|
98
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
105
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Status || "Unknown", " ");
|
|
99
106
|
} }
|
|
100
|
-
function
|
|
107
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_24_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
101
108
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
102
|
-
i0.ɵɵelementStart(0, "textarea",
|
|
103
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
109
|
+
i0.ɵɵelementStart(0, "textarea", 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); });
|
|
104
111
|
i0.ɵɵtext(1, " ");
|
|
105
112
|
i0.ɵɵelementEnd();
|
|
106
113
|
} if (rf & 2) {
|
|
107
|
-
const
|
|
108
|
-
i0.ɵɵtwoWayProperty("ngModel",
|
|
114
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
115
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.Description);
|
|
109
116
|
} }
|
|
110
|
-
function
|
|
111
|
-
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);
|
|
112
119
|
i0.ɵɵtext(1);
|
|
113
120
|
i0.ɵɵelementEnd();
|
|
114
121
|
} if (rf & 2) {
|
|
115
|
-
const
|
|
122
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
116
123
|
i0.ɵɵadvance();
|
|
117
|
-
i0.ɵɵtextInterpolate(
|
|
124
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.Description);
|
|
118
125
|
} }
|
|
119
|
-
function
|
|
126
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_24_Template(rf, ctx) { if (rf & 1) {
|
|
120
127
|
i0.ɵɵelementStart(0, "div", 21);
|
|
121
|
-
i0.ɵɵconditionalCreate(1,
|
|
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);
|
|
122
129
|
i0.ɵɵelementEnd();
|
|
123
130
|
} if (rf & 2) {
|
|
124
|
-
const
|
|
131
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
125
132
|
i0.ɵɵadvance();
|
|
126
|
-
i0.ɵɵconditional(
|
|
133
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 1 : 2);
|
|
127
134
|
} }
|
|
128
|
-
function
|
|
129
|
-
i0.ɵɵelementStart(0, "div",
|
|
130
|
-
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);
|
|
131
138
|
i0.ɵɵelementStart(2, "span");
|
|
132
139
|
i0.ɵɵtext(3, " This query has status ");
|
|
133
140
|
i0.ɵɵelementStart(4, "strong");
|
|
@@ -136,34 +143,34 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_24_Template(rf,
|
|
|
136
143
|
i0.ɵɵtext(6);
|
|
137
144
|
i0.ɵɵelementEnd()();
|
|
138
145
|
} if (rf & 2) {
|
|
139
|
-
const
|
|
140
|
-
i0.ɵɵstyleProp("border-left-color",
|
|
146
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
147
|
+
i0.ɵɵstyleProp("border-left-color", ctx_r1.getStatusBadgeColor());
|
|
141
148
|
i0.ɵɵadvance();
|
|
142
|
-
i0.ɵɵclassMap(
|
|
143
|
-
i0.ɵɵstyleProp("color",
|
|
149
|
+
i0.ɵɵclassMap(ctx_r1.getStatusBannerIcon());
|
|
150
|
+
i0.ɵɵstyleProp("color", ctx_r1.getStatusBadgeColor());
|
|
144
151
|
i0.ɵɵadvance(4);
|
|
145
|
-
i0.ɵɵtextInterpolate(
|
|
152
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.Status);
|
|
146
153
|
i0.ɵɵadvance();
|
|
147
|
-
i0.ɵɵtextInterpolate1(". ",
|
|
154
|
+
i0.ɵɵtextInterpolate1(". ", ctx_r1.getStatusBannerMessage(), " ");
|
|
148
155
|
} }
|
|
149
|
-
function
|
|
150
|
-
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);
|
|
151
158
|
i0.ɵɵtext(1, "\u2014 Defined");
|
|
152
159
|
i0.ɵɵelementEnd();
|
|
153
160
|
} }
|
|
154
|
-
function
|
|
155
|
-
i0.ɵɵelementStart(0, "span",
|
|
156
|
-
i0.ɵɵelement(2, "i",
|
|
161
|
+
function MJQueryFormComponentExtended_Conditional_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);
|
|
157
164
|
i0.ɵɵtext(3, " SQL ");
|
|
158
|
-
i0.ɵɵconditionalCreate(4,
|
|
165
|
+
i0.ɵɵconditionalCreate(4, MJQueryFormComponentExtended_Conditional_0_ng_template_28_Conditional_4_Template, 2, 0, "span", 63);
|
|
159
166
|
i0.ɵɵelementEnd()();
|
|
160
167
|
} if (rf & 2) {
|
|
161
|
-
const
|
|
168
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
162
169
|
i0.ɵɵadvance(4);
|
|
163
|
-
i0.ɵɵconditional(
|
|
170
|
+
i0.ɵɵconditional(ctx_r1.record.SQL ? 4 : -1);
|
|
164
171
|
} }
|
|
165
|
-
function
|
|
166
|
-
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);
|
|
167
174
|
i0.ɵɵtext(1);
|
|
168
175
|
i0.ɵɵelementEnd();
|
|
169
176
|
} if (rf & 2) {
|
|
@@ -171,17 +178,17 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_37_For_6_Conditi
|
|
|
171
178
|
i0.ɵɵadvance();
|
|
172
179
|
i0.ɵɵtextInterpolate(filter_r8.notes);
|
|
173
180
|
} }
|
|
174
|
-
function
|
|
175
|
-
i0.ɵɵelementStart(0, "div",
|
|
181
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_38_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
182
|
+
i0.ɵɵelementStart(0, "div", 67)(1, "div", 68);
|
|
176
183
|
i0.ɵɵtext(2);
|
|
177
184
|
i0.ɵɵelementEnd();
|
|
178
|
-
i0.ɵɵelementStart(3, "div",
|
|
185
|
+
i0.ɵɵelementStart(3, "div", 69);
|
|
179
186
|
i0.ɵɵtext(4);
|
|
180
187
|
i0.ɵɵelementEnd();
|
|
181
|
-
i0.ɵɵelementStart(5, "div",
|
|
188
|
+
i0.ɵɵelementStart(5, "div", 70);
|
|
182
189
|
i0.ɵɵtext(6);
|
|
183
190
|
i0.ɵɵelementEnd();
|
|
184
|
-
i0.ɵɵconditionalCreate(7,
|
|
191
|
+
i0.ɵɵconditionalCreate(7, MJQueryFormComponentExtended_Conditional_0_Conditional_38_For_6_Conditional_7_Template, 2, 1, "div", 71);
|
|
185
192
|
i0.ɵɵelementEnd();
|
|
186
193
|
} if (rf & 2) {
|
|
187
194
|
const filter_r8 = ctx.$implicit;
|
|
@@ -194,147 +201,147 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_37_For_6_Templat
|
|
|
194
201
|
i0.ɵɵadvance();
|
|
195
202
|
i0.ɵɵconditional(filter_r8.notes ? 7 : -1);
|
|
196
203
|
} }
|
|
197
|
-
function
|
|
198
|
-
i0.ɵɵelementStart(0, "div", 32)(1, "h6",
|
|
199
|
-
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);
|
|
200
207
|
i0.ɵɵtext(3, " Available SQL Filters for Parameterized Queries ");
|
|
201
208
|
i0.ɵɵelementEnd();
|
|
202
|
-
i0.ɵɵelementStart(4, "div",
|
|
203
|
-
i0.ɵɵrepeaterCreate(5,
|
|
209
|
+
i0.ɵɵelementStart(4, "div", 66);
|
|
210
|
+
i0.ɵɵrepeaterCreate(5, MJQueryFormComponentExtended_Conditional_0_Conditional_38_For_6_Template, 8, 4, "div", 67, _forTrack0);
|
|
204
211
|
i0.ɵɵelementEnd()();
|
|
205
212
|
} if (rf & 2) {
|
|
206
|
-
const
|
|
213
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
207
214
|
i0.ɵɵadvance(5);
|
|
208
|
-
i0.ɵɵrepeater(
|
|
215
|
+
i0.ɵɵrepeater(ctx_r1.sqlFilters);
|
|
209
216
|
} }
|
|
210
|
-
function
|
|
211
|
-
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);
|
|
212
219
|
i0.ɵɵtext(1, "\u2014 Documented");
|
|
213
220
|
i0.ɵɵelementEnd();
|
|
214
221
|
} }
|
|
215
|
-
function
|
|
216
|
-
i0.ɵɵelementStart(0, "span",
|
|
217
|
-
i0.ɵɵelement(1, "i",
|
|
222
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_39_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
223
|
+
i0.ɵɵelementStart(0, "span", 61);
|
|
224
|
+
i0.ɵɵelement(1, "i", 73);
|
|
218
225
|
i0.ɵɵtext(2, " Technical Description ");
|
|
219
|
-
i0.ɵɵconditionalCreate(3,
|
|
226
|
+
i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_0_Conditional_39_ng_template_1_Conditional_3_Template, 2, 0, "span", 63);
|
|
220
227
|
i0.ɵɵelementEnd();
|
|
221
228
|
} if (rf & 2) {
|
|
222
|
-
const
|
|
229
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
223
230
|
i0.ɵɵadvance(3);
|
|
224
|
-
i0.ɵɵconditional(
|
|
231
|
+
i0.ɵɵconditional(ctx_r1.record.TechnicalDescription ? 3 : -1);
|
|
225
232
|
} }
|
|
226
|
-
function
|
|
227
|
-
i0.ɵɵelementStart(0, "div",
|
|
228
|
-
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);
|
|
229
236
|
i0.ɵɵtext(3, " Preview ");
|
|
230
237
|
i0.ɵɵelementEnd();
|
|
231
|
-
i0.ɵɵelement(4, "mj-markdown",
|
|
238
|
+
i0.ɵɵelement(4, "mj-markdown", 78);
|
|
232
239
|
i0.ɵɵelementEnd();
|
|
233
240
|
} if (rf & 2) {
|
|
234
|
-
const
|
|
241
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
235
242
|
i0.ɵɵadvance(4);
|
|
236
|
-
i0.ɵɵproperty("data",
|
|
243
|
+
i0.ɵɵproperty("data", ctx_r1.record.TechnicalDescription || "")("enableMermaid", true)("enableHighlight", true)("enableCollapsibleHeadings", false)("enableSmartypants", true);
|
|
237
244
|
} }
|
|
238
|
-
function
|
|
245
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_39_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
239
246
|
const _r10 = i0.ɵɵgetCurrentView();
|
|
240
|
-
i0.ɵɵelementStart(0, "textarea",
|
|
241
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
247
|
+
i0.ɵɵelementStart(0, "textarea", 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); });
|
|
242
249
|
i0.ɵɵtext(1, " ");
|
|
243
250
|
i0.ɵɵelementEnd();
|
|
244
|
-
i0.ɵɵconditionalCreate(2,
|
|
251
|
+
i0.ɵɵconditionalCreate(2, MJQueryFormComponentExtended_Conditional_0_Conditional_39_Conditional_3_Conditional_2_Template, 5, 5, "div", 75);
|
|
245
252
|
} if (rf & 2) {
|
|
246
|
-
const
|
|
247
|
-
i0.ɵɵtwoWayProperty("ngModel",
|
|
253
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
254
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.TechnicalDescription);
|
|
248
255
|
i0.ɵɵadvance(2);
|
|
249
|
-
i0.ɵɵconditional(
|
|
256
|
+
i0.ɵɵconditional(ctx_r1.record.TechnicalDescription ? 2 : -1);
|
|
250
257
|
} }
|
|
251
|
-
function
|
|
252
|
-
i0.ɵɵelementStart(0, "div",
|
|
253
|
-
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);
|
|
254
261
|
i0.ɵɵelementEnd();
|
|
255
262
|
} if (rf & 2) {
|
|
256
|
-
const
|
|
263
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
257
264
|
i0.ɵɵadvance();
|
|
258
|
-
i0.ɵɵproperty("data",
|
|
265
|
+
i0.ɵɵproperty("data", ctx_r1.record.TechnicalDescription || "")("enableMermaid", true)("enableHighlight", true)("enableCollapsibleHeadings", false)("enableSmartypants", true);
|
|
259
266
|
} }
|
|
260
|
-
function
|
|
267
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_39_Template(rf, ctx) { if (rf & 1) {
|
|
261
268
|
const _r9 = i0.ɵɵgetCurrentView();
|
|
262
269
|
i0.ɵɵelementStart(0, "mj-accordion-panel", 24);
|
|
263
|
-
i0.ɵɵtwoWayListener("ExpandedChange", function
|
|
264
|
-
i0.ɵɵtemplate(1,
|
|
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);
|
|
265
272
|
i0.ɵɵelementStart(2, "div", 34);
|
|
266
|
-
i0.ɵɵconditionalCreate(3,
|
|
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);
|
|
267
274
|
i0.ɵɵelementEnd()();
|
|
268
275
|
} if (rf & 2) {
|
|
269
|
-
const
|
|
270
|
-
i0.ɵɵtwoWayProperty("Expanded",
|
|
276
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
277
|
+
i0.ɵɵtwoWayProperty("Expanded", ctx_r1.technicalDescriptionPanelExpanded);
|
|
271
278
|
i0.ɵɵadvance(3);
|
|
272
|
-
i0.ɵɵconditional(
|
|
279
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 3 : 4);
|
|
273
280
|
} }
|
|
274
|
-
function
|
|
275
|
-
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);
|
|
276
283
|
i0.ɵɵtext(1);
|
|
277
284
|
i0.ɵɵelementEnd();
|
|
278
285
|
} if (rf & 2) {
|
|
279
|
-
const
|
|
286
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
280
287
|
i0.ɵɵadvance();
|
|
281
|
-
i0.ɵɵtextInterpolate(
|
|
288
|
+
i0.ɵɵtextInterpolate(ctx_r1.queryParameters.length);
|
|
282
289
|
} }
|
|
283
|
-
function
|
|
284
|
-
i0.ɵɵelementStart(0, "span",
|
|
285
|
-
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);
|
|
286
293
|
i0.ɵɵtext(2, " Parameters ");
|
|
287
|
-
i0.ɵɵconditionalCreate(3,
|
|
294
|
+
i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_0_Conditional_40_ng_template_1_Conditional_3_Template, 2, 1, "span", 81);
|
|
288
295
|
i0.ɵɵelementEnd();
|
|
289
296
|
} if (rf & 2) {
|
|
290
|
-
const
|
|
297
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
291
298
|
i0.ɵɵadvance(3);
|
|
292
|
-
i0.ɵɵconditional(
|
|
299
|
+
i0.ɵɵconditional(ctx_r1.queryParameters.length > 0 ? 3 : -1);
|
|
293
300
|
} }
|
|
294
|
-
function
|
|
295
|
-
i0.ɵɵelementStart(0, "div",
|
|
296
|
-
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);
|
|
297
304
|
i0.ɵɵelementEnd();
|
|
298
305
|
} }
|
|
299
|
-
function
|
|
306
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Conditional_0_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
300
307
|
const _r12 = i0.ɵɵgetCurrentView();
|
|
301
|
-
i0.ɵɵelementStart(0, "button",
|
|
302
|
-
i0.ɵɵlistener("click", function
|
|
303
|
-
i0.ɵɵelement(1, "i",
|
|
308
|
+
i0.ɵɵelementStart(0, "button", 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);
|
|
304
311
|
i0.ɵɵtext(2, " Add First Parameter ");
|
|
305
312
|
i0.ɵɵelementEnd();
|
|
306
313
|
} }
|
|
307
|
-
function
|
|
308
|
-
i0.ɵɵelementStart(0, "div",
|
|
309
|
-
i0.ɵɵelement(1, "i",
|
|
310
|
-
i0.ɵɵelementStart(2, "div",
|
|
314
|
+
function MJQueryFormComponentExtended_Conditional_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);
|
|
311
318
|
i0.ɵɵtext(3, "No Parameters Defined");
|
|
312
319
|
i0.ɵɵelementEnd();
|
|
313
|
-
i0.ɵɵelementStart(4, "div",
|
|
320
|
+
i0.ɵɵelementStart(4, "div", 86);
|
|
314
321
|
i0.ɵɵtext(5, " Add parameters to make your query dynamic and reusable. ");
|
|
315
322
|
i0.ɵɵelementEnd();
|
|
316
|
-
i0.ɵɵconditionalCreate(6,
|
|
323
|
+
i0.ɵɵconditionalCreate(6, MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Conditional_0_Conditional_6_Template, 3, 0, "button", 87);
|
|
317
324
|
i0.ɵɵelementEnd();
|
|
318
325
|
} if (rf & 2) {
|
|
319
|
-
const
|
|
326
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
320
327
|
i0.ɵɵadvance(6);
|
|
321
|
-
i0.ɵɵconditional(
|
|
328
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 6 : -1);
|
|
322
329
|
} }
|
|
323
|
-
function
|
|
330
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
324
331
|
const _r13 = i0.ɵɵgetCurrentView();
|
|
325
|
-
i0.ɵɵelementStart(0, "div",
|
|
326
|
-
i0.ɵɵlistener("click", function
|
|
327
|
-
i0.ɵɵelement(2, "i",
|
|
332
|
+
i0.ɵɵelementStart(0, "div", 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);
|
|
328
335
|
i0.ɵɵtext(3, " Add Parameter ");
|
|
329
336
|
i0.ɵɵelementEnd()();
|
|
330
337
|
} }
|
|
331
|
-
function
|
|
332
|
-
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);
|
|
333
340
|
i0.ɵɵtext(1, "Required");
|
|
334
341
|
i0.ɵɵelementEnd();
|
|
335
342
|
} }
|
|
336
|
-
function
|
|
337
|
-
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);
|
|
338
345
|
i0.ɵɵtext(1);
|
|
339
346
|
i0.ɵɵelementEnd();
|
|
340
347
|
} if (rf & 2) {
|
|
@@ -342,11 +349,11 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4
|
|
|
342
349
|
i0.ɵɵadvance();
|
|
343
350
|
i0.ɵɵtextInterpolate(param_r15.Description);
|
|
344
351
|
} }
|
|
345
|
-
function
|
|
346
|
-
i0.ɵɵelementStart(0, "span",
|
|
352
|
+
function MJQueryFormComponentExtended_Conditional_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");
|
|
347
354
|
i0.ɵɵtext(2, "Default:");
|
|
348
355
|
i0.ɵɵelementEnd();
|
|
349
|
-
i0.ɵɵelementStart(3, "code",
|
|
356
|
+
i0.ɵɵelementStart(3, "code", 104);
|
|
350
357
|
i0.ɵɵtext(4);
|
|
351
358
|
i0.ɵɵelementEnd()();
|
|
352
359
|
} if (rf & 2) {
|
|
@@ -354,44 +361,44 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4
|
|
|
354
361
|
i0.ɵɵadvance(4);
|
|
355
362
|
i0.ɵɵtextInterpolate(param_r15.DefaultValue);
|
|
356
363
|
} }
|
|
357
|
-
function
|
|
364
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
358
365
|
const _r16 = i0.ɵɵgetCurrentView();
|
|
359
|
-
i0.ɵɵelementStart(0, "div",
|
|
360
|
-
i0.ɵɵlistener("click", function
|
|
361
|
-
i0.ɵɵelementStart(1, "button",
|
|
362
|
-
i0.ɵɵlistener("click", function
|
|
363
|
-
i0.ɵɵelement(2, "i",
|
|
364
|
-
i0.ɵɵelementEnd();
|
|
365
|
-
i0.ɵɵelementStart(3, "button",
|
|
366
|
-
i0.ɵɵlistener("click", function
|
|
367
|
-
i0.ɵɵelement(4, "i",
|
|
366
|
+
i0.ɵɵelementStart(0, "div", 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);
|
|
368
375
|
i0.ɵɵelementEnd()();
|
|
369
376
|
} }
|
|
370
|
-
function
|
|
377
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Conditional_1_For_3_Template(rf, ctx) { if (rf & 1) {
|
|
371
378
|
const _r14 = i0.ɵɵgetCurrentView();
|
|
372
|
-
i0.ɵɵelementStart(0, "div",
|
|
373
|
-
i0.ɵɵlistener("click", function
|
|
374
|
-
i0.ɵɵelementStart(1, "div",
|
|
375
|
-
i0.ɵɵelement(3, "i",
|
|
379
|
+
i0.ɵɵelementStart(0, "div", 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);
|
|
376
383
|
i0.ɵɵtext(4);
|
|
377
384
|
i0.ɵɵelementEnd();
|
|
378
|
-
i0.ɵɵelementStart(5, "div",
|
|
379
|
-
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);
|
|
380
387
|
i0.ɵɵelementEnd()();
|
|
381
|
-
i0.ɵɵelementStart(7, "div",
|
|
382
|
-
i0.ɵɵconditionalCreate(8,
|
|
383
|
-
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");
|
|
384
391
|
i0.ɵɵtext(12, "Type:");
|
|
385
392
|
i0.ɵɵelementEnd();
|
|
386
393
|
i0.ɵɵtext(13);
|
|
387
394
|
i0.ɵɵelementEnd();
|
|
388
|
-
i0.ɵɵconditionalCreate(14,
|
|
395
|
+
i0.ɵɵconditionalCreate(14, MJQueryFormComponentExtended_Conditional_0_Conditional_40_Conditional_4_Conditional_1_For_3_Conditional_14_Template, 5, 1, "span", 102);
|
|
389
396
|
i0.ɵɵelementEnd()();
|
|
390
|
-
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);
|
|
391
398
|
i0.ɵɵelementEnd();
|
|
392
399
|
} if (rf & 2) {
|
|
393
400
|
const param_r15 = ctx.$implicit;
|
|
394
|
-
const
|
|
401
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
395
402
|
i0.ɵɵclassProp("required", param_r15.IsRequired);
|
|
396
403
|
i0.ɵɵadvance(4);
|
|
397
404
|
i0.ɵɵtextInterpolate1(" ", param_r15.Name, " ");
|
|
@@ -404,98 +411,98 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_39_Conditional_4
|
|
|
404
411
|
i0.ɵɵadvance();
|
|
405
412
|
i0.ɵɵconditional(param_r15.DefaultValue ? 14 : -1);
|
|
406
413
|
i0.ɵɵadvance();
|
|
407
|
-
i0.ɵɵconditional(
|
|
414
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 15 : -1);
|
|
408
415
|
} }
|
|
409
|
-
function
|
|
410
|
-
i0.ɵɵconditionalCreate(0,
|
|
411
|
-
i0.ɵɵelementStart(1, "div",
|
|
412
|
-
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);
|
|
413
420
|
i0.ɵɵelementEnd();
|
|
414
421
|
} if (rf & 2) {
|
|
415
|
-
const
|
|
416
|
-
i0.ɵɵconditional(
|
|
422
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
423
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 0 : -1);
|
|
417
424
|
i0.ɵɵadvance(2);
|
|
418
|
-
i0.ɵɵrepeater(
|
|
425
|
+
i0.ɵɵrepeater(ctx_r1.queryParameters);
|
|
419
426
|
} }
|
|
420
|
-
function
|
|
421
|
-
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);
|
|
422
429
|
} if (rf & 2) {
|
|
423
|
-
const
|
|
424
|
-
i0.ɵɵconditional(
|
|
430
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
431
|
+
i0.ɵɵconditional(ctx_r1.queryParameters.length === 0 ? 0 : 1);
|
|
425
432
|
} }
|
|
426
|
-
function
|
|
433
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_40_Template(rf, ctx) { if (rf & 1) {
|
|
427
434
|
const _r11 = i0.ɵɵgetCurrentView();
|
|
428
435
|
i0.ɵɵelementStart(0, "mj-accordion-panel", 24);
|
|
429
|
-
i0.ɵɵtwoWayListener("ExpandedChange", function
|
|
430
|
-
i0.ɵɵtemplate(1,
|
|
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);
|
|
431
438
|
i0.ɵɵelementStart(2, "div", 34);
|
|
432
|
-
i0.ɵɵconditionalCreate(3,
|
|
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);
|
|
433
440
|
i0.ɵɵelementEnd()();
|
|
434
441
|
} if (rf & 2) {
|
|
435
|
-
const
|
|
436
|
-
i0.ɵɵtwoWayProperty("Expanded",
|
|
442
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
443
|
+
i0.ɵɵtwoWayProperty("Expanded", ctx_r1.parametersPanelExpanded);
|
|
437
444
|
i0.ɵɵadvance(3);
|
|
438
|
-
i0.ɵɵconditional(
|
|
445
|
+
i0.ɵɵconditional(ctx_r1.isLoadingParameters ? 3 : 4);
|
|
439
446
|
} }
|
|
440
|
-
function
|
|
441
|
-
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);
|
|
442
449
|
i0.ɵɵtext(1);
|
|
443
450
|
i0.ɵɵelementEnd();
|
|
444
451
|
} if (rf & 2) {
|
|
445
|
-
const
|
|
452
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
446
453
|
i0.ɵɵadvance();
|
|
447
|
-
i0.ɵɵtextInterpolate(
|
|
454
|
+
i0.ɵɵtextInterpolate(ctx_r1.queryFields.length);
|
|
448
455
|
} }
|
|
449
|
-
function
|
|
450
|
-
i0.ɵɵelementStart(0, "span",
|
|
451
|
-
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);
|
|
452
459
|
i0.ɵɵtext(2, " Fields ");
|
|
453
|
-
i0.ɵɵconditionalCreate(3,
|
|
460
|
+
i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_0_Conditional_41_ng_template_1_Conditional_3_Template, 2, 1, "span", 81);
|
|
454
461
|
i0.ɵɵelementEnd();
|
|
455
462
|
} if (rf & 2) {
|
|
456
|
-
const
|
|
463
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
457
464
|
i0.ɵɵadvance(3);
|
|
458
|
-
i0.ɵɵconditional(
|
|
465
|
+
i0.ɵɵconditional(ctx_r1.queryFields.length > 0 ? 3 : -1);
|
|
459
466
|
} }
|
|
460
|
-
function
|
|
461
|
-
i0.ɵɵelementStart(0, "div",
|
|
462
|
-
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);
|
|
463
470
|
i0.ɵɵelementEnd();
|
|
464
471
|
} }
|
|
465
|
-
function
|
|
472
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_41_Conditional_4_Conditional_0_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
466
473
|
const _r18 = i0.ɵɵgetCurrentView();
|
|
467
|
-
i0.ɵɵelementStart(0, "button",
|
|
468
|
-
i0.ɵɵlistener("click", function
|
|
469
|
-
i0.ɵɵelement(1, "i",
|
|
474
|
+
i0.ɵɵelementStart(0, "button", 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);
|
|
470
477
|
i0.ɵɵtext(2, " Add First Field ");
|
|
471
478
|
i0.ɵɵelementEnd();
|
|
472
479
|
} }
|
|
473
|
-
function
|
|
474
|
-
i0.ɵɵelementStart(0, "div",
|
|
475
|
-
i0.ɵɵelement(1, "i",
|
|
476
|
-
i0.ɵɵelementStart(2, "div",
|
|
480
|
+
function MJQueryFormComponentExtended_Conditional_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);
|
|
477
484
|
i0.ɵɵtext(3, "No Fields Defined");
|
|
478
485
|
i0.ɵɵelementEnd();
|
|
479
|
-
i0.ɵɵelementStart(4, "div",
|
|
486
|
+
i0.ɵɵelementStart(4, "div", 86);
|
|
480
487
|
i0.ɵɵtext(5, " Define output fields for your query results. ");
|
|
481
488
|
i0.ɵɵelementEnd();
|
|
482
|
-
i0.ɵɵconditionalCreate(6,
|
|
489
|
+
i0.ɵɵconditionalCreate(6, MJQueryFormComponentExtended_Conditional_0_Conditional_41_Conditional_4_Conditional_0_Conditional_6_Template, 3, 0, "button", 87);
|
|
483
490
|
i0.ɵɵelementEnd();
|
|
484
491
|
} if (rf & 2) {
|
|
485
|
-
const
|
|
492
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
486
493
|
i0.ɵɵadvance(6);
|
|
487
|
-
i0.ɵɵconditional(
|
|
494
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 6 : -1);
|
|
488
495
|
} }
|
|
489
|
-
function
|
|
496
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_41_Conditional_4_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
490
497
|
const _r19 = i0.ɵɵgetCurrentView();
|
|
491
|
-
i0.ɵɵelementStart(0, "div",
|
|
492
|
-
i0.ɵɵlistener("click", function
|
|
493
|
-
i0.ɵɵelement(2, "i",
|
|
498
|
+
i0.ɵɵelementStart(0, "div", 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);
|
|
494
501
|
i0.ɵɵtext(3, " Add Field ");
|
|
495
502
|
i0.ɵɵelementEnd()();
|
|
496
503
|
} }
|
|
497
|
-
function
|
|
498
|
-
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);
|
|
499
506
|
i0.ɵɵtext(1);
|
|
500
507
|
i0.ɵɵelementEnd();
|
|
501
508
|
} if (rf & 2) {
|
|
@@ -503,8 +510,8 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4
|
|
|
503
510
|
i0.ɵɵadvance();
|
|
504
511
|
i0.ɵɵtextInterpolate1("#", field_r20.Sequence);
|
|
505
512
|
} }
|
|
506
|
-
function
|
|
507
|
-
i0.ɵɵelementStart(0, "div",
|
|
513
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_41_Conditional_4_Conditional_1_For_3_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
514
|
+
i0.ɵɵelementStart(0, "div", 100);
|
|
508
515
|
i0.ɵɵtext(1);
|
|
509
516
|
i0.ɵɵelementEnd();
|
|
510
517
|
} if (rf & 2) {
|
|
@@ -512,34 +519,34 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4
|
|
|
512
519
|
i0.ɵɵadvance();
|
|
513
520
|
i0.ɵɵtextInterpolate(field_r20.Description);
|
|
514
521
|
} }
|
|
515
|
-
function
|
|
522
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_41_Conditional_4_Conditional_1_For_3_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
516
523
|
const _r21 = i0.ɵɵgetCurrentView();
|
|
517
|
-
i0.ɵɵelementStart(0, "div",
|
|
518
|
-
i0.ɵɵlistener("click", function
|
|
519
|
-
i0.ɵɵelement(2, "i",
|
|
524
|
+
i0.ɵɵelementStart(0, "div", 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);
|
|
520
527
|
i0.ɵɵelementEnd()();
|
|
521
528
|
} }
|
|
522
|
-
function
|
|
523
|
-
i0.ɵɵelementStart(0, "div",
|
|
524
|
-
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);
|
|
525
532
|
i0.ɵɵtext(4);
|
|
526
533
|
i0.ɵɵelementEnd();
|
|
527
|
-
i0.ɵɵelementStart(5, "div",
|
|
534
|
+
i0.ɵɵelementStart(5, "div", 97)(6, "span", 115);
|
|
528
535
|
i0.ɵɵtext(7);
|
|
529
536
|
i0.ɵɵelementEnd();
|
|
530
|
-
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);
|
|
531
538
|
i0.ɵɵelementEnd()();
|
|
532
|
-
i0.ɵɵelementStart(9, "div",
|
|
533
|
-
i0.ɵɵconditionalCreate(10,
|
|
534
|
-
i0.ɵɵelementStart(11, "div",
|
|
535
|
-
i0.ɵɵelement(13, "i",
|
|
539
|
+
i0.ɵɵelementStart(9, "div", 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);
|
|
536
543
|
i0.ɵɵtext(14);
|
|
537
544
|
i0.ɵɵelementEnd()()();
|
|
538
|
-
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);
|
|
539
546
|
i0.ɵɵelementEnd();
|
|
540
547
|
} if (rf & 2) {
|
|
541
548
|
const field_r20 = ctx.$implicit;
|
|
542
|
-
const
|
|
549
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
543
550
|
i0.ɵɵadvance(4);
|
|
544
551
|
i0.ɵɵtextInterpolate1(" ", field_r20.Name, " ");
|
|
545
552
|
i0.ɵɵadvance(3);
|
|
@@ -551,54 +558,54 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_40_Conditional_4
|
|
|
551
558
|
i0.ɵɵadvance(4);
|
|
552
559
|
i0.ɵɵtextInterpolate1(" ", field_r20.SQLFullType || field_r20.SQLBaseType, " ");
|
|
553
560
|
i0.ɵɵadvance();
|
|
554
|
-
i0.ɵɵconditional(
|
|
561
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 15 : -1);
|
|
555
562
|
} }
|
|
556
|
-
function
|
|
557
|
-
i0.ɵɵconditionalCreate(0,
|
|
558
|
-
i0.ɵɵelementStart(1, "div",
|
|
559
|
-
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);
|
|
560
567
|
i0.ɵɵelementEnd();
|
|
561
568
|
} if (rf & 2) {
|
|
562
|
-
const
|
|
563
|
-
i0.ɵɵconditional(
|
|
569
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
570
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 0 : -1);
|
|
564
571
|
i0.ɵɵadvance(2);
|
|
565
|
-
i0.ɵɵrepeater(
|
|
572
|
+
i0.ɵɵrepeater(ctx_r1.queryFields);
|
|
566
573
|
} }
|
|
567
|
-
function
|
|
568
|
-
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);
|
|
569
576
|
} if (rf & 2) {
|
|
570
|
-
const
|
|
571
|
-
i0.ɵɵconditional(
|
|
577
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
578
|
+
i0.ɵɵconditional(ctx_r1.queryFields.length === 0 ? 0 : 1);
|
|
572
579
|
} }
|
|
573
|
-
function
|
|
580
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_41_Template(rf, ctx) { if (rf & 1) {
|
|
574
581
|
const _r17 = i0.ɵɵgetCurrentView();
|
|
575
582
|
i0.ɵɵelementStart(0, "mj-accordion-panel", 24);
|
|
576
|
-
i0.ɵɵtwoWayListener("ExpandedChange", function
|
|
577
|
-
i0.ɵɵtemplate(1,
|
|
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);
|
|
578
585
|
i0.ɵɵelementStart(2, "div", 34);
|
|
579
|
-
i0.ɵɵconditionalCreate(3,
|
|
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);
|
|
580
587
|
i0.ɵɵelementEnd()();
|
|
581
588
|
} if (rf & 2) {
|
|
582
|
-
const
|
|
583
|
-
i0.ɵɵtwoWayProperty("Expanded",
|
|
589
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
590
|
+
i0.ɵɵtwoWayProperty("Expanded", ctx_r1.fieldsPanelExpanded);
|
|
584
591
|
i0.ɵɵadvance(3);
|
|
585
|
-
i0.ɵɵconditional(
|
|
592
|
+
i0.ɵɵconditional(ctx_r1.isLoadingFields ? 3 : 4);
|
|
586
593
|
} }
|
|
587
|
-
function
|
|
588
|
-
i0.ɵɵelementStart(0, "span",
|
|
589
|
-
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);
|
|
590
597
|
i0.ɵɵtext(2, " Dependent Queries ");
|
|
591
|
-
i0.ɵɵelementStart(3, "span",
|
|
598
|
+
i0.ɵɵelementStart(3, "span", 81);
|
|
592
599
|
i0.ɵɵtext(4);
|
|
593
600
|
i0.ɵɵelementEnd()();
|
|
594
601
|
} if (rf & 2) {
|
|
595
|
-
const
|
|
602
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
596
603
|
i0.ɵɵadvance(4);
|
|
597
|
-
i0.ɵɵtextInterpolate(
|
|
604
|
+
i0.ɵɵtextInterpolate(ctx_r1.DependentQueries.length);
|
|
598
605
|
} }
|
|
599
|
-
function
|
|
600
|
-
i0.ɵɵelementStart(0, "div",
|
|
601
|
-
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);
|
|
602
609
|
i0.ɵɵtext(3);
|
|
603
610
|
i0.ɵɵelementEnd()();
|
|
604
611
|
} if (rf & 2) {
|
|
@@ -606,11 +613,11 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_41_For_10_Condit
|
|
|
606
613
|
i0.ɵɵadvance(3);
|
|
607
614
|
i0.ɵɵtextInterpolate1(" ", dep_r24.ReferencePath, " ");
|
|
608
615
|
} }
|
|
609
|
-
function
|
|
610
|
-
i0.ɵɵelementStart(0, "div",
|
|
616
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_42_For_10_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
617
|
+
i0.ɵɵelementStart(0, "div", 101)(1, "span", 102)(2, "strong");
|
|
611
618
|
i0.ɵɵtext(3, "Alias:");
|
|
612
619
|
i0.ɵɵelementEnd();
|
|
613
|
-
i0.ɵɵelementStart(4, "code",
|
|
620
|
+
i0.ɵɵelementStart(4, "code", 104);
|
|
614
621
|
i0.ɵɵtext(5);
|
|
615
622
|
i0.ɵɵelementEnd()()();
|
|
616
623
|
} if (rf & 2) {
|
|
@@ -618,20 +625,20 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_41_For_10_Condit
|
|
|
618
625
|
i0.ɵɵadvance(5);
|
|
619
626
|
i0.ɵɵtextInterpolate(dep_r24.Alias);
|
|
620
627
|
} }
|
|
621
|
-
function
|
|
628
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_42_For_10_Template(rf, ctx) { if (rf & 1) {
|
|
622
629
|
const _r23 = i0.ɵɵgetCurrentView();
|
|
623
|
-
i0.ɵɵelementStart(0, "div",
|
|
624
|
-
i0.ɵɵlistener("click", function
|
|
625
|
-
i0.ɵɵelementStart(1, "div",
|
|
626
|
-
i0.ɵɵelement(3, "i",
|
|
630
|
+
i0.ɵɵelementStart(0, "div", 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);
|
|
627
634
|
i0.ɵɵtext(4);
|
|
628
635
|
i0.ɵɵelementEnd()();
|
|
629
|
-
i0.ɵɵelementStart(5, "div",
|
|
630
|
-
i0.ɵɵconditionalCreate(6,
|
|
631
|
-
i0.ɵɵconditionalCreate(7,
|
|
636
|
+
i0.ɵɵelementStart(5, "div", 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);
|
|
632
639
|
i0.ɵɵelementEnd();
|
|
633
|
-
i0.ɵɵelementStart(8, "div",
|
|
634
|
-
i0.ɵɵelement(10, "i",
|
|
640
|
+
i0.ɵɵelementStart(8, "div", 125)(9, "span", 126);
|
|
641
|
+
i0.ɵɵelement(10, "i", 127);
|
|
635
642
|
i0.ɵɵtext(11, " Open ");
|
|
636
643
|
i0.ɵɵelementEnd()()();
|
|
637
644
|
} if (rf & 2) {
|
|
@@ -643,424 +650,590 @@ function MJQueryFormComponentExtended_Conditional_1_Conditional_41_For_10_Templa
|
|
|
643
650
|
i0.ɵɵadvance();
|
|
644
651
|
i0.ɵɵconditional(dep_r24.Alias ? 7 : -1);
|
|
645
652
|
} }
|
|
646
|
-
function
|
|
653
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_42_Template(rf, ctx) { if (rf & 1) {
|
|
647
654
|
const _r22 = i0.ɵɵgetCurrentView();
|
|
648
655
|
i0.ɵɵelementStart(0, "mj-accordion-panel", 24);
|
|
649
|
-
i0.ɵɵtwoWayListener("ExpandedChange", function
|
|
650
|
-
i0.ɵɵtemplate(1,
|
|
651
|
-
i0.ɵɵelementStart(2, "div", 34)(3, "div",
|
|
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);
|
|
652
659
|
i0.ɵɵtext(4, " These queries reference this query via ");
|
|
653
660
|
i0.ɵɵelementStart(5, "code");
|
|
654
661
|
i0.ɵɵtext(6);
|
|
655
662
|
i0.ɵɵelementEnd();
|
|
656
663
|
i0.ɵɵtext(7, " composition syntax. ");
|
|
657
664
|
i0.ɵɵelementEnd();
|
|
658
|
-
i0.ɵɵelementStart(8, "div",
|
|
659
|
-
i0.ɵɵrepeaterCreate(9,
|
|
665
|
+
i0.ɵɵelementStart(8, "div", 91);
|
|
666
|
+
i0.ɵɵrepeaterCreate(9, MJQueryFormComponentExtended_Conditional_0_Conditional_42_For_10_Template, 12, 3, "div", 121, _forTrack2);
|
|
660
667
|
i0.ɵɵelementEnd()()();
|
|
661
668
|
} if (rf & 2) {
|
|
662
|
-
const
|
|
663
|
-
i0.ɵɵtwoWayProperty("Expanded",
|
|
669
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
670
|
+
i0.ɵɵtwoWayProperty("Expanded", ctx_r1.dependentsPanelExpanded);
|
|
664
671
|
i0.ɵɵadvance(6);
|
|
665
672
|
i0.ɵɵtextInterpolate1("", "{{query:\"...\"}}", " ");
|
|
666
673
|
i0.ɵɵadvance(3);
|
|
667
|
-
i0.ɵɵrepeater(
|
|
674
|
+
i0.ɵɵrepeater(ctx_r1.DependentQueries);
|
|
668
675
|
} }
|
|
669
|
-
function
|
|
670
|
-
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);
|
|
671
678
|
i0.ɵɵtext(1);
|
|
672
679
|
i0.ɵɵelementEnd();
|
|
673
680
|
} if (rf & 2) {
|
|
674
|
-
const
|
|
681
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
675
682
|
i0.ɵɵadvance();
|
|
676
|
-
i0.ɵɵtextInterpolate(
|
|
683
|
+
i0.ɵɵtextInterpolate(ctx_r1.queryEntities.length);
|
|
677
684
|
} }
|
|
678
|
-
function
|
|
679
|
-
i0.ɵɵelementStart(0, "span",
|
|
680
|
-
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);
|
|
681
688
|
i0.ɵɵtext(2, " Entities ");
|
|
682
|
-
i0.ɵɵconditionalCreate(3,
|
|
689
|
+
i0.ɵɵconditionalCreate(3, MJQueryFormComponentExtended_Conditional_0_Conditional_43_ng_template_1_Conditional_3_Template, 2, 1, "span", 81);
|
|
683
690
|
i0.ɵɵelementEnd();
|
|
684
691
|
} if (rf & 2) {
|
|
685
|
-
const
|
|
692
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
686
693
|
i0.ɵɵadvance(3);
|
|
687
|
-
i0.ɵɵconditional(
|
|
694
|
+
i0.ɵɵconditional(ctx_r1.queryEntities.length > 0 ? 3 : -1);
|
|
688
695
|
} }
|
|
689
|
-
function
|
|
690
|
-
i0.ɵɵelementStart(0, "div",
|
|
691
|
-
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);
|
|
692
699
|
i0.ɵɵelementEnd();
|
|
693
700
|
} }
|
|
694
|
-
function
|
|
701
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_0_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
695
702
|
const _r26 = i0.ɵɵgetCurrentView();
|
|
696
|
-
i0.ɵɵelementStart(0, "button",
|
|
697
|
-
i0.ɵɵlistener("click", function
|
|
698
|
-
i0.ɵɵelement(1, "i",
|
|
703
|
+
i0.ɵɵelementStart(0, "button", 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);
|
|
699
706
|
i0.ɵɵtext(2, " Add First Entity ");
|
|
700
707
|
i0.ɵɵelementEnd();
|
|
701
708
|
} }
|
|
702
|
-
function
|
|
703
|
-
i0.ɵɵelementStart(0, "div",
|
|
704
|
-
i0.ɵɵelement(1, "i",
|
|
705
|
-
i0.ɵɵelementStart(2, "div",
|
|
709
|
+
function MJQueryFormComponentExtended_Conditional_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);
|
|
706
713
|
i0.ɵɵtext(3, "No Entities Tracked");
|
|
707
714
|
i0.ɵɵelementEnd();
|
|
708
|
-
i0.ɵɵelementStart(4, "div",
|
|
715
|
+
i0.ɵɵelementStart(4, "div", 86);
|
|
709
716
|
i0.ɵɵtext(5, " Track which entities this query uses for documentation. ");
|
|
710
717
|
i0.ɵɵelementEnd();
|
|
711
|
-
i0.ɵɵconditionalCreate(6,
|
|
718
|
+
i0.ɵɵconditionalCreate(6, MJQueryFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_0_Conditional_6_Template, 3, 0, "button", 87);
|
|
712
719
|
i0.ɵɵelementEnd();
|
|
713
720
|
} if (rf & 2) {
|
|
714
|
-
const
|
|
721
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
715
722
|
i0.ɵɵadvance(6);
|
|
716
|
-
i0.ɵɵconditional(
|
|
723
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 6 : -1);
|
|
717
724
|
} }
|
|
718
|
-
function
|
|
725
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
719
726
|
const _r27 = i0.ɵɵgetCurrentView();
|
|
720
|
-
i0.ɵɵelementStart(0, "div",
|
|
721
|
-
i0.ɵɵlistener("click", function
|
|
722
|
-
i0.ɵɵelement(2, "i",
|
|
727
|
+
i0.ɵɵelementStart(0, "div", 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);
|
|
723
730
|
i0.ɵɵtext(3, " Add Entity ");
|
|
724
731
|
i0.ɵɵelementEnd()();
|
|
725
732
|
} }
|
|
726
|
-
function
|
|
733
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_1_For_3_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
727
734
|
const _r28 = i0.ɵɵgetCurrentView();
|
|
728
|
-
i0.ɵɵelementStart(0, "div",
|
|
729
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
735
|
+
i0.ɵɵelementStart(0, "div", 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); });
|
|
730
737
|
i0.ɵɵelementEnd()();
|
|
731
738
|
} if (rf & 2) {
|
|
732
739
|
const entity_r29 = i0.ɵɵnextContext().$implicit;
|
|
733
|
-
const
|
|
740
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
734
741
|
i0.ɵɵadvance();
|
|
735
742
|
i0.ɵɵtwoWayProperty("ngModel", entity_r29.EntityID);
|
|
736
|
-
i0.ɵɵproperty("name", "entity_" + entity_r29.ID)("Data",
|
|
743
|
+
i0.ɵɵproperty("name", "entity_" + entity_r29.ID)("Data", ctx_r1.getEntityOptions())("ValuePrimitive", true);
|
|
737
744
|
} }
|
|
738
|
-
function
|
|
739
|
-
i0.ɵɵelementStart(0, "div",
|
|
740
|
-
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);
|
|
741
748
|
i0.ɵɵtext(4, " Data Source ");
|
|
742
749
|
i0.ɵɵelementEnd()()();
|
|
743
750
|
} }
|
|
744
|
-
function
|
|
751
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_43_Conditional_4_Conditional_1_For_3_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
745
752
|
const _r30 = i0.ɵɵgetCurrentView();
|
|
746
|
-
i0.ɵɵelementStart(0, "div",
|
|
747
|
-
i0.ɵɵlistener("click", function
|
|
748
|
-
i0.ɵɵelement(2, "i",
|
|
753
|
+
i0.ɵɵelementStart(0, "div", 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);
|
|
749
756
|
i0.ɵɵelementEnd()();
|
|
750
757
|
} }
|
|
751
|
-
function
|
|
752
|
-
i0.ɵɵelementStart(0, "div",
|
|
753
|
-
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);
|
|
754
761
|
i0.ɵɵtext(4);
|
|
755
762
|
i0.ɵɵelementEnd();
|
|
756
|
-
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);
|
|
757
764
|
i0.ɵɵelementEnd();
|
|
758
|
-
i0.ɵɵconditionalCreate(6,
|
|
759
|
-
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);
|
|
760
767
|
i0.ɵɵelementEnd();
|
|
761
768
|
} if (rf & 2) {
|
|
762
769
|
const entity_r29 = ctx.$implicit;
|
|
763
|
-
const
|
|
770
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
764
771
|
i0.ɵɵadvance(4);
|
|
765
772
|
i0.ɵɵtextInterpolate1(" ", entity_r29.Entity || "Select Entity...", " ");
|
|
766
773
|
i0.ɵɵadvance();
|
|
767
|
-
i0.ɵɵconditional(
|
|
774
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 5 : -1);
|
|
768
775
|
i0.ɵɵadvance();
|
|
769
|
-
i0.ɵɵconditional(!
|
|
776
|
+
i0.ɵɵconditional(!ctx_r1.EditMode && entity_r29.Entity ? 6 : -1);
|
|
770
777
|
i0.ɵɵadvance();
|
|
771
|
-
i0.ɵɵconditional(
|
|
778
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 7 : -1);
|
|
772
779
|
} }
|
|
773
|
-
function
|
|
774
|
-
i0.ɵɵconditionalCreate(0,
|
|
775
|
-
i0.ɵɵelementStart(1, "div",
|
|
776
|
-
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);
|
|
777
784
|
i0.ɵɵelementEnd();
|
|
778
785
|
} if (rf & 2) {
|
|
779
|
-
const
|
|
780
|
-
i0.ɵɵconditional(
|
|
786
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
787
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 0 : -1);
|
|
781
788
|
i0.ɵɵadvance(2);
|
|
782
|
-
i0.ɵɵrepeater(
|
|
789
|
+
i0.ɵɵrepeater(ctx_r1.queryEntities);
|
|
783
790
|
} }
|
|
784
|
-
function
|
|
785
|
-
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);
|
|
786
793
|
} if (rf & 2) {
|
|
787
|
-
const
|
|
788
|
-
i0.ɵɵconditional(
|
|
794
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
795
|
+
i0.ɵɵconditional(ctx_r1.queryEntities.length === 0 ? 0 : 1);
|
|
789
796
|
} }
|
|
790
|
-
function
|
|
797
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_43_Template(rf, ctx) { if (rf & 1) {
|
|
791
798
|
const _r25 = i0.ɵɵgetCurrentView();
|
|
792
799
|
i0.ɵɵelementStart(0, "mj-accordion-panel", 24);
|
|
793
|
-
i0.ɵɵtwoWayListener("ExpandedChange", function
|
|
794
|
-
i0.ɵɵtemplate(1,
|
|
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);
|
|
795
802
|
i0.ɵɵelementStart(2, "div", 34);
|
|
796
|
-
i0.ɵɵconditionalCreate(3,
|
|
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);
|
|
797
804
|
i0.ɵɵelementEnd()();
|
|
798
805
|
} if (rf & 2) {
|
|
799
|
-
const
|
|
800
|
-
i0.ɵɵtwoWayProperty("Expanded",
|
|
806
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
807
|
+
i0.ɵɵtwoWayProperty("Expanded", ctx_r1.entitiesPanelExpanded);
|
|
801
808
|
i0.ɵɵadvance(3);
|
|
802
|
-
i0.ɵɵconditional(
|
|
809
|
+
i0.ɵɵconditional(ctx_r1.isLoadingEntities ? 3 : 4);
|
|
803
810
|
} }
|
|
804
|
-
function
|
|
805
|
-
i0.ɵɵelementStart(0, "span",
|
|
806
|
-
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);
|
|
807
814
|
i0.ɵɵtext(2, " Details ");
|
|
808
815
|
i0.ɵɵelementEnd();
|
|
809
816
|
} }
|
|
810
|
-
function
|
|
817
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_52_Template(rf, ctx) { if (rf & 1) {
|
|
811
818
|
const _r31 = i0.ɵɵgetCurrentView();
|
|
812
|
-
i0.ɵɵelementStart(0, "mj-switch",
|
|
813
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
819
|
+
i0.ɵɵelementStart(0, "mj-switch", 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
|
+
i0.ɵɵelementEnd();
|
|
822
|
+
i0.ɵɵelementStart(1, "div", 139);
|
|
823
|
+
i0.ɵɵtext(2, "Allow other queries to reference this query using composition syntax");
|
|
814
824
|
i0.ɵɵelementEnd();
|
|
815
825
|
} if (rf & 2) {
|
|
816
|
-
const
|
|
817
|
-
i0.ɵɵtwoWayProperty("ngModel",
|
|
826
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
827
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.Reusable);
|
|
818
828
|
} }
|
|
819
|
-
function
|
|
820
|
-
i0.ɵɵelementStart(0, "span",
|
|
821
|
-
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
|
+
i0.ɵɵtext(2, " Reusable");
|
|
833
|
+
i0.ɵɵelementEnd();
|
|
834
|
+
} }
|
|
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
|
+
i0.ɵɵtext(2, " Not Reusable");
|
|
839
|
+
i0.ɵɵelementEnd();
|
|
840
|
+
} }
|
|
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
|
+
i0.ɵɵelementEnd();
|
|
845
|
+
} if (rf & 2) {
|
|
846
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
847
|
+
i0.ɵɵadvance();
|
|
848
|
+
i0.ɵɵconditional(ctx_r1.record.Reusable ? 1 : 2);
|
|
849
|
+
} }
|
|
850
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_58_Template(rf, ctx) { if (rf & 1) {
|
|
851
|
+
const _r32 = i0.ɵɵgetCurrentView();
|
|
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
|
+
i0.ɵɵelementEnd();
|
|
855
|
+
i0.ɵɵelementStart(1, "div", 139);
|
|
856
|
+
i0.ɵɵtext(2, "Cache query results in memory to reduce database load on repeated runs");
|
|
857
|
+
i0.ɵɵelementEnd();
|
|
858
|
+
} if (rf & 2) {
|
|
859
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
860
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.CacheEnabled);
|
|
861
|
+
} }
|
|
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
|
+
i0.ɵɵtext(2, " Caching On");
|
|
866
|
+
i0.ɵɵelementEnd();
|
|
867
|
+
} }
|
|
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
|
+
i0.ɵɵtext(2, " Caching Off");
|
|
872
|
+
i0.ɵɵelementEnd();
|
|
873
|
+
} }
|
|
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
|
+
i0.ɵɵelementEnd();
|
|
878
|
+
} if (rf & 2) {
|
|
879
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
880
|
+
i0.ɵɵadvance();
|
|
881
|
+
i0.ɵɵconditional(ctx_r1.record.CacheEnabled ? 1 : 2);
|
|
882
|
+
} }
|
|
883
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_60_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
884
|
+
const _r33 = i0.ɵɵgetCurrentView();
|
|
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
|
+
i0.ɵɵelementEnd();
|
|
888
|
+
i0.ɵɵelementStart(1, "div", 139);
|
|
889
|
+
i0.ɵɵtext(2, "How long cached results remain valid. Leave blank for default TTL.");
|
|
890
|
+
i0.ɵɵelementEnd();
|
|
891
|
+
} if (rf & 2) {
|
|
892
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
893
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.CacheTTLMinutes);
|
|
894
|
+
} }
|
|
895
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_60_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
896
|
+
i0.ɵɵelementStart(0, "div", 39);
|
|
897
|
+
i0.ɵɵtext(1);
|
|
898
|
+
i0.ɵɵelementEnd();
|
|
899
|
+
} if (rf & 2) {
|
|
900
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
901
|
+
i0.ɵɵadvance();
|
|
902
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.CacheTTLMinutes != null ? ctx_r1.record.CacheTTLMinutes + " min" : "Default");
|
|
903
|
+
} }
|
|
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
|
+
i0.ɵɵtext(3, " Cache TTL (Minutes) ");
|
|
908
|
+
i0.ɵɵelementEnd();
|
|
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
|
+
i0.ɵɵelementEnd();
|
|
911
|
+
} if (rf & 2) {
|
|
912
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
913
|
+
i0.ɵɵadvance(4);
|
|
914
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 4 : 5);
|
|
915
|
+
} }
|
|
916
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_65_Template(rf, ctx) { if (rf & 1) {
|
|
917
|
+
const _r34 = i0.ɵɵgetCurrentView();
|
|
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
|
+
i0.ɵɵelementEnd();
|
|
921
|
+
i0.ɵɵelementStart(1, "div", 139);
|
|
922
|
+
i0.ɵɵtext(2, "Log all executions of this query to the Audit Log for tracking and compliance");
|
|
923
|
+
i0.ɵɵelementEnd();
|
|
924
|
+
} if (rf & 2) {
|
|
925
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
926
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.AuditQueryRuns);
|
|
927
|
+
} }
|
|
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
|
+
i0.ɵɵtext(2, " Auditing On");
|
|
932
|
+
i0.ɵɵelementEnd();
|
|
933
|
+
} }
|
|
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
|
+
i0.ɵɵtext(2, " Auditing Off");
|
|
938
|
+
i0.ɵɵelementEnd();
|
|
939
|
+
} }
|
|
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
|
+
i0.ɵɵelementEnd();
|
|
944
|
+
} if (rf & 2) {
|
|
945
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
946
|
+
i0.ɵɵadvance();
|
|
947
|
+
i0.ɵɵconditional(ctx_r1.record.AuditQueryRuns ? 1 : 2);
|
|
948
|
+
} }
|
|
949
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_71_Template(rf, ctx) { if (rf & 1) {
|
|
950
|
+
const _r35 = i0.ɵɵgetCurrentView();
|
|
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
|
+
i0.ɵɵelementEnd();
|
|
954
|
+
} if (rf & 2) {
|
|
955
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
956
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.UsesTemplate);
|
|
957
|
+
} }
|
|
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);
|
|
822
961
|
i0.ɵɵtext(2, " Uses Templates");
|
|
823
962
|
i0.ɵɵelementEnd();
|
|
824
963
|
} }
|
|
825
|
-
function
|
|
826
|
-
i0.ɵɵelementStart(0, "span",
|
|
827
|
-
i0.ɵɵelement(1, "i",
|
|
964
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_72_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
965
|
+
i0.ɵɵelementStart(0, "span", 141);
|
|
966
|
+
i0.ɵɵelement(1, "i", 143);
|
|
828
967
|
i0.ɵɵtext(2, " No Templates");
|
|
829
968
|
i0.ɵɵelementEnd();
|
|
830
969
|
} }
|
|
831
|
-
function
|
|
832
|
-
i0.ɵɵelementStart(0, "div",
|
|
833
|
-
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);
|
|
834
973
|
i0.ɵɵelementEnd();
|
|
835
974
|
} if (rf & 2) {
|
|
836
|
-
const
|
|
975
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
837
976
|
i0.ɵɵadvance();
|
|
838
|
-
i0.ɵɵconditional(
|
|
977
|
+
i0.ɵɵconditional(ctx_r1.record.UsesTemplate ? 1 : 2);
|
|
839
978
|
} }
|
|
840
|
-
function
|
|
979
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_85_Template(rf, ctx) { if (rf & 1) {
|
|
841
980
|
i0.ɵɵelementStart(0, "div", 36)(1, "label", 37);
|
|
842
|
-
i0.ɵɵelement(2, "i",
|
|
981
|
+
i0.ɵɵelement(2, "i", 149);
|
|
843
982
|
i0.ɵɵtext(3, " Quality Rank ");
|
|
844
983
|
i0.ɵɵelementEnd();
|
|
845
|
-
i0.ɵɵelementStart(4, "div",
|
|
984
|
+
i0.ɵɵelementStart(4, "div", 39);
|
|
846
985
|
i0.ɵɵtext(5);
|
|
847
986
|
i0.ɵɵelementEnd()();
|
|
848
987
|
} if (rf & 2) {
|
|
849
|
-
const
|
|
988
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
850
989
|
i0.ɵɵadvance(5);
|
|
851
|
-
i0.ɵɵtextInterpolate1("",
|
|
990
|
+
i0.ɵɵtextInterpolate1("", ctx_r1.record.QualityRank, "/10");
|
|
852
991
|
} }
|
|
853
|
-
function
|
|
854
|
-
i0.ɵɵelementStart(0, "span",
|
|
855
|
-
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);
|
|
856
995
|
i0.ɵɵtext(2, " Permissions ");
|
|
857
996
|
i0.ɵɵelementEnd();
|
|
858
997
|
} }
|
|
859
|
-
function
|
|
860
|
-
i0.ɵɵelementStart(0, "div",
|
|
861
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
998
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_86_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
999
|
+
i0.ɵɵelementStart(0, "div", 79);
|
|
1000
|
+
i0.ɵɵelement(1, "mj-loading", 151);
|
|
862
1001
|
i0.ɵɵelementEnd();
|
|
863
1002
|
} }
|
|
864
|
-
function
|
|
865
|
-
i0.ɵɵelementStart(0, "div",
|
|
866
|
-
i0.ɵɵelement(1, "i",
|
|
867
|
-
i0.ɵɵelementStart(2, "div",
|
|
1003
|
+
function MJQueryFormComponentExtended_Conditional_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);
|
|
868
1007
|
i0.ɵɵtext(3, "No Permissions Set");
|
|
869
1008
|
i0.ɵɵelementEnd();
|
|
870
|
-
i0.ɵɵelementStart(4, "div",
|
|
1009
|
+
i0.ɵɵelementStart(4, "div", 86);
|
|
871
1010
|
i0.ɵɵtext(5, " This query uses default permissions. ");
|
|
872
1011
|
i0.ɵɵelementEnd()();
|
|
873
1012
|
} }
|
|
874
|
-
function
|
|
875
|
-
i0.ɵɵelement(0, "mj-explorer-entity-data-grid",
|
|
1013
|
+
function MJQueryFormComponentExtended_Conditional_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);
|
|
876
1015
|
} if (rf & 2) {
|
|
877
|
-
const
|
|
878
|
-
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);
|
|
879
1018
|
} }
|
|
880
|
-
function
|
|
881
|
-
i0.ɵɵelementStart(0, "div",
|
|
882
|
-
i0.ɵɵelement(1, "i",
|
|
883
|
-
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);
|
|
884
1023
|
i0.ɵɵtext(4);
|
|
885
1024
|
i0.ɵɵelementEnd();
|
|
886
|
-
i0.ɵɵelementStart(5, "div",
|
|
1025
|
+
i0.ɵɵelementStart(5, "div", 159);
|
|
887
1026
|
i0.ɵɵtext(6, "Role Permission");
|
|
888
1027
|
i0.ɵɵelementEnd()();
|
|
889
|
-
i0.ɵɵelementStart(7, "span",
|
|
890
|
-
i0.ɵɵelement(8, "i",
|
|
1028
|
+
i0.ɵɵelementStart(7, "span", 160);
|
|
1029
|
+
i0.ɵɵelement(8, "i", 51);
|
|
891
1030
|
i0.ɵɵtext(9, " Can Execute ");
|
|
892
1031
|
i0.ɵɵelementEnd()();
|
|
893
1032
|
} if (rf & 2) {
|
|
894
|
-
const
|
|
1033
|
+
const permission_r37 = ctx.$implicit;
|
|
895
1034
|
i0.ɵɵadvance(4);
|
|
896
|
-
i0.ɵɵtextInterpolate(
|
|
1035
|
+
i0.ɵɵtextInterpolate(permission_r37.Role);
|
|
897
1036
|
} }
|
|
898
|
-
function
|
|
899
|
-
i0.ɵɵelementStart(0, "div",
|
|
900
|
-
i0.ɵɵrepeaterCreate(1,
|
|
1037
|
+
function MJQueryFormComponentExtended_Conditional_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);
|
|
901
1040
|
i0.ɵɵelementEnd();
|
|
902
1041
|
} if (rf & 2) {
|
|
903
|
-
const
|
|
1042
|
+
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
904
1043
|
i0.ɵɵadvance();
|
|
905
|
-
i0.ɵɵrepeater(
|
|
1044
|
+
i0.ɵɵrepeater(ctx_r1.queryPermissions);
|
|
906
1045
|
} }
|
|
907
|
-
function
|
|
908
|
-
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);
|
|
909
1048
|
} if (rf & 2) {
|
|
910
|
-
const
|
|
911
|
-
i0.ɵɵconditional(
|
|
1049
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
1050
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 0 : 1);
|
|
912
1051
|
} }
|
|
913
|
-
function
|
|
914
|
-
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);
|
|
915
1054
|
} if (rf & 2) {
|
|
916
|
-
const
|
|
917
|
-
i0.ɵɵconditional(
|
|
1055
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1056
|
+
i0.ɵɵconditional(ctx_r1.queryPermissions.length === 0 && !ctx_r1.EditMode ? 0 : 1);
|
|
918
1057
|
} }
|
|
919
|
-
function
|
|
920
|
-
const
|
|
1058
|
+
function MJQueryFormComponentExtended_Conditional_0_Conditional_86_Template(rf, ctx) { if (rf & 1) {
|
|
1059
|
+
const _r36 = i0.ɵɵgetCurrentView();
|
|
921
1060
|
i0.ɵɵelementStart(0, "mj-accordion-panel", 24);
|
|
922
|
-
i0.ɵɵtwoWayListener("ExpandedChange", function
|
|
923
|
-
i0.ɵɵtemplate(1,
|
|
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);
|
|
924
1063
|
i0.ɵɵelementStart(2, "div", 34);
|
|
925
|
-
i0.ɵɵconditionalCreate(3,
|
|
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);
|
|
926
1065
|
i0.ɵɵelementEnd()();
|
|
927
1066
|
} if (rf & 2) {
|
|
928
|
-
const
|
|
929
|
-
i0.ɵɵtwoWayProperty("Expanded",
|
|
1067
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
1068
|
+
i0.ɵɵtwoWayProperty("Expanded", ctx_r1.permissionsPanelExpanded);
|
|
930
1069
|
i0.ɵɵadvance(3);
|
|
931
|
-
i0.ɵɵconditional(
|
|
1070
|
+
i0.ɵɵconditional(ctx_r1.isLoadingPermissions ? 3 : 4);
|
|
932
1071
|
} }
|
|
933
|
-
function
|
|
1072
|
+
function MJQueryFormComponentExtended_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
934
1073
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
935
|
-
i0.ɵɵelementStart(0, "form",
|
|
936
|
-
i0.ɵɵ
|
|
937
|
-
i0.ɵɵelementStart(
|
|
938
|
-
i0.ɵɵ
|
|
939
|
-
i0.ɵɵ
|
|
940
|
-
i0.ɵɵ
|
|
941
|
-
i0.ɵɵ
|
|
942
|
-
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);
|
|
943
1084
|
i0.ɵɵelementEnd()();
|
|
944
|
-
i0.ɵɵelementStart(
|
|
945
|
-
i0.ɵɵtext(
|
|
1085
|
+
i0.ɵɵelementStart(13, "div", 14)(14, "div", 15)(15, "label", 16);
|
|
1086
|
+
i0.ɵɵtext(16, "Category");
|
|
946
1087
|
i0.ɵɵelementEnd();
|
|
947
|
-
i0.ɵɵconditionalCreate(
|
|
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);
|
|
948
1089
|
i0.ɵɵelementEnd();
|
|
949
|
-
i0.ɵɵelementStart(
|
|
950
|
-
i0.ɵɵtext(
|
|
1090
|
+
i0.ɵɵelementStart(19, "div", 15)(20, "label", 16);
|
|
1091
|
+
i0.ɵɵtext(21, "Status");
|
|
951
1092
|
i0.ɵɵelementEnd();
|
|
952
|
-
i0.ɵɵconditionalCreate(
|
|
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);
|
|
953
1094
|
i0.ɵɵelementEnd()();
|
|
954
|
-
i0.ɵɵconditionalCreate(
|
|
1095
|
+
i0.ɵɵconditionalCreate(24, MJQueryFormComponentExtended_Conditional_0_Conditional_24_Template, 3, 1, "div", 21);
|
|
955
1096
|
i0.ɵɵelementEnd()();
|
|
956
|
-
i0.ɵɵconditionalCreate(
|
|
957
|
-
i0.ɵɵelementStart(
|
|
958
|
-
i0.ɵɵtwoWayListener("ExpandedChange", function
|
|
959
|
-
i0.ɵɵtemplate(
|
|
960
|
-
i0.ɵɵelementStart(
|
|
961
|
-
i0.ɵɵlistener("click", function
|
|
962
|
-
i0.ɵɵelement(
|
|
963
|
-
i0.ɵɵelementStart(
|
|
964
|
-
i0.ɵɵtext(
|
|
965
|
-
i0.ɵɵelementEnd();
|
|
966
|
-
i0.ɵɵelement(
|
|
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);
|
|
1104
|
+
i0.ɵɵelementStart(32, "span");
|
|
1105
|
+
i0.ɵɵtext(33, "Filters Help");
|
|
1106
|
+
i0.ɵɵelementEnd();
|
|
1107
|
+
i0.ɵɵelement(34, "i", 29);
|
|
967
1108
|
i0.ɵɵelementEnd()();
|
|
968
|
-
i0.ɵɵelementStart(
|
|
969
|
-
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)); });
|
|
970
1111
|
i0.ɵɵelementEnd();
|
|
971
|
-
i0.ɵɵconditionalCreate(
|
|
1112
|
+
i0.ɵɵconditionalCreate(38, MJQueryFormComponentExtended_Conditional_0_Conditional_38_Template, 7, 0, "div", 32);
|
|
972
1113
|
i0.ɵɵelementEnd()();
|
|
973
|
-
i0.ɵɵconditionalCreate(
|
|
974
|
-
i0.ɵɵconditionalCreate(
|
|
975
|
-
i0.ɵɵconditionalCreate(
|
|
976
|
-
i0.ɵɵconditionalCreate(
|
|
977
|
-
i0.ɵɵconditionalCreate(
|
|
978
|
-
i0.ɵɵelementStart(
|
|
979
|
-
i0.ɵɵtwoWayListener("ExpandedChange", function
|
|
980
|
-
i0.ɵɵtemplate(
|
|
981
|
-
i0.ɵɵelementStart(
|
|
982
|
-
i0.ɵɵelement(
|
|
983
|
-
i0.ɵɵtext(
|
|
984
|
-
i0.ɵɵelementEnd();
|
|
985
|
-
i0.ɵɵconditionalCreate(
|
|
986
|
-
i0.ɵɵelementEnd();
|
|
987
|
-
i0.ɵɵelementStart(
|
|
988
|
-
i0.ɵɵelement(
|
|
989
|
-
i0.ɵɵtext(
|
|
990
|
-
i0.ɵɵelementEnd();
|
|
991
|
-
i0.ɵɵ
|
|
992
|
-
i0.ɵɵ
|
|
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);
|
|
1124
|
+
i0.ɵɵtext(51, " Reusable ");
|
|
1125
|
+
i0.ɵɵelementEnd();
|
|
1126
|
+
i0.ɵɵconditionalCreate(52, MJQueryFormComponentExtended_Conditional_0_Conditional_52_Template, 3, 1)(53, MJQueryFormComponentExtended_Conditional_0_Conditional_53_Template, 3, 1, "div", 39);
|
|
1127
|
+
i0.ɵɵelementEnd();
|
|
1128
|
+
i0.ɵɵelementStart(54, "div", 36)(55, "label", 37);
|
|
1129
|
+
i0.ɵɵelement(56, "i", 40);
|
|
1130
|
+
i0.ɵɵtext(57, " Cache Enabled ");
|
|
1131
|
+
i0.ɵɵelementEnd();
|
|
1132
|
+
i0.ɵɵconditionalCreate(58, MJQueryFormComponentExtended_Conditional_0_Conditional_58_Template, 3, 1)(59, MJQueryFormComponentExtended_Conditional_0_Conditional_59_Template, 3, 1, "div", 39);
|
|
1133
|
+
i0.ɵɵelementEnd();
|
|
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);
|
|
1137
|
+
i0.ɵɵtext(64, " Audit Runs ");
|
|
1138
|
+
i0.ɵɵelementEnd();
|
|
1139
|
+
i0.ɵɵconditionalCreate(65, MJQueryFormComponentExtended_Conditional_0_Conditional_65_Template, 3, 1)(66, MJQueryFormComponentExtended_Conditional_0_Conditional_66_Template, 3, 1, "div", 39);
|
|
1140
|
+
i0.ɵɵelementEnd();
|
|
1141
|
+
i0.ɵɵelementStart(67, "div", 36)(68, "label", 37);
|
|
1142
|
+
i0.ɵɵelement(69, "i", 42);
|
|
1143
|
+
i0.ɵɵtext(70, " Template Usage ");
|
|
1144
|
+
i0.ɵɵelementEnd();
|
|
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);
|
|
1146
|
+
i0.ɵɵelementEnd();
|
|
1147
|
+
i0.ɵɵelementStart(73, "div", 36)(74, "label", 37);
|
|
1148
|
+
i0.ɵɵelement(75, "i", 44);
|
|
1149
|
+
i0.ɵɵtext(76, " Created ");
|
|
1150
|
+
i0.ɵɵelementEnd();
|
|
1151
|
+
i0.ɵɵelementStart(77, "div", 39);
|
|
1152
|
+
i0.ɵɵtext(78);
|
|
993
1153
|
i0.ɵɵelementEnd()();
|
|
994
|
-
i0.ɵɵelementStart(
|
|
995
|
-
i0.ɵɵelement(
|
|
996
|
-
i0.ɵɵtext(
|
|
1154
|
+
i0.ɵɵelementStart(79, "div", 36)(80, "label", 37);
|
|
1155
|
+
i0.ɵɵelement(81, "i", 45);
|
|
1156
|
+
i0.ɵɵtext(82, " Last Updated ");
|
|
997
1157
|
i0.ɵɵelementEnd();
|
|
998
|
-
i0.ɵɵelementStart(
|
|
999
|
-
i0.ɵɵtext(
|
|
1158
|
+
i0.ɵɵelementStart(83, "div", 39);
|
|
1159
|
+
i0.ɵɵtext(84);
|
|
1000
1160
|
i0.ɵɵelementEnd()();
|
|
1001
|
-
i0.ɵɵconditionalCreate(
|
|
1161
|
+
i0.ɵɵconditionalCreate(85, MJQueryFormComponentExtended_Conditional_0_Conditional_85_Template, 6, 1, "div", 36);
|
|
1002
1162
|
i0.ɵɵelementEnd()()();
|
|
1003
|
-
i0.ɵɵconditionalCreate(
|
|
1004
|
-
i0.ɵɵelementEnd()();
|
|
1005
|
-
i0.ɵɵelementStart(
|
|
1006
|
-
i0.ɵɵtwoWayListener("isVisibleChange", function
|
|
1007
|
-
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()); });
|
|
1008
1168
|
i0.ɵɵelementEnd();
|
|
1009
|
-
i0.ɵɵelementStart(
|
|
1010
|
-
i0.ɵɵtwoWayListener("isVisibleChange", function
|
|
1011
|
-
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)); });
|
|
1012
1172
|
i0.ɵɵelementEnd();
|
|
1013
1173
|
} if (rf & 2) {
|
|
1014
|
-
const
|
|
1015
|
-
i0.ɵɵ
|
|
1016
|
-
i0.ɵɵ
|
|
1017
|
-
i0.ɵɵ
|
|
1018
|
-
i0.ɵɵ
|
|
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
|
+
i0.ɵɵadvance();
|
|
1179
|
+
i0.ɵɵclassProp("content-saving", ctx_r1.IsSaving);
|
|
1180
|
+
i0.ɵɵadvance(5);
|
|
1181
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 9 : 10);
|
|
1019
1182
|
i0.ɵɵadvance(3);
|
|
1020
|
-
i0.ɵɵconditional(
|
|
1183
|
+
i0.ɵɵconditional(ctx_r1.record.ID ? 12 : -1);
|
|
1021
1184
|
i0.ɵɵadvance(5);
|
|
1022
|
-
i0.ɵɵconditional(
|
|
1185
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 17 : 18);
|
|
1023
1186
|
i0.ɵɵadvance(5);
|
|
1024
|
-
i0.ɵɵconditional(
|
|
1187
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 22 : 23);
|
|
1025
1188
|
i0.ɵɵadvance(2);
|
|
1026
|
-
i0.ɵɵconditional(
|
|
1189
|
+
i0.ɵɵconditional(ctx_r1.EditMode || ctx_r1.record.Description ? 24 : -1);
|
|
1027
1190
|
i0.ɵɵadvance();
|
|
1028
|
-
i0.ɵɵconditional(
|
|
1029
|
-
i0.ɵɵadvance(
|
|
1030
|
-
i0.ɵɵ
|
|
1191
|
+
i0.ɵɵconditional(ctx_r1.record.Status && ctx_r1.record.Status !== "Approved" && !ctx_r1.EditMode ? 25 : -1);
|
|
1192
|
+
i0.ɵɵadvance();
|
|
1193
|
+
i0.ɵɵclassProp("content-saving", ctx_r1.IsSaving);
|
|
1194
|
+
i0.ɵɵadvance();
|
|
1195
|
+
i0.ɵɵtwoWayProperty("Expanded", ctx_r1.sqlPanelExpanded);
|
|
1031
1196
|
i0.ɵɵadvance(7);
|
|
1032
|
-
i0.ɵɵproperty("ngClass",
|
|
1197
|
+
i0.ɵɵproperty("ngClass", ctx_r1.showFiltersHelp ? "fa-chevron-up" : "fa-chevron-down");
|
|
1033
1198
|
i0.ɵɵadvance(2);
|
|
1034
1199
|
i0.ɵɵproperty("language", "sql");
|
|
1035
1200
|
i0.ɵɵadvance(2);
|
|
1036
|
-
i0.ɵɵconditional(
|
|
1201
|
+
i0.ɵɵconditional(ctx_r1.showFiltersHelp ? 38 : -1);
|
|
1037
1202
|
i0.ɵɵadvance();
|
|
1038
|
-
i0.ɵɵconditional(
|
|
1203
|
+
i0.ɵɵconditional(ctx_r1.record.TechnicalDescription || ctx_r1.EditMode ? 39 : -1);
|
|
1039
1204
|
i0.ɵɵadvance();
|
|
1040
|
-
i0.ɵɵconditional(
|
|
1205
|
+
i0.ɵɵconditional(ctx_r1.record.IsSaved ? 40 : -1);
|
|
1041
1206
|
i0.ɵɵadvance();
|
|
1042
|
-
i0.ɵɵconditional(
|
|
1207
|
+
i0.ɵɵconditional(ctx_r1.record.IsSaved ? 41 : -1);
|
|
1043
1208
|
i0.ɵɵadvance();
|
|
1044
|
-
i0.ɵɵconditional(
|
|
1209
|
+
i0.ɵɵconditional(ctx_r1.record.IsSaved && ctx_r1.DependentQueries.length > 0 ? 42 : -1);
|
|
1045
1210
|
i0.ɵɵadvance();
|
|
1046
|
-
i0.ɵɵconditional(
|
|
1211
|
+
i0.ɵɵconditional(ctx_r1.record.IsSaved ? 43 : -1);
|
|
1047
1212
|
i0.ɵɵadvance();
|
|
1048
|
-
i0.ɵɵtwoWayProperty("Expanded",
|
|
1213
|
+
i0.ɵɵtwoWayProperty("Expanded", ctx_r1.detailsPanelExpanded);
|
|
1049
1214
|
i0.ɵɵadvance(8);
|
|
1050
|
-
i0.ɵɵconditional(
|
|
1215
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 52 : 53);
|
|
1216
|
+
i0.ɵɵadvance(6);
|
|
1217
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 58 : 59);
|
|
1218
|
+
i0.ɵɵadvance(2);
|
|
1219
|
+
i0.ɵɵconditional(ctx_r1.record.CacheEnabled ? 60 : -1);
|
|
1220
|
+
i0.ɵɵadvance(5);
|
|
1221
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 65 : 66);
|
|
1222
|
+
i0.ɵɵadvance(6);
|
|
1223
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 71 : 72);
|
|
1051
1224
|
i0.ɵɵadvance(7);
|
|
1052
|
-
i0.ɵɵtextInterpolate(
|
|
1225
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatDate(ctx_r1.record.__mj_CreatedAt));
|
|
1053
1226
|
i0.ɵɵadvance(6);
|
|
1054
|
-
i0.ɵɵtextInterpolate(
|
|
1227
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatDate(ctx_r1.record.__mj_UpdatedAt));
|
|
1055
1228
|
i0.ɵɵadvance();
|
|
1056
|
-
i0.ɵɵconditional(
|
|
1229
|
+
i0.ɵɵconditional(ctx_r1.record.QualityRank != null ? 85 : -1);
|
|
1057
1230
|
i0.ɵɵadvance();
|
|
1058
|
-
i0.ɵɵconditional(
|
|
1231
|
+
i0.ɵɵconditional(ctx_r1.record.IsSaved ? 86 : -1);
|
|
1059
1232
|
i0.ɵɵadvance();
|
|
1060
|
-
i0.ɵɵproperty("query",
|
|
1061
|
-
i0.ɵɵtwoWayProperty("isVisible",
|
|
1233
|
+
i0.ɵɵproperty("query", ctx_r1.record)("parameters", ctx_r1.queryParameters);
|
|
1234
|
+
i0.ɵɵtwoWayProperty("isVisible", ctx_r1.showRunDialog);
|
|
1062
1235
|
i0.ɵɵadvance();
|
|
1063
|
-
i0.ɵɵtwoWayProperty("isVisible",
|
|
1236
|
+
i0.ɵɵtwoWayProperty("isVisible", ctx_r1.showCategoryDialog);
|
|
1064
1237
|
} }
|
|
1065
1238
|
let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJQueryFormComponent {
|
|
1066
1239
|
constructor() {
|
|
@@ -1078,6 +1251,7 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
|
|
|
1078
1251
|
this.showRunDialog = false;
|
|
1079
1252
|
this.showCategoryDialog = false;
|
|
1080
1253
|
this.categoryPathDisplay = '';
|
|
1254
|
+
this.IsSaving = false;
|
|
1081
1255
|
// Expansion panel states
|
|
1082
1256
|
this.sqlPanelExpanded = true;
|
|
1083
1257
|
this.parametersPanelExpanded = false;
|
|
@@ -1093,6 +1267,16 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
|
|
|
1093
1267
|
];
|
|
1094
1268
|
this.categories = [];
|
|
1095
1269
|
this.categoryTreeData = [];
|
|
1270
|
+
/** Tree dropdown config for Query Categories */
|
|
1271
|
+
this.CategoryBranchConfig = {
|
|
1272
|
+
EntityName: 'MJ: Query Categories',
|
|
1273
|
+
DisplayField: 'Name',
|
|
1274
|
+
IDField: 'ID',
|
|
1275
|
+
ParentIDField: 'ParentID',
|
|
1276
|
+
DefaultIcon: 'fa-solid fa-folder',
|
|
1277
|
+
DescriptionField: 'Description',
|
|
1278
|
+
OrderBy: 'Name ASC'
|
|
1279
|
+
};
|
|
1096
1280
|
// Status options — matches MJQueryEntity.Status type from database CHECK constraint
|
|
1097
1281
|
this.statusOptions = [
|
|
1098
1282
|
{ text: 'Pending', value: 'Pending' },
|
|
@@ -1100,19 +1284,10 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
|
|
|
1100
1284
|
{ text: 'Rejected', value: 'Rejected' },
|
|
1101
1285
|
{ text: 'Expired', value: 'Expired' }
|
|
1102
1286
|
];
|
|
1103
|
-
// Toolbar config:
|
|
1104
|
-
//
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
ShowDeleteButton: false,
|
|
1108
|
-
ShowFavoriteButton: false,
|
|
1109
|
-
ShowHistoryButton: false,
|
|
1110
|
-
ShowListButton: false,
|
|
1111
|
-
ShowSectionControls: false,
|
|
1112
|
-
ShowSectionFilter: false,
|
|
1113
|
-
AllowSectionReorder: false,
|
|
1114
|
-
ShowSectionManager: false,
|
|
1115
|
-
};
|
|
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;
|
|
1116
1291
|
this.sqlEditor = null;
|
|
1117
1292
|
// SQL Filters for help display
|
|
1118
1293
|
this.sqlFilters = RUN_QUERY_SQL_FILTERS;
|
|
@@ -1121,6 +1296,24 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
|
|
|
1121
1296
|
this.isUpdatingEditorValue = false;
|
|
1122
1297
|
this.isInitialLoad = true;
|
|
1123
1298
|
}
|
|
1299
|
+
/** CategoryID as CompositeKey for tree dropdown binding */
|
|
1300
|
+
get CategoryIDAsKey() {
|
|
1301
|
+
return this.record?.CategoryID ? CompositeKey.FromID(this.record.CategoryID) : null;
|
|
1302
|
+
}
|
|
1303
|
+
/** Handle tree dropdown category selection */
|
|
1304
|
+
OnCategoryTreeChange(value) {
|
|
1305
|
+
if (!this.record)
|
|
1306
|
+
return;
|
|
1307
|
+
if (value instanceof CompositeKey && value.HasValue) {
|
|
1308
|
+
this.record.CategoryID = value.KeyValuePairs[0]?.Value ?? null;
|
|
1309
|
+
}
|
|
1310
|
+
else {
|
|
1311
|
+
this.record.CategoryID = null;
|
|
1312
|
+
}
|
|
1313
|
+
this.updateCategoryPathDisplay();
|
|
1314
|
+
}
|
|
1315
|
+
/** Custom-layout Query form looks best full-width on first open. */
|
|
1316
|
+
getDefaultFormWidthMode() { return 'full-width'; }
|
|
1124
1317
|
/**
|
|
1125
1318
|
* Gets the QueryInfo metadata object for the current record, used to access Dependents.
|
|
1126
1319
|
*/
|
|
@@ -1511,16 +1704,26 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
|
|
|
1511
1704
|
return;
|
|
1512
1705
|
}
|
|
1513
1706
|
try {
|
|
1514
|
-
|
|
1707
|
+
// Reload the parameter entity fresh to ensure we have a clean copy
|
|
1708
|
+
// not tied to any form transaction state
|
|
1709
|
+
const md = new Metadata();
|
|
1710
|
+
const freshParam = await md.GetEntityObject('MJ: Query Parameters');
|
|
1711
|
+
const loaded = await freshParam.Load(param.ID);
|
|
1712
|
+
if (!loaded) {
|
|
1713
|
+
MJNotificationService.Instance.CreateSimpleNotification('Could not load parameter record. It may have already been deleted.', 'warning', 3000);
|
|
1714
|
+
// Remove from local list anyway since it doesn't exist
|
|
1715
|
+
this.removeParameterFromList(param);
|
|
1716
|
+
return;
|
|
1717
|
+
}
|
|
1718
|
+
const deleted = await freshParam.Delete();
|
|
1515
1719
|
if (deleted) {
|
|
1516
|
-
|
|
1517
|
-
if (index > -1) {
|
|
1518
|
-
this.queryParameters.splice(index, 1);
|
|
1519
|
-
}
|
|
1720
|
+
this.removeParameterFromList(param);
|
|
1520
1721
|
MJNotificationService.Instance.CreateSimpleNotification('Parameter deleted successfully', 'success', 3000);
|
|
1521
1722
|
}
|
|
1522
1723
|
else {
|
|
1523
|
-
|
|
1724
|
+
const errorDetail = freshParam.LatestResult?.CompleteMessage ?? 'Unknown reason';
|
|
1725
|
+
console.error('Failed to delete parameter:', errorDetail);
|
|
1726
|
+
MJNotificationService.Instance.CreateSimpleNotification(`Failed to delete parameter: ${errorDetail}`, 'error', 5000);
|
|
1524
1727
|
}
|
|
1525
1728
|
}
|
|
1526
1729
|
catch (error) {
|
|
@@ -1528,6 +1731,13 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
|
|
|
1528
1731
|
MJNotificationService.Instance.CreateSimpleNotification('Error deleting parameter', 'error', 3000);
|
|
1529
1732
|
}
|
|
1530
1733
|
}
|
|
1734
|
+
removeParameterFromList(param) {
|
|
1735
|
+
const index = this.queryParameters.indexOf(param);
|
|
1736
|
+
if (index > -1) {
|
|
1737
|
+
this.queryParameters.splice(index, 1);
|
|
1738
|
+
}
|
|
1739
|
+
this.cdr.detectChanges();
|
|
1740
|
+
}
|
|
1531
1741
|
/**
|
|
1532
1742
|
* Handle category creation from dialog
|
|
1533
1743
|
*/
|
|
@@ -1549,6 +1759,18 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
|
|
|
1549
1759
|
return d.toLocaleDateString() + ' ' + d.toLocaleTimeString();
|
|
1550
1760
|
}
|
|
1551
1761
|
async SaveRecord(StopEditModeAfterSave = true) {
|
|
1762
|
+
this.IsSaving = true;
|
|
1763
|
+
this.cdr.markForCheck();
|
|
1764
|
+
try {
|
|
1765
|
+
return await this.internalSaveRecord(StopEditModeAfterSave);
|
|
1766
|
+
}
|
|
1767
|
+
finally {
|
|
1768
|
+
await Promise.resolve(); // microtask to avoid ExpressionChangedAfterItHasBeenCheckedError
|
|
1769
|
+
this.IsSaving = false;
|
|
1770
|
+
this.cdr.markForCheck();
|
|
1771
|
+
}
|
|
1772
|
+
}
|
|
1773
|
+
async internalSaveRecord(StopEditModeAfterSave) {
|
|
1552
1774
|
// Handle category creation before saving query
|
|
1553
1775
|
if (this.record.CategoryID && !this.categoryOptions.find(opt => opt.value === this.record.CategoryID)) {
|
|
1554
1776
|
if (this.isDuplicateCategory(this.record.CategoryID)) {
|
|
@@ -1722,12 +1944,25 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
|
|
|
1722
1944
|
return;
|
|
1723
1945
|
}
|
|
1724
1946
|
try {
|
|
1725
|
-
const
|
|
1947
|
+
const md = new Metadata();
|
|
1948
|
+
const freshField = await md.GetEntityObject('MJ: Query Fields');
|
|
1949
|
+
const loaded = await freshField.Load(field.ID);
|
|
1950
|
+
if (!loaded) {
|
|
1951
|
+
this.queryFields = this.queryFields.filter(f => !UUIDsEqual(f.ID, field.ID));
|
|
1952
|
+
this.cdr.detectChanges();
|
|
1953
|
+
return;
|
|
1954
|
+
}
|
|
1955
|
+
const deleted = await freshField.Delete();
|
|
1726
1956
|
if (deleted) {
|
|
1727
1957
|
this.queryFields = this.queryFields.filter(f => !UUIDsEqual(f.ID, field.ID));
|
|
1728
1958
|
this.updateUnsavedChangesFlag();
|
|
1729
1959
|
MJNotificationService.Instance.CreateSimpleNotification('Field deleted successfully', 'success', 3000);
|
|
1730
1960
|
}
|
|
1961
|
+
else {
|
|
1962
|
+
const errorDetail = freshField.LatestResult?.CompleteMessage ?? 'Unknown reason';
|
|
1963
|
+
console.error('Failed to delete field:', errorDetail);
|
|
1964
|
+
MJNotificationService.Instance.CreateSimpleNotification(`Failed to delete field: ${errorDetail}`, 'error', 5000);
|
|
1965
|
+
}
|
|
1731
1966
|
}
|
|
1732
1967
|
catch (error) {
|
|
1733
1968
|
console.error('Error deleting field:', error);
|
|
@@ -1759,12 +1994,25 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
|
|
|
1759
1994
|
return;
|
|
1760
1995
|
}
|
|
1761
1996
|
try {
|
|
1762
|
-
const
|
|
1997
|
+
const md = new Metadata();
|
|
1998
|
+
const freshEntity = await md.GetEntityObject('MJ: Query Entities');
|
|
1999
|
+
const loaded = await freshEntity.Load(entity.ID);
|
|
2000
|
+
if (!loaded) {
|
|
2001
|
+
this.queryEntities = this.queryEntities.filter(e => !UUIDsEqual(e.ID, entity.ID));
|
|
2002
|
+
this.cdr.detectChanges();
|
|
2003
|
+
return;
|
|
2004
|
+
}
|
|
2005
|
+
const deleted = await freshEntity.Delete();
|
|
1763
2006
|
if (deleted) {
|
|
1764
2007
|
this.queryEntities = this.queryEntities.filter(e => !UUIDsEqual(e.ID, entity.ID));
|
|
1765
2008
|
this.updateUnsavedChangesFlag();
|
|
1766
2009
|
MJNotificationService.Instance.CreateSimpleNotification('Entity deleted successfully', 'success', 3000);
|
|
1767
2010
|
}
|
|
2011
|
+
else {
|
|
2012
|
+
const errorDetail = freshEntity.LatestResult?.CompleteMessage ?? 'Unknown reason';
|
|
2013
|
+
console.error('Failed to delete entity:', errorDetail);
|
|
2014
|
+
MJNotificationService.Instance.CreateSimpleNotification(`Failed to delete entity: ${errorDetail}`, 'error', 5000);
|
|
2015
|
+
}
|
|
1768
2016
|
}
|
|
1769
2017
|
catch (error) {
|
|
1770
2018
|
console.error('Error deleting entity:', error);
|
|
@@ -1792,14 +2040,11 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
|
|
|
1792
2040
|
} if (rf & 2) {
|
|
1793
2041
|
let _t;
|
|
1794
2042
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.sqlEditor = _t.first);
|
|
1795
|
-
} }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls:
|
|
1796
|
-
i0.ɵɵ
|
|
1797
|
-
i0.ɵɵconditionalCreate(1, MJQueryFormComponentExtended_Conditional_1_Template, 69, 27);
|
|
1798
|
-
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);
|
|
1799
2045
|
} if (rf & 2) {
|
|
1800
|
-
i0.ɵɵ
|
|
1801
|
-
i0.ɵɵconditional(ctx.record ? 1 : -1);
|
|
1802
|
-
} }, dependencies: [i1.NgClass, i2.ɵNgNoValidate, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgControlStatusGroup, i2.NgModel, i2.NgForm, i3.MJButtonDirective, i3.MJAccordionPanelComponent, i3.MJAccordionTitleDirective, i3.MJDropdownComponent, i3.MJSwitchComponent, i4.MjFormToolbarComponent, i4.ExplorerEntityDataGridComponent, i5.CodeEditorComponent, i6.LoadingComponent, i7.MarkdownComponent, i8.QueryRunDialogComponent, i9.QueryCategoryDialogComponent], styles: [".k-pane[_ngcontent-%COMP%] {\n background-color: var(--mj-bg-surface);\n}\n\n.content-margin[_ngcontent-%COMP%] {\n margin: 10px;\n}\n\n\na[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] {\n display: block;\n flex-direction: column;\n background-color: var(--mj-bg-surface);\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group[_ngcontent-%COMP%] {\n margin-top: 0px;\n background-color: var(--mj-bg-surface);\n}\n\nbutton[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin-bottom: 10px;\n}\n\n.k-splitter[_ngcontent-%COMP%] {\n border-width: 0px;\n}\n\n.record-form-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:first-child {\n font-weight: bold;\n padding-right: 10px;\n}\n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > span[_ngcontent-%COMP%] {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n@media (min-width: 768px) {\n .record-form-row[_ngcontent-%COMP%] {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: var(--mj-bg-surface);\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] > .form-card[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] .related-entity-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n\n\n@media (min-width: 1400px) {\n .form-panels-container[_ngcontent-%COMP%] .related-entity-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n overflow: hidden;\n}\n\n.collapsible-card[_ngcontent-%COMP%] {\n overflow: hidden;\n}\n\n.collapsible-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.collapsible-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n color: var(--mj-brand-primary);\n}\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.collapsible-header[_ngcontent-%COMP%] .collapse-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n transition: transform 0.3s ease;\n}\n\n.collapsible-body[_ngcontent-%COMP%] {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed[_ngcontent-%COMP%] {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body[_ngcontent-%COMP%] {\n padding: 24px;\n}\n\n\n\n.form-card.related-entity[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n\n\n.form-section-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px var(--mj-shadow-sm);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px var(--mj-shadow-md);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:active {\n transform: translateY(0);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-left: auto;\n font-weight: 500;\n}\n\n\n\n.form-card.search-hidden[_ngcontent-%COMP%] {\n display: none;\n}\n\n\n\n.section-count-badge[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] .search-highlight[_ngcontent-%COMP%] {\n background-color: var(--mj-status-warning);\n color: var(--mj-text-primary);\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge.zero-rows[_ngcontent-%COMP%] {\n background: var(--mj-text-muted);\n}", "\n\n[_nghost-%COMP%] {\n display: block;\n height: 100%;\n}\n\n\n\n.record-form[_ngcontent-%COMP%] {\n min-height: 0 !important;\n}\n\n\n\n\n\n\n.query-header[_ngcontent-%COMP%] {\n flex-shrink: 0;\n background: var(--mj-brand-primary);\n border-bottom: none;\n padding: 0;\n}\n\n.query-header-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 16px 20px;\n}\n\n.query-header-top[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 20px;\n}\n\n.query-name-section[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.query-title-icon[_ngcontent-%COMP%] {\n color: rgba(255, 255, 255, 0.85);\n font-size: 1.3em;\n flex-shrink: 0;\n}\n\n.query-name-input[_ngcontent-%COMP%] {\n font-size: 1.2em;\n font-weight: 600;\n min-width: 300px;\n flex: 1;\n}\n\n.query-name-display[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-inverse, white);\n font-weight: 600;\n font-size: 1.2em;\n flex: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.query-header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.run-query-btn[_ngcontent-%COMP%] {\n white-space: nowrap;\n}\n\n\n\n.query-meta-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.query-meta-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.meta-label[_ngcontent-%COMP%] {\n font-weight: 500;\n color: rgba(255, 255, 255, 0.75);\n font-size: var(--mj-text-sm);\n min-width: 60px;\n}\n\n.meta-value[_ngcontent-%COMP%] {\n color: rgba(255, 255, 255, 0.95);\n font-size: var(--mj-text-sm);\n}\n\n.meta-dropdown[_ngcontent-%COMP%] {\n min-width: 200px;\n}\n\n.status-pill[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: var(--mj-radius-xl);\n color: var(--mj-text-inverse, white);\n font-size: var(--mj-text-sm);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.status-pill[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n}\n\n\n\n.query-description-row[_ngcontent-%COMP%] {\n margin-top: 2px;\n}\n\n.query-description-input[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n.query-description-text[_ngcontent-%COMP%] {\n margin: 0;\n color: rgba(255, 255, 255, 0.8);\n font-size: var(--mj-text-sm);\n line-height: 1.4;\n}\n\n\n\n\n\n\n.status-warning-banner[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 16px;\n margin: 0;\n background: color-mix(in srgb, var(--mj-status-warning) 10%, var(--mj-bg-surface));\n border-left: 4px solid var(--mj-status-warning);\n font-size: var(--mj-text-sm);\n color: var(--mj-text-secondary);\n flex-shrink: 0;\n}\n\n.status-warning-banner[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: var(--mj-text-base);\n flex-shrink: 0;\n}\n\n.status-warning-banner[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] {\n font-weight: 600;\n}\n\n\n\n\n\n\n.query-content[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n padding: 16px;\n overflow-y: auto;\n background: var(--mj-bg-surface-card);\n}\n\n\n\n\n\n\n.query-panel[_ngcontent-%COMP%] {\n margin-bottom: 12px;\n}\n\n .query-content mj-accordion-panel .mj-accordion-panel {\n border: none !important;\n border-radius: var(--mj-radius-md) !important;\n margin-bottom: 12px !important;\n box-shadow: var(--mj-shadow-sm) !important;\n background: var(--mj-bg-surface) !important;\n overflow: hidden !important;\n}\n\n .query-content .mj-accordion-header {\n background: var(--mj-bg-surface) !important;\n border: none !important;\n padding: 14px 18px !important;\n border-radius: var(--mj-radius-md) !important;\n color: var(--mj-text-primary) !important;\n font-weight: 600 !important;\n font-size: var(--mj-text-sm) !important;\n transition: background 0.15s ease !important;\n}\n\n .query-content .mj-accordion-header:hover {\n background: var(--mj-bg-surface-card) !important;\n}\n\n .query-content .mj-accordion-panel--expanded .mj-accordion-header {\n background: var(--mj-brand-primary) !important;\n color: white !important;\n border-radius: var(--mj-radius-md) var(--mj-radius-md) 0 0 !important;\n}\n\n .query-content .mj-accordion-body {\n padding: 0 !important;\n border: none !important;\n background: var(--mj-bg-surface) !important;\n border-radius: 0 0 var(--mj-radius-md) var(--mj-radius-md) !important;\n}\n\n\n\n\n\n\n.panel-title-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n}\n\n.panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n}\n\n.panel-icon[_ngcontent-%COMP%] {\n font-size: var(--mj-text-sm);\n opacity: 0.7;\n}\n\n.sql-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n .mj-accordion-panel--expanded .panel-icon {\n color: rgba(255, 255, 255, 0.85) !important;\n opacity: 1;\n}\n\n.panel-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n border-radius: var(--mj-radius-lg);\n font-size: var(--mj-text-xs);\n font-weight: 600;\n}\n\n.panel-badge.defined[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: white;\n}\n\n.panel-badge.count[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: white;\n}\n\n .mj-accordion-panel--expanded .panel-badge.count {\n background: rgba(255, 255, 255, 0.25) !important;\n}\n\n .mj-accordion-panel--expanded .panel-badge.defined {\n background: rgba(255, 255, 255, 0.25) !important;\n}\n\n.filters-help-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n margin-right: 8px;\n font-size: var(--mj-text-xs);\n}\n\n\n\n\n\n\n.panel-body[_ngcontent-%COMP%] {\n padding: 16px 0;\n}\n\n.panel-loading[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px;\n}\n\n.panel-toolbar[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n padding: 0 20px 12px;\n}\n\n\n\n\n\n\n.sql-panel-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.sql-editor[_ngcontent-%COMP%] {\n flex: 1;\n height: 400px;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-sm);\n margin: 16px;\n}\n\n\n\n.filters-help[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 16px;\n margin: 0 16px 16px;\n}\n\n.filters-help-title[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n color: var(--mj-text-primary);\n font-weight: 600;\n font-size: var(--mj-text-sm);\n}\n\n.filters-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 10px;\n}\n\n.filter-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 12px;\n transition: transform 0.15s ease, box-shadow 0.15s ease;\n}\n\n.filter-card[_ngcontent-%COMP%]:hover {\n transform: translateY(-1px);\n box-shadow: var(--mj-shadow-md);\n}\n\n.filter-name[_ngcontent-%COMP%] {\n font-family: 'Courier New', monospace;\n font-weight: bold;\n color: var(--mj-brand-primary);\n margin-bottom: 4px;\n}\n\n.filter-description[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-secondary);\n margin-bottom: 6px;\n}\n\n.filter-syntax[_ngcontent-%COMP%] {\n font-family: 'Courier New', monospace;\n font-size: var(--mj-text-xs);\n background: var(--mj-bg-surface-card);\n padding: 6px;\n border-radius: var(--mj-radius-sm);\n margin-bottom: 4px;\n}\n\n.filter-notes[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-disabled);\n font-style: italic;\n}\n\n\n\n\n\n\n.card-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));\n gap: 12px;\n padding: 0 20px 20px;\n}\n\n.item-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 14px;\n transition: all 0.15s ease;\n cursor: pointer;\n position: relative;\n}\n\n.item-card[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n}\n\n.item-card.required[_ngcontent-%COMP%] {\n border-left: 3px solid var(--mj-status-warning);\n}\n\n.item-card-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 10px;\n}\n\n.item-name[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: var(--mj-text-sm);\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.item-name-icon[_ngcontent-%COMP%] {\n font-size: var(--mj-text-sm);\n}\n\n.item-name-icon.param-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.item-name-icon.field-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.item-name-icon.entity-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.item-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n}\n\n.item-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n border-radius: var(--mj-radius-lg);\n font-size: var(--mj-text-xs);\n font-weight: 600;\n color: white;\n}\n\n.item-badge.required[_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n}\n\n.item-badge.type[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.item-badge.sequence[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: color-mix(in srgb, var(--mj-brand-primary) 80%, purple);\n}\n\n.item-card-body[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-size: var(--mj-text-sm);\n}\n\n.item-description[_ngcontent-%COMP%] {\n margin-bottom: 8px;\n}\n\n.item-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n font-size: var(--mj-text-xs);\n}\n\n.meta-tag[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n.meta-code[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n padding: 1px 4px;\n border-radius: var(--mj-radius-sm);\n font-size: var(--mj-text-xs);\n}\n\n\n\n.item-actions[_ngcontent-%COMP%] {\n position: absolute;\n top: 10px;\n right: 10px;\n display: flex;\n gap: 4px;\n opacity: 0;\n transition: opacity 0.15s ease;\n}\n\n.item-card[_ngcontent-%COMP%]:hover .item-actions[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n.item-card-actions[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n margin-top: 8px;\n}\n\n.item-action-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n padding: 4px 8px;\n border-radius: var(--mj-radius-sm);\n cursor: pointer;\n color: var(--mj-text-disabled);\n transition: all 0.15s ease;\n}\n\n.item-action-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-brand-primary);\n}\n\n.item-action-btn.delete[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-error) 8%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n\n\n.entity-dropdown-wrapper[_ngcontent-%COMP%] {\n flex: 1;\n margin-left: 12px;\n}\n\n.entity-dropdown[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n\n\n\n\n\n.details-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 16px;\n padding: 16px 20px;\n}\n\n.detail-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n font-weight: 600;\n color: var(--mj-text-disabled);\n display: flex;\n align-items: center;\n gap: 6px;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: var(--mj-text-sm);\n color: var(--mj-text-primary);\n}\n\n.detail-tag[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: var(--mj-text-sm);\n}\n\n.detail-tag.positive[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.detail-tag.neutral[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n}\n\n\n\n\n\n\n.permissions-list[_ngcontent-%COMP%] {\n padding: 0 20px;\n}\n\n.permission-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 14px 16px;\n margin-bottom: 8px;\n}\n\n.permission-icon[_ngcontent-%COMP%] {\n font-size: 1.3em;\n color: var(--mj-brand-primary);\n}\n\n.permission-info[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.permission-role[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n font-size: var(--mj-text-sm);\n}\n\n.permission-type[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-disabled);\n}\n\n.permission-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n background: var(--mj-brand-primary);\n color: white;\n padding: 4px 10px;\n border-radius: var(--mj-radius-md);\n font-size: var(--mj-text-xs);\n font-weight: 500;\n}\n\n\n\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 20px;\n text-align: center;\n color: var(--mj-text-disabled);\n}\n\n.empty-state-icon[_ngcontent-%COMP%] {\n font-size: 40px;\n margin-bottom: 14px;\n opacity: 0.25;\n color: var(--mj-text-primary);\n}\n\n.empty-state-title[_ngcontent-%COMP%] {\n font-size: var(--mj-text-base);\n font-weight: 600;\n margin-bottom: 6px;\n color: var(--mj-text-secondary);\n}\n\n.empty-state-text[_ngcontent-%COMP%] {\n font-size: var(--mj-text-sm);\n margin-bottom: 16px;\n color: var(--mj-text-disabled);\n}\n\n\n\n\n\n\n.add-item-btn[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: white;\n border: none;\n padding: 8px 16px;\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n transition: all 0.15s ease;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n font-size: var(--mj-text-sm);\n}\n\n.add-item-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 85%, black);\n box-shadow: 0 2px 6px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n\n\n\n\n\n.badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n\n\n\n\n\n.technical-description-textarea[_ngcontent-%COMP%] {\n width: 100%;\n font-family: 'Consolas', 'Monaco', 'Courier New', monospace;\n font-size: 13px;\n}\n\n.technical-description-preview[_ngcontent-%COMP%] {\n margin-top: 16px;\n border-top: 1px solid var(--mj-border-default);\n padding-top: 12px;\n}\n\n.preview-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\n margin-bottom: 8px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.technical-description-view[_ngcontent-%COMP%] {\n max-height: 500px;\n overflow-y: auto;\n padding: 12px 16px;\n}\n\n\n\n.dependents-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\n}\n\n.dependents-description[_ngcontent-%COMP%] {\n padding: 0 20px 12px;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.dependents-description[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n padding: 1px 5px;\n border-radius: 3px;\n font-size: 12px;\n}\n\n.dependent-card[_ngcontent-%COMP%] {\n cursor: pointer;\n border-left: 3px solid var(--mj-status-warning) !important;\n}\n\n.dependent-card[_ngcontent-%COMP%]:hover {\n border-left-color: var(--mj-status-warning-text) !important;\n background: color-mix(in srgb, var(--mj-status-warning) 8%, var(--mj-bg-surface)) !important;\n}\n\n.dependent-query-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-warning) !important;\n}\n\n.item-card-footer[_ngcontent-%COMP%] {\n padding-top: 8px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n margin-top: 8px;\n}\n\n.open-link[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-brand-primary);\n font-weight: 500;\n}\n\n.dependent-card[_ngcontent-%COMP%]:hover .open-link[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary-hover);\n}"] }); }
|
|
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}"] }); }
|
|
1803
2048
|
};
|
|
1804
2049
|
MJQueryFormComponentExtended = __decorate([
|
|
1805
2050
|
RegisterClass(BaseFormComponent, 'MJ: Queries')
|
|
@@ -1807,10 +2052,10 @@ MJQueryFormComponentExtended = __decorate([
|
|
|
1807
2052
|
export { MJQueryFormComponentExtended };
|
|
1808
2053
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJQueryFormComponentExtended, [{
|
|
1809
2054
|
type: Component,
|
|
1810
|
-
args: [{ standalone: false, selector: 'mj-query-form', template: "<div class=\"record-form-container\" style=\"height: 100%; display: flex; flex-direction: column;\">\n @if (record) {\n <form class=\"record-form\" #form=\"ngForm\" style=\"display: flex; flex-direction: column; height: 100%; overflow: hidden;\">\n <mj-form-toolbar [Form]=\"this\" [Config]=\"ToolbarConfig\"></mj-form-toolbar>\n\n <!-- Header Section -->\n <div class=\"query-header\">\n <div class=\"query-header-content\">\n <!-- Top Row: Name and Run Button -->\n <div class=\"query-header-top\">\n <!-- Left: Query Name -->\n <div class=\"query-name-section\">\n <i class=\"fa-solid fa-database query-title-icon\"></i>\n @if (EditMode) {\n <input class=\"mj-input query-name-input\"\n [(ngModel)]=\"record.Name\"\n name=\"queryName\"\n placeholder=\"Enter query name...\" />\n } @else {\n <h4 class=\"query-name-display\">{{ record.Name || 'Untitled Query' }}</h4>\n }\n </div>\n\n <!-- Right: Action Buttons -->\n <div class=\"query-header-actions\">\n @if (record.ID) {\n <button mjButton\n variant=\"primary\"\n [disabled]=\"EditMode || !record.SQL || record.SQL.trim().length === 0\"\n (click)=\"runQuery()\"\n title=\"Run Query\"\n class=\"run-query-btn\">\n <i class=\"fa-solid fa-play\"></i> Run\n </button>\n }\n </div>\n </div>\n\n <!-- Second Row: Category and Status -->\n <div class=\"query-meta-row\">\n <!-- Category -->\n <div class=\"query-meta-item\">\n <label class=\"meta-label\">Category</label>\n @if (EditMode) {\n <mj-dropdown\n [(ngModel)]=\"record.CategoryID\"\n name=\"categoryId\"\n [Data]=\"categoryOptions\"\n TextField=\"text\"\n ValueField=\"value\"\n [ValuePrimitive]=\"true\"\n Placeholder=\"Select category...\"\n class=\"meta-dropdown\">\n </mj-dropdown>\n } @else {\n <span class=\"meta-value\">{{ categoryPathDisplay || 'Uncategorized' }}</span>\n }\n </div>\n\n <!-- Status -->\n <div class=\"query-meta-item\">\n <label class=\"meta-label\">Status</label>\n @if (EditMode) {\n <mj-dropdown\n [(ngModel)]=\"record.Status\"\n name=\"status\"\n [Data]=\"statusOptions\"\n TextField=\"text\"\n ValueField=\"value\"\n [ValuePrimitive]=\"true\"\n class=\"meta-dropdown status-dropdown\">\n </mj-dropdown>\n } @else {\n <span class=\"status-pill\"\n [style.background]=\"getStatusBadgeColor()\">\n <i class=\"fa-solid\" [class]=\"getStatusBannerIcon()\"></i>\n {{ record.Status || 'Unknown' }}\n </span>\n }\n </div>\n </div>\n\n <!-- Third Row: Description -->\n @if (EditMode || record.Description) {\n <div class=\"query-description-row\">\n @if (EditMode) {\n <textarea class=\"mj-input query-description-input\"\n [(ngModel)]=\"record.Description\"\n name=\"description\"\n rows=\"2\"\n placeholder=\"Enter query description...\">\n </textarea>\n } @else {\n <p class=\"query-description-text\">{{ record.Description }}</p>\n }\n </div>\n }\n </div>\n </div>\n\n <!-- Status Warning Banner for Non-Approved Queries -->\n @if (record.Status && record.Status !== 'Approved' && !EditMode) {\n <div class=\"status-warning-banner\" [style.border-left-color]=\"getStatusBadgeColor()\">\n <i class=\"fa-solid\" [class]=\"getStatusBannerIcon()\"\n [style.color]=\"getStatusBadgeColor()\"></i>\n <span>\n This query has status <strong>{{ record.Status }}</strong>. {{ getStatusBannerMessage() }}\n </span>\n </div>\n }\n\n <!-- Main Content Area with Expansion Panels -->\n <div class=\"query-content\">\n\n <!-- SQL Query Panel -->\n <mj-accordion-panel\n [(Expanded)]=\"sqlPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title-row\">\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-code panel-icon sql-icon\"></i>\n SQL\n @if (record.SQL) {\n <span class=\"panel-badge defined\">— Defined</span>\n }\n </span>\n </span>\n </ng-template>\n\n <div class=\"sql-panel-toolbar\" style=\"display: flex; justify-content: flex-end; padding: 4px 0 8px;\">\n <button type=\"button\"\n mjButton\n variant=\"flat\"\n (click)=\"toggleFiltersHelp()\"\n title=\"Show/hide SQL filters help\"\n class=\"filters-help-btn\">\n <i class=\"fa-solid fa-question-circle\"></i>\n <span>Filters Help</span>\n <i class=\"fa-solid\" [ngClass]=\"showFiltersHelp ? 'fa-chevron-up' : 'fa-chevron-down'\"></i>\n </button>\n </div>\n\n <div class=\"sql-panel-content\">\n <!-- Code Editor -->\n <mj-code-editor #sqlEditor\n (change)=\"onSQLChange($event)\"\n (CompositionTokenClick)=\"onCompositionTokenClick($event)\"\n [language]=\"'sql'\"\n class=\"sql-editor\">\n </mj-code-editor>\n\n <!-- SQL Filters Help (Below Editor) -->\n @if (showFiltersHelp) {\n <div class=\"filters-help\">\n <h6 class=\"filters-help-title\">\n <i class=\"fa-solid fa-filter\"></i> Available SQL Filters for Parameterized Queries\n </h6>\n <div class=\"filters-grid\">\n @for (filter of sqlFilters; track filter.name) {\n <div class=\"filter-card\">\n <div class=\"filter-name\">{{ filter.name }}</div>\n <div class=\"filter-description\">{{ filter.description }}</div>\n <div class=\"filter-syntax\">{{ filter.exampleSyntax }}</div>\n @if (filter.notes) {\n <div class=\"filter-notes\">{{ filter.notes }}</div>\n }\n </div>\n }\n </div>\n </div>\n }\n </div>\n </mj-accordion-panel>\n\n <!-- Technical Description Panel -->\n @if (record.TechnicalDescription || EditMode) {\n <mj-accordion-panel\n [(Expanded)]=\"technicalDescriptionPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-book panel-icon\"></i>\n Technical Description\n @if (record.TechnicalDescription) {\n <span class=\"panel-badge defined\">— Documented</span>\n }\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n @if (EditMode) {\n <textarea class=\"mj-input technical-description-textarea\"\n [(ngModel)]=\"record.TechnicalDescription\"\n name=\"technicalDescription\"\n rows=\"8\"\n placeholder=\"Technical documentation of the query logic, performance considerations, and parameter usage. Supports markdown and mermaid diagrams.\">\n </textarea>\n @if (record.TechnicalDescription) {\n <div class=\"technical-description-preview\">\n <div class=\"preview-label\">\n <i class=\"fa-solid fa-eye\"></i> Preview\n </div>\n <mj-markdown\n [data]=\"record.TechnicalDescription || ''\"\n [enableMermaid]=\"true\"\n [enableHighlight]=\"true\"\n [enableCollapsibleHeadings]=\"false\"\n [enableSmartypants]=\"true\">\n </mj-markdown>\n </div>\n }\n } @else {\n <div class=\"technical-description-view\">\n <mj-markdown\n [data]=\"record.TechnicalDescription || ''\"\n [enableMermaid]=\"true\"\n [enableHighlight]=\"true\"\n [enableCollapsibleHeadings]=\"false\"\n [enableSmartypants]=\"true\">\n </mj-markdown>\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Parameters Panel -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [(Expanded)]=\"parametersPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-sliders panel-icon\"></i>\n Parameters\n @if (queryParameters.length > 0) {\n <span class=\"panel-badge count\">{{ queryParameters.length }}</span>\n }\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n @if (isLoadingParameters) {\n <div class=\"panel-loading\">\n <mj-loading text=\"Loading parameters...\"></mj-loading>\n </div>\n } @else {\n @if (queryParameters.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-sliders empty-state-icon\"></i>\n <div class=\"empty-state-title\">No Parameters Defined</div>\n <div class=\"empty-state-text\">\n Add parameters to make your query dynamic and reusable.\n </div>\n @if (EditMode) {\n <button type=\"button\" class=\"add-item-btn\" (click)=\"addParameter()\">\n <i class=\"fa-solid fa-plus\"></i> Add First Parameter\n </button>\n }\n </div>\n } @else {\n @if (EditMode) {\n <div class=\"panel-toolbar\">\n <button type=\"button\" class=\"add-item-btn\" (click)=\"addParameter()\">\n <i class=\"fa-solid fa-plus\"></i> Add Parameter\n </button>\n </div>\n }\n <div class=\"card-grid\">\n @for (param of queryParameters; track param.ID || $index) {\n <div class=\"item-card\" [class.required]=\"param.IsRequired\" (click)=\"editParameter(param)\">\n <div class=\"item-card-header\">\n <div class=\"item-name\">\n <i class=\"fa-solid fa-at item-name-icon param-icon\"></i>\n {{ param.Name }}\n </div>\n <div class=\"item-badges\">\n @if (param.IsRequired) {\n <span class=\"item-badge required\">Required</span>\n }\n </div>\n </div>\n <div class=\"item-card-body\">\n @if (param.Description) {\n <div class=\"item-description\">{{ param.Description }}</div>\n }\n <div class=\"item-meta\">\n <span class=\"meta-tag\">\n <strong>Type:</strong> {{ param.Type || 'Text' }}\n </span>\n @if (param.DefaultValue) {\n <span class=\"meta-tag\">\n <strong>Default:</strong>\n <code class=\"meta-code\">{{ param.DefaultValue }}</code>\n </span>\n }\n </div>\n </div>\n @if (EditMode) {\n <div class=\"item-actions\" (click)=\"$event.stopPropagation()\">\n <button type=\"button\" class=\"item-action-btn\" (click)=\"editParameter(param)\" title=\"Edit parameter\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n <button type=\"button\" class=\"item-action-btn delete\" (click)=\"deleteParameter(param)\" title=\"Delete parameter\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n </div>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Query Fields Panel -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [(Expanded)]=\"fieldsPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-table panel-icon\"></i>\n Fields\n @if (queryFields.length > 0) {\n <span class=\"panel-badge count\">{{ queryFields.length }}</span>\n }\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n @if (isLoadingFields) {\n <div class=\"panel-loading\">\n <mj-loading text=\"Loading fields...\"></mj-loading>\n </div>\n } @else {\n @if (queryFields.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-table empty-state-icon\"></i>\n <div class=\"empty-state-title\">No Fields Defined</div>\n <div class=\"empty-state-text\">\n Define output fields for your query results.\n </div>\n @if (EditMode) {\n <button type=\"button\" class=\"add-item-btn\" (click)=\"addField()\">\n <i class=\"fa-solid fa-plus\"></i> Add First Field\n </button>\n }\n </div>\n } @else {\n @if (EditMode) {\n <div class=\"panel-toolbar\">\n <button type=\"button\" class=\"add-item-btn\" (click)=\"addField()\">\n <i class=\"fa-solid fa-plus\"></i> Add Field\n </button>\n </div>\n }\n <div class=\"card-grid\">\n @for (field of queryFields; track field.ID) {\n <div class=\"item-card\">\n <div class=\"item-card-header\">\n <div class=\"item-name\">\n <i class=\"fa-solid fa-columns item-name-icon field-icon\"></i>\n {{ field.Name }}\n </div>\n <div class=\"item-badges\">\n <span class=\"item-badge type\">{{ field.SQLBaseType }}</span>\n @if (field.Sequence) {\n <span class=\"item-badge sequence\">#{{ field.Sequence }}</span>\n }\n </div>\n </div>\n <div class=\"item-card-body\">\n @if (field.Description) {\n <div class=\"item-description\">{{ field.Description }}</div>\n }\n <div class=\"item-meta\">\n <span class=\"meta-tag\">\n <i class=\"fa-solid fa-code\"></i> {{ field.SQLFullType || field.SQLBaseType }}\n </span>\n </div>\n </div>\n @if (EditMode) {\n <div class=\"item-card-actions\">\n <button type=\"button\" class=\"item-action-btn delete\" (click)=\"deleteField(field)\" title=\"Delete field\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n </div>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Dependent Queries Panel -->\n @if (record.IsSaved && DependentQueries.length > 0) {\n <mj-accordion-panel\n [(Expanded)]=\"dependentsPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-arrow-left panel-icon dependents-icon\"></i>\n Dependent Queries\n <span class=\"panel-badge count\">{{ DependentQueries.length }}</span>\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n <div class=\"dependents-description\">\n These queries reference this query via <code>{{\"{{query:\\\"...\\\"}}\"}} </code> composition syntax.\n </div>\n <div class=\"card-grid\">\n @for (dep of DependentQueries; track dep.ID) {\n <div class=\"item-card dependent-card\" (click)=\"onDependentQueryClick(dep)\">\n <div class=\"item-card-header\">\n <div class=\"item-name\">\n <i class=\"fa-solid fa-arrow-left item-name-icon dependent-query-icon\"></i>\n {{ dep.Query }}\n </div>\n </div>\n <div class=\"item-card-body\">\n @if (dep.ReferencePath) {\n <div class=\"item-meta\">\n <span class=\"meta-tag\">\n <i class=\"fa-solid fa-link\"></i> {{ dep.ReferencePath }}\n </span>\n </div>\n }\n @if (dep.Alias) {\n <div class=\"item-meta\">\n <span class=\"meta-tag\">\n <strong>Alias:</strong> <code class=\"meta-code\">{{ dep.Alias }}</code>\n </span>\n </div>\n }\n </div>\n <div class=\"item-card-footer\">\n <span class=\"open-link\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\"></i> Open\n </span>\n </div>\n </div>\n }\n </div>\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Query Entities Panel -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [(Expanded)]=\"entitiesPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-database panel-icon\"></i>\n Entities\n @if (queryEntities.length > 0) {\n <span class=\"panel-badge count\">{{ queryEntities.length }}</span>\n }\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n @if (isLoadingEntities) {\n <div class=\"panel-loading\">\n <mj-loading text=\"Loading entities...\"></mj-loading>\n </div>\n } @else {\n @if (queryEntities.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-database empty-state-icon\"></i>\n <div class=\"empty-state-title\">No Entities Tracked</div>\n <div class=\"empty-state-text\">\n Track which entities this query uses for documentation.\n </div>\n @if (EditMode) {\n <button type=\"button\" class=\"add-item-btn\" (click)=\"addEntity()\">\n <i class=\"fa-solid fa-plus\"></i> Add First Entity\n </button>\n }\n </div>\n } @else {\n @if (EditMode) {\n <div class=\"panel-toolbar\">\n <button type=\"button\" class=\"add-item-btn\" (click)=\"addEntity()\">\n <i class=\"fa-solid fa-plus\"></i> Add Entity\n </button>\n </div>\n }\n <div class=\"card-grid\">\n @for (entity of queryEntities; track entity.ID) {\n <div class=\"item-card\">\n <div class=\"item-card-header\">\n <div class=\"item-name\">\n <i class=\"fa-solid fa-table item-name-icon entity-icon\"></i>\n {{ entity.Entity || 'Select Entity...' }}\n </div>\n @if (EditMode) {\n <div class=\"entity-dropdown-wrapper\">\n <mj-dropdown\n [(ngModel)]=\"entity.EntityID\"\n [name]=\"'entity_' + entity.ID\"\n [Data]=\"getEntityOptions()\"\n TextField=\"text\"\n ValueField=\"id\"\n [ValuePrimitive]=\"true\"\n Placeholder=\"Select entity...\"\n class=\"entity-dropdown\">\n </mj-dropdown>\n </div>\n }\n </div>\n @if (!EditMode && entity.Entity) {\n <div class=\"item-card-body\">\n <div class=\"item-meta\">\n <span class=\"meta-tag\">\n <i class=\"fa-solid fa-database\"></i> Data Source\n </span>\n </div>\n </div>\n }\n @if (EditMode) {\n <div class=\"item-card-actions\">\n <button type=\"button\" class=\"item-action-btn delete\" (click)=\"deleteEntity(entity)\" title=\"Delete entity\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n </div>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Details Panel -->\n <mj-accordion-panel\n [(Expanded)]=\"detailsPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-info-circle panel-icon\"></i>\n Details\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n <div class=\"details-grid\">\n <!-- Uses Template -->\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-file-code\"></i> Template Usage\n </label>\n @if (EditMode) {\n <mj-switch [(ngModel)]=\"record.UsesTemplate\" name=\"usesTemplate\"></mj-switch>\n } @else {\n <div class=\"detail-value\">\n @if (record.UsesTemplate) {\n <span class=\"detail-tag positive\"><i class=\"fa-solid fa-check\"></i> Uses Templates</span>\n } @else {\n <span class=\"detail-tag neutral\"><i class=\"fa-solid fa-times\"></i> No Templates</span>\n }\n </div>\n }\n </div>\n\n <!-- Created Date -->\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-calendar-plus\"></i> Created\n </label>\n <div class=\"detail-value\">{{ formatDate(record.__mj_CreatedAt) }}</div>\n </div>\n\n <!-- Updated Date -->\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-calendar-check\"></i> Last Updated\n </label>\n <div class=\"detail-value\">{{ formatDate(record.__mj_UpdatedAt) }}</div>\n </div>\n\n <!-- Quality Rank -->\n @if (record.QualityRank != null) {\n <div class=\"detail-item\">\n <label class=\"detail-label\">\n <i class=\"fa-solid fa-star\"></i> Quality Rank\n </label>\n <div class=\"detail-value\">{{ record.QualityRank }}/10</div>\n </div>\n }\n </div>\n </div>\n </mj-accordion-panel>\n\n <!-- Permissions Panel -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [(Expanded)]=\"permissionsPanelExpanded\"\n class=\"query-panel\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-shield-alt panel-icon\"></i>\n Permissions\n </span>\n </ng-template>\n\n <div class=\"panel-body\">\n @if (isLoadingPermissions) {\n <div class=\"panel-loading\">\n <mj-loading text=\"Loading permissions...\"></mj-loading>\n </div>\n } @else {\n @if (queryPermissions.length === 0 && !EditMode) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-shield-alt empty-state-icon\"></i>\n <div class=\"empty-state-title\">No Permissions Set</div>\n <div class=\"empty-state-text\">\n This query uses default permissions.\n </div>\n </div>\n } @else {\n @if (EditMode) {\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Query Permissions','QueryID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Query Permissions')\"\n [AllowLoad]=\"true\"\n [ShowToolbar]=\"false\">\n </mj-explorer-entity-data-grid>\n } @else {\n <div class=\"permissions-list\">\n @for (permission of queryPermissions; track permission.ID) {\n <div class=\"permission-card\">\n <i class=\"fa-solid fa-users permission-icon\"></i>\n <div class=\"permission-info\">\n <div class=\"permission-role\">{{ permission.Role }}</div>\n <div class=\"permission-type\">Role Permission</div>\n </div>\n <span class=\"permission-badge\">\n <i class=\"fa-solid fa-play\"></i> Can Execute\n </span>\n </div>\n }\n </div>\n }\n }\n }\n </div>\n </mj-accordion-panel>\n }\n\n </div>\n </form>\n\n <!-- Query Run Dialog -->\n <mj-query-run-dialog\n [query]=\"record\"\n [parameters]=\"queryParameters\"\n [(isVisible)]=\"showRunDialog\"\n (onClose)=\"onRunDialogClose()\">\n </mj-query-run-dialog>\n\n <!-- Category Creation Dialog -->\n <mj-query-category-dialog\n [(isVisible)]=\"showCategoryDialog\"\n (onCategoryCreated)=\"onCategoryCreated($event)\">\n </mj-query-category-dialog>\n }\n</div>\n", styles: [".k-pane {\n background-color: var(--mj-bg-surface);\n}\n\n.content-margin {\n margin: 10px;\n}\n\n\na {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon {\n margin-right: 5px;\n}\n\n.record-form {\n display: block;\n flex-direction: column;\n background-color: var(--mj-bg-surface);\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group {\n margin-top: 0px;\n background-color: var(--mj-bg-surface);\n}\n\nbutton {\n margin-right: 5px;\n}\n\n.record-form h2 {\n margin-bottom: 10px;\n}\n\n.k-splitter {\n border-width: 0px;\n}\n\n.record-form-row {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n.record-form .record-form-row > :first-child {\n font-weight: bold;\n padding-right: 10px;\n}\n\n.record-form .record-form-row > span {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n@media (min-width: 768px) {\n .record-form-row {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row label {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n/* Collapsible Panel Styles */\n.form-panels-container {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: var(--mj-bg-surface);\n}\n\n/* All field sections take full width */\n.form-panels-container > .form-card {\n width: 100%;\n}\n\n/* Related entity grid container - responsive layout */\n.form-panels-container .related-entity-grid {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n/* Responsive multi-column layout for related entities on wider screens */\n@media (min-width: 1400px) {\n .form-panels-container .related-entity-grid {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card {\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n overflow: hidden;\n}\n\n.collapsible-card {\n overflow: hidden;\n}\n\n.collapsible-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header:hover {\n background: var(--mj-bg-surface-sunken);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.collapsible-title {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title i {\n font-size: 20px;\n color: var(--mj-brand-primary);\n}\n\n.collapsible-title h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.collapsible-header .collapse-icon {\n color: var(--mj-text-muted);\n transition: transform 0.3s ease;\n}\n\n.collapsible-body {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body {\n padding: 24px;\n}\n\n/* Related Entity Sections - Visual Distinction */\n.form-card.related-entity {\n background: var(--mj-bg-surface-card);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.form-card.related-entity .collapsible-header {\n background: var(--mj-bg-surface-sunken);\n}\n\n.form-card.related-entity .collapsible-header:hover {\n background: var(--mj-bg-surface-card);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.form-card.related-entity .collapsible-title i {\n color: var(--mj-brand-primary);\n}\n\n/* Section Controls */\n.form-section-controls {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px var(--mj-shadow-sm);\n}\n\n.form-section-controls .control-group {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls button {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls button:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px var(--mj-shadow-md);\n}\n\n.form-section-controls button:active {\n transform: translateY(0);\n}\n\n.form-section-controls button i {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls .section-search {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n.form-section-controls .section-search:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-section-controls .section-search::placeholder {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n.form-section-controls .section-count {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-left: auto;\n font-weight: 500;\n}\n\n/* Hidden sections for search filter */\n.form-card.search-hidden {\n display: none;\n}\n\n/* Section count badge */\n.section-count-badge {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n/* Search highlighting in section names */\n.collapsible-title h3 .search-highlight {\n background-color: var(--mj-status-warning);\n color: var(--mj-text-primary);\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n/* Row count badge in section headers */\n.collapsible-title .row-count-badge {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n/* Gray badge for zero rows (loaded but empty) */\n.collapsible-title .row-count-badge.zero-rows {\n background: var(--mj-text-muted);\n}\n", "/* Override shared form-styles to enable flex layout */\n:host {\n display: block;\n height: 100%;\n}\n\n/* Override the shared record-form min-height so flex layout works properly */\n.record-form {\n min-height: 0 !important;\n}\n\n/* ========================================\n Header Section \u2014 matches Query Browser gradient\n ======================================== */\n\n.query-header {\n flex-shrink: 0;\n background: var(--mj-brand-primary);\n border-bottom: none;\n padding: 0;\n}\n\n.query-header-content {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 16px 20px;\n}\n\n.query-header-top {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 20px;\n}\n\n.query-name-section {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.query-title-icon {\n color: rgba(255, 255, 255, 0.85);\n font-size: 1.3em;\n flex-shrink: 0;\n}\n\n.query-name-input {\n font-size: 1.2em;\n font-weight: 600;\n min-width: 300px;\n flex: 1;\n}\n\n.query-name-display {\n margin: 0;\n color: var(--mj-text-inverse, white);\n font-weight: 600;\n font-size: 1.2em;\n flex: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.query-header-actions {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.run-query-btn {\n white-space: nowrap;\n}\n\n/* Meta row (category + status) */\n.query-meta-row {\n display: flex;\n gap: 24px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.query-meta-item {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.meta-label {\n font-weight: 500;\n color: rgba(255, 255, 255, 0.75);\n font-size: var(--mj-text-sm);\n min-width: 60px;\n}\n\n.meta-value {\n color: rgba(255, 255, 255, 0.95);\n font-size: var(--mj-text-sm);\n}\n\n.meta-dropdown {\n min-width: 200px;\n}\n\n.status-pill {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: var(--mj-radius-xl);\n color: var(--mj-text-inverse, white);\n font-size: var(--mj-text-sm);\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.status-pill i {\n font-size: var(--mj-text-xs);\n}\n\n/* Description row */\n.query-description-row {\n margin-top: 2px;\n}\n\n.query-description-input {\n width: 100%;\n}\n\n.query-description-text {\n margin: 0;\n color: rgba(255, 255, 255, 0.8);\n font-size: var(--mj-text-sm);\n line-height: 1.4;\n}\n\n/* ========================================\n Status Warning Banner\n ======================================== */\n\n.status-warning-banner {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 16px;\n margin: 0;\n background: color-mix(in srgb, var(--mj-status-warning) 10%, var(--mj-bg-surface));\n border-left: 4px solid var(--mj-status-warning);\n font-size: var(--mj-text-sm);\n color: var(--mj-text-secondary);\n flex-shrink: 0;\n}\n\n.status-warning-banner i {\n font-size: var(--mj-text-base);\n flex-shrink: 0;\n}\n\n.status-warning-banner strong {\n font-weight: 600;\n}\n\n/* ========================================\n Main Content Area\n ======================================== */\n\n.query-content {\n flex: 1;\n min-height: 0;\n padding: 16px;\n overflow-y: auto;\n background: var(--mj-bg-surface-card);\n}\n\n/* ========================================\n Accordion Panel Overrides \u2014 Modern Style\n ======================================== */\n\n.query-panel {\n margin-bottom: 12px;\n}\n\n::ng-deep .query-content mj-accordion-panel .mj-accordion-panel {\n border: none !important;\n border-radius: var(--mj-radius-md) !important;\n margin-bottom: 12px !important;\n box-shadow: var(--mj-shadow-sm) !important;\n background: var(--mj-bg-surface) !important;\n overflow: hidden !important;\n}\n\n::ng-deep .query-content .mj-accordion-header {\n background: var(--mj-bg-surface) !important;\n border: none !important;\n padding: 14px 18px !important;\n border-radius: var(--mj-radius-md) !important;\n color: var(--mj-text-primary) !important;\n font-weight: 600 !important;\n font-size: var(--mj-text-sm) !important;\n transition: background 0.15s ease !important;\n}\n\n::ng-deep .query-content .mj-accordion-header:hover {\n background: var(--mj-bg-surface-card) !important;\n}\n\n::ng-deep .query-content .mj-accordion-panel--expanded .mj-accordion-header {\n background: var(--mj-brand-primary) !important;\n color: white !important;\n border-radius: var(--mj-radius-md) var(--mj-radius-md) 0 0 !important;\n}\n\n::ng-deep .query-content .mj-accordion-body {\n padding: 0 !important;\n border: none !important;\n background: var(--mj-bg-surface) !important;\n border-radius: 0 0 var(--mj-radius-md) var(--mj-radius-md) !important;\n}\n\n/* ========================================\n Panel Title & Badges\n ======================================== */\n\n.panel-title-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n}\n\n.panel-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n}\n\n.panel-icon {\n font-size: var(--mj-text-sm);\n opacity: 0.7;\n}\n\n.sql-icon {\n color: var(--mj-brand-primary);\n}\n\n::ng-deep .mj-accordion-panel--expanded .panel-icon {\n color: rgba(255, 255, 255, 0.85) !important;\n opacity: 1;\n}\n\n.panel-badge {\n padding: 2px 8px;\n border-radius: var(--mj-radius-lg);\n font-size: var(--mj-text-xs);\n font-weight: 600;\n}\n\n.panel-badge.defined {\n background: var(--mj-status-success);\n color: white;\n}\n\n.panel-badge.count {\n background: var(--mj-brand-primary);\n color: white;\n}\n\n::ng-deep .mj-accordion-panel--expanded .panel-badge.count {\n background: rgba(255, 255, 255, 0.25) !important;\n}\n\n::ng-deep .mj-accordion-panel--expanded .panel-badge.defined {\n background: rgba(255, 255, 255, 0.25) !important;\n}\n\n.filters-help-btn {\n display: flex;\n align-items: center;\n gap: 4px;\n margin-right: 8px;\n font-size: var(--mj-text-xs);\n}\n\n/* ========================================\n Panel Body & Loading\n ======================================== */\n\n.panel-body {\n padding: 16px 0;\n}\n\n.panel-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px;\n}\n\n.panel-toolbar {\n display: flex;\n justify-content: flex-end;\n padding: 0 20px 12px;\n}\n\n/* ========================================\n SQL Panel\n ======================================== */\n\n.sql-panel-content {\n display: flex;\n flex-direction: column;\n}\n\n.sql-editor {\n flex: 1;\n height: 400px;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-sm);\n margin: 16px;\n}\n\n/* Filters Help */\n.filters-help {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 16px;\n margin: 0 16px 16px;\n}\n\n.filters-help-title {\n margin: 0 0 12px 0;\n color: var(--mj-text-primary);\n font-weight: 600;\n font-size: var(--mj-text-sm);\n}\n\n.filters-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 10px;\n}\n\n.filter-card {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 12px;\n transition: transform 0.15s ease, box-shadow 0.15s ease;\n}\n\n.filter-card:hover {\n transform: translateY(-1px);\n box-shadow: var(--mj-shadow-md);\n}\n\n.filter-name {\n font-family: 'Courier New', monospace;\n font-weight: bold;\n color: var(--mj-brand-primary);\n margin-bottom: 4px;\n}\n\n.filter-description {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-secondary);\n margin-bottom: 6px;\n}\n\n.filter-syntax {\n font-family: 'Courier New', monospace;\n font-size: var(--mj-text-xs);\n background: var(--mj-bg-surface-card);\n padding: 6px;\n border-radius: var(--mj-radius-sm);\n margin-bottom: 4px;\n}\n\n.filter-notes {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-disabled);\n font-style: italic;\n}\n\n/* ========================================\n Card Grid (Parameters, Fields, Entities)\n ======================================== */\n\n.card-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));\n gap: 12px;\n padding: 0 20px 20px;\n}\n\n.item-card {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 14px;\n transition: all 0.15s ease;\n cursor: pointer;\n position: relative;\n}\n\n.item-card:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n}\n\n.item-card.required {\n border-left: 3px solid var(--mj-status-warning);\n}\n\n.item-card-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 10px;\n}\n\n.item-name {\n font-weight: 600;\n font-size: var(--mj-text-sm);\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.item-name-icon {\n font-size: var(--mj-text-sm);\n}\n\n.item-name-icon.param-icon {\n color: var(--mj-brand-primary);\n}\n\n.item-name-icon.field-icon {\n color: var(--mj-brand-primary);\n}\n\n.item-name-icon.entity-icon {\n color: var(--mj-status-success);\n}\n\n.item-badges {\n display: flex;\n gap: 6px;\n}\n\n.item-badge {\n padding: 2px 8px;\n border-radius: var(--mj-radius-lg);\n font-size: var(--mj-text-xs);\n font-weight: 600;\n color: white;\n}\n\n.item-badge.required {\n background: var(--mj-status-warning);\n}\n\n.item-badge.type {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.item-badge.sequence {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: color-mix(in srgb, var(--mj-brand-primary) 80%, purple);\n}\n\n.item-card-body {\n color: var(--mj-text-secondary);\n font-size: var(--mj-text-sm);\n}\n\n.item-description {\n margin-bottom: 8px;\n}\n\n.item-meta {\n display: flex;\n gap: 16px;\n font-size: var(--mj-text-xs);\n}\n\n.meta-tag {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n.meta-code {\n background: var(--mj-bg-surface-card);\n padding: 1px 4px;\n border-radius: var(--mj-radius-sm);\n font-size: var(--mj-text-xs);\n}\n\n/* Card actions (edit/delete) */\n.item-actions {\n position: absolute;\n top: 10px;\n right: 10px;\n display: flex;\n gap: 4px;\n opacity: 0;\n transition: opacity 0.15s ease;\n}\n\n.item-card:hover .item-actions {\n opacity: 1;\n}\n\n.item-card-actions {\n display: flex;\n justify-content: flex-end;\n margin-top: 8px;\n}\n\n.item-action-btn {\n background: none;\n border: none;\n padding: 4px 8px;\n border-radius: var(--mj-radius-sm);\n cursor: pointer;\n color: var(--mj-text-disabled);\n transition: all 0.15s ease;\n}\n\n.item-action-btn:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-brand-primary);\n}\n\n.item-action-btn.delete:hover {\n background: color-mix(in srgb, var(--mj-status-error) 8%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n/* Entity dropdown in card */\n.entity-dropdown-wrapper {\n flex: 1;\n margin-left: 12px;\n}\n\n.entity-dropdown {\n width: 100%;\n}\n\n/* ========================================\n Details Grid\n ======================================== */\n\n.details-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 16px;\n padding: 16px 20px;\n}\n\n.detail-item {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.detail-label {\n font-size: var(--mj-text-xs);\n font-weight: 600;\n color: var(--mj-text-disabled);\n display: flex;\n align-items: center;\n gap: 6px;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.detail-value {\n font-size: var(--mj-text-sm);\n color: var(--mj-text-primary);\n}\n\n.detail-tag {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: var(--mj-text-sm);\n}\n\n.detail-tag.positive {\n color: var(--mj-status-success);\n}\n\n.detail-tag.neutral {\n color: var(--mj-text-disabled);\n}\n\n/* ========================================\n Permissions\n ======================================== */\n\n.permissions-list {\n padding: 0 20px;\n}\n\n.permission-card {\n display: flex;\n align-items: center;\n gap: 14px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n padding: 14px 16px;\n margin-bottom: 8px;\n}\n\n.permission-icon {\n font-size: 1.3em;\n color: var(--mj-brand-primary);\n}\n\n.permission-info {\n flex: 1;\n}\n\n.permission-role {\n font-weight: 600;\n color: var(--mj-text-primary);\n font-size: var(--mj-text-sm);\n}\n\n.permission-type {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-disabled);\n}\n\n.permission-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n background: var(--mj-brand-primary);\n color: white;\n padding: 4px 10px;\n border-radius: var(--mj-radius-md);\n font-size: var(--mj-text-xs);\n font-weight: 500;\n}\n\n/* ========================================\n Empty State\n ======================================== */\n\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 20px;\n text-align: center;\n color: var(--mj-text-disabled);\n}\n\n.empty-state-icon {\n font-size: 40px;\n margin-bottom: 14px;\n opacity: 0.25;\n color: var(--mj-text-primary);\n}\n\n.empty-state-title {\n font-size: var(--mj-text-base);\n font-weight: 600;\n margin-bottom: 6px;\n color: var(--mj-text-secondary);\n}\n\n.empty-state-text {\n font-size: var(--mj-text-sm);\n margin-bottom: 16px;\n color: var(--mj-text-disabled);\n}\n\n/* ========================================\n Buttons\n ======================================== */\n\n.add-item-btn {\n background: var(--mj-brand-primary);\n color: white;\n border: none;\n padding: 8px 16px;\n border-radius: var(--mj-radius-md);\n cursor: pointer;\n transition: all 0.15s ease;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n font-size: var(--mj-text-sm);\n}\n\n.add-item-btn:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 85%, black);\n box-shadow: 0 2px 6px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n/* ========================================\n Badge (reused across components)\n ======================================== */\n\n.badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n/* ========================================\n Technical Description Panel\n ======================================== */\n\n.technical-description-textarea {\n width: 100%;\n font-family: 'Consolas', 'Monaco', 'Courier New', monospace;\n font-size: 13px;\n}\n\n.technical-description-preview {\n margin-top: 16px;\n border-top: 1px solid var(--mj-border-default);\n padding-top: 12px;\n}\n\n.preview-label {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\n margin-bottom: 8px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.technical-description-view {\n max-height: 500px;\n overflow-y: auto;\n padding: 12px 16px;\n}\n\n/* Dependent Queries */\n.dependents-icon {\n color: var(--mj-status-warning);\n}\n\n.dependents-description {\n padding: 0 20px 12px;\n font-size: 13px;\n color: var(--mj-text-muted);\n}\n\n.dependents-description code {\n background: var(--mj-bg-surface-sunken);\n padding: 1px 5px;\n border-radius: 3px;\n font-size: 12px;\n}\n\n.dependent-card {\n cursor: pointer;\n border-left: 3px solid var(--mj-status-warning) !important;\n}\n\n.dependent-card:hover {\n border-left-color: var(--mj-status-warning-text) !important;\n background: color-mix(in srgb, var(--mj-status-warning) 8%, var(--mj-bg-surface)) !important;\n}\n\n.dependent-query-icon {\n color: var(--mj-status-warning) !important;\n}\n\n.item-card-footer {\n padding-top: 8px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n margin-top: 8px;\n}\n\n.open-link {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-brand-primary);\n font-weight: 500;\n}\n\n.dependent-card:hover .open-link {\n color: var(--mj-brand-primary-hover);\n}\n"] }]
|
|
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"] }]
|
|
1811
2056
|
}], null, { sqlEditor: [{
|
|
1812
2057
|
type: ViewChild,
|
|
1813
2058
|
args: ['sqlEditor']
|
|
1814
2059
|
}] }); })();
|
|
1815
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJQueryFormComponentExtended, { className: "MJQueryFormComponentExtended", filePath: "src/lib/custom/Queries/query-form.component.ts", lineNumber:
|
|
2060
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJQueryFormComponentExtended, { className: "MJQueryFormComponentExtended", filePath: "src/lib/custom/Queries/query-form.component.ts", lineNumber: 26 }); })();
|
|
1816
2061
|
//# sourceMappingURL=query-form.component.js.map
|