@memberjunction/ng-core-entity-forms 5.14.0 → 5.16.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/AIPromptRuns/ai-prompt-run-form.component.js +55 -33
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +340 -315
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.d.ts +35 -2
- package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.js +917 -632
- package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAICredentialBinding/mjaicredentialbinding.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAICredentialBinding/mjaicredentialbinding.form.component.js +16 -4
- package/dist/lib/generated/Entities/MJAICredentialBinding/mjaicredentialbinding.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIModel/mjaimodel.form.component.js +117 -113
- package/dist/lib/generated/Entities/MJAIModel/mjaimodel.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIModelType/mjaimodeltype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIModelType/mjaimodeltype.form.component.js +23 -13
- package/dist/lib/generated/Entities/MJAIModelType/mjaimodeltype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIModelVendor/mjaimodelvendor.form.component.js +15 -11
- package/dist/lib/generated/Entities/MJAIModelVendor/mjaimodelvendor.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js +91 -87
- package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIPromptModel/mjaipromptmodel.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJAIPromptModel/mjaipromptmodel.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js +13 -15
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIVendor/mjaivendor.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJAIVendor/mjaivendor.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCompanyIntegration/mjcompanyintegration.form.component.js +39 -37
- package/dist/lib/generated/Entities/MJCompanyIntegration/mjcompanyintegration.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCompanyIntegrationRun/mjcompanyintegrationrun.form.component.js +29 -27
- package/dist/lib/generated/Entities/MJCompanyIntegrationRun/mjcompanyintegrationrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +109 -73
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityOrganicKey/mjentityorganickey.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJEntityOrganicKey/mjentityorganickey.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJEntityOrganicKey/mjentityorganickey.form.component.js +99 -0
- package/dist/lib/generated/Entities/MJEntityOrganicKey/mjentityorganickey.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJEntityOrganicKeyRelatedEntity/mjentityorganickeyrelatedentity.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJEntityOrganicKeyRelatedEntity/mjentityorganickeyrelatedentity.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJEntityOrganicKeyRelatedEntity/mjentityorganickeyrelatedentity.form.component.js +87 -0
- package/dist/lib/generated/Entities/MJEntityOrganicKeyRelatedEntity/mjentityorganickeyrelatedentity.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJScheduledJob/mjscheduledjob.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJScheduledJob/mjscheduledjob.form.component.js +22 -4
- package/dist/lib/generated/Entities/MJScheduledJob/mjscheduledjob.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJScheduledJobRun/mjscheduledjobrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJScheduledJobRun/mjscheduledjobrun.form.component.js +22 -4
- package/dist/lib/generated/Entities/MJScheduledJobRun/mjscheduledjobrun.form.component.js.map +1 -1
- package/dist/lib/generated/generated-forms.module.d.ts +137 -135
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +49 -43
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/dist/public-api.d.ts +23 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +28 -3
- package/dist/public-api.js.map +1 -1
- package/package.json +32 -32
|
@@ -38,7 +38,7 @@ function _forTrack0($index, $item) { return this.getModelTrackId($item) || $inde
|
|
|
38
38
|
const _forTrack1 = ($index, $item) => $item.ID;
|
|
39
39
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
40
40
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
41
|
-
i0.ɵɵelementStart(0, "kendo-textbox",
|
|
41
|
+
i0.ɵɵelementStart(0, "kendo-textbox", 52);
|
|
42
42
|
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptFormComponentExtended_Conditional_2_Conditional_9_Template_kendo_textbox_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.record.Name, $event) || (ctx_r1.record.Name = $event); return i0.ɵɵresetView($event); });
|
|
43
43
|
i0.ɵɵelementEnd();
|
|
44
44
|
} if (rf & 2) {
|
|
@@ -46,10 +46,10 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_9_Template(rf
|
|
|
46
46
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.Name);
|
|
47
47
|
} }
|
|
48
48
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
49
|
-
i0.ɵɵelementStart(0, "h4",
|
|
49
|
+
i0.ɵɵelementStart(0, "h4", 53);
|
|
50
50
|
i0.ɵɵtext(1);
|
|
51
51
|
i0.ɵɵelementEnd();
|
|
52
|
-
i0.ɵɵelementStart(2, "span",
|
|
52
|
+
i0.ɵɵelementStart(2, "span", 54);
|
|
53
53
|
i0.ɵɵtext(3);
|
|
54
54
|
i0.ɵɵelementEnd();
|
|
55
55
|
} if (rf & 2) {
|
|
@@ -62,14 +62,14 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_10_Template(r
|
|
|
62
62
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Status, " ");
|
|
63
63
|
} }
|
|
64
64
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_11_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
65
|
-
i0.ɵɵelementStart(0, "div",
|
|
66
|
-
i0.ɵɵelement(1, "i",
|
|
65
|
+
i0.ɵɵelementStart(0, "div", 57);
|
|
66
|
+
i0.ɵɵelement(1, "i", 59);
|
|
67
67
|
i0.ɵɵtext(2, " Loading types... ");
|
|
68
68
|
i0.ɵɵelementEnd();
|
|
69
69
|
} }
|
|
70
70
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_11_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
71
71
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
72
|
-
i0.ɵɵelementStart(0, "kendo-dropdownlist",
|
|
72
|
+
i0.ɵɵelementStart(0, "kendo-dropdownlist", 60);
|
|
73
73
|
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptFormComponentExtended_Conditional_2_Conditional_11_Conditional_11_Template_kendo_dropdownlist_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.record.TypeID, $event) || (ctx_r1.record.TypeID = $event); return i0.ɵɵresetView($event); });
|
|
74
74
|
i0.ɵɵelementEnd();
|
|
75
75
|
} if (rf & 2) {
|
|
@@ -82,15 +82,15 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_11_Template(r
|
|
|
82
82
|
i0.ɵɵelementStart(0, "div", 14)(1, "div")(2, "label", 46);
|
|
83
83
|
i0.ɵɵtext(3, "Status");
|
|
84
84
|
i0.ɵɵelementEnd();
|
|
85
|
-
i0.ɵɵelementStart(4, "kendo-dropdownlist",
|
|
85
|
+
i0.ɵɵelementStart(4, "kendo-dropdownlist", 55);
|
|
86
86
|
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptFormComponentExtended_Conditional_2_Conditional_11_Template_kendo_dropdownlist_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.record.Status, $event) || (ctx_r1.record.Status = $event); return i0.ɵɵresetView($event); });
|
|
87
87
|
i0.ɵɵelementEnd()();
|
|
88
88
|
i0.ɵɵelementStart(5, "div")(6, "label", 46);
|
|
89
89
|
i0.ɵɵtext(7, " Type ");
|
|
90
|
-
i0.ɵɵelementStart(8, "span",
|
|
90
|
+
i0.ɵɵelementStart(8, "span", 56);
|
|
91
91
|
i0.ɵɵtext(9, "*");
|
|
92
92
|
i0.ɵɵelementEnd()();
|
|
93
|
-
i0.ɵɵconditionalCreate(10, MJAIPromptFormComponentExtended_Conditional_2_Conditional_11_Conditional_10_Template, 3, 0, "div",
|
|
93
|
+
i0.ɵɵconditionalCreate(10, MJAIPromptFormComponentExtended_Conditional_2_Conditional_11_Conditional_10_Template, 3, 0, "div", 57)(11, MJAIPromptFormComponentExtended_Conditional_2_Conditional_11_Conditional_11_Template, 1, 4, "kendo-dropdownlist", 58);
|
|
94
94
|
i0.ɵɵelementEnd()();
|
|
95
95
|
} if (rf & 2) {
|
|
96
96
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -102,7 +102,7 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_11_Template(r
|
|
|
102
102
|
} }
|
|
103
103
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
104
104
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
105
|
-
i0.ɵɵelementStart(0, "kendo-textarea",
|
|
105
|
+
i0.ɵɵelementStart(0, "kendo-textarea", 61);
|
|
106
106
|
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptFormComponentExtended_Conditional_2_Conditional_12_Template_kendo_textarea_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.record.Description, $event) || (ctx_r1.record.Description = $event); return i0.ɵɵresetView($event); });
|
|
107
107
|
i0.ɵɵelementEnd();
|
|
108
108
|
} if (rf & 2) {
|
|
@@ -121,7 +121,7 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_13_Template(r
|
|
|
121
121
|
} }
|
|
122
122
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
123
123
|
i0.ɵɵelementStart(0, "div", 18);
|
|
124
|
-
i0.ɵɵelement(1, "i",
|
|
124
|
+
i0.ɵɵelement(1, "i", 62);
|
|
125
125
|
i0.ɵɵelementStart(2, "span", 20);
|
|
126
126
|
i0.ɵɵtext(3, "Type:");
|
|
127
127
|
i0.ɵɵelementEnd();
|
|
@@ -135,14 +135,14 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_15_Template(r
|
|
|
135
135
|
} }
|
|
136
136
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_28_Template(rf, ctx) { if (rf & 1) {
|
|
137
137
|
i0.ɵɵelementStart(0, "div", 18);
|
|
138
|
-
i0.ɵɵelement(1, "i",
|
|
139
|
-
i0.ɵɵelementStart(2, "span",
|
|
138
|
+
i0.ɵɵelement(1, "i", 63);
|
|
139
|
+
i0.ɵɵelementStart(2, "span", 64);
|
|
140
140
|
i0.ɵɵtext(3, "Caching Enabled");
|
|
141
141
|
i0.ɵɵelementEnd()();
|
|
142
142
|
} }
|
|
143
143
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_29_Template(rf, ctx) { if (rf & 1) {
|
|
144
144
|
i0.ɵɵelementStart(0, "div", 18);
|
|
145
|
-
i0.ɵɵelement(1, "i",
|
|
145
|
+
i0.ɵɵelement(1, "i", 65);
|
|
146
146
|
i0.ɵɵelementStart(2, "span", 20);
|
|
147
147
|
i0.ɵɵtext(3, "Effort Level:");
|
|
148
148
|
i0.ɵɵelementEnd();
|
|
@@ -156,9 +156,9 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_29_Template(r
|
|
|
156
156
|
} }
|
|
157
157
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_32_Template(rf, ctx) { if (rf & 1) {
|
|
158
158
|
const _r6 = i0.ɵɵgetCurrentView();
|
|
159
|
-
i0.ɵɵelementStart(0, "button",
|
|
159
|
+
i0.ɵɵelementStart(0, "button", 66);
|
|
160
160
|
i0.ɵɵlistener("click", function MJAIPromptFormComponentExtended_Conditional_2_Conditional_32_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openTestHarness()); });
|
|
161
|
-
i0.ɵɵelement(1, "i",
|
|
161
|
+
i0.ɵɵelement(1, "i", 67);
|
|
162
162
|
i0.ɵɵtext(2, " Run ");
|
|
163
163
|
i0.ɵɵelementEnd();
|
|
164
164
|
} if (rf & 2) {
|
|
@@ -192,7 +192,7 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_33_Template(r
|
|
|
192
192
|
i0.ɵɵconditional(!ctx_r1.template && ctx_r1.record.TemplateID ? 3 : -1);
|
|
193
193
|
} }
|
|
194
194
|
function MJAIPromptFormComponentExtended_Conditional_2_ng_template_36_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
195
|
-
i0.ɵɵelementStart(0, "span",
|
|
195
|
+
i0.ɵɵelementStart(0, "span", 69);
|
|
196
196
|
i0.ɵɵtext(1);
|
|
197
197
|
i0.ɵɵelementEnd();
|
|
198
198
|
} if (rf & 2) {
|
|
@@ -201,10 +201,10 @@ function MJAIPromptFormComponentExtended_Conditional_2_ng_template_36_Conditiona
|
|
|
201
201
|
i0.ɵɵtextInterpolate1("\u2022 ", ctx_r1.template.Name);
|
|
202
202
|
} }
|
|
203
203
|
function MJAIPromptFormComponentExtended_Conditional_2_ng_template_36_Template(rf, ctx) { if (rf & 1) {
|
|
204
|
-
i0.ɵɵelementStart(0, "span",
|
|
204
|
+
i0.ɵɵelementStart(0, "span", 68);
|
|
205
205
|
i0.ɵɵelement(1, "i", 22);
|
|
206
206
|
i0.ɵɵtext(2, " Template Editor ");
|
|
207
|
-
i0.ɵɵconditionalCreate(3, MJAIPromptFormComponentExtended_Conditional_2_ng_template_36_Conditional_3_Template, 2, 1, "span",
|
|
207
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptFormComponentExtended_Conditional_2_ng_template_36_Conditional_3_Template, 2, 1, "span", 69);
|
|
208
208
|
i0.ɵɵelementEnd();
|
|
209
209
|
} if (rf & 2) {
|
|
210
210
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -213,15 +213,15 @@ function MJAIPromptFormComponentExtended_Conditional_2_ng_template_36_Template(r
|
|
|
213
213
|
} }
|
|
214
214
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_38_Template(rf, ctx) { if (rf & 1) {
|
|
215
215
|
i0.ɵɵelementStart(0, "div", 32);
|
|
216
|
-
i0.ɵɵelement(1, "i",
|
|
216
|
+
i0.ɵɵelement(1, "i", 70);
|
|
217
217
|
i0.ɵɵtext(2, " Loading template... ");
|
|
218
218
|
i0.ɵɵelementEnd();
|
|
219
219
|
} }
|
|
220
220
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_39_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
221
221
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
222
|
-
i0.ɵɵelementStart(0, "button",
|
|
222
|
+
i0.ɵɵelementStart(0, "button", 77);
|
|
223
223
|
i0.ɵɵlistener("click", function MJAIPromptFormComponentExtended_Conditional_2_Conditional_39_Conditional_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.createNewTemplate()); });
|
|
224
|
-
i0.ɵɵelement(1, "i",
|
|
224
|
+
i0.ɵɵelement(1, "i", 78);
|
|
225
225
|
i0.ɵɵtext(2, " Create New Template ");
|
|
226
226
|
i0.ɵɵelementEnd();
|
|
227
227
|
} if (rf & 2) {
|
|
@@ -229,9 +229,9 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_39_Conditiona
|
|
|
229
229
|
} }
|
|
230
230
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_39_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
231
231
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
232
|
-
i0.ɵɵelementStart(0, "button",
|
|
232
|
+
i0.ɵɵelementStart(0, "button", 79);
|
|
233
233
|
i0.ɵɵlistener("click", function MJAIPromptFormComponentExtended_Conditional_2_Conditional_39_Conditional_8_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.linkExistingTemplate()); });
|
|
234
|
-
i0.ɵɵelement(1, "i",
|
|
234
|
+
i0.ɵɵelement(1, "i", 80);
|
|
235
235
|
i0.ɵɵtext(2, " Link Existing Template ");
|
|
236
236
|
i0.ɵɵelementEnd();
|
|
237
237
|
} if (rf & 2) {
|
|
@@ -239,16 +239,16 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_39_Conditiona
|
|
|
239
239
|
} }
|
|
240
240
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_39_Template(rf, ctx) { if (rf & 1) {
|
|
241
241
|
i0.ɵɵelementStart(0, "div", 33);
|
|
242
|
-
i0.ɵɵelement(1, "i",
|
|
243
|
-
i0.ɵɵelementStart(2, "h5",
|
|
242
|
+
i0.ɵɵelement(1, "i", 71);
|
|
243
|
+
i0.ɵɵelementStart(2, "h5", 72);
|
|
244
244
|
i0.ɵɵtext(3, "No Template Associated");
|
|
245
245
|
i0.ɵɵelementEnd();
|
|
246
|
-
i0.ɵɵelementStart(4, "p",
|
|
246
|
+
i0.ɵɵelementStart(4, "p", 73);
|
|
247
247
|
i0.ɵɵtext(5, " This AI prompt needs a template to define its structure and parameters. Create a new template or link to an existing one. ");
|
|
248
248
|
i0.ɵɵelementEnd();
|
|
249
|
-
i0.ɵɵelementStart(6, "div",
|
|
250
|
-
i0.ɵɵconditionalCreate(7, MJAIPromptFormComponentExtended_Conditional_2_Conditional_39_Conditional_7_Template, 3, 1, "button",
|
|
251
|
-
i0.ɵɵconditionalCreate(8, MJAIPromptFormComponentExtended_Conditional_2_Conditional_39_Conditional_8_Template, 3, 1, "button",
|
|
249
|
+
i0.ɵɵelementStart(6, "div", 74);
|
|
250
|
+
i0.ɵɵconditionalCreate(7, MJAIPromptFormComponentExtended_Conditional_2_Conditional_39_Conditional_7_Template, 3, 1, "button", 75);
|
|
251
|
+
i0.ɵɵconditionalCreate(8, MJAIPromptFormComponentExtended_Conditional_2_Conditional_39_Conditional_8_Template, 3, 1, "button", 76);
|
|
252
252
|
i0.ɵɵelementEnd()();
|
|
253
253
|
} if (rf & 2) {
|
|
254
254
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -259,9 +259,9 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_39_Template(r
|
|
|
259
259
|
} }
|
|
260
260
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_40_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
261
261
|
const _r10 = i0.ɵɵgetCurrentView();
|
|
262
|
-
i0.ɵɵelementStart(0, "button",
|
|
262
|
+
i0.ɵɵelementStart(0, "button", 77);
|
|
263
263
|
i0.ɵɵlistener("click", function MJAIPromptFormComponentExtended_Conditional_2_Conditional_40_Conditional_10_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.createNewTemplate()); });
|
|
264
|
-
i0.ɵɵelement(1, "i",
|
|
264
|
+
i0.ɵɵelement(1, "i", 78);
|
|
265
265
|
i0.ɵɵtext(2, " Create New Template ");
|
|
266
266
|
i0.ɵɵelementEnd();
|
|
267
267
|
} if (rf & 2) {
|
|
@@ -270,19 +270,19 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_40_Conditiona
|
|
|
270
270
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_40_Template(rf, ctx) { if (rf & 1) {
|
|
271
271
|
const _r9 = i0.ɵɵgetCurrentView();
|
|
272
272
|
i0.ɵɵelementStart(0, "div", 34);
|
|
273
|
-
i0.ɵɵelement(1, "i",
|
|
274
|
-
i0.ɵɵelementStart(2, "h5",
|
|
273
|
+
i0.ɵɵelement(1, "i", 81);
|
|
274
|
+
i0.ɵɵelementStart(2, "h5", 82);
|
|
275
275
|
i0.ɵɵtext(3, "Template Not Found");
|
|
276
276
|
i0.ɵɵelementEnd();
|
|
277
|
-
i0.ɵɵelementStart(4, "p",
|
|
277
|
+
i0.ɵɵelementStart(4, "p", 73);
|
|
278
278
|
i0.ɵɵtext(5, " The referenced template could not be loaded. It may have been deleted or moved. ");
|
|
279
279
|
i0.ɵɵelementEnd();
|
|
280
|
-
i0.ɵɵelementStart(6, "div",
|
|
280
|
+
i0.ɵɵelementStart(6, "div", 74)(7, "button", 79);
|
|
281
281
|
i0.ɵɵlistener("click", function MJAIPromptFormComponentExtended_Conditional_2_Conditional_40_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.loadTemplate()); });
|
|
282
|
-
i0.ɵɵelement(8, "i",
|
|
282
|
+
i0.ɵɵelement(8, "i", 83);
|
|
283
283
|
i0.ɵɵtext(9, " Retry Loading ");
|
|
284
284
|
i0.ɵɵelementEnd();
|
|
285
|
-
i0.ɵɵconditionalCreate(10, MJAIPromptFormComponentExtended_Conditional_2_Conditional_40_Conditional_10_Template, 3, 1, "button",
|
|
285
|
+
i0.ɵɵconditionalCreate(10, MJAIPromptFormComponentExtended_Conditional_2_Conditional_40_Conditional_10_Template, 3, 1, "button", 75);
|
|
286
286
|
i0.ɵɵelementEnd()();
|
|
287
287
|
} if (rf & 2) {
|
|
288
288
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -293,9 +293,9 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_40_Template(r
|
|
|
293
293
|
} }
|
|
294
294
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_41_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
295
295
|
const _r12 = i0.ɵɵgetCurrentView();
|
|
296
|
-
i0.ɵɵelementStart(0, "button",
|
|
296
|
+
i0.ɵɵelementStart(0, "button", 89);
|
|
297
297
|
i0.ɵɵlistener("click", function MJAIPromptFormComponentExtended_Conditional_2_Conditional_41_Conditional_1_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.linkExistingTemplate()); });
|
|
298
|
-
i0.ɵɵelement(1, "i",
|
|
298
|
+
i0.ɵɵelement(1, "i", 90);
|
|
299
299
|
i0.ɵɵtext(2, " Change Template ");
|
|
300
300
|
i0.ɵɵelementEnd();
|
|
301
301
|
} if (rf & 2) {
|
|
@@ -303,18 +303,18 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_41_Conditiona
|
|
|
303
303
|
} }
|
|
304
304
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_41_Conditional_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
305
305
|
const _r13 = i0.ɵɵgetCurrentView();
|
|
306
|
-
i0.ɵɵelementStart(0, "button",
|
|
306
|
+
i0.ɵɵelementStart(0, "button", 91);
|
|
307
307
|
i0.ɵɵlistener("click", function MJAIPromptFormComponentExtended_Conditional_2_Conditional_41_Conditional_1_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.openTemplateInNewWindow()); });
|
|
308
|
-
i0.ɵɵelement(1, "i",
|
|
308
|
+
i0.ɵɵelement(1, "i", 92);
|
|
309
309
|
i0.ɵɵtext(2, " Open in New Window ");
|
|
310
310
|
i0.ɵɵelementEnd();
|
|
311
311
|
} if (rf & 2) {
|
|
312
312
|
i0.ɵɵproperty("fillMode", "outline")("size", "small");
|
|
313
313
|
} }
|
|
314
314
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_41_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
315
|
-
i0.ɵɵelementStart(0, "div",
|
|
316
|
-
i0.ɵɵconditionalCreate(1, MJAIPromptFormComponentExtended_Conditional_2_Conditional_41_Conditional_1_Conditional_1_Template, 3, 2, "button",
|
|
317
|
-
i0.ɵɵconditionalCreate(2, MJAIPromptFormComponentExtended_Conditional_2_Conditional_41_Conditional_1_Conditional_2_Template, 3, 2, "button",
|
|
315
|
+
i0.ɵɵelementStart(0, "div", 84);
|
|
316
|
+
i0.ɵɵconditionalCreate(1, MJAIPromptFormComponentExtended_Conditional_2_Conditional_41_Conditional_1_Conditional_1_Template, 3, 2, "button", 87);
|
|
317
|
+
i0.ɵɵconditionalCreate(2, MJAIPromptFormComponentExtended_Conditional_2_Conditional_41_Conditional_1_Conditional_2_Template, 3, 2, "button", 88);
|
|
318
318
|
i0.ɵɵelementEnd();
|
|
319
319
|
} if (rf & 2) {
|
|
320
320
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -326,8 +326,8 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_41_Conditiona
|
|
|
326
326
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_41_Template(rf, ctx) { if (rf & 1) {
|
|
327
327
|
const _r11 = i0.ɵɵgetCurrentView();
|
|
328
328
|
i0.ɵɵelementStart(0, "div", 35);
|
|
329
|
-
i0.ɵɵconditionalCreate(1, MJAIPromptFormComponentExtended_Conditional_2_Conditional_41_Conditional_1_Template, 3, 2, "div",
|
|
330
|
-
i0.ɵɵelementStart(2, "div",
|
|
329
|
+
i0.ɵɵconditionalCreate(1, MJAIPromptFormComponentExtended_Conditional_2_Conditional_41_Conditional_1_Template, 3, 2, "div", 84);
|
|
330
|
+
i0.ɵɵelementStart(2, "div", 85)(3, "mj-template-editor", 86, 1);
|
|
331
331
|
i0.ɵɵlistener("contentChange", function MJAIPromptFormComponentExtended_Conditional_2_Conditional_41_Template_mj_template_editor_contentChange_3_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onTemplateContentChange($event)); })("runTemplate", function MJAIPromptFormComponentExtended_Conditional_2_Conditional_41_Template_mj_template_editor_runTemplate_3_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onTemplateRun($event)); });
|
|
332
332
|
i0.ɵɵelementEnd()()();
|
|
333
333
|
} if (rf & 2) {
|
|
@@ -338,7 +338,7 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_41_Template(r
|
|
|
338
338
|
i0.ɵɵproperty("template", ctx_r1.template)("config", ctx_r1.templateEditorConfig);
|
|
339
339
|
} }
|
|
340
340
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
341
|
-
i0.ɵɵelementStart(0, "span",
|
|
341
|
+
i0.ɵɵelementStart(0, "span", 96);
|
|
342
342
|
i0.ɵɵtext(1);
|
|
343
343
|
i0.ɵɵelementEnd();
|
|
344
344
|
} if (rf & 2) {
|
|
@@ -347,12 +347,12 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_ng_templat
|
|
|
347
347
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.promptModels.length, " ");
|
|
348
348
|
} }
|
|
349
349
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
350
|
-
i0.ɵɵelementStart(0, "span",
|
|
351
|
-
i0.ɵɵelement(1, "i",
|
|
350
|
+
i0.ɵɵelementStart(0, "span", 68);
|
|
351
|
+
i0.ɵɵelement(1, "i", 95);
|
|
352
352
|
i0.ɵɵtext(2, " Models ");
|
|
353
|
-
i0.ɵɵconditionalCreate(3, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_ng_template_1_Conditional_3_Template, 2, 1, "span",
|
|
354
|
-
i0.ɵɵelementStart(4, "span",
|
|
355
|
-
i0.ɵɵelement(5, "i",
|
|
353
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_ng_template_1_Conditional_3_Template, 2, 1, "span", 96);
|
|
354
|
+
i0.ɵɵelementStart(4, "span", 97);
|
|
355
|
+
i0.ɵɵelement(5, "i", 98);
|
|
356
356
|
i0.ɵɵtext(6, " Priority order (first available model will be used) ");
|
|
357
357
|
i0.ɵɵelementEnd()();
|
|
358
358
|
} if (rf & 2) {
|
|
@@ -361,24 +361,24 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_ng_templat
|
|
|
361
361
|
i0.ɵɵconditional(ctx_r1.promptModels.length > 0 ? 3 : -1);
|
|
362
362
|
} }
|
|
363
363
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
364
|
-
i0.ɵɵelementStart(0, "div",
|
|
365
|
-
i0.ɵɵelement(1, "i",
|
|
364
|
+
i0.ɵɵelementStart(0, "div", 94);
|
|
365
|
+
i0.ɵɵelement(1, "i", 59);
|
|
366
366
|
i0.ɵɵtext(2, " Loading models... ");
|
|
367
367
|
i0.ɵɵelementEnd();
|
|
368
368
|
} }
|
|
369
369
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_0_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
370
370
|
const _r14 = i0.ɵɵgetCurrentView();
|
|
371
|
-
i0.ɵɵelementStart(0, "div",
|
|
371
|
+
i0.ɵɵelementStart(0, "div", 101)(1, "button", 102);
|
|
372
372
|
i0.ɵɵlistener("click", function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_0_Conditional_3_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.addNewModel()); });
|
|
373
|
-
i0.ɵɵelement(2, "i",
|
|
373
|
+
i0.ɵɵelement(2, "i", 78);
|
|
374
374
|
i0.ɵɵtext(3, " Add Model ");
|
|
375
375
|
i0.ɵɵelementEnd()();
|
|
376
376
|
} }
|
|
377
377
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
378
|
-
i0.ɵɵelementStart(0, "div",
|
|
379
|
-
i0.ɵɵelement(1, "i",
|
|
378
|
+
i0.ɵɵelementStart(0, "div", 99);
|
|
379
|
+
i0.ɵɵelement(1, "i", 100);
|
|
380
380
|
i0.ɵɵtext(2, " No models configured ");
|
|
381
|
-
i0.ɵɵconditionalCreate(3, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_0_Conditional_3_Template, 4, 0, "div",
|
|
381
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_0_Conditional_3_Template, 4, 0, "div", 101);
|
|
382
382
|
i0.ɵɵelementEnd();
|
|
383
383
|
} if (rf & 2) {
|
|
384
384
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -386,14 +386,14 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditiona
|
|
|
386
386
|
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanCreatePromptModels ? 3 : -1);
|
|
387
387
|
} }
|
|
388
388
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
389
|
-
i0.ɵɵelementStart(0, "div",
|
|
390
|
-
i0.ɵɵelement(1, "i",
|
|
389
|
+
i0.ɵɵelementStart(0, "div", 103);
|
|
390
|
+
i0.ɵɵelement(1, "i", 108);
|
|
391
391
|
i0.ɵɵtext(2, " Models are tried in priority order (highest priority first). The first available model that meets requirements will be used for execution. ");
|
|
392
392
|
i0.ɵɵelementEnd();
|
|
393
393
|
} }
|
|
394
394
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
395
|
-
i0.ɵɵelement(0, "i",
|
|
396
|
-
i0.ɵɵelementStart(1, "span",
|
|
395
|
+
i0.ɵɵelement(0, "i", 124);
|
|
396
|
+
i0.ɵɵelementStart(1, "span", 125);
|
|
397
397
|
i0.ɵɵtext(2);
|
|
398
398
|
i0.ɵɵelementEnd();
|
|
399
399
|
} if (rf & 2) {
|
|
@@ -402,7 +402,7 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditiona
|
|
|
402
402
|
i0.ɵɵtextInterpolate1("#", ɵ$index_312_r16 + 1);
|
|
403
403
|
} }
|
|
404
404
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
405
|
-
i0.ɵɵelementStart(0, "span",
|
|
405
|
+
i0.ɵɵelementStart(0, "span", 111);
|
|
406
406
|
i0.ɵɵtext(1);
|
|
407
407
|
i0.ɵɵelementEnd();
|
|
408
408
|
} if (rf & 2) {
|
|
@@ -415,7 +415,7 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditiona
|
|
|
415
415
|
} }
|
|
416
416
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
417
417
|
const _r19 = i0.ɵɵgetCurrentView();
|
|
418
|
-
i0.ɵɵelementStart(0, "kendo-dropdownlist",
|
|
418
|
+
i0.ɵɵelementStart(0, "kendo-dropdownlist", 126);
|
|
419
419
|
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_5_Template_kendo_dropdownlist_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r19); const model_r18 = i0.ɵɵnextContext().$implicit; i0.ɵɵtwoWayBindingSet(model_r18.ModelID, $event) || (model_r18.ModelID = $event); return i0.ɵɵresetView($event); });
|
|
420
420
|
i0.ɵɵlistener("valueChange", function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_5_Template_kendo_dropdownlist_valueChange_0_listener($event) { i0.ɵɵrestoreView(_r19); const ɵ$index_312_r16 = i0.ɵɵnextContext().$index; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.onModelChange($event, ɵ$index_312_r16)); });
|
|
421
421
|
i0.ɵɵelementEnd();
|
|
@@ -436,7 +436,7 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditiona
|
|
|
436
436
|
i0.ɵɵtextInterpolate(ctx_r1.getModelDisplayName(model_r18.ModelID));
|
|
437
437
|
} }
|
|
438
438
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_0_Conditional_0_ng_template_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
439
|
-
i0.ɵɵelementStart(0, "span",
|
|
439
|
+
i0.ɵɵelementStart(0, "span", 131);
|
|
440
440
|
i0.ɵɵtext(1);
|
|
441
441
|
i0.ɵɵelementEnd();
|
|
442
442
|
} if (rf & 2) {
|
|
@@ -449,7 +449,7 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditiona
|
|
|
449
449
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_0_Conditional_0_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
450
450
|
i0.ɵɵelementStart(0, "span");
|
|
451
451
|
i0.ɵɵtext(1);
|
|
452
|
-
i0.ɵɵconditionalCreate(2, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_0_Conditional_0_ng_template_1_Conditional_2_Template, 2, 1, "span",
|
|
452
|
+
i0.ɵɵconditionalCreate(2, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_0_Conditional_0_ng_template_1_Conditional_2_Template, 2, 1, "span", 131);
|
|
453
453
|
i0.ɵɵelementEnd();
|
|
454
454
|
} if (rf & 2) {
|
|
455
455
|
const dataItem_r21 = ctx.$implicit;
|
|
@@ -463,9 +463,9 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditiona
|
|
|
463
463
|
} }
|
|
464
464
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_0_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
465
465
|
const _r20 = i0.ɵɵgetCurrentView();
|
|
466
|
-
i0.ɵɵelementStart(0, "kendo-dropdownlist",
|
|
466
|
+
i0.ɵɵelementStart(0, "kendo-dropdownlist", 129);
|
|
467
467
|
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_0_Conditional_0_Template_kendo_dropdownlist_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r20); const model_r18 = i0.ɵɵnextContext(3).$implicit; i0.ɵɵtwoWayBindingSet(model_r18.VendorID, $event) || (model_r18.VendorID = $event); return i0.ɵɵresetView($event); });
|
|
468
|
-
i0.ɵɵtemplate(1, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_0_Conditional_0_ng_template_1_Template, 3, 4, "ng-template",
|
|
468
|
+
i0.ɵɵtemplate(1, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_0_Conditional_0_ng_template_1_Template, 3, 4, "ng-template", 130);
|
|
469
469
|
i0.ɵɵelementEnd();
|
|
470
470
|
} if (rf & 2) {
|
|
471
471
|
const model_r18 = i0.ɵɵnextContext(3).$implicit;
|
|
@@ -474,7 +474,7 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditiona
|
|
|
474
474
|
i0.ɵɵproperty("name", "vendorId_" + ctx_r1.getModelTrackId(model_r18))("data", ctx_r1.getVendorsForModelSync(model_r18.ModelID))("valuePrimitive", true)("filterable", true);
|
|
475
475
|
} }
|
|
476
476
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_0_Conditional_1_Conditional_0_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
477
|
-
i0.ɵɵelementStart(0, "span",
|
|
477
|
+
i0.ɵɵelementStart(0, "span", 131);
|
|
478
478
|
i0.ɵɵtext(1);
|
|
479
479
|
i0.ɵɵelementEnd();
|
|
480
480
|
} if (rf & 2) {
|
|
@@ -484,9 +484,9 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditiona
|
|
|
484
484
|
i0.ɵɵtextInterpolate1("(", ctx_r1.getModelVendorStatus(model_r18.ModelID, ctx_r1.getVendorsForModelSync(model_r18.ModelID)[0].ID), ")");
|
|
485
485
|
} }
|
|
486
486
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_0_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
487
|
-
i0.ɵɵelementStart(0, "span",
|
|
487
|
+
i0.ɵɵelementStart(0, "span", 133);
|
|
488
488
|
i0.ɵɵtext(1);
|
|
489
|
-
i0.ɵɵconditionalCreate(2, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_0_Conditional_1_Conditional_0_Conditional_2_Template, 2, 1, "span",
|
|
489
|
+
i0.ɵɵconditionalCreate(2, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_0_Conditional_1_Conditional_0_Conditional_2_Template, 2, 1, "span", 131);
|
|
490
490
|
i0.ɵɵelementEnd();
|
|
491
491
|
} if (rf & 2) {
|
|
492
492
|
const model_r18 = i0.ɵɵnextContext(4).$implicit;
|
|
@@ -498,37 +498,37 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditiona
|
|
|
498
498
|
i0.ɵɵconditional(ctx_r1.getModelVendorStatus(model_r18.ModelID, ctx_r1.getVendorsForModelSync(model_r18.ModelID)[0].ID) !== "Active" ? 2 : -1);
|
|
499
499
|
} }
|
|
500
500
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_0_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
501
|
-
i0.ɵɵelementStart(0, "span",
|
|
501
|
+
i0.ɵɵelementStart(0, "span", 127);
|
|
502
502
|
i0.ɵɵtext(1, "No vendors available");
|
|
503
503
|
i0.ɵɵelementEnd();
|
|
504
504
|
} }
|
|
505
505
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_0_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
506
|
-
i0.ɵɵconditionalCreate(0, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_0_Conditional_1_Conditional_0_Template, 3, 4, "span",
|
|
506
|
+
i0.ɵɵconditionalCreate(0, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_0_Conditional_1_Conditional_0_Template, 3, 4, "span", 132)(1, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_0_Conditional_1_Conditional_1_Template, 2, 0, "span", 127);
|
|
507
507
|
} if (rf & 2) {
|
|
508
508
|
const model_r18 = i0.ɵɵnextContext(3).$implicit;
|
|
509
509
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
510
510
|
i0.ɵɵconditional(ctx_r1.getVendorsForModelSync(model_r18.ModelID).length === 1 ? 0 : 1);
|
|
511
511
|
} }
|
|
512
512
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
513
|
-
i0.ɵɵconditionalCreate(0, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_0_Conditional_0_Template, 2, 5, "kendo-dropdownlist",
|
|
513
|
+
i0.ɵɵconditionalCreate(0, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_0_Conditional_0_Template, 2, 5, "kendo-dropdownlist", 128)(1, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_0_Conditional_1_Template, 2, 1);
|
|
514
514
|
} if (rf & 2) {
|
|
515
515
|
const model_r18 = i0.ɵɵnextContext(2).$implicit;
|
|
516
516
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
517
517
|
i0.ɵɵconditional(ctx_r1.shouldShowVendorDropdown(model_r18.ModelID) ? 0 : 1);
|
|
518
518
|
} }
|
|
519
519
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
520
|
-
i0.ɵɵelementStart(0, "span",
|
|
520
|
+
i0.ɵɵelementStart(0, "span", 127);
|
|
521
521
|
i0.ɵɵtext(1, "Select model first");
|
|
522
522
|
i0.ɵɵelementEnd();
|
|
523
523
|
} }
|
|
524
524
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
525
|
-
i0.ɵɵconditionalCreate(0, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_0_Template, 2, 1)(1, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_1_Template, 2, 0, "span",
|
|
525
|
+
i0.ɵɵconditionalCreate(0, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_0_Template, 2, 1)(1, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_1_Template, 2, 0, "span", 127);
|
|
526
526
|
} if (rf & 2) {
|
|
527
527
|
const model_r18 = i0.ɵɵnextContext().$implicit;
|
|
528
528
|
i0.ɵɵconditional(model_r18.ModelID ? 0 : 1);
|
|
529
529
|
} }
|
|
530
530
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_9_Conditional_0_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
531
|
-
i0.ɵɵelementStart(0, "span",
|
|
531
|
+
i0.ɵɵelementStart(0, "span", 131);
|
|
532
532
|
i0.ɵɵtext(1);
|
|
533
533
|
i0.ɵɵelementEnd();
|
|
534
534
|
} if (rf & 2) {
|
|
@@ -538,9 +538,9 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditiona
|
|
|
538
538
|
i0.ɵɵtextInterpolate1("(", ctx_r1.getModelVendorStatus(model_r18.ModelID, model_r18.VendorID), ")");
|
|
539
539
|
} }
|
|
540
540
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_9_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
541
|
-
i0.ɵɵelementStart(0, "span",
|
|
541
|
+
i0.ɵɵelementStart(0, "span", 116);
|
|
542
542
|
i0.ɵɵtext(1);
|
|
543
|
-
i0.ɵɵconditionalCreate(2, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_9_Conditional_0_Conditional_2_Template, 2, 1, "span",
|
|
543
|
+
i0.ɵɵconditionalCreate(2, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_9_Conditional_0_Conditional_2_Template, 2, 1, "span", 131);
|
|
544
544
|
i0.ɵɵelementEnd();
|
|
545
545
|
} if (rf & 2) {
|
|
546
546
|
const model_r18 = i0.ɵɵnextContext(2).$implicit;
|
|
@@ -552,33 +552,33 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditiona
|
|
|
552
552
|
i0.ɵɵconditional(ctx_r1.getModelVendorStatus(model_r18.ModelID, model_r18.VendorID) !== "Active" ? 2 : -1);
|
|
553
553
|
} }
|
|
554
554
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_9_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
555
|
-
i0.ɵɵelementStart(0, "span",
|
|
555
|
+
i0.ɵɵelementStart(0, "span", 135);
|
|
556
556
|
i0.ɵɵtext(1, "-");
|
|
557
557
|
i0.ɵɵelementEnd();
|
|
558
558
|
} }
|
|
559
559
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
560
|
-
i0.ɵɵconditionalCreate(0, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_9_Conditional_0_Template, 3, 4, "span",
|
|
560
|
+
i0.ɵɵconditionalCreate(0, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_9_Conditional_0_Template, 3, 4, "span", 134)(1, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_9_Conditional_1_Template, 2, 0, "span", 135);
|
|
561
561
|
} if (rf & 2) {
|
|
562
562
|
const model_r18 = i0.ɵɵnextContext().$implicit;
|
|
563
563
|
i0.ɵɵconditional(model_r18.VendorID && model_r18.ModelID ? 0 : 1);
|
|
564
564
|
} }
|
|
565
565
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_11_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
566
|
-
i0.ɵɵelementStart(0, "div",
|
|
567
|
-
i0.ɵɵelement(1, "i",
|
|
566
|
+
i0.ɵɵelementStart(0, "div", 136);
|
|
567
|
+
i0.ɵɵelement(1, "i", 59);
|
|
568
568
|
i0.ɵɵtext(2, " Loading... ");
|
|
569
569
|
i0.ɵɵelementEnd();
|
|
570
570
|
} }
|
|
571
571
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_11_Conditional_1_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
572
|
-
i0.ɵɵelementStart(0, "div",
|
|
572
|
+
i0.ɵɵelementStart(0, "div", 140);
|
|
573
573
|
i0.ɵɵtext(1, " No configurations available ");
|
|
574
574
|
i0.ɵɵelementEnd();
|
|
575
575
|
} }
|
|
576
576
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_11_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
577
577
|
const _r22 = i0.ɵɵgetCurrentView();
|
|
578
|
-
i0.ɵɵelementStart(0, "kendo-dropdownlist",
|
|
578
|
+
i0.ɵɵelementStart(0, "kendo-dropdownlist", 138);
|
|
579
579
|
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_11_Conditional_1_Template_kendo_dropdownlist_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r22); const model_r18 = i0.ɵɵnextContext(2).$implicit; i0.ɵɵtwoWayBindingSet(model_r18.ConfigurationID, $event) || (model_r18.ConfigurationID = $event); return i0.ɵɵresetView($event); });
|
|
580
580
|
i0.ɵɵlistener("valueChange", function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_11_Conditional_1_Template_kendo_dropdownlist_valueChange_0_listener($event) { i0.ɵɵrestoreView(_r22); const ɵ$index_312_r16 = i0.ɵɵnextContext(2).$index; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.onConfigurationChange($event, ɵ$index_312_r16)); });
|
|
581
|
-
i0.ɵɵtemplate(1, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_11_Conditional_1_ng_template_1_Template, 2, 0, "ng-template",
|
|
581
|
+
i0.ɵɵtemplate(1, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_11_Conditional_1_ng_template_1_Template, 2, 0, "ng-template", 139);
|
|
582
582
|
i0.ɵɵelementEnd();
|
|
583
583
|
} if (rf & 2) {
|
|
584
584
|
const model_r18 = i0.ɵɵnextContext(2).$implicit;
|
|
@@ -587,13 +587,13 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditiona
|
|
|
587
587
|
i0.ɵɵproperty("name", "configurationId_" + ctx_r1.getModelTrackId(model_r18))("data", ctx_r1.availableConfigurations)("valuePrimitive", true)("filterable", true);
|
|
588
588
|
} }
|
|
589
589
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
590
|
-
i0.ɵɵconditionalCreate(0, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_11_Conditional_0_Template, 3, 0, "div",
|
|
590
|
+
i0.ɵɵconditionalCreate(0, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_11_Conditional_0_Template, 3, 0, "div", 136)(1, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_11_Conditional_1_Template, 2, 5, "kendo-dropdownlist", 137);
|
|
591
591
|
} if (rf & 2) {
|
|
592
592
|
const ctx_r1 = i0.ɵɵnextContext(6);
|
|
593
593
|
i0.ɵɵconditional(ctx_r1.isLoadingConfigurations ? 0 : 1);
|
|
594
594
|
} }
|
|
595
595
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
596
|
-
i0.ɵɵelementStart(0, "span",
|
|
596
|
+
i0.ɵɵelementStart(0, "span", 116);
|
|
597
597
|
i0.ɵɵtext(1);
|
|
598
598
|
i0.ɵɵelementEnd();
|
|
599
599
|
} if (rf & 2) {
|
|
@@ -603,7 +603,7 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditiona
|
|
|
603
603
|
i0.ɵɵtextInterpolate(ctx_r1.getConfigurationDisplayName(model_r18.ConfigurationID));
|
|
604
604
|
} }
|
|
605
605
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
606
|
-
i0.ɵɵelementStart(0, "span",
|
|
606
|
+
i0.ɵɵelementStart(0, "span", 118);
|
|
607
607
|
i0.ɵɵtext(1);
|
|
608
608
|
i0.ɵɵpipe(2, "date");
|
|
609
609
|
i0.ɵɵelementEnd();
|
|
@@ -613,19 +613,19 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditiona
|
|
|
613
613
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(2, 1, model_r18.__mj_CreatedAt, "short"));
|
|
614
614
|
} }
|
|
615
615
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
616
|
-
i0.ɵɵelementStart(0, "span",
|
|
616
|
+
i0.ɵɵelementStart(0, "span", 119);
|
|
617
617
|
i0.ɵɵtext(1, "New");
|
|
618
618
|
i0.ɵɵelementEnd();
|
|
619
619
|
} }
|
|
620
620
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_17_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
621
621
|
const _r23 = i0.ɵɵgetCurrentView();
|
|
622
|
-
i0.ɵɵelementStart(0, "button",
|
|
622
|
+
i0.ɵɵelementStart(0, "button", 143);
|
|
623
623
|
i0.ɵɵlistener("click", function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_17_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r23); const ɵ$index_312_r16 = i0.ɵɵnextContext(2).$index; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.moveModelUp(ɵ$index_312_r16)); });
|
|
624
|
-
i0.ɵɵelement(1, "i",
|
|
624
|
+
i0.ɵɵelement(1, "i", 144);
|
|
625
625
|
i0.ɵɵelementEnd();
|
|
626
|
-
i0.ɵɵelementStart(2, "button",
|
|
626
|
+
i0.ɵɵelementStart(2, "button", 145);
|
|
627
627
|
i0.ɵɵlistener("click", function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_17_Conditional_1_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r23); const ɵ$index_312_r16 = i0.ɵɵnextContext(2).$index; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.moveModelDown(ɵ$index_312_r16)); });
|
|
628
|
-
i0.ɵɵelement(3, "i",
|
|
628
|
+
i0.ɵɵelement(3, "i", 146);
|
|
629
629
|
i0.ɵɵelementEnd();
|
|
630
630
|
} if (rf & 2) {
|
|
631
631
|
const ɵ$index_312_r16 = i0.ɵɵnextContext(2).$index;
|
|
@@ -636,16 +636,16 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditiona
|
|
|
636
636
|
} }
|
|
637
637
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_17_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
638
638
|
const _r24 = i0.ɵɵgetCurrentView();
|
|
639
|
-
i0.ɵɵelementStart(0, "button",
|
|
639
|
+
i0.ɵɵelementStart(0, "button", 147);
|
|
640
640
|
i0.ɵɵlistener("click", function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_17_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r24); const ɵ$index_312_r16 = i0.ɵɵnextContext(2).$index; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.removePromptModel(ɵ$index_312_r16)); });
|
|
641
|
-
i0.ɵɵelement(1, "i",
|
|
641
|
+
i0.ɵɵelement(1, "i", 148);
|
|
642
642
|
i0.ɵɵelementEnd();
|
|
643
643
|
} }
|
|
644
644
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
645
|
-
i0.ɵɵelementStart(0, "div",
|
|
645
|
+
i0.ɵɵelementStart(0, "div", 141);
|
|
646
646
|
i0.ɵɵconditionalCreate(1, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_17_Conditional_1_Template, 4, 2);
|
|
647
647
|
i0.ɵɵelementEnd();
|
|
648
|
-
i0.ɵɵconditionalCreate(2, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_17_Conditional_2_Template, 2, 0, "button",
|
|
648
|
+
i0.ɵɵconditionalCreate(2, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_17_Conditional_2_Template, 2, 0, "button", 142);
|
|
649
649
|
} if (rf & 2) {
|
|
650
650
|
const ctx_r1 = i0.ɵɵnextContext(6);
|
|
651
651
|
i0.ɵɵadvance();
|
|
@@ -666,10 +666,10 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditiona
|
|
|
666
666
|
} }
|
|
667
667
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_23_Conditional_4_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
668
668
|
const _r26 = i0.ɵɵgetCurrentView();
|
|
669
|
-
i0.ɵɵelementStart(0, "div")(1, "label",
|
|
669
|
+
i0.ɵɵelementStart(0, "div")(1, "label", 153);
|
|
670
670
|
i0.ɵɵtext(2, "Parallel Count");
|
|
671
671
|
i0.ɵɵelementEnd();
|
|
672
|
-
i0.ɵɵelementStart(3, "kendo-numerictextbox",
|
|
672
|
+
i0.ɵɵelementStart(3, "kendo-numerictextbox", 155);
|
|
673
673
|
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_23_Conditional_4_Conditional_5_Template_kendo_numerictextbox_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r26); const model_r18 = i0.ɵɵnextContext(3).$implicit; i0.ɵɵtwoWayBindingSet(model_r18.ParallelCount, $event) || (model_r18.ParallelCount = $event); return i0.ɵɵresetView($event); });
|
|
674
674
|
i0.ɵɵelementEnd()();
|
|
675
675
|
} if (rf & 2) {
|
|
@@ -682,10 +682,10 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditiona
|
|
|
682
682
|
} }
|
|
683
683
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_23_Conditional_4_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
684
684
|
const _r27 = i0.ɵɵgetCurrentView();
|
|
685
|
-
i0.ɵɵelementStart(0, "div")(1, "label",
|
|
685
|
+
i0.ɵɵelementStart(0, "div")(1, "label", 153);
|
|
686
686
|
i0.ɵɵtext(2, "Config Parameter");
|
|
687
687
|
i0.ɵɵelementEnd();
|
|
688
|
-
i0.ɵɵelementStart(3, "kendo-textbox",
|
|
688
|
+
i0.ɵɵelementStart(3, "kendo-textbox", 156);
|
|
689
689
|
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_23_Conditional_4_Conditional_6_Template_kendo_textbox_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r27); const model_r18 = i0.ɵɵnextContext(3).$implicit; i0.ɵɵtwoWayBindingSet(model_r18.ParallelConfigParam, $event) || (model_r18.ParallelConfigParam = $event); return i0.ɵɵresetView($event); });
|
|
690
690
|
i0.ɵɵelementEnd()();
|
|
691
691
|
} if (rf & 2) {
|
|
@@ -698,10 +698,10 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditiona
|
|
|
698
698
|
} }
|
|
699
699
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_23_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
700
700
|
const _r25 = i0.ɵɵgetCurrentView();
|
|
701
|
-
i0.ɵɵelementStart(0, "div",
|
|
701
|
+
i0.ɵɵelementStart(0, "div", 151)(1, "div")(2, "label", 153);
|
|
702
702
|
i0.ɵɵtext(3, "Parallel Mode");
|
|
703
703
|
i0.ɵɵelementEnd();
|
|
704
|
-
i0.ɵɵelementStart(4, "kendo-dropdownlist",
|
|
704
|
+
i0.ɵɵelementStart(4, "kendo-dropdownlist", 154);
|
|
705
705
|
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_23_Conditional_4_Template_kendo_dropdownlist_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r25); const model_r18 = i0.ɵɵnextContext(2).$implicit; i0.ɵɵtwoWayBindingSet(model_r18.ParallelizationMode, $event) || (model_r18.ParallelizationMode = $event); return i0.ɵɵresetView($event); });
|
|
706
706
|
i0.ɵɵelementEnd()();
|
|
707
707
|
i0.ɵɵconditionalCreate(5, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_23_Conditional_4_Conditional_5_Template, 4, 5, "div");
|
|
@@ -753,7 +753,7 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditiona
|
|
|
753
753
|
i0.ɵɵtextInterpolate1(" ", model_r18.ParallelConfigParam);
|
|
754
754
|
} }
|
|
755
755
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_23_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
756
|
-
i0.ɵɵelementStart(0, "div",
|
|
756
|
+
i0.ɵɵelementStart(0, "div", 152);
|
|
757
757
|
i0.ɵɵconditionalCreate(1, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_23_Conditional_5_Conditional_1_Template, 4, 1, "span");
|
|
758
758
|
i0.ɵɵconditionalCreate(2, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_23_Conditional_5_Conditional_2_Template, 4, 1, "span");
|
|
759
759
|
i0.ɵɵconditionalCreate(3, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_23_Conditional_5_Conditional_3_Template, 4, 1, "span");
|
|
@@ -768,11 +768,11 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditiona
|
|
|
768
768
|
i0.ɵɵconditional(model_r18.ParallelConfigParam ? 3 : -1);
|
|
769
769
|
} }
|
|
770
770
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
771
|
-
i0.ɵɵelementStart(0, "div",
|
|
772
|
-
i0.ɵɵelement(2, "i",
|
|
771
|
+
i0.ɵɵelementStart(0, "div", 123)(1, "div", 149);
|
|
772
|
+
i0.ɵɵelement(2, "i", 150);
|
|
773
773
|
i0.ɵɵtext(3, " Model-Specific Parallel Execution ");
|
|
774
774
|
i0.ɵɵelementEnd();
|
|
775
|
-
i0.ɵɵconditionalCreate(4, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_23_Conditional_4_Template, 7, 13, "div",
|
|
775
|
+
i0.ɵɵconditionalCreate(4, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_23_Conditional_4_Template, 7, 13, "div", 151)(5, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_23_Conditional_5_Template, 4, 3, "div", 152);
|
|
776
776
|
i0.ɵɵelementEnd();
|
|
777
777
|
} if (rf & 2) {
|
|
778
778
|
const ctx_r1 = i0.ɵɵnextContext(6);
|
|
@@ -781,32 +781,32 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditiona
|
|
|
781
781
|
} }
|
|
782
782
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Template(rf, ctx) { if (rf & 1) {
|
|
783
783
|
const _r15 = i0.ɵɵgetCurrentView();
|
|
784
|
-
i0.ɵɵelementStart(0, "div",
|
|
784
|
+
i0.ɵɵelementStart(0, "div", 109);
|
|
785
785
|
i0.ɵɵlistener("dragstart", function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Template_div_dragstart_0_listener($event) { const ɵ$index_312_r16 = i0.ɵɵrestoreView(_r15).$index; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.onDragStart($event, ɵ$index_312_r16)); })("dragover", function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Template_div_dragover_0_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.onDragOver($event)); })("drop", function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Template_div_drop_0_listener($event) { const ɵ$index_312_r16 = i0.ɵɵrestoreView(_r15).$index; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.onDrop($event, ɵ$index_312_r16)); })("dragend", function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Template_div_dragend_0_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.onDragEnd($event)); });
|
|
786
|
-
i0.ɵɵelementStart(1, "div",
|
|
787
|
-
i0.ɵɵconditionalCreate(2, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_2_Template, 3, 1)(3, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_3_Template, 2, 3, "span",
|
|
786
|
+
i0.ɵɵelementStart(1, "div", 110);
|
|
787
|
+
i0.ɵɵconditionalCreate(2, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_2_Template, 3, 1)(3, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_3_Template, 2, 3, "span", 111);
|
|
788
788
|
i0.ɵɵelementEnd();
|
|
789
|
-
i0.ɵɵelementStart(4, "div",
|
|
790
|
-
i0.ɵɵconditionalCreate(5, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_5_Template, 1, 5, "kendo-dropdownlist",
|
|
789
|
+
i0.ɵɵelementStart(4, "div", 112);
|
|
790
|
+
i0.ɵɵconditionalCreate(5, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_5_Template, 1, 5, "kendo-dropdownlist", 113)(6, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_6_Template, 2, 1, "span", 23);
|
|
791
791
|
i0.ɵɵelementEnd();
|
|
792
|
-
i0.ɵɵelementStart(7, "div",
|
|
792
|
+
i0.ɵɵelementStart(7, "div", 114);
|
|
793
793
|
i0.ɵɵconditionalCreate(8, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Template, 2, 1)(9, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_9_Template, 2, 1);
|
|
794
794
|
i0.ɵɵelementEnd();
|
|
795
|
-
i0.ɵɵelementStart(10, "div",
|
|
796
|
-
i0.ɵɵconditionalCreate(11, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_11_Template, 2, 1)(12, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_12_Template, 2, 1, "span",
|
|
795
|
+
i0.ɵɵelementStart(10, "div", 115);
|
|
796
|
+
i0.ɵɵconditionalCreate(11, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_11_Template, 2, 1)(12, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_12_Template, 2, 1, "span", 116);
|
|
797
797
|
i0.ɵɵelementEnd();
|
|
798
|
-
i0.ɵɵelementStart(13, "div",
|
|
799
|
-
i0.ɵɵconditionalCreate(14, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_14_Template, 3, 4, "span",
|
|
798
|
+
i0.ɵɵelementStart(13, "div", 117);
|
|
799
|
+
i0.ɵɵconditionalCreate(14, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_14_Template, 3, 4, "span", 118)(15, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_15_Template, 2, 0, "span", 119);
|
|
800
800
|
i0.ɵɵelementEnd();
|
|
801
|
-
i0.ɵɵelementStart(16, "div",
|
|
801
|
+
i0.ɵɵelementStart(16, "div", 120);
|
|
802
802
|
i0.ɵɵconditionalCreate(17, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_17_Template, 3, 2);
|
|
803
803
|
i0.ɵɵelementEnd()();
|
|
804
|
-
i0.ɵɵelementStart(18, "div",
|
|
804
|
+
i0.ɵɵelementStart(18, "div", 121);
|
|
805
805
|
i0.ɵɵelement(19, "div");
|
|
806
|
-
i0.ɵɵelementStart(20, "div")(21, "div",
|
|
806
|
+
i0.ɵɵelementStart(20, "div")(21, "div", 122);
|
|
807
807
|
i0.ɵɵconditionalCreate(22, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_22_Template, 4, 1, "span");
|
|
808
808
|
i0.ɵɵelementEnd();
|
|
809
|
-
i0.ɵɵconditionalCreate(23, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_23_Template, 6, 1, "div",
|
|
809
|
+
i0.ɵɵconditionalCreate(23, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_23_Template, 6, 1, "div", 123);
|
|
810
810
|
i0.ɵɵelementEnd()();
|
|
811
811
|
} if (rf & 2) {
|
|
812
812
|
const model_r18 = ctx.$implicit;
|
|
@@ -833,20 +833,20 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditiona
|
|
|
833
833
|
} }
|
|
834
834
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
835
835
|
const _r28 = i0.ɵɵgetCurrentView();
|
|
836
|
-
i0.ɵɵelementStart(0, "div",
|
|
836
|
+
i0.ɵɵelementStart(0, "div", 107)(1, "button", 157);
|
|
837
837
|
i0.ɵɵlistener("click", function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_Conditional_18_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r28); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.addNewModel()); });
|
|
838
|
-
i0.ɵɵelement(2, "i",
|
|
838
|
+
i0.ɵɵelement(2, "i", 78);
|
|
839
839
|
i0.ɵɵtext(3, " Add Model ");
|
|
840
840
|
i0.ɵɵelementEnd()();
|
|
841
841
|
} }
|
|
842
842
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
843
|
-
i0.ɵɵconditionalCreate(0, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_Conditional_0_Template, 3, 0, "div",
|
|
844
|
-
i0.ɵɵelementStart(1, "div",
|
|
845
|
-
i0.ɵɵelement(3, "i",
|
|
843
|
+
i0.ɵɵconditionalCreate(0, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_Conditional_0_Template, 3, 0, "div", 103);
|
|
844
|
+
i0.ɵɵelementStart(1, "div", 104)(2, "div", 105);
|
|
845
|
+
i0.ɵɵelement(3, "i", 106);
|
|
846
846
|
i0.ɵɵelementEnd();
|
|
847
847
|
i0.ɵɵelementStart(4, "div");
|
|
848
848
|
i0.ɵɵtext(5, "AI Model ");
|
|
849
|
-
i0.ɵɵelementStart(6, "span",
|
|
849
|
+
i0.ɵɵelementStart(6, "span", 56);
|
|
850
850
|
i0.ɵɵtext(7, "*");
|
|
851
851
|
i0.ɵɵelementEnd()();
|
|
852
852
|
i0.ɵɵelementStart(8, "div");
|
|
@@ -862,7 +862,7 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditiona
|
|
|
862
862
|
i0.ɵɵtext(15, "Actions");
|
|
863
863
|
i0.ɵɵelementEnd()();
|
|
864
864
|
i0.ɵɵrepeaterCreate(16, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_For_17_Template, 24, 15, null, null, _forTrack0, true);
|
|
865
|
-
i0.ɵɵconditionalCreate(18, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_Conditional_18_Template, 4, 0, "div",
|
|
865
|
+
i0.ɵɵconditionalCreate(18, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_Conditional_18_Template, 4, 0, "div", 107);
|
|
866
866
|
} if (rf & 2) {
|
|
867
867
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
868
868
|
i0.ɵɵconditional(ctx_r1.promptModels.length > 1 ? 0 : -1);
|
|
@@ -872,7 +872,7 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditiona
|
|
|
872
872
|
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanCreatePromptModels ? 18 : -1);
|
|
873
873
|
} }
|
|
874
874
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
875
|
-
i0.ɵɵconditionalCreate(0, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_0_Template, 4, 1, "div",
|
|
875
|
+
i0.ɵɵconditionalCreate(0, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_0_Template, 4, 1, "div", 99)(1, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Conditional_1_Template, 19, 2);
|
|
876
876
|
} if (rf & 2) {
|
|
877
877
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
878
878
|
i0.ɵɵconditional(ctx_r1.promptModels.length === 0 ? 0 : 1);
|
|
@@ -880,8 +880,8 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditiona
|
|
|
880
880
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Template(rf, ctx) { if (rf & 1) {
|
|
881
881
|
i0.ɵɵelementStart(0, "kendo-expansionpanel", 29);
|
|
882
882
|
i0.ɵɵtemplate(1, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_ng_template_1_Template, 7, 1, "ng-template", 30);
|
|
883
|
-
i0.ɵɵelementStart(2, "div", 36)(3, "div",
|
|
884
|
-
i0.ɵɵconditionalCreate(4, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_4_Template, 3, 0, "div",
|
|
883
|
+
i0.ɵɵelementStart(2, "div", 36)(3, "div", 93);
|
|
884
|
+
i0.ɵɵconditionalCreate(4, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_4_Template, 3, 0, "div", 94)(5, MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Conditional_5_Template, 2, 1);
|
|
885
885
|
i0.ɵɵelementEnd()()();
|
|
886
886
|
} if (rf & 2) {
|
|
887
887
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -890,8 +890,8 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_42_Template(r
|
|
|
890
890
|
i0.ɵɵconditional(ctx_r1.isLoadingModels ? 4 : 5);
|
|
891
891
|
} }
|
|
892
892
|
function MJAIPromptFormComponentExtended_Conditional_2_ng_template_44_Template(rf, ctx) { if (rf & 1) {
|
|
893
|
-
i0.ɵɵelementStart(0, "span",
|
|
894
|
-
i0.ɵɵelement(1, "i",
|
|
893
|
+
i0.ɵɵelementStart(0, "span", 68);
|
|
894
|
+
i0.ɵɵelement(1, "i", 158);
|
|
895
895
|
i0.ɵɵtext(2, " Advanced Configuration ");
|
|
896
896
|
i0.ɵɵelementEnd();
|
|
897
897
|
} }
|
|
@@ -908,14 +908,14 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_50_Template(r
|
|
|
908
908
|
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode);
|
|
909
909
|
} }
|
|
910
910
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_59_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
911
|
-
i0.ɵɵelementStart(0, "div",
|
|
912
|
-
i0.ɵɵelement(1, "i",
|
|
911
|
+
i0.ɵɵelementStart(0, "div", 159);
|
|
912
|
+
i0.ɵɵelement(1, "i", 59);
|
|
913
913
|
i0.ɵɵtext(2, " Loading prompts... ");
|
|
914
914
|
i0.ɵɵelementEnd();
|
|
915
915
|
} }
|
|
916
916
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_59_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
917
917
|
const _r29 = i0.ɵɵgetCurrentView();
|
|
918
|
-
i0.ɵɵelementStart(0, "kendo-dropdowntree",
|
|
918
|
+
i0.ɵɵelementStart(0, "kendo-dropdowntree", 161);
|
|
919
919
|
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptFormComponentExtended_Conditional_2_Conditional_59_Conditional_1_Template_kendo_dropdowntree_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r29); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.record.ResultSelectorPromptID, $event) || (ctx_r1.record.ResultSelectorPromptID = $event); return i0.ɵɵresetView($event); });
|
|
920
920
|
i0.ɵɵlistener("valueChange", function MJAIPromptFormComponentExtended_Conditional_2_Conditional_59_Conditional_1_Template_kendo_dropdowntree_valueChange_0_listener($event) { i0.ɵɵrestoreView(_r29); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onResultSelectorChange($event)); });
|
|
921
921
|
i0.ɵɵelementEnd();
|
|
@@ -925,7 +925,7 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_59_Conditiona
|
|
|
925
925
|
i0.ɵɵproperty("data", ctx_r1.resultSelectorTreeData)("valuePrimitive", true)("filterable", true);
|
|
926
926
|
} }
|
|
927
927
|
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_59_Template(rf, ctx) { if (rf & 1) {
|
|
928
|
-
i0.ɵɵconditionalCreate(0, MJAIPromptFormComponentExtended_Conditional_2_Conditional_59_Conditional_0_Template, 3, 0, "div",
|
|
928
|
+
i0.ɵɵconditionalCreate(0, MJAIPromptFormComponentExtended_Conditional_2_Conditional_59_Conditional_0_Template, 3, 0, "div", 159)(1, MJAIPromptFormComponentExtended_Conditional_2_Conditional_59_Conditional_1_Template, 1, 4, "kendo-dropdowntree", 160);
|
|
929
929
|
} if (rf & 2) {
|
|
930
930
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
931
931
|
i0.ɵɵconditional(ctx_r1.isLoadingResultSelectorData ? 0 : 1);
|
|
@@ -939,15 +939,21 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_60_Template(r
|
|
|
939
939
|
i0.ɵɵadvance();
|
|
940
940
|
i0.ɵɵtextInterpolate(ctx_r1.getPromptDisplayName(ctx_r1.record.ResultSelectorPromptID || "") || "None selected");
|
|
941
941
|
} }
|
|
942
|
-
function
|
|
943
|
-
i0.ɵɵelementStart(0, "span",
|
|
944
|
-
i0.ɵɵelement(1, "i",
|
|
942
|
+
function MJAIPromptFormComponentExtended_Conditional_2_ng_template_62_Template(rf, ctx) { if (rf & 1) {
|
|
943
|
+
i0.ɵɵelementStart(0, "span", 68);
|
|
944
|
+
i0.ɵɵelement(1, "i", 162);
|
|
945
|
+
i0.ɵɵtext(2, " Prefill & Output Control ");
|
|
946
|
+
i0.ɵɵelementEnd();
|
|
947
|
+
} }
|
|
948
|
+
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_72_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
949
|
+
i0.ɵɵelementStart(0, "span", 68);
|
|
950
|
+
i0.ɵɵelement(1, "i", 163);
|
|
945
951
|
i0.ɵɵtext(2, " Template Parameters ");
|
|
946
|
-
i0.ɵɵelementStart(3, "span",
|
|
952
|
+
i0.ɵɵelementStart(3, "span", 164);
|
|
947
953
|
i0.ɵɵtext(4);
|
|
948
954
|
i0.ɵɵelementEnd();
|
|
949
|
-
i0.ɵɵelementStart(5, "span",
|
|
950
|
-
i0.ɵɵelement(6, "i",
|
|
955
|
+
i0.ɵɵelementStart(5, "span", 97);
|
|
956
|
+
i0.ɵɵelement(6, "i", 165);
|
|
951
957
|
i0.ɵɵtext(7, " Parameters defined in the template ");
|
|
952
958
|
i0.ɵɵelementEnd()();
|
|
953
959
|
} if (rf & 2) {
|
|
@@ -955,35 +961,35 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_61_ng_templat
|
|
|
955
961
|
i0.ɵɵadvance(4);
|
|
956
962
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.templateParams.length, " ");
|
|
957
963
|
} }
|
|
958
|
-
function
|
|
959
|
-
i0.ɵɵelementStart(0, "div",
|
|
960
|
-
i0.ɵɵelement(1, "i",
|
|
964
|
+
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_72_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
965
|
+
i0.ɵɵelementStart(0, "div", 94);
|
|
966
|
+
i0.ɵɵelement(1, "i", 59);
|
|
961
967
|
i0.ɵɵtext(2, " Loading template parameters... ");
|
|
962
968
|
i0.ɵɵelementEnd();
|
|
963
969
|
} }
|
|
964
|
-
function
|
|
965
|
-
i0.ɵɵelementStart(0, "div",
|
|
966
|
-
i0.ɵɵelement(1, "i",
|
|
970
|
+
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_72_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
971
|
+
i0.ɵɵelementStart(0, "div", 99);
|
|
972
|
+
i0.ɵɵelement(1, "i", 100);
|
|
967
973
|
i0.ɵɵtext(2, " This template has no parameters defined ");
|
|
968
974
|
i0.ɵɵelementEnd();
|
|
969
975
|
} }
|
|
970
|
-
function
|
|
971
|
-
i0.ɵɵelementStart(0, "span",
|
|
976
|
+
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_72_Conditional_5_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
977
|
+
i0.ɵɵelementStart(0, "span", 177);
|
|
972
978
|
i0.ɵɵtext(1, "*");
|
|
973
979
|
i0.ɵɵelementEnd();
|
|
974
980
|
} }
|
|
975
|
-
function
|
|
976
|
-
i0.ɵɵelementStart(0, "span",
|
|
981
|
+
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_72_Conditional_5_For_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
982
|
+
i0.ɵɵelementStart(0, "span", 179);
|
|
977
983
|
i0.ɵɵtext(1, "Required");
|
|
978
984
|
i0.ɵɵelementEnd();
|
|
979
985
|
} }
|
|
980
|
-
function
|
|
981
|
-
i0.ɵɵelementStart(0, "span",
|
|
986
|
+
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_72_Conditional_5_For_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
987
|
+
i0.ɵɵelementStart(0, "span", 180);
|
|
982
988
|
i0.ɵɵtext(1, "Optional");
|
|
983
989
|
i0.ɵɵelementEnd();
|
|
984
990
|
} }
|
|
985
|
-
function
|
|
986
|
-
i0.ɵɵelementStart(0, "p",
|
|
991
|
+
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_72_Conditional_5_For_2_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
992
|
+
i0.ɵɵelementStart(0, "p", 181);
|
|
987
993
|
i0.ɵɵtext(1);
|
|
988
994
|
i0.ɵɵelementEnd();
|
|
989
995
|
} if (rf & 2) {
|
|
@@ -991,11 +997,11 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_61_Conditiona
|
|
|
991
997
|
i0.ɵɵadvance();
|
|
992
998
|
i0.ɵɵtextInterpolate1(" ", param_r30.Description, " ");
|
|
993
999
|
} }
|
|
994
|
-
function
|
|
995
|
-
i0.ɵɵelementStart(0, "div",
|
|
1000
|
+
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_72_Conditional_5_For_2_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
1001
|
+
i0.ɵɵelementStart(0, "div", 186)(1, "label", 187);
|
|
996
1002
|
i0.ɵɵtext(2, "Default Value");
|
|
997
1003
|
i0.ɵɵelementEnd();
|
|
998
|
-
i0.ɵɵelementStart(3, "code",
|
|
1004
|
+
i0.ɵɵelementStart(3, "code", 188);
|
|
999
1005
|
i0.ɵɵtext(4);
|
|
1000
1006
|
i0.ɵɵelementEnd()();
|
|
1001
1007
|
} if (rf & 2) {
|
|
@@ -1003,11 +1009,11 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_61_Conditiona
|
|
|
1003
1009
|
i0.ɵɵadvance(4);
|
|
1004
1010
|
i0.ɵɵtextInterpolate(param_r30.DefaultValue);
|
|
1005
1011
|
} }
|
|
1006
|
-
function
|
|
1007
|
-
i0.ɵɵelementStart(0, "div",
|
|
1012
|
+
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_72_Conditional_5_For_2_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
1013
|
+
i0.ɵɵelementStart(0, "div", 186)(1, "label", 187);
|
|
1008
1014
|
i0.ɵɵtext(2, "Entity");
|
|
1009
1015
|
i0.ɵɵelementEnd();
|
|
1010
|
-
i0.ɵɵelementStart(3, "span",
|
|
1016
|
+
i0.ɵɵelementStart(3, "span", 182);
|
|
1011
1017
|
i0.ɵɵtext(4);
|
|
1012
1018
|
i0.ɵɵelementEnd()();
|
|
1013
1019
|
} if (rf & 2) {
|
|
@@ -1015,19 +1021,19 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_61_Conditiona
|
|
|
1015
1021
|
i0.ɵɵadvance(4);
|
|
1016
1022
|
i0.ɵɵtextInterpolate(param_r30.Entity || "Entity ID: " + param_r30.EntityID);
|
|
1017
1023
|
} }
|
|
1018
|
-
function
|
|
1024
|
+
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_72_Conditional_5_For_2_Conditional_20_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
1019
1025
|
i0.ɵɵtext(0);
|
|
1020
1026
|
} if (rf & 2) {
|
|
1021
1027
|
const param_r30 = i0.ɵɵnextContext(2).$implicit;
|
|
1022
1028
|
i0.ɵɵtextInterpolate1(" (", param_r30.LinkedParameterField, ") ");
|
|
1023
1029
|
} }
|
|
1024
|
-
function
|
|
1025
|
-
i0.ɵɵelementStart(0, "div",
|
|
1030
|
+
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_72_Conditional_5_For_2_Conditional_20_Template(rf, ctx) { if (rf & 1) {
|
|
1031
|
+
i0.ɵɵelementStart(0, "div", 186)(1, "label", 187);
|
|
1026
1032
|
i0.ɵɵtext(2, "Linked To");
|
|
1027
1033
|
i0.ɵɵelementEnd();
|
|
1028
|
-
i0.ɵɵelementStart(3, "span",
|
|
1034
|
+
i0.ɵɵelementStart(3, "span", 182);
|
|
1029
1035
|
i0.ɵɵtext(4);
|
|
1030
|
-
i0.ɵɵconditionalCreate(5,
|
|
1036
|
+
i0.ɵɵconditionalCreate(5, MJAIPromptFormComponentExtended_Conditional_2_Conditional_72_Conditional_5_For_2_Conditional_20_Conditional_5_Template, 1, 1);
|
|
1031
1037
|
i0.ɵɵelementEnd()();
|
|
1032
1038
|
} if (rf & 2) {
|
|
1033
1039
|
const param_r30 = i0.ɵɵnextContext().$implicit;
|
|
@@ -1036,11 +1042,11 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_61_Conditiona
|
|
|
1036
1042
|
i0.ɵɵadvance();
|
|
1037
1043
|
i0.ɵɵconditional(param_r30.LinkedParameterField ? 5 : -1);
|
|
1038
1044
|
} }
|
|
1039
|
-
function
|
|
1040
|
-
i0.ɵɵelementStart(0, "div",
|
|
1045
|
+
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_72_Conditional_5_For_2_Conditional_21_Template(rf, ctx) { if (rf & 1) {
|
|
1046
|
+
i0.ɵɵelementStart(0, "div", 186)(1, "label", 187);
|
|
1041
1047
|
i0.ɵɵtext(2, "Filter");
|
|
1042
1048
|
i0.ɵɵelementEnd();
|
|
1043
|
-
i0.ɵɵelementStart(3, "code",
|
|
1049
|
+
i0.ɵɵelementStart(3, "code", 189);
|
|
1044
1050
|
i0.ɵɵtext(4);
|
|
1045
1051
|
i0.ɵɵelementEnd()();
|
|
1046
1052
|
} if (rf & 2) {
|
|
@@ -1048,11 +1054,11 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_61_Conditiona
|
|
|
1048
1054
|
i0.ɵɵadvance(4);
|
|
1049
1055
|
i0.ɵɵtextInterpolate(param_r30.ExtraFilter);
|
|
1050
1056
|
} }
|
|
1051
|
-
function
|
|
1052
|
-
i0.ɵɵelementStart(0, "div",
|
|
1057
|
+
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_72_Conditional_5_For_2_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
1058
|
+
i0.ɵɵelementStart(0, "div", 186)(1, "label", 187);
|
|
1053
1059
|
i0.ɵɵtext(2, "Record ID");
|
|
1054
1060
|
i0.ɵɵelementEnd();
|
|
1055
|
-
i0.ɵɵelementStart(3, "code",
|
|
1061
|
+
i0.ɵɵelementStart(3, "code", 182);
|
|
1056
1062
|
i0.ɵɵtext(4);
|
|
1057
1063
|
i0.ɵɵelementEnd()();
|
|
1058
1064
|
} if (rf & 2) {
|
|
@@ -1060,29 +1066,29 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_61_Conditiona
|
|
|
1060
1066
|
i0.ɵɵadvance(4);
|
|
1061
1067
|
i0.ɵɵtextInterpolate(param_r30.RecordID);
|
|
1062
1068
|
} }
|
|
1063
|
-
function
|
|
1064
|
-
i0.ɵɵelementStart(0, "div",
|
|
1065
|
-
i0.ɵɵelement(3, "i",
|
|
1066
|
-
i0.ɵɵelementStart(4, "h6",
|
|
1069
|
+
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_72_Conditional_5_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
1070
|
+
i0.ɵɵelementStart(0, "div", 172)(1, "div", 173)(2, "div", 174);
|
|
1071
|
+
i0.ɵɵelement(3, "i", 175);
|
|
1072
|
+
i0.ɵɵelementStart(4, "h6", 176);
|
|
1067
1073
|
i0.ɵɵtext(5);
|
|
1068
|
-
i0.ɵɵconditionalCreate(6,
|
|
1074
|
+
i0.ɵɵconditionalCreate(6, MJAIPromptFormComponentExtended_Conditional_2_Conditional_72_Conditional_5_For_2_Conditional_6_Template, 2, 0, "span", 177);
|
|
1069
1075
|
i0.ɵɵelementEnd()();
|
|
1070
|
-
i0.ɵɵelementStart(7, "div",
|
|
1076
|
+
i0.ɵɵelementStart(7, "div", 174)(8, "span", 178);
|
|
1071
1077
|
i0.ɵɵtext(9);
|
|
1072
1078
|
i0.ɵɵelementEnd();
|
|
1073
|
-
i0.ɵɵconditionalCreate(10,
|
|
1079
|
+
i0.ɵɵconditionalCreate(10, MJAIPromptFormComponentExtended_Conditional_2_Conditional_72_Conditional_5_For_2_Conditional_10_Template, 2, 0, "span", 179)(11, MJAIPromptFormComponentExtended_Conditional_2_Conditional_72_Conditional_5_For_2_Conditional_11_Template, 2, 0, "span", 180);
|
|
1074
1080
|
i0.ɵɵelementEnd()();
|
|
1075
|
-
i0.ɵɵconditionalCreate(12,
|
|
1076
|
-
i0.ɵɵelementStart(13, "div",
|
|
1077
|
-
i0.ɵɵelement(15, "i",
|
|
1081
|
+
i0.ɵɵconditionalCreate(12, MJAIPromptFormComponentExtended_Conditional_2_Conditional_72_Conditional_5_For_2_Conditional_12_Template, 2, 1, "p", 181);
|
|
1082
|
+
i0.ɵɵelementStart(13, "div", 182)(14, "span", 183);
|
|
1083
|
+
i0.ɵɵelement(15, "i", 184);
|
|
1078
1084
|
i0.ɵɵtext(16);
|
|
1079
1085
|
i0.ɵɵelementEnd()();
|
|
1080
|
-
i0.ɵɵelementStart(17, "div",
|
|
1081
|
-
i0.ɵɵconditionalCreate(18,
|
|
1082
|
-
i0.ɵɵconditionalCreate(19,
|
|
1083
|
-
i0.ɵɵconditionalCreate(20,
|
|
1084
|
-
i0.ɵɵconditionalCreate(21,
|
|
1085
|
-
i0.ɵɵconditionalCreate(22,
|
|
1086
|
+
i0.ɵɵelementStart(17, "div", 185);
|
|
1087
|
+
i0.ɵɵconditionalCreate(18, MJAIPromptFormComponentExtended_Conditional_2_Conditional_72_Conditional_5_For_2_Conditional_18_Template, 5, 1, "div", 186);
|
|
1088
|
+
i0.ɵɵconditionalCreate(19, MJAIPromptFormComponentExtended_Conditional_2_Conditional_72_Conditional_5_For_2_Conditional_19_Template, 5, 1, "div", 186);
|
|
1089
|
+
i0.ɵɵconditionalCreate(20, MJAIPromptFormComponentExtended_Conditional_2_Conditional_72_Conditional_5_For_2_Conditional_20_Template, 6, 2, "div", 186);
|
|
1090
|
+
i0.ɵɵconditionalCreate(21, MJAIPromptFormComponentExtended_Conditional_2_Conditional_72_Conditional_5_For_2_Conditional_21_Template, 5, 1, "div", 186);
|
|
1091
|
+
i0.ɵɵconditionalCreate(22, MJAIPromptFormComponentExtended_Conditional_2_Conditional_72_Conditional_5_For_2_Conditional_22_Template, 5, 1, "div", 186);
|
|
1086
1092
|
i0.ɵɵelementEnd()();
|
|
1087
1093
|
} if (rf & 2) {
|
|
1088
1094
|
const param_r30 = ctx.$implicit;
|
|
@@ -1116,13 +1122,13 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_61_Conditiona
|
|
|
1116
1122
|
i0.ɵɵadvance();
|
|
1117
1123
|
i0.ɵɵconditional(param_r30.RecordID ? 22 : -1);
|
|
1118
1124
|
} }
|
|
1119
|
-
function
|
|
1120
|
-
i0.ɵɵelementStart(0, "div",
|
|
1121
|
-
i0.ɵɵrepeaterCreate(1,
|
|
1125
|
+
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_72_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
1126
|
+
i0.ɵɵelementStart(0, "div", 166);
|
|
1127
|
+
i0.ɵɵrepeaterCreate(1, MJAIPromptFormComponentExtended_Conditional_2_Conditional_72_Conditional_5_For_2_Template, 23, 19, "div", 167, _forTrack1);
|
|
1122
1128
|
i0.ɵɵelementEnd();
|
|
1123
|
-
i0.ɵɵelementStart(3, "div",
|
|
1124
|
-
i0.ɵɵelement(5, "i",
|
|
1125
|
-
i0.ɵɵelementStart(6, "div",
|
|
1129
|
+
i0.ɵɵelementStart(3, "div", 168)(4, "div", 169);
|
|
1130
|
+
i0.ɵɵelement(5, "i", 170);
|
|
1131
|
+
i0.ɵɵelementStart(6, "div", 171)(7, "strong");
|
|
1126
1132
|
i0.ɵɵtext(8, "Using Template Parameters:");
|
|
1127
1133
|
i0.ɵɵelementEnd();
|
|
1128
1134
|
i0.ɵɵtext(9, " When executing this prompt, you'll be prompted to provide values for all required parameters. Parameters can be simple values (text, numbers) or complex data structures (JSON objects, database records, or entire entity collections). The template will use these parameters to generate dynamic content based on the values provided at execution time. ");
|
|
@@ -1132,11 +1138,11 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_61_Conditiona
|
|
|
1132
1138
|
i0.ɵɵadvance();
|
|
1133
1139
|
i0.ɵɵrepeater(ctx_r1.templateParams);
|
|
1134
1140
|
} }
|
|
1135
|
-
function
|
|
1141
|
+
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_72_Template(rf, ctx) { if (rf & 1) {
|
|
1136
1142
|
i0.ɵɵelementStart(0, "kendo-expansionpanel", 29);
|
|
1137
|
-
i0.ɵɵtemplate(1,
|
|
1143
|
+
i0.ɵɵtemplate(1, MJAIPromptFormComponentExtended_Conditional_2_Conditional_72_ng_template_1_Template, 8, 1, "ng-template", 30);
|
|
1138
1144
|
i0.ɵɵelementStart(2, "div", 36);
|
|
1139
|
-
i0.ɵɵconditionalCreate(3,
|
|
1145
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptFormComponentExtended_Conditional_2_Conditional_72_Conditional_3_Template, 3, 0, "div", 94)(4, MJAIPromptFormComponentExtended_Conditional_2_Conditional_72_Conditional_4_Template, 3, 0, "div", 99)(5, MJAIPromptFormComponentExtended_Conditional_2_Conditional_72_Conditional_5_Template, 10, 0);
|
|
1140
1146
|
i0.ɵɵelementEnd()();
|
|
1141
1147
|
} if (rf & 2) {
|
|
1142
1148
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1144,29 +1150,29 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_61_Template(r
|
|
|
1144
1150
|
i0.ɵɵadvance(3);
|
|
1145
1151
|
i0.ɵɵconditional(ctx_r1.isLoadingTemplateParams ? 3 : ctx_r1.templateParams.length === 0 ? 4 : 5);
|
|
1146
1152
|
} }
|
|
1147
|
-
function
|
|
1148
|
-
i0.ɵɵelementStart(0, "span",
|
|
1153
|
+
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_73_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
1154
|
+
i0.ɵɵelementStart(0, "span", 68);
|
|
1149
1155
|
i0.ɵɵelement(1, "i", 22);
|
|
1150
1156
|
i0.ɵɵtext(2, " Output Example (JSON) ");
|
|
1151
|
-
i0.ɵɵelementStart(3, "span",
|
|
1157
|
+
i0.ɵɵelementStart(3, "span", 193);
|
|
1152
1158
|
i0.ɵɵtext(4, "\u2022 Required for object output type");
|
|
1153
1159
|
i0.ɵɵelementEnd()();
|
|
1154
1160
|
} }
|
|
1155
|
-
function
|
|
1161
|
+
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_73_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1156
1162
|
const _r31 = i0.ɵɵgetCurrentView();
|
|
1157
|
-
i0.ɵɵelementStart(0, "mj-code-editor",
|
|
1158
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
1163
|
+
i0.ɵɵelementStart(0, "mj-code-editor", 194);
|
|
1164
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJAIPromptFormComponentExtended_Conditional_2_Conditional_73_Conditional_3_Template_mj_code_editor_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r31); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.record.OutputExample, $event) || (ctx_r1.record.OutputExample = $event); return i0.ɵɵresetView($event); });
|
|
1159
1165
|
i0.ɵɵelementEnd();
|
|
1160
|
-
i0.ɵɵelementStart(1, "div",
|
|
1161
|
-
i0.ɵɵelement(2, "i",
|
|
1166
|
+
i0.ɵɵelementStart(1, "div", 195);
|
|
1167
|
+
i0.ɵɵelement(2, "i", 100);
|
|
1162
1168
|
i0.ɵɵtext(3, " Provide a JSON example that defines the expected structure for object output validation. ");
|
|
1163
1169
|
i0.ɵɵelementEnd();
|
|
1164
1170
|
} if (rf & 2) {
|
|
1165
1171
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1166
1172
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.OutputExample);
|
|
1167
1173
|
} }
|
|
1168
|
-
function
|
|
1169
|
-
i0.ɵɵelementStart(0, "div",
|
|
1174
|
+
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_73_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
1175
|
+
i0.ɵɵelementStart(0, "div", 191);
|
|
1170
1176
|
i0.ɵɵtext(1);
|
|
1171
1177
|
i0.ɵɵelementEnd();
|
|
1172
1178
|
} if (rf & 2) {
|
|
@@ -1174,17 +1180,17 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_62_Conditiona
|
|
|
1174
1180
|
i0.ɵɵadvance();
|
|
1175
1181
|
i0.ɵɵtextInterpolate(ctx_r1.record.OutputExample);
|
|
1176
1182
|
} }
|
|
1177
|
-
function
|
|
1178
|
-
i0.ɵɵelementStart(0, "div",
|
|
1179
|
-
i0.ɵɵelement(1, "i",
|
|
1183
|
+
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_73_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
1184
|
+
i0.ɵɵelementStart(0, "div", 192);
|
|
1185
|
+
i0.ɵɵelement(1, "i", 196);
|
|
1180
1186
|
i0.ɵɵtext(2, " Output example is required when output type is 'object' ");
|
|
1181
1187
|
i0.ɵɵelementEnd();
|
|
1182
1188
|
} }
|
|
1183
|
-
function
|
|
1189
|
+
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_73_Template(rf, ctx) { if (rf & 1) {
|
|
1184
1190
|
i0.ɵɵelementStart(0, "kendo-expansionpanel", 29);
|
|
1185
|
-
i0.ɵɵtemplate(1,
|
|
1186
|
-
i0.ɵɵelementStart(2, "div",
|
|
1187
|
-
i0.ɵɵconditionalCreate(3,
|
|
1191
|
+
i0.ɵɵtemplate(1, MJAIPromptFormComponentExtended_Conditional_2_Conditional_73_ng_template_1_Template, 5, 0, "ng-template", 30);
|
|
1192
|
+
i0.ɵɵelementStart(2, "div", 190);
|
|
1193
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptFormComponentExtended_Conditional_2_Conditional_73_Conditional_3_Template, 4, 1)(4, MJAIPromptFormComponentExtended_Conditional_2_Conditional_73_Conditional_4_Template, 2, 1, "div", 191)(5, MJAIPromptFormComponentExtended_Conditional_2_Conditional_73_Conditional_5_Template, 3, 0, "div", 192);
|
|
1188
1194
|
i0.ɵɵelementEnd()();
|
|
1189
1195
|
} if (rf & 2) {
|
|
1190
1196
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1192,8 +1198,8 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_62_Template(r
|
|
|
1192
1198
|
i0.ɵɵadvance(3);
|
|
1193
1199
|
i0.ɵɵconditional(ctx_r1.EditMode ? 3 : ctx_r1.record.OutputExample ? 4 : 5);
|
|
1194
1200
|
} }
|
|
1195
|
-
function
|
|
1196
|
-
i0.ɵɵelementStart(0, "span",
|
|
1201
|
+
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_74_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1202
|
+
i0.ɵɵelementStart(0, "span", 199);
|
|
1197
1203
|
i0.ɵɵtext(1);
|
|
1198
1204
|
i0.ɵɵelementEnd();
|
|
1199
1205
|
} if (rf & 2) {
|
|
@@ -1201,60 +1207,60 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_63_ng_templat
|
|
|
1201
1207
|
i0.ɵɵadvance();
|
|
1202
1208
|
i0.ɵɵtextInterpolate1("(", ctx_r1.executionHistory.length, ")");
|
|
1203
1209
|
} }
|
|
1204
|
-
function
|
|
1205
|
-
i0.ɵɵelementStart(0, "span",
|
|
1206
|
-
i0.ɵɵelement(1, "i",
|
|
1210
|
+
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_74_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
1211
|
+
i0.ɵɵelementStart(0, "span", 68);
|
|
1212
|
+
i0.ɵɵelement(1, "i", 198);
|
|
1207
1213
|
i0.ɵɵtext(2, " Execution History ");
|
|
1208
|
-
i0.ɵɵconditionalCreate(3,
|
|
1214
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptFormComponentExtended_Conditional_2_Conditional_74_ng_template_1_Conditional_3_Template, 2, 1, "span", 199);
|
|
1209
1215
|
i0.ɵɵelementEnd();
|
|
1210
1216
|
} if (rf & 2) {
|
|
1211
1217
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1212
1218
|
i0.ɵɵadvance(3);
|
|
1213
1219
|
i0.ɵɵconditional(ctx_r1.executionHistory.length > 0 ? 3 : -1);
|
|
1214
1220
|
} }
|
|
1215
|
-
function
|
|
1216
|
-
i0.ɵɵelementStart(0, "div",
|
|
1217
|
-
i0.ɵɵelement(1, "i",
|
|
1221
|
+
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_74_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1222
|
+
i0.ɵɵelementStart(0, "div", 197);
|
|
1223
|
+
i0.ɵɵelement(1, "i", 200);
|
|
1218
1224
|
i0.ɵɵelementStart(2, "p");
|
|
1219
1225
|
i0.ɵɵtext(3, "Loading execution history...");
|
|
1220
1226
|
i0.ɵɵelementEnd()();
|
|
1221
1227
|
} }
|
|
1222
|
-
function
|
|
1223
|
-
i0.ɵɵelementStart(0, "div",
|
|
1224
|
-
i0.ɵɵelement(1, "i",
|
|
1228
|
+
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_74_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
1229
|
+
i0.ɵɵelementStart(0, "div", 197);
|
|
1230
|
+
i0.ɵɵelement(1, "i", 201);
|
|
1225
1231
|
i0.ɵɵelementStart(2, "p");
|
|
1226
1232
|
i0.ɵɵtext(3, "No execution history yet");
|
|
1227
1233
|
i0.ɵɵelementEnd();
|
|
1228
|
-
i0.ɵɵelementStart(4, "p",
|
|
1234
|
+
i0.ɵɵelementStart(4, "p", 116);
|
|
1229
1235
|
i0.ɵɵtext(5, "Run this prompt to see execution history here");
|
|
1230
1236
|
i0.ɵɵelementEnd()();
|
|
1231
1237
|
} }
|
|
1232
|
-
function
|
|
1233
|
-
i0.ɵɵelement(0, "i",
|
|
1238
|
+
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_74_Conditional_5_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
1239
|
+
i0.ɵɵelement(0, "i", 214);
|
|
1234
1240
|
} if (rf & 2) {
|
|
1235
1241
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
1236
1242
|
i0.ɵɵclassMap("fa-solid fa-sort-" + (ctx_r1.historySortDirection === "asc" ? "up" : "down"));
|
|
1237
1243
|
} }
|
|
1238
|
-
function
|
|
1239
|
-
i0.ɵɵelement(0, "i",
|
|
1244
|
+
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_74_Conditional_5_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
1245
|
+
i0.ɵɵelement(0, "i", 214);
|
|
1240
1246
|
} if (rf & 2) {
|
|
1241
1247
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
1242
1248
|
i0.ɵɵclassMap("fa-solid fa-sort-" + (ctx_r1.historySortDirection === "asc" ? "up" : "down"));
|
|
1243
1249
|
} }
|
|
1244
|
-
function
|
|
1245
|
-
i0.ɵɵelement(0, "i",
|
|
1250
|
+
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_74_Conditional_5_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
1251
|
+
i0.ɵɵelement(0, "i", 214);
|
|
1246
1252
|
} if (rf & 2) {
|
|
1247
1253
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
1248
1254
|
i0.ɵɵclassMap("fa-solid fa-sort-" + (ctx_r1.historySortDirection === "asc" ? "up" : "down"));
|
|
1249
1255
|
} }
|
|
1250
|
-
function
|
|
1251
|
-
i0.ɵɵelement(0, "i",
|
|
1256
|
+
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_74_Conditional_5_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
1257
|
+
i0.ɵɵelement(0, "i", 214);
|
|
1252
1258
|
} if (rf & 2) {
|
|
1253
1259
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
1254
1260
|
i0.ɵɵclassMap("fa-solid fa-sort-" + (ctx_r1.historySortDirection === "asc" ? "up" : "down"));
|
|
1255
1261
|
} }
|
|
1256
|
-
function
|
|
1257
|
-
i0.ɵɵelementStart(0, "span",
|
|
1262
|
+
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_74_Conditional_5_For_41_Conditional_20_Template(rf, ctx) { if (rf & 1) {
|
|
1263
|
+
i0.ɵɵelementStart(0, "span", 221);
|
|
1258
1264
|
i0.ɵɵtext(1);
|
|
1259
1265
|
i0.ɵɵelementEnd();
|
|
1260
1266
|
} if (rf & 2) {
|
|
@@ -1262,42 +1268,42 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_63_Conditiona
|
|
|
1262
1268
|
i0.ɵɵadvance();
|
|
1263
1269
|
i0.ɵɵtextInterpolate1(" ", run_r34.RunType, " ");
|
|
1264
1270
|
} }
|
|
1265
|
-
function
|
|
1271
|
+
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_74_Conditional_5_For_41_Template(rf, ctx) { if (rf & 1) {
|
|
1266
1272
|
const _r33 = i0.ɵɵgetCurrentView();
|
|
1267
|
-
i0.ɵɵelementStart(0, "tr",
|
|
1273
|
+
i0.ɵɵelementStart(0, "tr", 215)(1, "td", 216)(2, "span", 217);
|
|
1268
1274
|
i0.ɵɵelement(3, "i");
|
|
1269
1275
|
i0.ɵɵelementStart(4, "span", 23);
|
|
1270
1276
|
i0.ɵɵtext(5);
|
|
1271
1277
|
i0.ɵɵelementEnd()()();
|
|
1272
|
-
i0.ɵɵelementStart(6, "td",
|
|
1278
|
+
i0.ɵɵelementStart(6, "td", 218);
|
|
1273
1279
|
i0.ɵɵtext(7);
|
|
1274
1280
|
i0.ɵɵpipe(8, "date");
|
|
1275
1281
|
i0.ɵɵelementEnd();
|
|
1276
|
-
i0.ɵɵelementStart(9, "td",
|
|
1277
|
-
i0.ɵɵelement(11, "i",
|
|
1282
|
+
i0.ɵɵelementStart(9, "td", 218)(10, "span", 217);
|
|
1283
|
+
i0.ɵɵelement(11, "i", 95);
|
|
1278
1284
|
i0.ɵɵtext(12);
|
|
1279
1285
|
i0.ɵɵelementEnd()();
|
|
1280
|
-
i0.ɵɵelementStart(13, "td",
|
|
1286
|
+
i0.ɵɵelementStart(13, "td", 218);
|
|
1281
1287
|
i0.ɵɵtext(14);
|
|
1282
1288
|
i0.ɵɵelementEnd();
|
|
1283
|
-
i0.ɵɵelementStart(15, "td",
|
|
1289
|
+
i0.ɵɵelementStart(15, "td", 219);
|
|
1284
1290
|
i0.ɵɵtext(16);
|
|
1285
1291
|
i0.ɵɵelementEnd();
|
|
1286
|
-
i0.ɵɵelementStart(17, "td",
|
|
1292
|
+
i0.ɵɵelementStart(17, "td", 219);
|
|
1287
1293
|
i0.ɵɵtext(18);
|
|
1288
1294
|
i0.ɵɵelementEnd();
|
|
1289
|
-
i0.ɵɵelementStart(19, "td",
|
|
1290
|
-
i0.ɵɵconditionalCreate(20,
|
|
1295
|
+
i0.ɵɵelementStart(19, "td", 220);
|
|
1296
|
+
i0.ɵɵconditionalCreate(20, MJAIPromptFormComponentExtended_Conditional_2_Conditional_74_Conditional_5_For_41_Conditional_20_Template, 2, 1, "span", 221);
|
|
1291
1297
|
i0.ɵɵelementEnd();
|
|
1292
|
-
i0.ɵɵelementStart(21, "td",
|
|
1293
|
-
i0.ɵɵlistener("click", function
|
|
1294
|
-
i0.ɵɵelement(23, "i",
|
|
1298
|
+
i0.ɵɵelementStart(21, "td", 220)(22, "button", 222);
|
|
1299
|
+
i0.ɵɵlistener("click", function MJAIPromptFormComponentExtended_Conditional_2_Conditional_74_Conditional_5_For_41_Template_button_click_22_listener() { const run_r34 = i0.ɵɵrestoreView(_r33).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.navigateToPromptRun(run_r34.ID)); });
|
|
1300
|
+
i0.ɵɵelement(23, "i", 223);
|
|
1295
1301
|
i0.ɵɵelementEnd()()();
|
|
1296
1302
|
} if (rf & 2) {
|
|
1297
1303
|
const run_r34 = ctx.$implicit;
|
|
1298
|
-
const ɵ$
|
|
1304
|
+
const ɵ$index_867_r35 = ctx.$index;
|
|
1299
1305
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
1300
|
-
i0.ɵɵclassProp("even-row", ɵ$
|
|
1306
|
+
i0.ɵɵclassProp("even-row", ɵ$index_867_r35 % 2 === 0);
|
|
1301
1307
|
i0.ɵɵadvance(3);
|
|
1302
1308
|
i0.ɵɵclassMap("fa-solid " + ctx_r1.getExecutionStatusIcon(run_r34.Success));
|
|
1303
1309
|
i0.ɵɵstyleProp("color", ctx_r1.getExecutionStatusColor(run_r34.Success));
|
|
@@ -1318,60 +1324,60 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_63_Conditiona
|
|
|
1318
1324
|
i0.ɵɵadvance(2);
|
|
1319
1325
|
i0.ɵɵconditional(run_r34.RunType ? 20 : -1);
|
|
1320
1326
|
} }
|
|
1321
|
-
function
|
|
1327
|
+
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_74_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
1322
1328
|
const _r32 = i0.ɵɵgetCurrentView();
|
|
1323
|
-
i0.ɵɵelementStart(0, "div",
|
|
1329
|
+
i0.ɵɵelementStart(0, "div", 202)(1, "div", 135);
|
|
1324
1330
|
i0.ɵɵtext(2);
|
|
1325
1331
|
i0.ɵɵelementEnd();
|
|
1326
|
-
i0.ɵɵelementStart(3, "div",
|
|
1332
|
+
i0.ɵɵelementStart(3, "div", 203)(4, "span", 180);
|
|
1327
1333
|
i0.ɵɵtext(5, "Sort by:");
|
|
1328
1334
|
i0.ɵɵelementEnd();
|
|
1329
|
-
i0.ɵɵelementStart(6, "kendo-buttongroup",
|
|
1330
|
-
i0.ɵɵlistener("click", function
|
|
1335
|
+
i0.ɵɵelementStart(6, "kendo-buttongroup", 204)(7, "button", 205);
|
|
1336
|
+
i0.ɵɵlistener("click", function MJAIPromptFormComponentExtended_Conditional_2_Conditional_74_Conditional_5_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r32); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.changeHistorySort("runAt")); });
|
|
1331
1337
|
i0.ɵɵtext(8, " Date ");
|
|
1332
|
-
i0.ɵɵconditionalCreate(9,
|
|
1338
|
+
i0.ɵɵconditionalCreate(9, MJAIPromptFormComponentExtended_Conditional_2_Conditional_74_Conditional_5_Conditional_9_Template, 1, 2, "i", 206);
|
|
1333
1339
|
i0.ɵɵelementEnd();
|
|
1334
|
-
i0.ɵɵelementStart(10, "button",
|
|
1335
|
-
i0.ɵɵlistener("click", function
|
|
1340
|
+
i0.ɵɵelementStart(10, "button", 205);
|
|
1341
|
+
i0.ɵɵlistener("click", function MJAIPromptFormComponentExtended_Conditional_2_Conditional_74_Conditional_5_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r32); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.changeHistorySort("executionTime")); });
|
|
1336
1342
|
i0.ɵɵtext(11, " Duration ");
|
|
1337
|
-
i0.ɵɵconditionalCreate(12,
|
|
1343
|
+
i0.ɵɵconditionalCreate(12, MJAIPromptFormComponentExtended_Conditional_2_Conditional_74_Conditional_5_Conditional_12_Template, 1, 2, "i", 206);
|
|
1338
1344
|
i0.ɵɵelementEnd();
|
|
1339
|
-
i0.ɵɵelementStart(13, "button",
|
|
1340
|
-
i0.ɵɵlistener("click", function
|
|
1345
|
+
i0.ɵɵelementStart(13, "button", 205);
|
|
1346
|
+
i0.ɵɵlistener("click", function MJAIPromptFormComponentExtended_Conditional_2_Conditional_74_Conditional_5_Template_button_click_13_listener() { i0.ɵɵrestoreView(_r32); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.changeHistorySort("tokens")); });
|
|
1341
1347
|
i0.ɵɵtext(14, " Tokens ");
|
|
1342
|
-
i0.ɵɵconditionalCreate(15,
|
|
1348
|
+
i0.ɵɵconditionalCreate(15, MJAIPromptFormComponentExtended_Conditional_2_Conditional_74_Conditional_5_Conditional_15_Template, 1, 2, "i", 206);
|
|
1343
1349
|
i0.ɵɵelementEnd();
|
|
1344
|
-
i0.ɵɵelementStart(16, "button",
|
|
1345
|
-
i0.ɵɵlistener("click", function
|
|
1350
|
+
i0.ɵɵelementStart(16, "button", 205);
|
|
1351
|
+
i0.ɵɵlistener("click", function MJAIPromptFormComponentExtended_Conditional_2_Conditional_74_Conditional_5_Template_button_click_16_listener() { i0.ɵɵrestoreView(_r32); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.changeHistorySort("cost")); });
|
|
1346
1352
|
i0.ɵɵtext(17, " Cost ");
|
|
1347
|
-
i0.ɵɵconditionalCreate(18,
|
|
1353
|
+
i0.ɵɵconditionalCreate(18, MJAIPromptFormComponentExtended_Conditional_2_Conditional_74_Conditional_5_Conditional_18_Template, 1, 2, "i", 206);
|
|
1348
1354
|
i0.ɵɵelementEnd()()()();
|
|
1349
|
-
i0.ɵɵelementStart(19, "div",
|
|
1355
|
+
i0.ɵɵelementStart(19, "div", 207)(20, "table", 208)(21, "thead")(22, "tr", 209)(23, "th", 210);
|
|
1350
1356
|
i0.ɵɵtext(24, "Status");
|
|
1351
1357
|
i0.ɵɵelementEnd();
|
|
1352
|
-
i0.ɵɵelementStart(25, "th",
|
|
1358
|
+
i0.ɵɵelementStart(25, "th", 210);
|
|
1353
1359
|
i0.ɵɵtext(26, "Date & Time");
|
|
1354
1360
|
i0.ɵɵelementEnd();
|
|
1355
|
-
i0.ɵɵelementStart(27, "th",
|
|
1361
|
+
i0.ɵɵelementStart(27, "th", 210);
|
|
1356
1362
|
i0.ɵɵtext(28, "Model");
|
|
1357
1363
|
i0.ɵɵelementEnd();
|
|
1358
|
-
i0.ɵɵelementStart(29, "th",
|
|
1364
|
+
i0.ɵɵelementStart(29, "th", 210);
|
|
1359
1365
|
i0.ɵɵtext(30, "Duration");
|
|
1360
1366
|
i0.ɵɵelementEnd();
|
|
1361
|
-
i0.ɵɵelementStart(31, "th",
|
|
1367
|
+
i0.ɵɵelementStart(31, "th", 211);
|
|
1362
1368
|
i0.ɵɵtext(32, "Tokens");
|
|
1363
1369
|
i0.ɵɵelementEnd();
|
|
1364
|
-
i0.ɵɵelementStart(33, "th",
|
|
1370
|
+
i0.ɵɵelementStart(33, "th", 211);
|
|
1365
1371
|
i0.ɵɵtext(34, "Cost");
|
|
1366
1372
|
i0.ɵɵelementEnd();
|
|
1367
|
-
i0.ɵɵelementStart(35, "th",
|
|
1373
|
+
i0.ɵɵelementStart(35, "th", 212);
|
|
1368
1374
|
i0.ɵɵtext(36, "Type");
|
|
1369
1375
|
i0.ɵɵelementEnd();
|
|
1370
|
-
i0.ɵɵelementStart(37, "th",
|
|
1376
|
+
i0.ɵɵelementStart(37, "th", 212);
|
|
1371
1377
|
i0.ɵɵtext(38, "Actions");
|
|
1372
1378
|
i0.ɵɵelementEnd()()();
|
|
1373
1379
|
i0.ɵɵelementStart(39, "tbody");
|
|
1374
|
-
i0.ɵɵrepeaterCreate(40,
|
|
1380
|
+
i0.ɵɵrepeaterCreate(40, MJAIPromptFormComponentExtended_Conditional_2_Conditional_74_Conditional_5_For_41_Template, 24, 18, "tr", 213, _forTrack1);
|
|
1375
1381
|
i0.ɵɵelementEnd()()();
|
|
1376
1382
|
} if (rf & 2) {
|
|
1377
1383
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1396,11 +1402,11 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_63_Conditiona
|
|
|
1396
1402
|
i0.ɵɵadvance(22);
|
|
1397
1403
|
i0.ɵɵrepeater(ctx_r1.executionHistory);
|
|
1398
1404
|
} }
|
|
1399
|
-
function
|
|
1405
|
+
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_74_Template(rf, ctx) { if (rf & 1) {
|
|
1400
1406
|
i0.ɵɵelementStart(0, "kendo-expansionpanel", 29);
|
|
1401
|
-
i0.ɵɵtemplate(1,
|
|
1402
|
-
i0.ɵɵelementStart(2, "div",
|
|
1403
|
-
i0.ɵɵconditionalCreate(3,
|
|
1407
|
+
i0.ɵɵtemplate(1, MJAIPromptFormComponentExtended_Conditional_2_Conditional_74_ng_template_1_Template, 4, 1, "ng-template", 30);
|
|
1408
|
+
i0.ɵɵelementStart(2, "div", 190);
|
|
1409
|
+
i0.ɵɵconditionalCreate(3, MJAIPromptFormComponentExtended_Conditional_2_Conditional_74_Conditional_3_Template, 4, 0, "div", 197)(4, MJAIPromptFormComponentExtended_Conditional_2_Conditional_74_Conditional_4_Template, 6, 0, "div", 197)(5, MJAIPromptFormComponentExtended_Conditional_2_Conditional_74_Conditional_5_Template, 42, 9);
|
|
1404
1410
|
i0.ɵɵelementEnd()();
|
|
1405
1411
|
} if (rf & 2) {
|
|
1406
1412
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1408,17 +1414,17 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_63_Template(r
|
|
|
1408
1414
|
i0.ɵɵadvance(3);
|
|
1409
1415
|
i0.ɵɵconditional(ctx_r1.isLoadingHistory ? 3 : ctx_r1.executionHistory.length === 0 ? 4 : 5);
|
|
1410
1416
|
} }
|
|
1411
|
-
function
|
|
1412
|
-
i0.ɵɵelementStart(0, "span",
|
|
1413
|
-
i0.ɵɵelement(1, "i",
|
|
1417
|
+
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_75_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
1418
|
+
i0.ɵɵelementStart(0, "span", 68);
|
|
1419
|
+
i0.ɵɵelement(1, "i", 225);
|
|
1414
1420
|
i0.ɵɵtext(2, " Result Cache ");
|
|
1415
1421
|
i0.ɵɵelementEnd();
|
|
1416
1422
|
} }
|
|
1417
|
-
function
|
|
1423
|
+
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_75_Template(rf, ctx) { if (rf & 1) {
|
|
1418
1424
|
i0.ɵɵelementStart(0, "kendo-expansionpanel", 29);
|
|
1419
|
-
i0.ɵɵtemplate(1,
|
|
1425
|
+
i0.ɵɵtemplate(1, MJAIPromptFormComponentExtended_Conditional_2_Conditional_75_ng_template_1_Template, 3, 0, "ng-template", 30);
|
|
1420
1426
|
i0.ɵɵelementStart(2, "div", 36);
|
|
1421
|
-
i0.ɵɵelement(3, "mj-explorer-entity-data-grid",
|
|
1427
|
+
i0.ɵɵelement(3, "mj-explorer-entity-data-grid", 224);
|
|
1422
1428
|
i0.ɵɵelementEnd()();
|
|
1423
1429
|
} if (rf & 2) {
|
|
1424
1430
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1426,24 +1432,24 @@ function MJAIPromptFormComponentExtended_Conditional_2_Conditional_64_Template(r
|
|
|
1426
1432
|
i0.ɵɵadvance(3);
|
|
1427
1433
|
i0.ɵɵproperty("Params", ctx_r1.BuildRelationshipViewParamsByEntityName("MJ: AI Result Cache", "AIPromptID"))("NewRecordValues", ctx_r1.NewRecordValues("MJ: AI Result Cache"))("AllowLoad", true)("ShowToolbar", false);
|
|
1428
1434
|
} }
|
|
1429
|
-
function
|
|
1430
|
-
i0.ɵɵelementStart(0, "span",
|
|
1431
|
-
i0.ɵɵelement(1, "i",
|
|
1435
|
+
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_76_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
1436
|
+
i0.ɵɵelementStart(0, "span", 68);
|
|
1437
|
+
i0.ɵɵelement(1, "i", 227);
|
|
1432
1438
|
i0.ɵɵtext(2, " Related Items ");
|
|
1433
1439
|
i0.ɵɵelementEnd();
|
|
1434
1440
|
} }
|
|
1435
|
-
function
|
|
1441
|
+
function MJAIPromptFormComponentExtended_Conditional_2_Conditional_76_Template(rf, ctx) { if (rf & 1) {
|
|
1436
1442
|
i0.ɵɵelementStart(0, "kendo-expansionpanel", 29);
|
|
1437
|
-
i0.ɵɵtemplate(1,
|
|
1438
|
-
i0.ɵɵelementStart(2, "div", 36)(3, "div", 37)(4, "div")(5, "h6",
|
|
1443
|
+
i0.ɵɵtemplate(1, MJAIPromptFormComponentExtended_Conditional_2_Conditional_76_ng_template_1_Template, 3, 0, "ng-template", 30);
|
|
1444
|
+
i0.ɵɵelementStart(2, "div", 36)(3, "div", 37)(4, "div")(5, "h6", 226);
|
|
1439
1445
|
i0.ɵɵtext(6, "AI Agents Using This Prompt");
|
|
1440
1446
|
i0.ɵɵelementEnd();
|
|
1441
|
-
i0.ɵɵelement(7, "mj-explorer-entity-data-grid",
|
|
1447
|
+
i0.ɵɵelement(7, "mj-explorer-entity-data-grid", 224);
|
|
1442
1448
|
i0.ɵɵelementEnd();
|
|
1443
|
-
i0.ɵɵelementStart(8, "div")(9, "h6",
|
|
1449
|
+
i0.ɵɵelementStart(8, "div")(9, "h6", 226);
|
|
1444
1450
|
i0.ɵɵtext(10, "Prompts Using This as Result Selector");
|
|
1445
1451
|
i0.ɵɵelementEnd();
|
|
1446
|
-
i0.ɵɵelement(11, "mj-explorer-entity-data-grid",
|
|
1452
|
+
i0.ɵɵelement(11, "mj-explorer-entity-data-grid", 224);
|
|
1447
1453
|
i0.ɵɵelementEnd()()()();
|
|
1448
1454
|
} if (rf & 2) {
|
|
1449
1455
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1509,11 +1515,22 @@ function MJAIPromptFormComponentExtended_Conditional_2_Template(rf, ctx) { if (r
|
|
|
1509
1515
|
i0.ɵɵelementEnd();
|
|
1510
1516
|
i0.ɵɵconditionalCreate(59, MJAIPromptFormComponentExtended_Conditional_2_Conditional_59_Template, 2, 1)(60, MJAIPromptFormComponentExtended_Conditional_2_Conditional_60_Template, 2, 1, "span", 47);
|
|
1511
1517
|
i0.ɵɵelementEnd()()()()();
|
|
1512
|
-
i0.ɵɵ
|
|
1513
|
-
i0.ɵɵ
|
|
1514
|
-
i0.ɵɵ
|
|
1515
|
-
i0.ɵɵ
|
|
1516
|
-
i0.ɵɵ
|
|
1518
|
+
i0.ɵɵelementStart(61, "kendo-expansionpanel", 29);
|
|
1519
|
+
i0.ɵɵtemplate(62, MJAIPromptFormComponentExtended_Conditional_2_ng_template_62_Template, 3, 0, "ng-template", 30);
|
|
1520
|
+
i0.ɵɵelementStart(63, "div", 36)(64, "p", 48);
|
|
1521
|
+
i0.ɵɵtext(65, " Assistant prefill seeds the model's response with an initial string, guiding output format and content. Stop sequences terminate generation when encountered. ");
|
|
1522
|
+
i0.ɵɵelementEnd();
|
|
1523
|
+
i0.ɵɵelementStart(66, "div", 37)(67, "div");
|
|
1524
|
+
i0.ɵɵelement(68, "mj-form-field", 49)(69, "mj-form-field", 50);
|
|
1525
|
+
i0.ɵɵelementEnd();
|
|
1526
|
+
i0.ɵɵelementStart(70, "div");
|
|
1527
|
+
i0.ɵɵelement(71, "mj-form-field", 51);
|
|
1528
|
+
i0.ɵɵelementEnd()()()();
|
|
1529
|
+
i0.ɵɵconditionalCreate(72, MJAIPromptFormComponentExtended_Conditional_2_Conditional_72_Template, 6, 2, "kendo-expansionpanel", 29);
|
|
1530
|
+
i0.ɵɵconditionalCreate(73, MJAIPromptFormComponentExtended_Conditional_2_Conditional_73_Template, 6, 2, "kendo-expansionpanel", 29);
|
|
1531
|
+
i0.ɵɵconditionalCreate(74, MJAIPromptFormComponentExtended_Conditional_2_Conditional_74_Template, 6, 2, "kendo-expansionpanel", 29);
|
|
1532
|
+
i0.ɵɵconditionalCreate(75, MJAIPromptFormComponentExtended_Conditional_2_Conditional_75_Template, 4, 5, "kendo-expansionpanel", 29);
|
|
1533
|
+
i0.ɵɵconditionalCreate(76, MJAIPromptFormComponentExtended_Conditional_2_Conditional_76_Template, 12, 9, "kendo-expansionpanel", 29);
|
|
1517
1534
|
i0.ɵɵelementEnd()()();
|
|
1518
1535
|
} if (rf & 2) {
|
|
1519
1536
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -1566,21 +1583,29 @@ function MJAIPromptFormComponentExtended_Conditional_2_Template(rf, ctx) { if (r
|
|
|
1566
1583
|
i0.ɵɵadvance(4);
|
|
1567
1584
|
i0.ɵɵconditional(ctx_r1.EditMode ? 59 : 60);
|
|
1568
1585
|
i0.ɵɵadvance(2);
|
|
1569
|
-
i0.ɵɵ
|
|
1586
|
+
i0.ɵɵproperty("expanded", false);
|
|
1587
|
+
i0.ɵɵadvance(7);
|
|
1588
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode);
|
|
1589
|
+
i0.ɵɵadvance();
|
|
1590
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode);
|
|
1591
|
+
i0.ɵɵadvance(2);
|
|
1592
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode);
|
|
1593
|
+
i0.ɵɵadvance();
|
|
1594
|
+
i0.ɵɵconditional(ctx_r1.template && ctx_r1.templateParams.length > 0 ? 72 : -1);
|
|
1570
1595
|
i0.ɵɵadvance();
|
|
1571
|
-
i0.ɵɵconditional(ctx_r1.showOutputExample ?
|
|
1596
|
+
i0.ɵɵconditional(ctx_r1.showOutputExample ? 73 : -1);
|
|
1572
1597
|
i0.ɵɵadvance();
|
|
1573
|
-
i0.ɵɵconditional(ctx_r1.record.IsSaved ?
|
|
1598
|
+
i0.ɵɵconditional(ctx_r1.record.IsSaved ? 74 : -1);
|
|
1574
1599
|
i0.ɵɵadvance();
|
|
1575
|
-
i0.ɵɵconditional(ctx_r1.record.IsSaved && ctx_r1.record.EnableCaching ?
|
|
1600
|
+
i0.ɵɵconditional(ctx_r1.record.IsSaved && ctx_r1.record.EnableCaching ? 75 : -1);
|
|
1576
1601
|
i0.ɵɵadvance();
|
|
1577
|
-
i0.ɵɵconditional(ctx_r1.record.IsSaved ?
|
|
1602
|
+
i0.ɵɵconditional(ctx_r1.record.IsSaved ? 76 : -1);
|
|
1578
1603
|
} }
|
|
1579
1604
|
function MJAIPromptFormComponentExtended_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1580
1605
|
const _r36 = i0.ɵɵgetCurrentView();
|
|
1581
|
-
i0.ɵɵelementStart(0, "kendo-window",
|
|
1606
|
+
i0.ɵɵelementStart(0, "kendo-window", 228);
|
|
1582
1607
|
i0.ɵɵlistener("close", function MJAIPromptFormComponentExtended_Conditional_3_Template_kendo_window_close_0_listener() { i0.ɵɵrestoreView(_r36); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onTestHarnessVisibilityChanged(false)); });
|
|
1583
|
-
i0.ɵɵelementStart(1, "mj-ai-test-harness",
|
|
1608
|
+
i0.ɵɵelementStart(1, "mj-ai-test-harness", 229);
|
|
1584
1609
|
i0.ɵɵlistener("visibilityChange", function MJAIPromptFormComponentExtended_Conditional_3_Template_mj_ai_test_harness_visibilityChange_1_listener($event) { i0.ɵɵrestoreView(_r36); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onTestHarnessVisibilityChanged($event)); });
|
|
1585
1610
|
i0.ɵɵelementEnd()();
|
|
1586
1611
|
} if (rf & 2) {
|
|
@@ -3061,10 +3086,10 @@ let MJAIPromptFormComponentExtended = class MJAIPromptFormComponentExtended exte
|
|
|
3061
3086
|
} if (rf & 2) {
|
|
3062
3087
|
let _t;
|
|
3063
3088
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templateEditor = _t.first);
|
|
3064
|
-
} }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 4, vars: 2, consts: [["form", "ngForm"], ["templateEditor", ""], [1, "record-form-container", 2, "height", "100%", "display", "flex", "flex-direction", "column"], ["kendoDialogContainer", ""], [1, "record-form", 2, "display", "flex", "flex-direction", "column", "height", "100%", "overflow", "hidden"], [3, "width", "height", "minWidth", "minHeight", "draggable", "resizable", "state", "title"], [3, "Form"], [1, "prompt-main-area", 2, "display", "flex", "flex-direction", "column", "flex", "1", "min-height", "0", "overflow-y", "auto"], [1, "prompt-header", 2, "flex-shrink", "0", "padding", "20px", "background", "var(--mj-bg-surface-sunken)", "border-bottom", "2px solid var(--mj-border-default)"], [2, "display", "flex", "justify-content", "space-between", "align-items", "flex-start", "gap", "20px"], [2, "flex", "1", "min-width", "0"], [2, "display", "flex", "align-items", "center", "gap", "12px", "margin-bottom", "8px"], [1, "fa-solid", "fa-robot", 2, "color", "var(--mj-brand-primary)", "font-size", "1.4em"], ["name", "promptName", "placeholder", "Enter prompt name...", 2, "font-size", "1.2em", "font-weight", "600", "min-width", "300px", "flex", "1", 3, "ngModel"], [2, "display", "flex", "gap", "16px", "margin-bottom", "12px", "flex-wrap", "wrap"], ["name", "promptDescription", "placeholder", "Enter prompt description...", 2, "width", "100%", "max-width", "600px", "margin-bottom", "12px", 3, "ngModel", "rows"], [2, "margin", "0 0 12px 0", "color", "var(--mj-text-muted)", "font-size", "0.9em", "line-height", "1.4"], [1, "quick-config", 2, "display", "flex", "align-items", "center", "gap", "16px", "flex-wrap", "wrap"], [1, "config-item", 2, "display", "flex", "align-items", "center", "gap", "6px", "font-size", "0.85em"], [1, "fa-solid", "fa-layer-group", 2, "color", "var(--mj-text-muted)"], [2, "color", "var(--mj-text-muted)"], [2, "color", "var(--mj-text-secondary)", "font-weight", "500"], [1, "fa-solid", "fa-code", 2, "color", "var(--mj-text-muted)"], [2, "font-weight", "500"], [1, "action-buttons", 2, "display", "flex", "flex-direction", "column", "gap", "8px", "align-items", "flex-end"], [2, "display", "flex", "gap", "8px"], ["kendoButton", "", "title", "Run AI Prompt Test Harness", 3, "themeColor", "size"], [2, "font-size", "0.75em", "color", "#dc3545", "text-align", "right", "max-width", "200px"], [1, "configuration-sections", 2, "flex", "1", "background", "var(--mj-bg-surface-card)", "border-top", "2px solid var(--mj-border-default)", "padding", "16px", "min-height", "0"], [2, "margin-bottom", "12px", 3, "expanded"], ["kendoExpansionPanelTitleDirective", ""], [1, "template-section", 2, "display", "flex", "flex-direction", "column", "min-height", "400px", "padding", "8px"], [1, "loading-state", 2, "flex", "1", "display", "flex", "align-items", "center", "justify-content", "center", "color", "var(--mj-text-muted)"], [1, "no-template-state", 2, "flex", "1", "display", "flex", "flex-direction", "column", "align-items", "center", "justify-content", "center", "padding", "40px", "color", "var(--mj-text-muted)"], [1, "invalid-template-state", 2, "flex", "1", "display", "flex", "flex-direction", "column", "align-items", "center", "justify-content", "center", "padding", "40px", "color", "#dc3545"], [1, "template-editor-container", 2, "flex", "1", "display", "flex", "flex-direction", "column", "min-height", "350px"], [2, "padding", "16px 0"], [2, "display", "grid", "grid-template-columns", "1fr 1fr", "gap", "20px"], ["FieldName", "ParallelizationMode", "Type", "dropdownlist", 3, "Record", "ShowLabel", "EditMode"], ["FieldName", "ParallelCount", "Type", "numerictextbox", 3, "Record", "ShowLabel", "EditMode"], ["FieldName", "ParallelConfigParam", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode"], ["FieldName", "OutputType", "Type", "dropdownlist", 3, "Record", "ShowLabel", "EditMode"], ["FieldName", "EffortLevel", "Type", "numerictextbox", "Caption", "Effort Level (1-100)", "Description", "Higher values request more thorough reasoning", 3, "Record", "ShowLabel", "EditMode"], ["FieldName", "ValidationBehavior", "Type", "dropdownlist", 3, "Record", "ShowLabel", "EditMode"], ["FieldName", "EnableCaching", "Type", "checkbox", 3, "Record", "ShowLabel", "EditMode"], [2, "margin-bottom", "16px"], [2, "display", "block", "margin-bottom", "4px", "font-weight", "600", "color", "var(--mj-text-secondary)", "font-size", "0.9em"], [2, "color", "var(--mj-text-secondary)"], ["name", "promptName", "placeholder", "Enter prompt name...", 2, "font-size", "1.2em", "font-weight", "600", "min-width", "300px", "flex", "1", 3, "ngModelChange", "ngModel"], [2, "margin", "0", "color", "var(--mj-text-secondary)", "font-weight", "600", "flex", "1"], [1, "status-badge", 2, "color", "white", "padding", "4px 10px", "border-radius", "12px", "font-size", "0.75em", "font-weight", "500"], ["name", "promptStatus", "textField", "text", "valueField", "value", 2, "width", "150px", 3, "ngModelChange", "ngModel", "data", "valuePrimitive"], [2, "color", "#dc3545"], [2, "padding", "8px", "color", "var(--mj-text-muted)", "font-style", "italic", "width", "200px"], ["name", "promptTypeID", "textField", "Name", "valueField", "ID", "placeholder", "Select prompt type...", 2, "width", "200px", 3, "ngModel", "data", "valuePrimitive", "filterable"], [1, "fa-solid", "fa-spinner", "fa-spin"], ["name", "promptTypeID", "textField", "Name", "valueField", "ID", "placeholder", "Select prompt type...", 2, "width", "200px", 3, "ngModelChange", "ngModel", "data", "valuePrimitive", "filterable"], ["name", "promptDescription", "placeholder", "Enter prompt description...", 2, "width", "100%", "max-width", "600px", "margin-bottom", "12px", 3, "ngModelChange", "ngModel", "rows"], [1, "fa-solid", "fa-tag", 2, "color", "var(--mj-text-muted)"], [1, "fa-solid", "fa-database", 2, "color", "#28a745"], [2, "color", "#28a745", "font-weight", "500"], [1, "fa-solid", "fa-tachometer-alt", 2, "color", "var(--mj-text-muted)"], ["kendoButton", "", "title", "Run AI Prompt Test Harness", 3, "click", "themeColor", "size"], [1, "fa-solid", "fa-play"], [2, "display", "flex", "align-items", "center", "gap", "8px", "font-weight", "600"], [2, "color", "var(--mj-text-muted)", "font-size", "0.9em", "font-weight", "normal"], [1, "fa-solid", "fa-spinner", "fa-spin", 2, "font-size", "24px", "margin-right", "12px"], [1, "fa-solid", "fa-code", 2, "font-size", "64px", "margin-bottom", "20px", "opacity", "0.3"], [2, "margin-bottom", "12px", "color", "var(--mj-text-secondary)"], [2, "margin-bottom", "24px", "text-align", "center", "max-width", "400px"], [2, "display", "flex", "gap", "12px"], ["kendoButton", "", 3, "themeColor"], ["kendoButton", "", 3, "fillMode"], ["kendoButton", "", 3, "click", "themeColor"], [1, "fa-solid", "fa-plus"], ["kendoButton", "", 3, "click", "fillMode"], [1, "fa-solid", "fa-link"], [1, "fa-solid", "fa-exclamation-triangle", 2, "font-size", "64px", "margin-bottom", "20px", "opacity", "0.7"], [2, "margin-bottom", "12px"], [1, "fa-solid", "fa-refresh"], [1, "template-actions", 2, "display", "flex", "gap", "8px", "padding", "8px", "border-bottom", "1px solid var(--mj-border-default)", "background", "var(--mj-bg-surface-sunken)"], [2, "flex", "1", "background", "var(--mj-bg-surface-card)", "border-radius", "6px", "border", "1px solid var(--mj-border-default)"], [2, "display", "block", "min-height", "300px", 3, "contentChange", "runTemplate", "template", "config"], ["kendoButton", "", "title", "Change to a different template", 3, "fillMode", "size"], ["kendoButton", "", "title", "Open template in new window", 3, "fillMode", "size"], ["kendoButton", "", "title", "Change to a different template", 3, "click", "fillMode", "size"], [1, "fa-solid", "fa-exchange-alt"], ["kendoButton", "", "title", "Open template in new window", 3, "click", "fillMode", "size"], [1, "fa-solid", "fa-external-link-alt"], [1, "model-management", 2, "border", "1px solid var(--mj-border-default)", "border-radius", "6px", "background", "var(--mj-bg-surface-sunken)"], [1, "loading-state", 2, "padding", "20px", "text-align", "center", "color", "var(--mj-text-muted)"], [1, "fa-solid", "fa-microchip", 2, "color", "var(--mj-text-muted)"], [1, "badge", 2, "background", "#17a2b8", "color", "white", "padding", "2px 6px", "border-radius", "10px", "font-size", "0.7em"], [2, "color", "var(--mj-text-muted)", "font-size", "0.8em", "font-weight", "normal", "margin-left", "8px"], ["title", "Models are tried in order from top to bottom. The first available model will be used.", 1, "fa-solid", "fa-info-circle"], [1, "empty-state", 2, "padding", "20px", "text-align", "center", "color", "var(--mj-text-muted)"], [1, "fa-solid", "fa-info-circle"], [2, "margin-top", "10px"], ["kendoButton", "", "fillMode", "outline", "themeColor", "primary", "size", "small", 3, "click"], [2, "padding", "12px 16px", "background", "color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface))", "border-bottom", "1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-border-default))", "color", "var(--mj-brand-primary)", "font-size", "0.85em"], [1, "model-header", 2, "display", "grid", "grid-template-columns", "40px 2fr 1fr 1fr 1fr 60px", "gap", "12px", "padding", "12px 16px", "background", "var(--mj-bg-surface-sunken)", "font-weight", "600", "font-size", "0.85em", "color", "var(--mj-text-secondary)", "border-bottom", "1px solid var(--mj-border-default)"], ["title", "Priority order - models are tried from top to bottom"], [1, "fa-solid", "fa-sort", 2, "color", "var(--mj-text-muted)"], [1, "add-model-row", 2, "padding", "12px 16px", "text-align", "center", "background", "var(--mj-bg-surface-sunken)", "border-top", "1px solid var(--mj-border-default)"], [1, "fa-solid", "fa-info-circle", 2, "margin-right", "6px"], [1, "model-row", 2, "display", "grid", "grid-template-columns", "40px 2fr 1fr 1fr 1fr 60px", "gap", "12px", "padding", "12px 16px", "border-bottom", "1px solid var(--mj-border-default)", "align-items", "start", "transition", "background 0.2s, opacity 0.2s", 3, "dragstart", "dragover", "drop", "dragend", "draggable"], [1, "drag-handle", 2, "display", "flex", "flex-direction", "column", "align-items", "center", "justify-content", "center", "color", "var(--mj-text-muted)"], [2, "font-size", "0.9em", "font-weight", "600", 3, "title"], [1, "model-select"], ["textField", "Name", "valueField", "ID", "placeholder", "Select a model...", 2, "width", "100%", 3, "ngModel", "name", "data", "valuePrimitive", "filterable"], [1, "model-vendor"], [1, "model-configuration"], [2, "font-size", "0.9em"], [1, "model-created"], [2, "color", "var(--mj-text-muted)", "font-size", "0.8em"], [2, "color", "#28a745", "font-size", "0.8em", "font-style", "italic"], [1, "model-actions", 2, "display", "flex", "gap", "2px", "flex-direction", "column"], [2, "display", "grid", "grid-template-columns", "40px 1fr", "gap", "12px", "padding", "8px 16px", "border-bottom", "1px solid var(--mj-border-default)", "background", "var(--mj-bg-surface-sunken)", "font-size", "0.85em", "color", "var(--mj-text-muted)"], [2, "display", "flex", "gap", "16px", "flex-wrap", "wrap", "align-items", "center", "margin-bottom", "8px"], [2, "padding", "8px", "background", "var(--mj-bg-surface-card)", "border", "1px solid var(--mj-border-default)", "border-radius", "4px", "margin-top", "8px"], ["title", "Drag to reorder priority", 1, "fa-solid", "fa-grip-vertical", 2, "cursor", "move"], [2, "font-size", "0.7em", "margin-top", "2px"], ["textField", "Name", "valueField", "ID", "placeholder", "Select a model...", 2, "width", "100%", 3, "ngModelChange", "valueChange", "ngModel", "name", "data", "valuePrimitive", "filterable"], [2, "color", "var(--mj-text-muted)", "font-style", "italic", "font-size", "0.9em"], ["textField", "Name", "valueField", "ID", "placeholder", "Select vendor...", 2, "width", "100%", 3, "ngModel", "name", "data", "valuePrimitive", "filterable"], ["textField", "Name", "valueField", "ID", "placeholder", "Select vendor...", 2, "width", "100%", 3, "ngModelChange", "ngModel", "name", "data", "valuePrimitive", "filterable"], ["kendoDropDownListItemTemplate", ""], [2, "font-size", "0.8em", "margin-left", "4px"], [2, "font-size", "0.9em", "font-weight", "500", 3, "color"], [2, "font-size", "0.9em", "font-weight", "500"], [2, "font-size", "0.9em", 3, "color"], [2, "color", "var(--mj-text-muted)", "font-size", "0.9em"], [2, "padding", "4px", "color", "var(--mj-text-muted)", "font-style", "italic", "font-size", "0.85em"], ["textField", "Name", "valueField", "ID", "placeholder", "Default", 2, "width", "100%", 3, "ngModel", "name", "data", "valuePrimitive", "filterable"], ["textField", "Name", "valueField", "ID", "placeholder", "Default", 2, "width", "100%", 3, "ngModelChange", "valueChange", "ngModel", "name", "data", "valuePrimitive", "filterable"], ["kendoDropDownListNoDataTemplate", ""], [2, "padding", "8px", "text-align", "center", "color", "var(--mj-text-muted)"], [2, "display", "flex", "gap", "2px", "margin-bottom", "4px"], ["kendoButton", "", "fillMode", "flat", "themeColor", "error", "size", "small", "title", "Remove model"], ["kendoButton", "", "fillMode", "flat", "size", "small", "title", "Move up", 3, "click", "disabled"], [1, "fa-solid", "fa-chevron-up"], ["kendoButton", "", "fillMode", "flat", "size", "small", "title", "Move down", 3, "click", "disabled"], [1, "fa-solid", "fa-chevron-down"], ["kendoButton", "", "fillMode", "flat", "themeColor", "error", "size", "small", "title", "Remove model", 3, "click"], [1, "fa-solid", "fa-times"], [2, "margin-bottom", "6px", "font-weight", "600", "color", "var(--mj-text-secondary)", "font-size", "0.9em"], [1, "fa-solid", "fa-layer-group"], [2, "display", "grid", "grid-template-columns", "1fr 1fr 1fr", "gap", "12px", "align-items", "center"], [2, "display", "flex", "gap", "16px", "flex-wrap", "wrap", "align-items", "center"], [2, "display", "block", "margin-bottom", "2px", "font-size", "0.8em", "font-weight", "600", "color", "var(--mj-text-secondary)"], ["textField", "text", "valueField", "value", "placeholder", "Select mode...", 2, "width", "100%", "font-size", "0.85em", 3, "ngModelChange", "ngModel", "name", "data", "valuePrimitive"], ["placeholder", "Count...", 2, "width", "100%", "font-size", "0.85em", 3, "ngModelChange", "ngModel", "name", "min", "step", "format"], ["placeholder", "Parameter name...", 2, "width", "100%", "font-size", "0.85em", 3, "ngModelChange", "ngModel", "name"], ["kendoButton", "", "fillMode", "outline", "themeColor", "success", "size", "small", 3, "click"], [1, "fa-solid", "fa-cogs", 2, "color", "var(--mj-text-muted)"], [2, "padding", "8px", "color", "var(--mj-text-muted)", "font-style", "italic"], ["name", "resultSelectorPromptID", "textField", "text", "valueField", "value", "placeholder", "Select a result selector prompt...", 2, "width", "100%", 3, "ngModel", "data", "valuePrimitive", "filterable"], ["name", "resultSelectorPromptID", "textField", "text", "valueField", "value", "placeholder", "Select a result selector prompt...", 2, "width", "100%", 3, "ngModelChange", "valueChange", "ngModel", "data", "valuePrimitive", "filterable"], [1, "fa-solid", "fa-sliders", 2, "color", "var(--mj-text-muted)"], [1, "badge", 2, "background", "var(--mj-brand-primary)", "color", "white", "padding", "2px 6px", "border-radius", "10px", "font-size", "0.7em"], ["title", "These parameters are defined in the template and will be available when executing this prompt", 1, "fa-solid", "fa-info-circle"], [2, "display", "grid", "gap", "12px"], [1, "parameter-card", 2, "border", "1px solid var(--mj-border-default)", "border-radius", "8px", "padding", "16px", "background", "var(--mj-bg-surface-sunken)", "transition", "all 0.2s", 3, "border-left"], [2, "margin-top", "16px", "padding", "12px", "background", "color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface))", "border-radius", "6px", "border", "1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-border-default))"], [2, "display", "flex", "align-items", "flex-start", "gap", "8px"], [1, "fa-solid", "fa-lightbulb", 2, "color", "var(--mj-brand-primary)", "margin-top", "2px"], [2, "flex", "1", "font-size", "0.85em", "color", "var(--mj-brand-primary)", "line-height", "1.5"], [1, "parameter-card", 2, "border", "1px solid var(--mj-border-default)", "border-radius", "8px", "padding", "16px", "background", "var(--mj-bg-surface-sunken)", "transition", "all 0.2s"], [2, "display", "flex", "justify-content", "space-between", "align-items", "flex-start", "margin-bottom", "8px"], [2, "display", "flex", "align-items", "center", "gap", "8px"], [2, "font-size", "1.2em"], [2, "margin", "0", "color", "var(--mj-text-secondary)", "font-weight", "600"], [2, "color", "#dc3545", "font-size", "0.9em", "margin-left", "4px"], [1, "type-badge", 2, "color", "white", "padding", "4px 8px", "border-radius", "12px", "font-size", "0.75em", "font-weight", "500"], [2, "color", "#dc3545", "font-size", "0.85em", "font-weight", "500"], [2, "color", "var(--mj-text-muted)", "font-size", "0.85em"], [2, "margin", "0 0 8px 0", "color", "var(--mj-text-muted)", "font-size", "0.9em", "line-height", "1.4"], [2, "font-size", "0.85em", "color", "var(--mj-text-secondary)"], [2, "display", "flex", "align-items", "center", "gap", "4px", "margin-bottom", "4px"], [1, "fa-solid", "fa-info-circle", 2, "color", "var(--mj-text-muted)"], [2, "display", "grid", "grid-template-columns", "repeat(auto-fit, minmax(200px, 1fr))", "gap", "12px", "margin-top", "12px"], [2, "background", "var(--mj-bg-surface-card)", "padding", "8px 12px", "border-radius", "4px", "border", "1px solid var(--mj-border-default)"], [2, "display", "block", "font-size", "0.8em", "color", "var(--mj-text-muted)", "margin-bottom", "2px"], [2, "font-size", "0.85em", "color", "var(--mj-text-secondary)", "word-break", "break-all"], [2, "font-size", "0.8em", "color", "var(--mj-text-secondary)", "word-break", "break-all"], [2, "padding", "16px"], [2, "background", "var(--mj-bg-surface-sunken)", "border", "1px solid var(--mj-border-default)", "border-radius", "4px", "padding", "12px", "font-family", "'Courier New', monospace", "font-size", "0.9em", "white-space", "pre-wrap", "overflow", "auto", "max-height", "250px"], [2, "background", "#fff3cd", "border", "1px solid #ffeaa7", "border-radius", "4px", "padding", "12px", "color", "#856404", "text-align", "center"], [2, "color", "#dc3545", "font-size", "0.8em", "font-weight", "normal"], ["name", "outputExample", "language", "json", "placeholder", "Enter JSON example structure...", 2, "width", "100%", "height", "200px", "border", "1px solid var(--mj-border-default)", "border-radius", "4px", 3, "ngModelChange", "ngModel"], [2, "margin-top", "8px", "color", "var(--mj-text-muted)", "font-size", "0.85em"], [1, "fa-solid", "fa-exclamation-triangle"], [2, "text-align", "center", "padding", "40px", "color", "var(--mj-text-muted)"], [1, "fa-solid", "fa-history", 2, "color", "var(--mj-text-muted)"], [2, "color", "var(--mj-text-muted)", "font-weight", "normal"], [1, "fa-solid", "fa-spinner", "fa-spin", 2, "font-size", "2em", "margin-bottom", "12px"], [1, "fa-solid", "fa-history", 2, "font-size", "3em", "margin-bottom", "12px", "opacity", "0.3"], [2, "display", "flex", "justify-content", "space-between", "align-items", "center", "margin-bottom", "16px"], [2, "display", "flex", "gap", "8px", "align-items", "center"], ["selection", "single"], ["kendoButton", "", "size", "small", 3, "click", "selected"], [2, "margin-left", "4px", "font-size", "0.8em", 3, "class"], [2, "border", "1px solid var(--mj-border-default)", "border-radius", "8px", "overflow", "hidden"], [2, "width", "100%", "border-collapse", "collapse"], [2, "background", "var(--mj-bg-surface-sunken)", "border-bottom", "2px solid var(--mj-border-default)"], [2, "padding", "12px", "text-align", "left", "font-weight", "600", "color", "var(--mj-text-secondary)"], [2, "padding", "12px", "text-align", "right", "font-weight", "600", "color", "var(--mj-text-secondary)"], [2, "padding", "12px", "text-align", "center", "font-weight", "600", "color", "var(--mj-text-secondary)"], [1, "history-row", 2, "border-bottom", "1px solid var(--mj-border-default)", 3, "even-row"], [2, "margin-left", "4px", "font-size", "0.8em"], [1, "history-row", 2, "border-bottom", "1px solid var(--mj-border-default)"], [2, "padding", "12px"], [2, "display", "flex", "align-items", "center", "gap", "6px"], [2, "padding", "12px", "color", "var(--mj-text-secondary)"], [2, "padding", "12px", "text-align", "right", "color", "var(--mj-text-secondary)"], [2, "padding", "12px", "text-align", "center"], [2, "padding", "4px 8px", "border-radius", "12px", "background", "var(--mj-bg-surface-sunken)", "color", "var(--mj-text-secondary)", "font-size", "0.85em", "font-weight", "500"], ["kendoButton", "", "fillMode", "flat", "size", "small", "title", "View details", 3, "click"], [1, "fa-solid", "fa-external-link"], [3, "Params", "NewRecordValues", "AllowLoad", "ShowToolbar"], [1, "fa-solid", "fa-database", 2, "color", "var(--mj-text-muted)"], [2, "margin", "0 0 12px 0", "color", "var(--mj-text-secondary)"], [1, "fa-solid", "fa-link", 2, "color", "var(--mj-text-muted)"], [3, "close", "width", "height", "minWidth", "minHeight", "draggable", "resizable", "state", "title"], [3, "visibilityChange", "entity", "mode", "isVisible"]], template: function MJAIPromptFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
|
|
3089
|
+
} }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 4, vars: 2, consts: [["form", "ngForm"], ["templateEditor", ""], [1, "record-form-container", 2, "height", "100%", "display", "flex", "flex-direction", "column"], ["kendoDialogContainer", ""], [1, "record-form", 2, "display", "flex", "flex-direction", "column", "height", "100%", "overflow", "hidden"], [3, "width", "height", "minWidth", "minHeight", "draggable", "resizable", "state", "title"], [3, "Form"], [1, "prompt-main-area", 2, "display", "flex", "flex-direction", "column", "flex", "1", "min-height", "0", "overflow-y", "auto"], [1, "prompt-header", 2, "flex-shrink", "0", "padding", "20px", "background", "var(--mj-bg-surface-sunken)", "border-bottom", "2px solid var(--mj-border-default)"], [2, "display", "flex", "justify-content", "space-between", "align-items", "flex-start", "gap", "20px"], [2, "flex", "1", "min-width", "0"], [2, "display", "flex", "align-items", "center", "gap", "12px", "margin-bottom", "8px"], [1, "fa-solid", "fa-robot", 2, "color", "var(--mj-brand-primary)", "font-size", "1.4em"], ["name", "promptName", "placeholder", "Enter prompt name...", 2, "font-size", "1.2em", "font-weight", "600", "min-width", "300px", "flex", "1", 3, "ngModel"], [2, "display", "flex", "gap", "16px", "margin-bottom", "12px", "flex-wrap", "wrap"], ["name", "promptDescription", "placeholder", "Enter prompt description...", 2, "width", "100%", "max-width", "600px", "margin-bottom", "12px", 3, "ngModel", "rows"], [2, "margin", "0 0 12px 0", "color", "var(--mj-text-muted)", "font-size", "0.9em", "line-height", "1.4"], [1, "quick-config", 2, "display", "flex", "align-items", "center", "gap", "16px", "flex-wrap", "wrap"], [1, "config-item", 2, "display", "flex", "align-items", "center", "gap", "6px", "font-size", "0.85em"], [1, "fa-solid", "fa-layer-group", 2, "color", "var(--mj-text-muted)"], [2, "color", "var(--mj-text-muted)"], [2, "color", "var(--mj-text-secondary)", "font-weight", "500"], [1, "fa-solid", "fa-code", 2, "color", "var(--mj-text-muted)"], [2, "font-weight", "500"], [1, "action-buttons", 2, "display", "flex", "flex-direction", "column", "gap", "8px", "align-items", "flex-end"], [2, "display", "flex", "gap", "8px"], ["kendoButton", "", "title", "Run AI Prompt Test Harness", 3, "themeColor", "size"], [2, "font-size", "0.75em", "color", "#dc3545", "text-align", "right", "max-width", "200px"], [1, "configuration-sections", 2, "flex", "1", "background", "var(--mj-bg-surface-card)", "border-top", "2px solid var(--mj-border-default)", "padding", "16px", "min-height", "0"], [2, "margin-bottom", "12px", 3, "expanded"], ["kendoExpansionPanelTitleDirective", ""], [1, "template-section", 2, "display", "flex", "flex-direction", "column", "min-height", "400px", "padding", "8px"], [1, "loading-state", 2, "flex", "1", "display", "flex", "align-items", "center", "justify-content", "center", "color", "var(--mj-text-muted)"], [1, "no-template-state", 2, "flex", "1", "display", "flex", "flex-direction", "column", "align-items", "center", "justify-content", "center", "padding", "40px", "color", "var(--mj-text-muted)"], [1, "invalid-template-state", 2, "flex", "1", "display", "flex", "flex-direction", "column", "align-items", "center", "justify-content", "center", "padding", "40px", "color", "#dc3545"], [1, "template-editor-container", 2, "flex", "1", "display", "flex", "flex-direction", "column", "min-height", "350px"], [2, "padding", "16px 0"], [2, "display", "grid", "grid-template-columns", "1fr 1fr", "gap", "20px"], ["FieldName", "ParallelizationMode", "Type", "dropdownlist", 3, "Record", "ShowLabel", "EditMode"], ["FieldName", "ParallelCount", "Type", "numerictextbox", 3, "Record", "ShowLabel", "EditMode"], ["FieldName", "ParallelConfigParam", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode"], ["FieldName", "OutputType", "Type", "dropdownlist", 3, "Record", "ShowLabel", "EditMode"], ["FieldName", "EffortLevel", "Type", "numerictextbox", "Caption", "Effort Level (1-100)", "Description", "Higher values request more thorough reasoning", 3, "Record", "ShowLabel", "EditMode"], ["FieldName", "ValidationBehavior", "Type", "dropdownlist", 3, "Record", "ShowLabel", "EditMode"], ["FieldName", "EnableCaching", "Type", "checkbox", 3, "Record", "ShowLabel", "EditMode"], [2, "margin-bottom", "16px"], [2, "display", "block", "margin-bottom", "4px", "font-weight", "600", "color", "var(--mj-text-secondary)", "font-size", "0.9em"], [2, "color", "var(--mj-text-secondary)"], [2, "margin", "0 0 12px 0", "font-size", "0.85em", "color", "var(--mj-text-muted)"], ["FieldName", "AssistantPrefill", "Type", "textarea", 3, "Record", "ShowLabel", "EditMode"], ["FieldName", "StopSequences", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode"], ["FieldName", "PrefillFallbackMode", "Type", "dropdownlist", 3, "Record", "ShowLabel", "EditMode"], ["name", "promptName", "placeholder", "Enter prompt name...", 2, "font-size", "1.2em", "font-weight", "600", "min-width", "300px", "flex", "1", 3, "ngModelChange", "ngModel"], [2, "margin", "0", "color", "var(--mj-text-secondary)", "font-weight", "600", "flex", "1"], [1, "status-badge", 2, "color", "white", "padding", "4px 10px", "border-radius", "12px", "font-size", "0.75em", "font-weight", "500"], ["name", "promptStatus", "textField", "text", "valueField", "value", 2, "width", "150px", 3, "ngModelChange", "ngModel", "data", "valuePrimitive"], [2, "color", "#dc3545"], [2, "padding", "8px", "color", "var(--mj-text-muted)", "font-style", "italic", "width", "200px"], ["name", "promptTypeID", "textField", "Name", "valueField", "ID", "placeholder", "Select prompt type...", 2, "width", "200px", 3, "ngModel", "data", "valuePrimitive", "filterable"], [1, "fa-solid", "fa-spinner", "fa-spin"], ["name", "promptTypeID", "textField", "Name", "valueField", "ID", "placeholder", "Select prompt type...", 2, "width", "200px", 3, "ngModelChange", "ngModel", "data", "valuePrimitive", "filterable"], ["name", "promptDescription", "placeholder", "Enter prompt description...", 2, "width", "100%", "max-width", "600px", "margin-bottom", "12px", 3, "ngModelChange", "ngModel", "rows"], [1, "fa-solid", "fa-tag", 2, "color", "var(--mj-text-muted)"], [1, "fa-solid", "fa-database", 2, "color", "#28a745"], [2, "color", "#28a745", "font-weight", "500"], [1, "fa-solid", "fa-tachometer-alt", 2, "color", "var(--mj-text-muted)"], ["kendoButton", "", "title", "Run AI Prompt Test Harness", 3, "click", "themeColor", "size"], [1, "fa-solid", "fa-play"], [2, "display", "flex", "align-items", "center", "gap", "8px", "font-weight", "600"], [2, "color", "var(--mj-text-muted)", "font-size", "0.9em", "font-weight", "normal"], [1, "fa-solid", "fa-spinner", "fa-spin", 2, "font-size", "24px", "margin-right", "12px"], [1, "fa-solid", "fa-code", 2, "font-size", "64px", "margin-bottom", "20px", "opacity", "0.3"], [2, "margin-bottom", "12px", "color", "var(--mj-text-secondary)"], [2, "margin-bottom", "24px", "text-align", "center", "max-width", "400px"], [2, "display", "flex", "gap", "12px"], ["kendoButton", "", 3, "themeColor"], ["kendoButton", "", 3, "fillMode"], ["kendoButton", "", 3, "click", "themeColor"], [1, "fa-solid", "fa-plus"], ["kendoButton", "", 3, "click", "fillMode"], [1, "fa-solid", "fa-link"], [1, "fa-solid", "fa-exclamation-triangle", 2, "font-size", "64px", "margin-bottom", "20px", "opacity", "0.7"], [2, "margin-bottom", "12px"], [1, "fa-solid", "fa-refresh"], [1, "template-actions", 2, "display", "flex", "gap", "8px", "padding", "8px", "border-bottom", "1px solid var(--mj-border-default)", "background", "var(--mj-bg-surface-sunken)"], [2, "flex", "1", "background", "var(--mj-bg-surface-card)", "border-radius", "6px", "border", "1px solid var(--mj-border-default)"], [2, "display", "block", "min-height", "300px", 3, "contentChange", "runTemplate", "template", "config"], ["kendoButton", "", "title", "Change to a different template", 3, "fillMode", "size"], ["kendoButton", "", "title", "Open template in new window", 3, "fillMode", "size"], ["kendoButton", "", "title", "Change to a different template", 3, "click", "fillMode", "size"], [1, "fa-solid", "fa-exchange-alt"], ["kendoButton", "", "title", "Open template in new window", 3, "click", "fillMode", "size"], [1, "fa-solid", "fa-external-link-alt"], [1, "model-management", 2, "border", "1px solid var(--mj-border-default)", "border-radius", "6px", "background", "var(--mj-bg-surface-sunken)"], [1, "loading-state", 2, "padding", "20px", "text-align", "center", "color", "var(--mj-text-muted)"], [1, "fa-solid", "fa-microchip", 2, "color", "var(--mj-text-muted)"], [1, "badge", 2, "background", "#17a2b8", "color", "white", "padding", "2px 6px", "border-radius", "10px", "font-size", "0.7em"], [2, "color", "var(--mj-text-muted)", "font-size", "0.8em", "font-weight", "normal", "margin-left", "8px"], ["title", "Models are tried in order from top to bottom. The first available model will be used.", 1, "fa-solid", "fa-info-circle"], [1, "empty-state", 2, "padding", "20px", "text-align", "center", "color", "var(--mj-text-muted)"], [1, "fa-solid", "fa-info-circle"], [2, "margin-top", "10px"], ["kendoButton", "", "fillMode", "outline", "themeColor", "primary", "size", "small", 3, "click"], [2, "padding", "12px 16px", "background", "color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface))", "border-bottom", "1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-border-default))", "color", "var(--mj-brand-primary)", "font-size", "0.85em"], [1, "model-header", 2, "display", "grid", "grid-template-columns", "40px 2fr 1fr 1fr 1fr 60px", "gap", "12px", "padding", "12px 16px", "background", "var(--mj-bg-surface-sunken)", "font-weight", "600", "font-size", "0.85em", "color", "var(--mj-text-secondary)", "border-bottom", "1px solid var(--mj-border-default)"], ["title", "Priority order - models are tried from top to bottom"], [1, "fa-solid", "fa-sort", 2, "color", "var(--mj-text-muted)"], [1, "add-model-row", 2, "padding", "12px 16px", "text-align", "center", "background", "var(--mj-bg-surface-sunken)", "border-top", "1px solid var(--mj-border-default)"], [1, "fa-solid", "fa-info-circle", 2, "margin-right", "6px"], [1, "model-row", 2, "display", "grid", "grid-template-columns", "40px 2fr 1fr 1fr 1fr 60px", "gap", "12px", "padding", "12px 16px", "border-bottom", "1px solid var(--mj-border-default)", "align-items", "start", "transition", "background 0.2s, opacity 0.2s", 3, "dragstart", "dragover", "drop", "dragend", "draggable"], [1, "drag-handle", 2, "display", "flex", "flex-direction", "column", "align-items", "center", "justify-content", "center", "color", "var(--mj-text-muted)"], [2, "font-size", "0.9em", "font-weight", "600", 3, "title"], [1, "model-select"], ["textField", "Name", "valueField", "ID", "placeholder", "Select a model...", 2, "width", "100%", 3, "ngModel", "name", "data", "valuePrimitive", "filterable"], [1, "model-vendor"], [1, "model-configuration"], [2, "font-size", "0.9em"], [1, "model-created"], [2, "color", "var(--mj-text-muted)", "font-size", "0.8em"], [2, "color", "#28a745", "font-size", "0.8em", "font-style", "italic"], [1, "model-actions", 2, "display", "flex", "gap", "2px", "flex-direction", "column"], [2, "display", "grid", "grid-template-columns", "40px 1fr", "gap", "12px", "padding", "8px 16px", "border-bottom", "1px solid var(--mj-border-default)", "background", "var(--mj-bg-surface-sunken)", "font-size", "0.85em", "color", "var(--mj-text-muted)"], [2, "display", "flex", "gap", "16px", "flex-wrap", "wrap", "align-items", "center", "margin-bottom", "8px"], [2, "padding", "8px", "background", "var(--mj-bg-surface-card)", "border", "1px solid var(--mj-border-default)", "border-radius", "4px", "margin-top", "8px"], ["title", "Drag to reorder priority", 1, "fa-solid", "fa-grip-vertical", 2, "cursor", "move"], [2, "font-size", "0.7em", "margin-top", "2px"], ["textField", "Name", "valueField", "ID", "placeholder", "Select a model...", 2, "width", "100%", 3, "ngModelChange", "valueChange", "ngModel", "name", "data", "valuePrimitive", "filterable"], [2, "color", "var(--mj-text-muted)", "font-style", "italic", "font-size", "0.9em"], ["textField", "Name", "valueField", "ID", "placeholder", "Select vendor...", 2, "width", "100%", 3, "ngModel", "name", "data", "valuePrimitive", "filterable"], ["textField", "Name", "valueField", "ID", "placeholder", "Select vendor...", 2, "width", "100%", 3, "ngModelChange", "ngModel", "name", "data", "valuePrimitive", "filterable"], ["kendoDropDownListItemTemplate", ""], [2, "font-size", "0.8em", "margin-left", "4px"], [2, "font-size", "0.9em", "font-weight", "500", 3, "color"], [2, "font-size", "0.9em", "font-weight", "500"], [2, "font-size", "0.9em", 3, "color"], [2, "color", "var(--mj-text-muted)", "font-size", "0.9em"], [2, "padding", "4px", "color", "var(--mj-text-muted)", "font-style", "italic", "font-size", "0.85em"], ["textField", "Name", "valueField", "ID", "placeholder", "Default", 2, "width", "100%", 3, "ngModel", "name", "data", "valuePrimitive", "filterable"], ["textField", "Name", "valueField", "ID", "placeholder", "Default", 2, "width", "100%", 3, "ngModelChange", "valueChange", "ngModel", "name", "data", "valuePrimitive", "filterable"], ["kendoDropDownListNoDataTemplate", ""], [2, "padding", "8px", "text-align", "center", "color", "var(--mj-text-muted)"], [2, "display", "flex", "gap", "2px", "margin-bottom", "4px"], ["kendoButton", "", "fillMode", "flat", "themeColor", "error", "size", "small", "title", "Remove model"], ["kendoButton", "", "fillMode", "flat", "size", "small", "title", "Move up", 3, "click", "disabled"], [1, "fa-solid", "fa-chevron-up"], ["kendoButton", "", "fillMode", "flat", "size", "small", "title", "Move down", 3, "click", "disabled"], [1, "fa-solid", "fa-chevron-down"], ["kendoButton", "", "fillMode", "flat", "themeColor", "error", "size", "small", "title", "Remove model", 3, "click"], [1, "fa-solid", "fa-times"], [2, "margin-bottom", "6px", "font-weight", "600", "color", "var(--mj-text-secondary)", "font-size", "0.9em"], [1, "fa-solid", "fa-layer-group"], [2, "display", "grid", "grid-template-columns", "1fr 1fr 1fr", "gap", "12px", "align-items", "center"], [2, "display", "flex", "gap", "16px", "flex-wrap", "wrap", "align-items", "center"], [2, "display", "block", "margin-bottom", "2px", "font-size", "0.8em", "font-weight", "600", "color", "var(--mj-text-secondary)"], ["textField", "text", "valueField", "value", "placeholder", "Select mode...", 2, "width", "100%", "font-size", "0.85em", 3, "ngModelChange", "ngModel", "name", "data", "valuePrimitive"], ["placeholder", "Count...", 2, "width", "100%", "font-size", "0.85em", 3, "ngModelChange", "ngModel", "name", "min", "step", "format"], ["placeholder", "Parameter name...", 2, "width", "100%", "font-size", "0.85em", 3, "ngModelChange", "ngModel", "name"], ["kendoButton", "", "fillMode", "outline", "themeColor", "success", "size", "small", 3, "click"], [1, "fa-solid", "fa-cogs", 2, "color", "var(--mj-text-muted)"], [2, "padding", "8px", "color", "var(--mj-text-muted)", "font-style", "italic"], ["name", "resultSelectorPromptID", "textField", "text", "valueField", "value", "placeholder", "Select a result selector prompt...", 2, "width", "100%", 3, "ngModel", "data", "valuePrimitive", "filterable"], ["name", "resultSelectorPromptID", "textField", "text", "valueField", "value", "placeholder", "Select a result selector prompt...", 2, "width", "100%", 3, "ngModelChange", "valueChange", "ngModel", "data", "valuePrimitive", "filterable"], [1, "fa-solid", "fa-wand-magic-sparkles", 2, "color", "var(--mj-text-muted)"], [1, "fa-solid", "fa-sliders", 2, "color", "var(--mj-text-muted)"], [1, "badge", 2, "background", "var(--mj-brand-primary)", "color", "white", "padding", "2px 6px", "border-radius", "10px", "font-size", "0.7em"], ["title", "These parameters are defined in the template and will be available when executing this prompt", 1, "fa-solid", "fa-info-circle"], [2, "display", "grid", "gap", "12px"], [1, "parameter-card", 2, "border", "1px solid var(--mj-border-default)", "border-radius", "8px", "padding", "16px", "background", "var(--mj-bg-surface-sunken)", "transition", "all 0.2s", 3, "border-left"], [2, "margin-top", "16px", "padding", "12px", "background", "color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface))", "border-radius", "6px", "border", "1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-border-default))"], [2, "display", "flex", "align-items", "flex-start", "gap", "8px"], [1, "fa-solid", "fa-lightbulb", 2, "color", "var(--mj-brand-primary)", "margin-top", "2px"], [2, "flex", "1", "font-size", "0.85em", "color", "var(--mj-brand-primary)", "line-height", "1.5"], [1, "parameter-card", 2, "border", "1px solid var(--mj-border-default)", "border-radius", "8px", "padding", "16px", "background", "var(--mj-bg-surface-sunken)", "transition", "all 0.2s"], [2, "display", "flex", "justify-content", "space-between", "align-items", "flex-start", "margin-bottom", "8px"], [2, "display", "flex", "align-items", "center", "gap", "8px"], [2, "font-size", "1.2em"], [2, "margin", "0", "color", "var(--mj-text-secondary)", "font-weight", "600"], [2, "color", "#dc3545", "font-size", "0.9em", "margin-left", "4px"], [1, "type-badge", 2, "color", "white", "padding", "4px 8px", "border-radius", "12px", "font-size", "0.75em", "font-weight", "500"], [2, "color", "#dc3545", "font-size", "0.85em", "font-weight", "500"], [2, "color", "var(--mj-text-muted)", "font-size", "0.85em"], [2, "margin", "0 0 8px 0", "color", "var(--mj-text-muted)", "font-size", "0.9em", "line-height", "1.4"], [2, "font-size", "0.85em", "color", "var(--mj-text-secondary)"], [2, "display", "flex", "align-items", "center", "gap", "4px", "margin-bottom", "4px"], [1, "fa-solid", "fa-info-circle", 2, "color", "var(--mj-text-muted)"], [2, "display", "grid", "grid-template-columns", "repeat(auto-fit, minmax(200px, 1fr))", "gap", "12px", "margin-top", "12px"], [2, "background", "var(--mj-bg-surface-card)", "padding", "8px 12px", "border-radius", "4px", "border", "1px solid var(--mj-border-default)"], [2, "display", "block", "font-size", "0.8em", "color", "var(--mj-text-muted)", "margin-bottom", "2px"], [2, "font-size", "0.85em", "color", "var(--mj-text-secondary)", "word-break", "break-all"], [2, "font-size", "0.8em", "color", "var(--mj-text-secondary)", "word-break", "break-all"], [2, "padding", "16px"], [2, "background", "var(--mj-bg-surface-sunken)", "border", "1px solid var(--mj-border-default)", "border-radius", "4px", "padding", "12px", "font-family", "'Courier New', monospace", "font-size", "0.9em", "white-space", "pre-wrap", "overflow", "auto", "max-height", "250px"], [2, "background", "#fff3cd", "border", "1px solid #ffeaa7", "border-radius", "4px", "padding", "12px", "color", "#856404", "text-align", "center"], [2, "color", "#dc3545", "font-size", "0.8em", "font-weight", "normal"], ["name", "outputExample", "language", "json", "placeholder", "Enter JSON example structure...", 2, "width", "100%", "height", "200px", "border", "1px solid var(--mj-border-default)", "border-radius", "4px", 3, "ngModelChange", "ngModel"], [2, "margin-top", "8px", "color", "var(--mj-text-muted)", "font-size", "0.85em"], [1, "fa-solid", "fa-exclamation-triangle"], [2, "text-align", "center", "padding", "40px", "color", "var(--mj-text-muted)"], [1, "fa-solid", "fa-history", 2, "color", "var(--mj-text-muted)"], [2, "color", "var(--mj-text-muted)", "font-weight", "normal"], [1, "fa-solid", "fa-spinner", "fa-spin", 2, "font-size", "2em", "margin-bottom", "12px"], [1, "fa-solid", "fa-history", 2, "font-size", "3em", "margin-bottom", "12px", "opacity", "0.3"], [2, "display", "flex", "justify-content", "space-between", "align-items", "center", "margin-bottom", "16px"], [2, "display", "flex", "gap", "8px", "align-items", "center"], ["selection", "single"], ["kendoButton", "", "size", "small", 3, "click", "selected"], [2, "margin-left", "4px", "font-size", "0.8em", 3, "class"], [2, "border", "1px solid var(--mj-border-default)", "border-radius", "8px", "overflow", "hidden"], [2, "width", "100%", "border-collapse", "collapse"], [2, "background", "var(--mj-bg-surface-sunken)", "border-bottom", "2px solid var(--mj-border-default)"], [2, "padding", "12px", "text-align", "left", "font-weight", "600", "color", "var(--mj-text-secondary)"], [2, "padding", "12px", "text-align", "right", "font-weight", "600", "color", "var(--mj-text-secondary)"], [2, "padding", "12px", "text-align", "center", "font-weight", "600", "color", "var(--mj-text-secondary)"], [1, "history-row", 2, "border-bottom", "1px solid var(--mj-border-default)", 3, "even-row"], [2, "margin-left", "4px", "font-size", "0.8em"], [1, "history-row", 2, "border-bottom", "1px solid var(--mj-border-default)"], [2, "padding", "12px"], [2, "display", "flex", "align-items", "center", "gap", "6px"], [2, "padding", "12px", "color", "var(--mj-text-secondary)"], [2, "padding", "12px", "text-align", "right", "color", "var(--mj-text-secondary)"], [2, "padding", "12px", "text-align", "center"], [2, "padding", "4px 8px", "border-radius", "12px", "background", "var(--mj-bg-surface-sunken)", "color", "var(--mj-text-secondary)", "font-size", "0.85em", "font-weight", "500"], ["kendoButton", "", "fillMode", "flat", "size", "small", "title", "View details", 3, "click"], [1, "fa-solid", "fa-external-link"], [3, "Params", "NewRecordValues", "AllowLoad", "ShowToolbar"], [1, "fa-solid", "fa-database", 2, "color", "var(--mj-text-muted)"], [2, "margin", "0 0 12px 0", "color", "var(--mj-text-secondary)"], [1, "fa-solid", "fa-link", 2, "color", "var(--mj-text-muted)"], [3, "close", "width", "height", "minWidth", "minHeight", "draggable", "resizable", "state", "title"], [3, "visibilityChange", "entity", "mode", "isVisible"]], template: function MJAIPromptFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
|
|
3065
3090
|
i0.ɵɵelementStart(0, "div", 2);
|
|
3066
3091
|
i0.ɵɵelement(1, "div", 3);
|
|
3067
|
-
i0.ɵɵconditionalCreate(2, MJAIPromptFormComponentExtended_Conditional_2_Template,
|
|
3092
|
+
i0.ɵɵconditionalCreate(2, MJAIPromptFormComponentExtended_Conditional_2_Template, 77, 50, "form", 4);
|
|
3068
3093
|
i0.ɵɵconditionalCreate(3, MJAIPromptFormComponentExtended_Conditional_3_Template, 2, 12, "kendo-window", 5);
|
|
3069
3094
|
i0.ɵɵelementEnd();
|
|
3070
3095
|
} if (rf & 2) {
|
|
@@ -3080,7 +3105,7 @@ MJAIPromptFormComponentExtended = __decorate([
|
|
|
3080
3105
|
export { MJAIPromptFormComponentExtended };
|
|
3081
3106
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJAIPromptFormComponentExtended, [{
|
|
3082
3107
|
type: Component,
|
|
3083
|
-
args: [{ standalone: false, selector: 'mj-ai-prompt-form', template: "<div class=\"record-form-container\" style=\"height: 100%; display: flex; flex-direction: column;\">\n <!-- Dialog container for Kendo dialogs -->\n <div kendoDialogContainer></div>\n @if (record) {\n <form class=\"record-form\" #form=\"ngForm\" style=\"display: flex; flex-direction: column; height: 100%; overflow: hidden;\">\n <mj-form-toolbar [Form]=\"this\"></mj-form-toolbar>\n <!-- Main Content Area - Template Editor and Configuration -->\n <div class=\"prompt-main-area\" style=\"display: flex; flex-direction: column; flex: 1; min-height: 0; overflow-y: auto;\">\n <!-- Header Section -->\n <div class=\"prompt-header\" style=\"flex-shrink: 0; padding: 20px; background: var(--mj-bg-surface-sunken); border-bottom: 2px solid var(--mj-border-default);\">\n <div style=\"display: flex; justify-content: space-between; align-items: flex-start; gap: 20px;\">\n <!-- Left: Prompt Info -->\n <div style=\"flex: 1; min-width: 0;\">\n <div style=\"display: flex; align-items: center; gap: 12px; margin-bottom: 8px;\">\n <i class=\"fa-solid fa-robot\" style=\"color: var(--mj-brand-primary); font-size: 1.4em;\"></i>\n @if (EditMode) {\n <kendo-textbox [(ngModel)]=\"record.Name\"\n name=\"promptName\"\n placeholder=\"Enter prompt name...\"\n style=\"font-size: 1.2em; font-weight: 600; min-width: 300px; flex: 1;\">\n </kendo-textbox>\n } @else {\n <h4 style=\"margin: 0; color: var(--mj-text-secondary); font-weight: 600; flex: 1;\">{{ record.Name || 'Untitled AI Prompt' }}</h4>\n <span class=\"status-badge\" [style.background-color]=\"getStatusBadgeColor()\"\n style=\"color: white; padding: 4px 10px; border-radius: 12px; font-size: 0.75em; font-weight: 500;\">\n {{ record.Status }}\n </span>\n }\n </div>\n <!-- Status and Type Editors when in edit mode -->\n @if (EditMode) {\n <div style=\"display: flex; gap: 16px; margin-bottom: 12px; flex-wrap: wrap;\">\n <div>\n <label style=\"display: block; margin-bottom: 4px; font-weight: 600; color: var(--mj-text-secondary); font-size: 0.9em;\">Status</label>\n <kendo-dropdownlist [(ngModel)]=\"record.Status\"\n name=\"promptStatus\"\n [data]=\"[{text: 'Active', value: 'Active'}, {text: 'Pending', value: 'Pending'}, {text: 'Disabled', value: 'Disabled'}]\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n style=\"width: 150px;\">\n </kendo-dropdownlist>\n </div>\n <div>\n <label style=\"display: block; margin-bottom: 4px; font-weight: 600; color: var(--mj-text-secondary); font-size: 0.9em;\">\n Type <span style=\"color: #dc3545;\">*</span>\n </label>\n @if (isLoadingPromptTypes) {\n <div style=\"padding: 8px; color: var(--mj-text-muted); font-style: italic; width: 200px;\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Loading types...\n </div>\n } @else {\n <kendo-dropdownlist [(ngModel)]=\"record.TypeID\"\n name=\"promptTypeID\"\n [data]=\"availablePromptTypes\"\n textField=\"Name\"\n valueField=\"ID\"\n [valuePrimitive]=\"true\"\n [filterable]=\"true\"\n placeholder=\"Select prompt type...\"\n style=\"width: 200px;\">\n </kendo-dropdownlist>\n }\n </div>\n </div>\n }\n @if (EditMode) {\n <kendo-textarea [(ngModel)]=\"record.Description\"\n name=\"promptDescription\"\n [rows]=\"2\"\n placeholder=\"Enter prompt description...\"\n style=\"width: 100%; max-width: 600px; margin-bottom: 12px;\">\n </kendo-textarea>\n } @else if (record.Description) {\n <p style=\"margin: 0 0 12px 0; color: var(--mj-text-muted); font-size: 0.9em; line-height: 1.4;\">{{ record.Description }}</p>\n }\n <!-- Quick Config Row -->\n <div class=\"quick-config\" style=\"display: flex; align-items: center; gap: 16px; flex-wrap: wrap;\">\n @if (record.TypeID) {\n <div class=\"config-item\" style=\"display: flex; align-items: center; gap: 6px; font-size: 0.85em;\">\n <i class=\"fa-solid fa-tag\" style=\"color: var(--mj-text-muted);\"></i>\n <span style=\"color: var(--mj-text-muted);\">Type:</span>\n <span style=\"color: var(--mj-text-secondary); font-weight: 500;\">{{ getPromptTypeDisplayName(record.TypeID) }}</span>\n </div>\n }\n <div class=\"config-item\" style=\"display: flex; align-items: center; gap: 6px; font-size: 0.85em;\">\n <i class=\"fa-solid fa-layer-group\" style=\"color: var(--mj-text-muted);\"></i>\n <span style=\"color: var(--mj-text-muted);\">Parallelization:</span>\n <span style=\"color: var(--mj-text-secondary); font-weight: 500;\">{{ getParallelizationModeDisplay() }}</span>\n </div>\n <div class=\"config-item\" style=\"display: flex; align-items: center; gap: 6px; font-size: 0.85em;\">\n <i class=\"fa-solid fa-code\" style=\"color: var(--mj-text-muted);\"></i>\n <span style=\"color: var(--mj-text-muted);\">Output:</span>\n <span [style.color]=\"getValidationColor()\" style=\"font-weight: 500;\">{{ getOutputTypeDisplay() }}</span>\n </div>\n @if (record.EnableCaching) {\n <div class=\"config-item\" style=\"display: flex; align-items: center; gap: 6px; font-size: 0.85em;\">\n <i class=\"fa-solid fa-database\" style=\"color: #28a745;\"></i>\n <span style=\"color: #28a745; font-weight: 500;\">Caching Enabled</span>\n </div>\n }\n @if (record.EffortLevel) {\n <div class=\"config-item\" style=\"display: flex; align-items: center; gap: 6px; font-size: 0.85em;\">\n <i class=\"fa-solid fa-tachometer-alt\" style=\"color: var(--mj-text-muted);\"></i>\n <span style=\"color: var(--mj-text-muted);\">Effort Level:</span>\n <span style=\"color: var(--mj-text-secondary); font-weight: 500;\">{{ record.EffortLevel }}</span>\n </div>\n }\n </div>\n </div>\n <!-- Right: Action Buttons -->\n <div class=\"action-buttons\" style=\"display: flex; flex-direction: column; gap: 8px; align-items: flex-end;\">\n <div style=\"display: flex; gap: 8px;\">\n @if (record.ID) {\n <button kendoButton [themeColor]=\"'primary'\" [size]=\"'large'\"\n (click)=\"openTestHarness()\"\n title=\"Run AI Prompt Test Harness\">\n <i class=\"fa-solid fa-play\"></i> Run\n </button>\n }\n </div>\n @if (!canExecute && record.ID) {\n <div style=\"font-size: 0.75em; color: #dc3545; text-align: right; max-width: 200px;\">\n @if (record.Status !== 'Active') {\n \u2022 Prompt must be Active<br>\n }\n @if (!record.TemplateID) {\n \u2022 Template is required<br>\n }\n @if (!template && record.TemplateID) {\n \u2022 Template not found<br>\n }\n </div>\n }\n </div>\n </div>\n </div>\n <!-- Configuration Sections with Expansion Panels -->\n <div class=\"configuration-sections\" style=\"flex: 1; background: var(--mj-bg-surface-card); border-top: 2px solid var(--mj-border-default); padding: 16px; min-height: 0;\">\n <!-- Template Editor Section -->\n <kendo-expansionpanel\n [expanded]=\"true\"\n style=\"margin-bottom: 12px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-code\" style=\"color: var(--mj-text-muted);\"></i>\n Template Editor\n @if (template) {\n <span style=\"color: var(--mj-text-muted); font-size: 0.9em; font-weight: normal;\">\u2022 {{ template.Name }}</span>\n }\n </span>\n </ng-template>\n <!-- Direct Content Projection -->\n <div class=\"template-section\" style=\"display: flex; flex-direction: column; min-height: 400px; padding: 8px;\">\n @if (isLoadingTemplate) {\n <div class=\"loading-state\" style=\"flex: 1; display: flex; align-items: center; justify-content: center; color: var(--mj-text-muted);\">\n <i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 24px; margin-right: 12px;\"></i>\n Loading template...\n </div>\n } @else if (!record.TemplateID) {\n <div class=\"no-template-state\" style=\"flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 40px; color: var(--mj-text-muted);\">\n <i class=\"fa-solid fa-code\" style=\"font-size: 64px; margin-bottom: 20px; opacity: 0.3;\"></i>\n <h5 style=\"margin-bottom: 12px; color: var(--mj-text-secondary);\">No Template Associated</h5>\n <p style=\"margin-bottom: 24px; text-align: center; max-width: 400px;\">\n This AI prompt needs a template to define its structure and parameters.\n Create a new template or link to an existing one.\n </p>\n <div style=\"display: flex; gap: 12px;\">\n @if (UserCanCreateTemplates) {\n <button kendoButton [themeColor]=\"'primary'\" (click)=\"createNewTemplate()\">\n <i class=\"fa-solid fa-plus\"></i> Create New Template\n </button>\n }\n @if (UserCanReadTemplates) {\n <button kendoButton [fillMode]=\"'outline'\" (click)=\"linkExistingTemplate()\">\n <i class=\"fa-solid fa-link\"></i> Link Existing Template\n </button>\n }\n </div>\n </div>\n } @else if (templateNotFoundInDatabase) {\n <div class=\"invalid-template-state\" style=\"flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 40px; color: #dc3545;\">\n <i class=\"fa-solid fa-exclamation-triangle\" style=\"font-size: 64px; margin-bottom: 20px; opacity: 0.7;\"></i>\n <h5 style=\"margin-bottom: 12px;\">Template Not Found</h5>\n <p style=\"margin-bottom: 24px; text-align: center; max-width: 400px;\">\n The referenced template could not be loaded. It may have been deleted or moved.\n </p>\n <div style=\"display: flex; gap: 12px;\">\n <button kendoButton [fillMode]=\"'outline'\" (click)=\"loadTemplate()\">\n <i class=\"fa-solid fa-refresh\"></i> Retry Loading\n </button>\n @if (UserCanCreateTemplates) {\n <button kendoButton [themeColor]=\"'primary'\" (click)=\"createNewTemplate()\">\n <i class=\"fa-solid fa-plus\"></i> Create New Template\n </button>\n }\n </div>\n </div>\n } @else {\n <!-- Active Template Editor -->\n <div class=\"template-editor-container\" style=\"flex: 1; display: flex; flex-direction: column; min-height: 350px;\">\n <!-- Template Actions Bar -->\n @if (template && EditMode) {\n <div class=\"template-actions\" style=\"display: flex; gap: 8px; padding: 8px; border-bottom: 1px solid var(--mj-border-default); background: var(--mj-bg-surface-sunken);\">\n @if (UserCanUpdateTemplates) {\n <button kendoButton\n [fillMode]=\"'outline'\"\n [size]=\"'small'\"\n (click)=\"linkExistingTemplate()\"\n title=\"Change to a different template\">\n <i class=\"fa-solid fa-exchange-alt\"></i> Change Template\n </button>\n }\n @if (UserCanReadTemplates) {\n <button kendoButton\n [fillMode]=\"'outline'\"\n [size]=\"'small'\"\n (click)=\"openTemplateInNewWindow()\"\n title=\"Open template in new window\">\n <i class=\"fa-solid fa-external-link-alt\"></i> Open in New Window\n </button>\n }\n </div>\n }\n <!-- Template Editor -->\n <div style=\"flex: 1; background: var(--mj-bg-surface-card); border-radius: 6px; border: 1px solid var(--mj-border-default);\">\n <mj-template-editor\n #templateEditor\n [template]=\"template\"\n [config]=\"templateEditorConfig\"\n (contentChange)=\"onTemplateContentChange($event)\"\n (runTemplate)=\"onTemplateRun($event)\"\n style=\"display: block; min-height: 300px;\">\n </mj-template-editor>\n </div>\n </div>\n }\n </div>\n </kendo-expansionpanel>\n <!-- Model Configuration Expansion Panel -->\n @if (record.IsSaved) {\n <kendo-expansionpanel\n [expanded]=\"true\"\n style=\"margin-bottom: 12px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-microchip\" style=\"color: var(--mj-text-muted);\"></i>\n Models\n @if (promptModels.length > 0) {\n <span class=\"badge\" style=\"background: #17a2b8; color: white; padding: 2px 6px; border-radius: 10px; font-size: 0.7em;\">\n {{ promptModels.length }}\n </span>\n }\n <span style=\"color: var(--mj-text-muted); font-size: 0.8em; font-weight: normal; margin-left: 8px;\">\n <i class=\"fa-solid fa-info-circle\" title=\"Models are tried in order from top to bottom. The first available model will be used.\"></i>\n Priority order (first available model will be used)\n </span>\n </span>\n </ng-template>\n <!-- Direct Content Projection -->\n <div style=\"padding: 16px 0;\">\n <!-- Model Management Interface -->\n <div class=\"model-management\" style=\"border: 1px solid var(--mj-border-default); border-radius: 6px; background: var(--mj-bg-surface-sunken);\">\n @if (isLoadingModels) {\n <div class=\"loading-state\" style=\"padding: 20px; text-align: center; color: var(--mj-text-muted);\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Loading models...\n </div>\n } @else {\n @if (promptModels.length === 0) {\n <div class=\"empty-state\" style=\"padding: 20px; text-align: center; color: var(--mj-text-muted);\">\n <i class=\"fa-solid fa-info-circle\"></i> No models configured\n @if (EditMode && UserCanCreatePromptModels) {\n <div style=\"margin-top: 10px;\">\n <button kendoButton fillMode=\"outline\" themeColor=\"primary\" size=\"small\"\n (click)=\"addNewModel()\">\n <i class=\"fa-solid fa-plus\"></i> Add Model\n </button>\n </div>\n }\n </div>\n } @else {\n <!-- Priority explanation for multiple models -->\n @if (promptModels.length > 1) {\n <div style=\"padding: 12px 16px; background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface)); border-bottom: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-border-default)); color: var(--mj-brand-primary); font-size: 0.85em;\">\n <i class=\"fa-solid fa-info-circle\" style=\"margin-right: 6px;\"></i>\n Models are tried in priority order (highest priority first). The first available model that meets requirements will be used for execution.\n </div>\n }\n <!-- Column Headers -->\n <div class=\"model-header\" style=\"display: grid; grid-template-columns: 40px 2fr 1fr 1fr 1fr 60px; gap: 12px; padding: 12px 16px; background: var(--mj-bg-surface-sunken); font-weight: 600; font-size: 0.85em; color: var(--mj-text-secondary); border-bottom: 1px solid var(--mj-border-default);\">\n <div title=\"Priority order - models are tried from top to bottom\">\n <i class=\"fa-solid fa-sort\" style=\"color: var(--mj-text-muted);\"></i>\n </div>\n <div>AI Model <span style=\"color: #dc3545;\">*</span></div>\n <div>Vendor</div>\n <div>Configuration</div>\n <div>Created</div>\n <div>Actions</div>\n </div>\n @for (model of promptModels; track getModelTrackId(model) || $index; let i = $index) {\n <div class=\"model-row\"\n [draggable]=\"EditMode\"\n (dragstart)=\"onDragStart($event, i)\"\n (dragover)=\"onDragOver($event)\"\n (drop)=\"onDrop($event, i)\"\n (dragend)=\"onDragEnd($event)\"\n [style.background]=\"!model.ModelID ? '#fff3cd' : (draggedIndex === i ? 'color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface))' : 'var(--mj-bg-surface-card)')\"\n [style.border-left]=\"!model.ModelID ? '3px solid #ffc107' : 'none'\"\n [style.opacity]=\"draggedIndex === i ? '0.5' : '1'\"\n style=\"display: grid; grid-template-columns: 40px 2fr 1fr 1fr 1fr 60px; gap: 12px; padding: 12px 16px; border-bottom: 1px solid var(--mj-border-default); align-items: start; transition: background 0.2s, opacity 0.2s;\">\n <!-- Drag Handle / Priority -->\n <div class=\"drag-handle\" style=\"display: flex; flex-direction: column; align-items: center; justify-content: center; color: var(--mj-text-muted);\">\n @if (EditMode) {\n <i class=\"fa-solid fa-grip-vertical\" title=\"Drag to reorder priority\" style=\"cursor: move;\"></i>\n <span style=\"font-size: 0.7em; margin-top: 2px;\">#{{ i + 1 }}</span>\n } @else {\n <span style=\"font-size: 0.9em; font-weight: 600;\" title=\"Priority {{ model.Priority }} - Higher priority numbers are tried first\">#{{ i + 1 }}</span>\n }\n </div>\n <!-- Model Selection -->\n <div class=\"model-select\">\n @if (EditMode) {\n <kendo-dropdownlist [(ngModel)]=\"model.ModelID\"\n [name]=\"'modelId_' + getModelTrackId(model)\"\n [data]=\"availableModels\"\n textField=\"Name\"\n valueField=\"ID\"\n [valuePrimitive]=\"true\"\n [filterable]=\"true\"\n placeholder=\"Select a model...\"\n (valueChange)=\"onModelChange($event, i)\"\n style=\"width: 100%;\">\n </kendo-dropdownlist>\n } @else {\n <span style=\"font-weight: 500;\">{{ getModelDisplayName(model.ModelID) }}</span>\n }\n </div>\n <!-- Vendor -->\n <div class=\"model-vendor\">\n @if (EditMode) {\n @if (model.ModelID) {\n @if (shouldShowVendorDropdown(model.ModelID)) {\n <kendo-dropdownlist [(ngModel)]=\"model.VendorID\"\n [name]=\"'vendorId_' + getModelTrackId(model)\"\n [data]=\"getVendorsForModelSync(model.ModelID)\"\n textField=\"Name\"\n valueField=\"ID\"\n [valuePrimitive]=\"true\"\n [filterable]=\"true\"\n placeholder=\"Select vendor...\"\n style=\"width: 100%;\">\n <ng-template kendoDropDownListItemTemplate let-dataItem>\n <span [style.color]=\"getVendorStatusColor(model.ModelID, dataItem.ID)\">\n {{ dataItem.Name }}\n @if (getModelVendorStatus(model.ModelID, dataItem.ID) !== 'Active') {\n <span style=\"font-size: 0.8em; margin-left: 4px;\">({{ getModelVendorStatus(model.ModelID, dataItem.ID) }})</span>\n }\n </span>\n </ng-template>\n </kendo-dropdownlist>\n } @else {\n <!-- Single vendor - just show the name -->\n @if (getVendorsForModelSync(model.ModelID).length === 1) {\n <span [style.color]=\"getVendorStatusColor(model.ModelID, getVendorsForModelSync(model.ModelID)[0].ID)\" style=\"font-size: 0.9em; font-weight: 500;\">\n {{ getVendorsForModelSync(model.ModelID)[0].Name }}\n @if (getModelVendorStatus(model.ModelID, getVendorsForModelSync(model.ModelID)[0].ID) !== 'Active') {\n <span style=\"font-size: 0.8em; margin-left: 4px;\">({{ getModelVendorStatus(model.ModelID, getVendorsForModelSync(model.ModelID)[0].ID) }})</span>\n }\n </span>\n } @else {\n <span style=\"color: var(--mj-text-muted); font-style: italic; font-size: 0.9em;\">No vendors available</span>\n }\n }\n } @else {\n <span style=\"color: var(--mj-text-muted); font-style: italic; font-size: 0.9em;\">Select model first</span>\n }\n } @else {\n @if (model.VendorID && model.ModelID) {\n <span [style.color]=\"getVendorStatusColor(model.ModelID, model.VendorID)\" style=\"font-size: 0.9em;\">\n {{ getVendorDisplayName(model.VendorID) }}\n @if (getModelVendorStatus(model.ModelID, model.VendorID) !== 'Active') {\n <span style=\"font-size: 0.8em; margin-left: 4px;\">({{ getModelVendorStatus(model.ModelID, model.VendorID) }})</span>\n }\n </span>\n } @else {\n <span style=\"color: var(--mj-text-muted); font-size: 0.9em;\">-</span>\n }\n }\n </div>\n <!-- Configuration -->\n <div class=\"model-configuration\">\n @if (EditMode) {\n @if (isLoadingConfigurations) {\n <div style=\"padding: 4px; color: var(--mj-text-muted); font-style: italic; font-size: 0.85em;\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Loading...\n </div>\n } @else {\n <kendo-dropdownlist [(ngModel)]=\"model.ConfigurationID\"\n [name]=\"'configurationId_' + getModelTrackId(model)\"\n [data]=\"availableConfigurations\"\n textField=\"Name\"\n valueField=\"ID\"\n [valuePrimitive]=\"true\"\n [filterable]=\"true\"\n placeholder=\"Default\"\n (valueChange)=\"onConfigurationChange($event, i)\"\n style=\"width: 100%;\">\n <ng-template kendoDropDownListNoDataTemplate>\n <div style=\"padding: 8px; text-align: center; color: var(--mj-text-muted);\">\n No configurations available\n </div>\n </ng-template>\n </kendo-dropdownlist>\n }\n } @else {\n <span style=\"font-size: 0.9em;\">{{ getConfigurationDisplayName(model.ConfigurationID) }}</span>\n }\n </div>\n <!-- Created Date -->\n <div class=\"model-created\">\n @if (model.ID) {\n <span style=\"color: var(--mj-text-muted); font-size: 0.8em;\">{{ model.__mj_CreatedAt | date:'short' }}</span>\n } @else {\n <span style=\"color: #28a745; font-size: 0.8em; font-style: italic;\">New</span>\n }\n </div>\n <!-- Actions -->\n <div class=\"model-actions\" style=\"display: flex; gap: 2px; flex-direction: column;\">\n @if (EditMode) {\n <div style=\"display: flex; gap: 2px; margin-bottom: 4px;\">\n @if (UserCanUpdatePromptModels) {\n <button kendoButton fillMode=\"flat\" size=\"small\"\n (click)=\"moveModelUp(i)\"\n [disabled]=\"i === 0\"\n title=\"Move up\">\n <i class=\"fa-solid fa-chevron-up\"></i>\n </button>\n <button kendoButton fillMode=\"flat\" size=\"small\"\n (click)=\"moveModelDown(i)\"\n [disabled]=\"i === promptModels.length - 1\"\n title=\"Move down\">\n <i class=\"fa-solid fa-chevron-down\"></i>\n </button>\n }\n </div>\n @if (UserCanDeletePromptModels) {\n <button kendoButton fillMode=\"flat\" themeColor=\"error\" size=\"small\"\n (click)=\"removePromptModel(i)\"\n title=\"Remove model\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n }\n </div>\n </div>\n <!-- Second row with additional details -->\n <div style=\"display: grid; grid-template-columns: 40px 1fr; gap: 12px; padding: 8px 16px; border-bottom: 1px solid var(--mj-border-default); background: var(--mj-bg-surface-sunken); font-size: 0.85em; color: var(--mj-text-muted);\">\n <div></div>\n <div>\n <!-- Basic model details -->\n <div style=\"display: flex; gap: 16px; flex-wrap: wrap; align-items: center; margin-bottom: 8px;\">\n @if (model.Status) {\n <span><strong>Status:</strong> {{ model.Status }}</span>\n }\n </div>\n <!-- Parallel execution fields when prompt is ModelSpecific -->\n @if (record.ParallelizationMode === 'ModelSpecific') {\n <div style=\"padding: 8px; background: var(--mj-bg-surface-card); border: 1px solid var(--mj-border-default); border-radius: 4px; margin-top: 8px;\">\n <div style=\"margin-bottom: 6px; font-weight: 600; color: var(--mj-text-secondary); font-size: 0.9em;\">\n <i class=\"fa-solid fa-layer-group\"></i> Model-Specific Parallel Execution\n </div>\n @if (EditMode) {\n <div style=\"display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 12px; align-items: center;\">\n <!-- Parallel Mode -->\n <div>\n <label style=\"display: block; margin-bottom: 2px; font-size: 0.8em; font-weight: 600; color: var(--mj-text-secondary);\">Parallel Mode</label>\n <kendo-dropdownlist [(ngModel)]=\"model.ParallelizationMode\"\n [name]=\"'parallelMode_' + i\"\n [data]=\"[{text: 'None', value: 'None'}, {text: 'Static Count', value: 'StaticCount'}, {text: 'Config Param', value: 'ConfigParam'}]\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n placeholder=\"Select mode...\"\n style=\"width: 100%; font-size: 0.85em;\">\n </kendo-dropdownlist>\n </div>\n <!-- Parallel Count (when StaticCount) -->\n @if (model.ParallelizationMode === 'StaticCount') {\n <div>\n <label style=\"display: block; margin-bottom: 2px; font-size: 0.8em; font-weight: 600; color: var(--mj-text-secondary);\">Parallel Count</label>\n <kendo-numerictextbox [(ngModel)]=\"model.ParallelCount\"\n [name]=\"'parallelCount_' + i\"\n [min]=\"1\"\n [step]=\"1\"\n [format]=\"'n0'\"\n placeholder=\"Count...\"\n style=\"width: 100%; font-size: 0.85em;\">\n </kendo-numerictextbox>\n </div>\n }\n <!-- Config Param (when ConfigParam) -->\n @if (model.ParallelizationMode === 'ConfigParam') {\n <div>\n <label style=\"display: block; margin-bottom: 2px; font-size: 0.8em; font-weight: 600; color: var(--mj-text-secondary);\">Config Parameter</label>\n <kendo-textbox [(ngModel)]=\"model.ParallelConfigParam\"\n [name]=\"'parallelConfigParam_' + i\"\n placeholder=\"Parameter name...\"\n style=\"width: 100%; font-size: 0.85em;\">\n </kendo-textbox>\n </div>\n }\n </div>\n } @else {\n <!-- Read-only display -->\n <div style=\"display: flex; gap: 16px; flex-wrap: wrap; align-items: center;\">\n @if (model.ParallelizationMode) {\n <span><strong>Parallel Mode:</strong> {{ model.ParallelizationMode }}</span>\n }\n @if (model.ParallelCount) {\n <span><strong>Parallel Count:</strong> {{ model.ParallelCount }}</span>\n }\n @if (model.ParallelConfigParam) {\n <span><strong>Config Param:</strong> {{ model.ParallelConfigParam }}</span>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n @if (EditMode && UserCanCreatePromptModels) {\n <div class=\"add-model-row\" style=\"padding: 12px 16px; text-align: center; background: var(--mj-bg-surface-sunken); border-top: 1px solid var(--mj-border-default);\">\n <button kendoButton fillMode=\"outline\" themeColor=\"success\" size=\"small\"\n (click)=\"addNewModel()\">\n <i class=\"fa-solid fa-plus\"></i> Add Model\n </button>\n </div>\n }\n }\n }\n </div>\n </div>\n </kendo-expansionpanel>\n }\n <!-- Advanced Configuration Expansion Panel -->\n <kendo-expansionpanel\n [expanded]=\"false\"\n style=\"margin-bottom: 12px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-cogs\" style=\"color: var(--mj-text-muted);\"></i>\n Advanced Configuration\n </span>\n </ng-template>\n <!-- Direct Content Projection -->\n <div style=\"padding: 16px 0;\">\n <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 20px;\">\n <!-- Left Column -->\n <div>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ParallelizationMode\"\n Type=\"dropdownlist\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n @if (showParallelCount) {\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ParallelCount\"\n Type=\"numerictextbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n }\n @if (showParallelConfigParam) {\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ParallelConfigParam\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n }\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"OutputType\"\n Type=\"dropdownlist\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"EffortLevel\"\n Type=\"numerictextbox\"\n Caption=\"Effort Level (1-100)\"\n Description=\"Higher values request more thorough reasoning\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n </div>\n <!-- Right Column -->\n <div>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ValidationBehavior\"\n Type=\"dropdownlist\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"EnableCaching\"\n Type=\"checkbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n <!-- Result Selector Prompt with Tree Selector -->\n <div style=\"margin-bottom: 16px;\">\n <label style=\"display: block; margin-bottom: 4px; font-weight: 600; color: var(--mj-text-secondary); font-size: 0.9em;\">\n Result Selector Prompt\n </label>\n @if (EditMode) {\n @if (isLoadingResultSelectorData) {\n <div style=\"padding: 8px; color: var(--mj-text-muted); font-style: italic;\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Loading prompts...\n </div>\n } @else {\n <kendo-dropdowntree\n [(ngModel)]=\"record.ResultSelectorPromptID\"\n name=\"resultSelectorPromptID\"\n [data]=\"resultSelectorTreeData\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n [filterable]=\"true\"\n placeholder=\"Select a result selector prompt...\"\n style=\"width: 100%;\"\n (valueChange)=\"onResultSelectorChange($event)\">\n </kendo-dropdowntree>\n }\n } @else {\n <span style=\"color: var(--mj-text-secondary);\">{{ getPromptDisplayName(record.ResultSelectorPromptID || '') || 'None selected' }}</span>\n }\n </div>\n </div>\n </div>\n </div>\n </kendo-expansionpanel>\n <!-- Template Parameters Expansion Panel -->\n @if (template && templateParams.length > 0) {\n <kendo-expansionpanel\n [expanded]=\"false\"\n style=\"margin-bottom: 12px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-sliders\" style=\"color: var(--mj-text-muted);\"></i>\n Template Parameters\n <span class=\"badge\" style=\"background: var(--mj-brand-primary); color: white; padding: 2px 6px; border-radius: 10px; font-size: 0.7em;\">\n {{ templateParams.length }}\n </span>\n <span style=\"color: var(--mj-text-muted); font-size: 0.8em; font-weight: normal; margin-left: 8px;\">\n <i class=\"fa-solid fa-info-circle\" title=\"These parameters are defined in the template and will be available when executing this prompt\"></i>\n Parameters defined in the template\n </span>\n </span>\n </ng-template>\n <!-- Template Parameters Display -->\n <div style=\"padding: 16px 0;\">\n @if (isLoadingTemplateParams) {\n <div class=\"loading-state\" style=\"padding: 20px; text-align: center; color: var(--mj-text-muted);\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Loading template parameters...\n </div>\n } @else if (templateParams.length === 0) {\n <div class=\"empty-state\" style=\"padding: 20px; text-align: center; color: var(--mj-text-muted);\">\n <i class=\"fa-solid fa-info-circle\"></i> This template has no parameters defined\n </div>\n } @else {\n <!-- Parameters Grid -->\n <div style=\"display: grid; gap: 12px;\">\n @for (param of templateParams; track param.ID) {\n <div class=\"parameter-card\"\n style=\"border: 1px solid var(--mj-border-default); border-radius: 8px; padding: 16px; background: var(--mj-bg-surface-sunken); transition: all 0.2s;\"\n [style.border-left]=\"'4px solid ' + getParamTypeColor(param.Type)\">\n <!-- Parameter Header -->\n <div style=\"display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 8px;\">\n <div style=\"display: flex; align-items: center; gap: 8px;\">\n <i [class]=\"'fa-solid ' + getParamTypeIcon(param.Type)\"\n [style.color]=\"getParamTypeColor(param.Type)\"\n style=\"font-size: 1.2em;\"></i>\n <h6 style=\"margin: 0; color: var(--mj-text-secondary); font-weight: 600;\">\n {{ param.Name }}\n @if (param.IsRequired) {\n <span style=\"color: #dc3545; font-size: 0.9em; margin-left: 4px;\">*</span>\n }\n </h6>\n </div>\n <div style=\"display: flex; align-items: center; gap: 8px;\">\n <span class=\"type-badge\"\n [style.background-color]=\"getParamTypeColor(param.Type)\"\n style=\"color: white; padding: 4px 8px; border-radius: 12px; font-size: 0.75em; font-weight: 500;\">\n {{ param.Type }}\n </span>\n @if (param.IsRequired) {\n <span style=\"color: #dc3545; font-size: 0.85em; font-weight: 500;\">Required</span>\n } @else {\n <span style=\"color: var(--mj-text-muted); font-size: 0.85em;\">Optional</span>\n }\n </div>\n </div>\n <!-- Parameter Description -->\n @if (param.Description) {\n <p style=\"margin: 0 0 8px 0; color: var(--mj-text-muted); font-size: 0.9em; line-height: 1.4;\">\n {{ param.Description }}\n </p>\n }\n <!-- Type-specific Information -->\n <div style=\"font-size: 0.85em; color: var(--mj-text-secondary);\">\n <span style=\"display: flex; align-items: center; gap: 4px; margin-bottom: 4px;\">\n <i class=\"fa-solid fa-info-circle\" style=\"color: var(--mj-text-muted);\"></i>\n {{ getParamTypeDescription(param) }}\n </span>\n </div>\n <!-- Additional Parameter Details -->\n <div style=\"display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; margin-top: 12px;\">\n @if (param.DefaultValue) {\n <div style=\"background: var(--mj-bg-surface-card); padding: 8px 12px; border-radius: 4px; border: 1px solid var(--mj-border-default);\">\n <label style=\"display: block; font-size: 0.8em; color: var(--mj-text-muted); margin-bottom: 2px;\">Default Value</label>\n <code style=\"font-size: 0.85em; color: var(--mj-text-secondary); word-break: break-all;\">{{ param.DefaultValue }}</code>\n </div>\n }\n @if (param.EntityID) {\n <div style=\"background: var(--mj-bg-surface-card); padding: 8px 12px; border-radius: 4px; border: 1px solid var(--mj-border-default);\">\n <label style=\"display: block; font-size: 0.8em; color: var(--mj-text-muted); margin-bottom: 2px;\">Entity</label>\n <span style=\"font-size: 0.85em; color: var(--mj-text-secondary);\">{{ param.Entity || 'Entity ID: ' + param.EntityID }}</span>\n </div>\n }\n @if (param.LinkedParameterName) {\n <div style=\"background: var(--mj-bg-surface-card); padding: 8px 12px; border-radius: 4px; border: 1px solid var(--mj-border-default);\">\n <label style=\"display: block; font-size: 0.8em; color: var(--mj-text-muted); margin-bottom: 2px;\">Linked To</label>\n <span style=\"font-size: 0.85em; color: var(--mj-text-secondary);\">\n {{ param.LinkedParameterName }}\n @if (param.LinkedParameterField) {\n ({{ param.LinkedParameterField }})\n }\n </span>\n </div>\n }\n @if (param.ExtraFilter) {\n <div style=\"background: var(--mj-bg-surface-card); padding: 8px 12px; border-radius: 4px; border: 1px solid var(--mj-border-default);\">\n <label style=\"display: block; font-size: 0.8em; color: var(--mj-text-muted); margin-bottom: 2px;\">Filter</label>\n <code style=\"font-size: 0.8em; color: var(--mj-text-secondary); word-break: break-all;\">{{ param.ExtraFilter }}</code>\n </div>\n }\n @if (param.RecordID) {\n <div style=\"background: var(--mj-bg-surface-card); padding: 8px 12px; border-radius: 4px; border: 1px solid var(--mj-border-default);\">\n <label style=\"display: block; font-size: 0.8em; color: var(--mj-text-muted); margin-bottom: 2px;\">Record ID</label>\n <code style=\"font-size: 0.85em; color: var(--mj-text-secondary);\">{{ param.RecordID }}</code>\n </div>\n }\n </div>\n </div>\n }\n </div>\n <!-- Help Text -->\n <div style=\"margin-top: 16px; padding: 12px; background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface)); border-radius: 6px; border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-border-default));\">\n <div style=\"display: flex; align-items: flex-start; gap: 8px;\">\n <i class=\"fa-solid fa-lightbulb\" style=\"color: var(--mj-brand-primary); margin-top: 2px;\"></i>\n <div style=\"flex: 1; font-size: 0.85em; color: var(--mj-brand-primary); line-height: 1.5;\">\n <strong>Using Template Parameters:</strong> When executing this prompt, you'll be prompted to provide values for all required parameters.\n Parameters can be simple values (text, numbers) or complex data structures (JSON objects, database records, or entire entity collections).\n The template will use these parameters to generate dynamic content based on the values provided at execution time.\n </div>\n </div>\n </div>\n }\n </div>\n </kendo-expansionpanel>\n }\n <!-- Output Example Expansion Panel (when OutputType = object) -->\n @if (showOutputExample) {\n <kendo-expansionpanel\n [expanded]=\"true\"\n style=\"margin-bottom: 12px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-code\" style=\"color: var(--mj-text-muted);\"></i>\n Output Example (JSON)\n <span style=\"color: #dc3545; font-size: 0.8em; font-weight: normal;\">\u2022 Required for object output type</span>\n </span>\n </ng-template>\n <!-- Direct Content Projection -->\n <div style=\"padding: 16px;\">\n @if (EditMode) {\n <mj-code-editor\n [(ngModel)]=\"record.OutputExample\"\n name=\"outputExample\"\n language=\"json\"\n placeholder=\"Enter JSON example structure...\"\n style=\"width: 100%; height: 200px; border: 1px solid var(--mj-border-default); border-radius: 4px;\">\n </mj-code-editor>\n <div style=\"margin-top: 8px; color: var(--mj-text-muted); font-size: 0.85em;\">\n <i class=\"fa-solid fa-info-circle\"></i> Provide a JSON example that defines the expected structure for object output validation.\n </div>\n } @else if (record.OutputExample) {\n <div style=\"background: var(--mj-bg-surface-sunken); border: 1px solid var(--mj-border-default); border-radius: 4px; padding: 12px; font-family: 'Courier New', monospace; font-size: 0.9em; white-space: pre-wrap; overflow: auto; max-height: 250px;\">{{ record.OutputExample }}</div>\n } @else {\n <div style=\"background: #fff3cd; border: 1px solid #ffeaa7; border-radius: 4px; padding: 12px; color: #856404; text-align: center;\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i> Output example is required when output type is 'object'\n </div>\n }\n </div>\n </kendo-expansionpanel>\n }\n <!-- Execution History Expansion Panel -->\n @if (record.IsSaved) {\n <kendo-expansionpanel\n [expanded]=\"false\"\n style=\"margin-bottom: 12px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-history\" style=\"color: var(--mj-text-muted);\"></i>\n Execution History\n @if (executionHistory.length > 0) {\n <span style=\"color: var(--mj-text-muted); font-weight: normal;\">({{ executionHistory.length }})</span>\n }\n </span>\n </ng-template>\n <!-- Custom Execution History Viewer -->\n <div style=\"padding: 16px;\">\n @if (isLoadingHistory) {\n <div style=\"text-align: center; padding: 40px; color: var(--mj-text-muted);\">\n <i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 2em; margin-bottom: 12px;\"></i>\n <p>Loading execution history...</p>\n </div>\n } @else if (executionHistory.length === 0) {\n <div style=\"text-align: center; padding: 40px; color: var(--mj-text-muted);\">\n <i class=\"fa-solid fa-history\" style=\"font-size: 3em; margin-bottom: 12px; opacity: 0.3;\"></i>\n <p>No execution history yet</p>\n <p style=\"font-size: 0.9em;\">Run this prompt to see execution history here</p>\n </div>\n } @else {\n <!-- Sort Controls -->\n <div style=\"display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px;\">\n <div style=\"color: var(--mj-text-muted); font-size: 0.9em;\">\n Showing {{ executionHistory.length }} executions\n </div>\n <div style=\"display: flex; gap: 8px; align-items: center;\">\n <span style=\"color: var(--mj-text-muted); font-size: 0.85em;\">Sort by:</span>\n <kendo-buttongroup selection=\"single\">\n <button kendoButton\n [selected]=\"historySortField === 'runAt'\"\n (click)=\"changeHistorySort('runAt')\"\n size=\"small\">\n Date\n @if (historySortField === 'runAt') {\n <i [class]=\"'fa-solid fa-sort-' + (historySortDirection === 'asc' ? 'up' : 'down')\"\n style=\"margin-left: 4px; font-size: 0.8em;\"></i>\n }\n </button>\n <button kendoButton\n [selected]=\"historySortField === 'executionTime'\"\n (click)=\"changeHistorySort('executionTime')\"\n size=\"small\">\n Duration\n @if (historySortField === 'executionTime') {\n <i [class]=\"'fa-solid fa-sort-' + (historySortDirection === 'asc' ? 'up' : 'down')\"\n style=\"margin-left: 4px; font-size: 0.8em;\"></i>\n }\n </button>\n <button kendoButton\n [selected]=\"historySortField === 'tokens'\"\n (click)=\"changeHistorySort('tokens')\"\n size=\"small\">\n Tokens\n @if (historySortField === 'tokens') {\n <i [class]=\"'fa-solid fa-sort-' + (historySortDirection === 'asc' ? 'up' : 'down')\"\n style=\"margin-left: 4px; font-size: 0.8em;\"></i>\n }\n </button>\n <button kendoButton\n [selected]=\"historySortField === 'cost'\"\n (click)=\"changeHistorySort('cost')\"\n size=\"small\">\n Cost\n @if (historySortField === 'cost') {\n <i [class]=\"'fa-solid fa-sort-' + (historySortDirection === 'asc' ? 'up' : 'down')\"\n style=\"margin-left: 4px; font-size: 0.8em;\"></i>\n }\n </button>\n </kendo-buttongroup>\n </div>\n </div>\n <!-- Execution History Table -->\n <div style=\"border: 1px solid var(--mj-border-default); border-radius: 8px; overflow: hidden;\">\n <table style=\"width: 100%; border-collapse: collapse;\">\n <thead>\n <tr style=\"background: var(--mj-bg-surface-sunken); border-bottom: 2px solid var(--mj-border-default);\">\n <th style=\"padding: 12px; text-align: left; font-weight: 600; color: var(--mj-text-secondary);\">Status</th>\n <th style=\"padding: 12px; text-align: left; font-weight: 600; color: var(--mj-text-secondary);\">Date & Time</th>\n <th style=\"padding: 12px; text-align: left; font-weight: 600; color: var(--mj-text-secondary);\">Model</th>\n <th style=\"padding: 12px; text-align: left; font-weight: 600; color: var(--mj-text-secondary);\">Duration</th>\n <th style=\"padding: 12px; text-align: right; font-weight: 600; color: var(--mj-text-secondary);\">Tokens</th>\n <th style=\"padding: 12px; text-align: right; font-weight: 600; color: var(--mj-text-secondary);\">Cost</th>\n <th style=\"padding: 12px; text-align: center; font-weight: 600; color: var(--mj-text-secondary);\">Type</th>\n <th style=\"padding: 12px; text-align: center; font-weight: 600; color: var(--mj-text-secondary);\">Actions</th>\n </tr>\n </thead>\n <tbody>\n @for (run of executionHistory; track run.ID; let i = $index) {\n <tr class=\"history-row\"\n [class.even-row]=\"i % 2 === 0\"\n style=\"border-bottom: 1px solid var(--mj-border-default);\">\n <td style=\"padding: 12px;\">\n <span style=\"display: flex; align-items: center; gap: 6px;\">\n <i [class]=\"'fa-solid ' + getExecutionStatusIcon(run.Success)\"\n [style.color]=\"getExecutionStatusColor(run.Success)\"></i>\n <span [style.color]=\"getExecutionStatusColor(run.Success)\" style=\"font-weight: 500;\">\n {{ run.Success === true ? 'Success' : run.Success === false ? 'Failed' : 'Running' }}\n </span>\n </span>\n </td>\n <td style=\"padding: 12px; color: var(--mj-text-secondary);\">\n {{ run.RunAt | date:'short' }}\n </td>\n <td style=\"padding: 12px; color: var(--mj-text-secondary);\">\n <span style=\"display: flex; align-items: center; gap: 6px;\">\n <i class=\"fa-solid fa-microchip\" style=\"color: var(--mj-text-muted);\"></i>\n {{ run.Model || 'Unknown' }}\n </span>\n </td>\n <td style=\"padding: 12px; color: var(--mj-text-secondary);\">\n {{ formatDuration(run.ExecutionTimeMS) }}\n </td>\n <td style=\"padding: 12px; text-align: right; color: var(--mj-text-secondary);\">\n {{ formatTokens(run.TokensUsed) }}\n </td>\n <td style=\"padding: 12px; text-align: right; color: var(--mj-text-secondary);\">\n {{ formatCost(run.TotalCost || run.Cost) }}\n </td>\n <td style=\"padding: 12px; text-align: center;\">\n @if (run.RunType) {\n <span style=\"padding: 4px 8px; border-radius: 12px; background: var(--mj-bg-surface-sunken); \n color: var(--mj-text-secondary); font-size: 0.85em; font-weight: 500;\">\n {{ run.RunType }}\n </span>\n }\n </td>\n <td style=\"padding: 12px; text-align: center;\">\n <button kendoButton\n fillMode=\"flat\"\n size=\"small\"\n (click)=\"navigateToPromptRun(run.ID)\"\n title=\"View details\">\n <i class=\"fa-solid fa-external-link\"></i>\n </button>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n </div>\n </kendo-expansionpanel>\n }\n <!-- Cache Expansion Panel -->\n @if (record.IsSaved && record.EnableCaching) {\n <kendo-expansionpanel\n [expanded]=\"false\"\n style=\"margin-bottom: 12px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-database\" style=\"color: var(--mj-text-muted);\"></i>\n Result Cache\n </span>\n </ng-template>\n <!-- Direct Content Projection -->\n <div style=\"padding: 16px 0;\">\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Result Cache','AIPromptID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: AI Result Cache')\"\n [AllowLoad]=\"true\"\n [ShowToolbar]=\"false\">\n </mj-explorer-entity-data-grid>\n </div>\n </kendo-expansionpanel>\n }\n <!-- Related Items Expansion Panel -->\n @if (record.IsSaved) {\n <kendo-expansionpanel\n [expanded]=\"false\"\n style=\"margin-bottom: 12px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-link\" style=\"color: var(--mj-text-muted);\"></i>\n Related Items\n </span>\n </ng-template>\n <!-- Direct Content Projection -->\n <div style=\"padding: 16px 0;\">\n <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 20px;\">\n <!-- AI Agents -->\n <div>\n <h6 style=\"margin: 0 0 12px 0; color: var(--mj-text-secondary);\">AI Agents Using This Prompt</h6>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Agent Prompts','PromptID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: AI Agent Prompts')\"\n [AllowLoad]=\"true\"\n [ShowToolbar]=\"false\">\n </mj-explorer-entity-data-grid>\n </div>\n <!-- Result Selector References -->\n <div>\n <h6 style=\"margin: 0 0 12px 0; color: var(--mj-text-secondary);\">Prompts Using This as Result Selector</h6>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Prompts','ResultSelectorPromptID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: AI Prompts')\"\n [AllowLoad]=\"true\"\n [ShowToolbar]=\"false\">\n </mj-explorer-entity-data-grid>\n </div>\n </div>\n </div>\n </kendo-expansionpanel>\n }\n </div>\n </div>\n </form>\n }\n\n\n <!-- AI Prompt Test Harness -->\n @if (showTestHarness) {\n <kendo-window\n [width]=\"1200\"\n [height]=\"800\"\n [minWidth]=\"800\"\n [minHeight]=\"600\"\n [draggable]=\"true\"\n [resizable]=\"true\"\n [state]=\"'default'\"\n (close)=\"onTestHarnessVisibilityChanged(false)\"\n title=\"Run AI Prompt - {{ record.Name || 'Untitled' }}\">\n <mj-ai-test-harness\n [entity]=\"record\"\n [mode]=\"'prompt'\"\n [isVisible]=\"showTestHarness\"\n (visibilityChange)=\"onTestHarnessVisibilityChanged($event)\">\n </mj-ai-test-harness>\n </kendo-window>\n }\n</div>", styles: ["/* Override shared form-styles to enable flex layout */\n:host {\n display: block;\n height: 100%;\n}\n\n.record-form-container {\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n padding: 10px;\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n}\n\n.record-form {\n min-height: 0 !important;\n}\n\n.custom-toolbar-actions {\n margin-left: auto;\n}\n\n.status-badge {\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n font-weight: 500;\n letter-spacing: 0.02em;\n}\n\n.config-summary {\n position: sticky;\n top: 0;\n max-height: 600px;\n overflow-y: auto;\n}\n\n.config-item {\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.config-item:last-child {\n border-bottom: none;\n}\n\n.template-tab-content {\n background: var(--mj-bg-surface);\n}\n\n.template-header h5 {\n font-size: 1.1em;\n}\n\n.loading-state,\n.no-template-state,\n.invalid-template-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n}\n\n.no-template-state i,\n.invalid-template-state i {\n opacity: 0.6;\n}\n\n.template-editor-container {\n background: var(--mj-bg-surface);\n border-radius: var(--mj-radius-md);\n}\n\n/* Grid layout adjustments */\n@media (max-width: 1200px) {\n .record-form-container .mj-tab-body > div {\n grid-template-columns: 1fr !important;\n gap: 20px;\n }\n\n .config-summary {\n order: -1;\n position: static;\n max-height: none;\n }\n}\n\n/* Responsive toolbar */\n@media (max-width: 768px) {\n .custom-toolbar-actions {\n flex-direction: column;\n gap: 4px !important;\n }\n\n .status-badge {\n align-self: flex-start;\n }\n}\n\n/* Ensure proper spacing in form sections */\n.record-form-container mj-form-section {\n padding: 16px;\n}\n\n/* Smooth transitions for better UX */\n.status-badge,\n.config-item,\n.template-header {\n transition: all 0.2s ease;\n}\n\n.config-item:hover {\n background-color: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-sm);\n margin: 0 -8px;\n padding: 8px;\n}\n\n/* Execution History Table Styles */\n.history-row {\n transition: background 0.2s;\n}\n\n.history-row:not(.even-row) {\n background: var(--mj-bg-surface-card);\n}\n\n.history-row.even-row {\n background: var(--mj-bg-surface);\n}\n\n.history-row:hover {\n background: var(--mj-border-default) !important;\n}\n\n/* Template Parameters Styles */\n.parameter-card {\n position: relative;\n overflow: hidden;\n}\n\n.parameter-card::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 4px;\n background: inherit;\n transition: width 0.2s;\n}\n\n.parameter-card:hover {\n transform: translateY(-2px);\n box-shadow: var(--mj-shadow-md);\n}\n\n.parameter-card:hover::before {\n width: 6px;\n}\n\n.type-badge {\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.03em;\n transition: transform 0.2s;\n}\n\n.parameter-card:hover .type-badge {\n transform: scale(1.05);\n}\n\n/* Parameter type icons animation */\n.parameter-card i.fa-solid {\n transition: transform 0.3s;\n}\n\n.parameter-card:hover i.fa-solid {\n transform: rotate(360deg);\n}\n\n/* Grid responsive behavior */\n@media (max-width: 768px) {\n .parameter-card {\n margin-bottom: 8px;\n }\n\n .parameter-card h6 {\n font-size: 0.95em;\n }\n\n .type-badge {\n font-size: 0.7em !important;\n }\n}\n"] }]
|
|
3108
|
+
args: [{ standalone: false, selector: 'mj-ai-prompt-form', template: "<div class=\"record-form-container\" style=\"height: 100%; display: flex; flex-direction: column;\">\n <!-- Dialog container for Kendo dialogs -->\n <div kendoDialogContainer></div>\n @if (record) {\n <form class=\"record-form\" #form=\"ngForm\" style=\"display: flex; flex-direction: column; height: 100%; overflow: hidden;\">\n <mj-form-toolbar [Form]=\"this\"></mj-form-toolbar>\n <!-- Main Content Area - Template Editor and Configuration -->\n <div class=\"prompt-main-area\" style=\"display: flex; flex-direction: column; flex: 1; min-height: 0; overflow-y: auto;\">\n <!-- Header Section -->\n <div class=\"prompt-header\" style=\"flex-shrink: 0; padding: 20px; background: var(--mj-bg-surface-sunken); border-bottom: 2px solid var(--mj-border-default);\">\n <div style=\"display: flex; justify-content: space-between; align-items: flex-start; gap: 20px;\">\n <!-- Left: Prompt Info -->\n <div style=\"flex: 1; min-width: 0;\">\n <div style=\"display: flex; align-items: center; gap: 12px; margin-bottom: 8px;\">\n <i class=\"fa-solid fa-robot\" style=\"color: var(--mj-brand-primary); font-size: 1.4em;\"></i>\n @if (EditMode) {\n <kendo-textbox [(ngModel)]=\"record.Name\"\n name=\"promptName\"\n placeholder=\"Enter prompt name...\"\n style=\"font-size: 1.2em; font-weight: 600; min-width: 300px; flex: 1;\">\n </kendo-textbox>\n } @else {\n <h4 style=\"margin: 0; color: var(--mj-text-secondary); font-weight: 600; flex: 1;\">{{ record.Name || 'Untitled AI Prompt' }}</h4>\n <span class=\"status-badge\" [style.background-color]=\"getStatusBadgeColor()\"\n style=\"color: white; padding: 4px 10px; border-radius: 12px; font-size: 0.75em; font-weight: 500;\">\n {{ record.Status }}\n </span>\n }\n </div>\n <!-- Status and Type Editors when in edit mode -->\n @if (EditMode) {\n <div style=\"display: flex; gap: 16px; margin-bottom: 12px; flex-wrap: wrap;\">\n <div>\n <label style=\"display: block; margin-bottom: 4px; font-weight: 600; color: var(--mj-text-secondary); font-size: 0.9em;\">Status</label>\n <kendo-dropdownlist [(ngModel)]=\"record.Status\"\n name=\"promptStatus\"\n [data]=\"[{text: 'Active', value: 'Active'}, {text: 'Pending', value: 'Pending'}, {text: 'Disabled', value: 'Disabled'}]\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n style=\"width: 150px;\">\n </kendo-dropdownlist>\n </div>\n <div>\n <label style=\"display: block; margin-bottom: 4px; font-weight: 600; color: var(--mj-text-secondary); font-size: 0.9em;\">\n Type <span style=\"color: #dc3545;\">*</span>\n </label>\n @if (isLoadingPromptTypes) {\n <div style=\"padding: 8px; color: var(--mj-text-muted); font-style: italic; width: 200px;\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Loading types...\n </div>\n } @else {\n <kendo-dropdownlist [(ngModel)]=\"record.TypeID\"\n name=\"promptTypeID\"\n [data]=\"availablePromptTypes\"\n textField=\"Name\"\n valueField=\"ID\"\n [valuePrimitive]=\"true\"\n [filterable]=\"true\"\n placeholder=\"Select prompt type...\"\n style=\"width: 200px;\">\n </kendo-dropdownlist>\n }\n </div>\n </div>\n }\n @if (EditMode) {\n <kendo-textarea [(ngModel)]=\"record.Description\"\n name=\"promptDescription\"\n [rows]=\"2\"\n placeholder=\"Enter prompt description...\"\n style=\"width: 100%; max-width: 600px; margin-bottom: 12px;\">\n </kendo-textarea>\n } @else if (record.Description) {\n <p style=\"margin: 0 0 12px 0; color: var(--mj-text-muted); font-size: 0.9em; line-height: 1.4;\">{{ record.Description }}</p>\n }\n <!-- Quick Config Row -->\n <div class=\"quick-config\" style=\"display: flex; align-items: center; gap: 16px; flex-wrap: wrap;\">\n @if (record.TypeID) {\n <div class=\"config-item\" style=\"display: flex; align-items: center; gap: 6px; font-size: 0.85em;\">\n <i class=\"fa-solid fa-tag\" style=\"color: var(--mj-text-muted);\"></i>\n <span style=\"color: var(--mj-text-muted);\">Type:</span>\n <span style=\"color: var(--mj-text-secondary); font-weight: 500;\">{{ getPromptTypeDisplayName(record.TypeID) }}</span>\n </div>\n }\n <div class=\"config-item\" style=\"display: flex; align-items: center; gap: 6px; font-size: 0.85em;\">\n <i class=\"fa-solid fa-layer-group\" style=\"color: var(--mj-text-muted);\"></i>\n <span style=\"color: var(--mj-text-muted);\">Parallelization:</span>\n <span style=\"color: var(--mj-text-secondary); font-weight: 500;\">{{ getParallelizationModeDisplay() }}</span>\n </div>\n <div class=\"config-item\" style=\"display: flex; align-items: center; gap: 6px; font-size: 0.85em;\">\n <i class=\"fa-solid fa-code\" style=\"color: var(--mj-text-muted);\"></i>\n <span style=\"color: var(--mj-text-muted);\">Output:</span>\n <span [style.color]=\"getValidationColor()\" style=\"font-weight: 500;\">{{ getOutputTypeDisplay() }}</span>\n </div>\n @if (record.EnableCaching) {\n <div class=\"config-item\" style=\"display: flex; align-items: center; gap: 6px; font-size: 0.85em;\">\n <i class=\"fa-solid fa-database\" style=\"color: #28a745;\"></i>\n <span style=\"color: #28a745; font-weight: 500;\">Caching Enabled</span>\n </div>\n }\n @if (record.EffortLevel) {\n <div class=\"config-item\" style=\"display: flex; align-items: center; gap: 6px; font-size: 0.85em;\">\n <i class=\"fa-solid fa-tachometer-alt\" style=\"color: var(--mj-text-muted);\"></i>\n <span style=\"color: var(--mj-text-muted);\">Effort Level:</span>\n <span style=\"color: var(--mj-text-secondary); font-weight: 500;\">{{ record.EffortLevel }}</span>\n </div>\n }\n </div>\n </div>\n <!-- Right: Action Buttons -->\n <div class=\"action-buttons\" style=\"display: flex; flex-direction: column; gap: 8px; align-items: flex-end;\">\n <div style=\"display: flex; gap: 8px;\">\n @if (record.ID) {\n <button kendoButton [themeColor]=\"'primary'\" [size]=\"'large'\"\n (click)=\"openTestHarness()\"\n title=\"Run AI Prompt Test Harness\">\n <i class=\"fa-solid fa-play\"></i> Run\n </button>\n }\n </div>\n @if (!canExecute && record.ID) {\n <div style=\"font-size: 0.75em; color: #dc3545; text-align: right; max-width: 200px;\">\n @if (record.Status !== 'Active') {\n \u2022 Prompt must be Active<br>\n }\n @if (!record.TemplateID) {\n \u2022 Template is required<br>\n }\n @if (!template && record.TemplateID) {\n \u2022 Template not found<br>\n }\n </div>\n }\n </div>\n </div>\n </div>\n <!-- Configuration Sections with Expansion Panels -->\n <div class=\"configuration-sections\" style=\"flex: 1; background: var(--mj-bg-surface-card); border-top: 2px solid var(--mj-border-default); padding: 16px; min-height: 0;\">\n <!-- Template Editor Section -->\n <kendo-expansionpanel\n [expanded]=\"true\"\n style=\"margin-bottom: 12px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-code\" style=\"color: var(--mj-text-muted);\"></i>\n Template Editor\n @if (template) {\n <span style=\"color: var(--mj-text-muted); font-size: 0.9em; font-weight: normal;\">\u2022 {{ template.Name }}</span>\n }\n </span>\n </ng-template>\n <!-- Direct Content Projection -->\n <div class=\"template-section\" style=\"display: flex; flex-direction: column; min-height: 400px; padding: 8px;\">\n @if (isLoadingTemplate) {\n <div class=\"loading-state\" style=\"flex: 1; display: flex; align-items: center; justify-content: center; color: var(--mj-text-muted);\">\n <i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 24px; margin-right: 12px;\"></i>\n Loading template...\n </div>\n } @else if (!record.TemplateID) {\n <div class=\"no-template-state\" style=\"flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 40px; color: var(--mj-text-muted);\">\n <i class=\"fa-solid fa-code\" style=\"font-size: 64px; margin-bottom: 20px; opacity: 0.3;\"></i>\n <h5 style=\"margin-bottom: 12px; color: var(--mj-text-secondary);\">No Template Associated</h5>\n <p style=\"margin-bottom: 24px; text-align: center; max-width: 400px;\">\n This AI prompt needs a template to define its structure and parameters.\n Create a new template or link to an existing one.\n </p>\n <div style=\"display: flex; gap: 12px;\">\n @if (UserCanCreateTemplates) {\n <button kendoButton [themeColor]=\"'primary'\" (click)=\"createNewTemplate()\">\n <i class=\"fa-solid fa-plus\"></i> Create New Template\n </button>\n }\n @if (UserCanReadTemplates) {\n <button kendoButton [fillMode]=\"'outline'\" (click)=\"linkExistingTemplate()\">\n <i class=\"fa-solid fa-link\"></i> Link Existing Template\n </button>\n }\n </div>\n </div>\n } @else if (templateNotFoundInDatabase) {\n <div class=\"invalid-template-state\" style=\"flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 40px; color: #dc3545;\">\n <i class=\"fa-solid fa-exclamation-triangle\" style=\"font-size: 64px; margin-bottom: 20px; opacity: 0.7;\"></i>\n <h5 style=\"margin-bottom: 12px;\">Template Not Found</h5>\n <p style=\"margin-bottom: 24px; text-align: center; max-width: 400px;\">\n The referenced template could not be loaded. It may have been deleted or moved.\n </p>\n <div style=\"display: flex; gap: 12px;\">\n <button kendoButton [fillMode]=\"'outline'\" (click)=\"loadTemplate()\">\n <i class=\"fa-solid fa-refresh\"></i> Retry Loading\n </button>\n @if (UserCanCreateTemplates) {\n <button kendoButton [themeColor]=\"'primary'\" (click)=\"createNewTemplate()\">\n <i class=\"fa-solid fa-plus\"></i> Create New Template\n </button>\n }\n </div>\n </div>\n } @else {\n <!-- Active Template Editor -->\n <div class=\"template-editor-container\" style=\"flex: 1; display: flex; flex-direction: column; min-height: 350px;\">\n <!-- Template Actions Bar -->\n @if (template && EditMode) {\n <div class=\"template-actions\" style=\"display: flex; gap: 8px; padding: 8px; border-bottom: 1px solid var(--mj-border-default); background: var(--mj-bg-surface-sunken);\">\n @if (UserCanUpdateTemplates) {\n <button kendoButton\n [fillMode]=\"'outline'\"\n [size]=\"'small'\"\n (click)=\"linkExistingTemplate()\"\n title=\"Change to a different template\">\n <i class=\"fa-solid fa-exchange-alt\"></i> Change Template\n </button>\n }\n @if (UserCanReadTemplates) {\n <button kendoButton\n [fillMode]=\"'outline'\"\n [size]=\"'small'\"\n (click)=\"openTemplateInNewWindow()\"\n title=\"Open template in new window\">\n <i class=\"fa-solid fa-external-link-alt\"></i> Open in New Window\n </button>\n }\n </div>\n }\n <!-- Template Editor -->\n <div style=\"flex: 1; background: var(--mj-bg-surface-card); border-radius: 6px; border: 1px solid var(--mj-border-default);\">\n <mj-template-editor\n #templateEditor\n [template]=\"template\"\n [config]=\"templateEditorConfig\"\n (contentChange)=\"onTemplateContentChange($event)\"\n (runTemplate)=\"onTemplateRun($event)\"\n style=\"display: block; min-height: 300px;\">\n </mj-template-editor>\n </div>\n </div>\n }\n </div>\n </kendo-expansionpanel>\n <!-- Model Configuration Expansion Panel -->\n @if (record.IsSaved) {\n <kendo-expansionpanel\n [expanded]=\"true\"\n style=\"margin-bottom: 12px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-microchip\" style=\"color: var(--mj-text-muted);\"></i>\n Models\n @if (promptModels.length > 0) {\n <span class=\"badge\" style=\"background: #17a2b8; color: white; padding: 2px 6px; border-radius: 10px; font-size: 0.7em;\">\n {{ promptModels.length }}\n </span>\n }\n <span style=\"color: var(--mj-text-muted); font-size: 0.8em; font-weight: normal; margin-left: 8px;\">\n <i class=\"fa-solid fa-info-circle\" title=\"Models are tried in order from top to bottom. The first available model will be used.\"></i>\n Priority order (first available model will be used)\n </span>\n </span>\n </ng-template>\n <!-- Direct Content Projection -->\n <div style=\"padding: 16px 0;\">\n <!-- Model Management Interface -->\n <div class=\"model-management\" style=\"border: 1px solid var(--mj-border-default); border-radius: 6px; background: var(--mj-bg-surface-sunken);\">\n @if (isLoadingModels) {\n <div class=\"loading-state\" style=\"padding: 20px; text-align: center; color: var(--mj-text-muted);\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Loading models...\n </div>\n } @else {\n @if (promptModels.length === 0) {\n <div class=\"empty-state\" style=\"padding: 20px; text-align: center; color: var(--mj-text-muted);\">\n <i class=\"fa-solid fa-info-circle\"></i> No models configured\n @if (EditMode && UserCanCreatePromptModels) {\n <div style=\"margin-top: 10px;\">\n <button kendoButton fillMode=\"outline\" themeColor=\"primary\" size=\"small\"\n (click)=\"addNewModel()\">\n <i class=\"fa-solid fa-plus\"></i> Add Model\n </button>\n </div>\n }\n </div>\n } @else {\n <!-- Priority explanation for multiple models -->\n @if (promptModels.length > 1) {\n <div style=\"padding: 12px 16px; background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface)); border-bottom: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-border-default)); color: var(--mj-brand-primary); font-size: 0.85em;\">\n <i class=\"fa-solid fa-info-circle\" style=\"margin-right: 6px;\"></i>\n Models are tried in priority order (highest priority first). The first available model that meets requirements will be used for execution.\n </div>\n }\n <!-- Column Headers -->\n <div class=\"model-header\" style=\"display: grid; grid-template-columns: 40px 2fr 1fr 1fr 1fr 60px; gap: 12px; padding: 12px 16px; background: var(--mj-bg-surface-sunken); font-weight: 600; font-size: 0.85em; color: var(--mj-text-secondary); border-bottom: 1px solid var(--mj-border-default);\">\n <div title=\"Priority order - models are tried from top to bottom\">\n <i class=\"fa-solid fa-sort\" style=\"color: var(--mj-text-muted);\"></i>\n </div>\n <div>AI Model <span style=\"color: #dc3545;\">*</span></div>\n <div>Vendor</div>\n <div>Configuration</div>\n <div>Created</div>\n <div>Actions</div>\n </div>\n @for (model of promptModels; track getModelTrackId(model) || $index; let i = $index) {\n <div class=\"model-row\"\n [draggable]=\"EditMode\"\n (dragstart)=\"onDragStart($event, i)\"\n (dragover)=\"onDragOver($event)\"\n (drop)=\"onDrop($event, i)\"\n (dragend)=\"onDragEnd($event)\"\n [style.background]=\"!model.ModelID ? '#fff3cd' : (draggedIndex === i ? 'color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface))' : 'var(--mj-bg-surface-card)')\"\n [style.border-left]=\"!model.ModelID ? '3px solid #ffc107' : 'none'\"\n [style.opacity]=\"draggedIndex === i ? '0.5' : '1'\"\n style=\"display: grid; grid-template-columns: 40px 2fr 1fr 1fr 1fr 60px; gap: 12px; padding: 12px 16px; border-bottom: 1px solid var(--mj-border-default); align-items: start; transition: background 0.2s, opacity 0.2s;\">\n <!-- Drag Handle / Priority -->\n <div class=\"drag-handle\" style=\"display: flex; flex-direction: column; align-items: center; justify-content: center; color: var(--mj-text-muted);\">\n @if (EditMode) {\n <i class=\"fa-solid fa-grip-vertical\" title=\"Drag to reorder priority\" style=\"cursor: move;\"></i>\n <span style=\"font-size: 0.7em; margin-top: 2px;\">#{{ i + 1 }}</span>\n } @else {\n <span style=\"font-size: 0.9em; font-weight: 600;\" title=\"Priority {{ model.Priority }} - Higher priority numbers are tried first\">#{{ i + 1 }}</span>\n }\n </div>\n <!-- Model Selection -->\n <div class=\"model-select\">\n @if (EditMode) {\n <kendo-dropdownlist [(ngModel)]=\"model.ModelID\"\n [name]=\"'modelId_' + getModelTrackId(model)\"\n [data]=\"availableModels\"\n textField=\"Name\"\n valueField=\"ID\"\n [valuePrimitive]=\"true\"\n [filterable]=\"true\"\n placeholder=\"Select a model...\"\n (valueChange)=\"onModelChange($event, i)\"\n style=\"width: 100%;\">\n </kendo-dropdownlist>\n } @else {\n <span style=\"font-weight: 500;\">{{ getModelDisplayName(model.ModelID) }}</span>\n }\n </div>\n <!-- Vendor -->\n <div class=\"model-vendor\">\n @if (EditMode) {\n @if (model.ModelID) {\n @if (shouldShowVendorDropdown(model.ModelID)) {\n <kendo-dropdownlist [(ngModel)]=\"model.VendorID\"\n [name]=\"'vendorId_' + getModelTrackId(model)\"\n [data]=\"getVendorsForModelSync(model.ModelID)\"\n textField=\"Name\"\n valueField=\"ID\"\n [valuePrimitive]=\"true\"\n [filterable]=\"true\"\n placeholder=\"Select vendor...\"\n style=\"width: 100%;\">\n <ng-template kendoDropDownListItemTemplate let-dataItem>\n <span [style.color]=\"getVendorStatusColor(model.ModelID, dataItem.ID)\">\n {{ dataItem.Name }}\n @if (getModelVendorStatus(model.ModelID, dataItem.ID) !== 'Active') {\n <span style=\"font-size: 0.8em; margin-left: 4px;\">({{ getModelVendorStatus(model.ModelID, dataItem.ID) }})</span>\n }\n </span>\n </ng-template>\n </kendo-dropdownlist>\n } @else {\n <!-- Single vendor - just show the name -->\n @if (getVendorsForModelSync(model.ModelID).length === 1) {\n <span [style.color]=\"getVendorStatusColor(model.ModelID, getVendorsForModelSync(model.ModelID)[0].ID)\" style=\"font-size: 0.9em; font-weight: 500;\">\n {{ getVendorsForModelSync(model.ModelID)[0].Name }}\n @if (getModelVendorStatus(model.ModelID, getVendorsForModelSync(model.ModelID)[0].ID) !== 'Active') {\n <span style=\"font-size: 0.8em; margin-left: 4px;\">({{ getModelVendorStatus(model.ModelID, getVendorsForModelSync(model.ModelID)[0].ID) }})</span>\n }\n </span>\n } @else {\n <span style=\"color: var(--mj-text-muted); font-style: italic; font-size: 0.9em;\">No vendors available</span>\n }\n }\n } @else {\n <span style=\"color: var(--mj-text-muted); font-style: italic; font-size: 0.9em;\">Select model first</span>\n }\n } @else {\n @if (model.VendorID && model.ModelID) {\n <span [style.color]=\"getVendorStatusColor(model.ModelID, model.VendorID)\" style=\"font-size: 0.9em;\">\n {{ getVendorDisplayName(model.VendorID) }}\n @if (getModelVendorStatus(model.ModelID, model.VendorID) !== 'Active') {\n <span style=\"font-size: 0.8em; margin-left: 4px;\">({{ getModelVendorStatus(model.ModelID, model.VendorID) }})</span>\n }\n </span>\n } @else {\n <span style=\"color: var(--mj-text-muted); font-size: 0.9em;\">-</span>\n }\n }\n </div>\n <!-- Configuration -->\n <div class=\"model-configuration\">\n @if (EditMode) {\n @if (isLoadingConfigurations) {\n <div style=\"padding: 4px; color: var(--mj-text-muted); font-style: italic; font-size: 0.85em;\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Loading...\n </div>\n } @else {\n <kendo-dropdownlist [(ngModel)]=\"model.ConfigurationID\"\n [name]=\"'configurationId_' + getModelTrackId(model)\"\n [data]=\"availableConfigurations\"\n textField=\"Name\"\n valueField=\"ID\"\n [valuePrimitive]=\"true\"\n [filterable]=\"true\"\n placeholder=\"Default\"\n (valueChange)=\"onConfigurationChange($event, i)\"\n style=\"width: 100%;\">\n <ng-template kendoDropDownListNoDataTemplate>\n <div style=\"padding: 8px; text-align: center; color: var(--mj-text-muted);\">\n No configurations available\n </div>\n </ng-template>\n </kendo-dropdownlist>\n }\n } @else {\n <span style=\"font-size: 0.9em;\">{{ getConfigurationDisplayName(model.ConfigurationID) }}</span>\n }\n </div>\n <!-- Created Date -->\n <div class=\"model-created\">\n @if (model.ID) {\n <span style=\"color: var(--mj-text-muted); font-size: 0.8em;\">{{ model.__mj_CreatedAt | date:'short' }}</span>\n } @else {\n <span style=\"color: #28a745; font-size: 0.8em; font-style: italic;\">New</span>\n }\n </div>\n <!-- Actions -->\n <div class=\"model-actions\" style=\"display: flex; gap: 2px; flex-direction: column;\">\n @if (EditMode) {\n <div style=\"display: flex; gap: 2px; margin-bottom: 4px;\">\n @if (UserCanUpdatePromptModels) {\n <button kendoButton fillMode=\"flat\" size=\"small\"\n (click)=\"moveModelUp(i)\"\n [disabled]=\"i === 0\"\n title=\"Move up\">\n <i class=\"fa-solid fa-chevron-up\"></i>\n </button>\n <button kendoButton fillMode=\"flat\" size=\"small\"\n (click)=\"moveModelDown(i)\"\n [disabled]=\"i === promptModels.length - 1\"\n title=\"Move down\">\n <i class=\"fa-solid fa-chevron-down\"></i>\n </button>\n }\n </div>\n @if (UserCanDeletePromptModels) {\n <button kendoButton fillMode=\"flat\" themeColor=\"error\" size=\"small\"\n (click)=\"removePromptModel(i)\"\n title=\"Remove model\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n }\n </div>\n </div>\n <!-- Second row with additional details -->\n <div style=\"display: grid; grid-template-columns: 40px 1fr; gap: 12px; padding: 8px 16px; border-bottom: 1px solid var(--mj-border-default); background: var(--mj-bg-surface-sunken); font-size: 0.85em; color: var(--mj-text-muted);\">\n <div></div>\n <div>\n <!-- Basic model details -->\n <div style=\"display: flex; gap: 16px; flex-wrap: wrap; align-items: center; margin-bottom: 8px;\">\n @if (model.Status) {\n <span><strong>Status:</strong> {{ model.Status }}</span>\n }\n </div>\n <!-- Parallel execution fields when prompt is ModelSpecific -->\n @if (record.ParallelizationMode === 'ModelSpecific') {\n <div style=\"padding: 8px; background: var(--mj-bg-surface-card); border: 1px solid var(--mj-border-default); border-radius: 4px; margin-top: 8px;\">\n <div style=\"margin-bottom: 6px; font-weight: 600; color: var(--mj-text-secondary); font-size: 0.9em;\">\n <i class=\"fa-solid fa-layer-group\"></i> Model-Specific Parallel Execution\n </div>\n @if (EditMode) {\n <div style=\"display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 12px; align-items: center;\">\n <!-- Parallel Mode -->\n <div>\n <label style=\"display: block; margin-bottom: 2px; font-size: 0.8em; font-weight: 600; color: var(--mj-text-secondary);\">Parallel Mode</label>\n <kendo-dropdownlist [(ngModel)]=\"model.ParallelizationMode\"\n [name]=\"'parallelMode_' + i\"\n [data]=\"[{text: 'None', value: 'None'}, {text: 'Static Count', value: 'StaticCount'}, {text: 'Config Param', value: 'ConfigParam'}]\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n placeholder=\"Select mode...\"\n style=\"width: 100%; font-size: 0.85em;\">\n </kendo-dropdownlist>\n </div>\n <!-- Parallel Count (when StaticCount) -->\n @if (model.ParallelizationMode === 'StaticCount') {\n <div>\n <label style=\"display: block; margin-bottom: 2px; font-size: 0.8em; font-weight: 600; color: var(--mj-text-secondary);\">Parallel Count</label>\n <kendo-numerictextbox [(ngModel)]=\"model.ParallelCount\"\n [name]=\"'parallelCount_' + i\"\n [min]=\"1\"\n [step]=\"1\"\n [format]=\"'n0'\"\n placeholder=\"Count...\"\n style=\"width: 100%; font-size: 0.85em;\">\n </kendo-numerictextbox>\n </div>\n }\n <!-- Config Param (when ConfigParam) -->\n @if (model.ParallelizationMode === 'ConfigParam') {\n <div>\n <label style=\"display: block; margin-bottom: 2px; font-size: 0.8em; font-weight: 600; color: var(--mj-text-secondary);\">Config Parameter</label>\n <kendo-textbox [(ngModel)]=\"model.ParallelConfigParam\"\n [name]=\"'parallelConfigParam_' + i\"\n placeholder=\"Parameter name...\"\n style=\"width: 100%; font-size: 0.85em;\">\n </kendo-textbox>\n </div>\n }\n </div>\n } @else {\n <!-- Read-only display -->\n <div style=\"display: flex; gap: 16px; flex-wrap: wrap; align-items: center;\">\n @if (model.ParallelizationMode) {\n <span><strong>Parallel Mode:</strong> {{ model.ParallelizationMode }}</span>\n }\n @if (model.ParallelCount) {\n <span><strong>Parallel Count:</strong> {{ model.ParallelCount }}</span>\n }\n @if (model.ParallelConfigParam) {\n <span><strong>Config Param:</strong> {{ model.ParallelConfigParam }}</span>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n @if (EditMode && UserCanCreatePromptModels) {\n <div class=\"add-model-row\" style=\"padding: 12px 16px; text-align: center; background: var(--mj-bg-surface-sunken); border-top: 1px solid var(--mj-border-default);\">\n <button kendoButton fillMode=\"outline\" themeColor=\"success\" size=\"small\"\n (click)=\"addNewModel()\">\n <i class=\"fa-solid fa-plus\"></i> Add Model\n </button>\n </div>\n }\n }\n }\n </div>\n </div>\n </kendo-expansionpanel>\n }\n <!-- Advanced Configuration Expansion Panel -->\n <kendo-expansionpanel\n [expanded]=\"false\"\n style=\"margin-bottom: 12px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-cogs\" style=\"color: var(--mj-text-muted);\"></i>\n Advanced Configuration\n </span>\n </ng-template>\n <!-- Direct Content Projection -->\n <div style=\"padding: 16px 0;\">\n <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 20px;\">\n <!-- Left Column -->\n <div>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ParallelizationMode\"\n Type=\"dropdownlist\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n @if (showParallelCount) {\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ParallelCount\"\n Type=\"numerictextbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n }\n @if (showParallelConfigParam) {\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ParallelConfigParam\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n }\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"OutputType\"\n Type=\"dropdownlist\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"EffortLevel\"\n Type=\"numerictextbox\"\n Caption=\"Effort Level (1-100)\"\n Description=\"Higher values request more thorough reasoning\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n </div>\n <!-- Right Column -->\n <div>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ValidationBehavior\"\n Type=\"dropdownlist\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"EnableCaching\"\n Type=\"checkbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n <!-- Result Selector Prompt with Tree Selector -->\n <div style=\"margin-bottom: 16px;\">\n <label style=\"display: block; margin-bottom: 4px; font-weight: 600; color: var(--mj-text-secondary); font-size: 0.9em;\">\n Result Selector Prompt\n </label>\n @if (EditMode) {\n @if (isLoadingResultSelectorData) {\n <div style=\"padding: 8px; color: var(--mj-text-muted); font-style: italic;\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Loading prompts...\n </div>\n } @else {\n <kendo-dropdowntree\n [(ngModel)]=\"record.ResultSelectorPromptID\"\n name=\"resultSelectorPromptID\"\n [data]=\"resultSelectorTreeData\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n [filterable]=\"true\"\n placeholder=\"Select a result selector prompt...\"\n style=\"width: 100%;\"\n (valueChange)=\"onResultSelectorChange($event)\">\n </kendo-dropdowntree>\n }\n } @else {\n <span style=\"color: var(--mj-text-secondary);\">{{ getPromptDisplayName(record.ResultSelectorPromptID || '') || 'None selected' }}</span>\n }\n </div>\n </div>\n </div>\n </div>\n </kendo-expansionpanel>\n <!-- Prefill & Output Control Expansion Panel -->\n <kendo-expansionpanel\n [expanded]=\"false\"\n style=\"margin-bottom: 12px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-wand-magic-sparkles\" style=\"color: var(--mj-text-muted);\"></i>\n Prefill & Output Control\n </span>\n </ng-template>\n <div style=\"padding: 16px 0;\">\n <p style=\"margin: 0 0 12px 0; font-size: 0.85em; color: var(--mj-text-muted);\">\n Assistant prefill seeds the model's response with an initial string, guiding output format and content. Stop sequences terminate generation when encountered.\n </p>\n <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 20px;\">\n <!-- Left Column -->\n <div>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"AssistantPrefill\"\n Type=\"textarea\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"StopSequences\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n </div>\n <!-- Right Column -->\n <div>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"PrefillFallbackMode\"\n Type=\"dropdownlist\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n </div>\n </div>\n </div>\n </kendo-expansionpanel>\n <!-- Template Parameters Expansion Panel -->\n @if (template && templateParams.length > 0) {\n <kendo-expansionpanel\n [expanded]=\"false\"\n style=\"margin-bottom: 12px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-sliders\" style=\"color: var(--mj-text-muted);\"></i>\n Template Parameters\n <span class=\"badge\" style=\"background: var(--mj-brand-primary); color: white; padding: 2px 6px; border-radius: 10px; font-size: 0.7em;\">\n {{ templateParams.length }}\n </span>\n <span style=\"color: var(--mj-text-muted); font-size: 0.8em; font-weight: normal; margin-left: 8px;\">\n <i class=\"fa-solid fa-info-circle\" title=\"These parameters are defined in the template and will be available when executing this prompt\"></i>\n Parameters defined in the template\n </span>\n </span>\n </ng-template>\n <!-- Template Parameters Display -->\n <div style=\"padding: 16px 0;\">\n @if (isLoadingTemplateParams) {\n <div class=\"loading-state\" style=\"padding: 20px; text-align: center; color: var(--mj-text-muted);\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Loading template parameters...\n </div>\n } @else if (templateParams.length === 0) {\n <div class=\"empty-state\" style=\"padding: 20px; text-align: center; color: var(--mj-text-muted);\">\n <i class=\"fa-solid fa-info-circle\"></i> This template has no parameters defined\n </div>\n } @else {\n <!-- Parameters Grid -->\n <div style=\"display: grid; gap: 12px;\">\n @for (param of templateParams; track param.ID) {\n <div class=\"parameter-card\"\n style=\"border: 1px solid var(--mj-border-default); border-radius: 8px; padding: 16px; background: var(--mj-bg-surface-sunken); transition: all 0.2s;\"\n [style.border-left]=\"'4px solid ' + getParamTypeColor(param.Type)\">\n <!-- Parameter Header -->\n <div style=\"display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 8px;\">\n <div style=\"display: flex; align-items: center; gap: 8px;\">\n <i [class]=\"'fa-solid ' + getParamTypeIcon(param.Type)\"\n [style.color]=\"getParamTypeColor(param.Type)\"\n style=\"font-size: 1.2em;\"></i>\n <h6 style=\"margin: 0; color: var(--mj-text-secondary); font-weight: 600;\">\n {{ param.Name }}\n @if (param.IsRequired) {\n <span style=\"color: #dc3545; font-size: 0.9em; margin-left: 4px;\">*</span>\n }\n </h6>\n </div>\n <div style=\"display: flex; align-items: center; gap: 8px;\">\n <span class=\"type-badge\"\n [style.background-color]=\"getParamTypeColor(param.Type)\"\n style=\"color: white; padding: 4px 8px; border-radius: 12px; font-size: 0.75em; font-weight: 500;\">\n {{ param.Type }}\n </span>\n @if (param.IsRequired) {\n <span style=\"color: #dc3545; font-size: 0.85em; font-weight: 500;\">Required</span>\n } @else {\n <span style=\"color: var(--mj-text-muted); font-size: 0.85em;\">Optional</span>\n }\n </div>\n </div>\n <!-- Parameter Description -->\n @if (param.Description) {\n <p style=\"margin: 0 0 8px 0; color: var(--mj-text-muted); font-size: 0.9em; line-height: 1.4;\">\n {{ param.Description }}\n </p>\n }\n <!-- Type-specific Information -->\n <div style=\"font-size: 0.85em; color: var(--mj-text-secondary);\">\n <span style=\"display: flex; align-items: center; gap: 4px; margin-bottom: 4px;\">\n <i class=\"fa-solid fa-info-circle\" style=\"color: var(--mj-text-muted);\"></i>\n {{ getParamTypeDescription(param) }}\n </span>\n </div>\n <!-- Additional Parameter Details -->\n <div style=\"display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; margin-top: 12px;\">\n @if (param.DefaultValue) {\n <div style=\"background: var(--mj-bg-surface-card); padding: 8px 12px; border-radius: 4px; border: 1px solid var(--mj-border-default);\">\n <label style=\"display: block; font-size: 0.8em; color: var(--mj-text-muted); margin-bottom: 2px;\">Default Value</label>\n <code style=\"font-size: 0.85em; color: var(--mj-text-secondary); word-break: break-all;\">{{ param.DefaultValue }}</code>\n </div>\n }\n @if (param.EntityID) {\n <div style=\"background: var(--mj-bg-surface-card); padding: 8px 12px; border-radius: 4px; border: 1px solid var(--mj-border-default);\">\n <label style=\"display: block; font-size: 0.8em; color: var(--mj-text-muted); margin-bottom: 2px;\">Entity</label>\n <span style=\"font-size: 0.85em; color: var(--mj-text-secondary);\">{{ param.Entity || 'Entity ID: ' + param.EntityID }}</span>\n </div>\n }\n @if (param.LinkedParameterName) {\n <div style=\"background: var(--mj-bg-surface-card); padding: 8px 12px; border-radius: 4px; border: 1px solid var(--mj-border-default);\">\n <label style=\"display: block; font-size: 0.8em; color: var(--mj-text-muted); margin-bottom: 2px;\">Linked To</label>\n <span style=\"font-size: 0.85em; color: var(--mj-text-secondary);\">\n {{ param.LinkedParameterName }}\n @if (param.LinkedParameterField) {\n ({{ param.LinkedParameterField }})\n }\n </span>\n </div>\n }\n @if (param.ExtraFilter) {\n <div style=\"background: var(--mj-bg-surface-card); padding: 8px 12px; border-radius: 4px; border: 1px solid var(--mj-border-default);\">\n <label style=\"display: block; font-size: 0.8em; color: var(--mj-text-muted); margin-bottom: 2px;\">Filter</label>\n <code style=\"font-size: 0.8em; color: var(--mj-text-secondary); word-break: break-all;\">{{ param.ExtraFilter }}</code>\n </div>\n }\n @if (param.RecordID) {\n <div style=\"background: var(--mj-bg-surface-card); padding: 8px 12px; border-radius: 4px; border: 1px solid var(--mj-border-default);\">\n <label style=\"display: block; font-size: 0.8em; color: var(--mj-text-muted); margin-bottom: 2px;\">Record ID</label>\n <code style=\"font-size: 0.85em; color: var(--mj-text-secondary);\">{{ param.RecordID }}</code>\n </div>\n }\n </div>\n </div>\n }\n </div>\n <!-- Help Text -->\n <div style=\"margin-top: 16px; padding: 12px; background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface)); border-radius: 6px; border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-border-default));\">\n <div style=\"display: flex; align-items: flex-start; gap: 8px;\">\n <i class=\"fa-solid fa-lightbulb\" style=\"color: var(--mj-brand-primary); margin-top: 2px;\"></i>\n <div style=\"flex: 1; font-size: 0.85em; color: var(--mj-brand-primary); line-height: 1.5;\">\n <strong>Using Template Parameters:</strong> When executing this prompt, you'll be prompted to provide values for all required parameters.\n Parameters can be simple values (text, numbers) or complex data structures (JSON objects, database records, or entire entity collections).\n The template will use these parameters to generate dynamic content based on the values provided at execution time.\n </div>\n </div>\n </div>\n }\n </div>\n </kendo-expansionpanel>\n }\n <!-- Output Example Expansion Panel (when OutputType = object) -->\n @if (showOutputExample) {\n <kendo-expansionpanel\n [expanded]=\"true\"\n style=\"margin-bottom: 12px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-code\" style=\"color: var(--mj-text-muted);\"></i>\n Output Example (JSON)\n <span style=\"color: #dc3545; font-size: 0.8em; font-weight: normal;\">\u2022 Required for object output type</span>\n </span>\n </ng-template>\n <!-- Direct Content Projection -->\n <div style=\"padding: 16px;\">\n @if (EditMode) {\n <mj-code-editor\n [(ngModel)]=\"record.OutputExample\"\n name=\"outputExample\"\n language=\"json\"\n placeholder=\"Enter JSON example structure...\"\n style=\"width: 100%; height: 200px; border: 1px solid var(--mj-border-default); border-radius: 4px;\">\n </mj-code-editor>\n <div style=\"margin-top: 8px; color: var(--mj-text-muted); font-size: 0.85em;\">\n <i class=\"fa-solid fa-info-circle\"></i> Provide a JSON example that defines the expected structure for object output validation.\n </div>\n } @else if (record.OutputExample) {\n <div style=\"background: var(--mj-bg-surface-sunken); border: 1px solid var(--mj-border-default); border-radius: 4px; padding: 12px; font-family: 'Courier New', monospace; font-size: 0.9em; white-space: pre-wrap; overflow: auto; max-height: 250px;\">{{ record.OutputExample }}</div>\n } @else {\n <div style=\"background: #fff3cd; border: 1px solid #ffeaa7; border-radius: 4px; padding: 12px; color: #856404; text-align: center;\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i> Output example is required when output type is 'object'\n </div>\n }\n </div>\n </kendo-expansionpanel>\n }\n <!-- Execution History Expansion Panel -->\n @if (record.IsSaved) {\n <kendo-expansionpanel\n [expanded]=\"false\"\n style=\"margin-bottom: 12px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-history\" style=\"color: var(--mj-text-muted);\"></i>\n Execution History\n @if (executionHistory.length > 0) {\n <span style=\"color: var(--mj-text-muted); font-weight: normal;\">({{ executionHistory.length }})</span>\n }\n </span>\n </ng-template>\n <!-- Custom Execution History Viewer -->\n <div style=\"padding: 16px;\">\n @if (isLoadingHistory) {\n <div style=\"text-align: center; padding: 40px; color: var(--mj-text-muted);\">\n <i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 2em; margin-bottom: 12px;\"></i>\n <p>Loading execution history...</p>\n </div>\n } @else if (executionHistory.length === 0) {\n <div style=\"text-align: center; padding: 40px; color: var(--mj-text-muted);\">\n <i class=\"fa-solid fa-history\" style=\"font-size: 3em; margin-bottom: 12px; opacity: 0.3;\"></i>\n <p>No execution history yet</p>\n <p style=\"font-size: 0.9em;\">Run this prompt to see execution history here</p>\n </div>\n } @else {\n <!-- Sort Controls -->\n <div style=\"display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px;\">\n <div style=\"color: var(--mj-text-muted); font-size: 0.9em;\">\n Showing {{ executionHistory.length }} executions\n </div>\n <div style=\"display: flex; gap: 8px; align-items: center;\">\n <span style=\"color: var(--mj-text-muted); font-size: 0.85em;\">Sort by:</span>\n <kendo-buttongroup selection=\"single\">\n <button kendoButton\n [selected]=\"historySortField === 'runAt'\"\n (click)=\"changeHistorySort('runAt')\"\n size=\"small\">\n Date\n @if (historySortField === 'runAt') {\n <i [class]=\"'fa-solid fa-sort-' + (historySortDirection === 'asc' ? 'up' : 'down')\"\n style=\"margin-left: 4px; font-size: 0.8em;\"></i>\n }\n </button>\n <button kendoButton\n [selected]=\"historySortField === 'executionTime'\"\n (click)=\"changeHistorySort('executionTime')\"\n size=\"small\">\n Duration\n @if (historySortField === 'executionTime') {\n <i [class]=\"'fa-solid fa-sort-' + (historySortDirection === 'asc' ? 'up' : 'down')\"\n style=\"margin-left: 4px; font-size: 0.8em;\"></i>\n }\n </button>\n <button kendoButton\n [selected]=\"historySortField === 'tokens'\"\n (click)=\"changeHistorySort('tokens')\"\n size=\"small\">\n Tokens\n @if (historySortField === 'tokens') {\n <i [class]=\"'fa-solid fa-sort-' + (historySortDirection === 'asc' ? 'up' : 'down')\"\n style=\"margin-left: 4px; font-size: 0.8em;\"></i>\n }\n </button>\n <button kendoButton\n [selected]=\"historySortField === 'cost'\"\n (click)=\"changeHistorySort('cost')\"\n size=\"small\">\n Cost\n @if (historySortField === 'cost') {\n <i [class]=\"'fa-solid fa-sort-' + (historySortDirection === 'asc' ? 'up' : 'down')\"\n style=\"margin-left: 4px; font-size: 0.8em;\"></i>\n }\n </button>\n </kendo-buttongroup>\n </div>\n </div>\n <!-- Execution History Table -->\n <div style=\"border: 1px solid var(--mj-border-default); border-radius: 8px; overflow: hidden;\">\n <table style=\"width: 100%; border-collapse: collapse;\">\n <thead>\n <tr style=\"background: var(--mj-bg-surface-sunken); border-bottom: 2px solid var(--mj-border-default);\">\n <th style=\"padding: 12px; text-align: left; font-weight: 600; color: var(--mj-text-secondary);\">Status</th>\n <th style=\"padding: 12px; text-align: left; font-weight: 600; color: var(--mj-text-secondary);\">Date & Time</th>\n <th style=\"padding: 12px; text-align: left; font-weight: 600; color: var(--mj-text-secondary);\">Model</th>\n <th style=\"padding: 12px; text-align: left; font-weight: 600; color: var(--mj-text-secondary);\">Duration</th>\n <th style=\"padding: 12px; text-align: right; font-weight: 600; color: var(--mj-text-secondary);\">Tokens</th>\n <th style=\"padding: 12px; text-align: right; font-weight: 600; color: var(--mj-text-secondary);\">Cost</th>\n <th style=\"padding: 12px; text-align: center; font-weight: 600; color: var(--mj-text-secondary);\">Type</th>\n <th style=\"padding: 12px; text-align: center; font-weight: 600; color: var(--mj-text-secondary);\">Actions</th>\n </tr>\n </thead>\n <tbody>\n @for (run of executionHistory; track run.ID; let i = $index) {\n <tr class=\"history-row\"\n [class.even-row]=\"i % 2 === 0\"\n style=\"border-bottom: 1px solid var(--mj-border-default);\">\n <td style=\"padding: 12px;\">\n <span style=\"display: flex; align-items: center; gap: 6px;\">\n <i [class]=\"'fa-solid ' + getExecutionStatusIcon(run.Success)\"\n [style.color]=\"getExecutionStatusColor(run.Success)\"></i>\n <span [style.color]=\"getExecutionStatusColor(run.Success)\" style=\"font-weight: 500;\">\n {{ run.Success === true ? 'Success' : run.Success === false ? 'Failed' : 'Running' }}\n </span>\n </span>\n </td>\n <td style=\"padding: 12px; color: var(--mj-text-secondary);\">\n {{ run.RunAt | date:'short' }}\n </td>\n <td style=\"padding: 12px; color: var(--mj-text-secondary);\">\n <span style=\"display: flex; align-items: center; gap: 6px;\">\n <i class=\"fa-solid fa-microchip\" style=\"color: var(--mj-text-muted);\"></i>\n {{ run.Model || 'Unknown' }}\n </span>\n </td>\n <td style=\"padding: 12px; color: var(--mj-text-secondary);\">\n {{ formatDuration(run.ExecutionTimeMS) }}\n </td>\n <td style=\"padding: 12px; text-align: right; color: var(--mj-text-secondary);\">\n {{ formatTokens(run.TokensUsed) }}\n </td>\n <td style=\"padding: 12px; text-align: right; color: var(--mj-text-secondary);\">\n {{ formatCost(run.TotalCost || run.Cost) }}\n </td>\n <td style=\"padding: 12px; text-align: center;\">\n @if (run.RunType) {\n <span style=\"padding: 4px 8px; border-radius: 12px; background: var(--mj-bg-surface-sunken); \n color: var(--mj-text-secondary); font-size: 0.85em; font-weight: 500;\">\n {{ run.RunType }}\n </span>\n }\n </td>\n <td style=\"padding: 12px; text-align: center;\">\n <button kendoButton\n fillMode=\"flat\"\n size=\"small\"\n (click)=\"navigateToPromptRun(run.ID)\"\n title=\"View details\">\n <i class=\"fa-solid fa-external-link\"></i>\n </button>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n </div>\n </kendo-expansionpanel>\n }\n <!-- Cache Expansion Panel -->\n @if (record.IsSaved && record.EnableCaching) {\n <kendo-expansionpanel\n [expanded]=\"false\"\n style=\"margin-bottom: 12px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-database\" style=\"color: var(--mj-text-muted);\"></i>\n Result Cache\n </span>\n </ng-template>\n <!-- Direct Content Projection -->\n <div style=\"padding: 16px 0;\">\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Result Cache','AIPromptID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: AI Result Cache')\"\n [AllowLoad]=\"true\"\n [ShowToolbar]=\"false\">\n </mj-explorer-entity-data-grid>\n </div>\n </kendo-expansionpanel>\n }\n <!-- Related Items Expansion Panel -->\n @if (record.IsSaved) {\n <kendo-expansionpanel\n [expanded]=\"false\"\n style=\"margin-bottom: 12px;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span style=\"display: flex; align-items: center; gap: 8px; font-weight: 600;\">\n <i class=\"fa-solid fa-link\" style=\"color: var(--mj-text-muted);\"></i>\n Related Items\n </span>\n </ng-template>\n <!-- Direct Content Projection -->\n <div style=\"padding: 16px 0;\">\n <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 20px;\">\n <!-- AI Agents -->\n <div>\n <h6 style=\"margin: 0 0 12px 0; color: var(--mj-text-secondary);\">AI Agents Using This Prompt</h6>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Agent Prompts','PromptID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: AI Agent Prompts')\"\n [AllowLoad]=\"true\"\n [ShowToolbar]=\"false\">\n </mj-explorer-entity-data-grid>\n </div>\n <!-- Result Selector References -->\n <div>\n <h6 style=\"margin: 0 0 12px 0; color: var(--mj-text-secondary);\">Prompts Using This as Result Selector</h6>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Prompts','ResultSelectorPromptID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: AI Prompts')\"\n [AllowLoad]=\"true\"\n [ShowToolbar]=\"false\">\n </mj-explorer-entity-data-grid>\n </div>\n </div>\n </div>\n </kendo-expansionpanel>\n }\n </div>\n </div>\n </form>\n }\n\n\n <!-- AI Prompt Test Harness -->\n @if (showTestHarness) {\n <kendo-window\n [width]=\"1200\"\n [height]=\"800\"\n [minWidth]=\"800\"\n [minHeight]=\"600\"\n [draggable]=\"true\"\n [resizable]=\"true\"\n [state]=\"'default'\"\n (close)=\"onTestHarnessVisibilityChanged(false)\"\n title=\"Run AI Prompt - {{ record.Name || 'Untitled' }}\">\n <mj-ai-test-harness\n [entity]=\"record\"\n [mode]=\"'prompt'\"\n [isVisible]=\"showTestHarness\"\n (visibilityChange)=\"onTestHarnessVisibilityChanged($event)\">\n </mj-ai-test-harness>\n </kendo-window>\n }\n</div>", styles: ["/* Override shared form-styles to enable flex layout */\n:host {\n display: block;\n height: 100%;\n}\n\n.record-form-container {\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n padding: 10px;\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n}\n\n.record-form {\n min-height: 0 !important;\n}\n\n.custom-toolbar-actions {\n margin-left: auto;\n}\n\n.status-badge {\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n font-weight: 500;\n letter-spacing: 0.02em;\n}\n\n.config-summary {\n position: sticky;\n top: 0;\n max-height: 600px;\n overflow-y: auto;\n}\n\n.config-item {\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.config-item:last-child {\n border-bottom: none;\n}\n\n.template-tab-content {\n background: var(--mj-bg-surface);\n}\n\n.template-header h5 {\n font-size: 1.1em;\n}\n\n.loading-state,\n.no-template-state,\n.invalid-template-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n}\n\n.no-template-state i,\n.invalid-template-state i {\n opacity: 0.6;\n}\n\n.template-editor-container {\n background: var(--mj-bg-surface);\n border-radius: var(--mj-radius-md);\n}\n\n/* Grid layout adjustments */\n@media (max-width: 1200px) {\n .record-form-container .mj-tab-body > div {\n grid-template-columns: 1fr !important;\n gap: 20px;\n }\n\n .config-summary {\n order: -1;\n position: static;\n max-height: none;\n }\n}\n\n/* Responsive toolbar */\n@media (max-width: 768px) {\n .custom-toolbar-actions {\n flex-direction: column;\n gap: 4px !important;\n }\n\n .status-badge {\n align-self: flex-start;\n }\n}\n\n/* Ensure proper spacing in form sections */\n.record-form-container mj-form-section {\n padding: 16px;\n}\n\n/* Smooth transitions for better UX */\n.status-badge,\n.config-item,\n.template-header {\n transition: all 0.2s ease;\n}\n\n.config-item:hover {\n background-color: var(--mj-bg-surface-sunken);\n border-radius: var(--mj-radius-sm);\n margin: 0 -8px;\n padding: 8px;\n}\n\n/* Execution History Table Styles */\n.history-row {\n transition: background 0.2s;\n}\n\n.history-row:not(.even-row) {\n background: var(--mj-bg-surface-card);\n}\n\n.history-row.even-row {\n background: var(--mj-bg-surface);\n}\n\n.history-row:hover {\n background: var(--mj-border-default) !important;\n}\n\n/* Template Parameters Styles */\n.parameter-card {\n position: relative;\n overflow: hidden;\n}\n\n.parameter-card::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 4px;\n background: inherit;\n transition: width 0.2s;\n}\n\n.parameter-card:hover {\n transform: translateY(-2px);\n box-shadow: var(--mj-shadow-md);\n}\n\n.parameter-card:hover::before {\n width: 6px;\n}\n\n.type-badge {\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.03em;\n transition: transform 0.2s;\n}\n\n.parameter-card:hover .type-badge {\n transform: scale(1.05);\n}\n\n/* Parameter type icons animation */\n.parameter-card i.fa-solid {\n transition: transform 0.3s;\n}\n\n.parameter-card:hover i.fa-solid {\n transform: rotate(360deg);\n}\n\n/* Grid responsive behavior */\n@media (max-width: 768px) {\n .parameter-card {\n margin-bottom: 8px;\n }\n\n .parameter-card h6 {\n font-size: 0.95em;\n }\n\n .type-badge {\n font-size: 0.7em !important;\n }\n}\n"] }]
|
|
3084
3109
|
}], null, { templateEditor: [{
|
|
3085
3110
|
type: ViewChild,
|
|
3086
3111
|
args: ['templateEditor']
|