@memberjunction/ng-core-entity-forms 2.81.0 → 2.83.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js +615 -598
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.d.ts +3 -2
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js +7 -6
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.d.ts +2 -2
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js +2 -2
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +299 -283
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +474 -456
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.d.ts +0 -1
- package/dist/lib/custom/Queries/query-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.js +2 -3
- package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +114 -100
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgent/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAgent/sections/details.component.js +13 -4
- package/dist/lib/generated/Entities/AIAgent/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentRun/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAgentRun/sections/details.component.js +13 -4
- package/dist/lib/generated/Entities/AIAgentRun/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIPrompt/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIPrompt/sections/details.component.js +13 -4
- package/dist/lib/generated/Entities/AIPrompt/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIPromptRun/sections/details.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIPromptRun/sections/details.component.js +13 -4
- package/dist/lib/generated/Entities/AIPromptRun/sections/details.component.js.map +1 -1
- package/dist/lib/generated/Entities/ConversationArtifact/conversationartifact.form.component.js +6 -6
- package/dist/lib/generated/Entities/ConversationArtifact/conversationartifact.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/User/user.form.component.js +6 -6
- package/dist/lib/generated/Entities/User/user.form.component.js.map +1 -1
- package/package.json +16 -16
|
@@ -41,7 +41,7 @@ const _c6 = () => ({ text: "Static Count", value: "StaticCount" });
|
|
|
41
41
|
const _c7 = () => ({ text: "Config Param", value: "ConfigParam" });
|
|
42
42
|
function AIPromptFormComponentExtended_form_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
43
43
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
44
|
-
i0.ɵɵelementStart(0, "kendo-textbox",
|
|
44
|
+
i0.ɵɵelementStart(0, "kendo-textbox", 49);
|
|
45
45
|
i0.ɵɵtwoWayListener("ngModelChange", function AIPromptFormComponentExtended_form_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); });
|
|
46
46
|
i0.ɵɵelementEnd();
|
|
47
47
|
} if (rf & 2) {
|
|
@@ -49,10 +49,10 @@ function AIPromptFormComponentExtended_form_2_Conditional_9_Template(rf, ctx) {
|
|
|
49
49
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.Name);
|
|
50
50
|
} }
|
|
51
51
|
function AIPromptFormComponentExtended_form_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
52
|
-
i0.ɵɵelementStart(0, "h4",
|
|
52
|
+
i0.ɵɵelementStart(0, "h4", 50);
|
|
53
53
|
i0.ɵɵtext(1);
|
|
54
54
|
i0.ɵɵelementEnd();
|
|
55
|
-
i0.ɵɵelementStart(2, "span",
|
|
55
|
+
i0.ɵɵelementStart(2, "span", 51);
|
|
56
56
|
i0.ɵɵtext(3);
|
|
57
57
|
i0.ɵɵelementEnd();
|
|
58
58
|
} if (rf & 2) {
|
|
@@ -65,14 +65,14 @@ function AIPromptFormComponentExtended_form_2_Conditional_10_Template(rf, ctx) {
|
|
|
65
65
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.Status, " ");
|
|
66
66
|
} }
|
|
67
67
|
function AIPromptFormComponentExtended_form_2_Conditional_11_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
68
|
-
i0.ɵɵelementStart(0, "div",
|
|
69
|
-
i0.ɵɵelement(1, "i",
|
|
68
|
+
i0.ɵɵelementStart(0, "div", 54);
|
|
69
|
+
i0.ɵɵelement(1, "i", 56);
|
|
70
70
|
i0.ɵɵtext(2, " Loading types... ");
|
|
71
71
|
i0.ɵɵelementEnd();
|
|
72
72
|
} }
|
|
73
73
|
function AIPromptFormComponentExtended_form_2_Conditional_11_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
74
74
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
75
|
-
i0.ɵɵelementStart(0, "kendo-dropdownlist",
|
|
75
|
+
i0.ɵɵelementStart(0, "kendo-dropdownlist", 57);
|
|
76
76
|
i0.ɵɵtwoWayListener("ngModelChange", function AIPromptFormComponentExtended_form_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); });
|
|
77
77
|
i0.ɵɵelementEnd();
|
|
78
78
|
} if (rf & 2) {
|
|
@@ -82,18 +82,18 @@ function AIPromptFormComponentExtended_form_2_Conditional_11_Conditional_11_Temp
|
|
|
82
82
|
} }
|
|
83
83
|
function AIPromptFormComponentExtended_form_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
84
84
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
85
|
-
i0.ɵɵelementStart(0, "div", 15)(1, "div")(2, "label",
|
|
85
|
+
i0.ɵɵelementStart(0, "div", 15)(1, "div")(2, "label", 47);
|
|
86
86
|
i0.ɵɵtext(3, "Status");
|
|
87
87
|
i0.ɵɵelementEnd();
|
|
88
|
-
i0.ɵɵelementStart(4, "kendo-dropdownlist",
|
|
88
|
+
i0.ɵɵelementStart(4, "kendo-dropdownlist", 52);
|
|
89
89
|
i0.ɵɵtwoWayListener("ngModelChange", function AIPromptFormComponentExtended_form_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); });
|
|
90
90
|
i0.ɵɵelementEnd()();
|
|
91
|
-
i0.ɵɵelementStart(5, "div")(6, "label",
|
|
91
|
+
i0.ɵɵelementStart(5, "div")(6, "label", 47);
|
|
92
92
|
i0.ɵɵtext(7, " Type ");
|
|
93
|
-
i0.ɵɵelementStart(8, "span",
|
|
93
|
+
i0.ɵɵelementStart(8, "span", 53);
|
|
94
94
|
i0.ɵɵtext(9, "*");
|
|
95
95
|
i0.ɵɵelementEnd()();
|
|
96
|
-
i0.ɵɵtemplate(10, AIPromptFormComponentExtended_form_2_Conditional_11_Conditional_10_Template, 3, 0, "div",
|
|
96
|
+
i0.ɵɵtemplate(10, AIPromptFormComponentExtended_form_2_Conditional_11_Conditional_10_Template, 3, 0, "div", 54)(11, AIPromptFormComponentExtended_form_2_Conditional_11_Conditional_11_Template, 1, 4, "kendo-dropdownlist", 55);
|
|
97
97
|
i0.ɵɵelementEnd()();
|
|
98
98
|
} if (rf & 2) {
|
|
99
99
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -105,7 +105,7 @@ function AIPromptFormComponentExtended_form_2_Conditional_11_Template(rf, ctx) {
|
|
|
105
105
|
} }
|
|
106
106
|
function AIPromptFormComponentExtended_form_2_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
107
107
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
108
|
-
i0.ɵɵelementStart(0, "kendo-textarea",
|
|
108
|
+
i0.ɵɵelementStart(0, "kendo-textarea", 58);
|
|
109
109
|
i0.ɵɵtwoWayListener("ngModelChange", function AIPromptFormComponentExtended_form_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); });
|
|
110
110
|
i0.ɵɵelementEnd();
|
|
111
111
|
} if (rf & 2) {
|
|
@@ -124,7 +124,7 @@ function AIPromptFormComponentExtended_form_2_Conditional_13_Template(rf, ctx) {
|
|
|
124
124
|
} }
|
|
125
125
|
function AIPromptFormComponentExtended_form_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
126
126
|
i0.ɵɵelementStart(0, "div", 19);
|
|
127
|
-
i0.ɵɵelement(1, "i",
|
|
127
|
+
i0.ɵɵelement(1, "i", 59);
|
|
128
128
|
i0.ɵɵelementStart(2, "span", 21);
|
|
129
129
|
i0.ɵɵtext(3, "Type:");
|
|
130
130
|
i0.ɵɵelementEnd();
|
|
@@ -138,36 +138,50 @@ function AIPromptFormComponentExtended_form_2_Conditional_15_Template(rf, ctx) {
|
|
|
138
138
|
} }
|
|
139
139
|
function AIPromptFormComponentExtended_form_2_Conditional_28_Template(rf, ctx) { if (rf & 1) {
|
|
140
140
|
i0.ɵɵelementStart(0, "div", 19);
|
|
141
|
-
i0.ɵɵelement(1, "i",
|
|
142
|
-
i0.ɵɵelementStart(2, "span",
|
|
141
|
+
i0.ɵɵelement(1, "i", 60);
|
|
142
|
+
i0.ɵɵelementStart(2, "span", 61);
|
|
143
143
|
i0.ɵɵtext(3, "Caching Enabled");
|
|
144
144
|
i0.ɵɵelementEnd()();
|
|
145
145
|
} }
|
|
146
|
-
function
|
|
147
|
-
|
|
148
|
-
i0.ɵɵelementStart(0, "button", 61);
|
|
149
|
-
i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_2_Conditional_31_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openTestHarness()); });
|
|
146
|
+
function AIPromptFormComponentExtended_form_2_Conditional_29_Template(rf, ctx) { if (rf & 1) {
|
|
147
|
+
i0.ɵɵelementStart(0, "div", 19);
|
|
150
148
|
i0.ɵɵelement(1, "i", 62);
|
|
149
|
+
i0.ɵɵelementStart(2, "span", 21);
|
|
150
|
+
i0.ɵɵtext(3, "Effort Level:");
|
|
151
|
+
i0.ɵɵelementEnd();
|
|
152
|
+
i0.ɵɵelementStart(4, "span", 22);
|
|
153
|
+
i0.ɵɵtext(5);
|
|
154
|
+
i0.ɵɵelementEnd()();
|
|
155
|
+
} if (rf & 2) {
|
|
156
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
157
|
+
i0.ɵɵadvance(5);
|
|
158
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.EffortLevel);
|
|
159
|
+
} }
|
|
160
|
+
function AIPromptFormComponentExtended_form_2_Conditional_32_Template(rf, ctx) { if (rf & 1) {
|
|
161
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
162
|
+
i0.ɵɵelementStart(0, "button", 63);
|
|
163
|
+
i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_2_Conditional_32_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openTestHarness()); });
|
|
164
|
+
i0.ɵɵelement(1, "i", 64);
|
|
151
165
|
i0.ɵɵtext(2, " Run ");
|
|
152
166
|
i0.ɵɵelementEnd();
|
|
153
167
|
} if (rf & 2) {
|
|
154
168
|
i0.ɵɵproperty("themeColor", "primary")("size", "large");
|
|
155
169
|
} }
|
|
156
|
-
function
|
|
170
|
+
function AIPromptFormComponentExtended_form_2_Conditional_33_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
157
171
|
i0.ɵɵtext(0, " \u2022 Prompt must be Active");
|
|
158
172
|
i0.ɵɵelement(1, "br");
|
|
159
173
|
} }
|
|
160
|
-
function
|
|
174
|
+
function AIPromptFormComponentExtended_form_2_Conditional_33_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
161
175
|
i0.ɵɵtext(0, " \u2022 Template is required");
|
|
162
176
|
i0.ɵɵelement(1, "br");
|
|
163
177
|
} }
|
|
164
|
-
function
|
|
178
|
+
function AIPromptFormComponentExtended_form_2_Conditional_33_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
165
179
|
i0.ɵɵtext(0, " \u2022 Template not found");
|
|
166
180
|
i0.ɵɵelement(1, "br");
|
|
167
181
|
} }
|
|
168
|
-
function
|
|
182
|
+
function AIPromptFormComponentExtended_form_2_Conditional_33_Template(rf, ctx) { if (rf & 1) {
|
|
169
183
|
i0.ɵɵelementStart(0, "div", 28);
|
|
170
|
-
i0.ɵɵtemplate(1,
|
|
184
|
+
i0.ɵɵtemplate(1, AIPromptFormComponentExtended_form_2_Conditional_33_Conditional_1_Template, 2, 0, "br")(2, AIPromptFormComponentExtended_form_2_Conditional_33_Conditional_2_Template, 2, 0, "br")(3, AIPromptFormComponentExtended_form_2_Conditional_33_Conditional_3_Template, 2, 0, "br");
|
|
171
185
|
i0.ɵɵelementEnd();
|
|
172
186
|
} if (rf & 2) {
|
|
173
187
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -178,8 +192,8 @@ function AIPromptFormComponentExtended_form_2_Conditional_32_Template(rf, ctx) {
|
|
|
178
192
|
i0.ɵɵadvance();
|
|
179
193
|
i0.ɵɵconditional(!ctx_r1.template && ctx_r1.record.TemplateID ? 3 : -1);
|
|
180
194
|
} }
|
|
181
|
-
function
|
|
182
|
-
i0.ɵɵelementStart(0, "span",
|
|
195
|
+
function AIPromptFormComponentExtended_form_2_ng_template_36_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
196
|
+
i0.ɵɵelementStart(0, "span", 66);
|
|
183
197
|
i0.ɵɵtext(1);
|
|
184
198
|
i0.ɵɵelementEnd();
|
|
185
199
|
} if (rf & 2) {
|
|
@@ -187,54 +201,54 @@ function AIPromptFormComponentExtended_form_2_ng_template_35_Conditional_3_Templ
|
|
|
187
201
|
i0.ɵɵadvance();
|
|
188
202
|
i0.ɵɵtextInterpolate1("\u2022 ", ctx_r1.template.Name, "");
|
|
189
203
|
} }
|
|
190
|
-
function
|
|
191
|
-
i0.ɵɵelementStart(0, "span",
|
|
204
|
+
function AIPromptFormComponentExtended_form_2_ng_template_36_Template(rf, ctx) { if (rf & 1) {
|
|
205
|
+
i0.ɵɵelementStart(0, "span", 65);
|
|
192
206
|
i0.ɵɵelement(1, "i", 23);
|
|
193
207
|
i0.ɵɵtext(2, " Template Editor ");
|
|
194
|
-
i0.ɵɵtemplate(3,
|
|
208
|
+
i0.ɵɵtemplate(3, AIPromptFormComponentExtended_form_2_ng_template_36_Conditional_3_Template, 2, 1, "span", 66);
|
|
195
209
|
i0.ɵɵelementEnd();
|
|
196
210
|
} if (rf & 2) {
|
|
197
211
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
198
212
|
i0.ɵɵadvance(3);
|
|
199
213
|
i0.ɵɵconditional(ctx_r1.template ? 3 : -1);
|
|
200
214
|
} }
|
|
201
|
-
function
|
|
215
|
+
function AIPromptFormComponentExtended_form_2_Conditional_38_Template(rf, ctx) { if (rf & 1) {
|
|
202
216
|
i0.ɵɵelementStart(0, "div", 33);
|
|
203
|
-
i0.ɵɵelement(1, "i",
|
|
217
|
+
i0.ɵɵelement(1, "i", 67);
|
|
204
218
|
i0.ɵɵtext(2, " Loading template... ");
|
|
205
219
|
i0.ɵɵelementEnd();
|
|
206
220
|
} }
|
|
207
|
-
function
|
|
221
|
+
function AIPromptFormComponentExtended_form_2_Conditional_39_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
208
222
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
209
|
-
i0.ɵɵelementStart(0, "button",
|
|
210
|
-
i0.ɵɵlistener("click", function
|
|
211
|
-
i0.ɵɵelement(1, "i",
|
|
223
|
+
i0.ɵɵelementStart(0, "button", 74);
|
|
224
|
+
i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_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()); });
|
|
225
|
+
i0.ɵɵelement(1, "i", 75);
|
|
212
226
|
i0.ɵɵtext(2, " Create New Template ");
|
|
213
227
|
i0.ɵɵelementEnd();
|
|
214
228
|
} if (rf & 2) {
|
|
215
229
|
i0.ɵɵproperty("themeColor", "primary");
|
|
216
230
|
} }
|
|
217
|
-
function
|
|
231
|
+
function AIPromptFormComponentExtended_form_2_Conditional_39_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
218
232
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
219
|
-
i0.ɵɵelementStart(0, "button",
|
|
220
|
-
i0.ɵɵlistener("click", function
|
|
221
|
-
i0.ɵɵelement(1, "i",
|
|
233
|
+
i0.ɵɵelementStart(0, "button", 76);
|
|
234
|
+
i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_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()); });
|
|
235
|
+
i0.ɵɵelement(1, "i", 77);
|
|
222
236
|
i0.ɵɵtext(2, " Link Existing Template ");
|
|
223
237
|
i0.ɵɵelementEnd();
|
|
224
238
|
} if (rf & 2) {
|
|
225
239
|
i0.ɵɵproperty("fillMode", "outline");
|
|
226
240
|
} }
|
|
227
|
-
function
|
|
241
|
+
function AIPromptFormComponentExtended_form_2_Conditional_39_Template(rf, ctx) { if (rf & 1) {
|
|
228
242
|
i0.ɵɵelementStart(0, "div", 34);
|
|
229
|
-
i0.ɵɵelement(1, "i",
|
|
230
|
-
i0.ɵɵelementStart(2, "h5",
|
|
243
|
+
i0.ɵɵelement(1, "i", 68);
|
|
244
|
+
i0.ɵɵelementStart(2, "h5", 69);
|
|
231
245
|
i0.ɵɵtext(3, "No Template Associated");
|
|
232
246
|
i0.ɵɵelementEnd();
|
|
233
|
-
i0.ɵɵelementStart(4, "p",
|
|
247
|
+
i0.ɵɵelementStart(4, "p", 70);
|
|
234
248
|
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. ");
|
|
235
249
|
i0.ɵɵelementEnd();
|
|
236
|
-
i0.ɵɵelementStart(6, "div",
|
|
237
|
-
i0.ɵɵtemplate(7,
|
|
250
|
+
i0.ɵɵelementStart(6, "div", 71);
|
|
251
|
+
i0.ɵɵtemplate(7, AIPromptFormComponentExtended_form_2_Conditional_39_Conditional_7_Template, 3, 1, "button", 72)(8, AIPromptFormComponentExtended_form_2_Conditional_39_Conditional_8_Template, 3, 1, "button", 73);
|
|
238
252
|
i0.ɵɵelementEnd()();
|
|
239
253
|
} if (rf & 2) {
|
|
240
254
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -243,32 +257,32 @@ function AIPromptFormComponentExtended_form_2_Conditional_38_Template(rf, ctx) {
|
|
|
243
257
|
i0.ɵɵadvance();
|
|
244
258
|
i0.ɵɵconditional(ctx_r1.UserCanReadTemplates ? 8 : -1);
|
|
245
259
|
} }
|
|
246
|
-
function
|
|
260
|
+
function AIPromptFormComponentExtended_form_2_Conditional_40_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
247
261
|
const _r10 = i0.ɵɵgetCurrentView();
|
|
248
|
-
i0.ɵɵelementStart(0, "button",
|
|
249
|
-
i0.ɵɵlistener("click", function
|
|
250
|
-
i0.ɵɵelement(1, "i",
|
|
262
|
+
i0.ɵɵelementStart(0, "button", 74);
|
|
263
|
+
i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_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", 75);
|
|
251
265
|
i0.ɵɵtext(2, " Create New Template ");
|
|
252
266
|
i0.ɵɵelementEnd();
|
|
253
267
|
} if (rf & 2) {
|
|
254
268
|
i0.ɵɵproperty("themeColor", "primary");
|
|
255
269
|
} }
|
|
256
|
-
function
|
|
270
|
+
function AIPromptFormComponentExtended_form_2_Conditional_40_Template(rf, ctx) { if (rf & 1) {
|
|
257
271
|
const _r9 = i0.ɵɵgetCurrentView();
|
|
258
272
|
i0.ɵɵelementStart(0, "div", 35);
|
|
259
|
-
i0.ɵɵelement(1, "i",
|
|
260
|
-
i0.ɵɵelementStart(2, "h5",
|
|
273
|
+
i0.ɵɵelement(1, "i", 78);
|
|
274
|
+
i0.ɵɵelementStart(2, "h5", 79);
|
|
261
275
|
i0.ɵɵtext(3, "Template Not Found");
|
|
262
276
|
i0.ɵɵelementEnd();
|
|
263
|
-
i0.ɵɵelementStart(4, "p",
|
|
277
|
+
i0.ɵɵelementStart(4, "p", 70);
|
|
264
278
|
i0.ɵɵtext(5, " The referenced template could not be loaded. It may have been deleted or moved. ");
|
|
265
279
|
i0.ɵɵelementEnd();
|
|
266
|
-
i0.ɵɵelementStart(6, "div",
|
|
267
|
-
i0.ɵɵlistener("click", function
|
|
268
|
-
i0.ɵɵelement(8, "i",
|
|
280
|
+
i0.ɵɵelementStart(6, "div", 71)(7, "button", 76);
|
|
281
|
+
i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_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", 80);
|
|
269
283
|
i0.ɵɵtext(9, " Retry Loading ");
|
|
270
284
|
i0.ɵɵelementEnd();
|
|
271
|
-
i0.ɵɵtemplate(10,
|
|
285
|
+
i0.ɵɵtemplate(10, AIPromptFormComponentExtended_form_2_Conditional_40_Conditional_10_Template, 3, 1, "button", 72);
|
|
272
286
|
i0.ɵɵelementEnd()();
|
|
273
287
|
} if (rf & 2) {
|
|
274
288
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -277,29 +291,29 @@ function AIPromptFormComponentExtended_form_2_Conditional_39_Template(rf, ctx) {
|
|
|
277
291
|
i0.ɵɵadvance(3);
|
|
278
292
|
i0.ɵɵconditional(ctx_r1.UserCanCreateTemplates ? 10 : -1);
|
|
279
293
|
} }
|
|
280
|
-
function
|
|
294
|
+
function AIPromptFormComponentExtended_form_2_Conditional_41_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
281
295
|
const _r12 = i0.ɵɵgetCurrentView();
|
|
282
|
-
i0.ɵɵelementStart(0, "button",
|
|
283
|
-
i0.ɵɵlistener("click", function
|
|
284
|
-
i0.ɵɵelement(1, "i",
|
|
296
|
+
i0.ɵɵelementStart(0, "button", 86);
|
|
297
|
+
i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_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", 87);
|
|
285
299
|
i0.ɵɵtext(2, " Change Template ");
|
|
286
300
|
i0.ɵɵelementEnd();
|
|
287
301
|
} if (rf & 2) {
|
|
288
302
|
i0.ɵɵproperty("fillMode", "outline")("size", "small");
|
|
289
303
|
} }
|
|
290
|
-
function
|
|
304
|
+
function AIPromptFormComponentExtended_form_2_Conditional_41_Conditional_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
291
305
|
const _r13 = i0.ɵɵgetCurrentView();
|
|
292
|
-
i0.ɵɵelementStart(0, "button",
|
|
293
|
-
i0.ɵɵlistener("click", function
|
|
294
|
-
i0.ɵɵelement(1, "i",
|
|
306
|
+
i0.ɵɵelementStart(0, "button", 88);
|
|
307
|
+
i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_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", 89);
|
|
295
309
|
i0.ɵɵtext(2, " Open in New Window ");
|
|
296
310
|
i0.ɵɵelementEnd();
|
|
297
311
|
} if (rf & 2) {
|
|
298
312
|
i0.ɵɵproperty("fillMode", "outline")("size", "small");
|
|
299
313
|
} }
|
|
300
|
-
function
|
|
301
|
-
i0.ɵɵelementStart(0, "div",
|
|
302
|
-
i0.ɵɵtemplate(1,
|
|
314
|
+
function AIPromptFormComponentExtended_form_2_Conditional_41_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
315
|
+
i0.ɵɵelementStart(0, "div", 81);
|
|
316
|
+
i0.ɵɵtemplate(1, AIPromptFormComponentExtended_form_2_Conditional_41_Conditional_1_Conditional_1_Template, 3, 2, "button", 84)(2, AIPromptFormComponentExtended_form_2_Conditional_41_Conditional_1_Conditional_2_Template, 3, 2, "button", 85);
|
|
303
317
|
i0.ɵɵelementEnd();
|
|
304
318
|
} if (rf & 2) {
|
|
305
319
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -308,12 +322,12 @@ function AIPromptFormComponentExtended_form_2_Conditional_40_Conditional_1_Templ
|
|
|
308
322
|
i0.ɵɵadvance();
|
|
309
323
|
i0.ɵɵconditional(ctx_r1.UserCanReadTemplates ? 2 : -1);
|
|
310
324
|
} }
|
|
311
|
-
function
|
|
325
|
+
function AIPromptFormComponentExtended_form_2_Conditional_41_Template(rf, ctx) { if (rf & 1) {
|
|
312
326
|
const _r11 = i0.ɵɵgetCurrentView();
|
|
313
327
|
i0.ɵɵelementStart(0, "div", 36);
|
|
314
|
-
i0.ɵɵtemplate(1,
|
|
315
|
-
i0.ɵɵelementStart(2, "div",
|
|
316
|
-
i0.ɵɵlistener("contentChange", function
|
|
328
|
+
i0.ɵɵtemplate(1, AIPromptFormComponentExtended_form_2_Conditional_41_Conditional_1_Template, 3, 2, "div", 81);
|
|
329
|
+
i0.ɵɵelementStart(2, "div", 82)(3, "mj-template-editor", 83, 1);
|
|
330
|
+
i0.ɵɵlistener("contentChange", function AIPromptFormComponentExtended_form_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 AIPromptFormComponentExtended_form_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)); });
|
|
317
331
|
i0.ɵɵelementEnd()()();
|
|
318
332
|
} if (rf & 2) {
|
|
319
333
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -322,8 +336,8 @@ function AIPromptFormComponentExtended_form_2_Conditional_40_Template(rf, ctx) {
|
|
|
322
336
|
i0.ɵɵadvance(2);
|
|
323
337
|
i0.ɵɵproperty("template", ctx_r1.template)("config", ctx_r1.templateEditorConfig);
|
|
324
338
|
} }
|
|
325
|
-
function
|
|
326
|
-
i0.ɵɵelementStart(0, "span",
|
|
339
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
340
|
+
i0.ɵɵelementStart(0, "span", 93);
|
|
327
341
|
i0.ɵɵtext(1);
|
|
328
342
|
i0.ɵɵelementEnd();
|
|
329
343
|
} if (rf & 2) {
|
|
@@ -331,13 +345,13 @@ function AIPromptFormComponentExtended_form_2_Conditional_41_ng_template_1_Condi
|
|
|
331
345
|
i0.ɵɵadvance();
|
|
332
346
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.promptModels.length, " ");
|
|
333
347
|
} }
|
|
334
|
-
function
|
|
335
|
-
i0.ɵɵelementStart(0, "span",
|
|
336
|
-
i0.ɵɵelement(1, "i",
|
|
348
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
349
|
+
i0.ɵɵelementStart(0, "span", 65);
|
|
350
|
+
i0.ɵɵelement(1, "i", 92);
|
|
337
351
|
i0.ɵɵtext(2, " Models ");
|
|
338
|
-
i0.ɵɵtemplate(3,
|
|
339
|
-
i0.ɵɵelementStart(4, "span",
|
|
340
|
-
i0.ɵɵelement(5, "i",
|
|
352
|
+
i0.ɵɵtemplate(3, AIPromptFormComponentExtended_form_2_Conditional_42_ng_template_1_Conditional_3_Template, 2, 1, "span", 93);
|
|
353
|
+
i0.ɵɵelementStart(4, "span", 94);
|
|
354
|
+
i0.ɵɵelement(5, "i", 95);
|
|
341
355
|
i0.ɵɵtext(6, " Priority order (first available model will be used) ");
|
|
342
356
|
i0.ɵɵelementEnd()();
|
|
343
357
|
} if (rf & 2) {
|
|
@@ -345,64 +359,64 @@ function AIPromptFormComponentExtended_form_2_Conditional_41_ng_template_1_Templ
|
|
|
345
359
|
i0.ɵɵadvance(3);
|
|
346
360
|
i0.ɵɵconditional(ctx_r1.promptModels.length > 0 ? 3 : -1);
|
|
347
361
|
} }
|
|
348
|
-
function
|
|
349
|
-
i0.ɵɵelementStart(0, "div",
|
|
350
|
-
i0.ɵɵelement(1, "i",
|
|
362
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
363
|
+
i0.ɵɵelementStart(0, "div", 91);
|
|
364
|
+
i0.ɵɵelement(1, "i", 56);
|
|
351
365
|
i0.ɵɵtext(2, " Loading models... ");
|
|
352
366
|
i0.ɵɵelementEnd();
|
|
353
367
|
} }
|
|
354
|
-
function
|
|
368
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_0_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
355
369
|
const _r14 = i0.ɵɵgetCurrentView();
|
|
356
|
-
i0.ɵɵelementStart(0, "div",
|
|
357
|
-
i0.ɵɵlistener("click", function
|
|
358
|
-
i0.ɵɵelement(2, "i",
|
|
370
|
+
i0.ɵɵelementStart(0, "div", 98)(1, "button", 99);
|
|
371
|
+
i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_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()); });
|
|
372
|
+
i0.ɵɵelement(2, "i", 75);
|
|
359
373
|
i0.ɵɵtext(3, " Add Model ");
|
|
360
374
|
i0.ɵɵelementEnd()();
|
|
361
375
|
} }
|
|
362
|
-
function
|
|
363
|
-
i0.ɵɵelementStart(0, "div",
|
|
364
|
-
i0.ɵɵelement(1, "i",
|
|
376
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
377
|
+
i0.ɵɵelementStart(0, "div", 96);
|
|
378
|
+
i0.ɵɵelement(1, "i", 97);
|
|
365
379
|
i0.ɵɵtext(2, " No models configured ");
|
|
366
|
-
i0.ɵɵtemplate(3,
|
|
380
|
+
i0.ɵɵtemplate(3, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_0_Conditional_3_Template, 4, 0, "div", 98);
|
|
367
381
|
i0.ɵɵelementEnd();
|
|
368
382
|
} if (rf & 2) {
|
|
369
383
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
370
384
|
i0.ɵɵadvance(3);
|
|
371
385
|
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanCreatePromptModels ? 3 : -1);
|
|
372
386
|
} }
|
|
373
|
-
function
|
|
374
|
-
i0.ɵɵelementStart(0, "div",
|
|
375
|
-
i0.ɵɵelement(1, "i",
|
|
387
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
388
|
+
i0.ɵɵelementStart(0, "div", 100);
|
|
389
|
+
i0.ɵɵelement(1, "i", 105);
|
|
376
390
|
i0.ɵɵtext(2, " Models are tried in priority order (highest priority first). The first available model that meets requirements will be used for execution. ");
|
|
377
391
|
i0.ɵɵelementEnd();
|
|
378
392
|
} }
|
|
379
|
-
function
|
|
380
|
-
i0.ɵɵelement(0, "i",
|
|
381
|
-
i0.ɵɵelementStart(1, "span",
|
|
393
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
394
|
+
i0.ɵɵelement(0, "i", 121);
|
|
395
|
+
i0.ɵɵelementStart(1, "span", 122);
|
|
382
396
|
i0.ɵɵtext(2);
|
|
383
397
|
i0.ɵɵelementEnd();
|
|
384
398
|
} if (rf & 2) {
|
|
385
|
-
const ɵ$
|
|
399
|
+
const ɵ$index_313_r16 = i0.ɵɵnextContext().$index;
|
|
386
400
|
i0.ɵɵadvance(2);
|
|
387
|
-
i0.ɵɵtextInterpolate1("#", ɵ$
|
|
401
|
+
i0.ɵɵtextInterpolate1("#", ɵ$index_313_r16 + 1, "");
|
|
388
402
|
} }
|
|
389
|
-
function
|
|
390
|
-
i0.ɵɵelementStart(0, "span",
|
|
403
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
404
|
+
i0.ɵɵelementStart(0, "span", 108);
|
|
391
405
|
i0.ɵɵtext(1);
|
|
392
406
|
i0.ɵɵelementEnd();
|
|
393
407
|
} if (rf & 2) {
|
|
394
408
|
const ctx_r16 = i0.ɵɵnextContext();
|
|
395
409
|
const model_r18 = ctx_r16.$implicit;
|
|
396
|
-
const ɵ$
|
|
410
|
+
const ɵ$index_313_r16 = ctx_r16.$index;
|
|
397
411
|
i0.ɵɵpropertyInterpolate1("title", "Priority ", model_r18.Priority, " - Higher priority numbers are tried first");
|
|
398
412
|
i0.ɵɵadvance();
|
|
399
|
-
i0.ɵɵtextInterpolate1("#", ɵ$
|
|
413
|
+
i0.ɵɵtextInterpolate1("#", ɵ$index_313_r16 + 1, "");
|
|
400
414
|
} }
|
|
401
|
-
function
|
|
415
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
402
416
|
const _r19 = i0.ɵɵgetCurrentView();
|
|
403
|
-
i0.ɵɵelementStart(0, "kendo-dropdownlist",
|
|
404
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
405
|
-
i0.ɵɵlistener("valueChange", function
|
|
417
|
+
i0.ɵɵelementStart(0, "kendo-dropdownlist", 123);
|
|
418
|
+
i0.ɵɵtwoWayListener("ngModelChange", function AIPromptFormComponentExtended_form_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); });
|
|
419
|
+
i0.ɵɵlistener("valueChange", function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_5_Template_kendo_dropdownlist_valueChange_0_listener($event) { i0.ɵɵrestoreView(_r19); const ɵ$index_313_r16 = i0.ɵɵnextContext().$index; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.onModelChange($event, ɵ$index_313_r16)); });
|
|
406
420
|
i0.ɵɵelementEnd();
|
|
407
421
|
} if (rf & 2) {
|
|
408
422
|
const model_r18 = i0.ɵɵnextContext().$implicit;
|
|
@@ -410,7 +424,7 @@ function AIPromptFormComponentExtended_form_2_Conditional_41_Conditional_5_Condi
|
|
|
410
424
|
i0.ɵɵtwoWayProperty("ngModel", model_r18.ModelID);
|
|
411
425
|
i0.ɵɵproperty("name", "modelId_" + ctx_r1.getModelTrackId(model_r18))("data", ctx_r1.availableModels)("valuePrimitive", true)("filterable", true);
|
|
412
426
|
} }
|
|
413
|
-
function
|
|
427
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
414
428
|
i0.ɵɵelementStart(0, "span", 24);
|
|
415
429
|
i0.ɵɵtext(1);
|
|
416
430
|
i0.ɵɵelementEnd();
|
|
@@ -420,8 +434,8 @@ function AIPromptFormComponentExtended_form_2_Conditional_41_Conditional_5_Condi
|
|
|
420
434
|
i0.ɵɵadvance();
|
|
421
435
|
i0.ɵɵtextInterpolate(ctx_r1.getModelDisplayName(model_r18.ModelID));
|
|
422
436
|
} }
|
|
423
|
-
function
|
|
424
|
-
i0.ɵɵelementStart(0, "span",
|
|
437
|
+
function AIPromptFormComponentExtended_form_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) {
|
|
438
|
+
i0.ɵɵelementStart(0, "span", 128);
|
|
425
439
|
i0.ɵɵtext(1);
|
|
426
440
|
i0.ɵɵelementEnd();
|
|
427
441
|
} if (rf & 2) {
|
|
@@ -431,10 +445,10 @@ function AIPromptFormComponentExtended_form_2_Conditional_41_Conditional_5_Condi
|
|
|
431
445
|
i0.ɵɵadvance();
|
|
432
446
|
i0.ɵɵtextInterpolate1("(", ctx_r1.getModelVendorStatus(model_r18.ModelID, dataItem_r21.ID), ")");
|
|
433
447
|
} }
|
|
434
|
-
function
|
|
448
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_0_Conditional_0_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
435
449
|
i0.ɵɵelementStart(0, "span");
|
|
436
450
|
i0.ɵɵtext(1);
|
|
437
|
-
i0.ɵɵtemplate(2,
|
|
451
|
+
i0.ɵɵtemplate(2, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_0_Conditional_0_ng_template_1_Conditional_2_Template, 2, 1, "span", 128);
|
|
438
452
|
i0.ɵɵelementEnd();
|
|
439
453
|
} if (rf & 2) {
|
|
440
454
|
const dataItem_r21 = ctx.$implicit;
|
|
@@ -446,11 +460,11 @@ function AIPromptFormComponentExtended_form_2_Conditional_41_Conditional_5_Condi
|
|
|
446
460
|
i0.ɵɵadvance();
|
|
447
461
|
i0.ɵɵconditional(ctx_r1.getModelVendorStatus(model_r18.ModelID, dataItem_r21.ID) !== "Active" ? 2 : -1);
|
|
448
462
|
} }
|
|
449
|
-
function
|
|
463
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_0_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
450
464
|
const _r20 = i0.ɵɵgetCurrentView();
|
|
451
|
-
i0.ɵɵelementStart(0, "kendo-dropdownlist",
|
|
452
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
453
|
-
i0.ɵɵtemplate(1,
|
|
465
|
+
i0.ɵɵelementStart(0, "kendo-dropdownlist", 126);
|
|
466
|
+
i0.ɵɵtwoWayListener("ngModelChange", function AIPromptFormComponentExtended_form_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); });
|
|
467
|
+
i0.ɵɵtemplate(1, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_0_Conditional_0_ng_template_1_Template, 3, 4, "ng-template", 127);
|
|
454
468
|
i0.ɵɵelementEnd();
|
|
455
469
|
} if (rf & 2) {
|
|
456
470
|
const model_r18 = i0.ɵɵnextContext(3).$implicit;
|
|
@@ -458,8 +472,8 @@ function AIPromptFormComponentExtended_form_2_Conditional_41_Conditional_5_Condi
|
|
|
458
472
|
i0.ɵɵtwoWayProperty("ngModel", model_r18.VendorID);
|
|
459
473
|
i0.ɵɵproperty("name", "vendorId_" + ctx_r1.getModelTrackId(model_r18))("data", ctx_r1.getVendorsForModelSync(model_r18.ModelID))("valuePrimitive", true)("filterable", true);
|
|
460
474
|
} }
|
|
461
|
-
function
|
|
462
|
-
i0.ɵɵelementStart(0, "span",
|
|
475
|
+
function AIPromptFormComponentExtended_form_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) {
|
|
476
|
+
i0.ɵɵelementStart(0, "span", 128);
|
|
463
477
|
i0.ɵɵtext(1);
|
|
464
478
|
i0.ɵɵelementEnd();
|
|
465
479
|
} if (rf & 2) {
|
|
@@ -468,10 +482,10 @@ function AIPromptFormComponentExtended_form_2_Conditional_41_Conditional_5_Condi
|
|
|
468
482
|
i0.ɵɵadvance();
|
|
469
483
|
i0.ɵɵtextInterpolate1("(", ctx_r1.getModelVendorStatus(model_r18.ModelID, ctx_r1.getVendorsForModelSync(model_r18.ModelID)[0].ID), ")");
|
|
470
484
|
} }
|
|
471
|
-
function
|
|
472
|
-
i0.ɵɵelementStart(0, "span",
|
|
485
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_0_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
486
|
+
i0.ɵɵelementStart(0, "span", 130);
|
|
473
487
|
i0.ɵɵtext(1);
|
|
474
|
-
i0.ɵɵtemplate(2,
|
|
488
|
+
i0.ɵɵtemplate(2, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_0_Conditional_1_Conditional_0_Conditional_2_Template, 2, 1, "span", 128);
|
|
475
489
|
i0.ɵɵelementEnd();
|
|
476
490
|
} if (rf & 2) {
|
|
477
491
|
const model_r18 = i0.ɵɵnextContext(4).$implicit;
|
|
@@ -482,38 +496,38 @@ function AIPromptFormComponentExtended_form_2_Conditional_41_Conditional_5_Condi
|
|
|
482
496
|
i0.ɵɵadvance();
|
|
483
497
|
i0.ɵɵconditional(ctx_r1.getModelVendorStatus(model_r18.ModelID, ctx_r1.getVendorsForModelSync(model_r18.ModelID)[0].ID) !== "Active" ? 2 : -1);
|
|
484
498
|
} }
|
|
485
|
-
function
|
|
486
|
-
i0.ɵɵelementStart(0, "span",
|
|
499
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_0_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
500
|
+
i0.ɵɵelementStart(0, "span", 124);
|
|
487
501
|
i0.ɵɵtext(1, "No vendors available");
|
|
488
502
|
i0.ɵɵelementEnd();
|
|
489
503
|
} }
|
|
490
|
-
function
|
|
491
|
-
i0.ɵɵtemplate(0,
|
|
504
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_0_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
505
|
+
i0.ɵɵtemplate(0, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_0_Conditional_1_Conditional_0_Template, 3, 4, "span", 129)(1, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_0_Conditional_1_Conditional_1_Template, 2, 0, "span", 124);
|
|
492
506
|
} if (rf & 2) {
|
|
493
507
|
const model_r18 = i0.ɵɵnextContext(3).$implicit;
|
|
494
508
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
495
509
|
i0.ɵɵconditional(ctx_r1.getVendorsForModelSync(model_r18.ModelID).length === 1 ? 0 : 1);
|
|
496
510
|
} }
|
|
497
|
-
function
|
|
498
|
-
i0.ɵɵtemplate(0,
|
|
511
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
512
|
+
i0.ɵɵtemplate(0, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_0_Conditional_0_Template, 2, 5, "kendo-dropdownlist", 125)(1, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_0_Conditional_1_Template, 2, 1);
|
|
499
513
|
} if (rf & 2) {
|
|
500
514
|
const model_r18 = i0.ɵɵnextContext(2).$implicit;
|
|
501
515
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
502
516
|
i0.ɵɵconditional(ctx_r1.shouldShowVendorDropdown(model_r18.ModelID) ? 0 : 1);
|
|
503
517
|
} }
|
|
504
|
-
function
|
|
505
|
-
i0.ɵɵelementStart(0, "span",
|
|
518
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
519
|
+
i0.ɵɵelementStart(0, "span", 124);
|
|
506
520
|
i0.ɵɵtext(1, "Select model first");
|
|
507
521
|
i0.ɵɵelementEnd();
|
|
508
522
|
} }
|
|
509
|
-
function
|
|
510
|
-
i0.ɵɵtemplate(0,
|
|
523
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
524
|
+
i0.ɵɵtemplate(0, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_0_Template, 2, 1)(1, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Conditional_1_Template, 2, 0, "span", 124);
|
|
511
525
|
} if (rf & 2) {
|
|
512
526
|
const model_r18 = i0.ɵɵnextContext().$implicit;
|
|
513
527
|
i0.ɵɵconditional(model_r18.ModelID ? 0 : 1);
|
|
514
528
|
} }
|
|
515
|
-
function
|
|
516
|
-
i0.ɵɵelementStart(0, "span",
|
|
529
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_9_Conditional_0_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
530
|
+
i0.ɵɵelementStart(0, "span", 128);
|
|
517
531
|
i0.ɵɵtext(1);
|
|
518
532
|
i0.ɵɵelementEnd();
|
|
519
533
|
} if (rf & 2) {
|
|
@@ -522,10 +536,10 @@ function AIPromptFormComponentExtended_form_2_Conditional_41_Conditional_5_Condi
|
|
|
522
536
|
i0.ɵɵadvance();
|
|
523
537
|
i0.ɵɵtextInterpolate1("(", ctx_r1.getModelVendorStatus(model_r18.ModelID, model_r18.VendorID), ")");
|
|
524
538
|
} }
|
|
525
|
-
function
|
|
526
|
-
i0.ɵɵelementStart(0, "span",
|
|
539
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_9_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
540
|
+
i0.ɵɵelementStart(0, "span", 113);
|
|
527
541
|
i0.ɵɵtext(1);
|
|
528
|
-
i0.ɵɵtemplate(2,
|
|
542
|
+
i0.ɵɵtemplate(2, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_9_Conditional_0_Conditional_2_Template, 2, 1, "span", 128);
|
|
529
543
|
i0.ɵɵelementEnd();
|
|
530
544
|
} if (rf & 2) {
|
|
531
545
|
const model_r18 = i0.ɵɵnextContext(2).$implicit;
|
|
@@ -536,34 +550,34 @@ function AIPromptFormComponentExtended_form_2_Conditional_41_Conditional_5_Condi
|
|
|
536
550
|
i0.ɵɵadvance();
|
|
537
551
|
i0.ɵɵconditional(ctx_r1.getModelVendorStatus(model_r18.ModelID, model_r18.VendorID) !== "Active" ? 2 : -1);
|
|
538
552
|
} }
|
|
539
|
-
function
|
|
540
|
-
i0.ɵɵelementStart(0, "span",
|
|
553
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_9_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
554
|
+
i0.ɵɵelementStart(0, "span", 132);
|
|
541
555
|
i0.ɵɵtext(1, "-");
|
|
542
556
|
i0.ɵɵelementEnd();
|
|
543
557
|
} }
|
|
544
|
-
function
|
|
545
|
-
i0.ɵɵtemplate(0,
|
|
558
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
559
|
+
i0.ɵɵtemplate(0, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_9_Conditional_0_Template, 3, 4, "span", 131)(1, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_9_Conditional_1_Template, 2, 0, "span", 132);
|
|
546
560
|
} if (rf & 2) {
|
|
547
561
|
const model_r18 = i0.ɵɵnextContext().$implicit;
|
|
548
562
|
i0.ɵɵconditional(model_r18.VendorID && model_r18.ModelID ? 0 : 1);
|
|
549
563
|
} }
|
|
550
|
-
function
|
|
551
|
-
i0.ɵɵelementStart(0, "div",
|
|
552
|
-
i0.ɵɵelement(1, "i",
|
|
564
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_11_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
565
|
+
i0.ɵɵelementStart(0, "div", 133);
|
|
566
|
+
i0.ɵɵelement(1, "i", 56);
|
|
553
567
|
i0.ɵɵtext(2, " Loading... ");
|
|
554
568
|
i0.ɵɵelementEnd();
|
|
555
569
|
} }
|
|
556
|
-
function
|
|
557
|
-
i0.ɵɵelementStart(0, "div",
|
|
570
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_11_Conditional_1_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
571
|
+
i0.ɵɵelementStart(0, "div", 137);
|
|
558
572
|
i0.ɵɵtext(1, " No configurations available ");
|
|
559
573
|
i0.ɵɵelementEnd();
|
|
560
574
|
} }
|
|
561
|
-
function
|
|
575
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_11_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
562
576
|
const _r22 = i0.ɵɵgetCurrentView();
|
|
563
|
-
i0.ɵɵelementStart(0, "kendo-dropdownlist",
|
|
564
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
565
|
-
i0.ɵɵlistener("valueChange", function
|
|
566
|
-
i0.ɵɵtemplate(1,
|
|
577
|
+
i0.ɵɵelementStart(0, "kendo-dropdownlist", 135);
|
|
578
|
+
i0.ɵɵtwoWayListener("ngModelChange", function AIPromptFormComponentExtended_form_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); });
|
|
579
|
+
i0.ɵɵlistener("valueChange", function AIPromptFormComponentExtended_form_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_313_r16 = i0.ɵɵnextContext(2).$index; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.onConfigurationChange($event, ɵ$index_313_r16)); });
|
|
580
|
+
i0.ɵɵtemplate(1, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_11_Conditional_1_ng_template_1_Template, 2, 0, "ng-template", 136);
|
|
567
581
|
i0.ɵɵelementEnd();
|
|
568
582
|
} if (rf & 2) {
|
|
569
583
|
const model_r18 = i0.ɵɵnextContext(2).$implicit;
|
|
@@ -571,14 +585,14 @@ function AIPromptFormComponentExtended_form_2_Conditional_41_Conditional_5_Condi
|
|
|
571
585
|
i0.ɵɵtwoWayProperty("ngModel", model_r18.ConfigurationID);
|
|
572
586
|
i0.ɵɵproperty("name", "configurationId_" + ctx_r1.getModelTrackId(model_r18))("data", ctx_r1.availableConfigurations)("valuePrimitive", true)("filterable", true);
|
|
573
587
|
} }
|
|
574
|
-
function
|
|
575
|
-
i0.ɵɵtemplate(0,
|
|
588
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
589
|
+
i0.ɵɵtemplate(0, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_11_Conditional_0_Template, 3, 0, "div", 133)(1, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_11_Conditional_1_Template, 2, 5, "kendo-dropdownlist", 134);
|
|
576
590
|
} if (rf & 2) {
|
|
577
591
|
const ctx_r1 = i0.ɵɵnextContext(6);
|
|
578
592
|
i0.ɵɵconditional(ctx_r1.isLoadingConfigurations ? 0 : 1);
|
|
579
593
|
} }
|
|
580
|
-
function
|
|
581
|
-
i0.ɵɵelementStart(0, "span",
|
|
594
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
595
|
+
i0.ɵɵelementStart(0, "span", 113);
|
|
582
596
|
i0.ɵɵtext(1);
|
|
583
597
|
i0.ɵɵelementEnd();
|
|
584
598
|
} if (rf & 2) {
|
|
@@ -587,8 +601,8 @@ function AIPromptFormComponentExtended_form_2_Conditional_41_Conditional_5_Condi
|
|
|
587
601
|
i0.ɵɵadvance();
|
|
588
602
|
i0.ɵɵtextInterpolate(ctx_r1.getConfigurationDisplayName(model_r18.ConfigurationID));
|
|
589
603
|
} }
|
|
590
|
-
function
|
|
591
|
-
i0.ɵɵelementStart(0, "span",
|
|
604
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
605
|
+
i0.ɵɵelementStart(0, "span", 115);
|
|
592
606
|
i0.ɵɵtext(1);
|
|
593
607
|
i0.ɵɵpipe(2, "date");
|
|
594
608
|
i0.ɵɵelementEnd();
|
|
@@ -597,40 +611,40 @@ function AIPromptFormComponentExtended_form_2_Conditional_41_Conditional_5_Condi
|
|
|
597
611
|
i0.ɵɵadvance();
|
|
598
612
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(2, 1, model_r18.__mj_CreatedAt, "short"));
|
|
599
613
|
} }
|
|
600
|
-
function
|
|
601
|
-
i0.ɵɵelementStart(0, "span",
|
|
614
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
615
|
+
i0.ɵɵelementStart(0, "span", 116);
|
|
602
616
|
i0.ɵɵtext(1, "New");
|
|
603
617
|
i0.ɵɵelementEnd();
|
|
604
618
|
} }
|
|
605
|
-
function
|
|
619
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_17_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
606
620
|
const _r23 = i0.ɵɵgetCurrentView();
|
|
607
|
-
i0.ɵɵelementStart(0, "button",
|
|
608
|
-
i0.ɵɵlistener("click", function
|
|
609
|
-
i0.ɵɵelement(1, "i",
|
|
621
|
+
i0.ɵɵelementStart(0, "button", 140);
|
|
622
|
+
i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_17_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r23); const ɵ$index_313_r16 = i0.ɵɵnextContext(2).$index; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.moveModelUp(ɵ$index_313_r16)); });
|
|
623
|
+
i0.ɵɵelement(1, "i", 141);
|
|
610
624
|
i0.ɵɵelementEnd();
|
|
611
|
-
i0.ɵɵelementStart(2, "button",
|
|
612
|
-
i0.ɵɵlistener("click", function
|
|
613
|
-
i0.ɵɵelement(3, "i",
|
|
625
|
+
i0.ɵɵelementStart(2, "button", 142);
|
|
626
|
+
i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_17_Conditional_1_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r23); const ɵ$index_313_r16 = i0.ɵɵnextContext(2).$index; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.moveModelDown(ɵ$index_313_r16)); });
|
|
627
|
+
i0.ɵɵelement(3, "i", 143);
|
|
614
628
|
i0.ɵɵelementEnd();
|
|
615
629
|
} if (rf & 2) {
|
|
616
|
-
const ɵ$
|
|
630
|
+
const ɵ$index_313_r16 = i0.ɵɵnextContext(2).$index;
|
|
617
631
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
618
|
-
i0.ɵɵproperty("disabled", ɵ$
|
|
632
|
+
i0.ɵɵproperty("disabled", ɵ$index_313_r16 === 0);
|
|
619
633
|
i0.ɵɵadvance(2);
|
|
620
|
-
i0.ɵɵproperty("disabled", ɵ$
|
|
634
|
+
i0.ɵɵproperty("disabled", ɵ$index_313_r16 === ctx_r1.promptModels.length - 1);
|
|
621
635
|
} }
|
|
622
|
-
function
|
|
636
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_17_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
623
637
|
const _r24 = i0.ɵɵgetCurrentView();
|
|
624
|
-
i0.ɵɵelementStart(0, "button",
|
|
625
|
-
i0.ɵɵlistener("click", function
|
|
626
|
-
i0.ɵɵelement(1, "i",
|
|
638
|
+
i0.ɵɵelementStart(0, "button", 144);
|
|
639
|
+
i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_17_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r24); const ɵ$index_313_r16 = i0.ɵɵnextContext(2).$index; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.removePromptModel(ɵ$index_313_r16)); });
|
|
640
|
+
i0.ɵɵelement(1, "i", 145);
|
|
627
641
|
i0.ɵɵelementEnd();
|
|
628
642
|
} }
|
|
629
|
-
function
|
|
630
|
-
i0.ɵɵelementStart(0, "div",
|
|
631
|
-
i0.ɵɵtemplate(1,
|
|
643
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
644
|
+
i0.ɵɵelementStart(0, "div", 138);
|
|
645
|
+
i0.ɵɵtemplate(1, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_17_Conditional_1_Template, 4, 2);
|
|
632
646
|
i0.ɵɵelementEnd();
|
|
633
|
-
i0.ɵɵtemplate(2,
|
|
647
|
+
i0.ɵɵtemplate(2, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_17_Conditional_2_Template, 2, 0, "button", 139);
|
|
634
648
|
} if (rf & 2) {
|
|
635
649
|
const ctx_r1 = i0.ɵɵnextContext(6);
|
|
636
650
|
i0.ɵɵadvance();
|
|
@@ -638,7 +652,7 @@ function AIPromptFormComponentExtended_form_2_Conditional_41_Conditional_5_Condi
|
|
|
638
652
|
i0.ɵɵadvance();
|
|
639
653
|
i0.ɵɵconditional(ctx_r1.UserCanDeletePromptModels ? 2 : -1);
|
|
640
654
|
} }
|
|
641
|
-
function
|
|
655
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
642
656
|
i0.ɵɵelementStart(0, "span")(1, "strong");
|
|
643
657
|
i0.ɵɵtext(2, "Status:");
|
|
644
658
|
i0.ɵɵelementEnd();
|
|
@@ -649,61 +663,61 @@ function AIPromptFormComponentExtended_form_2_Conditional_41_Conditional_5_Condi
|
|
|
649
663
|
i0.ɵɵadvance(3);
|
|
650
664
|
i0.ɵɵtextInterpolate1(" ", model_r18.Status, "");
|
|
651
665
|
} }
|
|
652
|
-
function
|
|
666
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_23_Conditional_4_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
653
667
|
const _r26 = i0.ɵɵgetCurrentView();
|
|
654
|
-
i0.ɵɵelementStart(0, "div")(1, "label",
|
|
668
|
+
i0.ɵɵelementStart(0, "div")(1, "label", 150);
|
|
655
669
|
i0.ɵɵtext(2, "Parallel Count");
|
|
656
670
|
i0.ɵɵelementEnd();
|
|
657
|
-
i0.ɵɵelementStart(3, "kendo-numerictextbox",
|
|
658
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
671
|
+
i0.ɵɵelementStart(3, "kendo-numerictextbox", 152);
|
|
672
|
+
i0.ɵɵtwoWayListener("ngModelChange", function AIPromptFormComponentExtended_form_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); });
|
|
659
673
|
i0.ɵɵelementEnd()();
|
|
660
674
|
} if (rf & 2) {
|
|
661
675
|
const ctx_r16 = i0.ɵɵnextContext(3);
|
|
662
676
|
const model_r18 = ctx_r16.$implicit;
|
|
663
|
-
const ɵ$
|
|
677
|
+
const ɵ$index_313_r16 = ctx_r16.$index;
|
|
664
678
|
i0.ɵɵadvance(3);
|
|
665
679
|
i0.ɵɵtwoWayProperty("ngModel", model_r18.ParallelCount);
|
|
666
|
-
i0.ɵɵproperty("name", "parallelCount_" + ɵ$
|
|
680
|
+
i0.ɵɵproperty("name", "parallelCount_" + ɵ$index_313_r16)("min", 1)("step", 1)("format", "n0");
|
|
667
681
|
} }
|
|
668
|
-
function
|
|
682
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_23_Conditional_4_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
669
683
|
const _r27 = i0.ɵɵgetCurrentView();
|
|
670
|
-
i0.ɵɵelementStart(0, "div")(1, "label",
|
|
684
|
+
i0.ɵɵelementStart(0, "div")(1, "label", 150);
|
|
671
685
|
i0.ɵɵtext(2, "Config Parameter");
|
|
672
686
|
i0.ɵɵelementEnd();
|
|
673
|
-
i0.ɵɵelementStart(3, "kendo-textbox",
|
|
674
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
687
|
+
i0.ɵɵelementStart(3, "kendo-textbox", 153);
|
|
688
|
+
i0.ɵɵtwoWayListener("ngModelChange", function AIPromptFormComponentExtended_form_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); });
|
|
675
689
|
i0.ɵɵelementEnd()();
|
|
676
690
|
} if (rf & 2) {
|
|
677
691
|
const ctx_r16 = i0.ɵɵnextContext(3);
|
|
678
692
|
const model_r18 = ctx_r16.$implicit;
|
|
679
|
-
const ɵ$
|
|
693
|
+
const ɵ$index_313_r16 = ctx_r16.$index;
|
|
680
694
|
i0.ɵɵadvance(3);
|
|
681
695
|
i0.ɵɵtwoWayProperty("ngModel", model_r18.ParallelConfigParam);
|
|
682
|
-
i0.ɵɵproperty("name", "parallelConfigParam_" + ɵ$
|
|
696
|
+
i0.ɵɵproperty("name", "parallelConfigParam_" + ɵ$index_313_r16);
|
|
683
697
|
} }
|
|
684
|
-
function
|
|
698
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_23_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
685
699
|
const _r25 = i0.ɵɵgetCurrentView();
|
|
686
|
-
i0.ɵɵelementStart(0, "div",
|
|
700
|
+
i0.ɵɵelementStart(0, "div", 148)(1, "div")(2, "label", 150);
|
|
687
701
|
i0.ɵɵtext(3, "Parallel Mode");
|
|
688
702
|
i0.ɵɵelementEnd();
|
|
689
|
-
i0.ɵɵelementStart(4, "kendo-dropdownlist",
|
|
690
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
703
|
+
i0.ɵɵelementStart(4, "kendo-dropdownlist", 151);
|
|
704
|
+
i0.ɵɵtwoWayListener("ngModelChange", function AIPromptFormComponentExtended_form_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); });
|
|
691
705
|
i0.ɵɵelementEnd()();
|
|
692
|
-
i0.ɵɵtemplate(5,
|
|
706
|
+
i0.ɵɵtemplate(5, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_23_Conditional_4_Conditional_5_Template, 4, 5, "div")(6, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_23_Conditional_4_Conditional_6_Template, 4, 2, "div");
|
|
693
707
|
i0.ɵɵelementEnd();
|
|
694
708
|
} if (rf & 2) {
|
|
695
709
|
const ctx_r16 = i0.ɵɵnextContext(2);
|
|
696
710
|
const model_r18 = ctx_r16.$implicit;
|
|
697
|
-
const ɵ$
|
|
711
|
+
const ɵ$index_313_r16 = ctx_r16.$index;
|
|
698
712
|
i0.ɵɵadvance(4);
|
|
699
713
|
i0.ɵɵtwoWayProperty("ngModel", model_r18.ParallelizationMode);
|
|
700
|
-
i0.ɵɵproperty("name", "parallelMode_" + ɵ$
|
|
714
|
+
i0.ɵɵproperty("name", "parallelMode_" + ɵ$index_313_r16)("data", i0.ɵɵpureFunction3(9, _c4, i0.ɵɵpureFunction0(6, _c5), i0.ɵɵpureFunction0(7, _c6), i0.ɵɵpureFunction0(8, _c7)))("valuePrimitive", true);
|
|
701
715
|
i0.ɵɵadvance();
|
|
702
716
|
i0.ɵɵconditional(model_r18.ParallelizationMode === "StaticCount" ? 5 : -1);
|
|
703
717
|
i0.ɵɵadvance();
|
|
704
718
|
i0.ɵɵconditional(model_r18.ParallelizationMode === "ConfigParam" ? 6 : -1);
|
|
705
719
|
} }
|
|
706
|
-
function
|
|
720
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_23_Conditional_5_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
707
721
|
i0.ɵɵelementStart(0, "span")(1, "strong");
|
|
708
722
|
i0.ɵɵtext(2, "Parallel Mode:");
|
|
709
723
|
i0.ɵɵelementEnd();
|
|
@@ -714,7 +728,7 @@ function AIPromptFormComponentExtended_form_2_Conditional_41_Conditional_5_Condi
|
|
|
714
728
|
i0.ɵɵadvance(3);
|
|
715
729
|
i0.ɵɵtextInterpolate1(" ", model_r18.ParallelizationMode, "");
|
|
716
730
|
} }
|
|
717
|
-
function
|
|
731
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_23_Conditional_5_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
718
732
|
i0.ɵɵelementStart(0, "span")(1, "strong");
|
|
719
733
|
i0.ɵɵtext(2, "Parallel Count:");
|
|
720
734
|
i0.ɵɵelementEnd();
|
|
@@ -725,7 +739,7 @@ function AIPromptFormComponentExtended_form_2_Conditional_41_Conditional_5_Condi
|
|
|
725
739
|
i0.ɵɵadvance(3);
|
|
726
740
|
i0.ɵɵtextInterpolate1(" ", model_r18.ParallelCount, "");
|
|
727
741
|
} }
|
|
728
|
-
function
|
|
742
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_23_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
729
743
|
i0.ɵɵelementStart(0, "span")(1, "strong");
|
|
730
744
|
i0.ɵɵtext(2, "Config Param:");
|
|
731
745
|
i0.ɵɵelementEnd();
|
|
@@ -736,9 +750,9 @@ function AIPromptFormComponentExtended_form_2_Conditional_41_Conditional_5_Condi
|
|
|
736
750
|
i0.ɵɵadvance(3);
|
|
737
751
|
i0.ɵɵtextInterpolate1(" ", model_r18.ParallelConfigParam, "");
|
|
738
752
|
} }
|
|
739
|
-
function
|
|
740
|
-
i0.ɵɵelementStart(0, "div",
|
|
741
|
-
i0.ɵɵtemplate(1,
|
|
753
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_23_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
754
|
+
i0.ɵɵelementStart(0, "div", 149);
|
|
755
|
+
i0.ɵɵtemplate(1, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_23_Conditional_5_Conditional_1_Template, 4, 1, "span")(2, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_23_Conditional_5_Conditional_2_Template, 4, 1, "span")(3, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_23_Conditional_5_Conditional_3_Template, 4, 1, "span");
|
|
742
756
|
i0.ɵɵelementEnd();
|
|
743
757
|
} if (rf & 2) {
|
|
744
758
|
const model_r18 = i0.ɵɵnextContext(2).$implicit;
|
|
@@ -749,52 +763,52 @@ function AIPromptFormComponentExtended_form_2_Conditional_41_Conditional_5_Condi
|
|
|
749
763
|
i0.ɵɵadvance();
|
|
750
764
|
i0.ɵɵconditional(model_r18.ParallelConfigParam ? 3 : -1);
|
|
751
765
|
} }
|
|
752
|
-
function
|
|
753
|
-
i0.ɵɵelementStart(0, "div",
|
|
754
|
-
i0.ɵɵelement(2, "i",
|
|
766
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
767
|
+
i0.ɵɵelementStart(0, "div", 120)(1, "div", 146);
|
|
768
|
+
i0.ɵɵelement(2, "i", 147);
|
|
755
769
|
i0.ɵɵtext(3, " Model-Specific Parallel Execution ");
|
|
756
770
|
i0.ɵɵelementEnd();
|
|
757
|
-
i0.ɵɵtemplate(4,
|
|
771
|
+
i0.ɵɵtemplate(4, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_23_Conditional_4_Template, 7, 13, "div", 148)(5, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_23_Conditional_5_Template, 4, 3, "div", 149);
|
|
758
772
|
i0.ɵɵelementEnd();
|
|
759
773
|
} if (rf & 2) {
|
|
760
774
|
const ctx_r1 = i0.ɵɵnextContext(6);
|
|
761
775
|
i0.ɵɵadvance(4);
|
|
762
776
|
i0.ɵɵconditional(ctx_r1.EditMode ? 4 : 5);
|
|
763
777
|
} }
|
|
764
|
-
function
|
|
778
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Template(rf, ctx) { if (rf & 1) {
|
|
765
779
|
const _r15 = i0.ɵɵgetCurrentView();
|
|
766
|
-
i0.ɵɵelementStart(0, "div",
|
|
767
|
-
i0.ɵɵlistener("dragstart", function
|
|
768
|
-
i0.ɵɵelementStart(1, "div",
|
|
769
|
-
i0.ɵɵtemplate(2,
|
|
780
|
+
i0.ɵɵelementStart(0, "div", 106);
|
|
781
|
+
i0.ɵɵlistener("dragstart", function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Template_div_dragstart_0_listener($event) { const ɵ$index_313_r16 = i0.ɵɵrestoreView(_r15).$index; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.onDragStart($event, ɵ$index_313_r16)); })("dragover", function AIPromptFormComponentExtended_form_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 AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Template_div_drop_0_listener($event) { const ɵ$index_313_r16 = i0.ɵɵrestoreView(_r15).$index; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.onDrop($event, ɵ$index_313_r16)); })("dragend", function AIPromptFormComponentExtended_form_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)); });
|
|
782
|
+
i0.ɵɵelementStart(1, "div", 107);
|
|
783
|
+
i0.ɵɵtemplate(2, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_2_Template, 3, 1)(3, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_3_Template, 2, 3, "span", 108);
|
|
770
784
|
i0.ɵɵelementEnd();
|
|
771
|
-
i0.ɵɵelementStart(4, "div",
|
|
772
|
-
i0.ɵɵtemplate(5,
|
|
785
|
+
i0.ɵɵelementStart(4, "div", 109);
|
|
786
|
+
i0.ɵɵtemplate(5, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_5_Template, 1, 5, "kendo-dropdownlist", 110)(6, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_6_Template, 2, 1, "span", 24);
|
|
773
787
|
i0.ɵɵelementEnd();
|
|
774
|
-
i0.ɵɵelementStart(7, "div",
|
|
775
|
-
i0.ɵɵtemplate(8,
|
|
788
|
+
i0.ɵɵelementStart(7, "div", 111);
|
|
789
|
+
i0.ɵɵtemplate(8, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_8_Template, 2, 1)(9, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_9_Template, 2, 1);
|
|
776
790
|
i0.ɵɵelementEnd();
|
|
777
|
-
i0.ɵɵelementStart(10, "div",
|
|
778
|
-
i0.ɵɵtemplate(11,
|
|
791
|
+
i0.ɵɵelementStart(10, "div", 112);
|
|
792
|
+
i0.ɵɵtemplate(11, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_11_Template, 2, 1)(12, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_12_Template, 2, 1, "span", 113);
|
|
779
793
|
i0.ɵɵelementEnd();
|
|
780
|
-
i0.ɵɵelementStart(13, "div",
|
|
781
|
-
i0.ɵɵtemplate(14,
|
|
794
|
+
i0.ɵɵelementStart(13, "div", 114);
|
|
795
|
+
i0.ɵɵtemplate(14, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_14_Template, 3, 4, "span", 115)(15, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_15_Template, 2, 0, "span", 116);
|
|
782
796
|
i0.ɵɵelementEnd();
|
|
783
|
-
i0.ɵɵelementStart(16, "div",
|
|
784
|
-
i0.ɵɵtemplate(17,
|
|
797
|
+
i0.ɵɵelementStart(16, "div", 117);
|
|
798
|
+
i0.ɵɵtemplate(17, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_17_Template, 3, 2);
|
|
785
799
|
i0.ɵɵelementEnd()();
|
|
786
|
-
i0.ɵɵelementStart(18, "div",
|
|
800
|
+
i0.ɵɵelementStart(18, "div", 118);
|
|
787
801
|
i0.ɵɵelement(19, "div");
|
|
788
|
-
i0.ɵɵelementStart(20, "div")(21, "div",
|
|
789
|
-
i0.ɵɵtemplate(22,
|
|
802
|
+
i0.ɵɵelementStart(20, "div")(21, "div", 119);
|
|
803
|
+
i0.ɵɵtemplate(22, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_22_Template, 4, 1, "span");
|
|
790
804
|
i0.ɵɵelementEnd();
|
|
791
|
-
i0.ɵɵtemplate(23,
|
|
805
|
+
i0.ɵɵtemplate(23, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Conditional_23_Template, 6, 1, "div", 120);
|
|
792
806
|
i0.ɵɵelementEnd()();
|
|
793
807
|
} if (rf & 2) {
|
|
794
808
|
const model_r18 = ctx.$implicit;
|
|
795
|
-
const ɵ$
|
|
809
|
+
const ɵ$index_313_r16 = ctx.$index;
|
|
796
810
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
797
|
-
i0.ɵɵstyleProp("background", !model_r18.ModelID ? "#fff3cd" : ctx_r1.draggedIndex === ɵ$
|
|
811
|
+
i0.ɵɵstyleProp("background", !model_r18.ModelID ? "#fff3cd" : ctx_r1.draggedIndex === ɵ$index_313_r16 ? "#e3f2fd" : "white")("border-left", !model_r18.ModelID ? "3px solid #ffc107" : "none")("opacity", ctx_r1.draggedIndex === ɵ$index_313_r16 ? "0.5" : "1");
|
|
798
812
|
i0.ɵɵproperty("draggable", ctx_r1.EditMode);
|
|
799
813
|
i0.ɵɵadvance(2);
|
|
800
814
|
i0.ɵɵconditional(ctx_r1.EditMode ? 2 : 3);
|
|
@@ -813,22 +827,22 @@ function AIPromptFormComponentExtended_form_2_Conditional_41_Conditional_5_Condi
|
|
|
813
827
|
i0.ɵɵadvance();
|
|
814
828
|
i0.ɵɵconditional(ctx_r1.record.ParallelizationMode === "ModelSpecific" ? 23 : -1);
|
|
815
829
|
} }
|
|
816
|
-
function
|
|
830
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
817
831
|
const _r28 = i0.ɵɵgetCurrentView();
|
|
818
|
-
i0.ɵɵelementStart(0, "div",
|
|
819
|
-
i0.ɵɵlistener("click", function
|
|
820
|
-
i0.ɵɵelement(2, "i",
|
|
832
|
+
i0.ɵɵelementStart(0, "div", 104)(1, "button", 154);
|
|
833
|
+
i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_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()); });
|
|
834
|
+
i0.ɵɵelement(2, "i", 75);
|
|
821
835
|
i0.ɵɵtext(3, " Add Model ");
|
|
822
836
|
i0.ɵɵelementEnd()();
|
|
823
837
|
} }
|
|
824
|
-
function
|
|
825
|
-
i0.ɵɵtemplate(0,
|
|
826
|
-
i0.ɵɵelementStart(1, "div",
|
|
827
|
-
i0.ɵɵelement(3, "i",
|
|
838
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
839
|
+
i0.ɵɵtemplate(0, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_Conditional_0_Template, 3, 0, "div", 100);
|
|
840
|
+
i0.ɵɵelementStart(1, "div", 101)(2, "div", 102);
|
|
841
|
+
i0.ɵɵelement(3, "i", 103);
|
|
828
842
|
i0.ɵɵelementEnd();
|
|
829
843
|
i0.ɵɵelementStart(4, "div");
|
|
830
844
|
i0.ɵɵtext(5, "AI Model ");
|
|
831
|
-
i0.ɵɵelementStart(6, "span",
|
|
845
|
+
i0.ɵɵelementStart(6, "span", 53);
|
|
832
846
|
i0.ɵɵtext(7, "*");
|
|
833
847
|
i0.ɵɵelementEnd()();
|
|
834
848
|
i0.ɵɵelementStart(8, "div");
|
|
@@ -843,8 +857,8 @@ function AIPromptFormComponentExtended_form_2_Conditional_41_Conditional_5_Condi
|
|
|
843
857
|
i0.ɵɵelementStart(14, "div");
|
|
844
858
|
i0.ɵɵtext(15, "Actions");
|
|
845
859
|
i0.ɵɵelementEnd()();
|
|
846
|
-
i0.ɵɵrepeaterCreate(16,
|
|
847
|
-
i0.ɵɵtemplate(18,
|
|
860
|
+
i0.ɵɵrepeaterCreate(16, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_For_17_Template, 24, 15, null, null, _forTrack0, true);
|
|
861
|
+
i0.ɵɵtemplate(18, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_Conditional_18_Template, 4, 0, "div", 104);
|
|
848
862
|
} if (rf & 2) {
|
|
849
863
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
850
864
|
i0.ɵɵconditional(ctx_r1.promptModels.length > 1 ? 0 : -1);
|
|
@@ -853,17 +867,17 @@ function AIPromptFormComponentExtended_form_2_Conditional_41_Conditional_5_Condi
|
|
|
853
867
|
i0.ɵɵadvance(2);
|
|
854
868
|
i0.ɵɵconditional(ctx_r1.EditMode && ctx_r1.UserCanCreatePromptModels ? 18 : -1);
|
|
855
869
|
} }
|
|
856
|
-
function
|
|
857
|
-
i0.ɵɵtemplate(0,
|
|
870
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
871
|
+
i0.ɵɵtemplate(0, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_0_Template, 4, 1, "div", 96)(1, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Conditional_1_Template, 19, 2);
|
|
858
872
|
} if (rf & 2) {
|
|
859
873
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
860
874
|
i0.ɵɵconditional(ctx_r1.promptModels.length === 0 ? 0 : 1);
|
|
861
875
|
} }
|
|
862
|
-
function
|
|
876
|
+
function AIPromptFormComponentExtended_form_2_Conditional_42_Template(rf, ctx) { if (rf & 1) {
|
|
863
877
|
i0.ɵɵelementStart(0, "kendo-expansionpanel", 30);
|
|
864
|
-
i0.ɵɵtemplate(1,
|
|
865
|
-
i0.ɵɵelementStart(2, "div", 37)(3, "div",
|
|
866
|
-
i0.ɵɵtemplate(4,
|
|
878
|
+
i0.ɵɵtemplate(1, AIPromptFormComponentExtended_form_2_Conditional_42_ng_template_1_Template, 7, 1, "ng-template", 31);
|
|
879
|
+
i0.ɵɵelementStart(2, "div", 37)(3, "div", 90);
|
|
880
|
+
i0.ɵɵtemplate(4, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_4_Template, 3, 0, "div", 91)(5, AIPromptFormComponentExtended_form_2_Conditional_42_Conditional_5_Template, 2, 1);
|
|
867
881
|
i0.ɵɵelementEnd()()();
|
|
868
882
|
} if (rf & 2) {
|
|
869
883
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -871,49 +885,49 @@ function AIPromptFormComponentExtended_form_2_Conditional_41_Template(rf, ctx) {
|
|
|
871
885
|
i0.ɵɵadvance(4);
|
|
872
886
|
i0.ɵɵconditional(ctx_r1.isLoadingModels ? 4 : 5);
|
|
873
887
|
} }
|
|
874
|
-
function
|
|
875
|
-
i0.ɵɵelementStart(0, "span",
|
|
876
|
-
i0.ɵɵelement(1, "i",
|
|
888
|
+
function AIPromptFormComponentExtended_form_2_ng_template_44_Template(rf, ctx) { if (rf & 1) {
|
|
889
|
+
i0.ɵɵelementStart(0, "span", 65);
|
|
890
|
+
i0.ɵɵelement(1, "i", 155);
|
|
877
891
|
i0.ɵɵtext(2, " Advanced Configuration ");
|
|
878
892
|
i0.ɵɵelementEnd();
|
|
879
893
|
} }
|
|
880
|
-
function
|
|
894
|
+
function AIPromptFormComponentExtended_form_2_Conditional_49_Template(rf, ctx) { if (rf & 1) {
|
|
881
895
|
i0.ɵɵelement(0, "mj-form-field", 40);
|
|
882
896
|
} if (rf & 2) {
|
|
883
897
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
884
898
|
i0.ɵɵproperty("record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode);
|
|
885
899
|
} }
|
|
886
|
-
function
|
|
900
|
+
function AIPromptFormComponentExtended_form_2_Conditional_50_Template(rf, ctx) { if (rf & 1) {
|
|
887
901
|
i0.ɵɵelement(0, "mj-form-field", 41);
|
|
888
902
|
} if (rf & 2) {
|
|
889
903
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
890
904
|
i0.ɵɵproperty("record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode);
|
|
891
905
|
} }
|
|
892
|
-
function
|
|
893
|
-
i0.ɵɵelementStart(0, "div",
|
|
894
|
-
i0.ɵɵelement(1, "i",
|
|
906
|
+
function AIPromptFormComponentExtended_form_2_Conditional_59_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
907
|
+
i0.ɵɵelementStart(0, "div", 156);
|
|
908
|
+
i0.ɵɵelement(1, "i", 56);
|
|
895
909
|
i0.ɵɵtext(2, " Loading prompts... ");
|
|
896
910
|
i0.ɵɵelementEnd();
|
|
897
911
|
} }
|
|
898
|
-
function
|
|
912
|
+
function AIPromptFormComponentExtended_form_2_Conditional_59_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
899
913
|
const _r29 = i0.ɵɵgetCurrentView();
|
|
900
|
-
i0.ɵɵelementStart(0, "kendo-dropdowntree",
|
|
901
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
902
|
-
i0.ɵɵlistener("valueChange", function
|
|
914
|
+
i0.ɵɵelementStart(0, "kendo-dropdowntree", 158);
|
|
915
|
+
i0.ɵɵtwoWayListener("ngModelChange", function AIPromptFormComponentExtended_form_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); });
|
|
916
|
+
i0.ɵɵlistener("valueChange", function AIPromptFormComponentExtended_form_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)); });
|
|
903
917
|
i0.ɵɵelementEnd();
|
|
904
918
|
} if (rf & 2) {
|
|
905
919
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
906
920
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.ResultSelectorPromptID);
|
|
907
921
|
i0.ɵɵproperty("data", ctx_r1.resultSelectorTreeData)("valuePrimitive", true)("filterable", true);
|
|
908
922
|
} }
|
|
909
|
-
function
|
|
910
|
-
i0.ɵɵtemplate(0,
|
|
923
|
+
function AIPromptFormComponentExtended_form_2_Conditional_59_Template(rf, ctx) { if (rf & 1) {
|
|
924
|
+
i0.ɵɵtemplate(0, AIPromptFormComponentExtended_form_2_Conditional_59_Conditional_0_Template, 3, 0, "div", 156)(1, AIPromptFormComponentExtended_form_2_Conditional_59_Conditional_1_Template, 1, 4, "kendo-dropdowntree", 157);
|
|
911
925
|
} if (rf & 2) {
|
|
912
926
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
913
927
|
i0.ɵɵconditional(ctx_r1.isLoadingResultSelectorData ? 0 : 1);
|
|
914
928
|
} }
|
|
915
|
-
function
|
|
916
|
-
i0.ɵɵelementStart(0, "span",
|
|
929
|
+
function AIPromptFormComponentExtended_form_2_Conditional_60_Template(rf, ctx) { if (rf & 1) {
|
|
930
|
+
i0.ɵɵelementStart(0, "span", 48);
|
|
917
931
|
i0.ɵɵtext(1);
|
|
918
932
|
i0.ɵɵelementEnd();
|
|
919
933
|
} if (rf & 2) {
|
|
@@ -921,15 +935,15 @@ function AIPromptFormComponentExtended_form_2_Conditional_58_Template(rf, ctx) {
|
|
|
921
935
|
i0.ɵɵadvance();
|
|
922
936
|
i0.ɵɵtextInterpolate(ctx_r1.getPromptDisplayName(ctx_r1.record.ResultSelectorPromptID || "") || "None selected");
|
|
923
937
|
} }
|
|
924
|
-
function
|
|
925
|
-
i0.ɵɵelementStart(0, "span",
|
|
926
|
-
i0.ɵɵelement(1, "i",
|
|
938
|
+
function AIPromptFormComponentExtended_form_2_Conditional_61_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
939
|
+
i0.ɵɵelementStart(0, "span", 65);
|
|
940
|
+
i0.ɵɵelement(1, "i", 159);
|
|
927
941
|
i0.ɵɵtext(2, " Template Parameters ");
|
|
928
|
-
i0.ɵɵelementStart(3, "span",
|
|
942
|
+
i0.ɵɵelementStart(3, "span", 160);
|
|
929
943
|
i0.ɵɵtext(4);
|
|
930
944
|
i0.ɵɵelementEnd();
|
|
931
|
-
i0.ɵɵelementStart(5, "span",
|
|
932
|
-
i0.ɵɵelement(6, "i",
|
|
945
|
+
i0.ɵɵelementStart(5, "span", 94);
|
|
946
|
+
i0.ɵɵelement(6, "i", 161);
|
|
933
947
|
i0.ɵɵtext(7, " Parameters defined in the template ");
|
|
934
948
|
i0.ɵɵelementEnd()();
|
|
935
949
|
} if (rf & 2) {
|
|
@@ -937,35 +951,35 @@ function AIPromptFormComponentExtended_form_2_Conditional_59_ng_template_1_Templ
|
|
|
937
951
|
i0.ɵɵadvance(4);
|
|
938
952
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.templateParams.length, " ");
|
|
939
953
|
} }
|
|
940
|
-
function
|
|
941
|
-
i0.ɵɵelementStart(0, "div",
|
|
942
|
-
i0.ɵɵelement(1, "i",
|
|
954
|
+
function AIPromptFormComponentExtended_form_2_Conditional_61_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
955
|
+
i0.ɵɵelementStart(0, "div", 91);
|
|
956
|
+
i0.ɵɵelement(1, "i", 56);
|
|
943
957
|
i0.ɵɵtext(2, " Loading template parameters... ");
|
|
944
958
|
i0.ɵɵelementEnd();
|
|
945
959
|
} }
|
|
946
|
-
function
|
|
947
|
-
i0.ɵɵelementStart(0, "div",
|
|
948
|
-
i0.ɵɵelement(1, "i",
|
|
960
|
+
function AIPromptFormComponentExtended_form_2_Conditional_61_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
961
|
+
i0.ɵɵelementStart(0, "div", 96);
|
|
962
|
+
i0.ɵɵelement(1, "i", 97);
|
|
949
963
|
i0.ɵɵtext(2, " This template has no parameters defined ");
|
|
950
964
|
i0.ɵɵelementEnd();
|
|
951
965
|
} }
|
|
952
|
-
function
|
|
953
|
-
i0.ɵɵelementStart(0, "span",
|
|
966
|
+
function AIPromptFormComponentExtended_form_2_Conditional_61_Conditional_5_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
967
|
+
i0.ɵɵelementStart(0, "span", 173);
|
|
954
968
|
i0.ɵɵtext(1, "*");
|
|
955
969
|
i0.ɵɵelementEnd();
|
|
956
970
|
} }
|
|
957
|
-
function
|
|
958
|
-
i0.ɵɵelementStart(0, "span",
|
|
971
|
+
function AIPromptFormComponentExtended_form_2_Conditional_61_Conditional_5_For_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
972
|
+
i0.ɵɵelementStart(0, "span", 175);
|
|
959
973
|
i0.ɵɵtext(1, "Required");
|
|
960
974
|
i0.ɵɵelementEnd();
|
|
961
975
|
} }
|
|
962
|
-
function
|
|
963
|
-
i0.ɵɵelementStart(0, "span",
|
|
976
|
+
function AIPromptFormComponentExtended_form_2_Conditional_61_Conditional_5_For_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
977
|
+
i0.ɵɵelementStart(0, "span", 176);
|
|
964
978
|
i0.ɵɵtext(1, "Optional");
|
|
965
979
|
i0.ɵɵelementEnd();
|
|
966
980
|
} }
|
|
967
|
-
function
|
|
968
|
-
i0.ɵɵelementStart(0, "p",
|
|
981
|
+
function AIPromptFormComponentExtended_form_2_Conditional_61_Conditional_5_For_2_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
982
|
+
i0.ɵɵelementStart(0, "p", 177);
|
|
969
983
|
i0.ɵɵtext(1);
|
|
970
984
|
i0.ɵɵelementEnd();
|
|
971
985
|
} if (rf & 2) {
|
|
@@ -973,11 +987,11 @@ function AIPromptFormComponentExtended_form_2_Conditional_59_Conditional_5_For_2
|
|
|
973
987
|
i0.ɵɵadvance();
|
|
974
988
|
i0.ɵɵtextInterpolate1(" ", param_r30.Description, " ");
|
|
975
989
|
} }
|
|
976
|
-
function
|
|
977
|
-
i0.ɵɵelementStart(0, "div",
|
|
990
|
+
function AIPromptFormComponentExtended_form_2_Conditional_61_Conditional_5_For_2_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
991
|
+
i0.ɵɵelementStart(0, "div", 182)(1, "label", 183);
|
|
978
992
|
i0.ɵɵtext(2, "Default Value");
|
|
979
993
|
i0.ɵɵelementEnd();
|
|
980
|
-
i0.ɵɵelementStart(3, "code",
|
|
994
|
+
i0.ɵɵelementStart(3, "code", 184);
|
|
981
995
|
i0.ɵɵtext(4);
|
|
982
996
|
i0.ɵɵelementEnd()();
|
|
983
997
|
} if (rf & 2) {
|
|
@@ -985,11 +999,11 @@ function AIPromptFormComponentExtended_form_2_Conditional_59_Conditional_5_For_2
|
|
|
985
999
|
i0.ɵɵadvance(4);
|
|
986
1000
|
i0.ɵɵtextInterpolate(param_r30.DefaultValue);
|
|
987
1001
|
} }
|
|
988
|
-
function
|
|
989
|
-
i0.ɵɵelementStart(0, "div",
|
|
1002
|
+
function AIPromptFormComponentExtended_form_2_Conditional_61_Conditional_5_For_2_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
1003
|
+
i0.ɵɵelementStart(0, "div", 182)(1, "label", 183);
|
|
990
1004
|
i0.ɵɵtext(2, "Entity");
|
|
991
1005
|
i0.ɵɵelementEnd();
|
|
992
|
-
i0.ɵɵelementStart(3, "span",
|
|
1006
|
+
i0.ɵɵelementStart(3, "span", 178);
|
|
993
1007
|
i0.ɵɵtext(4);
|
|
994
1008
|
i0.ɵɵelementEnd()();
|
|
995
1009
|
} if (rf & 2) {
|
|
@@ -997,19 +1011,19 @@ function AIPromptFormComponentExtended_form_2_Conditional_59_Conditional_5_For_2
|
|
|
997
1011
|
i0.ɵɵadvance(4);
|
|
998
1012
|
i0.ɵɵtextInterpolate(param_r30.Entity || "Entity ID: " + param_r30.EntityID);
|
|
999
1013
|
} }
|
|
1000
|
-
function
|
|
1014
|
+
function AIPromptFormComponentExtended_form_2_Conditional_61_Conditional_5_For_2_Conditional_20_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
1001
1015
|
i0.ɵɵtext(0);
|
|
1002
1016
|
} if (rf & 2) {
|
|
1003
1017
|
const param_r30 = i0.ɵɵnextContext(2).$implicit;
|
|
1004
1018
|
i0.ɵɵtextInterpolate1(" (", param_r30.LinkedParameterField, ") ");
|
|
1005
1019
|
} }
|
|
1006
|
-
function
|
|
1007
|
-
i0.ɵɵelementStart(0, "div",
|
|
1020
|
+
function AIPromptFormComponentExtended_form_2_Conditional_61_Conditional_5_For_2_Conditional_20_Template(rf, ctx) { if (rf & 1) {
|
|
1021
|
+
i0.ɵɵelementStart(0, "div", 182)(1, "label", 183);
|
|
1008
1022
|
i0.ɵɵtext(2, "Linked To");
|
|
1009
1023
|
i0.ɵɵelementEnd();
|
|
1010
|
-
i0.ɵɵelementStart(3, "span",
|
|
1024
|
+
i0.ɵɵelementStart(3, "span", 178);
|
|
1011
1025
|
i0.ɵɵtext(4);
|
|
1012
|
-
i0.ɵɵtemplate(5,
|
|
1026
|
+
i0.ɵɵtemplate(5, AIPromptFormComponentExtended_form_2_Conditional_61_Conditional_5_For_2_Conditional_20_Conditional_5_Template, 1, 1);
|
|
1013
1027
|
i0.ɵɵelementEnd()();
|
|
1014
1028
|
} if (rf & 2) {
|
|
1015
1029
|
const param_r30 = i0.ɵɵnextContext().$implicit;
|
|
@@ -1018,11 +1032,11 @@ function AIPromptFormComponentExtended_form_2_Conditional_59_Conditional_5_For_2
|
|
|
1018
1032
|
i0.ɵɵadvance();
|
|
1019
1033
|
i0.ɵɵconditional(param_r30.LinkedParameterField ? 5 : -1);
|
|
1020
1034
|
} }
|
|
1021
|
-
function
|
|
1022
|
-
i0.ɵɵelementStart(0, "div",
|
|
1035
|
+
function AIPromptFormComponentExtended_form_2_Conditional_61_Conditional_5_For_2_Conditional_21_Template(rf, ctx) { if (rf & 1) {
|
|
1036
|
+
i0.ɵɵelementStart(0, "div", 182)(1, "label", 183);
|
|
1023
1037
|
i0.ɵɵtext(2, "Filter");
|
|
1024
1038
|
i0.ɵɵelementEnd();
|
|
1025
|
-
i0.ɵɵelementStart(3, "code",
|
|
1039
|
+
i0.ɵɵelementStart(3, "code", 185);
|
|
1026
1040
|
i0.ɵɵtext(4);
|
|
1027
1041
|
i0.ɵɵelementEnd()();
|
|
1028
1042
|
} if (rf & 2) {
|
|
@@ -1030,11 +1044,11 @@ function AIPromptFormComponentExtended_form_2_Conditional_59_Conditional_5_For_2
|
|
|
1030
1044
|
i0.ɵɵadvance(4);
|
|
1031
1045
|
i0.ɵɵtextInterpolate(param_r30.ExtraFilter);
|
|
1032
1046
|
} }
|
|
1033
|
-
function
|
|
1034
|
-
i0.ɵɵelementStart(0, "div",
|
|
1047
|
+
function AIPromptFormComponentExtended_form_2_Conditional_61_Conditional_5_For_2_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
1048
|
+
i0.ɵɵelementStart(0, "div", 182)(1, "label", 183);
|
|
1035
1049
|
i0.ɵɵtext(2, "Record ID");
|
|
1036
1050
|
i0.ɵɵelementEnd();
|
|
1037
|
-
i0.ɵɵelementStart(3, "code",
|
|
1051
|
+
i0.ɵɵelementStart(3, "code", 178);
|
|
1038
1052
|
i0.ɵɵtext(4);
|
|
1039
1053
|
i0.ɵɵelementEnd()();
|
|
1040
1054
|
} if (rf & 2) {
|
|
@@ -1042,25 +1056,25 @@ function AIPromptFormComponentExtended_form_2_Conditional_59_Conditional_5_For_2
|
|
|
1042
1056
|
i0.ɵɵadvance(4);
|
|
1043
1057
|
i0.ɵɵtextInterpolate(param_r30.RecordID);
|
|
1044
1058
|
} }
|
|
1045
|
-
function
|
|
1046
|
-
i0.ɵɵelementStart(0, "div",
|
|
1047
|
-
i0.ɵɵelement(3, "i",
|
|
1048
|
-
i0.ɵɵelementStart(4, "h6",
|
|
1059
|
+
function AIPromptFormComponentExtended_form_2_Conditional_61_Conditional_5_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
1060
|
+
i0.ɵɵelementStart(0, "div", 168)(1, "div", 169)(2, "div", 170);
|
|
1061
|
+
i0.ɵɵelement(3, "i", 171);
|
|
1062
|
+
i0.ɵɵelementStart(4, "h6", 172);
|
|
1049
1063
|
i0.ɵɵtext(5);
|
|
1050
|
-
i0.ɵɵtemplate(6,
|
|
1064
|
+
i0.ɵɵtemplate(6, AIPromptFormComponentExtended_form_2_Conditional_61_Conditional_5_For_2_Conditional_6_Template, 2, 0, "span", 173);
|
|
1051
1065
|
i0.ɵɵelementEnd()();
|
|
1052
|
-
i0.ɵɵelementStart(7, "div",
|
|
1066
|
+
i0.ɵɵelementStart(7, "div", 170)(8, "span", 174);
|
|
1053
1067
|
i0.ɵɵtext(9);
|
|
1054
1068
|
i0.ɵɵelementEnd();
|
|
1055
|
-
i0.ɵɵtemplate(10,
|
|
1069
|
+
i0.ɵɵtemplate(10, AIPromptFormComponentExtended_form_2_Conditional_61_Conditional_5_For_2_Conditional_10_Template, 2, 0, "span", 175)(11, AIPromptFormComponentExtended_form_2_Conditional_61_Conditional_5_For_2_Conditional_11_Template, 2, 0, "span", 176);
|
|
1056
1070
|
i0.ɵɵelementEnd()();
|
|
1057
|
-
i0.ɵɵtemplate(12,
|
|
1058
|
-
i0.ɵɵelementStart(13, "div",
|
|
1059
|
-
i0.ɵɵelement(15, "i",
|
|
1071
|
+
i0.ɵɵtemplate(12, AIPromptFormComponentExtended_form_2_Conditional_61_Conditional_5_For_2_Conditional_12_Template, 2, 1, "p", 177);
|
|
1072
|
+
i0.ɵɵelementStart(13, "div", 178)(14, "span", 179);
|
|
1073
|
+
i0.ɵɵelement(15, "i", 180);
|
|
1060
1074
|
i0.ɵɵtext(16);
|
|
1061
1075
|
i0.ɵɵelementEnd()();
|
|
1062
|
-
i0.ɵɵelementStart(17, "div",
|
|
1063
|
-
i0.ɵɵtemplate(18,
|
|
1076
|
+
i0.ɵɵelementStart(17, "div", 181);
|
|
1077
|
+
i0.ɵɵtemplate(18, AIPromptFormComponentExtended_form_2_Conditional_61_Conditional_5_For_2_Conditional_18_Template, 5, 1, "div", 182)(19, AIPromptFormComponentExtended_form_2_Conditional_61_Conditional_5_For_2_Conditional_19_Template, 5, 1, "div", 182)(20, AIPromptFormComponentExtended_form_2_Conditional_61_Conditional_5_For_2_Conditional_20_Template, 6, 2, "div", 182)(21, AIPromptFormComponentExtended_form_2_Conditional_61_Conditional_5_For_2_Conditional_21_Template, 5, 1, "div", 182)(22, AIPromptFormComponentExtended_form_2_Conditional_61_Conditional_5_For_2_Conditional_22_Template, 5, 1, "div", 182);
|
|
1064
1078
|
i0.ɵɵelementEnd()();
|
|
1065
1079
|
} if (rf & 2) {
|
|
1066
1080
|
const param_r30 = ctx.$implicit;
|
|
@@ -1094,13 +1108,13 @@ function AIPromptFormComponentExtended_form_2_Conditional_59_Conditional_5_For_2
|
|
|
1094
1108
|
i0.ɵɵadvance();
|
|
1095
1109
|
i0.ɵɵconditional(param_r30.RecordID ? 22 : -1);
|
|
1096
1110
|
} }
|
|
1097
|
-
function
|
|
1098
|
-
i0.ɵɵelementStart(0, "div",
|
|
1099
|
-
i0.ɵɵrepeaterCreate(1,
|
|
1111
|
+
function AIPromptFormComponentExtended_form_2_Conditional_61_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
1112
|
+
i0.ɵɵelementStart(0, "div", 162);
|
|
1113
|
+
i0.ɵɵrepeaterCreate(1, AIPromptFormComponentExtended_form_2_Conditional_61_Conditional_5_For_2_Template, 23, 19, "div", 163, _forTrack1);
|
|
1100
1114
|
i0.ɵɵelementEnd();
|
|
1101
|
-
i0.ɵɵelementStart(3, "div",
|
|
1102
|
-
i0.ɵɵelement(5, "i",
|
|
1103
|
-
i0.ɵɵelementStart(6, "div",
|
|
1115
|
+
i0.ɵɵelementStart(3, "div", 164)(4, "div", 165);
|
|
1116
|
+
i0.ɵɵelement(5, "i", 166);
|
|
1117
|
+
i0.ɵɵelementStart(6, "div", 167)(7, "strong");
|
|
1104
1118
|
i0.ɵɵtext(8, "Using Template Parameters:");
|
|
1105
1119
|
i0.ɵɵelementEnd();
|
|
1106
1120
|
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. ");
|
|
@@ -1110,11 +1124,11 @@ function AIPromptFormComponentExtended_form_2_Conditional_59_Conditional_5_Templ
|
|
|
1110
1124
|
i0.ɵɵadvance();
|
|
1111
1125
|
i0.ɵɵrepeater(ctx_r1.templateParams);
|
|
1112
1126
|
} }
|
|
1113
|
-
function
|
|
1127
|
+
function AIPromptFormComponentExtended_form_2_Conditional_61_Template(rf, ctx) { if (rf & 1) {
|
|
1114
1128
|
i0.ɵɵelementStart(0, "kendo-expansionpanel", 30);
|
|
1115
|
-
i0.ɵɵtemplate(1,
|
|
1129
|
+
i0.ɵɵtemplate(1, AIPromptFormComponentExtended_form_2_Conditional_61_ng_template_1_Template, 8, 1, "ng-template", 31);
|
|
1116
1130
|
i0.ɵɵelementStart(2, "div", 37);
|
|
1117
|
-
i0.ɵɵtemplate(3,
|
|
1131
|
+
i0.ɵɵtemplate(3, AIPromptFormComponentExtended_form_2_Conditional_61_Conditional_3_Template, 3, 0, "div", 91)(4, AIPromptFormComponentExtended_form_2_Conditional_61_Conditional_4_Template, 3, 0, "div", 96)(5, AIPromptFormComponentExtended_form_2_Conditional_61_Conditional_5_Template, 10, 0);
|
|
1118
1132
|
i0.ɵɵelementEnd()();
|
|
1119
1133
|
} if (rf & 2) {
|
|
1120
1134
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1122,29 +1136,29 @@ function AIPromptFormComponentExtended_form_2_Conditional_59_Template(rf, ctx) {
|
|
|
1122
1136
|
i0.ɵɵadvance(3);
|
|
1123
1137
|
i0.ɵɵconditional(ctx_r1.isLoadingTemplateParams ? 3 : ctx_r1.templateParams.length === 0 ? 4 : 5);
|
|
1124
1138
|
} }
|
|
1125
|
-
function
|
|
1126
|
-
i0.ɵɵelementStart(0, "span",
|
|
1139
|
+
function AIPromptFormComponentExtended_form_2_Conditional_62_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
1140
|
+
i0.ɵɵelementStart(0, "span", 65);
|
|
1127
1141
|
i0.ɵɵelement(1, "i", 23);
|
|
1128
1142
|
i0.ɵɵtext(2, " Output Example (JSON) ");
|
|
1129
|
-
i0.ɵɵelementStart(3, "span",
|
|
1143
|
+
i0.ɵɵelementStart(3, "span", 189);
|
|
1130
1144
|
i0.ɵɵtext(4, "\u2022 Required for object output type");
|
|
1131
1145
|
i0.ɵɵelementEnd()();
|
|
1132
1146
|
} }
|
|
1133
|
-
function
|
|
1147
|
+
function AIPromptFormComponentExtended_form_2_Conditional_62_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1134
1148
|
const _r31 = i0.ɵɵgetCurrentView();
|
|
1135
|
-
i0.ɵɵelementStart(0, "mj-code-editor",
|
|
1136
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
1149
|
+
i0.ɵɵelementStart(0, "mj-code-editor", 190);
|
|
1150
|
+
i0.ɵɵtwoWayListener("ngModelChange", function AIPromptFormComponentExtended_form_2_Conditional_62_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); });
|
|
1137
1151
|
i0.ɵɵelementEnd();
|
|
1138
|
-
i0.ɵɵelementStart(1, "div",
|
|
1139
|
-
i0.ɵɵelement(2, "i",
|
|
1152
|
+
i0.ɵɵelementStart(1, "div", 191);
|
|
1153
|
+
i0.ɵɵelement(2, "i", 97);
|
|
1140
1154
|
i0.ɵɵtext(3, " Provide a JSON example that defines the expected structure for object output validation. ");
|
|
1141
1155
|
i0.ɵɵelementEnd();
|
|
1142
1156
|
} if (rf & 2) {
|
|
1143
1157
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1144
1158
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.record.OutputExample);
|
|
1145
1159
|
} }
|
|
1146
|
-
function
|
|
1147
|
-
i0.ɵɵelementStart(0, "div",
|
|
1160
|
+
function AIPromptFormComponentExtended_form_2_Conditional_62_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
1161
|
+
i0.ɵɵelementStart(0, "div", 187);
|
|
1148
1162
|
i0.ɵɵtext(1);
|
|
1149
1163
|
i0.ɵɵelementEnd();
|
|
1150
1164
|
} if (rf & 2) {
|
|
@@ -1152,17 +1166,17 @@ function AIPromptFormComponentExtended_form_2_Conditional_60_Conditional_4_Templ
|
|
|
1152
1166
|
i0.ɵɵadvance();
|
|
1153
1167
|
i0.ɵɵtextInterpolate(ctx_r1.record.OutputExample);
|
|
1154
1168
|
} }
|
|
1155
|
-
function
|
|
1156
|
-
i0.ɵɵelementStart(0, "div",
|
|
1157
|
-
i0.ɵɵelement(1, "i",
|
|
1169
|
+
function AIPromptFormComponentExtended_form_2_Conditional_62_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
1170
|
+
i0.ɵɵelementStart(0, "div", 188);
|
|
1171
|
+
i0.ɵɵelement(1, "i", 192);
|
|
1158
1172
|
i0.ɵɵtext(2, " Output example is required when output type is 'object' ");
|
|
1159
1173
|
i0.ɵɵelementEnd();
|
|
1160
1174
|
} }
|
|
1161
|
-
function
|
|
1175
|
+
function AIPromptFormComponentExtended_form_2_Conditional_62_Template(rf, ctx) { if (rf & 1) {
|
|
1162
1176
|
i0.ɵɵelementStart(0, "kendo-expansionpanel", 30);
|
|
1163
|
-
i0.ɵɵtemplate(1,
|
|
1164
|
-
i0.ɵɵelementStart(2, "div",
|
|
1165
|
-
i0.ɵɵtemplate(3,
|
|
1177
|
+
i0.ɵɵtemplate(1, AIPromptFormComponentExtended_form_2_Conditional_62_ng_template_1_Template, 5, 0, "ng-template", 31);
|
|
1178
|
+
i0.ɵɵelementStart(2, "div", 186);
|
|
1179
|
+
i0.ɵɵtemplate(3, AIPromptFormComponentExtended_form_2_Conditional_62_Conditional_3_Template, 4, 1)(4, AIPromptFormComponentExtended_form_2_Conditional_62_Conditional_4_Template, 2, 1, "div", 187)(5, AIPromptFormComponentExtended_form_2_Conditional_62_Conditional_5_Template, 3, 0, "div", 188);
|
|
1166
1180
|
i0.ɵɵelementEnd()();
|
|
1167
1181
|
} if (rf & 2) {
|
|
1168
1182
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1170,8 +1184,8 @@ function AIPromptFormComponentExtended_form_2_Conditional_60_Template(rf, ctx) {
|
|
|
1170
1184
|
i0.ɵɵadvance(3);
|
|
1171
1185
|
i0.ɵɵconditional(ctx_r1.EditMode ? 3 : ctx_r1.record.OutputExample ? 4 : 5);
|
|
1172
1186
|
} }
|
|
1173
|
-
function
|
|
1174
|
-
i0.ɵɵelementStart(0, "span",
|
|
1187
|
+
function AIPromptFormComponentExtended_form_2_Conditional_63_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1188
|
+
i0.ɵɵelementStart(0, "span", 195);
|
|
1175
1189
|
i0.ɵɵtext(1);
|
|
1176
1190
|
i0.ɵɵelementEnd();
|
|
1177
1191
|
} if (rf & 2) {
|
|
@@ -1179,60 +1193,60 @@ function AIPromptFormComponentExtended_form_2_Conditional_61_ng_template_1_Condi
|
|
|
1179
1193
|
i0.ɵɵadvance();
|
|
1180
1194
|
i0.ɵɵtextInterpolate1("(", ctx_r1.executionHistory.length, ")");
|
|
1181
1195
|
} }
|
|
1182
|
-
function
|
|
1183
|
-
i0.ɵɵelementStart(0, "span",
|
|
1184
|
-
i0.ɵɵelement(1, "i",
|
|
1196
|
+
function AIPromptFormComponentExtended_form_2_Conditional_63_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
1197
|
+
i0.ɵɵelementStart(0, "span", 65);
|
|
1198
|
+
i0.ɵɵelement(1, "i", 194);
|
|
1185
1199
|
i0.ɵɵtext(2, " Execution History ");
|
|
1186
|
-
i0.ɵɵtemplate(3,
|
|
1200
|
+
i0.ɵɵtemplate(3, AIPromptFormComponentExtended_form_2_Conditional_63_ng_template_1_Conditional_3_Template, 2, 1, "span", 195);
|
|
1187
1201
|
i0.ɵɵelementEnd();
|
|
1188
1202
|
} if (rf & 2) {
|
|
1189
1203
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1190
1204
|
i0.ɵɵadvance(3);
|
|
1191
1205
|
i0.ɵɵconditional(ctx_r1.executionHistory.length > 0 ? 3 : -1);
|
|
1192
1206
|
} }
|
|
1193
|
-
function
|
|
1194
|
-
i0.ɵɵelementStart(0, "div",
|
|
1195
|
-
i0.ɵɵelement(1, "i",
|
|
1207
|
+
function AIPromptFormComponentExtended_form_2_Conditional_63_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1208
|
+
i0.ɵɵelementStart(0, "div", 193);
|
|
1209
|
+
i0.ɵɵelement(1, "i", 196);
|
|
1196
1210
|
i0.ɵɵelementStart(2, "p");
|
|
1197
1211
|
i0.ɵɵtext(3, "Loading execution history...");
|
|
1198
1212
|
i0.ɵɵelementEnd()();
|
|
1199
1213
|
} }
|
|
1200
|
-
function
|
|
1201
|
-
i0.ɵɵelementStart(0, "div",
|
|
1202
|
-
i0.ɵɵelement(1, "i",
|
|
1214
|
+
function AIPromptFormComponentExtended_form_2_Conditional_63_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
1215
|
+
i0.ɵɵelementStart(0, "div", 193);
|
|
1216
|
+
i0.ɵɵelement(1, "i", 197);
|
|
1203
1217
|
i0.ɵɵelementStart(2, "p");
|
|
1204
1218
|
i0.ɵɵtext(3, "No execution history yet");
|
|
1205
1219
|
i0.ɵɵelementEnd();
|
|
1206
|
-
i0.ɵɵelementStart(4, "p",
|
|
1220
|
+
i0.ɵɵelementStart(4, "p", 113);
|
|
1207
1221
|
i0.ɵɵtext(5, "Run this prompt to see execution history here");
|
|
1208
1222
|
i0.ɵɵelementEnd()();
|
|
1209
1223
|
} }
|
|
1210
|
-
function
|
|
1211
|
-
i0.ɵɵelement(0, "i",
|
|
1224
|
+
function AIPromptFormComponentExtended_form_2_Conditional_63_Conditional_5_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
1225
|
+
i0.ɵɵelement(0, "i", 210);
|
|
1212
1226
|
} if (rf & 2) {
|
|
1213
1227
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
1214
1228
|
i0.ɵɵclassMap("fa-solid fa-sort-" + (ctx_r1.historySortDirection === "asc" ? "up" : "down"));
|
|
1215
1229
|
} }
|
|
1216
|
-
function
|
|
1217
|
-
i0.ɵɵelement(0, "i",
|
|
1230
|
+
function AIPromptFormComponentExtended_form_2_Conditional_63_Conditional_5_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
1231
|
+
i0.ɵɵelement(0, "i", 210);
|
|
1218
1232
|
} if (rf & 2) {
|
|
1219
1233
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
1220
1234
|
i0.ɵɵclassMap("fa-solid fa-sort-" + (ctx_r1.historySortDirection === "asc" ? "up" : "down"));
|
|
1221
1235
|
} }
|
|
1222
|
-
function
|
|
1223
|
-
i0.ɵɵelement(0, "i",
|
|
1236
|
+
function AIPromptFormComponentExtended_form_2_Conditional_63_Conditional_5_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
1237
|
+
i0.ɵɵelement(0, "i", 210);
|
|
1224
1238
|
} if (rf & 2) {
|
|
1225
1239
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
1226
1240
|
i0.ɵɵclassMap("fa-solid fa-sort-" + (ctx_r1.historySortDirection === "asc" ? "up" : "down"));
|
|
1227
1241
|
} }
|
|
1228
|
-
function
|
|
1229
|
-
i0.ɵɵelement(0, "i",
|
|
1242
|
+
function AIPromptFormComponentExtended_form_2_Conditional_63_Conditional_5_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
1243
|
+
i0.ɵɵelement(0, "i", 210);
|
|
1230
1244
|
} if (rf & 2) {
|
|
1231
1245
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
1232
1246
|
i0.ɵɵclassMap("fa-solid fa-sort-" + (ctx_r1.historySortDirection === "asc" ? "up" : "down"));
|
|
1233
1247
|
} }
|
|
1234
|
-
function
|
|
1235
|
-
i0.ɵɵelementStart(0, "span",
|
|
1248
|
+
function AIPromptFormComponentExtended_form_2_Conditional_63_Conditional_5_For_41_Conditional_20_Template(rf, ctx) { if (rf & 1) {
|
|
1249
|
+
i0.ɵɵelementStart(0, "span", 217);
|
|
1236
1250
|
i0.ɵɵtext(1);
|
|
1237
1251
|
i0.ɵɵelementEnd();
|
|
1238
1252
|
} if (rf & 2) {
|
|
@@ -1240,42 +1254,42 @@ function AIPromptFormComponentExtended_form_2_Conditional_61_Conditional_5_For_4
|
|
|
1240
1254
|
i0.ɵɵadvance();
|
|
1241
1255
|
i0.ɵɵtextInterpolate1(" ", run_r34.RunType, " ");
|
|
1242
1256
|
} }
|
|
1243
|
-
function
|
|
1257
|
+
function AIPromptFormComponentExtended_form_2_Conditional_63_Conditional_5_For_41_Template(rf, ctx) { if (rf & 1) {
|
|
1244
1258
|
const _r33 = i0.ɵɵgetCurrentView();
|
|
1245
|
-
i0.ɵɵelementStart(0, "tr",
|
|
1259
|
+
i0.ɵɵelementStart(0, "tr", 211)(1, "td", 212)(2, "span", 213);
|
|
1246
1260
|
i0.ɵɵelement(3, "i");
|
|
1247
1261
|
i0.ɵɵelementStart(4, "span", 24);
|
|
1248
1262
|
i0.ɵɵtext(5);
|
|
1249
1263
|
i0.ɵɵelementEnd()()();
|
|
1250
|
-
i0.ɵɵelementStart(6, "td",
|
|
1264
|
+
i0.ɵɵelementStart(6, "td", 214);
|
|
1251
1265
|
i0.ɵɵtext(7);
|
|
1252
1266
|
i0.ɵɵpipe(8, "date");
|
|
1253
1267
|
i0.ɵɵelementEnd();
|
|
1254
|
-
i0.ɵɵelementStart(9, "td",
|
|
1255
|
-
i0.ɵɵelement(11, "i",
|
|
1268
|
+
i0.ɵɵelementStart(9, "td", 214)(10, "span", 213);
|
|
1269
|
+
i0.ɵɵelement(11, "i", 92);
|
|
1256
1270
|
i0.ɵɵtext(12);
|
|
1257
1271
|
i0.ɵɵelementEnd()();
|
|
1258
|
-
i0.ɵɵelementStart(13, "td",
|
|
1272
|
+
i0.ɵɵelementStart(13, "td", 214);
|
|
1259
1273
|
i0.ɵɵtext(14);
|
|
1260
1274
|
i0.ɵɵelementEnd();
|
|
1261
|
-
i0.ɵɵelementStart(15, "td",
|
|
1275
|
+
i0.ɵɵelementStart(15, "td", 215);
|
|
1262
1276
|
i0.ɵɵtext(16);
|
|
1263
1277
|
i0.ɵɵelementEnd();
|
|
1264
|
-
i0.ɵɵelementStart(17, "td",
|
|
1278
|
+
i0.ɵɵelementStart(17, "td", 215);
|
|
1265
1279
|
i0.ɵɵtext(18);
|
|
1266
1280
|
i0.ɵɵelementEnd();
|
|
1267
|
-
i0.ɵɵelementStart(19, "td",
|
|
1268
|
-
i0.ɵɵtemplate(20,
|
|
1281
|
+
i0.ɵɵelementStart(19, "td", 216);
|
|
1282
|
+
i0.ɵɵtemplate(20, AIPromptFormComponentExtended_form_2_Conditional_63_Conditional_5_For_41_Conditional_20_Template, 2, 1, "span", 217);
|
|
1269
1283
|
i0.ɵɵelementEnd();
|
|
1270
|
-
i0.ɵɵelementStart(21, "td",
|
|
1271
|
-
i0.ɵɵlistener("click", function
|
|
1272
|
-
i0.ɵɵelement(23, "i",
|
|
1284
|
+
i0.ɵɵelementStart(21, "td", 216)(22, "button", 218);
|
|
1285
|
+
i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_2_Conditional_63_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)); });
|
|
1286
|
+
i0.ɵɵelement(23, "i", 219);
|
|
1273
1287
|
i0.ɵɵelementEnd()()();
|
|
1274
1288
|
} if (rf & 2) {
|
|
1275
1289
|
const run_r34 = ctx.$implicit;
|
|
1276
|
-
const ɵ$
|
|
1290
|
+
const ɵ$index_842_r35 = ctx.$index;
|
|
1277
1291
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
1278
|
-
i0.ɵɵclassProp("even-row", ɵ$
|
|
1292
|
+
i0.ɵɵclassProp("even-row", ɵ$index_842_r35 % 2 === 0);
|
|
1279
1293
|
i0.ɵɵadvance(3);
|
|
1280
1294
|
i0.ɵɵclassMap("fa-solid " + ctx_r1.getExecutionStatusIcon(run_r34.Success));
|
|
1281
1295
|
i0.ɵɵstyleProp("color", ctx_r1.getExecutionStatusColor(run_r34.Success));
|
|
@@ -1296,60 +1310,60 @@ function AIPromptFormComponentExtended_form_2_Conditional_61_Conditional_5_For_4
|
|
|
1296
1310
|
i0.ɵɵadvance(2);
|
|
1297
1311
|
i0.ɵɵconditional(run_r34.RunType ? 20 : -1);
|
|
1298
1312
|
} }
|
|
1299
|
-
function
|
|
1313
|
+
function AIPromptFormComponentExtended_form_2_Conditional_63_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
1300
1314
|
const _r32 = i0.ɵɵgetCurrentView();
|
|
1301
|
-
i0.ɵɵelementStart(0, "div",
|
|
1315
|
+
i0.ɵɵelementStart(0, "div", 198)(1, "div", 132);
|
|
1302
1316
|
i0.ɵɵtext(2);
|
|
1303
1317
|
i0.ɵɵelementEnd();
|
|
1304
|
-
i0.ɵɵelementStart(3, "div",
|
|
1318
|
+
i0.ɵɵelementStart(3, "div", 199)(4, "span", 176);
|
|
1305
1319
|
i0.ɵɵtext(5, "Sort by:");
|
|
1306
1320
|
i0.ɵɵelementEnd();
|
|
1307
|
-
i0.ɵɵelementStart(6, "kendo-buttongroup",
|
|
1308
|
-
i0.ɵɵlistener("click", function
|
|
1321
|
+
i0.ɵɵelementStart(6, "kendo-buttongroup", 200)(7, "button", 201);
|
|
1322
|
+
i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_2_Conditional_63_Conditional_5_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r32); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.changeHistorySort("runAt")); });
|
|
1309
1323
|
i0.ɵɵtext(8, " Date ");
|
|
1310
|
-
i0.ɵɵtemplate(9,
|
|
1324
|
+
i0.ɵɵtemplate(9, AIPromptFormComponentExtended_form_2_Conditional_63_Conditional_5_Conditional_9_Template, 1, 2, "i", 202);
|
|
1311
1325
|
i0.ɵɵelementEnd();
|
|
1312
|
-
i0.ɵɵelementStart(10, "button",
|
|
1313
|
-
i0.ɵɵlistener("click", function
|
|
1326
|
+
i0.ɵɵelementStart(10, "button", 201);
|
|
1327
|
+
i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_2_Conditional_63_Conditional_5_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r32); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.changeHistorySort("executionTime")); });
|
|
1314
1328
|
i0.ɵɵtext(11, " Duration ");
|
|
1315
|
-
i0.ɵɵtemplate(12,
|
|
1329
|
+
i0.ɵɵtemplate(12, AIPromptFormComponentExtended_form_2_Conditional_63_Conditional_5_Conditional_12_Template, 1, 2, "i", 202);
|
|
1316
1330
|
i0.ɵɵelementEnd();
|
|
1317
|
-
i0.ɵɵelementStart(13, "button",
|
|
1318
|
-
i0.ɵɵlistener("click", function
|
|
1331
|
+
i0.ɵɵelementStart(13, "button", 201);
|
|
1332
|
+
i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_2_Conditional_63_Conditional_5_Template_button_click_13_listener() { i0.ɵɵrestoreView(_r32); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.changeHistorySort("tokens")); });
|
|
1319
1333
|
i0.ɵɵtext(14, " Tokens ");
|
|
1320
|
-
i0.ɵɵtemplate(15,
|
|
1334
|
+
i0.ɵɵtemplate(15, AIPromptFormComponentExtended_form_2_Conditional_63_Conditional_5_Conditional_15_Template, 1, 2, "i", 202);
|
|
1321
1335
|
i0.ɵɵelementEnd();
|
|
1322
|
-
i0.ɵɵelementStart(16, "button",
|
|
1323
|
-
i0.ɵɵlistener("click", function
|
|
1336
|
+
i0.ɵɵelementStart(16, "button", 201);
|
|
1337
|
+
i0.ɵɵlistener("click", function AIPromptFormComponentExtended_form_2_Conditional_63_Conditional_5_Template_button_click_16_listener() { i0.ɵɵrestoreView(_r32); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.changeHistorySort("cost")); });
|
|
1324
1338
|
i0.ɵɵtext(17, " Cost ");
|
|
1325
|
-
i0.ɵɵtemplate(18,
|
|
1339
|
+
i0.ɵɵtemplate(18, AIPromptFormComponentExtended_form_2_Conditional_63_Conditional_5_Conditional_18_Template, 1, 2, "i", 202);
|
|
1326
1340
|
i0.ɵɵelementEnd()()()();
|
|
1327
|
-
i0.ɵɵelementStart(19, "div",
|
|
1341
|
+
i0.ɵɵelementStart(19, "div", 203)(20, "table", 204)(21, "thead")(22, "tr", 205)(23, "th", 206);
|
|
1328
1342
|
i0.ɵɵtext(24, "Status");
|
|
1329
1343
|
i0.ɵɵelementEnd();
|
|
1330
|
-
i0.ɵɵelementStart(25, "th",
|
|
1344
|
+
i0.ɵɵelementStart(25, "th", 206);
|
|
1331
1345
|
i0.ɵɵtext(26, "Date & Time");
|
|
1332
1346
|
i0.ɵɵelementEnd();
|
|
1333
|
-
i0.ɵɵelementStart(27, "th",
|
|
1347
|
+
i0.ɵɵelementStart(27, "th", 206);
|
|
1334
1348
|
i0.ɵɵtext(28, "Model");
|
|
1335
1349
|
i0.ɵɵelementEnd();
|
|
1336
|
-
i0.ɵɵelementStart(29, "th",
|
|
1350
|
+
i0.ɵɵelementStart(29, "th", 206);
|
|
1337
1351
|
i0.ɵɵtext(30, "Duration");
|
|
1338
1352
|
i0.ɵɵelementEnd();
|
|
1339
|
-
i0.ɵɵelementStart(31, "th",
|
|
1353
|
+
i0.ɵɵelementStart(31, "th", 207);
|
|
1340
1354
|
i0.ɵɵtext(32, "Tokens");
|
|
1341
1355
|
i0.ɵɵelementEnd();
|
|
1342
|
-
i0.ɵɵelementStart(33, "th",
|
|
1356
|
+
i0.ɵɵelementStart(33, "th", 207);
|
|
1343
1357
|
i0.ɵɵtext(34, "Cost");
|
|
1344
1358
|
i0.ɵɵelementEnd();
|
|
1345
|
-
i0.ɵɵelementStart(35, "th",
|
|
1359
|
+
i0.ɵɵelementStart(35, "th", 208);
|
|
1346
1360
|
i0.ɵɵtext(36, "Type");
|
|
1347
1361
|
i0.ɵɵelementEnd();
|
|
1348
|
-
i0.ɵɵelementStart(37, "th",
|
|
1362
|
+
i0.ɵɵelementStart(37, "th", 208);
|
|
1349
1363
|
i0.ɵɵtext(38, "Actions");
|
|
1350
1364
|
i0.ɵɵelementEnd()()();
|
|
1351
1365
|
i0.ɵɵelementStart(39, "tbody");
|
|
1352
|
-
i0.ɵɵrepeaterCreate(40,
|
|
1366
|
+
i0.ɵɵrepeaterCreate(40, AIPromptFormComponentExtended_form_2_Conditional_63_Conditional_5_For_41_Template, 24, 18, "tr", 209, _forTrack1);
|
|
1353
1367
|
i0.ɵɵelementEnd()()();
|
|
1354
1368
|
} if (rf & 2) {
|
|
1355
1369
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -1374,11 +1388,11 @@ function AIPromptFormComponentExtended_form_2_Conditional_61_Conditional_5_Templ
|
|
|
1374
1388
|
i0.ɵɵadvance(22);
|
|
1375
1389
|
i0.ɵɵrepeater(ctx_r1.executionHistory);
|
|
1376
1390
|
} }
|
|
1377
|
-
function
|
|
1391
|
+
function AIPromptFormComponentExtended_form_2_Conditional_63_Template(rf, ctx) { if (rf & 1) {
|
|
1378
1392
|
i0.ɵɵelementStart(0, "kendo-expansionpanel", 30);
|
|
1379
|
-
i0.ɵɵtemplate(1,
|
|
1380
|
-
i0.ɵɵelementStart(2, "div",
|
|
1381
|
-
i0.ɵɵtemplate(3,
|
|
1393
|
+
i0.ɵɵtemplate(1, AIPromptFormComponentExtended_form_2_Conditional_63_ng_template_1_Template, 4, 1, "ng-template", 31);
|
|
1394
|
+
i0.ɵɵelementStart(2, "div", 186);
|
|
1395
|
+
i0.ɵɵtemplate(3, AIPromptFormComponentExtended_form_2_Conditional_63_Conditional_3_Template, 4, 0, "div", 193)(4, AIPromptFormComponentExtended_form_2_Conditional_63_Conditional_4_Template, 6, 0, "div", 193)(5, AIPromptFormComponentExtended_form_2_Conditional_63_Conditional_5_Template, 42, 9);
|
|
1382
1396
|
i0.ɵɵelementEnd()();
|
|
1383
1397
|
} if (rf & 2) {
|
|
1384
1398
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1386,17 +1400,17 @@ function AIPromptFormComponentExtended_form_2_Conditional_61_Template(rf, ctx) {
|
|
|
1386
1400
|
i0.ɵɵadvance(3);
|
|
1387
1401
|
i0.ɵɵconditional(ctx_r1.isLoadingHistory ? 3 : ctx_r1.executionHistory.length === 0 ? 4 : 5);
|
|
1388
1402
|
} }
|
|
1389
|
-
function
|
|
1390
|
-
i0.ɵɵelementStart(0, "span",
|
|
1391
|
-
i0.ɵɵelement(1, "i",
|
|
1403
|
+
function AIPromptFormComponentExtended_form_2_Conditional_64_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
1404
|
+
i0.ɵɵelementStart(0, "span", 65);
|
|
1405
|
+
i0.ɵɵelement(1, "i", 221);
|
|
1392
1406
|
i0.ɵɵtext(2, " Result Cache ");
|
|
1393
1407
|
i0.ɵɵelementEnd();
|
|
1394
1408
|
} }
|
|
1395
|
-
function
|
|
1409
|
+
function AIPromptFormComponentExtended_form_2_Conditional_64_Template(rf, ctx) { if (rf & 1) {
|
|
1396
1410
|
i0.ɵɵelementStart(0, "kendo-expansionpanel", 30);
|
|
1397
|
-
i0.ɵɵtemplate(1,
|
|
1411
|
+
i0.ɵɵtemplate(1, AIPromptFormComponentExtended_form_2_Conditional_64_ng_template_1_Template, 3, 0, "ng-template", 31);
|
|
1398
1412
|
i0.ɵɵelementStart(2, "div", 37);
|
|
1399
|
-
i0.ɵɵelement(3, "mj-user-view-grid",
|
|
1413
|
+
i0.ɵɵelement(3, "mj-user-view-grid", 220);
|
|
1400
1414
|
i0.ɵɵelementEnd()();
|
|
1401
1415
|
} if (rf & 2) {
|
|
1402
1416
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1404,24 +1418,24 @@ function AIPromptFormComponentExtended_form_2_Conditional_62_Template(rf, ctx) {
|
|
|
1404
1418
|
i0.ɵɵadvance(3);
|
|
1405
1419
|
i0.ɵɵproperty("Params", ctx_r1.BuildRelationshipViewParamsByEntityName("AI Result Cache", "AIPromptID"))("NewRecordValues", ctx_r1.NewRecordValues("AI Result Cache"))("AllowLoad", true)("EditMode", ctx_r1.GridEditMode());
|
|
1406
1420
|
} }
|
|
1407
|
-
function
|
|
1408
|
-
i0.ɵɵelementStart(0, "span",
|
|
1409
|
-
i0.ɵɵelement(1, "i",
|
|
1421
|
+
function AIPromptFormComponentExtended_form_2_Conditional_65_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
1422
|
+
i0.ɵɵelementStart(0, "span", 65);
|
|
1423
|
+
i0.ɵɵelement(1, "i", 224);
|
|
1410
1424
|
i0.ɵɵtext(2, " Related Items ");
|
|
1411
1425
|
i0.ɵɵelementEnd();
|
|
1412
1426
|
} }
|
|
1413
|
-
function
|
|
1427
|
+
function AIPromptFormComponentExtended_form_2_Conditional_65_Template(rf, ctx) { if (rf & 1) {
|
|
1414
1428
|
i0.ɵɵelementStart(0, "kendo-expansionpanel", 30);
|
|
1415
|
-
i0.ɵɵtemplate(1,
|
|
1416
|
-
i0.ɵɵelementStart(2, "div", 37)(3, "div", 38)(4, "div")(5, "h6",
|
|
1429
|
+
i0.ɵɵtemplate(1, AIPromptFormComponentExtended_form_2_Conditional_65_ng_template_1_Template, 3, 0, "ng-template", 31);
|
|
1430
|
+
i0.ɵɵelementStart(2, "div", 37)(3, "div", 38)(4, "div")(5, "h6", 222);
|
|
1417
1431
|
i0.ɵɵtext(6, "AI Agents Using This Prompt");
|
|
1418
1432
|
i0.ɵɵelementEnd();
|
|
1419
|
-
i0.ɵɵelement(7, "mj-user-view-grid",
|
|
1433
|
+
i0.ɵɵelement(7, "mj-user-view-grid", 223);
|
|
1420
1434
|
i0.ɵɵelementEnd();
|
|
1421
|
-
i0.ɵɵelementStart(8, "div")(9, "h6",
|
|
1435
|
+
i0.ɵɵelementStart(8, "div")(9, "h6", 222);
|
|
1422
1436
|
i0.ɵɵtext(10, "Prompts Using This as Result Selector");
|
|
1423
1437
|
i0.ɵɵelementEnd();
|
|
1424
|
-
i0.ɵɵelement(11, "mj-user-view-grid",
|
|
1438
|
+
i0.ɵɵelement(11, "mj-user-view-grid", 223);
|
|
1425
1439
|
i0.ɵɵelementEnd()()()();
|
|
1426
1440
|
} if (rf & 2) {
|
|
1427
1441
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1457,34 +1471,34 @@ function AIPromptFormComponentExtended_form_2_Template(rf, ctx) { if (rf & 1) {
|
|
|
1457
1471
|
i0.ɵɵelementStart(26, "span", 24);
|
|
1458
1472
|
i0.ɵɵtext(27);
|
|
1459
1473
|
i0.ɵɵelementEnd()();
|
|
1460
|
-
i0.ɵɵtemplate(28, AIPromptFormComponentExtended_form_2_Conditional_28_Template, 4, 0, "div", 19);
|
|
1474
|
+
i0.ɵɵtemplate(28, AIPromptFormComponentExtended_form_2_Conditional_28_Template, 4, 0, "div", 19)(29, AIPromptFormComponentExtended_form_2_Conditional_29_Template, 6, 1, "div", 19);
|
|
1461
1475
|
i0.ɵɵelementEnd()();
|
|
1462
|
-
i0.ɵɵelementStart(
|
|
1463
|
-
i0.ɵɵtemplate(
|
|
1476
|
+
i0.ɵɵelementStart(30, "div", 25)(31, "div", 26);
|
|
1477
|
+
i0.ɵɵtemplate(32, AIPromptFormComponentExtended_form_2_Conditional_32_Template, 3, 2, "button", 27);
|
|
1464
1478
|
i0.ɵɵelementEnd();
|
|
1465
|
-
i0.ɵɵtemplate(
|
|
1479
|
+
i0.ɵɵtemplate(33, AIPromptFormComponentExtended_form_2_Conditional_33_Template, 4, 3, "div", 28);
|
|
1466
1480
|
i0.ɵɵelementEnd()()();
|
|
1467
|
-
i0.ɵɵelementStart(
|
|
1468
|
-
i0.ɵɵtemplate(
|
|
1469
|
-
i0.ɵɵelementStart(
|
|
1470
|
-
i0.ɵɵtemplate(
|
|
1481
|
+
i0.ɵɵelementStart(34, "div", 29)(35, "kendo-expansionpanel", 30);
|
|
1482
|
+
i0.ɵɵtemplate(36, AIPromptFormComponentExtended_form_2_ng_template_36_Template, 4, 1, "ng-template", 31);
|
|
1483
|
+
i0.ɵɵelementStart(37, "div", 32);
|
|
1484
|
+
i0.ɵɵtemplate(38, AIPromptFormComponentExtended_form_2_Conditional_38_Template, 3, 0, "div", 33)(39, AIPromptFormComponentExtended_form_2_Conditional_39_Template, 9, 2, "div", 34)(40, AIPromptFormComponentExtended_form_2_Conditional_40_Template, 11, 2, "div", 35)(41, AIPromptFormComponentExtended_form_2_Conditional_41_Template, 5, 3, "div", 36);
|
|
1471
1485
|
i0.ɵɵelementEnd()();
|
|
1472
|
-
i0.ɵɵtemplate(
|
|
1473
|
-
i0.ɵɵelementStart(
|
|
1474
|
-
i0.ɵɵtemplate(
|
|
1475
|
-
i0.ɵɵelementStart(
|
|
1476
|
-
i0.ɵɵelement(
|
|
1477
|
-
i0.ɵɵtemplate(
|
|
1478
|
-
i0.ɵɵelement(
|
|
1479
|
-
i0.ɵɵelementEnd();
|
|
1480
|
-
i0.ɵɵelementStart(
|
|
1481
|
-
i0.ɵɵelement(
|
|
1482
|
-
i0.ɵɵelementStart(
|
|
1483
|
-
i0.ɵɵtext(
|
|
1484
|
-
i0.ɵɵelementEnd();
|
|
1485
|
-
i0.ɵɵtemplate(
|
|
1486
|
+
i0.ɵɵtemplate(42, AIPromptFormComponentExtended_form_2_Conditional_42_Template, 6, 2, "kendo-expansionpanel", 30);
|
|
1487
|
+
i0.ɵɵelementStart(43, "kendo-expansionpanel", 30);
|
|
1488
|
+
i0.ɵɵtemplate(44, AIPromptFormComponentExtended_form_2_ng_template_44_Template, 3, 0, "ng-template", 31);
|
|
1489
|
+
i0.ɵɵelementStart(45, "div", 37)(46, "div", 38)(47, "div");
|
|
1490
|
+
i0.ɵɵelement(48, "mj-form-field", 39);
|
|
1491
|
+
i0.ɵɵtemplate(49, AIPromptFormComponentExtended_form_2_Conditional_49_Template, 1, 3, "mj-form-field", 40)(50, AIPromptFormComponentExtended_form_2_Conditional_50_Template, 1, 3, "mj-form-field", 41);
|
|
1492
|
+
i0.ɵɵelement(51, "mj-form-field", 42)(52, "mj-form-field", 43);
|
|
1493
|
+
i0.ɵɵelementEnd();
|
|
1494
|
+
i0.ɵɵelementStart(53, "div");
|
|
1495
|
+
i0.ɵɵelement(54, "mj-form-field", 44)(55, "mj-form-field", 45);
|
|
1496
|
+
i0.ɵɵelementStart(56, "div", 46)(57, "label", 47);
|
|
1497
|
+
i0.ɵɵtext(58, " Result Selector Prompt ");
|
|
1498
|
+
i0.ɵɵelementEnd();
|
|
1499
|
+
i0.ɵɵtemplate(59, AIPromptFormComponentExtended_form_2_Conditional_59_Template, 2, 1)(60, AIPromptFormComponentExtended_form_2_Conditional_60_Template, 2, 1, "span", 48);
|
|
1486
1500
|
i0.ɵɵelementEnd()()()()();
|
|
1487
|
-
i0.ɵɵtemplate(
|
|
1501
|
+
i0.ɵɵtemplate(61, AIPromptFormComponentExtended_form_2_Conditional_61_Template, 6, 2, "kendo-expansionpanel", 30)(62, AIPromptFormComponentExtended_form_2_Conditional_62_Template, 6, 2, "kendo-expansionpanel", 30)(63, AIPromptFormComponentExtended_form_2_Conditional_63_Template, 6, 2, "kendo-expansionpanel", 30)(64, AIPromptFormComponentExtended_form_2_Conditional_64_Template, 4, 5, "kendo-expansionpanel", 30)(65, AIPromptFormComponentExtended_form_2_Conditional_65_Template, 12, 9, "kendo-expansionpanel", 30);
|
|
1488
1502
|
i0.ɵɵelementEnd()()();
|
|
1489
1503
|
} if (rf & 2) {
|
|
1490
1504
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -1506,24 +1520,28 @@ function AIPromptFormComponentExtended_form_2_Template(rf, ctx) { if (rf & 1) {
|
|
|
1506
1520
|
i0.ɵɵtextInterpolate(ctx_r1.getOutputTypeDisplay());
|
|
1507
1521
|
i0.ɵɵadvance();
|
|
1508
1522
|
i0.ɵɵconditional(ctx_r1.record.EnableCaching ? 28 : -1);
|
|
1523
|
+
i0.ɵɵadvance();
|
|
1524
|
+
i0.ɵɵconditional(ctx_r1.record.EffortLevel ? 29 : -1);
|
|
1509
1525
|
i0.ɵɵadvance(3);
|
|
1510
|
-
i0.ɵɵconditional(ctx_r1.record.ID ?
|
|
1526
|
+
i0.ɵɵconditional(ctx_r1.record.ID ? 32 : -1);
|
|
1511
1527
|
i0.ɵɵadvance();
|
|
1512
|
-
i0.ɵɵconditional(!ctx_r1.canExecute && ctx_r1.record.ID ?
|
|
1528
|
+
i0.ɵɵconditional(!ctx_r1.canExecute && ctx_r1.record.ID ? 33 : -1);
|
|
1513
1529
|
i0.ɵɵadvance(2);
|
|
1514
1530
|
i0.ɵɵproperty("expanded", true);
|
|
1515
1531
|
i0.ɵɵadvance(3);
|
|
1516
|
-
i0.ɵɵconditional(ctx_r1.isLoadingTemplate ?
|
|
1532
|
+
i0.ɵɵconditional(ctx_r1.isLoadingTemplate ? 38 : !ctx_r1.record.TemplateID ? 39 : ctx_r1.templateNotFoundInDatabase ? 40 : 41);
|
|
1517
1533
|
i0.ɵɵadvance(4);
|
|
1518
|
-
i0.ɵɵconditional(ctx_r1.record.IsSaved ?
|
|
1534
|
+
i0.ɵɵconditional(ctx_r1.record.IsSaved ? 42 : -1);
|
|
1519
1535
|
i0.ɵɵadvance();
|
|
1520
1536
|
i0.ɵɵproperty("expanded", false);
|
|
1521
1537
|
i0.ɵɵadvance(5);
|
|
1522
1538
|
i0.ɵɵproperty("record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode);
|
|
1523
1539
|
i0.ɵɵadvance();
|
|
1524
|
-
i0.ɵɵconditional(ctx_r1.showParallelCount ?
|
|
1540
|
+
i0.ɵɵconditional(ctx_r1.showParallelCount ? 49 : -1);
|
|
1525
1541
|
i0.ɵɵadvance();
|
|
1526
|
-
i0.ɵɵconditional(ctx_r1.showParallelConfigParam ?
|
|
1542
|
+
i0.ɵɵconditional(ctx_r1.showParallelConfigParam ? 50 : -1);
|
|
1543
|
+
i0.ɵɵadvance();
|
|
1544
|
+
i0.ɵɵproperty("record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode);
|
|
1527
1545
|
i0.ɵɵadvance();
|
|
1528
1546
|
i0.ɵɵproperty("record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode);
|
|
1529
1547
|
i0.ɵɵadvance(2);
|
|
@@ -1531,23 +1549,23 @@ function AIPromptFormComponentExtended_form_2_Template(rf, ctx) { if (rf & 1) {
|
|
|
1531
1549
|
i0.ɵɵadvance();
|
|
1532
1550
|
i0.ɵɵproperty("record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode);
|
|
1533
1551
|
i0.ɵɵadvance(4);
|
|
1534
|
-
i0.ɵɵconditional(ctx_r1.EditMode ?
|
|
1552
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 59 : 60);
|
|
1535
1553
|
i0.ɵɵadvance(2);
|
|
1536
|
-
i0.ɵɵconditional(ctx_r1.template && ctx_r1.templateParams.length > 0 ?
|
|
1554
|
+
i0.ɵɵconditional(ctx_r1.template && ctx_r1.templateParams.length > 0 ? 61 : -1);
|
|
1537
1555
|
i0.ɵɵadvance();
|
|
1538
|
-
i0.ɵɵconditional(ctx_r1.showOutputExample ?
|
|
1556
|
+
i0.ɵɵconditional(ctx_r1.showOutputExample ? 62 : -1);
|
|
1539
1557
|
i0.ɵɵadvance();
|
|
1540
|
-
i0.ɵɵconditional(ctx_r1.record.IsSaved ?
|
|
1558
|
+
i0.ɵɵconditional(ctx_r1.record.IsSaved ? 63 : -1);
|
|
1541
1559
|
i0.ɵɵadvance();
|
|
1542
|
-
i0.ɵɵconditional(ctx_r1.record.IsSaved && ctx_r1.record.EnableCaching ?
|
|
1560
|
+
i0.ɵɵconditional(ctx_r1.record.IsSaved && ctx_r1.record.EnableCaching ? 64 : -1);
|
|
1543
1561
|
i0.ɵɵadvance();
|
|
1544
|
-
i0.ɵɵconditional(ctx_r1.record.IsSaved ?
|
|
1562
|
+
i0.ɵɵconditional(ctx_r1.record.IsSaved ? 65 : -1);
|
|
1545
1563
|
} }
|
|
1546
1564
|
function AIPromptFormComponentExtended_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1547
1565
|
const _r36 = i0.ɵɵgetCurrentView();
|
|
1548
|
-
i0.ɵɵelementStart(0, "kendo-window",
|
|
1566
|
+
i0.ɵɵelementStart(0, "kendo-window", 225);
|
|
1549
1567
|
i0.ɵɵlistener("close", function AIPromptFormComponentExtended_Conditional_3_Template_kendo_window_close_0_listener() { i0.ɵɵrestoreView(_r36); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onTestHarnessVisibilityChanged(false)); });
|
|
1550
|
-
i0.ɵɵelementStart(1, "mj-ai-test-harness",
|
|
1568
|
+
i0.ɵɵelementStart(1, "mj-ai-test-harness", 226);
|
|
1551
1569
|
i0.ɵɵlistener("visibilityChange", function AIPromptFormComponentExtended_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)); });
|
|
1552
1570
|
i0.ɵɵelementEnd()();
|
|
1553
1571
|
} if (rf & 2) {
|
|
@@ -3028,10 +3046,10 @@ let AIPromptFormComponentExtended = class AIPromptFormComponentExtended extends
|
|
|
3028
3046
|
} if (rf & 2) {
|
|
3029
3047
|
let _t;
|
|
3030
3048
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templateEditor = _t.first);
|
|
3031
|
-
} }, features: [i0.ɵɵInheritDefinitionFeature], decls: 4, vars: 2, consts: [["form", "ngForm"], ["templateEditor", ""], [1, "record-form-container"], ["kendoDialogContainer", ""], ["class", "record-form", 4, "ngIf"], [3, "width", "height", "minWidth", "minHeight", "draggable", "resizable", "state", "title"], [1, "record-form"], [3, "form"], [1, "prompt-main-area", 2, "display", "flex", "flex-direction", "column", "height", "100%", "overflow-y", "auto"], [1, "prompt-header", 2, "flex-shrink", "0", "padding", "20px", "background", "#f8f9fa", "border-bottom", "2px solid #e9ecef"], [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", "#6f42c1", "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", "#6c757d", "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", "#6c757d"], [2, "color", "#6c757d"], [2, "color", "#495057", "font-weight", "500"], [1, "fa-solid", "fa-code", 2, "color", "#6c757d"], [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", "white", "border-top", "2px solid #e9ecef", "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", "#6c757d"], [1, "no-template-state", 2, "flex", "1", "display", "flex", "flex-direction", "column", "align-items", "center", "justify-content", "center", "padding", "40px", "color", "#6c757d"], [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", "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", "#495057", "font-size", "0.9em"], [2, "color", "#495057"], ["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", "#495057", "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", "#6c757d", "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", "#6c757d"], [1, "fa-solid", "fa-database", 2, "color", "#28a745"], [2, "color", "#28a745", "font-weight", "500"], ["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", "#6c757d", "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", "#495057"], [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 #e9ecef", "background", "#f8f9fa"], [2, "flex", "1", "background", "white", "border-radius", "6px", "border", "1px solid #e9ecef"], [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 #dee2e6", "border-radius", "6px", "background", "#f8f9fa"], [1, "loading-state", 2, "padding", "20px", "text-align", "center", "color", "#6c757d"], [1, "fa-solid", "fa-microchip", 2, "color", "#6c757d"], [1, "badge", 2, "background", "#17a2b8", "color", "white", "padding", "2px 6px", "border-radius", "10px", "font-size", "0.7em"], [2, "color", "#6c757d", "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", "#6c757d"], [1, "fa-solid", "fa-info-circle"], [2, "margin-top", "10px"], ["kendoButton", "", "fillMode", "outline", "themeColor", "primary", "size", "small", 3, "click"], [2, "padding", "12px 16px", "background", "#e3f2fd", "border-bottom", "1px solid #bbdefb", "color", "#1565c0", "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", "#e9ecef", "font-weight", "600", "font-size", "0.85em", "color", "#495057", "border-bottom", "1px solid #dee2e6"], ["title", "Priority order - models are tried from top to bottom"], [1, "fa-solid", "fa-sort", 2, "color", "#6c757d"], [1, "add-model-row", 2, "padding", "12px 16px", "text-align", "center", "background", "#f8f9fa", "border-top", "1px solid #dee2e6"], [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 #e9ecef", "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", "#6c757d"], [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", "#6c757d", "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 #e9ecef", "background", "#f8f9fa", "font-size", "0.85em", "color", "#6c757d"], [2, "display", "flex", "gap", "16px", "flex-wrap", "wrap", "align-items", "center", "margin-bottom", "8px"], [2, "padding", "8px", "background", "#fff", "border", "1px solid #dee2e6", "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", "#6c757d", "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", "#6c757d", "font-size", "0.9em"], [2, "padding", "4px", "color", "#6c757d", "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", "#6c757d"], [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", "#495057", "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", "#495057"], ["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", "#6c757d"], [2, "padding", "8px", "color", "#6c757d", "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", "#6c757d"], [1, "badge", 2, "background", "#6f42c1", "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 #e9ecef", "border-radius", "8px", "padding", "16px", "background", "#f8f9fa", "transition", "all 0.2s", 3, "border-left"], [2, "margin-top", "16px", "padding", "12px", "background", "#e3f2fd", "border-radius", "6px", "border", "1px solid #bbdefb"], [2, "display", "flex", "align-items", "flex-start", "gap", "8px"], [1, "fa-solid", "fa-lightbulb", 2, "color", "#1976d2", "margin-top", "2px"], [2, "flex", "1", "font-size", "0.85em", "color", "#1565c0", "line-height", "1.5"], [1, "parameter-card", 2, "border", "1px solid #e9ecef", "border-radius", "8px", "padding", "16px", "background", "#f8f9fa", "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", "#495057", "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", "#6c757d", "font-size", "0.85em"], [2, "margin", "0 0 8px 0", "color", "#6c757d", "font-size", "0.9em", "line-height", "1.4"], [2, "font-size", "0.85em", "color", "#495057"], [2, "display", "flex", "align-items", "center", "gap", "4px", "margin-bottom", "4px"], [1, "fa-solid", "fa-info-circle", 2, "color", "#6c757d"], [2, "display", "grid", "grid-template-columns", "repeat(auto-fit, minmax(200px, 1fr))", "gap", "12px", "margin-top", "12px"], [2, "background", "white", "padding", "8px 12px", "border-radius", "4px", "border", "1px solid #dee2e6"], [2, "display", "block", "font-size", "0.8em", "color", "#6c757d", "margin-bottom", "2px"], [2, "font-size", "0.85em", "color", "#495057", "word-break", "break-all"], [2, "font-size", "0.8em", "color", "#495057", "word-break", "break-all"], [2, "padding", "16px"], [2, "background", "#f8f9fa", "border", "1px solid #dee2e6", "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 #dee2e6", "border-radius", "4px", 3, "ngModelChange", "ngModel"], [2, "margin-top", "8px", "color", "#6c757d", "font-size", "0.85em"], [1, "fa-solid", "fa-exclamation-triangle"], [2, "text-align", "center", "padding", "40px", "color", "#6c757d"], [1, "fa-solid", "fa-history", 2, "color", "#6c757d"], [2, "color", "#6c757d", "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 #e9ecef", "border-radius", "8px", "overflow", "hidden"], [2, "width", "100%", "border-collapse", "collapse"], [2, "background", "#f8f9fa", "border-bottom", "2px solid #e9ecef"], [2, "padding", "12px", "text-align", "left", "font-weight", "600", "color", "#495057"], [2, "padding", "12px", "text-align", "right", "font-weight", "600", "color", "#495057"], [2, "padding", "12px", "text-align", "center", "font-weight", "600", "color", "#495057"], [1, "history-row", 2, "border-bottom", "1px solid #f1f3f5", 3, "even-row"], [2, "margin-left", "4px", "font-size", "0.8em"], [1, "history-row", 2, "border-bottom", "1px solid #f1f3f5"], [2, "padding", "12px"], [2, "display", "flex", "align-items", "center", "gap", "6px"], [2, "padding", "12px", "color", "#495057"], [2, "padding", "12px", "text-align", "right", "color", "#495057"], [2, "padding", "12px", "text-align", "center"], [2, "padding", "4px 8px", "border-radius", "12px", "background", "#e9ecef", "color", "#495057", "font-size", "0.85em", "font-weight", "500"], ["kendoButton", "", "fillMode", "flat", "size", "small", "title", "View details", 3, "click"], [1, "fa-solid", "fa-external-link"], [2, "height", "300px", 3, "Params", "NewRecordValues", "AllowLoad", "EditMode"], [1, "fa-solid", "fa-database", 2, "color", "#6c757d"], [2, "margin", "0 0 12px 0", "color", "#495057"], [2, "height", "200px", 3, "Params", "NewRecordValues", "AllowLoad", "EditMode"], [1, "fa-solid", "fa-link", 2, "color", "#6c757d"], [3, "close", "width", "height", "minWidth", "minHeight", "draggable", "resizable", "state", "title"], [3, "visibilityChange", "entity", "mode", "isVisible"]], template: function AIPromptFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
|
|
3049
|
+
} }, features: [i0.ɵɵInheritDefinitionFeature], decls: 4, vars: 2, consts: [["form", "ngForm"], ["templateEditor", ""], [1, "record-form-container"], ["kendoDialogContainer", ""], ["class", "record-form", 4, "ngIf"], [3, "width", "height", "minWidth", "minHeight", "draggable", "resizable", "state", "title"], [1, "record-form"], [3, "form"], [1, "prompt-main-area", 2, "display", "flex", "flex-direction", "column", "height", "100%", "overflow-y", "auto"], [1, "prompt-header", 2, "flex-shrink", "0", "padding", "20px", "background", "#f8f9fa", "border-bottom", "2px solid #e9ecef"], [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", "#6f42c1", "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", "#6c757d", "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", "#6c757d"], [2, "color", "#6c757d"], [2, "color", "#495057", "font-weight", "500"], [1, "fa-solid", "fa-code", 2, "color", "#6c757d"], [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", "white", "border-top", "2px solid #e9ecef", "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", "#6c757d"], [1, "no-template-state", 2, "flex", "1", "display", "flex", "flex-direction", "column", "align-items", "center", "justify-content", "center", "padding", "40px", "color", "#6c757d"], [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", "#495057", "font-size", "0.9em"], [2, "color", "#495057"], ["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", "#495057", "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", "#6c757d", "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", "#6c757d"], [1, "fa-solid", "fa-database", 2, "color", "#28a745"], [2, "color", "#28a745", "font-weight", "500"], [1, "fa-solid", "fa-tachometer-alt", 2, "color", "#6c757d"], ["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", "#6c757d", "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", "#495057"], [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 #e9ecef", "background", "#f8f9fa"], [2, "flex", "1", "background", "white", "border-radius", "6px", "border", "1px solid #e9ecef"], [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 #dee2e6", "border-radius", "6px", "background", "#f8f9fa"], [1, "loading-state", 2, "padding", "20px", "text-align", "center", "color", "#6c757d"], [1, "fa-solid", "fa-microchip", 2, "color", "#6c757d"], [1, "badge", 2, "background", "#17a2b8", "color", "white", "padding", "2px 6px", "border-radius", "10px", "font-size", "0.7em"], [2, "color", "#6c757d", "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", "#6c757d"], [1, "fa-solid", "fa-info-circle"], [2, "margin-top", "10px"], ["kendoButton", "", "fillMode", "outline", "themeColor", "primary", "size", "small", 3, "click"], [2, "padding", "12px 16px", "background", "#e3f2fd", "border-bottom", "1px solid #bbdefb", "color", "#1565c0", "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", "#e9ecef", "font-weight", "600", "font-size", "0.85em", "color", "#495057", "border-bottom", "1px solid #dee2e6"], ["title", "Priority order - models are tried from top to bottom"], [1, "fa-solid", "fa-sort", 2, "color", "#6c757d"], [1, "add-model-row", 2, "padding", "12px 16px", "text-align", "center", "background", "#f8f9fa", "border-top", "1px solid #dee2e6"], [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 #e9ecef", "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", "#6c757d"], [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", "#6c757d", "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 #e9ecef", "background", "#f8f9fa", "font-size", "0.85em", "color", "#6c757d"], [2, "display", "flex", "gap", "16px", "flex-wrap", "wrap", "align-items", "center", "margin-bottom", "8px"], [2, "padding", "8px", "background", "#fff", "border", "1px solid #dee2e6", "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", "#6c757d", "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", "#6c757d", "font-size", "0.9em"], [2, "padding", "4px", "color", "#6c757d", "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", "#6c757d"], [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", "#495057", "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", "#495057"], ["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", "#6c757d"], [2, "padding", "8px", "color", "#6c757d", "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", "#6c757d"], [1, "badge", 2, "background", "#6f42c1", "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 #e9ecef", "border-radius", "8px", "padding", "16px", "background", "#f8f9fa", "transition", "all 0.2s", 3, "border-left"], [2, "margin-top", "16px", "padding", "12px", "background", "#e3f2fd", "border-radius", "6px", "border", "1px solid #bbdefb"], [2, "display", "flex", "align-items", "flex-start", "gap", "8px"], [1, "fa-solid", "fa-lightbulb", 2, "color", "#1976d2", "margin-top", "2px"], [2, "flex", "1", "font-size", "0.85em", "color", "#1565c0", "line-height", "1.5"], [1, "parameter-card", 2, "border", "1px solid #e9ecef", "border-radius", "8px", "padding", "16px", "background", "#f8f9fa", "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", "#495057", "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", "#6c757d", "font-size", "0.85em"], [2, "margin", "0 0 8px 0", "color", "#6c757d", "font-size", "0.9em", "line-height", "1.4"], [2, "font-size", "0.85em", "color", "#495057"], [2, "display", "flex", "align-items", "center", "gap", "4px", "margin-bottom", "4px"], [1, "fa-solid", "fa-info-circle", 2, "color", "#6c757d"], [2, "display", "grid", "grid-template-columns", "repeat(auto-fit, minmax(200px, 1fr))", "gap", "12px", "margin-top", "12px"], [2, "background", "white", "padding", "8px 12px", "border-radius", "4px", "border", "1px solid #dee2e6"], [2, "display", "block", "font-size", "0.8em", "color", "#6c757d", "margin-bottom", "2px"], [2, "font-size", "0.85em", "color", "#495057", "word-break", "break-all"], [2, "font-size", "0.8em", "color", "#495057", "word-break", "break-all"], [2, "padding", "16px"], [2, "background", "#f8f9fa", "border", "1px solid #dee2e6", "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 #dee2e6", "border-radius", "4px", 3, "ngModelChange", "ngModel"], [2, "margin-top", "8px", "color", "#6c757d", "font-size", "0.85em"], [1, "fa-solid", "fa-exclamation-triangle"], [2, "text-align", "center", "padding", "40px", "color", "#6c757d"], [1, "fa-solid", "fa-history", 2, "color", "#6c757d"], [2, "color", "#6c757d", "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 #e9ecef", "border-radius", "8px", "overflow", "hidden"], [2, "width", "100%", "border-collapse", "collapse"], [2, "background", "#f8f9fa", "border-bottom", "2px solid #e9ecef"], [2, "padding", "12px", "text-align", "left", "font-weight", "600", "color", "#495057"], [2, "padding", "12px", "text-align", "right", "font-weight", "600", "color", "#495057"], [2, "padding", "12px", "text-align", "center", "font-weight", "600", "color", "#495057"], [1, "history-row", 2, "border-bottom", "1px solid #f1f3f5", 3, "even-row"], [2, "margin-left", "4px", "font-size", "0.8em"], [1, "history-row", 2, "border-bottom", "1px solid #f1f3f5"], [2, "padding", "12px"], [2, "display", "flex", "align-items", "center", "gap", "6px"], [2, "padding", "12px", "color", "#495057"], [2, "padding", "12px", "text-align", "right", "color", "#495057"], [2, "padding", "12px", "text-align", "center"], [2, "padding", "4px 8px", "border-radius", "12px", "background", "#e9ecef", "color", "#495057", "font-size", "0.85em", "font-weight", "500"], ["kendoButton", "", "fillMode", "flat", "size", "small", "title", "View details", 3, "click"], [1, "fa-solid", "fa-external-link"], [2, "height", "300px", 3, "Params", "NewRecordValues", "AllowLoad", "EditMode"], [1, "fa-solid", "fa-database", 2, "color", "#6c757d"], [2, "margin", "0 0 12px 0", "color", "#495057"], [2, "height", "200px", 3, "Params", "NewRecordValues", "AllowLoad", "EditMode"], [1, "fa-solid", "fa-link", 2, "color", "#6c757d"], [3, "close", "width", "height", "minWidth", "minHeight", "draggable", "resizable", "state", "title"], [3, "visibilityChange", "entity", "mode", "isVisible"]], template: function AIPromptFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
|
|
3032
3050
|
i0.ɵɵelementStart(0, "div", 2);
|
|
3033
3051
|
i0.ɵɵelement(1, "div", 3);
|
|
3034
|
-
i0.ɵɵtemplate(2, AIPromptFormComponentExtended_form_2_Template,
|
|
3052
|
+
i0.ɵɵtemplate(2, AIPromptFormComponentExtended_form_2_Template, 66, 40, "form", 4)(3, AIPromptFormComponentExtended_Conditional_3_Template, 2, 12, "kendo-window", 5);
|
|
3035
3053
|
i0.ɵɵelementEnd();
|
|
3036
3054
|
} if (rf & 2) {
|
|
3037
3055
|
i0.ɵɵadvance(2);
|
|
@@ -3046,7 +3064,7 @@ AIPromptFormComponentExtended = __decorate([
|
|
|
3046
3064
|
export { AIPromptFormComponentExtended };
|
|
3047
3065
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AIPromptFormComponentExtended, [{
|
|
3048
3066
|
type: Component,
|
|
3049
|
-
args: [{ selector: 'mj-ai-prompt-form', template: "<div class=\"record-form-container\">\n <!-- Dialog container for Kendo dialogs -->\n <div kendoDialogContainer></div>\n <form *ngIf=\"record\" class=\"record-form\" #form=\"ngForm\" >\n <mj-form-toolbar [form]=\"this\"></mj-form-toolbar>\n\n <!-- Main Content Area - Template Editor and Configuration -->\n <div class=\"prompt-main-area\" style=\"display: flex; flex-direction: column; height: 100%; overflow-y: auto;\">\n \n <!-- Header Section -->\n <div class=\"prompt-header\" style=\"flex-shrink: 0; padding: 20px; background: #f8f9fa; border-bottom: 2px solid #e9ecef;\">\n <div style=\"display: flex; justify-content: space-between; align-items: flex-start; gap: 20px;\">\n \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: #6f42c1; 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: #495057; 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 \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: #495057; 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: #495057; font-size: 0.9em;\">\n Type <span style=\"color: #dc3545;\">*</span>\n </label>\n @if (isLoadingPromptTypes) {\n <div style=\"padding: 8px; color: #6c757d; 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 \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: #6c757d; font-size: 0.9em; line-height: 1.4;\">{{ record.Description }}</p>\n }\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: #6c757d;\"></i>\n <span style=\"color: #6c757d;\">Type:</span>\n <span style=\"color: #495057; font-weight: 500;\">{{ getPromptTypeDisplayName(record.TypeID) }}</span>\n </div>\n }\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: #6c757d;\"></i>\n <span style=\"color: #6c757d;\">Parallelization:</span>\n <span style=\"color: #495057; font-weight: 500;\">{{ getParallelizationModeDisplay() }}</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-code\" style=\"color: #6c757d;\"></i>\n <span style=\"color: #6c757d;\">Output:</span>\n <span [style.color]=\"getValidationColor()\" style=\"font-weight: 500;\">{{ getOutputTypeDisplay() }}</span>\n </div>\n \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 </div>\n </div>\n \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 \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\n <!-- Configuration Sections with Expansion Panels -->\n <div class=\"configuration-sections\" style=\"flex: 1; background: white; border-top: 2px solid #e9ecef; 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: #6c757d;\"></i>\n Template Editor\n @if (template) {\n <span style=\"color: #6c757d; font-size: 0.9em; font-weight: normal;\">\u2022 {{ template.Name }}</span>\n }\n </span>\n </ng-template>\n \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: #6c757d;\">\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: #6c757d;\">\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: #495057;\">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 #e9ecef; background: #f8f9fa;\">\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 \n <!-- Template Editor -->\n <div style=\"flex: 1; background: white; border-radius: 6px; border: 1px solid #e9ecef;\">\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\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: #6c757d;\"></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: #6c757d; 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 \n <!-- Direct Content Projection -->\n <div style=\"padding: 16px 0;\">\n <!-- Model Management Interface -->\n <div class=\"model-management\" style=\"border: 1px solid #dee2e6; border-radius: 6px; background: #f8f9fa;\">\n @if (isLoadingModels) {\n <div class=\"loading-state\" style=\"padding: 20px; text-align: center; color: #6c757d;\">\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: #6c757d;\">\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: #e3f2fd; border-bottom: 1px solid #bbdefb; color: #1565c0; 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: #e9ecef; font-weight: 600; font-size: 0.85em; color: #495057; border-bottom: 1px solid #dee2e6;\">\n <div title=\"Priority order - models are tried from top to bottom\">\n <i class=\"fa-solid fa-sort\" style=\"color: #6c757d;\"></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 \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 ? '#e3f2fd' : 'white')\"\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 #e9ecef; align-items: start; transition: background 0.2s, opacity 0.2s;\">\n \n <!-- Drag Handle / Priority -->\n <div class=\"drag-handle\" style=\"display: flex; flex-direction: column; align-items: center; justify-content: center; color: #6c757d;\">\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 \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 \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: #6c757d; font-style: italic; font-size: 0.9em;\">No vendors available</span>\n }\n }\n } @else {\n <span style=\"color: #6c757d; 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: #6c757d; font-size: 0.9em;\">-</span>\n }\n }\n </div>\n \n <!-- Configuration -->\n <div class=\"model-configuration\">\n @if (EditMode) {\n @if (isLoadingConfigurations) {\n <div style=\"padding: 4px; color: #6c757d; 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: #6c757d;\">\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 \n <!-- Created Date -->\n <div class=\"model-created\">\n @if (model.ID) {\n <span style=\"color: #6c757d; 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 \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 \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 #e9ecef; background: #f8f9fa; font-size: 0.85em; color: #6c757d;\">\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 \n <!-- Parallel execution fields when prompt is ModelSpecific -->\n @if (record.ParallelizationMode === 'ModelSpecific') {\n <div style=\"padding: 8px; background: #fff; border: 1px solid #dee2e6; border-radius: 4px; margin-top: 8px;\">\n <div style=\"margin-bottom: 6px; font-weight: 600; color: #495057; font-size: 0.9em;\">\n <i class=\"fa-solid fa-layer-group\"></i> Model-Specific Parallel Execution\n </div>\n \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: #495057;\">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 \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: #495057;\">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 \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: #495057;\">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 \n @if (EditMode && UserCanCreatePromptModels) {\n <div class=\"add-model-row\" style=\"padding: 12px 16px; text-align: center; background: #f8f9fa; border-top: 1px solid #dee2e6;\">\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\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: #6c757d;\"></i>\n Advanced Configuration\n </span>\n </ng-template>\n \n <!-- Direct Content Projection -->\n <div style=\"padding: 16px 0;\">\n <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 20px;\">\n \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 \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 \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 \n <mj-form-field \n [record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"OutputType\"\n Type=\"dropdownlist\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n \n </div>\n \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 \n <mj-form-field \n [record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"EnableCaching\"\n Type=\"checkbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n \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: #495057; font-size: 0.9em;\">\n Result Selector Prompt\n </label>\n @if (EditMode) {\n @if (isLoadingResultSelectorData) {\n <div style=\"padding: 8px; color: #6c757d; 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: #495057;\">{{ getPromptDisplayName(record.ResultSelectorPromptID || '') || 'None selected' }}</span>\n }\n </div>\n </div>\n </div>\n </div>\n </kendo-expansionpanel>\n\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: #6c757d;\"></i>\n Template Parameters\n <span class=\"badge\" style=\"background: #6f42c1; color: white; padding: 2px 6px; border-radius: 10px; font-size: 0.7em;\">\n {{ templateParams.length }}\n </span>\n <span style=\"color: #6c757d; 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 \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: #6c757d;\">\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: #6c757d;\">\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 #e9ecef; border-radius: 8px; padding: 16px; background: #f8f9fa; transition: all 0.2s;\"\n [style.border-left]=\"'4px solid ' + getParamTypeColor(param.Type)\">\n \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: #495057; 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: #6c757d; font-size: 0.85em;\">Optional</span>\n }\n </div>\n </div>\n \n <!-- Parameter Description -->\n @if (param.Description) {\n <p style=\"margin: 0 0 8px 0; color: #6c757d; font-size: 0.9em; line-height: 1.4;\">\n {{ param.Description }}\n </p>\n }\n \n <!-- Type-specific Information -->\n <div style=\"font-size: 0.85em; color: #495057;\">\n <span style=\"display: flex; align-items: center; gap: 4px; margin-bottom: 4px;\">\n <i class=\"fa-solid fa-info-circle\" style=\"color: #6c757d;\"></i>\n {{ getParamTypeDescription(param) }}\n </span>\n </div>\n \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: white; padding: 8px 12px; border-radius: 4px; border: 1px solid #dee2e6;\">\n <label style=\"display: block; font-size: 0.8em; color: #6c757d; margin-bottom: 2px;\">Default Value</label>\n <code style=\"font-size: 0.85em; color: #495057; word-break: break-all;\">{{ param.DefaultValue }}</code>\n </div>\n }\n \n @if (param.EntityID) {\n <div style=\"background: white; padding: 8px 12px; border-radius: 4px; border: 1px solid #dee2e6;\">\n <label style=\"display: block; font-size: 0.8em; color: #6c757d; margin-bottom: 2px;\">Entity</label>\n <span style=\"font-size: 0.85em; color: #495057;\">{{ param.Entity || 'Entity ID: ' + param.EntityID }}</span>\n </div>\n }\n \n @if (param.LinkedParameterName) {\n <div style=\"background: white; padding: 8px 12px; border-radius: 4px; border: 1px solid #dee2e6;\">\n <label style=\"display: block; font-size: 0.8em; color: #6c757d; margin-bottom: 2px;\">Linked To</label>\n <span style=\"font-size: 0.85em; color: #495057;\">\n {{ param.LinkedParameterName }}\n @if (param.LinkedParameterField) {\n ({{ param.LinkedParameterField }})\n }\n </span>\n </div>\n }\n \n @if (param.ExtraFilter) {\n <div style=\"background: white; padding: 8px 12px; border-radius: 4px; border: 1px solid #dee2e6;\">\n <label style=\"display: block; font-size: 0.8em; color: #6c757d; margin-bottom: 2px;\">Filter</label>\n <code style=\"font-size: 0.8em; color: #495057; word-break: break-all;\">{{ param.ExtraFilter }}</code>\n </div>\n }\n \n @if (param.RecordID) {\n <div style=\"background: white; padding: 8px 12px; border-radius: 4px; border: 1px solid #dee2e6;\">\n <label style=\"display: block; font-size: 0.8em; color: #6c757d; margin-bottom: 2px;\">Record ID</label>\n <code style=\"font-size: 0.85em; color: #495057;\">{{ param.RecordID }}</code>\n </div>\n }\n </div>\n </div>\n }\n </div>\n \n <!-- Help Text -->\n <div style=\"margin-top: 16px; padding: 12px; background: #e3f2fd; border-radius: 6px; border: 1px solid #bbdefb;\">\n <div style=\"display: flex; align-items: flex-start; gap: 8px;\">\n <i class=\"fa-solid fa-lightbulb\" style=\"color: #1976d2; margin-top: 2px;\"></i>\n <div style=\"flex: 1; font-size: 0.85em; color: #1565c0; 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\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: #6c757d;\"></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 \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 #dee2e6; border-radius: 4px;\">\n </mj-code-editor>\n <div style=\"margin-top: 8px; color: #6c757d; 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: #f8f9fa; border: 1px solid #dee2e6; 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\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: #6c757d;\"></i>\n Execution History\n @if (executionHistory.length > 0) {\n <span style=\"color: #6c757d; font-weight: normal;\">({{ executionHistory.length }})</span>\n }\n </span>\n </ng-template>\n \n <!-- Custom Execution History Viewer -->\n <div style=\"padding: 16px;\">\n @if (isLoadingHistory) {\n <div style=\"text-align: center; padding: 40px; color: #6c757d;\">\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: #6c757d;\">\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: #6c757d; 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: #6c757d; 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 \n <!-- Execution History Table -->\n <div style=\"border: 1px solid #e9ecef; border-radius: 8px; overflow: hidden;\">\n <table style=\"width: 100%; border-collapse: collapse;\">\n <thead>\n <tr style=\"background: #f8f9fa; border-bottom: 2px solid #e9ecef;\">\n <th style=\"padding: 12px; text-align: left; font-weight: 600; color: #495057;\">Status</th>\n <th style=\"padding: 12px; text-align: left; font-weight: 600; color: #495057;\">Date & Time</th>\n <th style=\"padding: 12px; text-align: left; font-weight: 600; color: #495057;\">Model</th>\n <th style=\"padding: 12px; text-align: left; font-weight: 600; color: #495057;\">Duration</th>\n <th style=\"padding: 12px; text-align: right; font-weight: 600; color: #495057;\">Tokens</th>\n <th style=\"padding: 12px; text-align: right; font-weight: 600; color: #495057;\">Cost</th>\n <th style=\"padding: 12px; text-align: center; font-weight: 600; color: #495057;\">Type</th>\n <th style=\"padding: 12px; text-align: center; font-weight: 600; color: #495057;\">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 #f1f3f5;\">\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: #495057;\">\n {{ run.RunAt | date:'short' }}\n </td>\n <td style=\"padding: 12px; color: #495057;\">\n <span style=\"display: flex; align-items: center; gap: 6px;\">\n <i class=\"fa-solid fa-microchip\" style=\"color: #6c757d;\"></i>\n {{ run.Model || 'Unknown' }}\n </span>\n </td>\n <td style=\"padding: 12px; color: #495057;\">\n {{ formatDuration(run.ExecutionTimeMS) }}\n </td>\n <td style=\"padding: 12px; text-align: right; color: #495057;\">\n {{ formatTokens(run.TokensUsed) }}\n </td>\n <td style=\"padding: 12px; text-align: right; color: #495057;\">\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: #e9ecef; \n color: #495057; 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\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: #6c757d;\"></i>\n Result Cache\n </span>\n </ng-template>\n \n <!-- Direct Content Projection -->\n <div style=\"padding: 16px 0;\">\n <mj-user-view-grid \n [Params]=\"BuildRelationshipViewParamsByEntityName('AI Result Cache','AIPromptID')\" \n [NewRecordValues]=\"NewRecordValues('AI Result Cache')\"\n [AllowLoad]=\"true\"\n [EditMode]=\"GridEditMode()\" \n style=\"height: 300px;\">\n </mj-user-view-grid>\n </div>\n </kendo-expansionpanel>\n }\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: #6c757d;\"></i>\n Related Items\n </span>\n </ng-template>\n \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: #495057;\">AI Agents Using This Prompt</h6>\n <mj-user-view-grid \n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Agent Prompts','PromptID')\" \n [NewRecordValues]=\"NewRecordValues('MJ: AI Agent Prompts')\"\n [AllowLoad]=\"true\"\n [EditMode]=\"GridEditMode()\" \n style=\"height: 200px;\">\n </mj-user-view-grid>\n </div>\n \n <!-- Result Selector References -->\n <div>\n <h6 style=\"margin: 0 0 12px 0; color: #495057;\">Prompts Using This as Result Selector</h6>\n <mj-user-view-grid \n [Params]=\"BuildRelationshipViewParamsByEntityName('AI Prompts','ResultSelectorPromptID')\" \n [NewRecordValues]=\"NewRecordValues('AI Prompts')\"\n [AllowLoad]=\"true\"\n [EditMode]=\"GridEditMode()\" \n style=\"height: 200px;\">\n </mj-user-view-grid>\n </div>\n </div>\n </div>\n </kendo-expansionpanel>\n }\n </div>\n </div>\n </form>\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: [".record-form-container {\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n padding: 10px;\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 #e9ecef;\n}\n\n.config-item:last-child {\n border-bottom: none;\n}\n\n.template-tab-content {\n background: #fff;\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: #fff;\n border-radius: 6px;\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: rgba(0,0,0,0.02);\n border-radius: 4px;\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: #f8f9fa;\n}\n\n.history-row.even-row {\n background: white;\n}\n\n.history-row:hover {\n background: #e9ecef !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: 0 4px 12px rgba(0,0,0,0.1);\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}"] }]
|
|
3067
|
+
args: [{ selector: 'mj-ai-prompt-form', template: "<div class=\"record-form-container\">\n <!-- Dialog container for Kendo dialogs -->\n <div kendoDialogContainer></div>\n <form *ngIf=\"record\" class=\"record-form\" #form=\"ngForm\" >\n <mj-form-toolbar [form]=\"this\"></mj-form-toolbar>\n\n <!-- Main Content Area - Template Editor and Configuration -->\n <div class=\"prompt-main-area\" style=\"display: flex; flex-direction: column; height: 100%; overflow-y: auto;\">\n \n <!-- Header Section -->\n <div class=\"prompt-header\" style=\"flex-shrink: 0; padding: 20px; background: #f8f9fa; border-bottom: 2px solid #e9ecef;\">\n <div style=\"display: flex; justify-content: space-between; align-items: flex-start; gap: 20px;\">\n \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: #6f42c1; 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: #495057; 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 \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: #495057; 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: #495057; font-size: 0.9em;\">\n Type <span style=\"color: #dc3545;\">*</span>\n </label>\n @if (isLoadingPromptTypes) {\n <div style=\"padding: 8px; color: #6c757d; 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 \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: #6c757d; font-size: 0.9em; line-height: 1.4;\">{{ record.Description }}</p>\n }\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: #6c757d;\"></i>\n <span style=\"color: #6c757d;\">Type:</span>\n <span style=\"color: #495057; font-weight: 500;\">{{ getPromptTypeDisplayName(record.TypeID) }}</span>\n </div>\n }\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: #6c757d;\"></i>\n <span style=\"color: #6c757d;\">Parallelization:</span>\n <span style=\"color: #495057; font-weight: 500;\">{{ getParallelizationModeDisplay() }}</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-code\" style=\"color: #6c757d;\"></i>\n <span style=\"color: #6c757d;\">Output:</span>\n <span [style.color]=\"getValidationColor()\" style=\"font-weight: 500;\">{{ getOutputTypeDisplay() }}</span>\n </div>\n \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 \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: #6c757d;\"></i>\n <span style=\"color: #6c757d;\">Effort Level:</span>\n <span style=\"color: #495057; font-weight: 500;\">{{ record.EffortLevel }}</span>\n </div>\n }\n </div>\n </div>\n \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 \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\n <!-- Configuration Sections with Expansion Panels -->\n <div class=\"configuration-sections\" style=\"flex: 1; background: white; border-top: 2px solid #e9ecef; 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: #6c757d;\"></i>\n Template Editor\n @if (template) {\n <span style=\"color: #6c757d; font-size: 0.9em; font-weight: normal;\">\u2022 {{ template.Name }}</span>\n }\n </span>\n </ng-template>\n \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: #6c757d;\">\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: #6c757d;\">\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: #495057;\">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 #e9ecef; background: #f8f9fa;\">\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 \n <!-- Template Editor -->\n <div style=\"flex: 1; background: white; border-radius: 6px; border: 1px solid #e9ecef;\">\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\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: #6c757d;\"></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: #6c757d; 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 \n <!-- Direct Content Projection -->\n <div style=\"padding: 16px 0;\">\n <!-- Model Management Interface -->\n <div class=\"model-management\" style=\"border: 1px solid #dee2e6; border-radius: 6px; background: #f8f9fa;\">\n @if (isLoadingModels) {\n <div class=\"loading-state\" style=\"padding: 20px; text-align: center; color: #6c757d;\">\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: #6c757d;\">\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: #e3f2fd; border-bottom: 1px solid #bbdefb; color: #1565c0; 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: #e9ecef; font-weight: 600; font-size: 0.85em; color: #495057; border-bottom: 1px solid #dee2e6;\">\n <div title=\"Priority order - models are tried from top to bottom\">\n <i class=\"fa-solid fa-sort\" style=\"color: #6c757d;\"></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 \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 ? '#e3f2fd' : 'white')\"\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 #e9ecef; align-items: start; transition: background 0.2s, opacity 0.2s;\">\n \n <!-- Drag Handle / Priority -->\n <div class=\"drag-handle\" style=\"display: flex; flex-direction: column; align-items: center; justify-content: center; color: #6c757d;\">\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 \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 \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: #6c757d; font-style: italic; font-size: 0.9em;\">No vendors available</span>\n }\n }\n } @else {\n <span style=\"color: #6c757d; 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: #6c757d; font-size: 0.9em;\">-</span>\n }\n }\n </div>\n \n <!-- Configuration -->\n <div class=\"model-configuration\">\n @if (EditMode) {\n @if (isLoadingConfigurations) {\n <div style=\"padding: 4px; color: #6c757d; 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: #6c757d;\">\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 \n <!-- Created Date -->\n <div class=\"model-created\">\n @if (model.ID) {\n <span style=\"color: #6c757d; 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 \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 \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 #e9ecef; background: #f8f9fa; font-size: 0.85em; color: #6c757d;\">\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 \n <!-- Parallel execution fields when prompt is ModelSpecific -->\n @if (record.ParallelizationMode === 'ModelSpecific') {\n <div style=\"padding: 8px; background: #fff; border: 1px solid #dee2e6; border-radius: 4px; margin-top: 8px;\">\n <div style=\"margin-bottom: 6px; font-weight: 600; color: #495057; font-size: 0.9em;\">\n <i class=\"fa-solid fa-layer-group\"></i> Model-Specific Parallel Execution\n </div>\n \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: #495057;\">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 \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: #495057;\">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 \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: #495057;\">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 \n @if (EditMode && UserCanCreatePromptModels) {\n <div class=\"add-model-row\" style=\"padding: 12px 16px; text-align: center; background: #f8f9fa; border-top: 1px solid #dee2e6;\">\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\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: #6c757d;\"></i>\n Advanced Configuration\n </span>\n </ng-template>\n \n <!-- Direct Content Projection -->\n <div style=\"padding: 16px 0;\">\n <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 20px;\">\n \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 \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 \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 \n <mj-form-field \n [record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"OutputType\"\n Type=\"dropdownlist\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n \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 \n </div>\n \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 \n <mj-form-field \n [record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"EnableCaching\"\n Type=\"checkbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n \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: #495057; font-size: 0.9em;\">\n Result Selector Prompt\n </label>\n @if (EditMode) {\n @if (isLoadingResultSelectorData) {\n <div style=\"padding: 8px; color: #6c757d; 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: #495057;\">{{ getPromptDisplayName(record.ResultSelectorPromptID || '') || 'None selected' }}</span>\n }\n </div>\n </div>\n </div>\n </div>\n </kendo-expansionpanel>\n\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: #6c757d;\"></i>\n Template Parameters\n <span class=\"badge\" style=\"background: #6f42c1; color: white; padding: 2px 6px; border-radius: 10px; font-size: 0.7em;\">\n {{ templateParams.length }}\n </span>\n <span style=\"color: #6c757d; 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 \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: #6c757d;\">\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: #6c757d;\">\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 #e9ecef; border-radius: 8px; padding: 16px; background: #f8f9fa; transition: all 0.2s;\"\n [style.border-left]=\"'4px solid ' + getParamTypeColor(param.Type)\">\n \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: #495057; 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: #6c757d; font-size: 0.85em;\">Optional</span>\n }\n </div>\n </div>\n \n <!-- Parameter Description -->\n @if (param.Description) {\n <p style=\"margin: 0 0 8px 0; color: #6c757d; font-size: 0.9em; line-height: 1.4;\">\n {{ param.Description }}\n </p>\n }\n \n <!-- Type-specific Information -->\n <div style=\"font-size: 0.85em; color: #495057;\">\n <span style=\"display: flex; align-items: center; gap: 4px; margin-bottom: 4px;\">\n <i class=\"fa-solid fa-info-circle\" style=\"color: #6c757d;\"></i>\n {{ getParamTypeDescription(param) }}\n </span>\n </div>\n \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: white; padding: 8px 12px; border-radius: 4px; border: 1px solid #dee2e6;\">\n <label style=\"display: block; font-size: 0.8em; color: #6c757d; margin-bottom: 2px;\">Default Value</label>\n <code style=\"font-size: 0.85em; color: #495057; word-break: break-all;\">{{ param.DefaultValue }}</code>\n </div>\n }\n \n @if (param.EntityID) {\n <div style=\"background: white; padding: 8px 12px; border-radius: 4px; border: 1px solid #dee2e6;\">\n <label style=\"display: block; font-size: 0.8em; color: #6c757d; margin-bottom: 2px;\">Entity</label>\n <span style=\"font-size: 0.85em; color: #495057;\">{{ param.Entity || 'Entity ID: ' + param.EntityID }}</span>\n </div>\n }\n \n @if (param.LinkedParameterName) {\n <div style=\"background: white; padding: 8px 12px; border-radius: 4px; border: 1px solid #dee2e6;\">\n <label style=\"display: block; font-size: 0.8em; color: #6c757d; margin-bottom: 2px;\">Linked To</label>\n <span style=\"font-size: 0.85em; color: #495057;\">\n {{ param.LinkedParameterName }}\n @if (param.LinkedParameterField) {\n ({{ param.LinkedParameterField }})\n }\n </span>\n </div>\n }\n \n @if (param.ExtraFilter) {\n <div style=\"background: white; padding: 8px 12px; border-radius: 4px; border: 1px solid #dee2e6;\">\n <label style=\"display: block; font-size: 0.8em; color: #6c757d; margin-bottom: 2px;\">Filter</label>\n <code style=\"font-size: 0.8em; color: #495057; word-break: break-all;\">{{ param.ExtraFilter }}</code>\n </div>\n }\n \n @if (param.RecordID) {\n <div style=\"background: white; padding: 8px 12px; border-radius: 4px; border: 1px solid #dee2e6;\">\n <label style=\"display: block; font-size: 0.8em; color: #6c757d; margin-bottom: 2px;\">Record ID</label>\n <code style=\"font-size: 0.85em; color: #495057;\">{{ param.RecordID }}</code>\n </div>\n }\n </div>\n </div>\n }\n </div>\n \n <!-- Help Text -->\n <div style=\"margin-top: 16px; padding: 12px; background: #e3f2fd; border-radius: 6px; border: 1px solid #bbdefb;\">\n <div style=\"display: flex; align-items: flex-start; gap: 8px;\">\n <i class=\"fa-solid fa-lightbulb\" style=\"color: #1976d2; margin-top: 2px;\"></i>\n <div style=\"flex: 1; font-size: 0.85em; color: #1565c0; 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\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: #6c757d;\"></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 \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 #dee2e6; border-radius: 4px;\">\n </mj-code-editor>\n <div style=\"margin-top: 8px; color: #6c757d; 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: #f8f9fa; border: 1px solid #dee2e6; 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\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: #6c757d;\"></i>\n Execution History\n @if (executionHistory.length > 0) {\n <span style=\"color: #6c757d; font-weight: normal;\">({{ executionHistory.length }})</span>\n }\n </span>\n </ng-template>\n \n <!-- Custom Execution History Viewer -->\n <div style=\"padding: 16px;\">\n @if (isLoadingHistory) {\n <div style=\"text-align: center; padding: 40px; color: #6c757d;\">\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: #6c757d;\">\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: #6c757d; 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: #6c757d; 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 \n <!-- Execution History Table -->\n <div style=\"border: 1px solid #e9ecef; border-radius: 8px; overflow: hidden;\">\n <table style=\"width: 100%; border-collapse: collapse;\">\n <thead>\n <tr style=\"background: #f8f9fa; border-bottom: 2px solid #e9ecef;\">\n <th style=\"padding: 12px; text-align: left; font-weight: 600; color: #495057;\">Status</th>\n <th style=\"padding: 12px; text-align: left; font-weight: 600; color: #495057;\">Date & Time</th>\n <th style=\"padding: 12px; text-align: left; font-weight: 600; color: #495057;\">Model</th>\n <th style=\"padding: 12px; text-align: left; font-weight: 600; color: #495057;\">Duration</th>\n <th style=\"padding: 12px; text-align: right; font-weight: 600; color: #495057;\">Tokens</th>\n <th style=\"padding: 12px; text-align: right; font-weight: 600; color: #495057;\">Cost</th>\n <th style=\"padding: 12px; text-align: center; font-weight: 600; color: #495057;\">Type</th>\n <th style=\"padding: 12px; text-align: center; font-weight: 600; color: #495057;\">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 #f1f3f5;\">\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: #495057;\">\n {{ run.RunAt | date:'short' }}\n </td>\n <td style=\"padding: 12px; color: #495057;\">\n <span style=\"display: flex; align-items: center; gap: 6px;\">\n <i class=\"fa-solid fa-microchip\" style=\"color: #6c757d;\"></i>\n {{ run.Model || 'Unknown' }}\n </span>\n </td>\n <td style=\"padding: 12px; color: #495057;\">\n {{ formatDuration(run.ExecutionTimeMS) }}\n </td>\n <td style=\"padding: 12px; text-align: right; color: #495057;\">\n {{ formatTokens(run.TokensUsed) }}\n </td>\n <td style=\"padding: 12px; text-align: right; color: #495057;\">\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: #e9ecef; \n color: #495057; 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\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: #6c757d;\"></i>\n Result Cache\n </span>\n </ng-template>\n \n <!-- Direct Content Projection -->\n <div style=\"padding: 16px 0;\">\n <mj-user-view-grid \n [Params]=\"BuildRelationshipViewParamsByEntityName('AI Result Cache','AIPromptID')\" \n [NewRecordValues]=\"NewRecordValues('AI Result Cache')\"\n [AllowLoad]=\"true\"\n [EditMode]=\"GridEditMode()\" \n style=\"height: 300px;\">\n </mj-user-view-grid>\n </div>\n </kendo-expansionpanel>\n }\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: #6c757d;\"></i>\n Related Items\n </span>\n </ng-template>\n \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: #495057;\">AI Agents Using This Prompt</h6>\n <mj-user-view-grid \n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Agent Prompts','PromptID')\" \n [NewRecordValues]=\"NewRecordValues('MJ: AI Agent Prompts')\"\n [AllowLoad]=\"true\"\n [EditMode]=\"GridEditMode()\" \n style=\"height: 200px;\">\n </mj-user-view-grid>\n </div>\n \n <!-- Result Selector References -->\n <div>\n <h6 style=\"margin: 0 0 12px 0; color: #495057;\">Prompts Using This as Result Selector</h6>\n <mj-user-view-grid \n [Params]=\"BuildRelationshipViewParamsByEntityName('AI Prompts','ResultSelectorPromptID')\" \n [NewRecordValues]=\"NewRecordValues('AI Prompts')\"\n [AllowLoad]=\"true\"\n [EditMode]=\"GridEditMode()\" \n style=\"height: 200px;\">\n </mj-user-view-grid>\n </div>\n </div>\n </div>\n </kendo-expansionpanel>\n }\n </div>\n </div>\n </form>\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: [".record-form-container {\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n padding: 10px;\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 #e9ecef;\n}\n\n.config-item:last-child {\n border-bottom: none;\n}\n\n.template-tab-content {\n background: #fff;\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: #fff;\n border-radius: 6px;\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: rgba(0,0,0,0.02);\n border-radius: 4px;\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: #f8f9fa;\n}\n\n.history-row.even-row {\n background: white;\n}\n\n.history-row:hover {\n background: #e9ecef !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: 0 4px 12px rgba(0,0,0,0.1);\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}"] }]
|
|
3050
3068
|
}], () => [{ type: i0.ElementRef }, { type: i1.SharedService }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i0.ChangeDetectorRef }, { type: i3.AITestHarnessDialogService }, { type: i0.ViewContainerRef }, { type: i4.AIPromptManagementService }], { templateEditor: [{
|
|
3051
3069
|
type: ViewChild,
|
|
3052
3070
|
args: ['templateEditor']
|