@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.
Files changed (85) hide show
  1. package/dist/lib/custom/RecordProcesses/record-process-form.component.d.ts +16 -0
  2. package/dist/lib/custom/RecordProcesses/record-process-form.component.d.ts.map +1 -0
  3. package/dist/lib/custom/RecordProcesses/record-process-form.component.js +54 -0
  4. package/dist/lib/custom/RecordProcesses/record-process-form.component.js.map +1 -0
  5. package/dist/lib/custom/Templates/template-param-dialog.component.d.ts.map +1 -1
  6. package/dist/lib/custom/Templates/template-param-dialog.component.js +11 -23
  7. package/dist/lib/custom/Templates/template-param-dialog.component.js.map +1 -1
  8. package/dist/lib/custom/custom-forms.module.d.ts +28 -26
  9. package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
  10. package/dist/lib/custom/custom-forms.module.js +15 -6
  11. package/dist/lib/custom/custom-forms.module.js.map +1 -1
  12. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.d.ts.map +1 -1
  13. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js +54 -36
  14. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js.map +1 -1
  15. package/dist/lib/generated/Entities/MJAIAgentNote/mjaiagentnote.form.component.d.ts.map +1 -1
  16. package/dist/lib/generated/Entities/MJAIAgentNote/mjaiagentnote.form.component.js +13 -19
  17. package/dist/lib/generated/Entities/MJAIAgentNote/mjaiagentnote.form.component.js.map +1 -1
  18. package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.d.ts.map +1 -1
  19. package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js +31 -13
  20. package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js.map +1 -1
  21. package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.d.ts.map +1 -1
  22. package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js +36 -18
  23. package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js.map +1 -1
  24. package/dist/lib/generated/Entities/MJAction/mjaction.form.component.d.ts.map +1 -1
  25. package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js +34 -16
  26. package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js.map +1 -1
  27. package/dist/lib/generated/Entities/MJActionExecutionLog/mjactionexecutionlog.form.component.d.ts.map +1 -1
  28. package/dist/lib/generated/Entities/MJActionExecutionLog/mjactionexecutionlog.form.component.js +25 -6
  29. package/dist/lib/generated/Entities/MJActionExecutionLog/mjactionexecutionlog.form.component.js.map +1 -1
  30. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.d.ts.map +1 -1
  31. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +138 -66
  32. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
  33. package/dist/lib/generated/Entities/MJEntityActionInvocation/mjentityactioninvocation.form.component.js +10 -8
  34. package/dist/lib/generated/Entities/MJEntityActionInvocation/mjentityactioninvocation.form.component.js.map +1 -1
  35. package/dist/lib/generated/Entities/MJIntegration/mjintegration.form.component.js +37 -35
  36. package/dist/lib/generated/Entities/MJIntegration/mjintegration.form.component.js.map +1 -1
  37. package/dist/lib/generated/Entities/MJIntegrationObject/mjintegrationobject.form.component.js +33 -21
  38. package/dist/lib/generated/Entities/MJIntegrationObject/mjintegrationobject.form.component.js.map +1 -1
  39. package/dist/lib/generated/Entities/MJList/mjlist.form.component.d.ts.map +1 -1
  40. package/dist/lib/generated/Entities/MJList/mjlist.form.component.js +26 -8
  41. package/dist/lib/generated/Entities/MJList/mjlist.form.component.js.map +1 -1
  42. package/dist/lib/generated/Entities/MJOpenApp/mjopenapp.form.component.js +25 -23
  43. package/dist/lib/generated/Entities/MJOpenApp/mjopenapp.form.component.js.map +1 -1
  44. package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.d.ts +10 -0
  45. package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.d.ts.map +1 -0
  46. package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.js +143 -0
  47. package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.js.map +1 -0
  48. package/dist/lib/generated/Entities/MJProcessRunDetail/mjprocessrundetail.form.component.d.ts +10 -0
  49. package/dist/lib/generated/Entities/MJProcessRunDetail/mjprocessrundetail.form.component.d.ts.map +1 -0
  50. package/dist/lib/generated/Entities/MJProcessRunDetail/mjprocessrundetail.form.component.js +102 -0
  51. package/dist/lib/generated/Entities/MJProcessRunDetail/mjprocessrundetail.form.component.js.map +1 -0
  52. package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.d.ts +10 -0
  53. package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.d.ts.map +1 -0
  54. package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js +175 -0
  55. package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js.map +1 -0
  56. package/dist/lib/generated/Entities/MJRecordProcessCategory/mjrecordprocesscategory.form.component.d.ts +10 -0
  57. package/dist/lib/generated/Entities/MJRecordProcessCategory/mjrecordprocesscategory.form.component.d.ts.map +1 -0
  58. package/dist/lib/generated/Entities/MJRecordProcessCategory/mjrecordprocesscategory.form.component.js +111 -0
  59. package/dist/lib/generated/Entities/MJRecordProcessCategory/mjrecordprocesscategory.form.component.js.map +1 -0
  60. package/dist/lib/generated/Entities/MJRecordProcessWatermark/mjrecordprocesswatermark.form.component.d.ts +10 -0
  61. package/dist/lib/generated/Entities/MJRecordProcessWatermark/mjrecordprocesswatermark.form.component.d.ts.map +1 -0
  62. package/dist/lib/generated/Entities/MJRecordProcessWatermark/mjrecordprocesswatermark.form.component.js +76 -0
  63. package/dist/lib/generated/Entities/MJRecordProcessWatermark/mjrecordprocesswatermark.form.component.js.map +1 -0
  64. package/dist/lib/generated/Entities/MJRemoteOperation/mjremoteoperation.form.component.d.ts +10 -0
  65. package/dist/lib/generated/Entities/MJRemoteOperation/mjremoteoperation.form.component.d.ts.map +1 -0
  66. package/dist/lib/generated/Entities/MJRemoteOperation/mjremoteoperation.form.component.js +130 -0
  67. package/dist/lib/generated/Entities/MJRemoteOperation/mjremoteoperation.form.component.js.map +1 -0
  68. package/dist/lib/generated/Entities/MJRemoteOperationCategory/mjremoteoperationcategory.form.component.d.ts +10 -0
  69. package/dist/lib/generated/Entities/MJRemoteOperationCategory/mjremoteoperationcategory.form.component.d.ts.map +1 -0
  70. package/dist/lib/generated/Entities/MJRemoteOperationCategory/mjremoteoperationcategory.form.component.js +111 -0
  71. package/dist/lib/generated/Entities/MJRemoteOperationCategory/mjremoteoperationcategory.form.component.js.map +1 -0
  72. package/dist/lib/generated/Entities/MJScheduledJobRun/mjscheduledjobrun.form.component.d.ts.map +1 -1
  73. package/dist/lib/generated/Entities/MJScheduledJobRun/mjscheduledjobrun.form.component.js +28 -10
  74. package/dist/lib/generated/Entities/MJScheduledJobRun/mjscheduledjobrun.form.component.js.map +1 -1
  75. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.d.ts.map +1 -1
  76. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +143 -107
  77. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
  78. package/dist/lib/generated/Entities/MJUserView/mjuserview.form.component.d.ts.map +1 -1
  79. package/dist/lib/generated/Entities/MJUserView/mjuserview.form.component.js +26 -8
  80. package/dist/lib/generated/Entities/MJUserView/mjuserview.form.component.js.map +1 -1
  81. package/dist/lib/generated/generated-forms.module.d.ts +121 -114
  82. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
  83. package/dist/lib/generated/generated-forms.module.js +96 -75
  84. package/dist/lib/generated/generated-forms.module.js.map +1 -1
  85. 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;IA2GX,oBAAoB;IAgD1B,KAAK;IAML,OAAO,CAAC,gBAAgB;IAcxB,WAAW;IA6BX,IAAI,gBAAgB,IAAI,MAAM,CAY7B;yCA7TQ,4BAA4B;2CAA5B,4BAA4B;CA8TxC"}
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
- // Get GraphQL data provider
519
- const dataProvider = this.ProviderToUse;
520
- // Execute the RunTemplate GraphQL mutation
521
- const query = `
522
- mutation RunTemplate($templateId: String!, $contextData: String) {
523
- RunTemplate(templateId: $templateId, contextData: $contextData) {
524
- success
525
- output
526
- error
527
- executionTimeMs
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 "@angular/common";
51
- import * as i50 from "@angular/forms";
52
- import * as i51 from "@angular/cdk/drag-drop";
53
- import * as i52 from "ag-grid-angular";
54
- import * as i53 from "@memberjunction/ng-ui-components";
55
- import * as i54 from "@memberjunction/ng-link-directives";
56
- import * as i55 from "@memberjunction/ng-join-grid";
57
- import * as i56 from "@memberjunction/ng-base-forms";
58
- import * as i57 from "@memberjunction/ng-tabstrip";
59
- import * as i58 from "@memberjunction/ng-code-editor";
60
- import * as i59 from "@memberjunction/ng-deep-diff";
61
- import * as i60 from "@memberjunction/ng-ai-test-harness";
62
- import * as i61 from "@memberjunction/ng-action-gallery";
63
- import * as i62 from "@memberjunction/ng-testing";
64
- import * as i63 from "@memberjunction/ng-flow-editor";
65
- import * as i64 from "@memberjunction/ng-shared-generic";
66
- import * as i65 from "@memberjunction/ng-entity-relationship-diagram";
67
- import * as i66 from "@memberjunction/ng-list-management";
68
- import * as i67 from "@memberjunction/ng-actions";
69
- import * as i68 from "@memberjunction/ng-agents";
70
- import * as i69 from "@memberjunction/ng-entity-viewer";
71
- import * as i70 from "@memberjunction/ng-markdown";
72
- import * as i71 from "@memberjunction/ng-trees";
73
- import * as i72 from "angular-split";
74
- import * as i73 from "@memberjunction/ng-search";
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 i49.CommonModule, typeof i50.FormsModule, typeof i50.ReactiveFormsModule, typeof i51.DragDropModule, typeof i52.AgGridModule, typeof i53.MJButtonDirective, typeof i53.MJAccordionPanelComponent, typeof i53.MJAccordionTitleDirective, typeof i53.MJDropdownComponent, typeof i53.MJComboboxComponent, typeof i53.MJSwitchComponent, typeof i53.MJDialogComponent, typeof i53.MJDialogTitlebarComponent, typeof i53.MJDialogActionsComponent, typeof i53.MJNumericInputComponent, typeof i53.MJWindowComponent, typeof i53.MJWindowTitlebarComponent, typeof i53.MJProgressBarComponent, typeof i54.LinkDirectivesModule, typeof i55.JoinGridModule, typeof i56.BaseFormsModule, typeof i57.MJTabStripModule, typeof i58.CodeEditorModule, typeof i59.DeepDiffModule, typeof i60.AITestHarnessModule, typeof i61.ActionGalleryModule, typeof i62.TestingModule, typeof i63.FlowEditorModule, typeof i64.SharedGenericModule, typeof i65.EntityRelationshipDiagramModule, typeof i66.ListManagementModule, typeof i67.ActionsModule, typeof i68.AgentsModule, typeof i69.EntityViewerModule, typeof i70.MarkdownModule, typeof i71.NgTreesModule, typeof i72.AngularSplitModule, typeof i53.MjSlidePanelComponent, typeof i56.MjFormDialogComponent, typeof i73.SearchModule], [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 i67.ActionsModule]>;
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqFA,qBAwIa,mCAAmC;yCAAnC,mCAAmC;0CAAnC,mCAAmC;0CAAnC,mCAAmC;CAAI"}
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, ActionsModule] }); }
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], imports: [CommonModule,
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], exports: [MJEntityFormComponentExtended,
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