@memberjunction/ng-core-entity-forms 5.22.0 → 5.23.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/add-action-dialog.component.d.ts +4 -5
- package/dist/lib/custom/AIAgents/add-action-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/add-action-dialog.component.js +55 -59
- package/dist/lib/custom/AIAgents/add-action-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/agent-advanced-settings-dialog.component.js +0 -1
- package/dist/lib/custom/AIAgents/agent-advanced-settings-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.d.ts +4 -5
- package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js +54 -71
- package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js +1053 -1096
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-management.service.d.ts +2 -3
- package/dist/lib/custom/AIAgents/ai-agent-management.service.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-management.service.js +39 -82
- package/dist/lib/custom/AIAgents/ai-agent-management.service.js.map +1 -1
- package/dist/lib/custom/AIAgents/create-prompt-dialog.component.d.ts +4 -5
- package/dist/lib/custom/AIAgents/create-prompt-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js +28 -31
- package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.d.ts +4 -5
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js +15 -14
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.d.ts +4 -7
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.js +77 -124
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/new-agent-dialog.service.d.ts +2 -2
- package/dist/lib/custom/AIAgents/new-agent-dialog.service.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/new-agent-dialog.service.js +10 -11
- package/dist/lib/custom/AIAgents/new-agent-dialog.service.js.map +1 -1
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.d.ts +4 -5
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js +18 -18
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.d.ts +4 -5
- package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js +59 -80
- package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts +4 -5
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js +23 -24
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js.map +1 -1
- 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 +862 -906
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js +4 -5
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +448 -499
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-management.service.d.ts +2 -2
- package/dist/lib/custom/AIPrompts/ai-prompt-management.service.d.ts.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-management.service.js +6 -11
- package/dist/lib/custom/AIPrompts/ai-prompt-management.service.js.map +1 -1
- package/dist/lib/custom/AIPrompts/template-selector-dialog.component.d.ts +4 -5
- package/dist/lib/custom/AIPrompts/template-selector-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPrompts/template-selector-dialog.component.js +16 -15
- package/dist/lib/custom/AIPrompts/template-selector-dialog.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-execution-log-form.component.js +160 -166
- package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Actions/action-form.component.js +93 -94
- package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.js +2 -2
- package/dist/lib/custom/Lists/list-form.component.js +61 -63
- package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-category-dialog.component.js +33 -59
- package/dist/lib/custom/Queries/query-category-dialog.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.js +354 -360
- package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-run-dialog.component.js +62 -71
- package/dist/lib/custom/Queries/query-run-dialog.component.js.map +1 -1
- package/dist/lib/custom/Templates/template-param-dialog.component.js +128 -124
- package/dist/lib/custom/Templates/template-param-dialog.component.js.map +1 -1
- package/dist/lib/custom/Templates/template-params-grid.component.d.ts +45 -22
- package/dist/lib/custom/Templates/template-params-grid.component.d.ts.map +1 -1
- package/dist/lib/custom/Templates/template-params-grid.component.js +380 -384
- package/dist/lib/custom/Templates/template-params-grid.component.js.map +1 -1
- package/dist/lib/custom/Templates/templates-form.component.js +34 -36
- package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-form.component.js +8 -9
- package/dist/lib/custom/Tests/test-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-run-feedback-form.component.js +4 -4
- package/dist/lib/custom/Tests/test-run-feedback-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-run-form.component.js +7 -7
- package/dist/lib/custom/Tests/test-run-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-suite-form.component.js +6 -7
- package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-suite-run-form.component.js +6 -7
- package/dist/lib/custom/Tests/test-suite-run-form.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +381 -409
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.js +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js +74 -63
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js +10 -10
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +352 -332
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
- package/dist/lib/custom/custom-forms.module.d.ts +22 -27
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +51 -81
- package/dist/lib/custom/custom-forms.module.js.map +1 -1
- package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts +4 -5
- package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/shared/entity-selector-dialog.component.js +59 -66
- package/dist/lib/custom/shared/entity-selector-dialog.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js +176 -156
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentClientTool/mjaiagentclienttool.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIAgentClientTool/mjaiagentclienttool.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentClientTool/mjaiagentclienttool.form.component.js +65 -0
- package/dist/lib/generated/Entities/MJAIAgentClientTool/mjaiagentclienttool.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIClientToolDefinition/mjaiclienttooldefinition.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIClientToolDefinition/mjaiclienttooldefinition.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIClientToolDefinition/mjaiclienttooldefinition.form.component.js +89 -0
- package/dist/lib/generated/Entities/MJAIClientToolDefinition/mjaiclienttooldefinition.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIModel/mjaimodel.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIModel/mjaimodel.form.component.js +80 -44
- package/dist/lib/generated/Entities/MJAIModel/mjaimodel.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJContentItemTag/mjcontentitemtag.form.component.js +11 -8
- package/dist/lib/generated/Entities/MJContentItemTag/mjcontentitemtag.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJContentSource/mjcontentsource.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJContentSource/mjcontentsource.form.component.js +39 -24
- package/dist/lib/generated/Entities/MJContentSource/mjcontentsource.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJContentType/mjcontenttype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJContentType/mjcontenttype.form.component.js +35 -17
- package/dist/lib/generated/Entities/MJContentType/mjcontenttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJDuplicateRunDetail/mjduplicaterundetail.form.component.js +15 -13
- package/dist/lib/generated/Entities/MJDuplicateRunDetail/mjduplicaterundetail.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJDuplicateRunDetailMatch/mjduplicaterundetailmatch.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJDuplicateRunDetailMatch/mjduplicaterundetailmatch.form.component.js +7 -9
- package/dist/lib/generated/Entities/MJDuplicateRunDetailMatch/mjduplicaterundetailmatch.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityField/mjentityfield.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntityField/mjentityfield.form.component.js +21 -9
- package/dist/lib/generated/Entities/MJEntityField/mjentityfield.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJVectorIndex/mjvectorindex.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJVectorIndex/mjvectorindex.form.component.js +41 -5
- package/dist/lib/generated/Entities/MJVectorIndex/mjvectorindex.form.component.js.map +1 -1
- package/dist/lib/generated/generated-forms.module.d.ts +280 -279
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +102 -142
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/dist/lib/shared/components/template-editor.component.js +14 -15
- package/dist/lib/shared/components/template-editor.component.js.map +1 -1
- package/package.json +34 -41
|
@@ -3,49 +3,46 @@ import { Metadata, RunView } from '@memberjunction/core';
|
|
|
3
3
|
import { MJNotificationService } from '@memberjunction/ng-notifications';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
import * as i1 from "@angular/forms";
|
|
6
|
-
import * as i2 from "@
|
|
7
|
-
|
|
8
|
-
import * as i4 from "@progress/kendo-angular-inputs";
|
|
9
|
-
import * as i5 from "@progress/kendo-angular-buttons";
|
|
10
|
-
function TemplateParamDialogComponent_Conditional_0_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
6
|
+
import * as i2 from "@memberjunction/ng-ui-components";
|
|
7
|
+
function TemplateParamDialogComponent_Conditional_0_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
11
8
|
i0.ɵɵelementStart(0, "div", 7);
|
|
12
9
|
i0.ɵɵelement(1, "i", 14);
|
|
13
10
|
i0.ɵɵelementStart(2, "span");
|
|
14
11
|
i0.ɵɵtext(3, "Loading template parameters...");
|
|
15
12
|
i0.ɵɵelementEnd()();
|
|
16
13
|
} }
|
|
17
|
-
function
|
|
14
|
+
function TemplateParamDialogComponent_Conditional_0_Conditional_15_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
18
15
|
i0.ɵɵelementStart(0, "span", 29);
|
|
19
16
|
i0.ɵɵtext(1);
|
|
20
17
|
i0.ɵɵelementEnd();
|
|
21
18
|
} if (rf & 2) {
|
|
22
19
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
23
20
|
i0.ɵɵadvance();
|
|
24
|
-
i0.ɵɵ
|
|
21
|
+
i0.ɵɵtextInterpolate(ctx_r1.parameters.length);
|
|
25
22
|
} }
|
|
26
|
-
function
|
|
23
|
+
function TemplateParamDialogComponent_Conditional_0_Conditional_15_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
27
24
|
i0.ɵɵelementStart(0, "span", 28);
|
|
28
25
|
i0.ɵɵelement(1, "i", 5);
|
|
29
26
|
i0.ɵɵtext(2, " Template Parameters ");
|
|
30
|
-
i0.ɵɵconditionalCreate(3,
|
|
27
|
+
i0.ɵɵconditionalCreate(3, TemplateParamDialogComponent_Conditional_0_Conditional_15_ng_template_1_Conditional_3_Template, 2, 1, "span", 29);
|
|
31
28
|
i0.ɵɵelementEnd();
|
|
32
29
|
} if (rf & 2) {
|
|
33
30
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
34
31
|
i0.ɵɵadvance(3);
|
|
35
32
|
i0.ɵɵconditional(ctx_r1.parameters.length > 0 ? 3 : -1);
|
|
36
33
|
} }
|
|
37
|
-
function
|
|
34
|
+
function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
38
35
|
i0.ɵɵelement(0, "i", 37);
|
|
39
36
|
} }
|
|
40
|
-
function
|
|
37
|
+
function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
41
38
|
i0.ɵɵelement(0, "i", 38);
|
|
42
39
|
} }
|
|
43
|
-
function
|
|
40
|
+
function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
44
41
|
i0.ɵɵelementStart(0, "span", 39);
|
|
45
42
|
i0.ɵɵtext(1, "*");
|
|
46
43
|
i0.ɵɵelementEnd();
|
|
47
44
|
} }
|
|
48
|
-
function
|
|
45
|
+
function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Conditional_6_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
49
46
|
i0.ɵɵelementStart(0, "div", 46);
|
|
50
47
|
i0.ɵɵtext(1);
|
|
51
48
|
i0.ɵɵelementEnd();
|
|
@@ -54,7 +51,7 @@ function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6
|
|
|
54
51
|
i0.ɵɵadvance();
|
|
55
52
|
i0.ɵɵtextInterpolate1(" ", param_r6.description, " ");
|
|
56
53
|
} }
|
|
57
|
-
function
|
|
54
|
+
function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Conditional_6_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
58
55
|
i0.ɵɵelementStart(0, "div", 47);
|
|
59
56
|
i0.ɵɵtext(1);
|
|
60
57
|
i0.ɵɵelementEnd();
|
|
@@ -63,12 +60,12 @@ function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6
|
|
|
63
60
|
i0.ɵɵadvance();
|
|
64
61
|
i0.ɵɵtextInterpolate1(" Type: ", param_r6.type, " ");
|
|
65
62
|
} }
|
|
66
|
-
function
|
|
63
|
+
function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
67
64
|
i0.ɵɵelementStart(0, "div", 45);
|
|
68
65
|
i0.ɵɵtext(1);
|
|
69
66
|
i0.ɵɵelementEnd();
|
|
70
|
-
i0.ɵɵconditionalCreate(2,
|
|
71
|
-
i0.ɵɵconditionalCreate(3,
|
|
67
|
+
i0.ɵɵconditionalCreate(2, TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Conditional_6_Conditional_2_Template, 2, 1, "div", 46);
|
|
68
|
+
i0.ɵɵconditionalCreate(3, TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Conditional_6_Conditional_3_Template, 2, 1, "div", 47);
|
|
72
69
|
} if (rf & 2) {
|
|
73
70
|
const param_r6 = i0.ɵɵnextContext().$implicit;
|
|
74
71
|
i0.ɵɵadvance();
|
|
@@ -78,11 +75,11 @@ function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6
|
|
|
78
75
|
i0.ɵɵadvance();
|
|
79
76
|
i0.ɵɵconditional(param_r6.type && param_r6.type !== "Scalar" ? 3 : -1);
|
|
80
77
|
} }
|
|
81
|
-
function
|
|
78
|
+
function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
82
79
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
83
|
-
i0.ɵɵelementStart(0, "
|
|
84
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
85
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
80
|
+
i0.ɵɵelementStart(0, "input", 48);
|
|
81
|
+
i0.ɵɵtwoWayListener("ngModelChange", function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Conditional_7_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r7); const param_r6 = i0.ɵɵnextContext().$implicit; i0.ɵɵtwoWayBindingSet(param_r6.key, $event) || (param_r6.key = $event); return i0.ɵɵresetView($event); });
|
|
82
|
+
i0.ɵɵlistener("ngModelChange", function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Conditional_7_Template_input_ngModelChange_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.onParameterChange()); });
|
|
86
83
|
i0.ɵɵelementEnd();
|
|
87
84
|
} if (rf & 2) {
|
|
88
85
|
const param_r6 = i0.ɵɵnextContext().$implicit;
|
|
@@ -90,30 +87,30 @@ function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6
|
|
|
90
87
|
i0.ɵɵtwoWayProperty("ngModel", param_r6.key);
|
|
91
88
|
i0.ɵɵproperty("disabled", ctx_r1.isRunning);
|
|
92
89
|
} }
|
|
93
|
-
function
|
|
90
|
+
function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
94
91
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
95
92
|
i0.ɵɵelementStart(0, "button", 49);
|
|
96
|
-
i0.ɵɵlistener("click", function
|
|
93
|
+
i0.ɵɵlistener("click", function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Conditional_11_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const ɵ$index_68_r9 = i0.ɵɵnextContext().$index; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.removeParameter(ɵ$index_68_r9)); });
|
|
97
94
|
i0.ɵɵelement(1, "i", 50);
|
|
98
95
|
i0.ɵɵelementEnd();
|
|
99
96
|
} if (rf & 2) {
|
|
100
97
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
101
98
|
i0.ɵɵproperty("disabled", ctx_r1.isRunning);
|
|
102
99
|
} }
|
|
103
|
-
function
|
|
100
|
+
function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Template(rf, ctx) { if (rf & 1) {
|
|
104
101
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
105
102
|
i0.ɵɵelementStart(0, "div", 31)(1, "div", 35)(2, "div", 36);
|
|
106
|
-
i0.ɵɵconditionalCreate(3,
|
|
107
|
-
i0.ɵɵconditionalCreate(5,
|
|
103
|
+
i0.ɵɵconditionalCreate(3, TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Conditional_3_Template, 1, 0, "i", 37)(4, TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Conditional_4_Template, 1, 0, "i", 38);
|
|
104
|
+
i0.ɵɵconditionalCreate(5, TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Conditional_5_Template, 2, 0, "span", 39);
|
|
108
105
|
i0.ɵɵelementEnd();
|
|
109
|
-
i0.ɵɵconditionalCreate(6,
|
|
106
|
+
i0.ɵɵconditionalCreate(6, TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Conditional_6_Template, 4, 3)(7, TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Conditional_7_Template, 1, 2, "input", 40);
|
|
110
107
|
i0.ɵɵelementEnd();
|
|
111
|
-
i0.ɵɵelementStart(8, "div", 41)(9, "
|
|
112
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
113
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
108
|
+
i0.ɵɵelementStart(8, "div", 41)(9, "textarea", 42);
|
|
109
|
+
i0.ɵɵtwoWayListener("ngModelChange", function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Template_textarea_ngModelChange_9_listener($event) { const param_r6 = i0.ɵɵrestoreView(_r5).$implicit; i0.ɵɵtwoWayBindingSet(param_r6.value, $event) || (param_r6.value = $event); return i0.ɵɵresetView($event); });
|
|
110
|
+
i0.ɵɵlistener("ngModelChange", function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Template_textarea_ngModelChange_9_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onParameterChange()); });
|
|
114
111
|
i0.ɵɵelementEnd()();
|
|
115
112
|
i0.ɵɵelementStart(10, "div", 43);
|
|
116
|
-
i0.ɵɵconditionalCreate(11,
|
|
113
|
+
i0.ɵɵconditionalCreate(11, TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Conditional_11_Template, 2, 1, "button", 44);
|
|
117
114
|
i0.ɵɵelementEnd()();
|
|
118
115
|
} if (rf & 2) {
|
|
119
116
|
const param_r6 = ctx.$implicit;
|
|
@@ -130,7 +127,7 @@ function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6
|
|
|
130
127
|
i0.ɵɵadvance(2);
|
|
131
128
|
i0.ɵɵconditional(!param_r6.isFromTemplate && ctx_r1.parameters.length > 1 ? 11 : -1);
|
|
132
129
|
} }
|
|
133
|
-
function
|
|
130
|
+
function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
134
131
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
135
132
|
i0.ɵɵelementStart(0, "div", 20)(1, "div", 30)(2, "div");
|
|
136
133
|
i0.ɵɵtext(3, "Parameter Name");
|
|
@@ -141,9 +138,9 @@ function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6
|
|
|
141
138
|
i0.ɵɵelementStart(6, "div");
|
|
142
139
|
i0.ɵɵtext(7, "Actions");
|
|
143
140
|
i0.ɵɵelementEnd()();
|
|
144
|
-
i0.ɵɵrepeaterCreate(8,
|
|
141
|
+
i0.ɵɵrepeaterCreate(8, TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Template, 12, 7, "div", 31, i0.ɵɵrepeaterTrackByIndex);
|
|
145
142
|
i0.ɵɵelementStart(10, "div", 32)(11, "button", 33);
|
|
146
|
-
i0.ɵɵlistener("click", function
|
|
143
|
+
i0.ɵɵlistener("click", function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.addParameter()); });
|
|
147
144
|
i0.ɵɵelement(12, "i", 34);
|
|
148
145
|
i0.ɵɵtext(13, " Add Parameter ");
|
|
149
146
|
i0.ɵɵelementEnd()()();
|
|
@@ -154,7 +151,7 @@ function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6
|
|
|
154
151
|
i0.ɵɵadvance(3);
|
|
155
152
|
i0.ɵɵproperty("disabled", ctx_r1.isRunning);
|
|
156
153
|
} }
|
|
157
|
-
function
|
|
154
|
+
function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
158
155
|
const _r10 = i0.ɵɵgetCurrentView();
|
|
159
156
|
i0.ɵɵelementStart(0, "div", 21);
|
|
160
157
|
i0.ɵɵelement(1, "i", 19);
|
|
@@ -162,7 +159,7 @@ function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_7
|
|
|
162
159
|
i0.ɵɵtext(3, "No parameters defined yet");
|
|
163
160
|
i0.ɵɵelementEnd();
|
|
164
161
|
i0.ɵɵelementStart(4, "button", 51);
|
|
165
|
-
i0.ɵɵlistener("click", function
|
|
162
|
+
i0.ɵɵlistener("click", function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_7_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.addParameter()); });
|
|
166
163
|
i0.ɵɵelement(5, "i", 34);
|
|
167
164
|
i0.ɵɵtext(6, " Add First Parameter ");
|
|
168
165
|
i0.ɵɵelementEnd()();
|
|
@@ -171,51 +168,53 @@ function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_7
|
|
|
171
168
|
i0.ɵɵadvance(4);
|
|
172
169
|
i0.ɵɵproperty("disabled", ctx_r1.isRunning);
|
|
173
170
|
} }
|
|
174
|
-
function
|
|
171
|
+
function TemplateParamDialogComponent_Conditional_0_Conditional_15_ng_template_9_Template(rf, ctx) { if (rf & 1) {
|
|
175
172
|
i0.ɵɵelementStart(0, "span", 28);
|
|
176
173
|
i0.ɵɵelement(1, "i", 52);
|
|
177
174
|
i0.ɵɵtext(2, " Context Data (JSON) ");
|
|
178
175
|
i0.ɵɵelementEnd();
|
|
179
176
|
} }
|
|
180
|
-
function
|
|
177
|
+
function TemplateParamDialogComponent_Conditional_0_Conditional_15_ng_template_15_Conditional_3_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
181
178
|
i0.ɵɵelementStart(0, "span", 54);
|
|
182
|
-
i0.ɵɵ
|
|
179
|
+
i0.ɵɵelement(1, "i", 56);
|
|
180
|
+
i0.ɵɵtext(2, " Success");
|
|
183
181
|
i0.ɵɵelementEnd();
|
|
184
182
|
} }
|
|
185
|
-
function
|
|
183
|
+
function TemplateParamDialogComponent_Conditional_0_Conditional_15_ng_template_15_Conditional_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
186
184
|
i0.ɵɵelementStart(0, "span", 55);
|
|
187
|
-
i0.ɵɵ
|
|
185
|
+
i0.ɵɵelement(1, "i", 50);
|
|
186
|
+
i0.ɵɵtext(2, " Failed");
|
|
188
187
|
i0.ɵɵelementEnd();
|
|
189
188
|
} }
|
|
190
|
-
function
|
|
191
|
-
i0.ɵɵconditionalCreate(0,
|
|
189
|
+
function TemplateParamDialogComponent_Conditional_0_Conditional_15_ng_template_15_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
190
|
+
i0.ɵɵconditionalCreate(0, TemplateParamDialogComponent_Conditional_0_Conditional_15_ng_template_15_Conditional_3_Conditional_0_Template, 3, 0, "span", 54)(1, TemplateParamDialogComponent_Conditional_0_Conditional_15_ng_template_15_Conditional_3_Conditional_1_Template, 3, 0, "span", 55);
|
|
192
191
|
} if (rf & 2) {
|
|
193
192
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
194
193
|
i0.ɵɵconditional(ctx_r1.testResult.success ? 0 : 1);
|
|
195
194
|
} }
|
|
196
|
-
function
|
|
195
|
+
function TemplateParamDialogComponent_Conditional_0_Conditional_15_ng_template_15_Template(rf, ctx) { if (rf & 1) {
|
|
197
196
|
i0.ɵɵelementStart(0, "span", 28);
|
|
198
197
|
i0.ɵɵelement(1, "i", 53);
|
|
199
198
|
i0.ɵɵtext(2, " Test Results ");
|
|
200
|
-
i0.ɵɵconditionalCreate(3,
|
|
199
|
+
i0.ɵɵconditionalCreate(3, TemplateParamDialogComponent_Conditional_0_Conditional_15_ng_template_15_Conditional_3_Template, 2, 1);
|
|
201
200
|
i0.ɵɵelementEnd();
|
|
202
201
|
} if (rf & 2) {
|
|
203
202
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
204
203
|
i0.ɵɵadvance(3);
|
|
205
204
|
i0.ɵɵconditional(ctx_r1.testResult ? 3 : -1);
|
|
206
205
|
} }
|
|
207
|
-
function
|
|
206
|
+
function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
208
207
|
i0.ɵɵelementStart(0, "div", 25);
|
|
209
208
|
i0.ɵɵelement(1, "i", 14);
|
|
210
209
|
i0.ɵɵelementStart(2, "span");
|
|
211
210
|
i0.ɵɵtext(3, "Running template...");
|
|
212
211
|
i0.ɵɵelementEnd()();
|
|
213
212
|
} }
|
|
214
|
-
function
|
|
215
|
-
i0.ɵɵelementStart(0, "div",
|
|
213
|
+
function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_18_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
214
|
+
i0.ɵɵelementStart(0, "div", 58)(1, "div", 59);
|
|
216
215
|
i0.ɵɵtext(2, "EXECUTION TIME");
|
|
217
216
|
i0.ɵɵelementEnd();
|
|
218
|
-
i0.ɵɵelementStart(3, "div",
|
|
217
|
+
i0.ɵɵelementStart(3, "div", 60);
|
|
219
218
|
i0.ɵɵtext(4);
|
|
220
219
|
i0.ɵɵelementEnd()();
|
|
221
220
|
} if (rf & 2) {
|
|
@@ -223,12 +222,12 @@ function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_1
|
|
|
223
222
|
i0.ɵɵadvance(4);
|
|
224
223
|
i0.ɵɵtextInterpolate1("", ctx_r1.testResult.executionTimeMs, "ms");
|
|
225
224
|
} }
|
|
226
|
-
function
|
|
227
|
-
i0.ɵɵelementStart(0, "div",
|
|
228
|
-
i0.ɵɵelement(2, "i",
|
|
225
|
+
function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_18_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
226
|
+
i0.ɵɵelementStart(0, "div", 63)(1, "h6", 64);
|
|
227
|
+
i0.ɵɵelement(2, "i", 65);
|
|
229
228
|
i0.ɵɵtext(3, " Template Output ");
|
|
230
229
|
i0.ɵɵelementEnd();
|
|
231
|
-
i0.ɵɵelementStart(4, "div",
|
|
230
|
+
i0.ɵɵelementStart(4, "div", 66);
|
|
232
231
|
i0.ɵɵtext(5);
|
|
233
232
|
i0.ɵɵelementEnd()();
|
|
234
233
|
} if (rf & 2) {
|
|
@@ -236,12 +235,12 @@ function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_1
|
|
|
236
235
|
i0.ɵɵadvance(5);
|
|
237
236
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.testResult.output, " ");
|
|
238
237
|
} }
|
|
239
|
-
function
|
|
240
|
-
i0.ɵɵelementStart(0, "div",
|
|
241
|
-
i0.ɵɵelement(2, "i",
|
|
238
|
+
function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_18_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
239
|
+
i0.ɵɵelementStart(0, "div", 63)(1, "h6", 64);
|
|
240
|
+
i0.ɵɵelement(2, "i", 67);
|
|
242
241
|
i0.ɵɵtext(3, " Error Details ");
|
|
243
242
|
i0.ɵɵelementEnd();
|
|
244
|
-
i0.ɵɵelementStart(4, "div",
|
|
243
|
+
i0.ɵɵelementStart(4, "div", 68);
|
|
245
244
|
i0.ɵɵtext(5);
|
|
246
245
|
i0.ɵɵelementEnd()();
|
|
247
246
|
} if (rf & 2) {
|
|
@@ -249,24 +248,24 @@ function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_1
|
|
|
249
248
|
i0.ɵɵadvance(5);
|
|
250
249
|
i0.ɵɵtextInterpolate(ctx_r1.testResult.error);
|
|
251
250
|
} }
|
|
252
|
-
function
|
|
251
|
+
function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
253
252
|
const _r11 = i0.ɵɵgetCurrentView();
|
|
254
|
-
i0.ɵɵelementStart(0, "div", 26)(1, "div",
|
|
253
|
+
i0.ɵɵelementStart(0, "div", 26)(1, "div", 57)(2, "div", 58)(3, "div", 59);
|
|
255
254
|
i0.ɵɵtext(4, "STATUS");
|
|
256
255
|
i0.ɵɵelementEnd();
|
|
257
|
-
i0.ɵɵelementStart(5, "div",
|
|
256
|
+
i0.ɵɵelementStart(5, "div", 60);
|
|
258
257
|
i0.ɵɵtext(6);
|
|
259
258
|
i0.ɵɵelementEnd()();
|
|
260
|
-
i0.ɵɵconditionalCreate(7,
|
|
261
|
-
i0.ɵɵelementStart(8, "div",
|
|
259
|
+
i0.ɵɵconditionalCreate(7, TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_18_Conditional_7_Template, 5, 1, "div", 58);
|
|
260
|
+
i0.ɵɵelementStart(8, "div", 58)(9, "div", 59);
|
|
262
261
|
i0.ɵɵtext(10, "ACTIONS");
|
|
263
262
|
i0.ɵɵelementEnd();
|
|
264
|
-
i0.ɵɵelementStart(11, "button",
|
|
265
|
-
i0.ɵɵlistener("click", function
|
|
266
|
-
i0.ɵɵelement(12, "i",
|
|
263
|
+
i0.ɵɵelementStart(11, "button", 61);
|
|
264
|
+
i0.ɵɵlistener("click", function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_18_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.saveResults()); });
|
|
265
|
+
i0.ɵɵelement(12, "i", 62);
|
|
267
266
|
i0.ɵɵelementEnd()()();
|
|
268
267
|
i0.ɵɵelementStart(13, "div", 26);
|
|
269
|
-
i0.ɵɵconditionalCreate(14,
|
|
268
|
+
i0.ɵɵconditionalCreate(14, TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_18_Conditional_14_Template, 6, 1, "div", 63)(15, TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_18_Conditional_15_Template, 6, 1, "div", 63);
|
|
270
269
|
i0.ɵɵelementEnd()();
|
|
271
270
|
} if (rf & 2) {
|
|
272
271
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -279,120 +278,125 @@ function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_1
|
|
|
279
278
|
i0.ɵɵadvance(7);
|
|
280
279
|
i0.ɵɵconditional(ctx_r1.testResult.success && ctx_r1.testResult.output ? 14 : !ctx_r1.testResult.success && ctx_r1.testResult.error ? 15 : -1);
|
|
281
280
|
} }
|
|
282
|
-
function
|
|
283
|
-
i0.ɵɵelementStart(0, "div", 27)(1, "div",
|
|
284
|
-
i0.ɵɵelement(2, "i",
|
|
281
|
+
function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
282
|
+
i0.ɵɵelementStart(0, "div", 27)(1, "div", 69);
|
|
283
|
+
i0.ɵɵelement(2, "i", 70);
|
|
285
284
|
i0.ɵɵelementStart(3, "p");
|
|
286
285
|
i0.ɵɵtext(4, "No test results yet. Run the template to see results here.");
|
|
287
286
|
i0.ɵɵelementEnd()()();
|
|
288
287
|
} }
|
|
289
|
-
function
|
|
288
|
+
function TemplateParamDialogComponent_Conditional_0_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
290
289
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
291
|
-
i0.ɵɵelementStart(0, "
|
|
292
|
-
i0.ɵɵtwoWayListener("
|
|
293
|
-
i0.ɵɵtemplate(1,
|
|
290
|
+
i0.ɵɵelementStart(0, "mj-accordion-panel", 15);
|
|
291
|
+
i0.ɵɵtwoWayListener("ExpandedChange", function TemplateParamDialogComponent_Conditional_0_Conditional_15_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.parametersExpanded, $event) || (ctx_r1.parametersExpanded = $event); return i0.ɵɵresetView($event); });
|
|
292
|
+
i0.ɵɵtemplate(1, TemplateParamDialogComponent_Conditional_0_Conditional_15_ng_template_1_Template, 4, 1, "ng-template", 16);
|
|
294
293
|
i0.ɵɵelementStart(2, "div", 17)(3, "div", 18);
|
|
295
294
|
i0.ɵɵelement(4, "i", 19);
|
|
296
295
|
i0.ɵɵtext(5, " Configure parameter values for template testing. Values can be JSON objects, strings, or numbers. ");
|
|
297
296
|
i0.ɵɵelementEnd();
|
|
298
|
-
i0.ɵɵconditionalCreate(6,
|
|
297
|
+
i0.ɵɵconditionalCreate(6, TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_Template, 14, 1, "div", 20)(7, TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_7_Template, 7, 1, "div", 21);
|
|
299
298
|
i0.ɵɵelementEnd()();
|
|
300
|
-
i0.ɵɵelementStart(8, "
|
|
301
|
-
i0.ɵɵtwoWayListener("
|
|
302
|
-
i0.ɵɵtemplate(9,
|
|
299
|
+
i0.ɵɵelementStart(8, "mj-accordion-panel", 15);
|
|
300
|
+
i0.ɵɵtwoWayListener("ExpandedChange", function TemplateParamDialogComponent_Conditional_0_Conditional_15_Template_mj_accordion_panel_ExpandedChange_8_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.jsonPreviewExpanded, $event) || (ctx_r1.jsonPreviewExpanded = $event); return i0.ɵɵresetView($event); });
|
|
301
|
+
i0.ɵɵtemplate(9, TemplateParamDialogComponent_Conditional_0_Conditional_15_ng_template_9_Template, 3, 0, "ng-template", 16);
|
|
303
302
|
i0.ɵɵelementStart(10, "div", 17)(11, "div", 22)(12, "pre");
|
|
304
303
|
i0.ɵɵtext(13);
|
|
305
304
|
i0.ɵɵelementEnd()()()();
|
|
306
|
-
i0.ɵɵelementStart(14, "
|
|
307
|
-
i0.ɵɵtwoWayListener("
|
|
308
|
-
i0.ɵɵtemplate(15,
|
|
305
|
+
i0.ɵɵelementStart(14, "mj-accordion-panel", 23);
|
|
306
|
+
i0.ɵɵtwoWayListener("ExpandedChange", function TemplateParamDialogComponent_Conditional_0_Conditional_15_Template_mj_accordion_panel_ExpandedChange_14_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.resultsExpanded, $event) || (ctx_r1.resultsExpanded = $event); return i0.ɵɵresetView($event); });
|
|
307
|
+
i0.ɵɵtemplate(15, TemplateParamDialogComponent_Conditional_0_Conditional_15_ng_template_15_Template, 4, 1, "ng-template", 16);
|
|
309
308
|
i0.ɵɵelementStart(16, "div", 24);
|
|
310
|
-
i0.ɵɵconditionalCreate(17,
|
|
309
|
+
i0.ɵɵconditionalCreate(17, TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_17_Template, 4, 0, "div", 25)(18, TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_18_Template, 16, 7, "div", 26)(19, TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_19_Template, 5, 0, "div", 27);
|
|
311
310
|
i0.ɵɵelementEnd()();
|
|
312
311
|
} if (rf & 2) {
|
|
313
312
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
314
|
-
i0.ɵɵtwoWayProperty("
|
|
313
|
+
i0.ɵɵtwoWayProperty("Expanded", ctx_r1.parametersExpanded);
|
|
315
314
|
i0.ɵɵadvance(6);
|
|
316
315
|
i0.ɵɵconditional(ctx_r1.parameters.length > 0 ? 6 : 7);
|
|
317
316
|
i0.ɵɵadvance(2);
|
|
318
|
-
i0.ɵɵtwoWayProperty("
|
|
317
|
+
i0.ɵɵtwoWayProperty("Expanded", ctx_r1.jsonPreviewExpanded);
|
|
319
318
|
i0.ɵɵadvance(5);
|
|
320
319
|
i0.ɵɵtextInterpolate(ctx_r1.parametersAsJson);
|
|
321
320
|
i0.ɵɵadvance();
|
|
322
|
-
i0.ɵɵtwoWayProperty("
|
|
321
|
+
i0.ɵɵtwoWayProperty("Expanded", ctx_r1.resultsExpanded);
|
|
323
322
|
i0.ɵɵadvance(3);
|
|
324
323
|
i0.ɵɵconditional(ctx_r1.isRunning ? 17 : ctx_r1.testResult ? 18 : 19);
|
|
325
324
|
} }
|
|
326
|
-
function
|
|
325
|
+
function TemplateParamDialogComponent_Conditional_0_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
327
326
|
const _r12 = i0.ɵɵgetCurrentView();
|
|
328
|
-
i0.ɵɵelementStart(0, "button",
|
|
329
|
-
i0.ɵɵlistener("click", function
|
|
330
|
-
i0.ɵɵelement(1, "i",
|
|
327
|
+
i0.ɵɵelementStart(0, "button", 71);
|
|
328
|
+
i0.ɵɵlistener("click", function TemplateParamDialogComponent_Conditional_0_Conditional_19_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.updateTemplateParams()); });
|
|
329
|
+
i0.ɵɵelement(1, "i", 72);
|
|
331
330
|
i0.ɵɵtext(2, " Update Template Params ");
|
|
332
331
|
i0.ɵɵelementEnd();
|
|
333
332
|
} if (rf & 2) {
|
|
334
333
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
335
334
|
i0.ɵɵproperty("disabled", ctx_r1.isRunning);
|
|
336
335
|
} }
|
|
337
|
-
function
|
|
336
|
+
function TemplateParamDialogComponent_Conditional_0_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
338
337
|
const _r13 = i0.ɵɵgetCurrentView();
|
|
339
|
-
i0.ɵɵelementStart(0, "button",
|
|
340
|
-
i0.ɵɵlistener("click", function
|
|
341
|
-
i0.ɵɵelement(1, "i",
|
|
338
|
+
i0.ɵɵelementStart(0, "button", 11);
|
|
339
|
+
i0.ɵɵlistener("click", function TemplateParamDialogComponent_Conditional_0_Conditional_23_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.saveResults()); });
|
|
340
|
+
i0.ɵɵelement(1, "i", 62);
|
|
342
341
|
i0.ɵɵtext(2, " Save Results ");
|
|
343
342
|
i0.ɵɵelementEnd();
|
|
344
343
|
} }
|
|
345
|
-
function
|
|
344
|
+
function TemplateParamDialogComponent_Conditional_0_Conditional_25_Template(rf, ctx) { if (rf & 1) {
|
|
346
345
|
i0.ɵɵelement(0, "i", 14);
|
|
347
346
|
i0.ɵɵtext(1, " Running... ");
|
|
348
347
|
} }
|
|
349
|
-
function
|
|
348
|
+
function TemplateParamDialogComponent_Conditional_0_Conditional_26_Template(rf, ctx) { if (rf & 1) {
|
|
350
349
|
i0.ɵɵelement(0, "i", 73);
|
|
351
350
|
i0.ɵɵtext(1, " Run Template ");
|
|
352
351
|
} }
|
|
353
352
|
function TemplateParamDialogComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
354
353
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
355
|
-
i0.ɵɵelementStart(0, "
|
|
356
|
-
i0.ɵɵlistener("
|
|
357
|
-
i0.ɵɵelementStart(1, "
|
|
358
|
-
i0.ɵɵ
|
|
359
|
-
i0.ɵɵ
|
|
360
|
-
i0.ɵɵ
|
|
354
|
+
i0.ɵɵelementStart(0, "mj-dialog", 1);
|
|
355
|
+
i0.ɵɵlistener("Close", function TemplateParamDialogComponent_Conditional_0_Template_mj_dialog_Close_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.close()); });
|
|
356
|
+
i0.ɵɵelementStart(1, "mj-dialog-titlebar");
|
|
357
|
+
i0.ɵɵtext(2);
|
|
358
|
+
i0.ɵɵelementEnd();
|
|
359
|
+
i0.ɵɵelementStart(3, "div", 2)(4, "div", 3)(5, "div", 4);
|
|
360
|
+
i0.ɵɵelement(6, "i", 5);
|
|
361
|
+
i0.ɵɵelementStart(7, "h5");
|
|
362
|
+
i0.ɵɵtext(8, "Template Testing");
|
|
361
363
|
i0.ɵɵelementEnd()();
|
|
362
|
-
i0.ɵɵelementStart(
|
|
363
|
-
i0.ɵɵtext(
|
|
364
|
-
i0.ɵɵelementStart(
|
|
365
|
-
i0.ɵɵtext(
|
|
364
|
+
i0.ɵɵelementStart(9, "p");
|
|
365
|
+
i0.ɵɵtext(10, " Configure parameter values for testing. Parameters with ");
|
|
366
|
+
i0.ɵɵelementStart(11, "span", 6);
|
|
367
|
+
i0.ɵɵtext(12, "*");
|
|
366
368
|
i0.ɵɵelementEnd();
|
|
367
|
-
i0.ɵɵtext(
|
|
369
|
+
i0.ɵɵtext(13, " are required. ");
|
|
368
370
|
i0.ɵɵelementEnd()();
|
|
369
|
-
i0.ɵɵconditionalCreate(
|
|
371
|
+
i0.ɵɵconditionalCreate(14, TemplateParamDialogComponent_Conditional_0_Conditional_14_Template, 4, 0, "div", 7)(15, TemplateParamDialogComponent_Conditional_0_Conditional_15_Template, 20, 6);
|
|
370
372
|
i0.ɵɵelementEnd();
|
|
371
|
-
i0.ɵɵelementStart(
|
|
372
|
-
i0.ɵɵconditionalCreate(
|
|
373
|
+
i0.ɵɵelementStart(16, "mj-dialog-actions")(17, "div", 8)(18, "div");
|
|
374
|
+
i0.ɵɵconditionalCreate(19, TemplateParamDialogComponent_Conditional_0_Conditional_19_Template, 3, 1, "button", 9);
|
|
373
375
|
i0.ɵɵelementEnd();
|
|
374
|
-
i0.ɵɵelementStart(
|
|
375
|
-
i0.ɵɵlistener("click", function
|
|
376
|
-
i0.ɵɵtext(
|
|
376
|
+
i0.ɵɵelementStart(20, "div", 10)(21, "button", 11);
|
|
377
|
+
i0.ɵɵlistener("click", function TemplateParamDialogComponent_Conditional_0_Template_button_click_21_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.close()); });
|
|
378
|
+
i0.ɵɵtext(22, " Close ");
|
|
377
379
|
i0.ɵɵelementEnd();
|
|
378
|
-
i0.ɵɵconditionalCreate(
|
|
379
|
-
i0.ɵɵelementStart(
|
|
380
|
-
i0.ɵɵlistener("click", function
|
|
381
|
-
i0.ɵɵconditionalCreate(
|
|
380
|
+
i0.ɵɵconditionalCreate(23, TemplateParamDialogComponent_Conditional_0_Conditional_23_Template, 3, 0, "button", 12);
|
|
381
|
+
i0.ɵɵelementStart(24, "button", 13);
|
|
382
|
+
i0.ɵɵlistener("click", function TemplateParamDialogComponent_Conditional_0_Template_button_click_24_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.runTemplate()); });
|
|
383
|
+
i0.ɵɵconditionalCreate(25, TemplateParamDialogComponent_Conditional_0_Conditional_25_Template, 2, 0)(26, TemplateParamDialogComponent_Conditional_0_Conditional_26_Template, 2, 0);
|
|
382
384
|
i0.ɵɵelementEnd()()()()();
|
|
383
385
|
} if (rf & 2) {
|
|
384
386
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
385
|
-
i0.ɵɵproperty("
|
|
387
|
+
i0.ɵɵproperty("Visible", true)("Width", 800);
|
|
388
|
+
i0.ɵɵadvance(2);
|
|
389
|
+
i0.ɵɵtextInterpolate1("Test Template: ", (ctx_r1.template == null ? null : ctx_r1.template.Name) || "Unknown");
|
|
386
390
|
i0.ɵɵadvance(12);
|
|
387
|
-
i0.ɵɵconditional(ctx_r1.isLoading ?
|
|
391
|
+
i0.ɵɵconditional(ctx_r1.isLoading ? 14 : 15);
|
|
388
392
|
i0.ɵɵadvance(5);
|
|
389
|
-
i0.ɵɵconditional(ctx_r1.hasUnsavedParameters ?
|
|
393
|
+
i0.ɵɵconditional(ctx_r1.hasUnsavedParameters ? 19 : -1);
|
|
390
394
|
i0.ɵɵadvance(4);
|
|
391
|
-
i0.ɵɵconditional(ctx_r1.testResult ?
|
|
395
|
+
i0.ɵɵconditional(ctx_r1.testResult ? 23 : -1);
|
|
392
396
|
i0.ɵɵadvance();
|
|
393
397
|
i0.ɵɵproperty("disabled", ctx_r1.isRunning || ctx_r1.isLoading);
|
|
394
398
|
i0.ɵɵadvance();
|
|
395
|
-
i0.ɵɵconditional(ctx_r1.isRunning ?
|
|
399
|
+
i0.ɵɵconditional(ctx_r1.isRunning ? 25 : 26);
|
|
396
400
|
} }
|
|
397
401
|
export class TemplateParamDialogComponent {
|
|
398
402
|
constructor() {
|
|
@@ -644,15 +648,15 @@ export class TemplateParamDialogComponent {
|
|
|
644
648
|
return JSON.stringify(contextData, null, 2);
|
|
645
649
|
}
|
|
646
650
|
static { this.ɵfac = function TemplateParamDialogComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TemplateParamDialogComponent)(); }; }
|
|
647
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TemplateParamDialogComponent, selectors: [["mj-template-param-dialog"]], inputs: { template: "template", isVisible: "isVisible" }, outputs: { isVisibleChange: "isVisibleChange", onClose: "onClose" }, standalone: false, decls: 1, vars: 1, consts: [[3, "
|
|
648
|
-
i0.ɵɵconditionalCreate(0, TemplateParamDialogComponent_Conditional_0_Template,
|
|
651
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TemplateParamDialogComponent, selectors: [["mj-template-param-dialog"]], inputs: { template: "template", isVisible: "isVisible" }, outputs: { isVisibleChange: "isVisibleChange", onClose: "onClose" }, standalone: false, decls: 1, vars: 1, consts: [[3, "Visible", "Width"], [3, "Close", "Visible", "Width"], [1, "dialog-content", 2, "display", "flex", "flex-direction", "column", "height", "100%", "font-family", "'Segoe UI', Tahoma, Geneva, Verdana, sans-serif"], [1, "dlg-header"], [1, "dlg-header-row"], [1, "fa-solid", "fa-sliders"], [1, "required-marker"], [1, "dlg-loading"], [2, "display", "flex", "justify-content", "space-between", "align-items", "center", "width", "100%"], ["mjButton", "", "variant", "outline", 3, "disabled"], [2, "display", "flex", "gap", "8px"], ["mjButton", "", "variant", "outline", 3, "click"], ["mjButton", "", "variant", "outline"], ["mjButton", "", "variant", "primary", 3, "click", "disabled"], [1, "fa-solid", "fa-spinner", "fa-spin"], [2, "margin-bottom", "16px", "flex-shrink", "0", 3, "ExpandedChange", "Expanded"], ["mjAccordionTitle", ""], [2, "padding", "12px 0"], [1, "dlg-info-text"], [1, "fa-solid", "fa-info-circle"], [1, "params-table"], [1, "no-params-state"], [1, "json-preview-box"], [2, "margin-bottom", "16px", "flex", "1", "display", "flex", "flex-direction", "column", 3, "ExpandedChange", "Expanded"], [2, "padding", "12px 0", "flex", "1", "display", "flex", "flex-direction", "column"], [1, "dlg-loading", 2, "flex", "1"], [2, "flex", "1", "display", "flex", "flex-direction", "column"], [1, "no-results-state"], [1, "dlg-panel-title"], [1, "count-badge"], [1, "params-table-header"], [1, "params-table-row"], [1, "add-param-row"], ["mjButton", "", "variant", "success", "size", "sm", 3, "click", "disabled"], [1, "fa-solid", "fa-plus"], [1, "param-name", 2, "display", "flex", "flex-direction", "column"], [2, "display", "flex", "align-items", "center", "gap", "4px", "margin-bottom", "4px"], ["title", "From template definition", 1, "fa-solid", "fa-database", "param-source-icon-template"], ["title", "Custom parameter", 1, "fa-solid", "fa-edit", "param-source-icon-custom"], [1, "param-required-marker"], ["type", "text", "placeholder", "Parameter name...", 1, "mj-input", 2, "font-family", "'Courier New', monospace", "width", "100%", 3, "ngModel", "disabled"], [1, "param-value"], ["placeholder", "Enter value (JSON strings, numbers, objects)...", 1, "mj-textarea", 2, "font-family", "'Courier New', monospace", "font-size", "0.9em", "width", "100%", 3, "ngModelChange", "ngModel", "rows", "disabled"], [1, "param-actions"], ["mjButton", "", "variant", "danger", "size", "sm", "title", "Remove parameter", 3, "disabled"], [1, "param-key-text"], [1, "param-description-text"], [1, "param-type-text"], ["type", "text", "placeholder", "Parameter name...", 1, "mj-input", 2, "font-family", "'Courier New', monospace", "width", "100%", 3, "ngModelChange", "ngModel", "disabled"], ["mjButton", "", "variant", "danger", "size", "sm", "title", "Remove parameter", 3, "click", "disabled"], [1, "fa-solid", "fa-times"], ["mjButton", "", "variant", "primary", "size", "sm", 3, "click", "disabled"], [1, "fa-solid", "fa-code"], [1, "fa-solid", "fa-chart-line"], [1, "result-badge", "success"], [1, "result-badge", "error"], [1, "fa-solid", "fa-check"], [1, "result-stats"], [1, "result-stat"], [1, "result-stat-label"], [1, "result-stat-value"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Save results to file", 3, "click"], [1, "fa-solid", "fa-download"], [2, "margin-bottom", "12px", "flex", "1", "display", "flex", "flex-direction", "column"], [1, "output-header"], [1, "fa-solid", "fa-check-circle", "success-icon"], [1, "output-box"], [1, "fa-solid", "fa-exclamation-triangle", "error-icon"], [1, "error-output-box"], [2, "text-align", "center"], [1, "fa-solid", "fa-play-circle"], ["mjButton", "", "variant", "outline", 3, "click", "disabled"], [1, "fa-solid", "fa-save"], [1, "fa-solid", "fa-play"]], template: function TemplateParamDialogComponent_Template(rf, ctx) { if (rf & 1) {
|
|
652
|
+
i0.ɵɵconditionalCreate(0, TemplateParamDialogComponent_Conditional_0_Template, 27, 8, "mj-dialog", 0);
|
|
649
653
|
} if (rf & 2) {
|
|
650
654
|
i0.ɵɵconditional(ctx._isVisible ? 0 : -1);
|
|
651
|
-
} }, dependencies: [i1.NgControlStatus, i1.NgModel, i2.ExpansionPanelComponent, i2.ExpansionPanelTitleDirective, i3.DialogComponent, i3.DialogActionsComponent, i4.TextBoxComponent, i4.TextAreaComponent, i5.ButtonComponent], styles: [".dialog-content[_ngcontent-%COMP%] {\n min-height: 500px;\n max-height: 650px;\n}\n\n.parameter-row[_ngcontent-%COMP%]:hover {\n background-color: var(--mj-bg-surface-card) !important;\n}\n\n.parameter-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.param-name[_ngcontent-%COMP%], \n.param-value[_ngcontent-%COMP%] {\n min-width: 0;\n}\n\n.param-name[_ngcontent-%COMP%] kendo-textbox[_ngcontent-%COMP%], \n.param-value[_ngcontent-%COMP%] kendo-textarea[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n.json-preview[_ngcontent-%COMP%] pre[_ngcontent-%COMP%] {\n line-height: 1.3;\n}\n\n.test-results[_ngcontent-%COMP%] {\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n}\n\n.result-content[_ngcontent-%COMP%] pre[_ngcontent-%COMP%] {\n line-height: 1.4;\n}\n\n\n\n.parameters-list[_ngcontent-%COMP%]::-webkit-scrollbar, \n.result-content[_ngcontent-%COMP%]::-webkit-scrollbar, \n.json-preview[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]::-webkit-scrollbar {\n width: 6px;\n}\n\n.parameters-list[_ngcontent-%COMP%]::-webkit-scrollbar-track, \n.result-content[_ngcontent-%COMP%]::-webkit-scrollbar-track, \n.json-preview[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]::-webkit-scrollbar-track {\n background: var(--mj-bg-surface-card);\n border-radius: 3px;\n}\n\n.parameters-list[_ngcontent-%COMP%]::-webkit-scrollbar-thumb, \n.result-content[_ngcontent-%COMP%]::-webkit-scrollbar-thumb, \n.json-preview[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 3px;\n}\n\n.parameters-list[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover, \n.result-content[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover, \n.json-preview[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover {\n background: var(--mj-text-muted);\n}\n\n.parameter-row[_ngcontent-%COMP%] {\n align-items: flex-start;\n}\n\n.parameters-section[_ngcontent-%COMP%] {\n flex-shrink: 0;\n}\n\n.param-name[_ngcontent-%COMP%] > div[_ngcontent-%COMP%] {\n word-wrap: break-word;\n overflow-wrap: break-word;\n}\n\n.header-section[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:first-child:hover, \n.json-preview-header[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:first-child:hover, \n.result-header[_ngcontent-%COMP%]:hover {\n background-color: var(--mj-bg-surface-card) !important;\n transition: background-color 0.2s ease;\n}\n\n.fa-chevron-down[_ngcontent-%COMP%], \n.fa-chevron-right[_ngcontent-%COMP%] {\n transition: transform 0.2s ease;\n}\n\n.test-results[_ngcontent-%COMP%] .result-header[_ngcontent-%COMP%] kendo-button[_ngcontent-%COMP%] {\n opacity: 0.8;\n transition: opacity 0.2s ease;\n}\n\n.test-results[_ngcontent-%COMP%] .result-header[_ngcontent-%COMP%]:hover kendo-button[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n\n\n.dlg-header[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n padding-bottom: 16px;\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.dlg-header-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.dlg-header-row[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 1.2em;\n}\n\n.dlg-header-row[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n.dlg-header[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-muted);\n font-size: 0.9em;\n}\n\n.dlg-header[_ngcontent-%COMP%] .required-marker[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n\n\n.dlg-loading[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px;\n}\n\n.dlg-loading[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n color: var(--mj-text-muted);\n margin-right: 12px;\n}\n\n.dlg-loading[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n\n\n.dlg-panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n}\n\n.dlg-panel-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n.dlg-panel-title[_ngcontent-%COMP%] .count-badge[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.7em;\n}\n\n\n\n.dlg-info-text[_ngcontent-%COMP%] {\n margin-bottom: 12px;\n color: var(--mj-text-muted);\n font-size: 0.85em;\n}\n\n\n\n.params-table[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface-card);\n}\n\n.params-table-header[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 200px 1fr 60px;\n gap: 12px;\n padding: 12px 16px;\n background: var(--mj-bg-surface-sunken);\n font-weight: 600;\n font-size: 0.85em;\n color: var(--mj-text-secondary);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.params-table-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 200px 1fr 60px;\n gap: 12px;\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n align-items: start;\n background: var(--mj-bg-surface);\n}\n\n.param-source-icon-template[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n font-size: 0.75em;\n}\n\n.param-source-icon-custom[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\n font-size: 0.75em;\n}\n\n.param-required-marker[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n font-weight: bold;\n}\n\n.param-key-text[_ngcontent-%COMP%] {\n font-family: 'Courier New', monospace;\n font-size: 0.9em;\n font-weight: 500;\n color: var(--mj-text-primary);\n padding: 4px 0;\n word-break: break-word;\n}\n\n.param-description-text[_ngcontent-%COMP%] {\n font-size: 0.75em;\n color: var(--mj-text-muted);\n margin-top: 2px;\n font-style: italic;\n word-break: break-word;\n}\n\n.param-type-text[_ngcontent-%COMP%] {\n font-size: 0.7em;\n color: var(--mj-brand-primary);\n margin-top: 2px;\n}\n\n.param-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: start;\n justify-content: center;\n padding-top: 4px;\n}\n\n\n\n.add-param-row[_ngcontent-%COMP%] {\n padding: 12px 16px;\n text-align: center;\n background: var(--mj-bg-surface);\n border-top: 1px solid var(--mj-border-default);\n}\n\n\n\n.no-params-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 20px;\n color: var(--mj-text-muted);\n}\n\n.no-params-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 2em;\n margin-bottom: 12px;\n opacity: 0.5;\n}\n\n.no-params-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n}\n\n\n\n.json-preview-box[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n padding: 12px;\n font-family: 'Courier New', monospace;\n font-size: 0.85em;\n color: var(--mj-text-primary);\n max-height: 200px;\n overflow-y: auto;\n}\n\n.json-preview-box[_ngcontent-%COMP%] pre[_ngcontent-%COMP%] {\n margin: 0;\n white-space: pre-wrap;\n}\n\n\n\n.result-badge-success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 30%, transparent);\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.7em;\n font-weight: 600;\n}\n\n.result-badge-error[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 30%, transparent);\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.7em;\n font-weight: 600;\n}\n\n\n\n.result-stats[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));\n gap: 12px;\n margin-bottom: 16px;\n padding: 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n}\n\n.result-stats.success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n}\n\n.result-stats.error[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n}\n\n.result-stat[_ngcontent-%COMP%] {\n text-align: center;\n}\n\n.result-stat-label[_ngcontent-%COMP%] {\n font-size: 0.75em;\n margin-bottom: 2px;\n color: var(--mj-text-muted);\n}\n\n.result-stat-value[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n\n\n.output-header[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.output-header[_ngcontent-%COMP%] .success-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.output-header[_ngcontent-%COMP%] .error-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.output-box[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n padding: 12px;\n font-family: 'Courier New', monospace;\n font-size: 0.9em;\n white-space: pre-wrap;\n overflow: auto;\n height: 150px;\n color: var(--mj-text-primary);\n}\n\n.error-output-box[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 8%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, var(--mj-bg-surface));\n border-radius: 4px;\n padding: 12px;\n color: var(--mj-status-error);\n font-family: 'Courier New', monospace;\n font-size: 0.9em;\n white-space: pre-wrap;\n overflow: auto;\n height: 150px;\n}\n\n\n\n.no-results-state[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px;\n color: var(--mj-text-muted);\n flex: 1;\n}\n\n.no-results-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 3em;\n margin-bottom: 12px;\n opacity: 0.3;\n}\n\n.no-results-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n}"] }); }
|
|
655
|
+
} }, dependencies: [i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgModel, i2.MJButtonDirective, i2.MJAccordionPanelComponent, i2.MJAccordionTitleDirective, i2.MJDialogComponent, i2.MJDialogTitlebarComponent, i2.MJDialogActionsComponent], styles: [".dialog-content[_ngcontent-%COMP%] {\n min-height: 500px;\n max-height: 650px;\n}\n\n.parameter-row[_ngcontent-%COMP%]:hover {\n background-color: var(--mj-bg-surface-card) !important;\n}\n\n.parameter-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.param-name[_ngcontent-%COMP%], \n.param-value[_ngcontent-%COMP%] {\n min-width: 0;\n}\n\n.param-name[_ngcontent-%COMP%] .mj-input[_ngcontent-%COMP%], \n.param-value[_ngcontent-%COMP%] .mj-textarea[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n.json-preview[_ngcontent-%COMP%] pre[_ngcontent-%COMP%] {\n line-height: 1.3;\n}\n\n.test-results[_ngcontent-%COMP%] {\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n}\n\n.result-content[_ngcontent-%COMP%] pre[_ngcontent-%COMP%] {\n line-height: 1.4;\n}\n\n\n\n.parameters-list[_ngcontent-%COMP%]::-webkit-scrollbar, \n.result-content[_ngcontent-%COMP%]::-webkit-scrollbar, \n.json-preview[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]::-webkit-scrollbar {\n width: 6px;\n}\n\n.parameters-list[_ngcontent-%COMP%]::-webkit-scrollbar-track, \n.result-content[_ngcontent-%COMP%]::-webkit-scrollbar-track, \n.json-preview[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]::-webkit-scrollbar-track {\n background: var(--mj-bg-surface-card);\n border-radius: 3px;\n}\n\n.parameters-list[_ngcontent-%COMP%]::-webkit-scrollbar-thumb, \n.result-content[_ngcontent-%COMP%]::-webkit-scrollbar-thumb, \n.json-preview[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 3px;\n}\n\n.parameters-list[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover, \n.result-content[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover, \n.json-preview[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover {\n background: var(--mj-text-muted);\n}\n\n.parameter-row[_ngcontent-%COMP%] {\n align-items: flex-start;\n}\n\n.parameters-section[_ngcontent-%COMP%] {\n flex-shrink: 0;\n}\n\n.param-name[_ngcontent-%COMP%] > div[_ngcontent-%COMP%] {\n word-wrap: break-word;\n overflow-wrap: break-word;\n}\n\n.header-section[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:first-child:hover, \n.json-preview-header[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:first-child:hover, \n.result-header[_ngcontent-%COMP%]:hover {\n background-color: var(--mj-bg-surface-card) !important;\n transition: background-color 0.2s ease;\n}\n\n.fa-chevron-down[_ngcontent-%COMP%], \n.fa-chevron-right[_ngcontent-%COMP%] {\n transition: transform 0.2s ease;\n}\n\n.test-results[_ngcontent-%COMP%] .result-header[_ngcontent-%COMP%] [mjButton][_ngcontent-%COMP%] {\n opacity: 0.8;\n transition: opacity 0.2s ease;\n}\n\n.test-results[_ngcontent-%COMP%] .result-header[_ngcontent-%COMP%]:hover [mjButton][_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n\n\n.dlg-header[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n padding-bottom: 16px;\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.dlg-header-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.dlg-header-row[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 1.2em;\n}\n\n.dlg-header-row[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n.dlg-header[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-muted);\n font-size: 0.9em;\n}\n\n.dlg-header[_ngcontent-%COMP%] .required-marker[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n\n\n.dlg-loading[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px;\n}\n\n.dlg-loading[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n color: var(--mj-text-muted);\n margin-right: 12px;\n}\n\n.dlg-loading[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n\n\n.dlg-panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n}\n\n.dlg-panel-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n.dlg-panel-title[_ngcontent-%COMP%] .count-badge[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.7em;\n}\n\n\n\n.dlg-info-text[_ngcontent-%COMP%] {\n margin-bottom: 12px;\n color: var(--mj-text-muted);\n font-size: 0.85em;\n}\n\n\n\n.params-table[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface-card);\n}\n\n.params-table-header[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 200px 1fr 60px;\n gap: 12px;\n padding: 12px 16px;\n background: var(--mj-bg-surface-sunken);\n font-weight: 600;\n font-size: 0.85em;\n color: var(--mj-text-secondary);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.params-table-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 200px 1fr 60px;\n gap: 12px;\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n align-items: start;\n background: var(--mj-bg-surface);\n}\n\n.param-source-icon-template[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n font-size: 0.75em;\n}\n\n.param-source-icon-custom[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\n font-size: 0.75em;\n}\n\n.param-required-marker[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n font-weight: bold;\n}\n\n.param-key-text[_ngcontent-%COMP%] {\n font-family: 'Courier New', monospace;\n font-size: 0.9em;\n font-weight: 500;\n color: var(--mj-text-primary);\n padding: 4px 0;\n word-break: break-word;\n}\n\n.param-description-text[_ngcontent-%COMP%] {\n font-size: 0.75em;\n color: var(--mj-text-muted);\n margin-top: 2px;\n font-style: italic;\n word-break: break-word;\n}\n\n.param-type-text[_ngcontent-%COMP%] {\n font-size: 0.7em;\n color: var(--mj-brand-primary);\n margin-top: 2px;\n}\n\n.param-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: start;\n justify-content: center;\n padding-top: 4px;\n}\n\n\n\n.add-param-row[_ngcontent-%COMP%] {\n padding: 12px 16px;\n text-align: center;\n background: var(--mj-bg-surface);\n border-top: 1px solid var(--mj-border-default);\n}\n\n\n\n.no-params-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 20px;\n color: var(--mj-text-muted);\n}\n\n.no-params-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 2em;\n margin-bottom: 12px;\n opacity: 0.5;\n}\n\n.no-params-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n}\n\n\n\n.json-preview-box[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n padding: 12px;\n font-family: 'Courier New', monospace;\n font-size: 0.85em;\n color: var(--mj-text-primary);\n max-height: 200px;\n overflow-y: auto;\n}\n\n.json-preview-box[_ngcontent-%COMP%] pre[_ngcontent-%COMP%] {\n margin: 0;\n white-space: pre-wrap;\n}\n\n\n\n.result-badge-success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 30%, transparent);\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.7em;\n font-weight: 600;\n}\n\n.result-badge-error[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 30%, transparent);\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.7em;\n font-weight: 600;\n}\n\n\n\n.result-stats[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));\n gap: 12px;\n margin-bottom: 16px;\n padding: 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n}\n\n.result-stats.success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n}\n\n.result-stats.error[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n}\n\n.result-stat[_ngcontent-%COMP%] {\n text-align: center;\n}\n\n.result-stat-label[_ngcontent-%COMP%] {\n font-size: 0.75em;\n margin-bottom: 2px;\n color: var(--mj-text-muted);\n}\n\n.result-stat-value[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n\n\n.output-header[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.output-header[_ngcontent-%COMP%] .success-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.output-header[_ngcontent-%COMP%] .error-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.output-box[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n padding: 12px;\n font-family: 'Courier New', monospace;\n font-size: 0.9em;\n white-space: pre-wrap;\n overflow: auto;\n height: 150px;\n color: var(--mj-text-primary);\n}\n\n.error-output-box[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 8%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, var(--mj-bg-surface));\n border-radius: 4px;\n padding: 12px;\n color: var(--mj-status-error);\n font-family: 'Courier New', monospace;\n font-size: 0.9em;\n white-space: pre-wrap;\n overflow: auto;\n height: 150px;\n}\n\n\n\n.no-results-state[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px;\n color: var(--mj-text-muted);\n flex: 1;\n}\n\n.no-results-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 3em;\n margin-bottom: 12px;\n opacity: 0.3;\n}\n\n.no-results-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n}"] }); }
|
|
652
656
|
}
|
|
653
657
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TemplateParamDialogComponent, [{
|
|
654
658
|
type: Component,
|
|
655
|
-
args: [{ standalone: false, selector: 'mj-template-param-dialog', template: "@if (_isVisible) {\n <kendo-dialog\n [minWidth]=\"600\"\n [width]=\"800\"\n [height]=\"700\"\n (close)=\"close()\"\n [title]=\"'Test Template: ' + (template?.Name || 'Unknown')\">\n <div class=\"dialog-content\" style=\"display: flex; flex-direction: column; height: 100%; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\">\n <!-- Header Section -->\n <div class=\"dlg-header\">\n <div class=\"dlg-header-row\">\n <i class=\"fa-solid fa-sliders\"></i>\n <h5>Template Testing</h5>\n </div>\n <p>\n Configure parameter values for testing. Parameters with <span class=\"required-marker\">*</span> are required.\n </p>\n </div>\n <!-- Loading State -->\n @if (isLoading) {\n <div class=\"dlg-loading\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>Loading template parameters...</span>\n </div>\n } @else {\n <!-- Template Parameters Section -->\n <kendo-expansionpanel\n [(expanded)]=\"parametersExpanded\"\n style=\"margin-bottom: 16px; flex-shrink: 0;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span class=\"dlg-panel-title\">\n <i class=\"fa-solid fa-sliders\"></i>\n Template Parameters\n @if (parameters.length > 0) {\n <span class=\"count-badge\">\n {{ parameters.length }}\n </span>\n }\n </span>\n </ng-template>\n <div style=\"padding: 12px 0;\">\n <div class=\"dlg-info-text\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Configure parameter values for template testing. Values can be JSON objects, strings, or numbers.\n </div>\n <!-- Parameters Table -->\n @if (parameters.length > 0) {\n <div class=\"params-table\">\n <!-- Header -->\n <div class=\"params-table-header\">\n <div>Parameter Name</div>\n <div>Value</div>\n <div>Actions</div>\n </div>\n <!-- Parameter Rows -->\n @for (param of parameters; track $index; let i = $index) {\n <div class=\"params-table-row\">\n <!-- Parameter Name -->\n <div class=\"param-name\" style=\"display: flex; flex-direction: column;\">\n <div style=\"display: flex; align-items: center; gap: 4px; margin-bottom: 4px;\">\n @if (param.isFromTemplate) {\n <i class=\"fa-solid fa-database param-source-icon-template\" title=\"From template definition\"></i>\n } @else {\n <i class=\"fa-solid fa-edit param-source-icon-custom\" title=\"Custom parameter\"></i>\n }\n @if (param.isRequired) {\n <span class=\"param-required-marker\">*</span>\n }\n </div>\n @if (param.isFromTemplate) {\n <div class=\"param-key-text\">\n {{ param.key }}\n </div>\n @if (param.description) {\n <div class=\"param-description-text\">\n {{ param.description }}\n </div>\n }\n @if (param.type && param.type !== 'Scalar') {\n <div class=\"param-type-text\">\n Type: {{ param.type }}\n </div>\n }\n } @else {\n <kendo-textbox [(ngModel)]=\"param.key\"\n (ngModelChange)=\"onParameterChange()\"\n placeholder=\"Parameter name...\"\n [disabled]=\"isRunning\"\n style=\"font-family: 'Courier New', monospace; width: 100%;\">\n </kendo-textbox>\n }\n </div>\n <!-- Parameter Value -->\n <div class=\"param-value\">\n <kendo-textarea [(ngModel)]=\"param.value\"\n (ngModelChange)=\"onParameterChange()\"\n [rows]=\"2\"\n placeholder=\"Enter value (JSON strings, numbers, objects)...\"\n [disabled]=\"isRunning\"\n style=\"font-family: 'Courier New', monospace; font-size: 0.9em; width: 100%;\">\n </kendo-textarea>\n </div>\n <!-- Actions -->\n <div class=\"param-actions\">\n @if (!param.isFromTemplate && parameters.length > 1) {\n <button kendoButton fillMode=\"flat\"\n themeColor=\"error\"\n size=\"small\"\n (click)=\"removeParameter(i)\"\n [disabled]=\"isRunning\"\n title=\"Remove parameter\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n </div>\n }\n <!-- Add Parameter Row -->\n <div class=\"add-param-row\">\n <button kendoButton fillMode=\"outline\"\n themeColor=\"success\"\n size=\"small\"\n (click)=\"addParameter()\"\n [disabled]=\"isRunning\">\n <i class=\"fa-solid fa-plus\"></i> Add Parameter\n </button>\n </div>\n </div>\n } @else {\n <div class=\"no-params-state\">\n <i class=\"fa-solid fa-info-circle\"></i>\n <p>No parameters defined yet</p>\n <button kendoButton themeColor=\"primary\" size=\"small\"\n (click)=\"addParameter()\"\n [disabled]=\"isRunning\">\n <i class=\"fa-solid fa-plus\"></i> Add First Parameter\n </button>\n </div>\n }\n </div>\n </kendo-expansionpanel>\n <!-- JSON Preview Section -->\n <kendo-expansionpanel\n [(expanded)]=\"jsonPreviewExpanded\"\n style=\"margin-bottom: 16px; flex-shrink: 0;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span class=\"dlg-panel-title\">\n <i class=\"fa-solid fa-code\"></i>\n Context Data (JSON)\n </span>\n </ng-template>\n <div style=\"padding: 12px 0;\">\n <div class=\"json-preview-box\">\n <pre>{{ parametersAsJson }}</pre>\n </div>\n </div>\n </kendo-expansionpanel>\n <!-- Test Results Section -->\n <kendo-expansionpanel\n [(expanded)]=\"resultsExpanded\"\n style=\"margin-bottom: 16px; flex: 1; display: flex; flex-direction: column;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span class=\"dlg-panel-title\">\n <i class=\"fa-solid fa-chart-line\"></i>\n Test Results\n @if (testResult) {\n @if (testResult.success) {\n <span class=\"result-badge-success\">Success</span>\n } @else {\n <span class=\"result-badge-error\">Error</span>\n }\n }\n </span>\n </ng-template>\n <div style=\"padding: 12px 0; flex: 1; display: flex; flex-direction: column;\">\n @if (isRunning) {\n <div class=\"dlg-loading\" style=\"flex: 1;\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>Running template...</span>\n </div>\n } @else if (testResult) {\n <div style=\"flex: 1; display: flex; flex-direction: column;\">\n <!-- Result Header with Stats -->\n <div class=\"result-stats\" [class.success]=\"testResult.success\" [class.error]=\"!testResult.success\">\n <div class=\"result-stat\">\n <div class=\"result-stat-label\">STATUS</div>\n <div class=\"result-stat-value\">\n {{ testResult.success ? 'Success' : 'Failed' }}\n </div>\n </div>\n @if (testResult.executionTimeMs) {\n <div class=\"result-stat\">\n <div class=\"result-stat-label\">EXECUTION TIME</div>\n <div class=\"result-stat-value\">{{ testResult.executionTimeMs }}ms</div>\n </div>\n }\n <div class=\"result-stat\">\n <div class=\"result-stat-label\">ACTIONS</div>\n <button kendoButton fillMode=\"flat\" size=\"small\"\n (click)=\"saveResults()\"\n title=\"Save results to file\"\n style=\"min-width: auto; padding: 4px 8px;\">\n <i class=\"fa-solid fa-download\"></i>\n </button>\n </div>\n </div>\n <!-- Result Content -->\n <div style=\"flex: 1; display: flex; flex-direction: column;\">\n @if (testResult.success && testResult.output) {\n <div style=\"margin-bottom: 12px; flex: 1; display: flex; flex-direction: column;\">\n <h6 class=\"output-header\">\n <i class=\"fa-solid fa-check-circle success-icon\"></i>\n Template Output\n </h6>\n <div class=\"output-box\">\n {{ testResult.output }}\n </div>\n </div>\n } @else if (!testResult.success && testResult.error) {\n <div style=\"margin-bottom: 12px; flex: 1; display: flex; flex-direction: column;\">\n <h6 class=\"output-header\">\n <i class=\"fa-solid fa-exclamation-triangle error-icon\"></i>\n Error Details\n </h6>\n <div class=\"error-output-box\">{{ testResult.error }}</div>\n </div>\n }\n </div>\n </div>\n } @else {\n <div class=\"no-results-state\">\n <div style=\"text-align: center;\">\n <i class=\"fa-solid fa-play-circle\"></i>\n <p>No test results yet. Run the template to see results here.</p>\n </div>\n </div>\n }\n </div>\n </kendo-expansionpanel>\n }\n </div>\n <!-- Dialog Actions -->\n <kendo-dialog-actions>\n <div style=\"display: flex; justify-content: space-between; align-items: center; width: 100%;\">\n <div>\n @if (hasUnsavedParameters) {\n <button kendoButton fillMode=\"outline\"\n themeColor=\"info\"\n (click)=\"updateTemplateParams()\"\n [disabled]=\"isRunning\">\n <i class=\"fa-solid fa-save\"></i> Update Template Params\n </button>\n }\n </div>\n <div style=\"display: flex; gap: 8px;\">\n <button kendoButton fillMode=\"outline\" (click)=\"close()\">\n Close\n </button>\n @if (testResult) {\n <button kendoButton fillMode=\"outline\" themeColor=\"info\" (click)=\"saveResults()\">\n <i class=\"fa-solid fa-download\"></i> Save Results\n </button>\n }\n <button kendoButton themeColor=\"primary\"\n [disabled]=\"isRunning || isLoading\"\n (click)=\"runTemplate()\">\n @if (isRunning) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Running...\n } @else {\n <i class=\"fa-solid fa-play\"></i> Run Template\n }\n </button>\n </div>\n </div>\n </kendo-dialog-actions>\n </kendo-dialog>\n}\n", styles: [".dialog-content {\n min-height: 500px;\n max-height: 650px;\n}\n\n.parameter-row:hover {\n background-color: var(--mj-bg-surface-card) !important;\n}\n\n.parameter-row:last-child {\n border-bottom: none;\n}\n\n.param-name,\n.param-value {\n min-width: 0;\n}\n\n.param-name kendo-textbox,\n.param-value kendo-textarea {\n width: 100%;\n}\n\n.json-preview pre {\n line-height: 1.3;\n}\n\n.test-results {\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n}\n\n.result-content pre {\n line-height: 1.4;\n}\n\n/* Scrollbar styling */\n.parameters-list::-webkit-scrollbar,\n.result-content::-webkit-scrollbar,\n.json-preview > div::-webkit-scrollbar {\n width: 6px;\n}\n\n.parameters-list::-webkit-scrollbar-track,\n.result-content::-webkit-scrollbar-track,\n.json-preview > div::-webkit-scrollbar-track {\n background: var(--mj-bg-surface-card);\n border-radius: 3px;\n}\n\n.parameters-list::-webkit-scrollbar-thumb,\n.result-content::-webkit-scrollbar-thumb,\n.json-preview > div::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 3px;\n}\n\n.parameters-list::-webkit-scrollbar-thumb:hover,\n.result-content::-webkit-scrollbar-thumb:hover,\n.json-preview > div::-webkit-scrollbar-thumb:hover {\n background: var(--mj-text-muted);\n}\n\n.parameter-row {\n align-items: flex-start;\n}\n\n.parameters-section {\n flex-shrink: 0;\n}\n\n.param-name > div {\n word-wrap: break-word;\n overflow-wrap: break-word;\n}\n\n.header-section > div:first-child:hover,\n.json-preview-header > div:first-child:hover,\n.result-header:hover {\n background-color: var(--mj-bg-surface-card) !important;\n transition: background-color 0.2s ease;\n}\n\n.fa-chevron-down,\n.fa-chevron-right {\n transition: transform 0.2s ease;\n}\n\n.test-results .result-header kendo-button {\n opacity: 0.8;\n transition: opacity 0.2s ease;\n}\n\n.test-results .result-header:hover kendo-button {\n opacity: 1;\n}\n\n/* Dialog header section */\n.dlg-header {\n margin-bottom: 20px;\n padding-bottom: 16px;\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.dlg-header-row {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.dlg-header-row i {\n color: var(--mj-text-muted);\n font-size: 1.2em;\n}\n\n.dlg-header-row h5 {\n margin: 0;\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n.dlg-header p {\n margin: 0;\n color: var(--mj-text-muted);\n font-size: 0.9em;\n}\n\n.dlg-header .required-marker {\n color: var(--mj-status-error);\n}\n\n/* Loading state */\n.dlg-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px;\n}\n\n.dlg-loading i {\n font-size: 24px;\n color: var(--mj-text-muted);\n margin-right: 12px;\n}\n\n.dlg-loading span {\n color: var(--mj-text-muted);\n}\n\n/* Panel title */\n.dlg-panel-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n}\n\n.dlg-panel-title i {\n color: var(--mj-text-muted);\n}\n\n.dlg-panel-title .count-badge {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.7em;\n}\n\n/* Info text */\n.dlg-info-text {\n margin-bottom: 12px;\n color: var(--mj-text-muted);\n font-size: 0.85em;\n}\n\n/* Parameters table */\n.params-table {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface-card);\n}\n\n.params-table-header {\n display: grid;\n grid-template-columns: 200px 1fr 60px;\n gap: 12px;\n padding: 12px 16px;\n background: var(--mj-bg-surface-sunken);\n font-weight: 600;\n font-size: 0.85em;\n color: var(--mj-text-secondary);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.params-table-row {\n display: grid;\n grid-template-columns: 200px 1fr 60px;\n gap: 12px;\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n align-items: start;\n background: var(--mj-bg-surface);\n}\n\n.param-source-icon-template {\n color: var(--mj-status-success);\n font-size: 0.75em;\n}\n\n.param-source-icon-custom {\n color: var(--mj-status-warning);\n font-size: 0.75em;\n}\n\n.param-required-marker {\n color: var(--mj-status-error);\n font-weight: bold;\n}\n\n.param-key-text {\n font-family: 'Courier New', monospace;\n font-size: 0.9em;\n font-weight: 500;\n color: var(--mj-text-primary);\n padding: 4px 0;\n word-break: break-word;\n}\n\n.param-description-text {\n font-size: 0.75em;\n color: var(--mj-text-muted);\n margin-top: 2px;\n font-style: italic;\n word-break: break-word;\n}\n\n.param-type-text {\n font-size: 0.7em;\n color: var(--mj-brand-primary);\n margin-top: 2px;\n}\n\n.param-actions {\n display: flex;\n align-items: start;\n justify-content: center;\n padding-top: 4px;\n}\n\n/* Add parameter row */\n.add-param-row {\n padding: 12px 16px;\n text-align: center;\n background: var(--mj-bg-surface);\n border-top: 1px solid var(--mj-border-default);\n}\n\n/* No params state */\n.no-params-state {\n text-align: center;\n padding: 20px;\n color: var(--mj-text-muted);\n}\n\n.no-params-state i {\n font-size: 2em;\n margin-bottom: 12px;\n opacity: 0.5;\n}\n\n.no-params-state p {\n margin: 0 0 12px 0;\n}\n\n/* JSON preview */\n.json-preview-box {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n padding: 12px;\n font-family: 'Courier New', monospace;\n font-size: 0.85em;\n color: var(--mj-text-primary);\n max-height: 200px;\n overflow-y: auto;\n}\n\n.json-preview-box pre {\n margin: 0;\n white-space: pre-wrap;\n}\n\n/* Result status badges */\n.result-badge-success {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 30%, transparent);\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.7em;\n font-weight: 600;\n}\n\n.result-badge-error {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 30%, transparent);\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.7em;\n font-weight: 600;\n}\n\n/* Result stats box */\n.result-stats {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));\n gap: 12px;\n margin-bottom: 16px;\n padding: 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n}\n\n.result-stats.success {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n}\n\n.result-stats.error {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n}\n\n.result-stat {\n text-align: center;\n}\n\n.result-stat-label {\n font-size: 0.75em;\n margin-bottom: 2px;\n color: var(--mj-text-muted);\n}\n\n.result-stat-value {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n/* Output section */\n.output-header {\n margin: 0 0 8px 0;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.output-header .success-icon {\n color: var(--mj-status-success);\n}\n\n.output-header .error-icon {\n color: var(--mj-status-error);\n}\n\n.output-box {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n padding: 12px;\n font-family: 'Courier New', monospace;\n font-size: 0.9em;\n white-space: pre-wrap;\n overflow: auto;\n height: 150px;\n color: var(--mj-text-primary);\n}\n\n.error-output-box {\n background: color-mix(in srgb, var(--mj-status-error) 8%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, var(--mj-bg-surface));\n border-radius: 4px;\n padding: 12px;\n color: var(--mj-status-error);\n font-family: 'Courier New', monospace;\n font-size: 0.9em;\n white-space: pre-wrap;\n overflow: auto;\n height: 150px;\n}\n\n/* No results state */\n.no-results-state {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px;\n color: var(--mj-text-muted);\n flex: 1;\n}\n\n.no-results-state i {\n font-size: 3em;\n margin-bottom: 12px;\n opacity: 0.3;\n}\n\n.no-results-state p {\n margin: 0;\n}\n"] }]
|
|
659
|
+
args: [{ standalone: false, selector: 'mj-template-param-dialog', template: "@if (_isVisible) {\n <mj-dialog\n [Visible]=\"true\"\n [Width]=\"800\"\n (Close)=\"close()\">\n <mj-dialog-titlebar>Test Template: {{ template?.Name || 'Unknown' }}</mj-dialog-titlebar>\n <div class=\"dialog-content\" style=\"display: flex; flex-direction: column; height: 100%; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\">\n <!-- Header Section -->\n <div class=\"dlg-header\">\n <div class=\"dlg-header-row\">\n <i class=\"fa-solid fa-sliders\"></i>\n <h5>Template Testing</h5>\n </div>\n <p>\n Configure parameter values for testing. Parameters with <span class=\"required-marker\">*</span> are required.\n </p>\n </div>\n <!-- Loading State -->\n @if (isLoading) {\n <div class=\"dlg-loading\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>Loading template parameters...</span>\n </div>\n } @else {\n <!-- Template Parameters Section -->\n <mj-accordion-panel\n [(Expanded)]=\"parametersExpanded\"\n style=\"margin-bottom: 16px; flex-shrink: 0;\">\n <ng-template mjAccordionTitle>\n <span class=\"dlg-panel-title\">\n <i class=\"fa-solid fa-sliders\"></i>\n Template Parameters\n @if (parameters.length > 0) {\n <span class=\"count-badge\">{{ parameters.length }}</span>\n }\n </span>\n </ng-template>\n <div style=\"padding: 12px 0;\">\n <div class=\"dlg-info-text\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Configure parameter values for template testing. Values can be JSON objects, strings, or numbers.\n </div>\n <!-- Parameters Table -->\n @if (parameters.length > 0) {\n <div class=\"params-table\">\n <!-- Header -->\n <div class=\"params-table-header\">\n <div>Parameter Name</div>\n <div>Value</div>\n <div>Actions</div>\n </div>\n <!-- Parameter Rows -->\n @for (param of parameters; track $index; let i = $index) {\n <div class=\"params-table-row\">\n <!-- Parameter Name -->\n <div class=\"param-name\" style=\"display: flex; flex-direction: column;\">\n <div style=\"display: flex; align-items: center; gap: 4px; margin-bottom: 4px;\">\n @if (param.isFromTemplate) {\n <i class=\"fa-solid fa-database param-source-icon-template\" title=\"From template definition\"></i>\n } @else {\n <i class=\"fa-solid fa-edit param-source-icon-custom\" title=\"Custom parameter\"></i>\n }\n @if (param.isRequired) {\n <span class=\"param-required-marker\">*</span>\n }\n </div>\n @if (param.isFromTemplate) {\n <div class=\"param-key-text\">\n {{ param.key }}\n </div>\n @if (param.description) {\n <div class=\"param-description-text\">\n {{ param.description }}\n </div>\n }\n @if (param.type && param.type !== 'Scalar') {\n <div class=\"param-type-text\">\n Type: {{ param.type }}\n </div>\n }\n } @else {\n <input type=\"text\" class=\"mj-input\"\n [(ngModel)]=\"param.key\"\n (ngModelChange)=\"onParameterChange()\"\n placeholder=\"Parameter name...\"\n [disabled]=\"isRunning\"\n style=\"font-family: 'Courier New', monospace; width: 100%;\" />\n }\n </div>\n <!-- Parameter Value -->\n <div class=\"param-value\">\n <textarea class=\"mj-textarea\"\n [(ngModel)]=\"param.value\"\n (ngModelChange)=\"onParameterChange()\"\n [rows]=\"2\"\n placeholder=\"Enter value (JSON strings, numbers, objects)...\"\n [disabled]=\"isRunning\"\n style=\"font-family: 'Courier New', monospace; font-size: 0.9em; width: 100%;\"></textarea>\n </div>\n <!-- Actions -->\n <div class=\"param-actions\">\n @if (!param.isFromTemplate && parameters.length > 1) {\n <button mjButton variant=\"danger\" size=\"sm\"\n (click)=\"removeParameter(i)\"\n [disabled]=\"isRunning\"\n title=\"Remove parameter\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n </div>\n }\n <!-- Add Parameter Row -->\n <div class=\"add-param-row\">\n <button mjButton variant=\"success\" size=\"sm\"\n (click)=\"addParameter()\"\n [disabled]=\"isRunning\">\n <i class=\"fa-solid fa-plus\"></i> Add Parameter\n </button>\n </div>\n </div>\n } @else {\n <div class=\"no-params-state\">\n <i class=\"fa-solid fa-info-circle\"></i>\n <p>No parameters defined yet</p>\n <button mjButton variant=\"primary\" size=\"sm\"\n (click)=\"addParameter()\"\n [disabled]=\"isRunning\">\n <i class=\"fa-solid fa-plus\"></i> Add First Parameter\n </button>\n </div>\n }\n </div>\n </mj-accordion-panel>\n <!-- JSON Preview Section -->\n <mj-accordion-panel\n [(Expanded)]=\"jsonPreviewExpanded\"\n style=\"margin-bottom: 16px; flex-shrink: 0;\">\n <ng-template mjAccordionTitle>\n <span class=\"dlg-panel-title\">\n <i class=\"fa-solid fa-code\"></i>\n Context Data (JSON)\n </span>\n </ng-template>\n <div style=\"padding: 12px 0;\">\n <div class=\"json-preview-box\">\n <pre>{{ parametersAsJson }}</pre>\n </div>\n </div>\n </mj-accordion-panel>\n <!-- Test Results Section -->\n <mj-accordion-panel\n [(Expanded)]=\"resultsExpanded\"\n style=\"margin-bottom: 16px; flex: 1; display: flex; flex-direction: column;\">\n <ng-template mjAccordionTitle>\n <span class=\"dlg-panel-title\">\n <i class=\"fa-solid fa-chart-line\"></i>\n Test Results\n @if (testResult) {\n @if (testResult.success) {\n <span class=\"result-badge success\"><i class=\"fa-solid fa-check\"></i> Success</span>\n } @else {\n <span class=\"result-badge error\"><i class=\"fa-solid fa-times\"></i> Failed</span>\n }\n }\n </span>\n </ng-template>\n <div style=\"padding: 12px 0; flex: 1; display: flex; flex-direction: column;\">\n @if (isRunning) {\n <div class=\"dlg-loading\" style=\"flex: 1;\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>Running template...</span>\n </div>\n } @else if (testResult) {\n <div style=\"flex: 1; display: flex; flex-direction: column;\">\n <!-- Result Header with Stats -->\n <div class=\"result-stats\" [class.success]=\"testResult.success\" [class.error]=\"!testResult.success\">\n <div class=\"result-stat\">\n <div class=\"result-stat-label\">STATUS</div>\n <div class=\"result-stat-value\">\n {{ testResult.success ? 'Success' : 'Failed' }}\n </div>\n </div>\n @if (testResult.executionTimeMs) {\n <div class=\"result-stat\">\n <div class=\"result-stat-label\">EXECUTION TIME</div>\n <div class=\"result-stat-value\">{{ testResult.executionTimeMs }}ms</div>\n </div>\n }\n <div class=\"result-stat\">\n <div class=\"result-stat-label\">ACTIONS</div>\n <button mjButton variant=\"flat\" size=\"sm\"\n (click)=\"saveResults()\"\n title=\"Save results to file\">\n <i class=\"fa-solid fa-download\"></i>\n </button>\n </div>\n </div>\n <!-- Result Content -->\n <div style=\"flex: 1; display: flex; flex-direction: column;\">\n @if (testResult.success && testResult.output) {\n <div style=\"margin-bottom: 12px; flex: 1; display: flex; flex-direction: column;\">\n <h6 class=\"output-header\">\n <i class=\"fa-solid fa-check-circle success-icon\"></i>\n Template Output\n </h6>\n <div class=\"output-box\">\n {{ testResult.output }}\n </div>\n </div>\n } @else if (!testResult.success && testResult.error) {\n <div style=\"margin-bottom: 12px; flex: 1; display: flex; flex-direction: column;\">\n <h6 class=\"output-header\">\n <i class=\"fa-solid fa-exclamation-triangle error-icon\"></i>\n Error Details\n </h6>\n <div class=\"error-output-box\">{{ testResult.error }}</div>\n </div>\n }\n </div>\n </div>\n } @else {\n <div class=\"no-results-state\">\n <div style=\"text-align: center;\">\n <i class=\"fa-solid fa-play-circle\"></i>\n <p>No test results yet. Run the template to see results here.</p>\n </div>\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n </div>\n <!-- Dialog Actions -->\n <mj-dialog-actions>\n <div style=\"display: flex; justify-content: space-between; align-items: center; width: 100%;\">\n <div>\n @if (hasUnsavedParameters) {\n <button mjButton variant=\"outline\"\n (click)=\"updateTemplateParams()\"\n [disabled]=\"isRunning\">\n <i class=\"fa-solid fa-save\"></i> Update Template Params\n </button>\n }\n </div>\n <div style=\"display: flex; gap: 8px;\">\n <button mjButton variant=\"outline\" (click)=\"close()\">\n Close\n </button>\n @if (testResult) {\n <button mjButton variant=\"outline\" (click)=\"saveResults()\">\n <i class=\"fa-solid fa-download\"></i> Save Results\n </button>\n }\n <button mjButton variant=\"primary\"\n [disabled]=\"isRunning || isLoading\"\n (click)=\"runTemplate()\">\n @if (isRunning) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Running...\n } @else {\n <i class=\"fa-solid fa-play\"></i> Run Template\n }\n </button>\n </div>\n </div>\n </mj-dialog-actions>\n </mj-dialog>\n}\n", styles: [".dialog-content {\n min-height: 500px;\n max-height: 650px;\n}\n\n.parameter-row:hover {\n background-color: var(--mj-bg-surface-card) !important;\n}\n\n.parameter-row:last-child {\n border-bottom: none;\n}\n\n.param-name,\n.param-value {\n min-width: 0;\n}\n\n.param-name .mj-input,\n.param-value .mj-textarea {\n width: 100%;\n}\n\n.json-preview pre {\n line-height: 1.3;\n}\n\n.test-results {\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n}\n\n.result-content pre {\n line-height: 1.4;\n}\n\n/* Scrollbar styling */\n.parameters-list::-webkit-scrollbar,\n.result-content::-webkit-scrollbar,\n.json-preview > div::-webkit-scrollbar {\n width: 6px;\n}\n\n.parameters-list::-webkit-scrollbar-track,\n.result-content::-webkit-scrollbar-track,\n.json-preview > div::-webkit-scrollbar-track {\n background: var(--mj-bg-surface-card);\n border-radius: 3px;\n}\n\n.parameters-list::-webkit-scrollbar-thumb,\n.result-content::-webkit-scrollbar-thumb,\n.json-preview > div::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 3px;\n}\n\n.parameters-list::-webkit-scrollbar-thumb:hover,\n.result-content::-webkit-scrollbar-thumb:hover,\n.json-preview > div::-webkit-scrollbar-thumb:hover {\n background: var(--mj-text-muted);\n}\n\n.parameter-row {\n align-items: flex-start;\n}\n\n.parameters-section {\n flex-shrink: 0;\n}\n\n.param-name > div {\n word-wrap: break-word;\n overflow-wrap: break-word;\n}\n\n.header-section > div:first-child:hover,\n.json-preview-header > div:first-child:hover,\n.result-header:hover {\n background-color: var(--mj-bg-surface-card) !important;\n transition: background-color 0.2s ease;\n}\n\n.fa-chevron-down,\n.fa-chevron-right {\n transition: transform 0.2s ease;\n}\n\n.test-results .result-header [mjButton] {\n opacity: 0.8;\n transition: opacity 0.2s ease;\n}\n\n.test-results .result-header:hover [mjButton] {\n opacity: 1;\n}\n\n/* Dialog header section */\n.dlg-header {\n margin-bottom: 20px;\n padding-bottom: 16px;\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.dlg-header-row {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.dlg-header-row i {\n color: var(--mj-text-muted);\n font-size: 1.2em;\n}\n\n.dlg-header-row h5 {\n margin: 0;\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n.dlg-header p {\n margin: 0;\n color: var(--mj-text-muted);\n font-size: 0.9em;\n}\n\n.dlg-header .required-marker {\n color: var(--mj-status-error);\n}\n\n/* Loading state */\n.dlg-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px;\n}\n\n.dlg-loading i {\n font-size: 24px;\n color: var(--mj-text-muted);\n margin-right: 12px;\n}\n\n.dlg-loading span {\n color: var(--mj-text-muted);\n}\n\n/* Panel title */\n.dlg-panel-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n}\n\n.dlg-panel-title i {\n color: var(--mj-text-muted);\n}\n\n.dlg-panel-title .count-badge {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.7em;\n}\n\n/* Info text */\n.dlg-info-text {\n margin-bottom: 12px;\n color: var(--mj-text-muted);\n font-size: 0.85em;\n}\n\n/* Parameters table */\n.params-table {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface-card);\n}\n\n.params-table-header {\n display: grid;\n grid-template-columns: 200px 1fr 60px;\n gap: 12px;\n padding: 12px 16px;\n background: var(--mj-bg-surface-sunken);\n font-weight: 600;\n font-size: 0.85em;\n color: var(--mj-text-secondary);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.params-table-row {\n display: grid;\n grid-template-columns: 200px 1fr 60px;\n gap: 12px;\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n align-items: start;\n background: var(--mj-bg-surface);\n}\n\n.param-source-icon-template {\n color: var(--mj-status-success);\n font-size: 0.75em;\n}\n\n.param-source-icon-custom {\n color: var(--mj-status-warning);\n font-size: 0.75em;\n}\n\n.param-required-marker {\n color: var(--mj-status-error);\n font-weight: bold;\n}\n\n.param-key-text {\n font-family: 'Courier New', monospace;\n font-size: 0.9em;\n font-weight: 500;\n color: var(--mj-text-primary);\n padding: 4px 0;\n word-break: break-word;\n}\n\n.param-description-text {\n font-size: 0.75em;\n color: var(--mj-text-muted);\n margin-top: 2px;\n font-style: italic;\n word-break: break-word;\n}\n\n.param-type-text {\n font-size: 0.7em;\n color: var(--mj-brand-primary);\n margin-top: 2px;\n}\n\n.param-actions {\n display: flex;\n align-items: start;\n justify-content: center;\n padding-top: 4px;\n}\n\n/* Add parameter row */\n.add-param-row {\n padding: 12px 16px;\n text-align: center;\n background: var(--mj-bg-surface);\n border-top: 1px solid var(--mj-border-default);\n}\n\n/* No params state */\n.no-params-state {\n text-align: center;\n padding: 20px;\n color: var(--mj-text-muted);\n}\n\n.no-params-state i {\n font-size: 2em;\n margin-bottom: 12px;\n opacity: 0.5;\n}\n\n.no-params-state p {\n margin: 0 0 12px 0;\n}\n\n/* JSON preview */\n.json-preview-box {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n padding: 12px;\n font-family: 'Courier New', monospace;\n font-size: 0.85em;\n color: var(--mj-text-primary);\n max-height: 200px;\n overflow-y: auto;\n}\n\n.json-preview-box pre {\n margin: 0;\n white-space: pre-wrap;\n}\n\n/* Result status badges */\n.result-badge-success {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 30%, transparent);\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.7em;\n font-weight: 600;\n}\n\n.result-badge-error {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 30%, transparent);\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.7em;\n font-weight: 600;\n}\n\n/* Result stats box */\n.result-stats {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));\n gap: 12px;\n margin-bottom: 16px;\n padding: 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n}\n\n.result-stats.success {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n}\n\n.result-stats.error {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n}\n\n.result-stat {\n text-align: center;\n}\n\n.result-stat-label {\n font-size: 0.75em;\n margin-bottom: 2px;\n color: var(--mj-text-muted);\n}\n\n.result-stat-value {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n/* Output section */\n.output-header {\n margin: 0 0 8px 0;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.output-header .success-icon {\n color: var(--mj-status-success);\n}\n\n.output-header .error-icon {\n color: var(--mj-status-error);\n}\n\n.output-box {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n padding: 12px;\n font-family: 'Courier New', monospace;\n font-size: 0.9em;\n white-space: pre-wrap;\n overflow: auto;\n height: 150px;\n color: var(--mj-text-primary);\n}\n\n.error-output-box {\n background: color-mix(in srgb, var(--mj-status-error) 8%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, var(--mj-bg-surface));\n border-radius: 4px;\n padding: 12px;\n color: var(--mj-status-error);\n font-family: 'Courier New', monospace;\n font-size: 0.9em;\n white-space: pre-wrap;\n overflow: auto;\n height: 150px;\n}\n\n/* No results state */\n.no-results-state {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px;\n color: var(--mj-text-muted);\n flex: 1;\n}\n\n.no-results-state i {\n font-size: 3em;\n margin-bottom: 12px;\n opacity: 0.3;\n}\n\n.no-results-state p {\n margin: 0;\n}\n"] }]
|
|
656
660
|
}], null, { template: [{
|
|
657
661
|
type: Input
|
|
658
662
|
}], isVisible: [{
|