@memberjunction/ng-core-entity-forms 3.3.0 → 3.4.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/AIPrompts/ai-prompt-form.component.js +16 -17
- package/dist/lib/custom/AIPrompts/ai-prompt-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 +16 -30
- package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
- package/dist/lib/custom/EntityActions/entityaction.form.component.js +9 -10
- package/dist/lib/custom/EntityActions/entityaction.form.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.js +7 -7
- package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
- package/dist/lib/custom/Templates/templates-form.component.js +195 -112
- package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-form.component.d.ts +4 -1
- package/dist/lib/custom/Tests/test-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-form.component.js +401 -380
- package/dist/lib/custom/Tests/test-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-suite-form.component.d.ts +4 -1
- package/dist/lib/custom/Tests/test-suite-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-suite-form.component.js +539 -518
- package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts +4 -1
- package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-suite-run-form.component.js +535 -518
- package/dist/lib/custom/Tests/test-suite-run-form.component.js.map +1 -1
- package/dist/lib/custom/custom-forms.module.d.ts +48 -52
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +11 -25
- package/dist/lib/custom/custom-forms.module.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentRunStep/aiagentrunstep.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAgentRunStep/aiagentrunstep.form.component.js +18 -24
- package/dist/lib/generated/Entities/AIAgentRunStep/aiagentrunstep.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIResultCache/airesultcache.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIResultCache/airesultcache.form.component.js +11 -17
- package/dist/lib/generated/Entities/AIResultCache/airesultcache.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/APIScope/apiscope.form.component.js +24 -22
- package/dist/lib/generated/Entities/APIScope/apiscope.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Action/action.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Action/action.form.component.js +44 -26
- package/dist/lib/generated/Entities/Action/action.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ActionCategory/actioncategory.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ActionCategory/actioncategory.form.component.js +23 -5
- package/dist/lib/generated/Entities/ActionCategory/actioncategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Company/company.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Company/company.form.component.js +28 -10
- package/dist/lib/generated/Entities/Company/company.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Conversation/conversation.form.component.js +3 -3
- package/dist/lib/generated/Entities/ConversationDetailArtifact/conversationdetailartifact.form.component.js +3 -3
- package/dist/lib/generated/Entities/ConversationDetailArtifact/conversationdetailartifact.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ConversationDetailRating/conversationdetailrating.form.component.js +3 -3
- package/dist/lib/generated/Entities/ConversationDetailRating/conversationdetailrating.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Credential/credential.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Credential/credential.form.component.js +23 -5
- package/dist/lib/generated/Entities/Credential/credential.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/CredentialType/credentialtype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/CredentialType/credentialtype.form.component.js +23 -5
- package/dist/lib/generated/Entities/CredentialType/credentialtype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/DuplicateRunDetail/duplicaterundetail.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/DuplicateRunDetail/duplicaterundetail.form.component.js +14 -20
- package/dist/lib/generated/Entities/DuplicateRunDetail/duplicaterundetail.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EmployeeCompanyIntegration/employeecompanyintegration.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/EmployeeCompanyIntegration/employeecompanyintegration.form.component.js +9 -15
- package/dist/lib/generated/Entities/EmployeeCompanyIntegration/employeecompanyintegration.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EmployeeRole/employeerole.form.component.js +3 -3
- package/dist/lib/generated/Entities/EmployeeRole/employeerole.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EmployeeSkill/employeeskill.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/EmployeeSkill/employeeskill.form.component.js +6 -12
- package/dist/lib/generated/Entities/EmployeeSkill/employeeskill.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityActionFilter/entityactionfilter.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/EntityActionFilter/entityactionfilter.form.component.js +5 -11
- package/dist/lib/generated/Entities/EntityActionFilter/entityactionfilter.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityActionInvocation/entityactioninvocation.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/EntityActionInvocation/entityactioninvocation.form.component.js +8 -14
- package/dist/lib/generated/Entities/EntityActionInvocation/entityactioninvocation.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityActionParam/entityactionparam.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/EntityActionParam/entityactionparam.form.component.js +6 -12
- package/dist/lib/generated/Entities/EntityActionParam/entityactionparam.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityCommunicationField/entitycommunicationfield.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/EntityCommunicationField/entitycommunicationfield.form.component.js +6 -12
- package/dist/lib/generated/Entities/EntityCommunicationField/entitycommunicationfield.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ErrorLog/errorlog.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/ErrorLog/errorlog.form.component.js +11 -17
- package/dist/lib/generated/Entities/ErrorLog/errorlog.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MCPServer/mcpserver.form.component.d.ts +11 -0
- package/dist/lib/generated/Entities/MCPServer/mcpserver.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MCPServer/mcpserver.form.component.js +142 -0
- package/dist/lib/generated/Entities/MCPServer/mcpserver.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MCPServerConnection/mcpserverconnection.form.component.d.ts +11 -0
- package/dist/lib/generated/Entities/MCPServerConnection/mcpserverconnection.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MCPServerConnection/mcpserverconnection.form.component.js +158 -0
- package/dist/lib/generated/Entities/MCPServerConnection/mcpserverconnection.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MCPServerConnectionPermission/mcpserverconnectionpermission.form.component.d.ts +11 -0
- package/dist/lib/generated/Entities/MCPServerConnectionPermission/mcpserverconnectionpermission.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MCPServerConnectionPermission/mcpserverconnectionpermission.form.component.js +77 -0
- package/dist/lib/generated/Entities/MCPServerConnectionPermission/mcpserverconnectionpermission.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MCPServerConnectionTool/mcpserverconnectiontool.form.component.d.ts +11 -0
- package/dist/lib/generated/Entities/MCPServerConnectionTool/mcpserverconnectiontool.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MCPServerConnectionTool/mcpserverconnectiontool.form.component.js +73 -0
- package/dist/lib/generated/Entities/MCPServerConnectionTool/mcpserverconnectiontool.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MCPServerTool/mcpservertool.form.component.d.ts +11 -0
- package/dist/lib/generated/Entities/MCPServerTool/mcpservertool.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MCPServerTool/mcpservertool.form.component.js +132 -0
- package/dist/lib/generated/Entities/MCPServerTool/mcpservertool.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MCPToolExecutionLog/mcptoolexecutionlog.form.component.d.ts +11 -0
- package/dist/lib/generated/Entities/MCPToolExecutionLog/mcptoolexecutionlog.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MCPToolExecutionLog/mcptoolexecutionlog.form.component.js +101 -0
- package/dist/lib/generated/Entities/MCPToolExecutionLog/mcptoolexecutionlog.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/Role/role.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Role/role.form.component.js +30 -12
- package/dist/lib/generated/Entities/Role/role.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Task/task.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Task/task.form.component.js +26 -32
- package/dist/lib/generated/Entities/Task/task.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/User/user.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/User/user.form.component.js +182 -146
- package/dist/lib/generated/Entities/User/user.form.component.js.map +1 -1
- package/dist/lib/generated/generated-forms.module.d.ts +97 -86
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +140 -59
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/dist/public-api.js +1 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +30 -30
- package/dist/lib/custom/Actions/action-param-dialog.component.d.ts +0 -32
- package/dist/lib/custom/Actions/action-param-dialog.component.d.ts.map +0 -1
- package/dist/lib/custom/Actions/action-param-dialog.component.js +0 -321
- package/dist/lib/custom/Actions/action-param-dialog.component.js.map +0 -1
- package/dist/lib/custom/Actions/action-result-code-dialog.component.d.ts +0 -20
- package/dist/lib/custom/Actions/action-result-code-dialog.component.d.ts.map +0 -1
- package/dist/lib/custom/Actions/action-result-code-dialog.component.js +0 -127
- package/dist/lib/custom/Actions/action-result-code-dialog.component.js.map +0 -1
- package/dist/lib/custom/Actions/action-test-harness-dialog.component.d.ts +0 -15
- package/dist/lib/custom/Actions/action-test-harness-dialog.component.d.ts.map +0 -1
- package/dist/lib/custom/Actions/action-test-harness-dialog.component.js +0 -96
- package/dist/lib/custom/Actions/action-test-harness-dialog.component.js.map +0 -1
- package/dist/lib/custom/Actions/action-test-harness.component.d.ts +0 -50
- package/dist/lib/custom/Actions/action-test-harness.component.d.ts.map +0 -1
- package/dist/lib/custom/Actions/action-test-harness.component.js +0 -710
- package/dist/lib/custom/Actions/action-test-harness.component.js.map +0 -1
|
@@ -1,710 +0,0 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
-
import { Metadata } from '@memberjunction/core';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/forms";
|
|
5
|
-
import * as i2 from "@progress/kendo-angular-inputs";
|
|
6
|
-
import * as i3 from "@progress/kendo-angular-buttons";
|
|
7
|
-
const _forTrack0 = ($index, $item) => $item.param.ID;
|
|
8
|
-
const _forTrack1 = ($index, $item) => $item.ID;
|
|
9
|
-
function ActionTestHarnessComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
10
|
-
i0.ɵɵelementStart(0, "div", 8);
|
|
11
|
-
i0.ɵɵelement(1, "i", 16);
|
|
12
|
-
i0.ɵɵelementStart(2, "p");
|
|
13
|
-
i0.ɵɵtext(3, "This action has no input parameters");
|
|
14
|
-
i0.ɵɵelementEnd()();
|
|
15
|
-
} }
|
|
16
|
-
function ActionTestHarnessComponent_Conditional_14_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
17
|
-
i0.ɵɵelementStart(0, "span", 19);
|
|
18
|
-
i0.ɵɵtext(1, "*");
|
|
19
|
-
i0.ɵɵelementEnd();
|
|
20
|
-
} }
|
|
21
|
-
function ActionTestHarnessComponent_Conditional_14_For_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
22
|
-
i0.ɵɵelementStart(0, "span", 20);
|
|
23
|
-
i0.ɵɵtext(1, "Array");
|
|
24
|
-
i0.ɵɵelementEnd();
|
|
25
|
-
} }
|
|
26
|
-
function ActionTestHarnessComponent_Conditional_14_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
27
|
-
i0.ɵɵelementStart(0, "div", 22);
|
|
28
|
-
i0.ɵɵtext(1);
|
|
29
|
-
i0.ɵɵelementEnd();
|
|
30
|
-
} if (rf & 2) {
|
|
31
|
-
const paramValue_r1 = i0.ɵɵnextContext().$implicit;
|
|
32
|
-
i0.ɵɵadvance();
|
|
33
|
-
i0.ɵɵtextInterpolate(paramValue_r1.param.Description);
|
|
34
|
-
} }
|
|
35
|
-
function ActionTestHarnessComponent_Conditional_14_For_2_Case_8_Template(rf, ctx) { if (rf & 1) {
|
|
36
|
-
const _r2 = i0.ɵɵgetCurrentView();
|
|
37
|
-
i0.ɵɵelementStart(0, "textarea", 30);
|
|
38
|
-
i0.ɵɵlistener("change", function ActionTestHarnessComponent_Conditional_14_For_2_Case_8_Template_textarea_change_0_listener($event) { i0.ɵɵrestoreView(_r2); const paramValue_r1 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onParamValueChange(paramValue_r1, $event)); });
|
|
39
|
-
i0.ɵɵtext(1, " ");
|
|
40
|
-
i0.ɵɵelementEnd();
|
|
41
|
-
} if (rf & 2) {
|
|
42
|
-
const paramValue_r1 = i0.ɵɵnextContext().$implicit;
|
|
43
|
-
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
44
|
-
i0.ɵɵproperty("value", ctx_r2.getParamDisplayValue(paramValue_r1))("placeholder", paramValue_r1.param.IsArray ? "Enter JSON array" : paramValue_r1.param.ValueType === "Simple Object" ? "Enter JSON object" : "Enter value");
|
|
45
|
-
} }
|
|
46
|
-
function ActionTestHarnessComponent_Conditional_14_For_2_Case_9_Template(rf, ctx) { if (rf & 1) {
|
|
47
|
-
const _r4 = i0.ɵɵgetCurrentView();
|
|
48
|
-
i0.ɵɵelementStart(0, "div", 24)(1, "input", 31);
|
|
49
|
-
i0.ɵɵlistener("change", function ActionTestHarnessComponent_Conditional_14_For_2_Case_9_Template_input_change_1_listener($event) { i0.ɵɵrestoreView(_r4); const paramValue_r1 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onParamValueChange(paramValue_r1, $event)); });
|
|
50
|
-
i0.ɵɵelementEnd()();
|
|
51
|
-
} if (rf & 2) {
|
|
52
|
-
const paramValue_r1 = i0.ɵɵnextContext().$implicit;
|
|
53
|
-
i0.ɵɵadvance();
|
|
54
|
-
i0.ɵɵproperty("checked", paramValue_r1.value);
|
|
55
|
-
} }
|
|
56
|
-
function ActionTestHarnessComponent_Conditional_14_For_2_Case_10_Template(rf, ctx) { if (rf & 1) {
|
|
57
|
-
const _r5 = i0.ɵɵgetCurrentView();
|
|
58
|
-
i0.ɵɵelementStart(0, "input", 32);
|
|
59
|
-
i0.ɵɵlistener("change", function ActionTestHarnessComponent_Conditional_14_For_2_Case_10_Template_input_change_0_listener($event) { i0.ɵɵrestoreView(_r5); const paramValue_r1 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onParamValueChange(paramValue_r1, $event)); });
|
|
60
|
-
i0.ɵɵelementEnd();
|
|
61
|
-
} if (rf & 2) {
|
|
62
|
-
const paramValue_r1 = i0.ɵɵnextContext().$implicit;
|
|
63
|
-
i0.ɵɵproperty("value", paramValue_r1.value);
|
|
64
|
-
} }
|
|
65
|
-
function ActionTestHarnessComponent_Conditional_14_For_2_Case_11_Template(rf, ctx) { if (rf & 1) {
|
|
66
|
-
const _r6 = i0.ɵɵgetCurrentView();
|
|
67
|
-
i0.ɵɵelementStart(0, "input", 33);
|
|
68
|
-
i0.ɵɵlistener("change", function ActionTestHarnessComponent_Conditional_14_For_2_Case_11_Template_input_change_0_listener($event) { i0.ɵɵrestoreView(_r6); const paramValue_r1 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onParamValueChange(paramValue_r1, $event)); });
|
|
69
|
-
i0.ɵɵelementEnd();
|
|
70
|
-
} if (rf & 2) {
|
|
71
|
-
const paramValue_r1 = i0.ɵɵnextContext().$implicit;
|
|
72
|
-
i0.ɵɵproperty("value", paramValue_r1.value);
|
|
73
|
-
} }
|
|
74
|
-
function ActionTestHarnessComponent_Conditional_14_For_2_Case_12_Template(rf, ctx) { if (rf & 1) {
|
|
75
|
-
const _r7 = i0.ɵɵgetCurrentView();
|
|
76
|
-
i0.ɵɵelementStart(0, "input", 34);
|
|
77
|
-
i0.ɵɵlistener("change", function ActionTestHarnessComponent_Conditional_14_For_2_Case_12_Template_input_change_0_listener($event) { i0.ɵɵrestoreView(_r7); const paramValue_r1 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onParamValueChange(paramValue_r1, $event)); });
|
|
78
|
-
i0.ɵɵelementEnd();
|
|
79
|
-
} if (rf & 2) {
|
|
80
|
-
const paramValue_r1 = i0.ɵɵnextContext().$implicit;
|
|
81
|
-
i0.ɵɵproperty("value", paramValue_r1.value || "");
|
|
82
|
-
} }
|
|
83
|
-
function ActionTestHarnessComponent_Conditional_14_For_2_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
84
|
-
i0.ɵɵelementStart(0, "div", 28);
|
|
85
|
-
i0.ɵɵelement(1, "i", 35);
|
|
86
|
-
i0.ɵɵtext(2);
|
|
87
|
-
i0.ɵɵelementEnd();
|
|
88
|
-
} if (rf & 2) {
|
|
89
|
-
const paramValue_r1 = i0.ɵɵnextContext().$implicit;
|
|
90
|
-
i0.ɵɵadvance(2);
|
|
91
|
-
i0.ɵɵtextInterpolate1(" ", paramValue_r1.error, " ");
|
|
92
|
-
} }
|
|
93
|
-
function ActionTestHarnessComponent_Conditional_14_For_2_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
94
|
-
i0.ɵɵelementStart(0, "div", 29);
|
|
95
|
-
i0.ɵɵtext(1);
|
|
96
|
-
i0.ɵɵelementEnd();
|
|
97
|
-
} if (rf & 2) {
|
|
98
|
-
const paramValue_r1 = i0.ɵɵnextContext().$implicit;
|
|
99
|
-
i0.ɵɵadvance();
|
|
100
|
-
i0.ɵɵtextInterpolate1(" Default: ", paramValue_r1.param.DefaultValue, " ");
|
|
101
|
-
} }
|
|
102
|
-
function ActionTestHarnessComponent_Conditional_14_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
103
|
-
i0.ɵɵelementStart(0, "div", 18)(1, "label");
|
|
104
|
-
i0.ɵɵtext(2);
|
|
105
|
-
i0.ɵɵtemplate(3, ActionTestHarnessComponent_Conditional_14_For_2_Conditional_3_Template, 2, 0, "span", 19)(4, ActionTestHarnessComponent_Conditional_14_For_2_Conditional_4_Template, 2, 0, "span", 20);
|
|
106
|
-
i0.ɵɵelementStart(5, "span", 21);
|
|
107
|
-
i0.ɵɵtext(6);
|
|
108
|
-
i0.ɵɵelementEnd()();
|
|
109
|
-
i0.ɵɵtemplate(7, ActionTestHarnessComponent_Conditional_14_For_2_Conditional_7_Template, 2, 1, "div", 22)(8, ActionTestHarnessComponent_Conditional_14_For_2_Case_8_Template, 2, 2, "textarea", 23)(9, ActionTestHarnessComponent_Conditional_14_For_2_Case_9_Template, 2, 1, "div", 24)(10, ActionTestHarnessComponent_Conditional_14_For_2_Case_10_Template, 1, 1, "input", 25)(11, ActionTestHarnessComponent_Conditional_14_For_2_Case_11_Template, 1, 1, "input", 26)(12, ActionTestHarnessComponent_Conditional_14_For_2_Case_12_Template, 1, 1, "input", 27)(13, ActionTestHarnessComponent_Conditional_14_For_2_Conditional_13_Template, 3, 1, "div", 28)(14, ActionTestHarnessComponent_Conditional_14_For_2_Conditional_14_Template, 2, 1, "div", 29);
|
|
110
|
-
i0.ɵɵelementEnd();
|
|
111
|
-
} if (rf & 2) {
|
|
112
|
-
let tmp_18_0;
|
|
113
|
-
const paramValue_r1 = ctx.$implicit;
|
|
114
|
-
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
115
|
-
i0.ɵɵclassProp("required", paramValue_r1.param.IsRequired)("error", paramValue_r1.error);
|
|
116
|
-
i0.ɵɵadvance(2);
|
|
117
|
-
i0.ɵɵtextInterpolate1(" ", paramValue_r1.param.Name, " ");
|
|
118
|
-
i0.ɵɵadvance();
|
|
119
|
-
i0.ɵɵconditional(paramValue_r1.param.IsRequired ? 3 : -1);
|
|
120
|
-
i0.ɵɵadvance();
|
|
121
|
-
i0.ɵɵconditional(paramValue_r1.param.IsArray ? 4 : -1);
|
|
122
|
-
i0.ɵɵadvance(2);
|
|
123
|
-
i0.ɵɵtextInterpolate(paramValue_r1.param.ValueType);
|
|
124
|
-
i0.ɵɵadvance();
|
|
125
|
-
i0.ɵɵconditional(paramValue_r1.param.Description ? 7 : -1);
|
|
126
|
-
i0.ɵɵadvance();
|
|
127
|
-
i0.ɵɵconditional((tmp_18_0 = ctx_r2.getInputType(paramValue_r1.param)) === "textarea" ? 8 : tmp_18_0 === "checkbox" ? 9 : tmp_18_0 === "number" ? 10 : tmp_18_0 === "datetime-local" ? 11 : 12);
|
|
128
|
-
i0.ɵɵadvance(5);
|
|
129
|
-
i0.ɵɵconditional(paramValue_r1.error ? 13 : -1);
|
|
130
|
-
i0.ɵɵadvance();
|
|
131
|
-
i0.ɵɵconditional(paramValue_r1.param.DefaultValue && !paramValue_r1.value ? 14 : -1);
|
|
132
|
-
} }
|
|
133
|
-
function ActionTestHarnessComponent_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
134
|
-
i0.ɵɵelementStart(0, "div", 9);
|
|
135
|
-
i0.ɵɵrepeaterCreate(1, ActionTestHarnessComponent_Conditional_14_For_2_Template, 15, 12, "div", 17, _forTrack0);
|
|
136
|
-
i0.ɵɵelementEnd();
|
|
137
|
-
} if (rf & 2) {
|
|
138
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
|
139
|
-
i0.ɵɵadvance();
|
|
140
|
-
i0.ɵɵrepeater(ctx_r2.paramValues);
|
|
141
|
-
} }
|
|
142
|
-
function ActionTestHarnessComponent_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
143
|
-
i0.ɵɵelement(0, "i", 36);
|
|
144
|
-
i0.ɵɵtext(1, " Executing... ");
|
|
145
|
-
} }
|
|
146
|
-
function ActionTestHarnessComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
147
|
-
i0.ɵɵelement(0, "i", 37);
|
|
148
|
-
i0.ɵɵtext(1, " Execute Action ");
|
|
149
|
-
} }
|
|
150
|
-
function ActionTestHarnessComponent_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
151
|
-
const _r8 = i0.ɵɵgetCurrentView();
|
|
152
|
-
i0.ɵɵelementStart(0, "button", 12);
|
|
153
|
-
i0.ɵɵlistener("click", function ActionTestHarnessComponent_Conditional_22_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.clearResults()); });
|
|
154
|
-
i0.ɵɵelement(1, "i", 38);
|
|
155
|
-
i0.ɵɵtext(2, " Clear Results ");
|
|
156
|
-
i0.ɵɵelementEnd();
|
|
157
|
-
} }
|
|
158
|
-
function ActionTestHarnessComponent_Conditional_23_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
159
|
-
const _r9 = i0.ɵɵgetCurrentView();
|
|
160
|
-
i0.ɵɵelementStart(0, "button", 46);
|
|
161
|
-
i0.ɵɵlistener("click", function ActionTestHarnessComponent_Conditional_23_Conditional_9_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.copyResultToClipboard()); });
|
|
162
|
-
i0.ɵɵelement(1, "i", 47);
|
|
163
|
-
i0.ɵɵtext(2, " Copy ");
|
|
164
|
-
i0.ɵɵelementEnd();
|
|
165
|
-
i0.ɵɵelementStart(3, "button", 46);
|
|
166
|
-
i0.ɵɵlistener("click", function ActionTestHarnessComponent_Conditional_23_Conditional_9_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.showRawResult = !ctx_r2.showRawResult); });
|
|
167
|
-
i0.ɵɵelement(4, "i", 48);
|
|
168
|
-
i0.ɵɵtext(5);
|
|
169
|
-
i0.ɵɵelementEnd();
|
|
170
|
-
} if (rf & 2) {
|
|
171
|
-
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
172
|
-
i0.ɵɵadvance(5);
|
|
173
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r2.showRawResult ? "Hide" : "Show", " Raw ");
|
|
174
|
-
} }
|
|
175
|
-
function ActionTestHarnessComponent_Conditional_23_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
176
|
-
i0.ɵɵelementStart(0, "div", 44);
|
|
177
|
-
i0.ɵɵelement(1, "i", 49);
|
|
178
|
-
i0.ɵɵelementStart(2, "div", 50)(3, "h5");
|
|
179
|
-
i0.ɵɵtext(4, "Execution Error");
|
|
180
|
-
i0.ɵɵelementEnd();
|
|
181
|
-
i0.ɵɵelementStart(5, "p");
|
|
182
|
-
i0.ɵɵtext(6);
|
|
183
|
-
i0.ɵɵelementEnd()()();
|
|
184
|
-
} if (rf & 2) {
|
|
185
|
-
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
186
|
-
i0.ɵɵadvance(6);
|
|
187
|
-
i0.ɵɵtextInterpolate(ctx_r2.executionError);
|
|
188
|
-
} }
|
|
189
|
-
function ActionTestHarnessComponent_Conditional_23_Conditional_11_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
190
|
-
i0.ɵɵelementStart(0, "span", 53);
|
|
191
|
-
i0.ɵɵtext(1);
|
|
192
|
-
i0.ɵɵelementEnd();
|
|
193
|
-
} if (rf & 2) {
|
|
194
|
-
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
195
|
-
i0.ɵɵadvance();
|
|
196
|
-
i0.ɵɵtextInterpolate(ctx_r2.executionResult.ResultCode);
|
|
197
|
-
} }
|
|
198
|
-
function ActionTestHarnessComponent_Conditional_23_Conditional_11_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
199
|
-
i0.ɵɵelementStart(0, "div", 54)(1, "h5");
|
|
200
|
-
i0.ɵɵelement(2, "i", 56);
|
|
201
|
-
i0.ɵɵtext(3, " Message ");
|
|
202
|
-
i0.ɵɵelementEnd();
|
|
203
|
-
i0.ɵɵelementStart(4, "div", 57)(5, "pre", 58);
|
|
204
|
-
i0.ɵɵtext(6);
|
|
205
|
-
i0.ɵɵelementEnd()()();
|
|
206
|
-
} if (rf & 2) {
|
|
207
|
-
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
208
|
-
i0.ɵɵadvance(6);
|
|
209
|
-
i0.ɵɵtextInterpolate(ctx_r2.executionResult.Message);
|
|
210
|
-
} }
|
|
211
|
-
function ActionTestHarnessComponent_Conditional_23_Conditional_11_Conditional_7_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
212
|
-
const _r11 = i0.ɵɵgetCurrentView();
|
|
213
|
-
i0.ɵɵelementStart(0, "div", 57)(1, "div", 62)(2, "span", 63);
|
|
214
|
-
i0.ɵɵtext(3, "JSON");
|
|
215
|
-
i0.ɵɵelementEnd();
|
|
216
|
-
i0.ɵɵelementStart(4, "button", 64);
|
|
217
|
-
i0.ɵɵlistener("click", function ActionTestHarnessComponent_Conditional_23_Conditional_11_Conditional_7_Conditional_7_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.copyResultDataToClipboard()); });
|
|
218
|
-
i0.ɵɵelement(5, "i", 47);
|
|
219
|
-
i0.ɵɵelementEnd()();
|
|
220
|
-
i0.ɵɵelementStart(6, "pre", 65);
|
|
221
|
-
i0.ɵɵtext(7);
|
|
222
|
-
i0.ɵɵelementEnd()();
|
|
223
|
-
} if (rf & 2) {
|
|
224
|
-
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
225
|
-
i0.ɵɵadvance(7);
|
|
226
|
-
i0.ɵɵtextInterpolate(ctx_r2.formatResultData(ctx_r2.executionResult.ResultData));
|
|
227
|
-
} }
|
|
228
|
-
function ActionTestHarnessComponent_Conditional_23_Conditional_11_Conditional_7_Conditional_8_Conditional_0_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
229
|
-
i0.ɵɵelementStart(0, "div", 67)(1, "label");
|
|
230
|
-
i0.ɵɵelement(2, "i", 68);
|
|
231
|
-
i0.ɵɵtext(3);
|
|
232
|
-
i0.ɵɵelementEnd();
|
|
233
|
-
i0.ɵɵelementStart(4, "div", 69)(5, "pre", 58);
|
|
234
|
-
i0.ɵɵtext(6);
|
|
235
|
-
i0.ɵɵelementEnd()()();
|
|
236
|
-
} if (rf & 2) {
|
|
237
|
-
const outputParam_r12 = ctx.$implicit;
|
|
238
|
-
const ctx_r2 = i0.ɵɵnextContext(6);
|
|
239
|
-
i0.ɵɵadvance(3);
|
|
240
|
-
i0.ɵɵtextInterpolate1(" ", outputParam_r12.Name, " ");
|
|
241
|
-
i0.ɵɵadvance(3);
|
|
242
|
-
i0.ɵɵtextInterpolate(ctx_r2.formatResultData(ctx_r2.executionResult.ResultData[outputParam_r12.Name]));
|
|
243
|
-
} }
|
|
244
|
-
function ActionTestHarnessComponent_Conditional_23_Conditional_11_Conditional_7_Conditional_8_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
245
|
-
i0.ɵɵelementStart(0, "div", 66);
|
|
246
|
-
i0.ɵɵrepeaterCreate(1, ActionTestHarnessComponent_Conditional_23_Conditional_11_Conditional_7_Conditional_8_Conditional_0_For_2_Template, 7, 2, "div", 67, _forTrack1);
|
|
247
|
-
i0.ɵɵelementEnd();
|
|
248
|
-
} if (rf & 2) {
|
|
249
|
-
const ctx_r2 = i0.ɵɵnextContext(5);
|
|
250
|
-
i0.ɵɵadvance();
|
|
251
|
-
i0.ɵɵrepeater(ctx_r2.getOutputParams());
|
|
252
|
-
} }
|
|
253
|
-
function ActionTestHarnessComponent_Conditional_23_Conditional_11_Conditional_7_Conditional_8_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
254
|
-
const _r13 = i0.ɵɵgetCurrentView();
|
|
255
|
-
i0.ɵɵelementStart(0, "div", 57)(1, "div", 62)(2, "span", 63);
|
|
256
|
-
i0.ɵɵtext(3, "JSON");
|
|
257
|
-
i0.ɵɵelementEnd();
|
|
258
|
-
i0.ɵɵelementStart(4, "button", 64);
|
|
259
|
-
i0.ɵɵlistener("click", function ActionTestHarnessComponent_Conditional_23_Conditional_11_Conditional_7_Conditional_8_Conditional_1_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r13); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.copyResultDataToClipboard()); });
|
|
260
|
-
i0.ɵɵelement(5, "i", 47);
|
|
261
|
-
i0.ɵɵelementEnd()();
|
|
262
|
-
i0.ɵɵelementStart(6, "pre", 65);
|
|
263
|
-
i0.ɵɵtext(7);
|
|
264
|
-
i0.ɵɵelementEnd()();
|
|
265
|
-
} if (rf & 2) {
|
|
266
|
-
const ctx_r2 = i0.ɵɵnextContext(5);
|
|
267
|
-
i0.ɵɵadvance(7);
|
|
268
|
-
i0.ɵɵtextInterpolate(ctx_r2.formatResultData(ctx_r2.executionResult.ResultData));
|
|
269
|
-
} }
|
|
270
|
-
function ActionTestHarnessComponent_Conditional_23_Conditional_11_Conditional_7_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
271
|
-
i0.ɵɵtemplate(0, ActionTestHarnessComponent_Conditional_23_Conditional_11_Conditional_7_Conditional_8_Conditional_0_Template, 3, 0, "div", 66)(1, ActionTestHarnessComponent_Conditional_23_Conditional_11_Conditional_7_Conditional_8_Conditional_1_Template, 8, 1, "div", 57);
|
|
272
|
-
} if (rf & 2) {
|
|
273
|
-
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
274
|
-
i0.ɵɵconditional(ctx_r2.getOutputParams().length > 0 ? 0 : 1);
|
|
275
|
-
} }
|
|
276
|
-
function ActionTestHarnessComponent_Conditional_23_Conditional_11_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
277
|
-
const _r10 = i0.ɵɵgetCurrentView();
|
|
278
|
-
i0.ɵɵelementStart(0, "div", 55)(1, "h5");
|
|
279
|
-
i0.ɵɵelement(2, "i", 59);
|
|
280
|
-
i0.ɵɵtext(3, " Result Data ");
|
|
281
|
-
i0.ɵɵelementStart(4, "button", 60);
|
|
282
|
-
i0.ɵɵlistener("click", function ActionTestHarnessComponent_Conditional_23_Conditional_11_Conditional_7_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.showRawResult = !ctx_r2.showRawResult); });
|
|
283
|
-
i0.ɵɵelement(5, "i", 61);
|
|
284
|
-
i0.ɵɵtext(6);
|
|
285
|
-
i0.ɵɵelementEnd()();
|
|
286
|
-
i0.ɵɵtemplate(7, ActionTestHarnessComponent_Conditional_23_Conditional_11_Conditional_7_Conditional_7_Template, 8, 1, "div", 57)(8, ActionTestHarnessComponent_Conditional_23_Conditional_11_Conditional_7_Conditional_8_Template, 2, 1);
|
|
287
|
-
i0.ɵɵelementEnd();
|
|
288
|
-
} if (rf & 2) {
|
|
289
|
-
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
290
|
-
i0.ɵɵadvance(5);
|
|
291
|
-
i0.ɵɵclassProp("fa-code", !ctx_r2.showRawResult)("fa-list", ctx_r2.showRawResult);
|
|
292
|
-
i0.ɵɵadvance();
|
|
293
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r2.showRawResult ? "Formatted View" : "Raw JSON", " ");
|
|
294
|
-
i0.ɵɵadvance();
|
|
295
|
-
i0.ɵɵconditional(ctx_r2.showRawResult ? 7 : 8);
|
|
296
|
-
} }
|
|
297
|
-
function ActionTestHarnessComponent_Conditional_23_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
298
|
-
i0.ɵɵelementStart(0, "div", 51)(1, "div", 52);
|
|
299
|
-
i0.ɵɵelement(2, "i");
|
|
300
|
-
i0.ɵɵelementStart(3, "span");
|
|
301
|
-
i0.ɵɵtext(4);
|
|
302
|
-
i0.ɵɵelementEnd();
|
|
303
|
-
i0.ɵɵtemplate(5, ActionTestHarnessComponent_Conditional_23_Conditional_11_Conditional_5_Template, 2, 1, "span", 53);
|
|
304
|
-
i0.ɵɵelementEnd();
|
|
305
|
-
i0.ɵɵtemplate(6, ActionTestHarnessComponent_Conditional_23_Conditional_11_Conditional_6_Template, 7, 1, "div", 54)(7, ActionTestHarnessComponent_Conditional_23_Conditional_11_Conditional_7_Template, 9, 6, "div", 55);
|
|
306
|
-
i0.ɵɵelementEnd();
|
|
307
|
-
} if (rf & 2) {
|
|
308
|
-
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
309
|
-
i0.ɵɵclassProp("failure", !ctx_r2.executionResult.Success);
|
|
310
|
-
i0.ɵɵadvance();
|
|
311
|
-
i0.ɵɵstyleProp("background-color", ctx_r2.getResultColor());
|
|
312
|
-
i0.ɵɵadvance();
|
|
313
|
-
i0.ɵɵclassMap("fa-solid " + ctx_r2.getResultIcon());
|
|
314
|
-
i0.ɵɵadvance(2);
|
|
315
|
-
i0.ɵɵtextInterpolate(ctx_r2.executionResult.Success ? "Success" : "Failed");
|
|
316
|
-
i0.ɵɵadvance();
|
|
317
|
-
i0.ɵɵconditional(ctx_r2.executionResult.ResultCode ? 5 : -1);
|
|
318
|
-
i0.ɵɵadvance();
|
|
319
|
-
i0.ɵɵconditional(ctx_r2.executionResult.Message ? 6 : -1);
|
|
320
|
-
i0.ɵɵadvance();
|
|
321
|
-
i0.ɵɵconditional(ctx_r2.executionResult.ResultData !== null && ctx_r2.executionResult.ResultData !== undefined ? 7 : -1);
|
|
322
|
-
} }
|
|
323
|
-
function ActionTestHarnessComponent_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
324
|
-
i0.ɵɵelementStart(0, "div", 15)(1, "div", 39)(2, "h4");
|
|
325
|
-
i0.ɵɵelement(3, "i", 40);
|
|
326
|
-
i0.ɵɵtext(4, " Execution Results ");
|
|
327
|
-
i0.ɵɵelementEnd();
|
|
328
|
-
i0.ɵɵelementStart(5, "div", 41)(6, "span", 42);
|
|
329
|
-
i0.ɵɵelement(7, "i", 43);
|
|
330
|
-
i0.ɵɵtext(8);
|
|
331
|
-
i0.ɵɵelementEnd();
|
|
332
|
-
i0.ɵɵtemplate(9, ActionTestHarnessComponent_Conditional_23_Conditional_9_Template, 6, 1);
|
|
333
|
-
i0.ɵɵelementEnd()();
|
|
334
|
-
i0.ɵɵtemplate(10, ActionTestHarnessComponent_Conditional_23_Conditional_10_Template, 7, 1, "div", 44)(11, ActionTestHarnessComponent_Conditional_23_Conditional_11_Template, 8, 10, "div", 45);
|
|
335
|
-
i0.ɵɵelementEnd();
|
|
336
|
-
} if (rf & 2) {
|
|
337
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
|
338
|
-
i0.ɵɵadvance(8);
|
|
339
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r2.executionTime, "ms ");
|
|
340
|
-
i0.ɵɵadvance();
|
|
341
|
-
i0.ɵɵconditional(ctx_r2.executionResult ? 9 : -1);
|
|
342
|
-
i0.ɵɵadvance();
|
|
343
|
-
i0.ɵɵconditional(ctx_r2.executionError ? 10 : -1);
|
|
344
|
-
i0.ɵɵadvance();
|
|
345
|
-
i0.ɵɵconditional(ctx_r2.executionResult ? 11 : -1);
|
|
346
|
-
} }
|
|
347
|
-
export class ActionTestHarnessComponent {
|
|
348
|
-
constructor(cdr) {
|
|
349
|
-
this.cdr = cdr;
|
|
350
|
-
this.actionParams = [];
|
|
351
|
-
this.isVisible = false;
|
|
352
|
-
this.visibilityChange = new EventEmitter();
|
|
353
|
-
this.paramValues = [];
|
|
354
|
-
this.isExecuting = false;
|
|
355
|
-
this.executionResult = null;
|
|
356
|
-
this.executionError = null;
|
|
357
|
-
this.executionTime = 0;
|
|
358
|
-
this.showRawResult = false;
|
|
359
|
-
this.skipActionLog = false;
|
|
360
|
-
}
|
|
361
|
-
ngOnInit() {
|
|
362
|
-
this.initializeParamValues();
|
|
363
|
-
}
|
|
364
|
-
initializeParamValues() {
|
|
365
|
-
// Initialize parameter values with defaults
|
|
366
|
-
this.paramValues = this.actionParams
|
|
367
|
-
.filter(p => {
|
|
368
|
-
const type = p.Type?.trim().toLowerCase();
|
|
369
|
-
return type === 'input' || type === 'both';
|
|
370
|
-
})
|
|
371
|
-
.sort((a, b) => {
|
|
372
|
-
// Sort required params first, then by name
|
|
373
|
-
if (a.IsRequired !== b.IsRequired) {
|
|
374
|
-
return a.IsRequired ? -1 : 1;
|
|
375
|
-
}
|
|
376
|
-
return a.Name.localeCompare(b.Name);
|
|
377
|
-
})
|
|
378
|
-
.map(param => ({
|
|
379
|
-
param,
|
|
380
|
-
value: this.getDefaultValue(param)
|
|
381
|
-
}));
|
|
382
|
-
}
|
|
383
|
-
getDefaultValue(param) {
|
|
384
|
-
if (param.DefaultValue) {
|
|
385
|
-
return this.parseDefaultValue(param.DefaultValue, param.ValueType);
|
|
386
|
-
}
|
|
387
|
-
// Return appropriate empty value based on type
|
|
388
|
-
if (param.IsArray) {
|
|
389
|
-
return [];
|
|
390
|
-
}
|
|
391
|
-
switch (param.ValueType) {
|
|
392
|
-
case 'Scalar':
|
|
393
|
-
return null;
|
|
394
|
-
case 'Simple Object':
|
|
395
|
-
return {};
|
|
396
|
-
case 'BaseEntity Sub-Class':
|
|
397
|
-
return null;
|
|
398
|
-
default:
|
|
399
|
-
return null;
|
|
400
|
-
}
|
|
401
|
-
}
|
|
402
|
-
parseDefaultValue(defaultValue, valueType) {
|
|
403
|
-
try {
|
|
404
|
-
// Try to parse as JSON first
|
|
405
|
-
return JSON.parse(defaultValue);
|
|
406
|
-
}
|
|
407
|
-
catch {
|
|
408
|
-
// If not JSON, return as string for scalar types
|
|
409
|
-
if (valueType === 'Scalar') {
|
|
410
|
-
return defaultValue;
|
|
411
|
-
}
|
|
412
|
-
return defaultValue;
|
|
413
|
-
}
|
|
414
|
-
}
|
|
415
|
-
getInputType(param) {
|
|
416
|
-
if (param.IsArray || param.ValueType === 'Simple Object' || param.ValueType === 'BaseEntity Sub-Class') {
|
|
417
|
-
return 'textarea';
|
|
418
|
-
}
|
|
419
|
-
// Try to infer from default value or name
|
|
420
|
-
const value = param.DefaultValue?.toLowerCase() || param.Name.toLowerCase();
|
|
421
|
-
if (value.includes('date') || value.includes('time')) {
|
|
422
|
-
return 'datetime-local';
|
|
423
|
-
}
|
|
424
|
-
if (value === 'true' || value === 'false') {
|
|
425
|
-
return 'checkbox';
|
|
426
|
-
}
|
|
427
|
-
if (!isNaN(Number(value))) {
|
|
428
|
-
return 'number';
|
|
429
|
-
}
|
|
430
|
-
return 'text';
|
|
431
|
-
}
|
|
432
|
-
onParamValueChange(paramValue, event) {
|
|
433
|
-
const inputType = this.getInputType(paramValue.param);
|
|
434
|
-
if (inputType === 'checkbox') {
|
|
435
|
-
paramValue.value = event.target.checked;
|
|
436
|
-
}
|
|
437
|
-
else if (inputType === 'number') {
|
|
438
|
-
paramValue.value = event.target.valueAsNumber;
|
|
439
|
-
}
|
|
440
|
-
else if (inputType === 'textarea') {
|
|
441
|
-
// For complex types, try to parse as JSON
|
|
442
|
-
try {
|
|
443
|
-
paramValue.value = JSON.parse(event.target.value);
|
|
444
|
-
paramValue.error = undefined;
|
|
445
|
-
}
|
|
446
|
-
catch (e) {
|
|
447
|
-
// If not valid JSON, keep as string
|
|
448
|
-
paramValue.value = event.target.value;
|
|
449
|
-
if (paramValue.param.ValueType !== 'Scalar') {
|
|
450
|
-
paramValue.error = 'Invalid JSON format';
|
|
451
|
-
}
|
|
452
|
-
}
|
|
453
|
-
}
|
|
454
|
-
else {
|
|
455
|
-
paramValue.value = event.target.value;
|
|
456
|
-
}
|
|
457
|
-
}
|
|
458
|
-
getParamDisplayValue(paramValue) {
|
|
459
|
-
if (paramValue.value === null || paramValue.value === undefined) {
|
|
460
|
-
return '';
|
|
461
|
-
}
|
|
462
|
-
if (typeof paramValue.value === 'object') {
|
|
463
|
-
return JSON.stringify(paramValue.value, null, 2);
|
|
464
|
-
}
|
|
465
|
-
return String(paramValue.value);
|
|
466
|
-
}
|
|
467
|
-
validateParams() {
|
|
468
|
-
let isValid = true;
|
|
469
|
-
for (const paramValue of this.paramValues) {
|
|
470
|
-
// Check required fields
|
|
471
|
-
if (paramValue.param.IsRequired) {
|
|
472
|
-
if (paramValue.value === null || paramValue.value === undefined ||
|
|
473
|
-
(typeof paramValue.value === 'string' && paramValue.value.trim() === '') ||
|
|
474
|
-
(Array.isArray(paramValue.value) && paramValue.value.length === 0)) {
|
|
475
|
-
paramValue.error = 'This field is required';
|
|
476
|
-
isValid = false;
|
|
477
|
-
}
|
|
478
|
-
}
|
|
479
|
-
// Check for JSON parse errors
|
|
480
|
-
if (paramValue.error) {
|
|
481
|
-
isValid = false;
|
|
482
|
-
}
|
|
483
|
-
}
|
|
484
|
-
return isValid;
|
|
485
|
-
}
|
|
486
|
-
async executeAction() {
|
|
487
|
-
if (!this.validateParams()) {
|
|
488
|
-
return;
|
|
489
|
-
}
|
|
490
|
-
this.isExecuting = true;
|
|
491
|
-
this.executionResult = null;
|
|
492
|
-
this.executionError = null;
|
|
493
|
-
const startTime = Date.now();
|
|
494
|
-
try {
|
|
495
|
-
// Build parameters object
|
|
496
|
-
const params = {};
|
|
497
|
-
for (const paramValue of this.paramValues) {
|
|
498
|
-
params[paramValue.param.Name] = paramValue.value;
|
|
499
|
-
}
|
|
500
|
-
// Execute the action using GraphQL
|
|
501
|
-
const query = `
|
|
502
|
-
mutation RunAction($input: RunActionInput!) {
|
|
503
|
-
RunAction(input: $input) {
|
|
504
|
-
Success
|
|
505
|
-
Message
|
|
506
|
-
ResultCode
|
|
507
|
-
ResultData
|
|
508
|
-
}
|
|
509
|
-
}
|
|
510
|
-
`;
|
|
511
|
-
// Get GraphQL data provider from Metadata
|
|
512
|
-
const graphQLProvider = Metadata.Provider;
|
|
513
|
-
// Convert params to ActionParamInput array format
|
|
514
|
-
const actionParams = this.paramValues.map(paramValue => {
|
|
515
|
-
// Determine the actual data type for the Type field
|
|
516
|
-
let dataType = 'string'; // default
|
|
517
|
-
if (paramValue.param.ValueType === 'Scalar') {
|
|
518
|
-
// For scalar, check the actual value type
|
|
519
|
-
if (typeof paramValue.value === 'boolean') {
|
|
520
|
-
dataType = 'boolean';
|
|
521
|
-
}
|
|
522
|
-
else if (typeof paramValue.value === 'number') {
|
|
523
|
-
dataType = 'number';
|
|
524
|
-
}
|
|
525
|
-
else {
|
|
526
|
-
dataType = 'string';
|
|
527
|
-
}
|
|
528
|
-
}
|
|
529
|
-
else if (paramValue.param.ValueType === 'Simple Object') {
|
|
530
|
-
dataType = 'object';
|
|
531
|
-
}
|
|
532
|
-
else if (paramValue.param.IsArray) {
|
|
533
|
-
dataType = 'array';
|
|
534
|
-
}
|
|
535
|
-
return {
|
|
536
|
-
Name: paramValue.param.Name,
|
|
537
|
-
Value: paramValue.value === null || paramValue.value === undefined
|
|
538
|
-
? null
|
|
539
|
-
: typeof paramValue.value === 'object'
|
|
540
|
-
? JSON.stringify(paramValue.value)
|
|
541
|
-
: String(paramValue.value),
|
|
542
|
-
Type: dataType
|
|
543
|
-
};
|
|
544
|
-
});
|
|
545
|
-
const variables = {
|
|
546
|
-
input: {
|
|
547
|
-
ActionID: this.action.ID,
|
|
548
|
-
Params: actionParams,
|
|
549
|
-
SkipActionLog: this.skipActionLog
|
|
550
|
-
}
|
|
551
|
-
};
|
|
552
|
-
let result;
|
|
553
|
-
try {
|
|
554
|
-
result = await graphQLProvider.ExecuteGQL(query, variables);
|
|
555
|
-
}
|
|
556
|
-
catch (gqlError) {
|
|
557
|
-
console.error('❌ Action Test Harness: GraphQL execution failed', {
|
|
558
|
-
error: gqlError,
|
|
559
|
-
message: gqlError?.message,
|
|
560
|
-
networkError: gqlError?.networkError,
|
|
561
|
-
graphQLErrors: gqlError?.graphQLErrors,
|
|
562
|
-
statusCode: gqlError?.networkError?.statusCode,
|
|
563
|
-
response: gqlError?.networkError?.response
|
|
564
|
-
});
|
|
565
|
-
throw gqlError;
|
|
566
|
-
}
|
|
567
|
-
this.executionTime = Date.now() - startTime;
|
|
568
|
-
if (result?.RunAction) {
|
|
569
|
-
this.executionResult = result.RunAction;
|
|
570
|
-
// If result is false/failed, it might still have an error in the data
|
|
571
|
-
if (!this.executionResult?.Success && this.executionResult?.Message) {
|
|
572
|
-
console.warn('⚠️ Action Test Harness: Action failed with message', this.executionResult.Message);
|
|
573
|
-
}
|
|
574
|
-
}
|
|
575
|
-
else {
|
|
576
|
-
console.error('❌ Action Test Harness: No RunAction in result', {
|
|
577
|
-
result,
|
|
578
|
-
resultType: typeof result,
|
|
579
|
-
resultStringified: JSON.stringify(result)
|
|
580
|
-
});
|
|
581
|
-
throw new Error('No result returned from action execution');
|
|
582
|
-
}
|
|
583
|
-
}
|
|
584
|
-
catch (error) {
|
|
585
|
-
this.executionTime = Date.now() - startTime;
|
|
586
|
-
this.executionError = error.message || 'An unknown error occurred';
|
|
587
|
-
console.error('❌ Action Test Harness: Caught error during action execution', {
|
|
588
|
-
error: error,
|
|
589
|
-
message: error?.message,
|
|
590
|
-
stack: error?.stack,
|
|
591
|
-
type: error?.constructor?.name
|
|
592
|
-
});
|
|
593
|
-
}
|
|
594
|
-
finally {
|
|
595
|
-
this.isExecuting = false;
|
|
596
|
-
this.cdr.detectChanges();
|
|
597
|
-
}
|
|
598
|
-
}
|
|
599
|
-
clearResults() {
|
|
600
|
-
this.executionResult = null;
|
|
601
|
-
this.executionError = null;
|
|
602
|
-
this.executionTime = 0;
|
|
603
|
-
}
|
|
604
|
-
resetParams() {
|
|
605
|
-
this.initializeParamValues();
|
|
606
|
-
this.clearResults();
|
|
607
|
-
}
|
|
608
|
-
copyResultToClipboard() {
|
|
609
|
-
if (!this.executionResult)
|
|
610
|
-
return;
|
|
611
|
-
const resultText = JSON.stringify(this.executionResult, null, 2);
|
|
612
|
-
navigator.clipboard.writeText(resultText).then(() => {
|
|
613
|
-
// Could add a notification here
|
|
614
|
-
}).catch(() => {
|
|
615
|
-
// Failed to copy to clipboard
|
|
616
|
-
});
|
|
617
|
-
}
|
|
618
|
-
copyResultDataToClipboard() {
|
|
619
|
-
if (!this.executionResult?.ResultData)
|
|
620
|
-
return;
|
|
621
|
-
const resultDataText = this.formatResultData(this.executionResult.ResultData);
|
|
622
|
-
navigator.clipboard.writeText(resultDataText).then(() => {
|
|
623
|
-
// Could add a notification here
|
|
624
|
-
}).catch(() => {
|
|
625
|
-
// Failed to copy to clipboard
|
|
626
|
-
});
|
|
627
|
-
}
|
|
628
|
-
getResultIcon() {
|
|
629
|
-
if (!this.executionResult)
|
|
630
|
-
return '';
|
|
631
|
-
return this.executionResult.Success ? 'fa-check-circle' : 'fa-times-circle';
|
|
632
|
-
}
|
|
633
|
-
getResultColor() {
|
|
634
|
-
if (!this.executionResult)
|
|
635
|
-
return '';
|
|
636
|
-
return this.executionResult.Success ? '#28a745' : '#dc3545';
|
|
637
|
-
}
|
|
638
|
-
getOutputParams() {
|
|
639
|
-
return this.actionParams.filter(p => p.Type === 'Output' || p.Type === 'Both');
|
|
640
|
-
}
|
|
641
|
-
formatResultData(data) {
|
|
642
|
-
if (data === null || data === undefined)
|
|
643
|
-
return 'null';
|
|
644
|
-
if (typeof data === 'object') {
|
|
645
|
-
return JSON.stringify(data, null, 2);
|
|
646
|
-
}
|
|
647
|
-
return String(data);
|
|
648
|
-
}
|
|
649
|
-
static { this.ɵfac = function ActionTestHarnessComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ActionTestHarnessComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); }; }
|
|
650
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ActionTestHarnessComponent, selectors: [["mj-action-test-harness"]], inputs: { action: "action", actionParams: "actionParams", isVisible: "isVisible" }, outputs: { visibilityChange: "visibilityChange" }, decls: 24, vars: 7, consts: [[1, "action-test-harness"], [1, "harness-header"], [1, "fa-solid", "fa-flask"], [1, "header-actions"], ["name", "skipActionLog", 3, "ngModelChange", "ngModel"], [2, "margin-left", "8px"], [1, "parameters-section"], [1, "fa-solid", "fa-sliders"], [1, "no-params"], [1, "params-grid"], [1, "action-buttons"], ["kendoButton", "", "themeColor", "primary", "size", "large", 3, "click", "disabled"], ["kendoButton", "", "fillMode", "outline", 3, "click"], [1, "fa-solid", "fa-undo"], ["kendoButton", "", "fillMode", "outline"], [1, "results-section"], [1, "fa-solid", "fa-inbox"], [1, "param-field", 3, "required", "error"], [1, "param-field"], [1, "required-indicator"], [1, "array-badge"], [1, "value-type"], [1, "param-description"], ["rows", "4", 1, "param-input", 3, "value", "placeholder"], [1, "checkbox-wrapper"], ["type", "number", "placeholder", "Enter number", 1, "param-input", 3, "value"], ["type", "datetime-local", 1, "param-input", 3, "value"], ["type", "text", "placeholder", "Enter value", 1, "param-input", 3, "value"], [1, "field-error"], [1, "default-hint"], ["rows", "4", 1, "param-input", 3, "change", "value", "placeholder"], ["type", "checkbox", 1, "param-checkbox", 3, "change", "checked"], ["type", "number", "placeholder", "Enter number", 1, "param-input", 3, "change", "value"], ["type", "datetime-local", 1, "param-input", 3, "change", "value"], ["type", "text", "placeholder", "Enter value", 1, "param-input", 3, "change", "value"], [1, "fa-solid", "fa-exclamation-circle"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-play"], [1, "fa-solid", "fa-trash"], [1, "results-header"], [1, "fa-solid", "fa-poll"], [1, "execution-meta"], [1, "execution-time"], [1, "fa-solid", "fa-clock"], [1, "error-result"], [1, "success-result", 3, "failure"], ["kendoButton", "", "fillMode", "flat", "size", "small", 3, "click"], [1, "fa-solid", "fa-copy"], [1, "fa-solid", "fa-code"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "error-content"], [1, "success-result"], [1, "status-banner"], [1, "result-code"], [1, "result-message"], [1, "result-data"], [1, "fa-solid", "fa-message"], [1, "code-editor-container"], [1, "code-editor"], [1, "fa-solid", "fa-database"], ["kendoButton", "", "fillMode", "flat", "size", "small", 1, "toggle-view-btn", 3, "click"], [1, "fa-solid"], [1, "code-editor-header"], [1, "language-badge"], ["kendoButton", "", "fillMode", "flat", "size", "small", 1, "copy-btn", 3, "click"], [1, "code-editor", "json"], [1, "output-params"], [1, "output-param"], [1, "fa-solid", "fa-tag"], [1, "code-editor-container", "compact"]], template: function ActionTestHarnessComponent_Template(rf, ctx) { if (rf & 1) {
|
|
651
|
-
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "h3");
|
|
652
|
-
i0.ɵɵelement(3, "i", 2);
|
|
653
|
-
i0.ɵɵtext(4);
|
|
654
|
-
i0.ɵɵelementEnd();
|
|
655
|
-
i0.ɵɵelementStart(5, "div", 3)(6, "kendo-switch", 4);
|
|
656
|
-
i0.ɵɵtwoWayListener("ngModelChange", function ActionTestHarnessComponent_Template_kendo_switch_ngModelChange_6_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.skipActionLog, $event) || (ctx.skipActionLog = $event); return $event; });
|
|
657
|
-
i0.ɵɵelementEnd();
|
|
658
|
-
i0.ɵɵelementStart(7, "label", 5);
|
|
659
|
-
i0.ɵɵtext(8, "Skip Action Log");
|
|
660
|
-
i0.ɵɵelementEnd()()();
|
|
661
|
-
i0.ɵɵelementStart(9, "div", 6)(10, "h4");
|
|
662
|
-
i0.ɵɵelement(11, "i", 7);
|
|
663
|
-
i0.ɵɵtext(12, " Input Parameters ");
|
|
664
|
-
i0.ɵɵelementEnd();
|
|
665
|
-
i0.ɵɵtemplate(13, ActionTestHarnessComponent_Conditional_13_Template, 4, 0, "div", 8)(14, ActionTestHarnessComponent_Conditional_14_Template, 3, 0, "div", 9);
|
|
666
|
-
i0.ɵɵelementEnd();
|
|
667
|
-
i0.ɵɵelementStart(15, "div", 10)(16, "button", 11);
|
|
668
|
-
i0.ɵɵlistener("click", function ActionTestHarnessComponent_Template_button_click_16_listener() { return ctx.executeAction(); });
|
|
669
|
-
i0.ɵɵtemplate(17, ActionTestHarnessComponent_Conditional_17_Template, 2, 0)(18, ActionTestHarnessComponent_Conditional_18_Template, 2, 0);
|
|
670
|
-
i0.ɵɵelementEnd();
|
|
671
|
-
i0.ɵɵelementStart(19, "button", 12);
|
|
672
|
-
i0.ɵɵlistener("click", function ActionTestHarnessComponent_Template_button_click_19_listener() { return ctx.resetParams(); });
|
|
673
|
-
i0.ɵɵelement(20, "i", 13);
|
|
674
|
-
i0.ɵɵtext(21, " Reset ");
|
|
675
|
-
i0.ɵɵelementEnd();
|
|
676
|
-
i0.ɵɵtemplate(22, ActionTestHarnessComponent_Conditional_22_Template, 3, 0, "button", 14);
|
|
677
|
-
i0.ɵɵelementEnd();
|
|
678
|
-
i0.ɵɵtemplate(23, ActionTestHarnessComponent_Conditional_23_Template, 12, 4, "div", 15);
|
|
679
|
-
i0.ɵɵelementEnd();
|
|
680
|
-
} if (rf & 2) {
|
|
681
|
-
i0.ɵɵadvance(4);
|
|
682
|
-
i0.ɵɵtextInterpolate1(" Test Harness for ", ctx.action.Name, " ");
|
|
683
|
-
i0.ɵɵadvance(2);
|
|
684
|
-
i0.ɵɵtwoWayProperty("ngModel", ctx.skipActionLog);
|
|
685
|
-
i0.ɵɵadvance(7);
|
|
686
|
-
i0.ɵɵconditional(ctx.paramValues.length === 0 ? 13 : 14);
|
|
687
|
-
i0.ɵɵadvance(3);
|
|
688
|
-
i0.ɵɵproperty("disabled", ctx.isExecuting || ctx.action.Status !== "Active");
|
|
689
|
-
i0.ɵɵadvance();
|
|
690
|
-
i0.ɵɵconditional(ctx.isExecuting ? 17 : 18);
|
|
691
|
-
i0.ɵɵadvance(5);
|
|
692
|
-
i0.ɵɵconditional(ctx.executionResult || ctx.executionError ? 22 : -1);
|
|
693
|
-
i0.ɵɵadvance();
|
|
694
|
-
i0.ɵɵconditional(ctx.executionResult || ctx.executionError ? 23 : -1);
|
|
695
|
-
} }, dependencies: [i1.NgControlStatus, i1.NgModel, i2.SwitchComponent, i3.ButtonComponent], styles: [".action-test-harness[_ngcontent-%COMP%] {\n background: white;\n border-radius: 8px;\n padding: 24px;\n max-width: 100%;\n margin: 0;\n width: 100%;\n box-sizing: border-box;\n}\n\n\n\n.action-test-harness[_ngcontent-%COMP%] *[_ngcontent-%COMP%] {\n box-sizing: border-box;\n}\n\n\n\n.harness-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n padding-bottom: 16px;\n border-bottom: 2px solid #e9ecef;\n flex-wrap: wrap;\n gap: 12px;\n}\n\n.harness-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n color: #2c3e50;\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.harness-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #6f42c1;\n}\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n\n\n.parameters-section[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n width: 100%;\n overflow-x: auto;\n}\n\n.parameters-section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n color: #495057;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.no-params[_ngcontent-%COMP%] {\n text-align: center;\n padding: 40px;\n color: #6c757d;\n}\n\n.no-params[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 2.5em;\n margin-bottom: 12px;\n opacity: 0.3;\n}\n\n.params-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\n gap: 16px;\n width: 100%;\n}\n\n.param-field[_ngcontent-%COMP%] {\n background: #f8f9fa;\n border: 1px solid #e9ecef;\n border-radius: 6px;\n padding: 12px;\n transition: all 0.2s;\n min-width: 0;\n overflow: hidden;\n}\n\n.param-field[_ngcontent-%COMP%]:hover {\n border-color: #dee2e6;\n box-shadow: 0 2px 4px rgba(0,0,0,0.05);\n}\n\n.param-field.required[_ngcontent-%COMP%] {\n border-left: 3px solid #ffc107;\n}\n\n.param-field.error[_ngcontent-%COMP%] {\n border-color: #dc3545;\n background: #f8d7da20;\n}\n\n.param-field[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 8px;\n font-weight: 600;\n color: #495057;\n flex-wrap: wrap;\n font-size: 0.95em;\n}\n\n.required-indicator[_ngcontent-%COMP%] {\n color: #dc3545;\n}\n\n.array-badge[_ngcontent-%COMP%] {\n background: #6f42c1;\n color: white;\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.75em;\n font-weight: 500;\n}\n\n.value-type[_ngcontent-%COMP%] {\n margin-left: auto;\n color: #6c757d;\n font-size: 0.8em;\n font-weight: 400;\n white-space: nowrap;\n}\n\n.param-description[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 0.9em;\n margin-bottom: 8px;\n line-height: 1.4;\n}\n\n.param-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 8px 12px;\n border: 1px solid #ced4da;\n border-radius: 4px;\n font-family: inherit;\n font-size: 0.95em;\n transition: border-color 0.2s;\n box-sizing: border-box;\n max-width: 100%;\n}\n\n.param-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: #80bdff;\n box-shadow: 0 0 0 2px rgba(0,123,255,0.1);\n}\n\ntextarea.param-input[_ngcontent-%COMP%] {\n resize: vertical;\n font-family: 'Courier New', monospace;\n font-size: 0.9em;\n}\n\n.checkbox-wrapper[_ngcontent-%COMP%] {\n padding: 8px 0;\n}\n\n.param-checkbox[_ngcontent-%COMP%] {\n width: 20px;\n height: 20px;\n cursor: pointer;\n}\n\n.field-error[_ngcontent-%COMP%] {\n margin-top: 6px;\n color: #dc3545;\n font-size: 0.85em;\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.default-hint[_ngcontent-%COMP%] {\n margin-top: 6px;\n color: #6c757d;\n font-size: 0.85em;\n font-style: italic;\n}\n\n\n\n.action-buttons[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n margin-bottom: 24px;\n padding: 16px;\n background: #f8f9fa;\n border-radius: 6px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n\n\n.results-section[_ngcontent-%COMP%] {\n border: 2px solid #e9ecef;\n border-radius: 8px;\n overflow: hidden;\n margin-top: 20px;\n}\n\n.results-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n background: #f8f9fa;\n border-bottom: 1px solid #e9ecef;\n}\n\n.results-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n color: #495057;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.execution-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.execution-time[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 0.9em;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n\n\n.error-result[_ngcontent-%COMP%] {\n padding: 20px;\n background: #f8d7da;\n display: flex;\n gap: 16px;\n align-items: flex-start;\n}\n\n.error-result[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.5em;\n color: #dc3545;\n flex-shrink: 0;\n}\n\n.error-content[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: #721c24;\n}\n\n.error-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: #721c24;\n}\n\n\n\n.success-result[_ngcontent-%COMP%] {\n background: white;\n}\n\n.success-result.failure[_ngcontent-%COMP%] .status-banner[_ngcontent-%COMP%] {\n background: #dc3545 !important;\n}\n\n.status-banner[_ngcontent-%COMP%] {\n padding: 16px 20px;\n color: white;\n display: flex;\n align-items: center;\n gap: 12px;\n font-weight: 600;\n font-size: 1.1em;\n}\n\n.status-banner[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.2em;\n}\n\n.result-code[_ngcontent-%COMP%] {\n margin-left: auto;\n background: rgba(255,255,255,0.2);\n padding: 4px 10px;\n border-radius: 12px;\n font-size: 0.9em;\n}\n\n.result-message[_ngcontent-%COMP%] {\n padding: 20px;\n border-bottom: 1px solid #e9ecef;\n}\n\n.result-message[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n color: #495057;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.result-message[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #17a2b8;\n}\n\n.result-message[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: #6c757d;\n line-height: 1.5;\n}\n\n.result-message[_ngcontent-%COMP%] .code-editor-container[_ngcontent-%COMP%] {\n margin-bottom: 0;\n}\n\n.result-message[_ngcontent-%COMP%] .code-editor[_ngcontent-%COMP%] {\n color: #e8e8e8;\n background: #2d2d30;\n max-height: 200px;\n overflow-y: auto;\n}\n\n\n\n.result-data[_ngcontent-%COMP%] {\n padding: 20px;\n}\n\n.result-data[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n color: #495057;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.result-data[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #6f42c1;\n}\n\n.toggle-view-btn[_ngcontent-%COMP%] {\n margin-left: auto;\n font-size: 0.85em;\n}\n\n.raw-data[_ngcontent-%COMP%] {\n background: #f8f9fa;\n border: 1px solid #e9ecef;\n border-radius: 4px;\n padding: 16px;\n margin: 0;\n font-family: 'Courier New', monospace;\n font-size: 0.9em;\n overflow-x: auto;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n\n\n.code-editor-container[_ngcontent-%COMP%] {\n background: #1e1e1e;\n border-radius: 6px;\n overflow: hidden;\n margin-bottom: 16px;\n}\n\n.code-editor-container.compact[_ngcontent-%COMP%] {\n margin-bottom: 0;\n}\n\n.code-editor-header[_ngcontent-%COMP%] {\n background: #2d2d30;\n padding: 8px 12px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n border-bottom: 1px solid #3e3e42;\n}\n\n.language-badge[_ngcontent-%COMP%] {\n background: #007acc;\n color: white;\n padding: 2px 8px;\n border-radius: 3px;\n font-size: 0.75em;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.copy-btn[_ngcontent-%COMP%] {\n color: #cccccc;\n padding: 4px 8px;\n min-width: auto;\n}\n\n.copy-btn[_ngcontent-%COMP%]:hover {\n color: #ffffff;\n background: rgba(255, 255, 255, 0.1);\n}\n\n.code-editor[_ngcontent-%COMP%] {\n background: #1e1e1e;\n color: #d4d4d4;\n border: none;\n border-radius: 0;\n padding: 16px;\n margin: 0;\n font-family: 'Consolas', 'Monaco', 'Courier New', monospace;\n font-size: 13px;\n line-height: 1.5;\n overflow-x: auto;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n.code-editor.json[_ngcontent-%COMP%] {\n \n\n color: #9cdcfe;\n}\n\n\n\n.output-params[_ngcontent-%COMP%] {\n display: grid;\n gap: 16px;\n}\n\n.output-param[_ngcontent-%COMP%] {\n background: #f8f9fa;\n border: 1px solid #e9ecef;\n border-radius: 6px;\n padding: 16px;\n}\n\n.output-param[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 8px;\n font-weight: 600;\n color: #495057;\n}\n\n.output-param[_ngcontent-%COMP%] label[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #6f42c1;\n font-size: 0.9em;\n}\n\n.output-value[_ngcontent-%COMP%] {\n background: white;\n border: 1px solid #dee2e6;\n border-radius: 4px;\n padding: 12px;\n}\n\n.output-value[_ngcontent-%COMP%] pre[_ngcontent-%COMP%] {\n margin: 0;\n font-family: 'Courier New', monospace;\n font-size: 0.9em;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n.no-value[_ngcontent-%COMP%] {\n color: #6c757d;\n font-style: italic;\n}\n\n\n\n@media (max-width: 768px) {\n .params-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n \n .harness-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n \n .results-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n \n .action-buttons[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n }\n}"] }); }
|
|
696
|
-
}
|
|
697
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ActionTestHarnessComponent, [{
|
|
698
|
-
type: Component,
|
|
699
|
-
args: [{ selector: 'mj-action-test-harness', template: "<div class=\"action-test-harness\">\n <div class=\"harness-header\">\n <h3>\n <i class=\"fa-solid fa-flask\"></i>\n Test Harness for {{ action.Name }}\n </h3>\n <div class=\"header-actions\">\n <kendo-switch [(ngModel)]=\"skipActionLog\" name=\"skipActionLog\">\n </kendo-switch>\n <label style=\"margin-left: 8px;\">Skip Action Log</label>\n </div>\n </div>\n\n <!-- Input Parameters Section -->\n <div class=\"parameters-section\">\n <h4>\n <i class=\"fa-solid fa-sliders\"></i>\n Input Parameters\n </h4>\n \n @if (paramValues.length === 0) {\n <div class=\"no-params\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>This action has no input parameters</p>\n </div>\n } @else {\n <div class=\"params-grid\">\n @for (paramValue of paramValues; track paramValue.param.ID) {\n <div class=\"param-field\" [class.required]=\"paramValue.param.IsRequired\" [class.error]=\"paramValue.error\">\n <label>\n {{ paramValue.param.Name }}\n @if (paramValue.param.IsRequired) {\n <span class=\"required-indicator\">*</span>\n }\n @if (paramValue.param.IsArray) {\n <span class=\"array-badge\">Array</span>\n }\n <span class=\"value-type\">{{ paramValue.param.ValueType }}</span>\n </label>\n \n @if (paramValue.param.Description) {\n <div class=\"param-description\">{{ paramValue.param.Description }}</div>\n }\n \n @switch (getInputType(paramValue.param)) {\n @case ('textarea') {\n <textarea \n [value]=\"getParamDisplayValue(paramValue)\"\n (change)=\"onParamValueChange(paramValue, $event)\"\n [placeholder]=\"paramValue.param.IsArray ? 'Enter JSON array' : paramValue.param.ValueType === 'Simple Object' ? 'Enter JSON object' : 'Enter value'\"\n rows=\"4\"\n class=\"param-input\">\n </textarea>\n }\n @case ('checkbox') {\n <div class=\"checkbox-wrapper\">\n <input \n type=\"checkbox\"\n [checked]=\"paramValue.value\"\n (change)=\"onParamValueChange(paramValue, $event)\"\n class=\"param-checkbox\">\n </div>\n }\n @case ('number') {\n <input \n type=\"number\"\n [value]=\"paramValue.value\"\n (change)=\"onParamValueChange(paramValue, $event)\"\n placeholder=\"Enter number\"\n class=\"param-input\">\n }\n @case ('datetime-local') {\n <input \n type=\"datetime-local\"\n [value]=\"paramValue.value\"\n (change)=\"onParamValueChange(paramValue, $event)\"\n class=\"param-input\">\n }\n @default {\n <input \n type=\"text\"\n [value]=\"paramValue.value || ''\"\n (change)=\"onParamValueChange(paramValue, $event)\"\n placeholder=\"Enter value\"\n class=\"param-input\">\n }\n }\n \n @if (paramValue.error) {\n <div class=\"field-error\">\n <i class=\"fa-solid fa-exclamation-circle\"></i>\n {{ paramValue.error }}\n </div>\n }\n \n @if (paramValue.param.DefaultValue && !paramValue.value) {\n <div class=\"default-hint\">\n Default: {{ paramValue.param.DefaultValue }}\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Action Buttons -->\n <div class=\"action-buttons\">\n <button \n kendoButton\n themeColor=\"primary\" \n size=\"large\"\n (click)=\"executeAction()\"\n [disabled]=\"isExecuting || action.Status !== 'Active'\">\n @if (isExecuting) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Executing...\n } @else {\n <i class=\"fa-solid fa-play\"></i> Execute Action\n }\n </button>\n \n <button \n kendoButton\n fillMode=\"outline\"\n (click)=\"resetParams()\">\n <i class=\"fa-solid fa-undo\"></i> Reset\n </button>\n \n @if (executionResult || executionError) {\n <button \n kendoButton\n fillMode=\"outline\"\n (click)=\"clearResults()\">\n <i class=\"fa-solid fa-trash\"></i> Clear Results\n </button>\n }\n </div>\n\n <!-- Results Section -->\n @if (executionResult || executionError) {\n <div class=\"results-section\">\n <div class=\"results-header\">\n <h4>\n <i class=\"fa-solid fa-poll\"></i>\n Execution Results\n </h4>\n <div class=\"execution-meta\">\n <span class=\"execution-time\">\n <i class=\"fa-solid fa-clock\"></i>\n {{ executionTime }}ms\n </span>\n @if (executionResult) {\n <button \n kendoButton\n fillMode=\"flat\" \n size=\"small\"\n (click)=\"copyResultToClipboard()\">\n <i class=\"fa-solid fa-copy\"></i> Copy\n </button>\n <button \n kendoButton\n fillMode=\"flat\" \n size=\"small\"\n (click)=\"showRawResult = !showRawResult\">\n <i class=\"fa-solid fa-code\"></i> \n {{ showRawResult ? 'Hide' : 'Show' }} Raw\n </button>\n }\n </div>\n </div>\n\n @if (executionError) {\n <div class=\"error-result\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n <div class=\"error-content\">\n <h5>Execution Error</h5>\n <p>{{ executionError }}</p>\n </div>\n </div>\n }\n\n @if (executionResult) {\n <div class=\"success-result\" [class.failure]=\"!executionResult.Success\">\n <!-- Status Banner -->\n <div class=\"status-banner\" [style.background-color]=\"getResultColor()\">\n <i [class]=\"'fa-solid ' + getResultIcon()\"></i>\n <span>{{ executionResult.Success ? 'Success' : 'Failed' }}</span>\n @if (executionResult.ResultCode) {\n <span class=\"result-code\">{{ executionResult.ResultCode }}</span>\n }\n </div>\n\n <!-- Message -->\n @if (executionResult.Message) {\n <div class=\"result-message\">\n <h5>\n <i class=\"fa-solid fa-message\"></i> Message\n </h5>\n <div class=\"code-editor-container\">\n <pre class=\"code-editor\">{{ executionResult.Message }}</pre>\n </div>\n </div>\n }\n\n <!-- Result Data -->\n @if (executionResult.ResultData !== null && executionResult.ResultData !== undefined) {\n <div class=\"result-data\">\n <h5>\n <i class=\"fa-solid fa-database\"></i> Result Data\n <button \n kendoButton\n fillMode=\"flat\" \n size=\"small\"\n class=\"toggle-view-btn\"\n (click)=\"showRawResult = !showRawResult\">\n <i class=\"fa-solid\" [class.fa-code]=\"!showRawResult\" [class.fa-list]=\"showRawResult\"></i> \n {{ showRawResult ? 'Formatted View' : 'Raw JSON' }}\n </button>\n </h5>\n @if (showRawResult) {\n <div class=\"code-editor-container\">\n <div class=\"code-editor-header\">\n <span class=\"language-badge\">JSON</span>\n <button \n kendoButton\n fillMode=\"flat\" \n size=\"small\"\n class=\"copy-btn\"\n (click)=\"copyResultDataToClipboard()\">\n <i class=\"fa-solid fa-copy\"></i>\n </button>\n </div>\n <pre class=\"code-editor json\">{{ formatResultData(executionResult.ResultData) }}</pre>\n </div>\n } @else {\n <!-- Output Parameters Mapping -->\n @if (getOutputParams().length > 0) {\n <div class=\"output-params\">\n @for (outputParam of getOutputParams(); track outputParam.ID) {\n <div class=\"output-param\">\n <label>\n <i class=\"fa-solid fa-tag\"></i> {{ outputParam.Name }}\n </label>\n <div class=\"code-editor-container compact\">\n <pre class=\"code-editor\">{{ formatResultData(executionResult.ResultData[outputParam.Name]) }}</pre>\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"code-editor-container\">\n <div class=\"code-editor-header\">\n <span class=\"language-badge\">JSON</span>\n <button \n kendoButton\n fillMode=\"flat\" \n size=\"small\"\n class=\"copy-btn\"\n (click)=\"copyResultDataToClipboard()\">\n <i class=\"fa-solid fa-copy\"></i>\n </button>\n </div>\n <pre class=\"code-editor json\">{{ formatResultData(executionResult.ResultData) }}</pre>\n </div>\n }\n }\n </div>\n }\n </div>\n }\n </div>\n }\n</div>", styles: [".action-test-harness {\n background: white;\n border-radius: 8px;\n padding: 24px;\n max-width: 100%;\n margin: 0;\n width: 100%;\n box-sizing: border-box;\n}\n\n/* Ensure all child elements use border-box */\n.action-test-harness * {\n box-sizing: border-box;\n}\n\n/* Header */\n.harness-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n padding-bottom: 16px;\n border-bottom: 2px solid #e9ecef;\n flex-wrap: wrap;\n gap: 12px;\n}\n\n.harness-header h3 {\n margin: 0;\n color: #2c3e50;\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.harness-header h3 i {\n color: #6f42c1;\n}\n\n.header-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n/* Parameters Section */\n.parameters-section {\n margin-bottom: 20px;\n width: 100%;\n overflow-x: auto;\n}\n\n.parameters-section h4 {\n margin: 0 0 16px 0;\n color: #495057;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.no-params {\n text-align: center;\n padding: 40px;\n color: #6c757d;\n}\n\n.no-params i {\n font-size: 2.5em;\n margin-bottom: 12px;\n opacity: 0.3;\n}\n\n.params-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\n gap: 16px;\n width: 100%;\n}\n\n.param-field {\n background: #f8f9fa;\n border: 1px solid #e9ecef;\n border-radius: 6px;\n padding: 12px;\n transition: all 0.2s;\n min-width: 0;\n overflow: hidden;\n}\n\n.param-field:hover {\n border-color: #dee2e6;\n box-shadow: 0 2px 4px rgba(0,0,0,0.05);\n}\n\n.param-field.required {\n border-left: 3px solid #ffc107;\n}\n\n.param-field.error {\n border-color: #dc3545;\n background: #f8d7da20;\n}\n\n.param-field label {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 8px;\n font-weight: 600;\n color: #495057;\n flex-wrap: wrap;\n font-size: 0.95em;\n}\n\n.required-indicator {\n color: #dc3545;\n}\n\n.array-badge {\n background: #6f42c1;\n color: white;\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.75em;\n font-weight: 500;\n}\n\n.value-type {\n margin-left: auto;\n color: #6c757d;\n font-size: 0.8em;\n font-weight: 400;\n white-space: nowrap;\n}\n\n.param-description {\n color: #6c757d;\n font-size: 0.9em;\n margin-bottom: 8px;\n line-height: 1.4;\n}\n\n.param-input {\n width: 100%;\n padding: 8px 12px;\n border: 1px solid #ced4da;\n border-radius: 4px;\n font-family: inherit;\n font-size: 0.95em;\n transition: border-color 0.2s;\n box-sizing: border-box;\n max-width: 100%;\n}\n\n.param-input:focus {\n outline: none;\n border-color: #80bdff;\n box-shadow: 0 0 0 2px rgba(0,123,255,0.1);\n}\n\ntextarea.param-input {\n resize: vertical;\n font-family: 'Courier New', monospace;\n font-size: 0.9em;\n}\n\n.checkbox-wrapper {\n padding: 8px 0;\n}\n\n.param-checkbox {\n width: 20px;\n height: 20px;\n cursor: pointer;\n}\n\n.field-error {\n margin-top: 6px;\n color: #dc3545;\n font-size: 0.85em;\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.default-hint {\n margin-top: 6px;\n color: #6c757d;\n font-size: 0.85em;\n font-style: italic;\n}\n\n/* Action Buttons */\n.action-buttons {\n display: flex;\n gap: 12px;\n margin-bottom: 24px;\n padding: 16px;\n background: #f8f9fa;\n border-radius: 6px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n/* Results Section */\n.results-section {\n border: 2px solid #e9ecef;\n border-radius: 8px;\n overflow: hidden;\n margin-top: 20px;\n}\n\n.results-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n background: #f8f9fa;\n border-bottom: 1px solid #e9ecef;\n}\n\n.results-header h4 {\n margin: 0;\n color: #495057;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.execution-meta {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.execution-time {\n color: #6c757d;\n font-size: 0.9em;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n/* Error Result */\n.error-result {\n padding: 20px;\n background: #f8d7da;\n display: flex;\n gap: 16px;\n align-items: flex-start;\n}\n\n.error-result i {\n font-size: 1.5em;\n color: #dc3545;\n flex-shrink: 0;\n}\n\n.error-content h5 {\n margin: 0 0 8px 0;\n color: #721c24;\n}\n\n.error-content p {\n margin: 0;\n color: #721c24;\n}\n\n/* Success Result */\n.success-result {\n background: white;\n}\n\n.success-result.failure .status-banner {\n background: #dc3545 !important;\n}\n\n.status-banner {\n padding: 16px 20px;\n color: white;\n display: flex;\n align-items: center;\n gap: 12px;\n font-weight: 600;\n font-size: 1.1em;\n}\n\n.status-banner i {\n font-size: 1.2em;\n}\n\n.result-code {\n margin-left: auto;\n background: rgba(255,255,255,0.2);\n padding: 4px 10px;\n border-radius: 12px;\n font-size: 0.9em;\n}\n\n.result-message {\n padding: 20px;\n border-bottom: 1px solid #e9ecef;\n}\n\n.result-message h5 {\n margin: 0 0 12px 0;\n color: #495057;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.result-message h5 i {\n color: #17a2b8;\n}\n\n.result-message p {\n margin: 0;\n color: #6c757d;\n line-height: 1.5;\n}\n\n.result-message .code-editor-container {\n margin-bottom: 0;\n}\n\n.result-message .code-editor {\n color: #e8e8e8;\n background: #2d2d30;\n max-height: 200px;\n overflow-y: auto;\n}\n\n/* Result Data */\n.result-data {\n padding: 20px;\n}\n\n.result-data h5 {\n margin: 0 0 16px 0;\n color: #495057;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.result-data h5 i {\n color: #6f42c1;\n}\n\n.toggle-view-btn {\n margin-left: auto;\n font-size: 0.85em;\n}\n\n.raw-data {\n background: #f8f9fa;\n border: 1px solid #e9ecef;\n border-radius: 4px;\n padding: 16px;\n margin: 0;\n font-family: 'Courier New', monospace;\n font-size: 0.9em;\n overflow-x: auto;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n/* Code Editor Styles */\n.code-editor-container {\n background: #1e1e1e;\n border-radius: 6px;\n overflow: hidden;\n margin-bottom: 16px;\n}\n\n.code-editor-container.compact {\n margin-bottom: 0;\n}\n\n.code-editor-header {\n background: #2d2d30;\n padding: 8px 12px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n border-bottom: 1px solid #3e3e42;\n}\n\n.language-badge {\n background: #007acc;\n color: white;\n padding: 2px 8px;\n border-radius: 3px;\n font-size: 0.75em;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.copy-btn {\n color: #cccccc;\n padding: 4px 8px;\n min-width: auto;\n}\n\n.copy-btn:hover {\n color: #ffffff;\n background: rgba(255, 255, 255, 0.1);\n}\n\n.code-editor {\n background: #1e1e1e;\n color: #d4d4d4;\n border: none;\n border-radius: 0;\n padding: 16px;\n margin: 0;\n font-family: 'Consolas', 'Monaco', 'Courier New', monospace;\n font-size: 13px;\n line-height: 1.5;\n overflow-x: auto;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n.code-editor.json {\n /* JSON syntax highlighting simulation */\n color: #9cdcfe;\n}\n\n/* Output Parameters */\n.output-params {\n display: grid;\n gap: 16px;\n}\n\n.output-param {\n background: #f8f9fa;\n border: 1px solid #e9ecef;\n border-radius: 6px;\n padding: 16px;\n}\n\n.output-param label {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 8px;\n font-weight: 600;\n color: #495057;\n}\n\n.output-param label i {\n color: #6f42c1;\n font-size: 0.9em;\n}\n\n.output-value {\n background: white;\n border: 1px solid #dee2e6;\n border-radius: 4px;\n padding: 12px;\n}\n\n.output-value pre {\n margin: 0;\n font-family: 'Courier New', monospace;\n font-size: 0.9em;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n.no-value {\n color: #6c757d;\n font-style: italic;\n}\n\n/* Responsive */\n@media (max-width: 768px) {\n .params-grid {\n grid-template-columns: 1fr;\n }\n \n .harness-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n \n .results-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n \n .action-buttons {\n flex-wrap: wrap;\n }\n}"] }]
|
|
700
|
-
}], () => [{ type: i0.ChangeDetectorRef }], { action: [{
|
|
701
|
-
type: Input
|
|
702
|
-
}], actionParams: [{
|
|
703
|
-
type: Input
|
|
704
|
-
}], isVisible: [{
|
|
705
|
-
type: Input
|
|
706
|
-
}], visibilityChange: [{
|
|
707
|
-
type: Output
|
|
708
|
-
}] }); })();
|
|
709
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ActionTestHarnessComponent, { className: "ActionTestHarnessComponent", filePath: "src/lib/custom/Actions/action-test-harness.component.ts", lineNumber: 24 }); })();
|
|
710
|
-
//# sourceMappingURL=action-test-harness.component.js.map
|