@memberjunction/ng-core-entity-forms 5.41.0 → 5.43.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/RecordProcesses/record-process-form.component.d.ts +16 -0
- package/dist/lib/custom/RecordProcesses/record-process-form.component.d.ts.map +1 -0
- package/dist/lib/custom/RecordProcesses/record-process-form.component.js +54 -0
- package/dist/lib/custom/RecordProcesses/record-process-form.component.js.map +1 -0
- package/dist/lib/custom/Templates/template-param-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/Templates/template-param-dialog.component.js +11 -23
- package/dist/lib/custom/Templates/template-param-dialog.component.js.map +1 -1
- package/dist/lib/custom/custom-forms.module.d.ts +28 -26
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +15 -6
- package/dist/lib/custom/custom-forms.module.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js +54 -36
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentNote/mjaiagentnote.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentNote/mjaiagentnote.form.component.js +13 -19
- package/dist/lib/generated/Entities/MJAIAgentNote/mjaiagentnote.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js +31 -13
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js +36 -18
- package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js +34 -16
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJActionExecutionLog/mjactionexecutionlog.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJActionExecutionLog/mjactionexecutionlog.form.component.js +25 -6
- package/dist/lib/generated/Entities/MJActionExecutionLog/mjactionexecutionlog.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +138 -66
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityActionInvocation/mjentityactioninvocation.form.component.js +10 -8
- package/dist/lib/generated/Entities/MJEntityActionInvocation/mjentityactioninvocation.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJIntegration/mjintegration.form.component.js +37 -35
- package/dist/lib/generated/Entities/MJIntegration/mjintegration.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJIntegrationObject/mjintegrationobject.form.component.js +33 -21
- package/dist/lib/generated/Entities/MJIntegrationObject/mjintegrationobject.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJList/mjlist.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJList/mjlist.form.component.js +26 -8
- package/dist/lib/generated/Entities/MJList/mjlist.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJOpenApp/mjopenapp.form.component.js +25 -23
- package/dist/lib/generated/Entities/MJOpenApp/mjopenapp.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.js +143 -0
- package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJProcessRunDetail/mjprocessrundetail.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJProcessRunDetail/mjprocessrundetail.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJProcessRunDetail/mjprocessrundetail.form.component.js +102 -0
- package/dist/lib/generated/Entities/MJProcessRunDetail/mjprocessrundetail.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js +175 -0
- package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRecordProcessCategory/mjrecordprocesscategory.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRecordProcessCategory/mjrecordprocesscategory.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRecordProcessCategory/mjrecordprocesscategory.form.component.js +111 -0
- package/dist/lib/generated/Entities/MJRecordProcessCategory/mjrecordprocesscategory.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRecordProcessWatermark/mjrecordprocesswatermark.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRecordProcessWatermark/mjrecordprocesswatermark.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRecordProcessWatermark/mjrecordprocesswatermark.form.component.js +76 -0
- package/dist/lib/generated/Entities/MJRecordProcessWatermark/mjrecordprocesswatermark.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRemoteOperation/mjremoteoperation.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRemoteOperation/mjremoteoperation.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRemoteOperation/mjremoteoperation.form.component.js +130 -0
- package/dist/lib/generated/Entities/MJRemoteOperation/mjremoteoperation.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRemoteOperationCategory/mjremoteoperationcategory.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRemoteOperationCategory/mjremoteoperationcategory.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRemoteOperationCategory/mjremoteoperationcategory.form.component.js +111 -0
- package/dist/lib/generated/Entities/MJRemoteOperationCategory/mjremoteoperationcategory.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJScheduledJobRun/mjscheduledjobrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJScheduledJobRun/mjscheduledjobrun.form.component.js +28 -10
- package/dist/lib/generated/Entities/MJScheduledJobRun/mjscheduledjobrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +143 -107
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJUserView/mjuserview.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJUserView/mjuserview.form.component.js +26 -8
- package/dist/lib/generated/Entities/MJUserView/mjuserview.form.component.js.map +1 -1
- package/dist/lib/generated/generated-forms.module.d.ts +121 -114
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +96 -75
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/package.json +37 -36
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { MJRecordProcessFormComponent } from '../../generated/Entities/MJRecordProcess/mjrecordprocess.form.component';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Custom form override for `MJ: Record Processes`. Replaces the generated field layout (which exposes the
|
|
5
|
+
* rules as a raw `Configuration` JSON textarea) with the visual `<mj-record-process-editor>` — the same
|
|
6
|
+
* authoring surface used in the Bulk Operations app — so editing a process record anywhere in Explorer
|
|
7
|
+
* gets the business-friendly rules builder + inline dry-run preview. The form's container owns Save; the
|
|
8
|
+
* editor mutates the record in place (ShowToolbar=false).
|
|
9
|
+
*/
|
|
10
|
+
export declare class RecordProcessFormComponentExtended extends MJRecordProcessFormComponent {
|
|
11
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RecordProcessFormComponentExtended, never>;
|
|
12
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RecordProcessFormComponentExtended, "mj-record-process-form-extended", never, {}, {}, never, never, false, never>;
|
|
13
|
+
}
|
|
14
|
+
/** Tree-shaking guard so the override registers with the ClassFactory. */
|
|
15
|
+
export declare function LoadRecordProcessFormComponentExtended(): void;
|
|
16
|
+
//# sourceMappingURL=record-process-form.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-process-form.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/RecordProcesses/record-process-form.component.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,4BAA4B,EAAE,MAAM,yEAAyE,CAAC;;AAEvH;;;;;;GAMG;AACH,qBAMa,kCAAmC,SAAQ,4BAA4B;yCAAvE,kCAAkC;2CAAlC,kCAAkC;CAAwC;AAEvF,0EAA0E;AAC1E,wBAAgB,sCAAsC,IAAI,IAAI,CAE7D"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { Component } from '@angular/core';
|
|
8
|
+
import { RegisterClass } from '@memberjunction/global';
|
|
9
|
+
import { BaseFormComponent } from '@memberjunction/ng-base-forms';
|
|
10
|
+
import { MJRecordProcessFormComponent } from '../../generated/Entities/MJRecordProcess/mjrecordprocess.form.component';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
import * as i1 from "@memberjunction/ng-base-forms";
|
|
13
|
+
import * as i2 from "@memberjunction/ng-record-process-studio";
|
|
14
|
+
function RecordProcessFormComponentExtended_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
15
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
16
|
+
i0.ɵɵelementStart(0, "mj-record-form-container", 1);
|
|
17
|
+
i0.ɵɵlistener("Navigate", function RecordProcessFormComponentExtended_Conditional_0_Template_mj_record_form_container_Navigate_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); })("DeleteRequested", function RecordProcessFormComponentExtended_Conditional_0_Template_mj_record_form_container_DeleteRequested_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnDeleteRequested()); })("FavoriteToggled", function RecordProcessFormComponentExtended_Conditional_0_Template_mj_record_form_container_FavoriteToggled_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnFavoriteToggled()); })("HistoryRequested", function RecordProcessFormComponentExtended_Conditional_0_Template_mj_record_form_container_HistoryRequested_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnHistoryRequested()); })("ListManagementRequested", function RecordProcessFormComponentExtended_Conditional_0_Template_mj_record_form_container_ListManagementRequested_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnListManagementRequested()); });
|
|
18
|
+
i0.ɵɵelement(1, "mj-record-process-editor", 2);
|
|
19
|
+
i0.ɵɵelementEnd();
|
|
20
|
+
} if (rf & 2) {
|
|
21
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
22
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("FormComponent", ctx_r1);
|
|
23
|
+
i0.ɵɵadvance();
|
|
24
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowToolbar", false)("Provider", ctx_r1.ProviderToUse);
|
|
25
|
+
} }
|
|
26
|
+
/**
|
|
27
|
+
* Custom form override for `MJ: Record Processes`. Replaces the generated field layout (which exposes the
|
|
28
|
+
* rules as a raw `Configuration` JSON textarea) with the visual `<mj-record-process-editor>` — the same
|
|
29
|
+
* authoring surface used in the Bulk Operations app — so editing a process record anywhere in Explorer
|
|
30
|
+
* gets the business-friendly rules builder + inline dry-run preview. The form's container owns Save; the
|
|
31
|
+
* editor mutates the record in place (ShowToolbar=false).
|
|
32
|
+
*/
|
|
33
|
+
let RecordProcessFormComponentExtended = class RecordProcessFormComponentExtended extends MJRecordProcessFormComponent {
|
|
34
|
+
static { this.ɵfac = /*@__PURE__*/ (() => { let ɵRecordProcessFormComponentExtended_BaseFactory; return function RecordProcessFormComponentExtended_Factory(__ngFactoryType__) { return (ɵRecordProcessFormComponentExtended_BaseFactory || (ɵRecordProcessFormComponentExtended_BaseFactory = i0.ɵɵgetInheritedFactory(RecordProcessFormComponentExtended)))(__ngFactoryType__ || RecordProcessFormComponentExtended); }; })(); }
|
|
35
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: RecordProcessFormComponentExtended, selectors: [["mj-record-process-form-extended"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 1, consts: [[3, "Record", "FormComponent"], [3, "Navigate", "DeleteRequested", "FavoriteToggled", "HistoryRequested", "ListManagementRequested", "Record", "FormComponent"], [3, "Record", "ShowToolbar", "Provider"]], template: function RecordProcessFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
|
|
36
|
+
i0.ɵɵconditionalCreate(0, RecordProcessFormComponentExtended_Conditional_0_Template, 2, 5, "mj-record-form-container", 0);
|
|
37
|
+
} if (rf & 2) {
|
|
38
|
+
i0.ɵɵconditional(ctx.record ? 0 : -1);
|
|
39
|
+
} }, dependencies: [i1.MjRecordFormContainerComponent, i2.RecordProcessEditorComponent], encapsulation: 2 }); }
|
|
40
|
+
};
|
|
41
|
+
RecordProcessFormComponentExtended = __decorate([
|
|
42
|
+
RegisterClass(BaseFormComponent, 'MJ: Record Processes')
|
|
43
|
+
], RecordProcessFormComponentExtended);
|
|
44
|
+
export { RecordProcessFormComponentExtended };
|
|
45
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(RecordProcessFormComponentExtended, [{
|
|
46
|
+
type: Component,
|
|
47
|
+
args: [{ standalone: false, selector: 'mj-record-process-form-extended', template: "@if (record) {\n<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n\n <mj-record-process-editor [Record]=\"record\" [ShowToolbar]=\"false\" [Provider]=\"ProviderToUse\"></mj-record-process-editor>\n\n</mj-record-form-container>\n}\n" }]
|
|
48
|
+
}], null, null); })();
|
|
49
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(RecordProcessFormComponentExtended, { className: "RecordProcessFormComponentExtended", filePath: "src/lib/custom/RecordProcesses/record-process-form.component.ts", lineNumber: 19 }); })();
|
|
50
|
+
/** Tree-shaking guard so the override registers with the ClassFactory. */
|
|
51
|
+
export function LoadRecordProcessFormComponentExtended() {
|
|
52
|
+
// intentionally empty
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=record-process-form.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-process-form.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/RecordProcesses/record-process-form.component.ts","../../../../src/lib/custom/RecordProcesses/record-process-form.component.html"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,4BAA4B,EAAE,MAAM,yEAAyE,CAAC;;;;;;ICFvH,mDAK4D;IAAxD,AADA,AADA,AADA,AADA,oOAAY,6BAAsB,KAAC,+NAChB,0BAAmB,KAAC,+NACpB,0BAAmB,KAAC,iOACnB,2BAAoB,KAAC,+OACd,kCAA2B,KAAC;IAEvD,8CAAwH;IAE5H,iBAA2B;;;IATiB,AAAlB,sCAAiB,yBAAuB;IAOpC,cAAiB;IAAuB,AAAtB,AAAlB,sCAAiB,sBAAsB,kCAA2B;;ADHhG;;;;;;GAMG;AAOI,IAAM,kCAAkC,GAAxC,MAAM,kCAAmC,SAAQ,4BAA4B;4TAAvE,kCAAkC,yBAAlC,kCAAkC;oEAAlC,kCAAkC;YClB/C,yHAAc;;YAAd,qCAWC;;;ADOY,kCAAkC;IAN9C,aAAa,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;GAM5C,kCAAkC,CAAwC;;iFAA1E,kCAAkC;cAL9C,SAAS;6BACM,KAAK,YACP,iCAAiC;;kFAGlC,kCAAkC;AAE/C,0EAA0E;AAC1E,MAAM,UAAU,sCAAsC;IAClD,sBAAsB;AAC1B,CAAC","sourcesContent":["import { Component } from '@angular/core';\nimport { RegisterClass } from '@memberjunction/global';\nimport { BaseFormComponent } from '@memberjunction/ng-base-forms';\nimport { MJRecordProcessFormComponent } from '../../generated/Entities/MJRecordProcess/mjrecordprocess.form.component';\n\n/**\n * Custom form override for `MJ: Record Processes`. Replaces the generated field layout (which exposes the\n * rules as a raw `Configuration` JSON textarea) with the visual `<mj-record-process-editor>` — the same\n * authoring surface used in the Bulk Operations app — so editing a process record anywhere in Explorer\n * gets the business-friendly rules builder + inline dry-run preview. The form's container owns Save; the\n * editor mutates the record in place (ShowToolbar=false).\n */\n@RegisterClass(BaseFormComponent, 'MJ: Record Processes')\n@Component({\n standalone: false,\n selector: 'mj-record-process-form-extended',\n templateUrl: './record-process-form.component.html',\n})\nexport class RecordProcessFormComponentExtended extends MJRecordProcessFormComponent {}\n\n/** Tree-shaking guard so the override registers with the ClassFactory. */\nexport function LoadRecordProcessFormComponentExtended(): void {\n // intentionally empty\n}\n","@if (record) {\n<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n\n <mj-record-process-editor [Record]=\"record\" [ShowToolbar]=\"false\" [Provider]=\"ProviderToUse\"></mj-record-process-editor>\n\n</mj-record-form-container>\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-param-dialog.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/Templates/template-param-dialog.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAyB,MAAM,+BAA+B,CAAC;AAKxF,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;;AACrE,MAAM,WAAW,aAAa;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,qBAMa,4BAA6B,SAAQ,oBAAqB,YAAW,MAAM;IAC3E,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IAE3C,UAAU,EAAE,OAAO,CAAS;IACnC,IACI,SAAS,IAAI,OAAO,CAEvB;IACD,IAAI,SAAS,CAAC,KAAK,EAAE,OAAO,EAQ3B;IAES,eAAe,wBAA+B;IAC9C,OAAO,qBAA4B;IAEtC,UAAU,EAAE,aAAa,EAAE,CAAM;IACjC,SAAS,UAAS;IAClB,SAAS,UAAS;IAClB,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAQ;IAC5C,oBAAoB,UAAS;IAC7B,kBAAkB,UAAQ;IAC1B,mBAAmB,UAAS;IAC5B,eAAe,UAAQ;IAE9B,OAAO,CAAC,sBAAsB,CAA+B;IAE7D,QAAQ;IAMF,kBAAkB;IAwCxB,YAAY;IAQZ,eAAe,CAAC,KAAK,EAAE,MAAM;IAM7B,iBAAiB;IASX,WAAW;
|
|
1
|
+
{"version":3,"file":"template-param-dialog.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/Templates/template-param-dialog.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAyB,MAAM,+BAA+B,CAAC;AAKxF,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;;AACrE,MAAM,WAAW,aAAa;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,qBAMa,4BAA6B,SAAQ,oBAAqB,YAAW,MAAM;IAC3E,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IAE3C,UAAU,EAAE,OAAO,CAAS;IACnC,IACI,SAAS,IAAI,OAAO,CAEvB;IACD,IAAI,SAAS,CAAC,KAAK,EAAE,OAAO,EAQ3B;IAES,eAAe,wBAA+B;IAC9C,OAAO,qBAA4B;IAEtC,UAAU,EAAE,aAAa,EAAE,CAAM;IACjC,SAAS,UAAS;IAClB,SAAS,UAAS;IAClB,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAQ;IAC5C,oBAAoB,UAAS;IAC7B,kBAAkB,UAAQ;IAC1B,mBAAmB,UAAS;IAC5B,eAAe,UAAQ;IAE9B,OAAO,CAAC,sBAAsB,CAA+B;IAE7D,QAAQ;IAMF,kBAAkB;IAwCxB,YAAY;IAQZ,eAAe,CAAC,KAAK,EAAE,MAAM;IAM7B,iBAAiB;IASX,WAAW;IA+FX,oBAAoB;IAgD1B,KAAK;IAML,OAAO,CAAC,gBAAgB;IAcxB,WAAW;IA6BX,IAAI,gBAAgB,IAAI,MAAM,CAY7B;yCAjTQ,4BAA4B;2CAA5B,4BAA4B;CAkTxC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
2
|
import { RunView } from '@memberjunction/core';
|
|
3
|
+
import { TemplateRunOperation } from '@memberjunction/core-entities';
|
|
3
4
|
import { MJNotificationService } from '@memberjunction/ng-notifications';
|
|
4
5
|
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
@@ -515,26 +516,16 @@ export class TemplateParamDialogComponent extends BaseAngularComponent {
|
|
|
515
516
|
}
|
|
516
517
|
}
|
|
517
518
|
});
|
|
518
|
-
//
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
}
|
|
529
|
-
}
|
|
530
|
-
`;
|
|
531
|
-
const variables = {
|
|
532
|
-
templateId: this.template.ID,
|
|
533
|
-
contextData: JSON.stringify(contextData)
|
|
534
|
-
};
|
|
535
|
-
const result = await dataProvider.ExecuteGQL(query, variables);
|
|
536
|
-
if (result?.RunTemplate) {
|
|
537
|
-
this.testResult = result.RunTemplate;
|
|
519
|
+
// Run the template via the Template.Run Remote Operation (provider-scoped; routes over the
|
|
520
|
+
// generic ExecuteRemoteOperation transport — no bespoke GraphQL client).
|
|
521
|
+
const opResult = await new TemplateRunOperation().Execute({ templateID: this.template.ID, data: contextData }, { provider: this.ProviderToUse });
|
|
522
|
+
{
|
|
523
|
+
this.testResult = {
|
|
524
|
+
success: opResult.Success,
|
|
525
|
+
output: opResult.Output?.output,
|
|
526
|
+
error: opResult.ErrorMessage,
|
|
527
|
+
executionTimeMs: opResult.Output?.executionTimeMs,
|
|
528
|
+
};
|
|
538
529
|
// Collapse parameters and expand results after execution
|
|
539
530
|
this.parametersExpanded = false;
|
|
540
531
|
this.resultsExpanded = true;
|
|
@@ -545,9 +536,6 @@ export class TemplateParamDialogComponent extends BaseAngularComponent {
|
|
|
545
536
|
MJNotificationService.Instance.CreateSimpleNotification(`Template execution failed: ${this.testResult?.error || 'Unknown error'}`, 'error', 5000);
|
|
546
537
|
}
|
|
547
538
|
}
|
|
548
|
-
else {
|
|
549
|
-
throw new Error(result.errors?.[0]?.message || 'Unknown GraphQL error');
|
|
550
|
-
}
|
|
551
539
|
}
|
|
552
540
|
catch (error) {
|
|
553
541
|
console.error('Template test error:', error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-param-dialog.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/Templates/template-param-dialog.component.ts","../../../../src/lib/custom/Templates/template-param-dialog.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\nimport { MJTemplateEntity, MJTemplateParamEntity } from '@memberjunction/core-entities';\nimport { Metadata, RunView } from '@memberjunction/core';\nimport { GraphQLDataProvider } from '@memberjunction/graphql-dataprovider';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\n\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nexport interface ParameterPair {\n key: string;\n value: string;\n isFromTemplate: boolean;\n description?: string;\n isRequired?: boolean;\n type?: string;\n}\n\nexport interface TemplateRunResult {\n success: boolean;\n output?: string;\n error?: string;\n executionTimeMs?: number;\n}\n\n@Component({\n standalone: false,\n selector: 'mj-template-param-dialog',\n templateUrl: './template-param-dialog.component.html',\n styleUrls: ['./template-param-dialog.component.css']\n})\nexport class TemplateParamDialogComponent extends BaseAngularComponent implements OnInit {\n @Input() template: MJTemplateEntity | null = null;\n \n public _isVisible: boolean = false;\n @Input() \n get isVisible(): boolean {\n return this._isVisible;\n }\n set isVisible(value: boolean) {\n const wasVisible = this._isVisible;\n this._isVisible = value;\n \n // Reset dialog state when opening\n if (value && !wasVisible) {\n this.resetDialogState();\n }\n }\n \n @Output() isVisibleChange = new EventEmitter<boolean>();\n @Output() onClose = new EventEmitter<void>();\n\n public parameters: ParameterPair[] = [];\n public isLoading = false;\n public isRunning = false;\n public testResult: TemplateRunResult | null = null;\n public hasUnsavedParameters = false;\n public parametersExpanded = true;\n public jsonPreviewExpanded = false;\n public resultsExpanded = true;\n\n private originalTemplateParams: MJTemplateParamEntity[] = [];\n\n ngOnInit() {\n if (this.template) {\n this.loadTemplateParams();\n }\n }\n\n async loadTemplateParams() {\n if (!this.template?.ID) return;\n\n this.isLoading = true;\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const results = await rv.RunView<MJTemplateParamEntity>({\n EntityName: 'MJ: Template Params',\n ExtraFilter: `TemplateID='${this.template.ID}'`,\n OrderBy: 'Name ASC' \n });\n\n this.originalTemplateParams = results.Results;\n \n // Convert template params to parameter pairs\n this.parameters = this.originalTemplateParams.map(param => ({\n key: param.Name,\n value: param.DefaultValue || '',\n isFromTemplate: true,\n description: param.Description || undefined,\n isRequired: param.IsRequired,\n type: param.Type\n }));\n\n // If no template params, add one empty pair to start\n if (this.parameters.length === 0) {\n this.addParameter();\n }\n\n } catch (error) {\n console.error('Error loading template params:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Error loading template parameters',\n 'error'\n );\n } finally {\n this.isLoading = false;\n }\n }\n\n addParameter() {\n this.parameters.push({\n key: '',\n value: '',\n isFromTemplate: false\n });\n }\n\n removeParameter(index: number) {\n if (this.parameters.length > 1) {\n this.parameters.splice(index, 1);\n }\n }\n\n onParameterChange() {\n // Check if we have new parameters not in template\n this.hasUnsavedParameters = this.parameters.some(param => \n param.key && \n !param.isFromTemplate && \n !this.originalTemplateParams.find(tp => tp.Name === param.key)\n );\n }\n\n async runTemplate() {\n if (!this.template?.ID) return;\n\n // Validate parameter names - check for empty parameter names\n const emptyNameParams = this.parameters.filter(p => p.value && !p.key);\n if (emptyNameParams.length > 0) {\n MJNotificationService.Instance.CreateSimpleNotification(\n 'All parameters must have a name. Please enter parameter names or remove empty parameters.',\n 'warning'\n );\n return;\n }\n\n // Validate required parameters\n const invalidParams = this.parameters.filter(p => p.key && !p.value && p.isRequired);\n if (invalidParams.length > 0) {\n MJNotificationService.Instance.CreateSimpleNotification(\n `Required parameters missing: ${invalidParams.map(p => p.key).join(', ')}`,\n 'warning'\n );\n return;\n }\n\n this.isRunning = true;\n this.testResult = null;\n\n try {\n // Build context data object from parameters\n const contextData: any = {};\n this.parameters.forEach(param => {\n if (param.key && param.value) {\n try {\n // Try to parse as JSON first, fallback to string\n contextData[param.key] = JSON.parse(param.value);\n } catch {\n contextData[param.key] = param.value;\n }\n }\n });\n\n // Get GraphQL data provider\n const dataProvider = this.ProviderToUse as GraphQLDataProvider;\n \n // Execute the RunTemplate GraphQL mutation\n const query = `\n mutation RunTemplate($templateId: String!, $contextData: String) {\n RunTemplate(templateId: $templateId, contextData: $contextData) {\n success\n output\n error\n executionTimeMs\n }\n }\n `;\n\n const variables = {\n templateId: this.template.ID,\n contextData: JSON.stringify(contextData)\n };\n\n const result = await dataProvider.ExecuteGQL(query, variables);\n \n if (result?.RunTemplate) {\n this.testResult = result.RunTemplate;\n \n // Collapse parameters and expand results after execution\n this.parametersExpanded = false;\n this.resultsExpanded = true;\n \n if (this.testResult?.success) {\n MJNotificationService.Instance.CreateSimpleNotification(\n `Template executed successfully in ${this.testResult.executionTimeMs || 0}ms`,\n 'success',\n 4000\n );\n } else {\n MJNotificationService.Instance.CreateSimpleNotification(\n `Template execution failed: ${this.testResult?.error || 'Unknown error'}`,\n 'error',\n 5000\n );\n }\n } else {\n throw new Error(result.errors?.[0]?.message || 'Unknown GraphQL error');\n }\n\n } catch (error) {\n console.error('Template test error:', error);\n this.testResult = {\n success: false,\n error: (error as Error).message || 'Unknown error occurred'\n };\n \n // Still collapse parameters and expand results on error\n this.parametersExpanded = false;\n this.resultsExpanded = true;\n \n MJNotificationService.Instance.CreateSimpleNotification(\n `Template test failed: ${this.testResult?.error || 'Unknown error'}`,\n 'error',\n 5000\n );\n } finally {\n this.isRunning = false;\n }\n }\n\n async updateTemplateParams() {\n if (!this.template?.ID || !this.hasUnsavedParameters) return;\n\n const newParams = this.parameters.filter(param => \n param.key && \n !param.isFromTemplate && \n !this.originalTemplateParams.find(tp => tp.Name === param.key)\n );\n\n if (newParams.length === 0) return;\n\n try {\n const md = this.ProviderToUse;\n \n for (const param of newParams) {\n const templateParam = await md.GetEntityObject<MJTemplateParamEntity>('MJ: Template Params');\n templateParam.TemplateID = this.template.ID;\n templateParam.Name = param.key;\n templateParam.Description = param.description || null;\n templateParam.Type = 'Scalar'; // Default type\n templateParam.DefaultValue = param.value || null;\n templateParam.IsRequired = param.isRequired || false;\n \n const saved = await templateParam.Save();\n if (!saved) {\n throw new Error(`Failed to save parameter: ${param.key}`);\n }\n }\n\n MJNotificationService.Instance.CreateSimpleNotification(\n `Added ${newParams.length} new parameter(s) to template`,\n 'success'\n );\n\n this.hasUnsavedParameters = false;\n \n // Reload template params to sync\n await this.loadTemplateParams();\n\n } catch (error) {\n console.error('Error updating template params:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Error saving template parameters',\n 'error'\n );\n }\n }\n\n close() {\n this._isVisible = false;\n this.isVisibleChange.emit(false);\n this.onClose.emit();\n }\n\n private resetDialogState() {\n // Reset expansion states for a clean testing experience\n this.parametersExpanded = true; // Show params by default\n this.jsonPreviewExpanded = false; // Hide JSON (developer-focused)\n this.resultsExpanded = true; // Show results when they exist\n \n // Clear previous test results\n this.testResult = null;\n this.isRunning = false;\n \n // Reset unsaved parameters flag\n this.hasUnsavedParameters = false;\n }\n\n saveResults() {\n if (!this.testResult) return;\n\n const content = this.testResult.success \n ? this.testResult.output || 'No output'\n : this.testResult.error || 'No error details';\n \n const timestamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, -5);\n const templateName = this.template?.Name?.replace(/[^a-zA-Z0-9]/g, '_') || 'template';\n const status = this.testResult.success ? 'success' : 'error';\n const filename = `${templateName}_${status}_${timestamp}.txt`;\n\n // Create blob and download\n const blob = new Blob([content], { type: 'text/plain' });\n const url = window.URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n link.download = filename;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n window.URL.revokeObjectURL(url);\n\n MJNotificationService.Instance.CreateSimpleNotification(\n `Results saved as ${filename}`,\n 'success'\n );\n }\n\n get parametersAsJson(): string {\n const contextData: any = {};\n this.parameters.forEach(param => {\n if (param.key && param.value) {\n try {\n contextData[param.key] = JSON.parse(param.value);\n } catch {\n contextData[param.key] = param.value;\n }\n }\n });\n return JSON.stringify(contextData, null, 2);\n }\n}","@if (_isVisible) {\n <mj-dialog\n [Visible]=\"true\"\n [Width]=\"800\"\n (Close)=\"close()\">\n <mj-dialog-titlebar>Test Template: {{ template?.Name || 'Unknown' }}</mj-dialog-titlebar>\n <div class=\"dialog-content\" style=\"display: flex; flex-direction: column; height: 100%; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\">\n <!-- Header Section -->\n <div class=\"dlg-header\">\n <div class=\"dlg-header-row\">\n <i class=\"fa-solid fa-sliders\"></i>\n <h5>Template Testing</h5>\n </div>\n <p>\n Configure parameter values for testing. Parameters with <span class=\"required-marker\">*</span> are required.\n </p>\n </div>\n <!-- Loading State -->\n @if (isLoading) {\n <div class=\"dlg-loading\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>Loading template parameters...</span>\n </div>\n } @else {\n <!-- Template Parameters Section -->\n <mj-accordion-panel\n [(Expanded)]=\"parametersExpanded\"\n style=\"margin-bottom: 16px; flex-shrink: 0;\">\n <ng-template mjAccordionTitle>\n <span class=\"dlg-panel-title\">\n <i class=\"fa-solid fa-sliders\"></i>\n Template Parameters\n @if (parameters.length > 0) {\n <span class=\"count-badge\">{{ parameters.length }}</span>\n }\n </span>\n </ng-template>\n <div style=\"padding: 12px 0;\">\n <div class=\"dlg-info-text\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Configure parameter values for template testing. Values can be JSON objects, strings, or numbers.\n </div>\n <!-- Parameters Table -->\n @if (parameters.length > 0) {\n <div class=\"params-table\">\n <!-- Header -->\n <div class=\"params-table-header\">\n <div>Parameter Name</div>\n <div>Value</div>\n <div>Actions</div>\n </div>\n <!-- Parameter Rows -->\n @for (param of parameters; track $index; let i = $index) {\n <div class=\"params-table-row\">\n <!-- Parameter Name -->\n <div class=\"param-name\" style=\"display: flex; flex-direction: column;\">\n <div style=\"display: flex; align-items: center; gap: 4px; margin-bottom: 4px;\">\n @if (param.isFromTemplate) {\n <i class=\"fa-solid fa-database param-source-icon-template\" title=\"From template definition\"></i>\n } @else {\n <i class=\"fa-solid fa-edit param-source-icon-custom\" title=\"Custom parameter\"></i>\n }\n @if (param.isRequired) {\n <span class=\"param-required-marker\">*</span>\n }\n </div>\n @if (param.isFromTemplate) {\n <div class=\"param-key-text\">\n {{ param.key }}\n </div>\n @if (param.description) {\n <div class=\"param-description-text\">\n {{ param.description }}\n </div>\n }\n @if (param.type && param.type !== 'Scalar') {\n <div class=\"param-type-text\">\n Type: {{ param.type }}\n </div>\n }\n } @else {\n <input type=\"text\" class=\"mj-input\"\n [(ngModel)]=\"param.key\"\n (ngModelChange)=\"onParameterChange()\"\n placeholder=\"Parameter name...\"\n [disabled]=\"isRunning\"\n style=\"font-family: 'Courier New', monospace; width: 100%;\" />\n }\n </div>\n <!-- Parameter Value -->\n <div class=\"param-value\">\n <textarea class=\"mj-textarea\"\n [(ngModel)]=\"param.value\"\n (ngModelChange)=\"onParameterChange()\"\n [rows]=\"2\"\n placeholder=\"Enter value (JSON strings, numbers, objects)...\"\n [disabled]=\"isRunning\"\n style=\"font-family: 'Courier New', monospace; font-size: 0.9em; width: 100%;\"></textarea>\n </div>\n <!-- Actions -->\n <div class=\"param-actions\">\n @if (!param.isFromTemplate && parameters.length > 1) {\n <button mjButton variant=\"danger\" size=\"sm\"\n (click)=\"removeParameter(i)\"\n [disabled]=\"isRunning\"\n title=\"Remove parameter\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n </div>\n }\n <!-- Add Parameter Row -->\n <div class=\"add-param-row\">\n <button mjButton variant=\"success\" size=\"sm\"\n (click)=\"addParameter()\"\n [disabled]=\"isRunning\">\n <i class=\"fa-solid fa-plus\"></i> Add Parameter\n </button>\n </div>\n </div>\n } @else {\n <div class=\"no-params-state\">\n <i class=\"fa-solid fa-info-circle\"></i>\n <p>No parameters defined yet</p>\n <button mjButton variant=\"primary\" size=\"sm\"\n (click)=\"addParameter()\"\n [disabled]=\"isRunning\">\n <i class=\"fa-solid fa-plus\"></i> Add First Parameter\n </button>\n </div>\n }\n </div>\n </mj-accordion-panel>\n <!-- JSON Preview Section -->\n <mj-accordion-panel\n [(Expanded)]=\"jsonPreviewExpanded\"\n style=\"margin-bottom: 16px; flex-shrink: 0;\">\n <ng-template mjAccordionTitle>\n <span class=\"dlg-panel-title\">\n <i class=\"fa-solid fa-code\"></i>\n Context Data (JSON)\n </span>\n </ng-template>\n <div style=\"padding: 12px 0;\">\n <div class=\"json-preview-box\">\n <pre>{{ parametersAsJson }}</pre>\n </div>\n </div>\n </mj-accordion-panel>\n <!-- Test Results Section -->\n <mj-accordion-panel\n [(Expanded)]=\"resultsExpanded\"\n style=\"margin-bottom: 16px; flex: 1; display: flex; flex-direction: column;\">\n <ng-template mjAccordionTitle>\n <span class=\"dlg-panel-title\">\n <i class=\"fa-solid fa-chart-line\"></i>\n Test Results\n @if (testResult) {\n @if (testResult.success) {\n <span class=\"result-badge success\"><i class=\"fa-solid fa-check\"></i> Success</span>\n } @else {\n <span class=\"result-badge error\"><i class=\"fa-solid fa-times\"></i> Failed</span>\n }\n }\n </span>\n </ng-template>\n <div style=\"padding: 12px 0; flex: 1; display: flex; flex-direction: column;\">\n @if (isRunning) {\n <div class=\"dlg-loading\" style=\"flex: 1;\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>Running template...</span>\n </div>\n } @else if (testResult) {\n <div style=\"flex: 1; display: flex; flex-direction: column;\">\n <!-- Result Header with Stats -->\n <div class=\"result-stats\" [class.success]=\"testResult.success\" [class.error]=\"!testResult.success\">\n <div class=\"result-stat\">\n <div class=\"result-stat-label\">STATUS</div>\n <div class=\"result-stat-value\">\n {{ testResult.success ? 'Success' : 'Failed' }}\n </div>\n </div>\n @if (testResult.executionTimeMs) {\n <div class=\"result-stat\">\n <div class=\"result-stat-label\">EXECUTION TIME</div>\n <div class=\"result-stat-value\">{{ testResult.executionTimeMs }}ms</div>\n </div>\n }\n <div class=\"result-stat\">\n <div class=\"result-stat-label\">ACTIONS</div>\n <button mjButton variant=\"flat\" size=\"sm\"\n (click)=\"saveResults()\"\n title=\"Save results to file\">\n <i class=\"fa-solid fa-download\"></i>\n </button>\n </div>\n </div>\n <!-- Result Content -->\n <div style=\"flex: 1; display: flex; flex-direction: column;\">\n @if (testResult.success && testResult.output) {\n <div style=\"margin-bottom: 12px; flex: 1; display: flex; flex-direction: column;\">\n <h6 class=\"output-header\">\n <i class=\"fa-solid fa-check-circle success-icon\"></i>\n Template Output\n </h6>\n <div class=\"output-box\">\n {{ testResult.output }}\n </div>\n </div>\n } @else if (!testResult.success && testResult.error) {\n <div style=\"margin-bottom: 12px; flex: 1; display: flex; flex-direction: column;\">\n <h6 class=\"output-header\">\n <i class=\"fa-solid fa-exclamation-triangle error-icon\"></i>\n Error Details\n </h6>\n <div class=\"error-output-box\">{{ testResult.error }}</div>\n </div>\n }\n </div>\n </div>\n } @else {\n <div class=\"no-results-state\">\n <div style=\"text-align: center;\">\n <i class=\"fa-solid fa-play-circle\"></i>\n <p>No test results yet. Run the template to see results here.</p>\n </div>\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n </div>\n <!-- Dialog Actions -->\n <mj-dialog-actions>\n <div style=\"display: flex; justify-content: space-between; align-items: center; width: 100%;\">\n <div>\n @if (hasUnsavedParameters) {\n <button mjButton variant=\"outline\"\n (click)=\"updateTemplateParams()\"\n [disabled]=\"isRunning\">\n <i class=\"fa-solid fa-save\"></i> Update Template Params\n </button>\n }\n </div>\n <div style=\"display: flex; gap: 8px;\">\n <button mjButton variant=\"outline\" (click)=\"close()\">\n Close\n </button>\n @if (testResult) {\n <button mjButton variant=\"outline\" (click)=\"saveResults()\">\n <i class=\"fa-solid fa-download\"></i> Save Results\n </button>\n }\n <button mjButton variant=\"primary\"\n [disabled]=\"isRunning || isLoading\"\n (click)=\"runTemplate()\">\n @if (isRunning) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Running...\n } @else {\n <i class=\"fa-solid fa-play\"></i> Run Template\n }\n </button>\n </div>\n </div>\n </mj-dialog-actions>\n </mj-dialog>\n}\n"]}
|
|
1
|
+
{"version":3,"file":"template-param-dialog.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/Templates/template-param-dialog.component.ts","../../../../src/lib/custom/Templates/template-param-dialog.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\nimport { MJTemplateEntity, MJTemplateParamEntity } from '@memberjunction/core-entities';\nimport { Metadata, RunView } from '@memberjunction/core';\nimport { TemplateRunOperation } from '@memberjunction/core-entities';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\n\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nexport interface ParameterPair {\n key: string;\n value: string;\n isFromTemplate: boolean;\n description?: string;\n isRequired?: boolean;\n type?: string;\n}\n\nexport interface TemplateRunResult {\n success: boolean;\n output?: string;\n error?: string;\n executionTimeMs?: number;\n}\n\n@Component({\n standalone: false,\n selector: 'mj-template-param-dialog',\n templateUrl: './template-param-dialog.component.html',\n styleUrls: ['./template-param-dialog.component.css']\n})\nexport class TemplateParamDialogComponent extends BaseAngularComponent implements OnInit {\n @Input() template: MJTemplateEntity | null = null;\n \n public _isVisible: boolean = false;\n @Input() \n get isVisible(): boolean {\n return this._isVisible;\n }\n set isVisible(value: boolean) {\n const wasVisible = this._isVisible;\n this._isVisible = value;\n \n // Reset dialog state when opening\n if (value && !wasVisible) {\n this.resetDialogState();\n }\n }\n \n @Output() isVisibleChange = new EventEmitter<boolean>();\n @Output() onClose = new EventEmitter<void>();\n\n public parameters: ParameterPair[] = [];\n public isLoading = false;\n public isRunning = false;\n public testResult: TemplateRunResult | null = null;\n public hasUnsavedParameters = false;\n public parametersExpanded = true;\n public jsonPreviewExpanded = false;\n public resultsExpanded = true;\n\n private originalTemplateParams: MJTemplateParamEntity[] = [];\n\n ngOnInit() {\n if (this.template) {\n this.loadTemplateParams();\n }\n }\n\n async loadTemplateParams() {\n if (!this.template?.ID) return;\n\n this.isLoading = true;\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const results = await rv.RunView<MJTemplateParamEntity>({\n EntityName: 'MJ: Template Params',\n ExtraFilter: `TemplateID='${this.template.ID}'`,\n OrderBy: 'Name ASC' \n });\n\n this.originalTemplateParams = results.Results;\n \n // Convert template params to parameter pairs\n this.parameters = this.originalTemplateParams.map(param => ({\n key: param.Name,\n value: param.DefaultValue || '',\n isFromTemplate: true,\n description: param.Description || undefined,\n isRequired: param.IsRequired,\n type: param.Type\n }));\n\n // If no template params, add one empty pair to start\n if (this.parameters.length === 0) {\n this.addParameter();\n }\n\n } catch (error) {\n console.error('Error loading template params:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Error loading template parameters',\n 'error'\n );\n } finally {\n this.isLoading = false;\n }\n }\n\n addParameter() {\n this.parameters.push({\n key: '',\n value: '',\n isFromTemplate: false\n });\n }\n\n removeParameter(index: number) {\n if (this.parameters.length > 1) {\n this.parameters.splice(index, 1);\n }\n }\n\n onParameterChange() {\n // Check if we have new parameters not in template\n this.hasUnsavedParameters = this.parameters.some(param => \n param.key && \n !param.isFromTemplate && \n !this.originalTemplateParams.find(tp => tp.Name === param.key)\n );\n }\n\n async runTemplate() {\n if (!this.template?.ID) return;\n\n // Validate parameter names - check for empty parameter names\n const emptyNameParams = this.parameters.filter(p => p.value && !p.key);\n if (emptyNameParams.length > 0) {\n MJNotificationService.Instance.CreateSimpleNotification(\n 'All parameters must have a name. Please enter parameter names or remove empty parameters.',\n 'warning'\n );\n return;\n }\n\n // Validate required parameters\n const invalidParams = this.parameters.filter(p => p.key && !p.value && p.isRequired);\n if (invalidParams.length > 0) {\n MJNotificationService.Instance.CreateSimpleNotification(\n `Required parameters missing: ${invalidParams.map(p => p.key).join(', ')}`,\n 'warning'\n );\n return;\n }\n\n this.isRunning = true;\n this.testResult = null;\n\n try {\n // Build context data object from parameters\n const contextData: any = {};\n this.parameters.forEach(param => {\n if (param.key && param.value) {\n try {\n // Try to parse as JSON first, fallback to string\n contextData[param.key] = JSON.parse(param.value);\n } catch {\n contextData[param.key] = param.value;\n }\n }\n });\n\n // Run the template via the Template.Run Remote Operation (provider-scoped; routes over the\n // generic ExecuteRemoteOperation transport — no bespoke GraphQL client).\n const opResult = await new TemplateRunOperation().Execute(\n { templateID: this.template.ID, data: contextData },\n { provider: this.ProviderToUse },\n );\n\n {\n this.testResult = {\n success: opResult.Success,\n output: opResult.Output?.output,\n error: opResult.ErrorMessage,\n executionTimeMs: opResult.Output?.executionTimeMs,\n };\n\n // Collapse parameters and expand results after execution\n this.parametersExpanded = false;\n this.resultsExpanded = true;\n \n if (this.testResult?.success) {\n MJNotificationService.Instance.CreateSimpleNotification(\n `Template executed successfully in ${this.testResult.executionTimeMs || 0}ms`,\n 'success',\n 4000\n );\n } else {\n MJNotificationService.Instance.CreateSimpleNotification(\n `Template execution failed: ${this.testResult?.error || 'Unknown error'}`,\n 'error',\n 5000\n );\n }\n }\n\n } catch (error) {\n console.error('Template test error:', error);\n this.testResult = {\n success: false,\n error: (error as Error).message || 'Unknown error occurred'\n };\n \n // Still collapse parameters and expand results on error\n this.parametersExpanded = false;\n this.resultsExpanded = true;\n \n MJNotificationService.Instance.CreateSimpleNotification(\n `Template test failed: ${this.testResult?.error || 'Unknown error'}`,\n 'error',\n 5000\n );\n } finally {\n this.isRunning = false;\n }\n }\n\n async updateTemplateParams() {\n if (!this.template?.ID || !this.hasUnsavedParameters) return;\n\n const newParams = this.parameters.filter(param => \n param.key && \n !param.isFromTemplate && \n !this.originalTemplateParams.find(tp => tp.Name === param.key)\n );\n\n if (newParams.length === 0) return;\n\n try {\n const md = this.ProviderToUse;\n \n for (const param of newParams) {\n const templateParam = await md.GetEntityObject<MJTemplateParamEntity>('MJ: Template Params');\n templateParam.TemplateID = this.template.ID;\n templateParam.Name = param.key;\n templateParam.Description = param.description || null;\n templateParam.Type = 'Scalar'; // Default type\n templateParam.DefaultValue = param.value || null;\n templateParam.IsRequired = param.isRequired || false;\n \n const saved = await templateParam.Save();\n if (!saved) {\n throw new Error(`Failed to save parameter: ${param.key}`);\n }\n }\n\n MJNotificationService.Instance.CreateSimpleNotification(\n `Added ${newParams.length} new parameter(s) to template`,\n 'success'\n );\n\n this.hasUnsavedParameters = false;\n \n // Reload template params to sync\n await this.loadTemplateParams();\n\n } catch (error) {\n console.error('Error updating template params:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Error saving template parameters',\n 'error'\n );\n }\n }\n\n close() {\n this._isVisible = false;\n this.isVisibleChange.emit(false);\n this.onClose.emit();\n }\n\n private resetDialogState() {\n // Reset expansion states for a clean testing experience\n this.parametersExpanded = true; // Show params by default\n this.jsonPreviewExpanded = false; // Hide JSON (developer-focused)\n this.resultsExpanded = true; // Show results when they exist\n \n // Clear previous test results\n this.testResult = null;\n this.isRunning = false;\n \n // Reset unsaved parameters flag\n this.hasUnsavedParameters = false;\n }\n\n saveResults() {\n if (!this.testResult) return;\n\n const content = this.testResult.success \n ? this.testResult.output || 'No output'\n : this.testResult.error || 'No error details';\n \n const timestamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, -5);\n const templateName = this.template?.Name?.replace(/[^a-zA-Z0-9]/g, '_') || 'template';\n const status = this.testResult.success ? 'success' : 'error';\n const filename = `${templateName}_${status}_${timestamp}.txt`;\n\n // Create blob and download\n const blob = new Blob([content], { type: 'text/plain' });\n const url = window.URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n link.download = filename;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n window.URL.revokeObjectURL(url);\n\n MJNotificationService.Instance.CreateSimpleNotification(\n `Results saved as ${filename}`,\n 'success'\n );\n }\n\n get parametersAsJson(): string {\n const contextData: any = {};\n this.parameters.forEach(param => {\n if (param.key && param.value) {\n try {\n contextData[param.key] = JSON.parse(param.value);\n } catch {\n contextData[param.key] = param.value;\n }\n }\n });\n return JSON.stringify(contextData, null, 2);\n }\n}","@if (_isVisible) {\n <mj-dialog\n [Visible]=\"true\"\n [Width]=\"800\"\n (Close)=\"close()\">\n <mj-dialog-titlebar>Test Template: {{ template?.Name || 'Unknown' }}</mj-dialog-titlebar>\n <div class=\"dialog-content\" style=\"display: flex; flex-direction: column; height: 100%; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\">\n <!-- Header Section -->\n <div class=\"dlg-header\">\n <div class=\"dlg-header-row\">\n <i class=\"fa-solid fa-sliders\"></i>\n <h5>Template Testing</h5>\n </div>\n <p>\n Configure parameter values for testing. Parameters with <span class=\"required-marker\">*</span> are required.\n </p>\n </div>\n <!-- Loading State -->\n @if (isLoading) {\n <div class=\"dlg-loading\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>Loading template parameters...</span>\n </div>\n } @else {\n <!-- Template Parameters Section -->\n <mj-accordion-panel\n [(Expanded)]=\"parametersExpanded\"\n style=\"margin-bottom: 16px; flex-shrink: 0;\">\n <ng-template mjAccordionTitle>\n <span class=\"dlg-panel-title\">\n <i class=\"fa-solid fa-sliders\"></i>\n Template Parameters\n @if (parameters.length > 0) {\n <span class=\"count-badge\">{{ parameters.length }}</span>\n }\n </span>\n </ng-template>\n <div style=\"padding: 12px 0;\">\n <div class=\"dlg-info-text\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Configure parameter values for template testing. Values can be JSON objects, strings, or numbers.\n </div>\n <!-- Parameters Table -->\n @if (parameters.length > 0) {\n <div class=\"params-table\">\n <!-- Header -->\n <div class=\"params-table-header\">\n <div>Parameter Name</div>\n <div>Value</div>\n <div>Actions</div>\n </div>\n <!-- Parameter Rows -->\n @for (param of parameters; track $index; let i = $index) {\n <div class=\"params-table-row\">\n <!-- Parameter Name -->\n <div class=\"param-name\" style=\"display: flex; flex-direction: column;\">\n <div style=\"display: flex; align-items: center; gap: 4px; margin-bottom: 4px;\">\n @if (param.isFromTemplate) {\n <i class=\"fa-solid fa-database param-source-icon-template\" title=\"From template definition\"></i>\n } @else {\n <i class=\"fa-solid fa-edit param-source-icon-custom\" title=\"Custom parameter\"></i>\n }\n @if (param.isRequired) {\n <span class=\"param-required-marker\">*</span>\n }\n </div>\n @if (param.isFromTemplate) {\n <div class=\"param-key-text\">\n {{ param.key }}\n </div>\n @if (param.description) {\n <div class=\"param-description-text\">\n {{ param.description }}\n </div>\n }\n @if (param.type && param.type !== 'Scalar') {\n <div class=\"param-type-text\">\n Type: {{ param.type }}\n </div>\n }\n } @else {\n <input type=\"text\" class=\"mj-input\"\n [(ngModel)]=\"param.key\"\n (ngModelChange)=\"onParameterChange()\"\n placeholder=\"Parameter name...\"\n [disabled]=\"isRunning\"\n style=\"font-family: 'Courier New', monospace; width: 100%;\" />\n }\n </div>\n <!-- Parameter Value -->\n <div class=\"param-value\">\n <textarea class=\"mj-textarea\"\n [(ngModel)]=\"param.value\"\n (ngModelChange)=\"onParameterChange()\"\n [rows]=\"2\"\n placeholder=\"Enter value (JSON strings, numbers, objects)...\"\n [disabled]=\"isRunning\"\n style=\"font-family: 'Courier New', monospace; font-size: 0.9em; width: 100%;\"></textarea>\n </div>\n <!-- Actions -->\n <div class=\"param-actions\">\n @if (!param.isFromTemplate && parameters.length > 1) {\n <button mjButton variant=\"danger\" size=\"sm\"\n (click)=\"removeParameter(i)\"\n [disabled]=\"isRunning\"\n title=\"Remove parameter\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n </div>\n }\n <!-- Add Parameter Row -->\n <div class=\"add-param-row\">\n <button mjButton variant=\"success\" size=\"sm\"\n (click)=\"addParameter()\"\n [disabled]=\"isRunning\">\n <i class=\"fa-solid fa-plus\"></i> Add Parameter\n </button>\n </div>\n </div>\n } @else {\n <div class=\"no-params-state\">\n <i class=\"fa-solid fa-info-circle\"></i>\n <p>No parameters defined yet</p>\n <button mjButton variant=\"primary\" size=\"sm\"\n (click)=\"addParameter()\"\n [disabled]=\"isRunning\">\n <i class=\"fa-solid fa-plus\"></i> Add First Parameter\n </button>\n </div>\n }\n </div>\n </mj-accordion-panel>\n <!-- JSON Preview Section -->\n <mj-accordion-panel\n [(Expanded)]=\"jsonPreviewExpanded\"\n style=\"margin-bottom: 16px; flex-shrink: 0;\">\n <ng-template mjAccordionTitle>\n <span class=\"dlg-panel-title\">\n <i class=\"fa-solid fa-code\"></i>\n Context Data (JSON)\n </span>\n </ng-template>\n <div style=\"padding: 12px 0;\">\n <div class=\"json-preview-box\">\n <pre>{{ parametersAsJson }}</pre>\n </div>\n </div>\n </mj-accordion-panel>\n <!-- Test Results Section -->\n <mj-accordion-panel\n [(Expanded)]=\"resultsExpanded\"\n style=\"margin-bottom: 16px; flex: 1; display: flex; flex-direction: column;\">\n <ng-template mjAccordionTitle>\n <span class=\"dlg-panel-title\">\n <i class=\"fa-solid fa-chart-line\"></i>\n Test Results\n @if (testResult) {\n @if (testResult.success) {\n <span class=\"result-badge success\"><i class=\"fa-solid fa-check\"></i> Success</span>\n } @else {\n <span class=\"result-badge error\"><i class=\"fa-solid fa-times\"></i> Failed</span>\n }\n }\n </span>\n </ng-template>\n <div style=\"padding: 12px 0; flex: 1; display: flex; flex-direction: column;\">\n @if (isRunning) {\n <div class=\"dlg-loading\" style=\"flex: 1;\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>Running template...</span>\n </div>\n } @else if (testResult) {\n <div style=\"flex: 1; display: flex; flex-direction: column;\">\n <!-- Result Header with Stats -->\n <div class=\"result-stats\" [class.success]=\"testResult.success\" [class.error]=\"!testResult.success\">\n <div class=\"result-stat\">\n <div class=\"result-stat-label\">STATUS</div>\n <div class=\"result-stat-value\">\n {{ testResult.success ? 'Success' : 'Failed' }}\n </div>\n </div>\n @if (testResult.executionTimeMs) {\n <div class=\"result-stat\">\n <div class=\"result-stat-label\">EXECUTION TIME</div>\n <div class=\"result-stat-value\">{{ testResult.executionTimeMs }}ms</div>\n </div>\n }\n <div class=\"result-stat\">\n <div class=\"result-stat-label\">ACTIONS</div>\n <button mjButton variant=\"flat\" size=\"sm\"\n (click)=\"saveResults()\"\n title=\"Save results to file\">\n <i class=\"fa-solid fa-download\"></i>\n </button>\n </div>\n </div>\n <!-- Result Content -->\n <div style=\"flex: 1; display: flex; flex-direction: column;\">\n @if (testResult.success && testResult.output) {\n <div style=\"margin-bottom: 12px; flex: 1; display: flex; flex-direction: column;\">\n <h6 class=\"output-header\">\n <i class=\"fa-solid fa-check-circle success-icon\"></i>\n Template Output\n </h6>\n <div class=\"output-box\">\n {{ testResult.output }}\n </div>\n </div>\n } @else if (!testResult.success && testResult.error) {\n <div style=\"margin-bottom: 12px; flex: 1; display: flex; flex-direction: column;\">\n <h6 class=\"output-header\">\n <i class=\"fa-solid fa-exclamation-triangle error-icon\"></i>\n Error Details\n </h6>\n <div class=\"error-output-box\">{{ testResult.error }}</div>\n </div>\n }\n </div>\n </div>\n } @else {\n <div class=\"no-results-state\">\n <div style=\"text-align: center;\">\n <i class=\"fa-solid fa-play-circle\"></i>\n <p>No test results yet. Run the template to see results here.</p>\n </div>\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n </div>\n <!-- Dialog Actions -->\n <mj-dialog-actions>\n <div style=\"display: flex; justify-content: space-between; align-items: center; width: 100%;\">\n <div>\n @if (hasUnsavedParameters) {\n <button mjButton variant=\"outline\"\n (click)=\"updateTemplateParams()\"\n [disabled]=\"isRunning\">\n <i class=\"fa-solid fa-save\"></i> Update Template Params\n </button>\n }\n </div>\n <div style=\"display: flex; gap: 8px;\">\n <button mjButton variant=\"outline\" (click)=\"close()\">\n Close\n </button>\n @if (testResult) {\n <button mjButton variant=\"outline\" (click)=\"saveResults()\">\n <i class=\"fa-solid fa-download\"></i> Save Results\n </button>\n }\n <button mjButton variant=\"primary\"\n [disabled]=\"isRunning || isLoading\"\n (click)=\"runTemplate()\">\n @if (isRunning) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Running...\n } @else {\n <i class=\"fa-solid fa-play\"></i> Run Template\n }\n </button>\n </div>\n </div>\n </mj-dialog-actions>\n </mj-dialog>\n}\n"]}
|
|
@@ -47,34 +47,36 @@ import * as i45 from "./BridgeProviders/bridge-provider-form.component";
|
|
|
47
47
|
import * as i46 from "./SessionBridges/session-bridge-form.component";
|
|
48
48
|
import * as i47 from "./BridgeAgentIdentities/bridge-agent-identity-form.component";
|
|
49
49
|
import * as i48 from "../panels/ai-agents/agent-realtime.panel";
|
|
50
|
-
import * as i49 from "
|
|
51
|
-
import * as i50 from "@angular/
|
|
52
|
-
import * as i51 from "@angular/
|
|
53
|
-
import * as i52 from "
|
|
54
|
-
import * as i53 from "
|
|
55
|
-
import * as i54 from "@memberjunction/ng-
|
|
56
|
-
import * as i55 from "@memberjunction/ng-
|
|
57
|
-
import * as i56 from "@memberjunction/ng-
|
|
58
|
-
import * as i57 from "@memberjunction/ng-
|
|
59
|
-
import * as i58 from "@memberjunction/ng-
|
|
60
|
-
import * as i59 from "@memberjunction/ng-
|
|
61
|
-
import * as i60 from "@memberjunction/ng-
|
|
62
|
-
import * as i61 from "@memberjunction/ng-
|
|
63
|
-
import * as i62 from "@memberjunction/ng-
|
|
64
|
-
import * as i63 from "@memberjunction/ng-
|
|
65
|
-
import * as i64 from "@memberjunction/ng-
|
|
66
|
-
import * as i65 from "@memberjunction/ng-
|
|
67
|
-
import * as i66 from "@memberjunction/ng-
|
|
68
|
-
import * as i67 from "@memberjunction/ng-
|
|
69
|
-
import * as i68 from "@memberjunction/ng-
|
|
70
|
-
import * as i69 from "@memberjunction/ng-
|
|
71
|
-
import * as i70 from "@memberjunction/ng-
|
|
72
|
-
import * as i71 from "@memberjunction/ng-
|
|
73
|
-
import * as i72 from "
|
|
74
|
-
import * as i73 from "
|
|
50
|
+
import * as i49 from "./RecordProcesses/record-process-form.component";
|
|
51
|
+
import * as i50 from "@angular/common";
|
|
52
|
+
import * as i51 from "@angular/forms";
|
|
53
|
+
import * as i52 from "@angular/cdk/drag-drop";
|
|
54
|
+
import * as i53 from "ag-grid-angular";
|
|
55
|
+
import * as i54 from "@memberjunction/ng-ui-components";
|
|
56
|
+
import * as i55 from "@memberjunction/ng-link-directives";
|
|
57
|
+
import * as i56 from "@memberjunction/ng-join-grid";
|
|
58
|
+
import * as i57 from "@memberjunction/ng-base-forms";
|
|
59
|
+
import * as i58 from "@memberjunction/ng-tabstrip";
|
|
60
|
+
import * as i59 from "@memberjunction/ng-code-editor";
|
|
61
|
+
import * as i60 from "@memberjunction/ng-deep-diff";
|
|
62
|
+
import * as i61 from "@memberjunction/ng-ai-test-harness";
|
|
63
|
+
import * as i62 from "@memberjunction/ng-action-gallery";
|
|
64
|
+
import * as i63 from "@memberjunction/ng-testing";
|
|
65
|
+
import * as i64 from "@memberjunction/ng-flow-editor";
|
|
66
|
+
import * as i65 from "@memberjunction/ng-shared-generic";
|
|
67
|
+
import * as i66 from "@memberjunction/ng-entity-relationship-diagram";
|
|
68
|
+
import * as i67 from "@memberjunction/ng-list-management";
|
|
69
|
+
import * as i68 from "@memberjunction/ng-actions";
|
|
70
|
+
import * as i69 from "@memberjunction/ng-agents";
|
|
71
|
+
import * as i70 from "@memberjunction/ng-entity-viewer";
|
|
72
|
+
import * as i71 from "@memberjunction/ng-markdown";
|
|
73
|
+
import * as i72 from "@memberjunction/ng-trees";
|
|
74
|
+
import * as i73 from "angular-split";
|
|
75
|
+
import * as i74 from "@memberjunction/ng-search";
|
|
76
|
+
import * as i75 from "@memberjunction/ng-record-process-studio";
|
|
75
77
|
export declare class MemberJunctionCoreEntityFormsModule {
|
|
76
78
|
static ɵfac: i0.ɵɵFactoryDeclaration<MemberJunctionCoreEntityFormsModule, never>;
|
|
77
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<MemberJunctionCoreEntityFormsModule, [typeof i1.MJEntityFormComponentExtended, typeof i2.MJEntityActionFormComponentExtended, typeof i3.MJTemplateFormComponentExtended, typeof i4.TemplateParamDialogComponent, typeof i5.TemplateParamsGridComponent, typeof i6.TemplateEditorComponent, typeof i7.MJAIPromptFormComponentExtended, typeof i8.MJAIAgentFormComponentExtended, typeof i9.NewAgentDialogComponent, typeof i10.AddActionDialogComponent, typeof i11.PromptSelectorDialogComponent, typeof i12.AgentPromptAdvancedSettingsDialogComponent, typeof i13.SubAgentAdvancedSettingsDialogComponent, typeof i14.SubAgentSelectorDialogComponent, typeof i15.CreatePromptDialogComponent, typeof i16.CreateSubAgentDialogComponent, typeof i17.EntitySelectorDialogComponent, typeof i18.MJAIPromptRunFormComponentExtended, typeof i19.ChatMessageViewerComponent, typeof i20.MJActionFormComponentExtended, typeof i21.MJActionExecutionLogFormComponentExtended, typeof i22.MJAIAgentRunFormComponentExtended, typeof i23.AIAgentRunTimelineComponent, typeof i24.AIAgentRunStepNodeComponent, typeof i25.AIAgentRunAnalyticsComponent, typeof i26.AIAgentRunVisualizationComponent, typeof i27.AIAgentRunStepDetailComponent, typeof i28.MJQueryFormComponentExtended, typeof i29.QueryRunDialogComponent, typeof i30.FlowAgentFormSectionComponent, typeof i31.MJTestRunFormComponentExtended, typeof i32.MJTestFormComponentExtended, typeof i33.MJTestSuiteRunFormComponentExtended, typeof i34.MJTestSuiteFormComponentExtended, typeof i35.MJTestRunFeedbackFormComponentExtended, typeof i36.MJTestRubricFormComponentExtended, typeof i37.EntityLinkPillComponent, typeof i38.MJListFormComponentExtended, typeof i39.TagPipelineConfigurationPanel, typeof i40.WebsiteCrawlerSettingsPanel, typeof i41.MJSearchScopeFormComponentExtended, typeof i42.MJSearchScopeProviderFormComponentExtended, typeof i43.MJAIAgentSessionFormComponentExtended, typeof i44.MJAIAgentChannelFormComponentExtended, typeof i45.MJAIBridgeProviderFormComponentExtended, typeof i46.MJAIAgentSessionBridgeFormComponentExtended, typeof i47.MJAIBridgeAgentIdentityFormComponentExtended, typeof i48.AgentRealtimePanel], [typeof
|
|
79
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<MemberJunctionCoreEntityFormsModule, [typeof i1.MJEntityFormComponentExtended, typeof i2.MJEntityActionFormComponentExtended, typeof i3.MJTemplateFormComponentExtended, typeof i4.TemplateParamDialogComponent, typeof i5.TemplateParamsGridComponent, typeof i6.TemplateEditorComponent, typeof i7.MJAIPromptFormComponentExtended, typeof i8.MJAIAgentFormComponentExtended, typeof i9.NewAgentDialogComponent, typeof i10.AddActionDialogComponent, typeof i11.PromptSelectorDialogComponent, typeof i12.AgentPromptAdvancedSettingsDialogComponent, typeof i13.SubAgentAdvancedSettingsDialogComponent, typeof i14.SubAgentSelectorDialogComponent, typeof i15.CreatePromptDialogComponent, typeof i16.CreateSubAgentDialogComponent, typeof i17.EntitySelectorDialogComponent, typeof i18.MJAIPromptRunFormComponentExtended, typeof i19.ChatMessageViewerComponent, typeof i20.MJActionFormComponentExtended, typeof i21.MJActionExecutionLogFormComponentExtended, typeof i22.MJAIAgentRunFormComponentExtended, typeof i23.AIAgentRunTimelineComponent, typeof i24.AIAgentRunStepNodeComponent, typeof i25.AIAgentRunAnalyticsComponent, typeof i26.AIAgentRunVisualizationComponent, typeof i27.AIAgentRunStepDetailComponent, typeof i28.MJQueryFormComponentExtended, typeof i29.QueryRunDialogComponent, typeof i30.FlowAgentFormSectionComponent, typeof i31.MJTestRunFormComponentExtended, typeof i32.MJTestFormComponentExtended, typeof i33.MJTestSuiteRunFormComponentExtended, typeof i34.MJTestSuiteFormComponentExtended, typeof i35.MJTestRunFeedbackFormComponentExtended, typeof i36.MJTestRubricFormComponentExtended, typeof i37.EntityLinkPillComponent, typeof i38.MJListFormComponentExtended, typeof i39.TagPipelineConfigurationPanel, typeof i40.WebsiteCrawlerSettingsPanel, typeof i41.MJSearchScopeFormComponentExtended, typeof i42.MJSearchScopeProviderFormComponentExtended, typeof i43.MJAIAgentSessionFormComponentExtended, typeof i44.MJAIAgentChannelFormComponentExtended, typeof i45.MJAIBridgeProviderFormComponentExtended, typeof i46.MJAIAgentSessionBridgeFormComponentExtended, typeof i47.MJAIBridgeAgentIdentityFormComponentExtended, typeof i48.AgentRealtimePanel, typeof i49.RecordProcessFormComponentExtended], [typeof i50.CommonModule, typeof i51.FormsModule, typeof i51.ReactiveFormsModule, typeof i52.DragDropModule, typeof i53.AgGridModule, typeof i54.MJButtonDirective, typeof i54.MJAccordionPanelComponent, typeof i54.MJAccordionTitleDirective, typeof i54.MJDropdownComponent, typeof i54.MJComboboxComponent, typeof i54.MJSwitchComponent, typeof i54.MJDialogComponent, typeof i54.MJDialogTitlebarComponent, typeof i54.MJDialogActionsComponent, typeof i54.MJNumericInputComponent, typeof i54.MJWindowComponent, typeof i54.MJWindowTitlebarComponent, typeof i54.MJProgressBarComponent, typeof i55.LinkDirectivesModule, typeof i56.JoinGridModule, typeof i57.BaseFormsModule, typeof i58.MJTabStripModule, typeof i59.CodeEditorModule, typeof i60.DeepDiffModule, typeof i61.AITestHarnessModule, typeof i62.ActionGalleryModule, typeof i63.TestingModule, typeof i64.FlowEditorModule, typeof i65.SharedGenericModule, typeof i66.EntityRelationshipDiagramModule, typeof i67.ListManagementModule, typeof i68.ActionsModule, typeof i69.AgentsModule, typeof i70.EntityViewerModule, typeof i71.MarkdownModule, typeof i72.NgTreesModule, typeof i73.AngularSplitModule, typeof i54.MjSlidePanelComponent, typeof i57.MjFormDialogComponent, typeof i74.SearchModule, typeof i75.RecordProcessEditorComponent], [typeof i1.MJEntityFormComponentExtended, typeof i2.MJEntityActionFormComponentExtended, typeof i3.MJTemplateFormComponentExtended, typeof i6.TemplateEditorComponent, typeof i7.MJAIPromptFormComponentExtended, typeof i8.MJAIAgentFormComponentExtended, typeof i18.MJAIPromptRunFormComponentExtended, typeof i19.ChatMessageViewerComponent, typeof i20.MJActionFormComponentExtended, typeof i21.MJActionExecutionLogFormComponentExtended, typeof i22.MJAIAgentRunFormComponentExtended, typeof i23.AIAgentRunTimelineComponent, typeof i24.AIAgentRunStepNodeComponent, typeof i25.AIAgentRunAnalyticsComponent, typeof i28.MJQueryFormComponentExtended, typeof i30.FlowAgentFormSectionComponent, typeof i31.MJTestRunFormComponentExtended, typeof i32.MJTestFormComponentExtended, typeof i33.MJTestSuiteRunFormComponentExtended, typeof i34.MJTestSuiteFormComponentExtended, typeof i35.MJTestRunFeedbackFormComponentExtended, typeof i36.MJTestRubricFormComponentExtended, typeof i37.EntityLinkPillComponent, typeof i38.MJListFormComponentExtended, typeof i39.TagPipelineConfigurationPanel, typeof i40.WebsiteCrawlerSettingsPanel, typeof i41.MJSearchScopeFormComponentExtended, typeof i42.MJSearchScopeProviderFormComponentExtended, typeof i43.MJAIAgentSessionFormComponentExtended, typeof i44.MJAIAgentChannelFormComponentExtended, typeof i45.MJAIBridgeProviderFormComponentExtended, typeof i46.MJAIAgentSessionBridgeFormComponentExtended, typeof i47.MJAIBridgeAgentIdentityFormComponentExtended, typeof i48.AgentRealtimePanel, typeof i68.ActionsModule, typeof i49.RecordProcessFormComponentExtended]>;
|
|
78
80
|
static ɵinj: i0.ɵɵInjectorDeclaration<MemberJunctionCoreEntityFormsModule>;
|
|
79
81
|
}
|
|
80
82
|
//# sourceMappingURL=custom-forms.module.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-forms.module.d.ts","sourceRoot":"","sources":["../../../src/lib/custom/custom-forms.module.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"custom-forms.module.d.ts","sourceRoot":"","sources":["../../../src/lib/custom/custom-forms.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuFA,qBA2Ia,mCAAmC;yCAAnC,mCAAmC;0CAAnC,mCAAmC;0CAAnC,mCAAmC;CAAI"}
|
|
@@ -78,6 +78,8 @@ import { MJAIAgentChannelFormComponentExtended } from "./AIAgentChannels/ai-agen
|
|
|
78
78
|
// Realtime Bridges — custom Extended forms (Pattern 2) for the three major bridge entities.
|
|
79
79
|
import { MJAIBridgeProviderFormComponentExtended } from "./BridgeProviders/bridge-provider-form.component";
|
|
80
80
|
import { MJAIAgentSessionBridgeFormComponentExtended } from "./SessionBridges/session-bridge-form.component";
|
|
81
|
+
import { RecordProcessFormComponentExtended } from "./RecordProcesses/record-process-form.component";
|
|
82
|
+
import { RecordProcessEditorComponent } from "@memberjunction/ng-record-process-studio";
|
|
81
83
|
import { MJAIBridgeAgentIdentityFormComponentExtended } from "./BridgeAgentIdentities/bridge-agent-identity-form.component";
|
|
82
84
|
// AI Agent "Realtime" panel (Pattern 1 — BaseFormPanel slot). Imported so the
|
|
83
85
|
// @RegisterClassEx decorator runs at module load (Angular tree-shaking guard).
|
|
@@ -128,7 +130,8 @@ export class MemberJunctionCoreEntityFormsModule {
|
|
|
128
130
|
AngularSplitModule,
|
|
129
131
|
MjSlidePanelComponent,
|
|
130
132
|
MjFormDialogComponent,
|
|
131
|
-
SearchModule,
|
|
133
|
+
SearchModule,
|
|
134
|
+
RecordProcessEditorComponent, ActionsModule] }); }
|
|
132
135
|
}
|
|
133
136
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MemberJunctionCoreEntityFormsModule, [{
|
|
134
137
|
type: NgModule,
|
|
@@ -183,6 +186,7 @@ export class MemberJunctionCoreEntityFormsModule {
|
|
|
183
186
|
MJAIAgentSessionBridgeFormComponentExtended,
|
|
184
187
|
MJAIBridgeAgentIdentityFormComponentExtended,
|
|
185
188
|
AgentRealtimePanel,
|
|
189
|
+
RecordProcessFormComponentExtended,
|
|
186
190
|
],
|
|
187
191
|
imports: [
|
|
188
192
|
CommonModule,
|
|
@@ -224,7 +228,8 @@ export class MemberJunctionCoreEntityFormsModule {
|
|
|
224
228
|
AngularSplitModule,
|
|
225
229
|
MjSlidePanelComponent,
|
|
226
230
|
MjFormDialogComponent,
|
|
227
|
-
SearchModule
|
|
231
|
+
SearchModule,
|
|
232
|
+
RecordProcessEditorComponent
|
|
228
233
|
],
|
|
229
234
|
exports: [
|
|
230
235
|
MJEntityFormComponentExtended,
|
|
@@ -261,7 +266,8 @@ export class MemberJunctionCoreEntityFormsModule {
|
|
|
261
266
|
MJAIAgentSessionBridgeFormComponentExtended,
|
|
262
267
|
MJAIBridgeAgentIdentityFormComponentExtended,
|
|
263
268
|
AgentRealtimePanel,
|
|
264
|
-
ActionsModule
|
|
269
|
+
ActionsModule,
|
|
270
|
+
RecordProcessFormComponentExtended
|
|
265
271
|
],
|
|
266
272
|
providers: [
|
|
267
273
|
NewAgentDialogService,
|
|
@@ -317,7 +323,8 @@ export class MemberJunctionCoreEntityFormsModule {
|
|
|
317
323
|
MJAIBridgeProviderFormComponentExtended,
|
|
318
324
|
MJAIAgentSessionBridgeFormComponentExtended,
|
|
319
325
|
MJAIBridgeAgentIdentityFormComponentExtended,
|
|
320
|
-
AgentRealtimePanel
|
|
326
|
+
AgentRealtimePanel,
|
|
327
|
+
RecordProcessFormComponentExtended], imports: [CommonModule,
|
|
321
328
|
FormsModule,
|
|
322
329
|
ReactiveFormsModule,
|
|
323
330
|
DragDropModule,
|
|
@@ -356,7 +363,8 @@ export class MemberJunctionCoreEntityFormsModule {
|
|
|
356
363
|
AngularSplitModule,
|
|
357
364
|
MjSlidePanelComponent,
|
|
358
365
|
MjFormDialogComponent,
|
|
359
|
-
SearchModule
|
|
366
|
+
SearchModule,
|
|
367
|
+
RecordProcessEditorComponent], exports: [MJEntityFormComponentExtended,
|
|
360
368
|
MJEntityActionFormComponentExtended,
|
|
361
369
|
MJTemplateFormComponentExtended,
|
|
362
370
|
TemplateEditorComponent,
|
|
@@ -390,7 +398,8 @@ export class MemberJunctionCoreEntityFormsModule {
|
|
|
390
398
|
MJAIAgentSessionBridgeFormComponentExtended,
|
|
391
399
|
MJAIBridgeAgentIdentityFormComponentExtended,
|
|
392
400
|
AgentRealtimePanel,
|
|
393
|
-
ActionsModule
|
|
401
|
+
ActionsModule,
|
|
402
|
+
RecordProcessFormComponentExtended] }); })();
|
|
394
403
|
i0.ɵɵsetComponentScope(AIAgentRunTimelineComponent, [i1.NgTemplateOutlet, i2.LoadingComponent, AIAgentRunTimelineComponent,
|
|
395
404
|
AIAgentRunStepNodeComponent], [i1.AsyncPipe]);
|
|
396
405
|
//# sourceMappingURL=custom-forms.module.js.map
|