@masterteam/workflow 0.0.3 → 0.0.5

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.
@@ -16,13 +16,19 @@ import { ToggleField } from '@masterteam/components/toggle-field';
16
16
  import { Button } from '@masterteam/components/button';
17
17
  import { SelectField } from '@masterteam/components/select-field';
18
18
 
19
- class SetWorkflowInfo {
19
+ class SetModuleInfo {
20
20
  moduleType;
21
21
  moduleId;
22
- static type = '[Workflow] Set Workflow Info';
23
- constructor(moduleType, moduleId) {
22
+ parentModuleType;
23
+ parentModuleId;
24
+ parentPath;
25
+ static type = '[Workflow] Set Module Info';
26
+ constructor(moduleType, moduleId, parentModuleType, parentModuleId, parentPath) {
24
27
  this.moduleType = moduleType;
25
28
  this.moduleId = moduleId;
29
+ this.parentModuleType = parentModuleType;
30
+ this.parentModuleId = parentModuleId;
31
+ this.parentPath = parentPath;
26
32
  }
27
33
  }
28
34
  class GetWorkflows {
@@ -202,16 +208,26 @@ let WorkflowState = class WorkflowState {
202
208
  static errorFactory(state) {
203
209
  return (loadingName) => state.errors?.[loadingName] ?? null;
204
210
  }
205
- setWorkflowInfo(ctx, action) {
211
+ setModuleInfo(ctx, action) {
212
+ let parentPath = '';
213
+ if (action.parentModuleType && action.parentModuleId) {
214
+ parentPath = `/${action.parentModuleType}/${action.parentModuleId}`;
215
+ }
216
+ else if (action.parentPath) {
217
+ parentPath = action.parentPath;
218
+ }
206
219
  ctx.patchState({
207
220
  moduleType: action.moduleType,
208
221
  moduleId: action.moduleId,
222
+ parentModuleType: action.parentModuleType ?? null,
223
+ parentModuleId: action.parentModuleId ?? null,
224
+ parentPath: parentPath ?? '',
209
225
  });
210
226
  }
211
227
  getWorkflows(ctx, _action) {
212
228
  startLoading(ctx, 'getWorkflows');
213
229
  const state = ctx.getState();
214
- const { moduleId } = state;
230
+ const { moduleId, parentPath, moduleType } = state;
215
231
  if (!moduleId) {
216
232
  const message = 'Module ID is not set';
217
233
  setLoadingError(ctx, 'getWorkflows', message);
@@ -219,7 +235,7 @@ let WorkflowState = class WorkflowState {
219
235
  return of(null);
220
236
  }
221
237
  return this.http
222
- .get(`${this.baseUrl}/${moduleId}/requestSchema`)
238
+ .get(`${this.baseUrl}${parentPath}/${moduleType}/${moduleId}/requestSchema`)
223
239
  .pipe(tap((response) => {
224
240
  const workflows = response?.data ?? [];
225
241
  ctx.patchState({ workflows });
@@ -241,7 +257,7 @@ let WorkflowState = class WorkflowState {
241
257
  startLoading(ctx, 'getWorkflow');
242
258
  const state = ctx.getState();
243
259
  const workflowId = action.workflowId;
244
- const { moduleId } = state;
260
+ const { moduleId, parentPath, moduleType } = state;
245
261
  if (!workflowId) {
246
262
  const message = 'Workflow ID is not set';
247
263
  setLoadingError(ctx, 'getWorkflow', message);
@@ -251,7 +267,7 @@ let WorkflowState = class WorkflowState {
251
267
  // Set the workflowId in state
252
268
  ctx.patchState({ workflowId });
253
269
  return this.http
254
- .get(`${this.baseUrl}/${moduleId}/requestSchema/${workflowId}`, {
270
+ .get(`${this.baseUrl}${parentPath}/${moduleType}/${moduleId}/requestSchema/${workflowId}`, {
255
271
  params: { Mode: 'edit' },
256
272
  })
257
273
  .pipe(tap((response) => {
@@ -725,8 +741,8 @@ let WorkflowState = class WorkflowState {
725
741
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: WorkflowState });
726
742
  };
727
743
  __decorate([
728
- Action(SetWorkflowInfo)
729
- ], WorkflowState.prototype, "setWorkflowInfo", null);
744
+ Action(SetModuleInfo)
745
+ ], WorkflowState.prototype, "setModuleInfo", null);
730
746
  __decorate([
731
747
  Action(GetWorkflows)
732
748
  ], WorkflowState.prototype, "getWorkflows", null);
@@ -819,7 +835,7 @@ WorkflowState = __decorate([
819
835
  ], WorkflowState);
820
836
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: WorkflowState, decorators: [{
821
837
  type: Injectable
822
- }], propDecorators: { setWorkflowInfo: [], getWorkflows: [], getWorkflow: [], getFormulaProperties: [], getGroups: [], getRolesForModule: [], getStep: [], validateFlow: [], createStep: [], updateStep: [], createConnection: [], updateConnection: [], publishWorkflow: [], deleteStep: [], deleteConnection: [] } });
838
+ }], propDecorators: { setModuleInfo: [], getWorkflows: [], getWorkflow: [], getFormulaProperties: [], getGroups: [], getRolesForModule: [], getStep: [], validateFlow: [], createStep: [], updateStep: [], createConnection: [], updateConnection: [], publishWorkflow: [], deleteStep: [], deleteConnection: [] } });
823
839
 
824
840
  class WorkflowFacade {
825
841
  store = inject(Store);
@@ -843,8 +859,8 @@ class WorkflowFacade {
843
859
  const errorFactory = select(WorkflowState.errorFactory);
844
860
  return computed(() => errorFactory()(loadingName));
845
861
  }
846
- setWorkflowInfo(moduleType, moduleId) {
847
- return this.store.dispatch(new SetWorkflowInfo(moduleType, moduleId));
862
+ setModuleInfo(moduleType, moduleId, parentModuleType, parentModuleId, parentPath) {
863
+ return this.store.dispatch(new SetModuleInfo(moduleType, moduleId, parentModuleType, parentModuleId, parentPath));
848
864
  }
849
865
  loadWorkflows() {
850
866
  return this.store.dispatch(new GetWorkflows());
@@ -1218,6 +1234,20 @@ class workflowBuilder {
1218
1234
  this.selectedTab.set('tab1');
1219
1235
  console.log('Form and properties cleared for new step');
1220
1236
  }
1237
+ onPropertyCellChange(event) {
1238
+ if (event.type !== 'boolean')
1239
+ return;
1240
+ switch (event.column) {
1241
+ case 'isEditable':
1242
+ if (event.value)
1243
+ event.row.isVisible = true;
1244
+ break;
1245
+ case 'isVisible':
1246
+ if (!event.value)
1247
+ event.row.isEditable = false;
1248
+ break;
1249
+ }
1250
+ }
1221
1251
  onStructureAction(event) {
1222
1252
  console.log('Structure action received:', event);
1223
1253
  switch (event.action) {
@@ -1376,7 +1406,7 @@ class workflowBuilder {
1376
1406
  }
1377
1407
  }
1378
1408
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: workflowBuilder, deps: [], target: i0.ɵɵFactoryTarget.Component });
1379
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: workflowBuilder, isStandalone: true, selector: "mt-workflow-builder", ngImport: i0, template: "<mt-card class=\"h-full relative\" id=\"workflow-builder-card\">\n @if (!loading()) {\n <mt-structure-builder\n class=\"flex-1\"\n [availableNodes]=\"availableNodes\"\n [connectionForm]=\"connectionForm()\"\n [nodeActions]=\"nodeActions()\"\n (nodeActionsEvent)=\"onNodeActionsEvent($event)\"\n [nodes]=\"steps()\"\n [connections]=\"connections()\"\n (action)=\"onStructureAction($event)\"\n [addModalType]=\"'drawer'\"\n [addModalStyleClass]=\"'!w-[25rem] !absolute !shadow-none'\"\n [updateModalStyleClass]=\"'!w-[25rem] !absolute !shadow-none'\"\n [addModalHeader]=\"'Add Step'\"\n [updateModalHeader]=\"'Edit Step Properties'\"\n [appendTo]=\"'workflow-builder-card'\"\n [nodeFields]=\"nodeFields()\"\n >\n <div flowContent>\n <!-- <div class=\"absolute top-4 left-4 z-10\">\n @if (workflows().length > 1) {\n <div class=\"flex flex-col gap-2 w-80\">\n <mt-card>\n <mt-select-field\n [options]=\"workflows()\"\n [ngModel]=\"selectedWorkflowId()\"\n (ngModelChange)=\"onWorkflowChange($event)\"\n optionLabel=\"displayName\"\n optionValue=\"id\"\n placeholder=\"Select Workflow\"\n />\n </mt-card>\n </div>\n }\n </div> -->\n <div class=\"absolute top-4 right-4 z-10\">\n <div class=\"flex flex-col gap-2 w-80\">\n <mt-card>\n <div class=\"flex items-center gap-10\">\n <div class=\"flex items-center gap-2\">\n <mt-button [severity]=\"'secondary'\" icon=\"dev.dataflow-01\" />\n <label>Enable Workflow</label>\n </div>\n\n <mt-toggle-field\n [ngModel]=\"isPublished()\"\n (ngModelChange)=\"onPublishToggle($event)\"\n [disabled]=\"isPublishDisabled()\"\n ></mt-toggle-field>\n </div>\n </mt-card>\n </div>\n </div>\n </div>\n\n <ng-template\n #nodeDialog\n let-close=\"close\"\n let-save=\"save\"\n let-node=\"node\"\n >\n <div class=\"p-4\">\n @if (loadingStep()) {\n <!-- Loading skeleton -->\n <div class=\"space-y-4\">\n <!-- Tabs skeleton -->\n <div class=\"flex gap-2 mb-4\">\n <p-skeleton\n width=\"6rem\"\n height=\"2.5rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n <p-skeleton\n width=\"8rem\"\n height=\"2.5rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n </div>\n\n <!-- Form fields skeleton -->\n <div class=\"space-y-4\">\n <div>\n <p-skeleton\n width=\"8rem\"\n height=\"1rem\"\n styleClass=\"mb-2\"\n ></p-skeleton>\n <p-skeleton\n width=\"100%\"\n height=\"2.5rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n </div>\n <div>\n <p-skeleton\n width=\"8rem\"\n height=\"1rem\"\n styleClass=\"mb-2\"\n ></p-skeleton>\n <p-skeleton\n width=\"100%\"\n height=\"2.5rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n </div>\n <div>\n <p-skeleton\n width=\"10rem\"\n height=\"1rem\"\n styleClass=\"mb-2\"\n ></p-skeleton>\n <p-skeleton\n width=\"100%\"\n height=\"3rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n </div>\n <div>\n <p-skeleton\n width=\"6rem\"\n height=\"1rem\"\n styleClass=\"mb-2\"\n ></p-skeleton>\n <p-skeleton\n width=\"100%\"\n height=\"2.5rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n </div>\n <div>\n <p-skeleton\n width=\"4rem\"\n height=\"1rem\"\n styleClass=\"mb-2\"\n ></p-skeleton>\n <p-skeleton\n width=\"100%\"\n height=\"2.5rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n </div>\n </div>\n </div>\n } @else {\n <!-- Actual content -->\n <mt-tabs\n [(active)]=\"selectedTab\"\n [options]=\"tabsList\"\n fluid\n size=\"large\"\n ></mt-tabs>\n @switch (selectedTab()) {\n @case (\"tab1\") {\n <div class=\"mt-4\">\n <mt-dynamic-form\n [formConfig]=\"nodeForm()\"\n [formControl]=\"nodeFormControl\"\n ></mt-dynamic-form>\n </div>\n }\n @case (\"tab2\") {\n <div class=\"mt-4\">\n <mt-table\n [data]=\"propertiesTableData()\"\n [columns]=\"propertiesColumns()\"\n [selectableRows]=\"false\"\n [showGridlines]=\"true\"\n [stripedRows]=\"true\"\n ></mt-table>\n </div>\n }\n }\n }\n </div>\n </ng-template>\n </mt-structure-builder>\n }\n</mt-card>\n", dependencies: [{ kind: "component", type: StructureBuilder, selector: "mt-structure-builder", inputs: ["availableNodes", "nodeForm", "connectionForm", "nodeActions", "nodeFields", "isAutoLayout", "addModalType", "updateModalType", "addModalStyleClass", "updateModalStyleClass", "addModalHeader", "updateModalHeader", "appendTo", "nodes", "connections"], outputs: ["nodeActionsEvent", "action", "nodesChange", "connectionsChange"] }, { kind: "component", type: Card, selector: "mt-card", inputs: ["class", "title", "paddingless"] }, { kind: "component", type: Tabs, selector: "mt-tabs", inputs: ["options", "optionLabel", "optionValue", "active", "size", "fluid", "disabled"], outputs: ["activeChange", "onChange"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: DynamicForm, selector: "mt-dynamic-form", inputs: ["formConfig"] }, { kind: "component", type: Table, selector: "mt-table", inputs: ["data", "columns", "rowActions", "size", "showGridlines", "stripedRows", "selectableRows", "generalSearch", "showFilters", "loading", "tabs", "tabsOptionLabel", "tabsOptionValue", "activeTab", "actions", "paginatorPosition", "pageSize", "currentPage", "first", "filterTerm"], outputs: ["selectionChange", "activeTabChange", "onTabChange", "pageSizeChange", "currentPageChange", "firstChange", "filterTermChange"] }, { kind: "component", type: Skeleton, selector: "p-skeleton", inputs: ["styleClass", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "component", type: ToggleField, selector: "mt-toggle-field", inputs: ["label", "labelPosition", "placeholder", "readonly", "pInputs", "required"], outputs: ["onChange"] }, { kind: "component", type: Button, selector: "mt-button", inputs: ["icon", "label", "tooltip", "class", "type", "styleClass", "severity", "badge", "variant", "badgeSeverity", "size", "iconPos", "autofocus", "fluid", "raised", "rounded", "text", "plain", "outlined", "link", "disabled", "loading", "pInputs"], outputs: ["onClick", "onFocus", "onBlur"] }] });
1409
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: workflowBuilder, isStandalone: true, selector: "mt-workflow-builder", ngImport: i0, template: "<mt-card class=\"h-full relative\" id=\"workflow-builder-card\">\n @if (!loading()) {\n <mt-structure-builder\n class=\"flex-1\"\n [availableNodes]=\"availableNodes\"\n [connectionForm]=\"connectionForm()\"\n [nodeActions]=\"nodeActions()\"\n (nodeActionsEvent)=\"onNodeActionsEvent($event)\"\n [nodes]=\"steps()\"\n [connections]=\"connections()\"\n (action)=\"onStructureAction($event)\"\n [addModalType]=\"'drawer'\"\n [addModalStyleClass]=\"'!w-[25rem] !absolute !shadow-none'\"\n [updateModalStyleClass]=\"'!w-[25rem] !absolute !shadow-none'\"\n [addModalHeader]=\"'Add Step'\"\n [updateModalHeader]=\"'Edit Step Properties'\"\n [appendTo]=\"'workflow-builder-card'\"\n [nodeFields]=\"nodeFields()\"\n >\n <div flowContent>\n <!-- <div class=\"absolute top-4 left-4 z-10\">\n @if (workflows().length > 1) {\n <div class=\"flex flex-col gap-2 w-80\">\n <mt-card>\n <mt-select-field\n [options]=\"workflows()\"\n [ngModel]=\"selectedWorkflowId()\"\n (ngModelChange)=\"onWorkflowChange($event)\"\n optionLabel=\"displayName\"\n optionValue=\"id\"\n placeholder=\"Select Workflow\"\n />\n </mt-card>\n </div>\n }\n </div> -->\n <div class=\"absolute top-4 right-4 z-10\">\n <div class=\"flex flex-col gap-2 w-80\">\n <mt-card>\n <div class=\"flex items-center gap-10\">\n <div class=\"flex items-center gap-2\">\n <mt-button [severity]=\"'secondary'\" icon=\"dev.dataflow-01\" />\n <label>Enable Workflow</label>\n </div>\n\n <mt-toggle-field\n [ngModel]=\"isPublished()\"\n (ngModelChange)=\"onPublishToggle($event)\"\n [disabled]=\"isPublishDisabled()\"\n ></mt-toggle-field>\n </div>\n </mt-card>\n </div>\n </div>\n </div>\n\n <ng-template\n #nodeDialog\n let-close=\"close\"\n let-save=\"save\"\n let-node=\"node\"\n >\n <div class=\"p-4\">\n @if (loadingStep()) {\n <!-- Loading skeleton -->\n <div class=\"space-y-4\">\n <!-- Tabs skeleton -->\n <div class=\"flex gap-2 mb-4\">\n <p-skeleton\n width=\"6rem\"\n height=\"2.5rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n <p-skeleton\n width=\"8rem\"\n height=\"2.5rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n </div>\n\n <!-- Form fields skeleton -->\n <div class=\"space-y-4\">\n <div>\n <p-skeleton\n width=\"8rem\"\n height=\"1rem\"\n styleClass=\"mb-2\"\n ></p-skeleton>\n <p-skeleton\n width=\"100%\"\n height=\"2.5rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n </div>\n <div>\n <p-skeleton\n width=\"8rem\"\n height=\"1rem\"\n styleClass=\"mb-2\"\n ></p-skeleton>\n <p-skeleton\n width=\"100%\"\n height=\"2.5rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n </div>\n <div>\n <p-skeleton\n width=\"10rem\"\n height=\"1rem\"\n styleClass=\"mb-2\"\n ></p-skeleton>\n <p-skeleton\n width=\"100%\"\n height=\"3rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n </div>\n <div>\n <p-skeleton\n width=\"6rem\"\n height=\"1rem\"\n styleClass=\"mb-2\"\n ></p-skeleton>\n <p-skeleton\n width=\"100%\"\n height=\"2.5rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n </div>\n <div>\n <p-skeleton\n width=\"4rem\"\n height=\"1rem\"\n styleClass=\"mb-2\"\n ></p-skeleton>\n <p-skeleton\n width=\"100%\"\n height=\"2.5rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n </div>\n </div>\n </div>\n } @else {\n <!-- Actual content -->\n <mt-tabs\n [(active)]=\"selectedTab\"\n [options]=\"tabsList\"\n fluid\n size=\"large\"\n ></mt-tabs>\n @switch (selectedTab()) {\n @case (\"tab1\") {\n <div class=\"mt-4\">\n <mt-dynamic-form\n [formConfig]=\"nodeForm()\"\n [formControl]=\"nodeFormControl\"\n ></mt-dynamic-form>\n </div>\n }\n @case (\"tab2\") {\n <div class=\"mt-4\">\n <mt-table\n [data]=\"propertiesTableData()\"\n [columns]=\"propertiesColumns()\"\n [selectableRows]=\"false\"\n [showGridlines]=\"true\"\n [stripedRows]=\"true\"\n (cellChange)=\"onPropertyCellChange($event)\"\n ></mt-table>\n </div>\n }\n }\n }\n </div>\n </ng-template>\n </mt-structure-builder>\n }\n</mt-card>\n", dependencies: [{ kind: "component", type: StructureBuilder, selector: "mt-structure-builder", inputs: ["availableNodes", "nodeForm", "connectionForm", "nodeActions", "nodeFields", "isAutoLayout", "addModalType", "updateModalType", "addModalStyleClass", "updateModalStyleClass", "addModalHeader", "updateModalHeader", "appendTo", "nodes", "connections"], outputs: ["nodeActionsEvent", "action", "nodesChange", "connectionsChange"] }, { kind: "component", type: Card, selector: "mt-card", inputs: ["class", "title", "paddingless"] }, { kind: "component", type: Tabs, selector: "mt-tabs", inputs: ["options", "optionLabel", "optionValue", "active", "size", "fluid", "disabled"], outputs: ["activeChange", "onChange"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: DynamicForm, selector: "mt-dynamic-form", inputs: ["formConfig"] }, { kind: "component", type: Table, selector: "mt-table", inputs: ["data", "columns", "rowActions", "size", "showGridlines", "stripedRows", "selectableRows", "generalSearch", "showFilters", "loading", "tabs", "tabsOptionLabel", "tabsOptionValue", "activeTab", "actions", "paginatorPosition", "pageSize", "currentPage", "first", "filterTerm"], outputs: ["selectionChange", "cellChange", "activeTabChange", "onTabChange", "pageSizeChange", "currentPageChange", "firstChange", "filterTermChange"] }, { kind: "component", type: Skeleton, selector: "p-skeleton", inputs: ["styleClass", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "component", type: ToggleField, selector: "mt-toggle-field", inputs: ["label", "labelPosition", "placeholder", "readonly", "pInputs", "required"], outputs: ["onChange"] }, { kind: "component", type: Button, selector: "mt-button", inputs: ["icon", "label", "tooltip", "class", "type", "styleClass", "severity", "badge", "variant", "badgeSeverity", "size", "iconPos", "autofocus", "fluid", "raised", "rounded", "text", "plain", "outlined", "link", "disabled", "loading", "pInputs"], outputs: ["onClick", "onFocus", "onBlur"] }] });
1380
1410
  }
1381
1411
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: workflowBuilder, decorators: [{
1382
1412
  type: Component,
@@ -1392,7 +1422,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
1392
1422
  ToggleField,
1393
1423
  Button,
1394
1424
  SelectField,
1395
- ], host: {}, template: "<mt-card class=\"h-full relative\" id=\"workflow-builder-card\">\n @if (!loading()) {\n <mt-structure-builder\n class=\"flex-1\"\n [availableNodes]=\"availableNodes\"\n [connectionForm]=\"connectionForm()\"\n [nodeActions]=\"nodeActions()\"\n (nodeActionsEvent)=\"onNodeActionsEvent($event)\"\n [nodes]=\"steps()\"\n [connections]=\"connections()\"\n (action)=\"onStructureAction($event)\"\n [addModalType]=\"'drawer'\"\n [addModalStyleClass]=\"'!w-[25rem] !absolute !shadow-none'\"\n [updateModalStyleClass]=\"'!w-[25rem] !absolute !shadow-none'\"\n [addModalHeader]=\"'Add Step'\"\n [updateModalHeader]=\"'Edit Step Properties'\"\n [appendTo]=\"'workflow-builder-card'\"\n [nodeFields]=\"nodeFields()\"\n >\n <div flowContent>\n <!-- <div class=\"absolute top-4 left-4 z-10\">\n @if (workflows().length > 1) {\n <div class=\"flex flex-col gap-2 w-80\">\n <mt-card>\n <mt-select-field\n [options]=\"workflows()\"\n [ngModel]=\"selectedWorkflowId()\"\n (ngModelChange)=\"onWorkflowChange($event)\"\n optionLabel=\"displayName\"\n optionValue=\"id\"\n placeholder=\"Select Workflow\"\n />\n </mt-card>\n </div>\n }\n </div> -->\n <div class=\"absolute top-4 right-4 z-10\">\n <div class=\"flex flex-col gap-2 w-80\">\n <mt-card>\n <div class=\"flex items-center gap-10\">\n <div class=\"flex items-center gap-2\">\n <mt-button [severity]=\"'secondary'\" icon=\"dev.dataflow-01\" />\n <label>Enable Workflow</label>\n </div>\n\n <mt-toggle-field\n [ngModel]=\"isPublished()\"\n (ngModelChange)=\"onPublishToggle($event)\"\n [disabled]=\"isPublishDisabled()\"\n ></mt-toggle-field>\n </div>\n </mt-card>\n </div>\n </div>\n </div>\n\n <ng-template\n #nodeDialog\n let-close=\"close\"\n let-save=\"save\"\n let-node=\"node\"\n >\n <div class=\"p-4\">\n @if (loadingStep()) {\n <!-- Loading skeleton -->\n <div class=\"space-y-4\">\n <!-- Tabs skeleton -->\n <div class=\"flex gap-2 mb-4\">\n <p-skeleton\n width=\"6rem\"\n height=\"2.5rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n <p-skeleton\n width=\"8rem\"\n height=\"2.5rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n </div>\n\n <!-- Form fields skeleton -->\n <div class=\"space-y-4\">\n <div>\n <p-skeleton\n width=\"8rem\"\n height=\"1rem\"\n styleClass=\"mb-2\"\n ></p-skeleton>\n <p-skeleton\n width=\"100%\"\n height=\"2.5rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n </div>\n <div>\n <p-skeleton\n width=\"8rem\"\n height=\"1rem\"\n styleClass=\"mb-2\"\n ></p-skeleton>\n <p-skeleton\n width=\"100%\"\n height=\"2.5rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n </div>\n <div>\n <p-skeleton\n width=\"10rem\"\n height=\"1rem\"\n styleClass=\"mb-2\"\n ></p-skeleton>\n <p-skeleton\n width=\"100%\"\n height=\"3rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n </div>\n <div>\n <p-skeleton\n width=\"6rem\"\n height=\"1rem\"\n styleClass=\"mb-2\"\n ></p-skeleton>\n <p-skeleton\n width=\"100%\"\n height=\"2.5rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n </div>\n <div>\n <p-skeleton\n width=\"4rem\"\n height=\"1rem\"\n styleClass=\"mb-2\"\n ></p-skeleton>\n <p-skeleton\n width=\"100%\"\n height=\"2.5rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n </div>\n </div>\n </div>\n } @else {\n <!-- Actual content -->\n <mt-tabs\n [(active)]=\"selectedTab\"\n [options]=\"tabsList\"\n fluid\n size=\"large\"\n ></mt-tabs>\n @switch (selectedTab()) {\n @case (\"tab1\") {\n <div class=\"mt-4\">\n <mt-dynamic-form\n [formConfig]=\"nodeForm()\"\n [formControl]=\"nodeFormControl\"\n ></mt-dynamic-form>\n </div>\n }\n @case (\"tab2\") {\n <div class=\"mt-4\">\n <mt-table\n [data]=\"propertiesTableData()\"\n [columns]=\"propertiesColumns()\"\n [selectableRows]=\"false\"\n [showGridlines]=\"true\"\n [stripedRows]=\"true\"\n ></mt-table>\n </div>\n }\n }\n }\n </div>\n </ng-template>\n </mt-structure-builder>\n }\n</mt-card>\n" }]
1425
+ ], host: {}, template: "<mt-card class=\"h-full relative\" id=\"workflow-builder-card\">\n @if (!loading()) {\n <mt-structure-builder\n class=\"flex-1\"\n [availableNodes]=\"availableNodes\"\n [connectionForm]=\"connectionForm()\"\n [nodeActions]=\"nodeActions()\"\n (nodeActionsEvent)=\"onNodeActionsEvent($event)\"\n [nodes]=\"steps()\"\n [connections]=\"connections()\"\n (action)=\"onStructureAction($event)\"\n [addModalType]=\"'drawer'\"\n [addModalStyleClass]=\"'!w-[25rem] !absolute !shadow-none'\"\n [updateModalStyleClass]=\"'!w-[25rem] !absolute !shadow-none'\"\n [addModalHeader]=\"'Add Step'\"\n [updateModalHeader]=\"'Edit Step Properties'\"\n [appendTo]=\"'workflow-builder-card'\"\n [nodeFields]=\"nodeFields()\"\n >\n <div flowContent>\n <!-- <div class=\"absolute top-4 left-4 z-10\">\n @if (workflows().length > 1) {\n <div class=\"flex flex-col gap-2 w-80\">\n <mt-card>\n <mt-select-field\n [options]=\"workflows()\"\n [ngModel]=\"selectedWorkflowId()\"\n (ngModelChange)=\"onWorkflowChange($event)\"\n optionLabel=\"displayName\"\n optionValue=\"id\"\n placeholder=\"Select Workflow\"\n />\n </mt-card>\n </div>\n }\n </div> -->\n <div class=\"absolute top-4 right-4 z-10\">\n <div class=\"flex flex-col gap-2 w-80\">\n <mt-card>\n <div class=\"flex items-center gap-10\">\n <div class=\"flex items-center gap-2\">\n <mt-button [severity]=\"'secondary'\" icon=\"dev.dataflow-01\" />\n <label>Enable Workflow</label>\n </div>\n\n <mt-toggle-field\n [ngModel]=\"isPublished()\"\n (ngModelChange)=\"onPublishToggle($event)\"\n [disabled]=\"isPublishDisabled()\"\n ></mt-toggle-field>\n </div>\n </mt-card>\n </div>\n </div>\n </div>\n\n <ng-template\n #nodeDialog\n let-close=\"close\"\n let-save=\"save\"\n let-node=\"node\"\n >\n <div class=\"p-4\">\n @if (loadingStep()) {\n <!-- Loading skeleton -->\n <div class=\"space-y-4\">\n <!-- Tabs skeleton -->\n <div class=\"flex gap-2 mb-4\">\n <p-skeleton\n width=\"6rem\"\n height=\"2.5rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n <p-skeleton\n width=\"8rem\"\n height=\"2.5rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n </div>\n\n <!-- Form fields skeleton -->\n <div class=\"space-y-4\">\n <div>\n <p-skeleton\n width=\"8rem\"\n height=\"1rem\"\n styleClass=\"mb-2\"\n ></p-skeleton>\n <p-skeleton\n width=\"100%\"\n height=\"2.5rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n </div>\n <div>\n <p-skeleton\n width=\"8rem\"\n height=\"1rem\"\n styleClass=\"mb-2\"\n ></p-skeleton>\n <p-skeleton\n width=\"100%\"\n height=\"2.5rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n </div>\n <div>\n <p-skeleton\n width=\"10rem\"\n height=\"1rem\"\n styleClass=\"mb-2\"\n ></p-skeleton>\n <p-skeleton\n width=\"100%\"\n height=\"3rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n </div>\n <div>\n <p-skeleton\n width=\"6rem\"\n height=\"1rem\"\n styleClass=\"mb-2\"\n ></p-skeleton>\n <p-skeleton\n width=\"100%\"\n height=\"2.5rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n </div>\n <div>\n <p-skeleton\n width=\"4rem\"\n height=\"1rem\"\n styleClass=\"mb-2\"\n ></p-skeleton>\n <p-skeleton\n width=\"100%\"\n height=\"2.5rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n </div>\n </div>\n </div>\n } @else {\n <!-- Actual content -->\n <mt-tabs\n [(active)]=\"selectedTab\"\n [options]=\"tabsList\"\n fluid\n size=\"large\"\n ></mt-tabs>\n @switch (selectedTab()) {\n @case (\"tab1\") {\n <div class=\"mt-4\">\n <mt-dynamic-form\n [formConfig]=\"nodeForm()\"\n [formControl]=\"nodeFormControl\"\n ></mt-dynamic-form>\n </div>\n }\n @case (\"tab2\") {\n <div class=\"mt-4\">\n <mt-table\n [data]=\"propertiesTableData()\"\n [columns]=\"propertiesColumns()\"\n [selectableRows]=\"false\"\n [showGridlines]=\"true\"\n [stripedRows]=\"true\"\n (cellChange)=\"onPropertyCellChange($event)\"\n ></mt-table>\n </div>\n }\n }\n }\n </div>\n </ng-template>\n </mt-structure-builder>\n }\n</mt-card>\n" }]
1396
1426
  }], ctorParameters: () => [] });
1397
1427
 
1398
1428
  // store/app.state.ts
@@ -1410,5 +1440,5 @@ const REQUEST_CONTEXT = new HttpContextToken(() => ({
1410
1440
  * Generated bundle index. Do not edit.
1411
1441
  */
1412
1442
 
1413
- export { CreateConnection, CreateStep, DeleteConnection, DeleteStep, GetFormulaProperties, GetGroups, GetRolesForModule, GetStep, GetWorkflow, GetWorkflows, PublishWorkflow, REQUEST_CONTEXT, SetWorkflowInfo, UpdateConnection, UpdateStep, ValidateFlow, WorkflowFacade, WorkflowState, workflowBuilder };
1443
+ export { CreateConnection, CreateStep, DeleteConnection, DeleteStep, GetFormulaProperties, GetGroups, GetRolesForModule, GetStep, GetWorkflow, GetWorkflows, PublishWorkflow, REQUEST_CONTEXT, SetModuleInfo, UpdateConnection, UpdateStep, ValidateFlow, WorkflowFacade, WorkflowState, workflowBuilder };
1414
1444
  //# sourceMappingURL=masterteam-workflow.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"masterteam-workflow.mjs","sources":["../../../../packages/masterteam/workflow/src/store/workflow/workflow.actions.ts","../../../../packages/masterteam/workflow/src/store/utils/state-helpers.ts","../../../../packages/masterteam/workflow/src/store/workflow/workflow.state.ts","../../../../packages/masterteam/workflow/src/store/workflow/workflow.facade.ts","../../../../packages/masterteam/workflow/src/store/workflow/api.model.ts","../../../../packages/masterteam/workflow/src/lib/workflow-builder/workflow-builder.ts","../../../../packages/masterteam/workflow/src/lib/workflow-builder/workflow-builder.html","../../../../packages/masterteam/workflow/src/store/app.state.ts","../../../../packages/masterteam/workflow/src/store/index.ts","../../../../packages/masterteam/workflow/src/public-api.ts","../../../../packages/masterteam/workflow/src/masterteam-workflow.ts"],"sourcesContent":["import type { ConnectionPayload, StepPayload } from './workflow.model';\n\nexport class SetWorkflowInfo {\n static readonly type = '[Workflow] Set Workflow Info';\n\n constructor(\n public readonly moduleType: string,\n public readonly moduleId: string | number,\n ) {}\n}\n\nexport class GetWorkflows {\n static readonly type = '[Workflow] Get Workflows';\n}\n\nexport class GetWorkflow {\n static readonly type = '[Workflow] Get Workflow';\n\n constructor(public readonly workflowId: string | number) {}\n}\n\nexport class GetFormulaProperties {\n static readonly type = '[Workflow] Get Formula Properties';\n}\n\nexport class GetGroups {\n static readonly type = '[Workflow] Get Groups';\n}\n\nexport class GetRolesForModule {\n static readonly type = '[Workflow] Get Roles For Module';\n}\n\nexport class GetStep {\n static readonly type = '[Workflow] Get Step';\n\n constructor(public readonly stepId: string | number) {}\n}\n\nexport class ValidateFlow {\n static readonly type = '[Workflow] Validate Flow';\n}\n\nexport class CreateStep {\n static readonly type = '[Workflow] Create Step';\n\n constructor(public readonly payload: StepPayload) {}\n}\n\nexport class UpdateStep {\n static readonly type = '[Workflow] Update Step';\n\n constructor(\n public readonly stepId: string | number,\n public readonly payload: StepPayload,\n public readonly isInitial?: boolean,\n ) {}\n}\n\nexport class CreateConnection {\n static readonly type = '[Workflow] Create Connection';\n\n constructor(public readonly payload: ConnectionPayload) {}\n}\n\nexport class UpdateConnection {\n static readonly type = '[Workflow] Update Connection';\n\n constructor(\n public readonly connectionId: string | number,\n public readonly payload: ConnectionPayload,\n ) {}\n}\n\nexport class PublishWorkflow {\n static readonly type = '[Workflow] Publish Workflow';\n\n constructor(public readonly isPublished: boolean) {}\n}\n\nexport class DeleteStep {\n static readonly type = '[Workflow] Delete Step';\n\n constructor(public readonly stepId: string | number) {}\n}\n\nexport class DeleteConnection {\n static readonly type = '[Workflow] Delete Connection';\n\n constructor(public readonly connectionId: string | number) {}\n}\n","import type { StateContext } from '@ngxs/store';\n\nexport interface LoadingStateShape<L extends string = string> {\n loadingActive: L[];\n errors: Partial<Record<L, string>>;\n}\n\ntype LoadingName<T extends LoadingStateShape<string>> =\n T['loadingActive'][number];\n\nexport function startLoading<T extends LoadingStateShape<string>>(\n ctx: StateContext<T>,\n loadingName: LoadingName<T>,\n): void {\n const { loadingActive, errors } = ctx.getState();\n\n if (!loadingActive.includes(loadingName)) {\n ctx.patchState({\n loadingActive: [...loadingActive, loadingName],\n } as Partial<T>);\n }\n\n if (errors && errors[loadingName]) {\n const { [loadingName]: _removed, ...rest } = errors;\n ctx.patchState({ errors: rest } as Partial<T>);\n }\n}\n\nexport function endLoading<T extends LoadingStateShape<string>>(\n ctx: StateContext<T>,\n loadingName: LoadingName<T>,\n): void {\n const { loadingActive } = ctx.getState();\n\n ctx.patchState({\n loadingActive: loadingActive.filter((name) => name !== loadingName),\n } as Partial<T>);\n}\n\nexport function setLoadingError<T extends LoadingStateShape<string>>(\n ctx: StateContext<T>,\n loadingName: LoadingName<T>,\n message: string,\n): void {\n const { errors } = ctx.getState();\n ctx.patchState({\n errors: { ...errors, [loadingName]: message },\n } as Partial<T>);\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Action, Selector, State, StateContext } from '@ngxs/store';\nimport { of } from 'rxjs';\nimport { catchError, finalize, tap } from 'rxjs/operators';\n\nimport {\n endLoading,\n setLoadingError,\n startLoading,\n} from '../utils/state-helpers';\n\nimport type {\n ConnectionResponse,\n FormulaProperty,\n GroupDefinition,\n PublishResponse,\n RoleDefinition,\n StepResponse,\n StepSchema,\n WorkflowConnection,\n WorkflowListItem,\n WorkflowLoadingName,\n WorkflowSchema,\n WorkflowStateModel,\n WorkflowStepSchema,\n} from './workflow.model';\nimport {\n CreateConnection,\n CreateStep,\n DeleteConnection,\n DeleteStep,\n GetFormulaProperties,\n GetGroups,\n GetRolesForModule,\n GetStep,\n GetWorkflow,\n GetWorkflows,\n PublishWorkflow,\n SetWorkflowInfo,\n UpdateConnection,\n UpdateStep,\n ValidateFlow,\n} from './workflow.actions';\nimport { Response } from './api.model';\n\nconst DEFAULT_STATE: WorkflowStateModel = {\n workflowId: null,\n moduleType: null,\n moduleId: null,\n workflows: [],\n workflow: null,\n formulaProperties: [],\n groups: [],\n roles: [],\n selectedStep: null,\n isFlowValid: null,\n loadingActive: [],\n errors: {},\n};\n\n@State<WorkflowStateModel>({\n name: 'workflow',\n defaults: DEFAULT_STATE,\n})\n@Injectable()\nexport class WorkflowState {\n private readonly http = inject(HttpClient);\n private readonly baseUrl = 'ProcessBuilder';\n private readonly groupsUrl = 'identity/Groups';\n private readonly rolesUrl = 'identity/roles/scopes';\n\n @Selector()\n static workflowId(state: WorkflowStateModel): string | number | null {\n return state.workflowId;\n }\n\n @Selector()\n static moduleType(state: WorkflowStateModel): string | null {\n return state.moduleType;\n }\n\n @Selector()\n static moduleId(state: WorkflowStateModel): string | number | null {\n return state.moduleId;\n }\n\n @Selector()\n static workflows(state: WorkflowStateModel) {\n return state.workflows;\n }\n\n @Selector()\n static workflow(state: WorkflowStateModel): WorkflowSchema | null {\n return state.workflow;\n }\n\n @Selector()\n static formulaProperties(state: WorkflowStateModel): FormulaProperty[] {\n return state.formulaProperties;\n }\n\n @Selector()\n static groups(state: WorkflowStateModel): GroupDefinition[] {\n return state.groups;\n }\n\n @Selector()\n static roles(state: WorkflowStateModel): RoleDefinition[] {\n return state.roles;\n }\n\n @Selector()\n static selectedStep(state: WorkflowStateModel): StepSchema | null {\n return state.selectedStep;\n }\n\n @Selector()\n static isFlowValid(state: WorkflowStateModel): boolean | null {\n return state.isFlowValid;\n }\n\n @Selector()\n static stepsSchema(state: WorkflowStateModel): WorkflowStepSchema[] {\n return state.workflow?.stepsSchema ?? [];\n }\n\n @Selector()\n static connections(state: WorkflowStateModel): WorkflowConnection[] {\n return state.workflow?.connections ?? [];\n }\n\n @Selector()\n static isLoadingFactory(state: WorkflowStateModel) {\n return (loadingName: WorkflowLoadingName) =>\n state.loadingActive.includes(loadingName);\n }\n\n @Selector()\n static errorFactory(state: WorkflowStateModel) {\n return (loadingName: WorkflowLoadingName) =>\n state.errors?.[loadingName] ?? null;\n }\n\n @Action(SetWorkflowInfo)\n setWorkflowInfo(\n ctx: StateContext<WorkflowStateModel>,\n action: SetWorkflowInfo,\n ) {\n ctx.patchState({\n moduleType: action.moduleType,\n moduleId: action.moduleId,\n });\n }\n\n @Action(GetWorkflows)\n getWorkflows(ctx: StateContext<WorkflowStateModel>, _action: GetWorkflows) {\n startLoading(ctx, 'getWorkflows');\n\n const state = ctx.getState();\n const { moduleId } = state;\n\n if (!moduleId) {\n const message = 'Module ID is not set';\n setLoadingError(ctx, 'getWorkflows', message);\n endLoading(ctx, 'getWorkflows');\n return of(null);\n }\n\n return this.http\n .get<\n Response<WorkflowListItem[]>\n >(`${this.baseUrl}/${moduleId}/requestSchema`)\n .pipe(\n tap((response) => {\n const workflows = response?.data ?? [];\n ctx.patchState({ workflows });\n\n // Auto-select and load first workflow if available\n if (workflows.length > 0) {\n const firstWorkflow = workflows[0];\n ctx.patchState({ workflowId: firstWorkflow.id });\n ctx.dispatch(new GetWorkflow(firstWorkflow.id));\n }\n }),\n catchError((error) => {\n const message =\n error?.error?.message ??\n error?.message ??\n 'Failed to load workflows';\n setLoadingError(ctx, 'getWorkflows', message);\n return of(null);\n }),\n finalize(() => endLoading(ctx, 'getWorkflows')),\n );\n }\n\n @Action(GetWorkflow)\n getWorkflow(ctx: StateContext<WorkflowStateModel>, action: GetWorkflow) {\n startLoading(ctx, 'getWorkflow');\n\n const state = ctx.getState();\n const workflowId = action.workflowId;\n const { moduleId } = state;\n\n if (!workflowId) {\n const message = 'Workflow ID is not set';\n setLoadingError(ctx, 'getWorkflow', message);\n endLoading(ctx, 'getWorkflow');\n return of(null);\n }\n\n // Set the workflowId in state\n ctx.patchState({ workflowId });\n\n return this.http\n .get<Response<WorkflowSchema>>(\n `${this.baseUrl}/${moduleId}/requestSchema/${workflowId}`,\n {\n params: { Mode: 'edit' },\n },\n )\n .pipe(\n tap((response) => {\n const workflow = response?.data ?? null;\n ctx.patchState({\n workflow,\n isFlowValid: workflow?.isValid ?? null,\n });\n }),\n catchError((error) => {\n const message =\n error?.error?.message ??\n error?.message ??\n 'Failed to load workflow';\n setLoadingError(ctx, 'getWorkflow', message);\n return of(null);\n }),\n finalize(() => endLoading(ctx, 'getWorkflow')),\n );\n }\n\n @Action(GetFormulaProperties)\n getFormulaProperties(\n ctx: StateContext<WorkflowStateModel>,\n _action: GetFormulaProperties,\n ) {\n startLoading(ctx, 'getFormulaProperties');\n\n const state = ctx.getState();\n const workflowId = state.workflowId;\n\n if (!workflowId) {\n const message = 'Workflow ID is not set';\n setLoadingError(ctx, 'getFormulaProperties', message);\n endLoading(ctx, 'getFormulaProperties');\n return of(null);\n }\n\n return this.http\n .get<\n Response<FormulaProperty[]>\n >(`${this.baseUrl}/processFormulaProperties/${workflowId}`)\n .pipe(\n tap((response) => {\n const formulaProperties = Array.isArray(response?.data)\n ? response.data\n : [];\n ctx.patchState({ formulaProperties });\n }),\n catchError((error) => {\n const message =\n error?.error?.message ??\n error?.message ??\n 'Failed to load formula properties';\n setLoadingError(ctx, 'getFormulaProperties', message);\n return of([]);\n }),\n finalize(() => endLoading(ctx, 'getFormulaProperties')),\n );\n }\n\n @Action(GetGroups)\n getGroups(ctx: StateContext<WorkflowStateModel>, _action: GetGroups) {\n const state = ctx.getState();\n if (state.groups.length) {\n return of(state.groups);\n }\n\n startLoading(ctx, 'getGroups');\n\n return this.http.get<Response<GroupDefinition[]>>(this.groupsUrl).pipe(\n tap((response) => {\n const groups = Array.isArray(response?.data) ? response.data : [];\n ctx.patchState({ groups });\n }),\n catchError((error) => {\n const message =\n error?.error?.message ?? error?.message ?? 'Failed to load groups';\n setLoadingError(ctx, 'getGroups', message);\n return of([]);\n }),\n finalize(() => endLoading(ctx, 'getGroups')),\n );\n }\n\n @Action(GetRolesForModule)\n getRolesForModule(\n ctx: StateContext<WorkflowStateModel>,\n _action: GetRolesForModule,\n ) {\n const state = ctx.getState();\n const { moduleType, moduleId } = state;\n\n if (!moduleType || !moduleId) {\n const message = 'Module type and module ID must be set';\n setLoadingError(ctx, 'getRolesForModule', message);\n return of([]);\n }\n\n startLoading(ctx, 'getRolesForModule');\n\n return this.http\n .get<Response<RoleDefinition[]>>(\n `${this.rolesUrl}/${moduleType}/${moduleId}`,\n {\n params: { inherited: 'true' },\n },\n )\n .pipe(\n tap((response) => {\n const roles = Array.isArray(response?.data) ? response.data : [];\n ctx.patchState({ roles });\n }),\n catchError((error) => {\n const message =\n error?.error?.message ?? error?.message ?? 'Failed to load roles';\n setLoadingError(ctx, 'getRolesForModule', message);\n return of([]);\n }),\n finalize(() => endLoading(ctx, 'getRolesForModule')),\n );\n }\n\n @Action(GetStep)\n getStep(ctx: StateContext<WorkflowStateModel>, action: GetStep) {\n startLoading(ctx, 'getStep');\n\n return this.http\n .get<Response<StepSchema>>(\n `${this.baseUrl}/stepSchema/${action.stepId}`,\n {\n params: { Mode: 'edit' },\n },\n )\n .pipe(\n tap((response) => {\n const selectedStep = response?.data ?? null;\n ctx.patchState({ selectedStep });\n }),\n catchError((error) => {\n const message =\n error?.error?.message ?? error?.message ?? 'Failed to load step';\n setLoadingError(ctx, 'getStep', message);\n return of(null);\n }),\n finalize(() => endLoading(ctx, 'getStep')),\n );\n }\n\n @Action(ValidateFlow)\n validateFlow(ctx: StateContext<WorkflowStateModel>, _action: ValidateFlow) {\n startLoading(ctx, 'validateFlow');\n\n const state = ctx.getState();\n const workflowId = state.workflowId;\n\n if (!workflowId) {\n const message = 'Workflow ID is not set';\n setLoadingError(ctx, 'validateFlow', message);\n endLoading(ctx, 'validateFlow');\n return of(null);\n }\n\n return this.http\n .get<\n Response<boolean>\n >(`${this.baseUrl}/requestSchema/${workflowId}/validity`)\n .pipe(\n tap((response) => {\n const isFlowValid = response?.data ?? null;\n ctx.patchState({ isFlowValid });\n }),\n catchError((error) => {\n const message =\n error?.error?.message ??\n error?.message ??\n 'Failed to validate flow';\n setLoadingError(ctx, 'validateFlow', message);\n return of(null);\n }),\n finalize(() => endLoading(ctx, 'validateFlow')),\n );\n }\n\n @Action(CreateStep)\n createStep(ctx: StateContext<WorkflowStateModel>, action: CreateStep) {\n const state = ctx.getState();\n const workflowId = state.workflowId;\n\n if (!workflowId) {\n const message = 'Workflow ID is not set';\n setLoadingError(ctx, 'createStep', message);\n return of(null);\n }\n\n const tempId = -Date.now();\n const tempStep: any = {\n ...action.payload,\n id: tempId,\n loading: true,\n };\n\n if (state.workflow) {\n ctx.patchState({\n workflow: {\n ...state.workflow,\n stepsSchema: [...state.workflow.stepsSchema, tempStep],\n },\n });\n }\n\n startLoading(ctx, 'createStep');\n\n return this.http\n .post<\n Response<StepResponse>\n >(`${this.baseUrl}/requestSchema/${workflowId}/stepSchema`, action.payload)\n .pipe(\n tap((response) => {\n const createdStep = response?.data;\n const currentState = ctx.getState();\n if (createdStep && currentState.workflow) {\n const updatedSteps = currentState.workflow.stepsSchema.map(\n (step) =>\n step.id === tempId ? { ...createdStep, loading: false } : step,\n );\n\n ctx.patchState({\n workflow: {\n ...currentState.workflow,\n stepsSchema: updatedSteps,\n },\n });\n }\n // Validate flow after creating step\n ctx.dispatch(new ValidateFlow());\n }),\n catchError((error) => {\n const currentState = ctx.getState();\n if (currentState.workflow) {\n const filteredSteps = currentState.workflow.stepsSchema.filter(\n (step) => step.id !== tempId,\n );\n ctx.patchState({\n workflow: {\n ...currentState.workflow,\n stepsSchema: filteredSteps,\n },\n });\n }\n\n const message =\n error?.error?.message ?? error?.message ?? 'Failed to create step';\n setLoadingError(ctx, 'createStep', message);\n return of(null);\n }),\n finalize(() => endLoading(ctx, 'createStep')),\n );\n }\n\n @Action(UpdateStep)\n updateStep(ctx: StateContext<WorkflowStateModel>, action: UpdateStep) {\n const state = ctx.getState();\n const workflowId = state.workflowId;\n\n if (!workflowId) {\n const message = 'Workflow ID is not set';\n setLoadingError(ctx, 'updateStep', message);\n return of(null);\n }\n\n if (state.workflow) {\n const updatedSteps = state.workflow.stepsSchema.map((step) =>\n step.id === action.stepId ? { ...step, loading: true } : step,\n );\n ctx.patchState({\n workflow: {\n ...state.workflow,\n stepsSchema: updatedSteps,\n },\n });\n }\n\n startLoading(ctx, 'updateStep');\n\n const endpoint = action.isInitial ? 'initialStepSchema' : 'stepSchema';\n\n return this.http\n .put<\n Response<StepResponse>\n >(`${this.baseUrl}/${endpoint}/${action.stepId}`, action.payload)\n .pipe(\n tap((response) => {\n const updatedStep = response?.data;\n const currentState = ctx.getState();\n if (updatedStep && currentState.workflow) {\n ctx.patchState({\n workflow: {\n ...currentState.workflow,\n stepsSchema: currentState.workflow.stepsSchema.map((step) =>\n step.id === updatedStep.id\n ? { ...updatedStep, loading: false }\n : step,\n ),\n },\n });\n }\n // Validate flow after updating step\n ctx.dispatch(new ValidateFlow());\n }),\n catchError((error) => {\n const currentState = ctx.getState();\n if (currentState.workflow) {\n const errorSteps = currentState.workflow.stepsSchema.map((step) =>\n step.id === action.stepId ? { ...step, loading: false } : step,\n );\n ctx.patchState({\n workflow: {\n ...currentState.workflow,\n stepsSchema: errorSteps,\n },\n });\n }\n\n const message =\n error?.error?.message ?? error?.message ?? 'Failed to update step';\n setLoadingError(ctx, 'updateStep', message);\n return of(null);\n }),\n finalize(() => endLoading(ctx, 'updateStep')),\n );\n }\n\n @Action(CreateConnection)\n createConnection(\n ctx: StateContext<WorkflowStateModel>,\n action: CreateConnection,\n ) {\n const state = ctx.getState();\n const workflowId = state.workflowId;\n\n if (!workflowId) {\n const message = 'Workflow ID is not set';\n setLoadingError(ctx, 'createConnection', message);\n return of(null);\n }\n\n const tempId = -Date.now();\n const tempConnection: any = {\n ...action.payload,\n id: tempId,\n loading: true,\n source: action.payload.sourceStepId,\n target: action.payload.targetStepId,\n };\n\n if (state.workflow) {\n ctx.patchState({\n workflow: {\n ...state.workflow,\n connections: [...state.workflow.connections, tempConnection],\n },\n });\n }\n\n startLoading(ctx, 'createConnection');\n\n return this.http\n .post<\n Response<ConnectionResponse>\n >(`${this.baseUrl}/requestSchema/${workflowId}/connection`, action.payload)\n .pipe(\n tap((response) => {\n const createdConnection = response?.data;\n const currentState = ctx.getState();\n if (createdConnection && currentState.workflow) {\n const updatedConnections = currentState.workflow.connections.map(\n (conn) =>\n conn.id === tempId\n ? { ...createdConnection, loading: false }\n : conn,\n );\n\n ctx.patchState({\n workflow: {\n ...currentState.workflow,\n connections: updatedConnections,\n },\n });\n }\n // Validate flow after creating connection\n ctx.dispatch(new ValidateFlow());\n }),\n catchError((error) => {\n const currentState = ctx.getState();\n if (currentState.workflow) {\n const filteredConnections =\n currentState.workflow.connections.filter(\n (conn) => conn.id !== tempId,\n );\n ctx.patchState({\n workflow: {\n ...currentState.workflow,\n connections: filteredConnections,\n },\n });\n }\n\n const message =\n error?.error?.message ??\n error?.message ??\n 'Failed to create connection';\n setLoadingError(ctx, 'createConnection', message);\n return of(null);\n }),\n finalize(() => endLoading(ctx, 'createConnection')),\n );\n }\n\n @Action(UpdateConnection)\n updateConnection(\n ctx: StateContext<WorkflowStateModel>,\n action: UpdateConnection,\n ) {\n const state = ctx.getState();\n const workflowId = state.workflowId;\n\n if (!workflowId) {\n const message = 'Workflow ID is not set';\n setLoadingError(ctx, 'updateConnection', message);\n return of(null);\n }\n\n if (state.workflow) {\n const updatedConnections = state.workflow.connections.map((conn) =>\n conn.id === action.connectionId ? { ...conn, loading: true } : conn,\n );\n ctx.patchState({\n workflow: {\n ...state.workflow,\n connections: updatedConnections,\n },\n });\n }\n\n startLoading(ctx, 'updateConnection');\n\n return this.http\n .put<\n Response<ConnectionResponse>\n >(`${this.baseUrl}/stepSchemaConnection/${action.connectionId}`, action.payload)\n .pipe(\n tap((response) => {\n const updatedConnection = response?.data;\n const currentState = ctx.getState();\n if (updatedConnection && currentState.workflow) {\n ctx.patchState({\n workflow: {\n ...currentState.workflow,\n connections: currentState.workflow.connections.map((conn) =>\n conn.id === updatedConnection.id\n ? { ...updatedConnection, loading: false }\n : conn,\n ),\n },\n });\n }\n // Validate flow after updating connection\n ctx.dispatch(new ValidateFlow());\n }),\n catchError((error) => {\n const currentState = ctx.getState();\n if (currentState.workflow) {\n const errorConnections = currentState.workflow.connections.map(\n (conn) =>\n conn.id === action.connectionId\n ? { ...conn, loading: false }\n : conn,\n );\n ctx.patchState({\n workflow: {\n ...currentState.workflow,\n connections: errorConnections,\n },\n });\n }\n\n const message =\n error?.error?.message ??\n error?.message ??\n 'Failed to update connection';\n setLoadingError(ctx, 'updateConnection', message);\n return of(null);\n }),\n finalize(() => endLoading(ctx, 'updateConnection')),\n );\n }\n\n @Action(PublishWorkflow)\n publishWorkflow(\n ctx: StateContext<WorkflowStateModel>,\n action: PublishWorkflow,\n ) {\n startLoading(ctx, 'publishWorkflow');\n\n const state = ctx.getState();\n const workflowId = state.workflowId;\n\n if (!workflowId) {\n const message = 'Workflow ID is not set';\n setLoadingError(ctx, 'publishWorkflow', message);\n endLoading(ctx, 'publishWorkflow');\n return of(null);\n }\n\n return this.http\n .put<\n Response<PublishResponse>\n >(`${this.baseUrl}/requestSchema/${workflowId}/publish`, { IsPublished: action.isPublished })\n .pipe(\n tap((response) => {\n const publishedData = response?.data;\n if (publishedData && state.workflow) {\n ctx.patchState({\n workflow: {\n ...state.workflow,\n isPublished: publishedData.isPublished,\n isValid: publishedData.isValid,\n },\n });\n }\n }),\n catchError((error) => {\n const message =\n error?.error?.message ??\n error?.message ??\n 'Failed to publish workflow';\n setLoadingError(ctx, 'publishWorkflow', message);\n return of(null);\n }),\n finalize(() => endLoading(ctx, 'publishWorkflow')),\n );\n }\n\n @Action(DeleteStep)\n deleteStep(ctx: StateContext<WorkflowStateModel>, action: DeleteStep) {\n const state = ctx.getState();\n\n if (state.workflow) {\n // Mark step as loading\n const updatedSteps = state.workflow.stepsSchema.map((step) =>\n step.id == action.stepId ? { ...step, loading: true } : step,\n );\n\n // Filter out all connections related to this step\n const updatedConnections = state.workflow.connections.filter(\n (conn) => conn.source != action.stepId && conn.target != action.stepId,\n );\n\n ctx.patchState({\n workflow: {\n ...state.workflow,\n stepsSchema: updatedSteps,\n connections: updatedConnections,\n },\n });\n }\n\n startLoading(ctx, 'deleteStep');\n\n return this.http\n .delete<Response<boolean>>(`${this.baseUrl}/stepSchema/${action.stepId}`)\n .pipe(\n tap(() => {\n const currentState = ctx.getState();\n if (currentState.workflow) {\n ctx.patchState({\n workflow: {\n ...currentState.workflow,\n stepsSchema: currentState.workflow.stepsSchema.filter(\n (step) => step.id != action.stepId,\n ),\n },\n });\n }\n // Validate flow after deleting step\n ctx.dispatch(new ValidateFlow());\n }),\n catchError((error) => {\n const currentState = ctx.getState();\n if (currentState.workflow) {\n // Restore step loading state\n const errorSteps = currentState.workflow.stepsSchema.map((step) =>\n step.id == action.stepId ? { ...step, loading: false } : step,\n );\n\n // Restore connections related to this step from original state\n const relatedConnections =\n state.workflow?.connections.filter(\n (conn) =>\n conn.source == action.stepId || conn.target == action.stepId,\n ) || [];\n\n ctx.patchState({\n workflow: {\n ...currentState.workflow,\n stepsSchema: errorSteps,\n connections: [\n ...currentState.workflow.connections,\n ...relatedConnections,\n ],\n },\n });\n }\n\n const message =\n error?.error?.message ?? error?.message ?? 'Failed to delete step';\n setLoadingError(ctx, 'deleteStep', message);\n return of(null);\n }),\n finalize(() => endLoading(ctx, 'deleteStep')),\n );\n }\n\n @Action(DeleteConnection)\n deleteConnection(\n ctx: StateContext<WorkflowStateModel>,\n action: DeleteConnection,\n ) {\n const state = ctx.getState();\n\n if (state.workflow) {\n const updatedConnections = state.workflow.connections.map((conn) =>\n conn.id == action.connectionId ? { ...conn, loading: true } : conn,\n );\n ctx.patchState({\n workflow: {\n ...state.workflow,\n connections: updatedConnections,\n },\n });\n }\n\n startLoading(ctx, 'deleteConnection');\n\n return this.http\n .delete<\n Response<boolean>\n >(`${this.baseUrl}/stepSchemaConnection/${action.connectionId}`)\n .pipe(\n tap(() => {\n const currentState = ctx.getState();\n if (currentState.workflow) {\n ctx.patchState({\n workflow: {\n ...currentState.workflow,\n connections: currentState.workflow.connections.filter(\n (conn) => conn.id != action.connectionId,\n ),\n },\n });\n }\n // Validate flow after deleting connection\n ctx.dispatch(new ValidateFlow());\n }),\n catchError((error) => {\n const currentState = ctx.getState();\n if (currentState.workflow) {\n const errorConnections = currentState.workflow.connections.map(\n (conn) =>\n conn.id == action.connectionId\n ? { ...conn, loading: false }\n : conn,\n );\n ctx.patchState({\n workflow: {\n ...currentState.workflow,\n connections: errorConnections,\n },\n });\n }\n\n const message =\n error?.error?.message ??\n error?.message ??\n 'Failed to delete connection';\n setLoadingError(ctx, 'deleteConnection', message);\n return of(null);\n }),\n finalize(() => endLoading(ctx, 'deleteConnection')),\n );\n }\n}\n","import { Injectable, computed, inject } from '@angular/core';\nimport { select, Store } from '@ngxs/store';\nimport type { Observable } from 'rxjs';\n\nimport type {\n ConnectionPayload,\n FormulaProperty,\n GroupDefinition,\n RoleDefinition,\n StepPayload,\n StepSchema,\n WorkflowConnection,\n WorkflowListItem,\n WorkflowLoadingName,\n WorkflowSchema,\n WorkflowStepSchema,\n} from './workflow.model';\nimport {\n CreateConnection,\n CreateStep,\n DeleteConnection,\n DeleteStep,\n GetFormulaProperties,\n GetGroups,\n GetRolesForModule,\n GetStep,\n GetWorkflow,\n GetWorkflows,\n PublishWorkflow,\n SetWorkflowInfo,\n UpdateConnection,\n UpdateStep,\n ValidateFlow,\n} from './workflow.actions';\nimport { WorkflowState } from './workflow.state';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WorkflowFacade {\n private readonly store = inject(Store);\n\n readonly workflowId = select<string | number | null>(\n WorkflowState.workflowId,\n );\n readonly moduleType = select<string | null>(WorkflowState.moduleType);\n readonly moduleId = select<string | number | null>(WorkflowState.moduleId);\n readonly workflows = select<WorkflowListItem[]>(WorkflowState.workflows);\n readonly workflow = select<WorkflowSchema | null>(WorkflowState.workflow);\n readonly formulaProperties = select<FormulaProperty[]>(\n WorkflowState.formulaProperties,\n );\n readonly groups = select<GroupDefinition[]>(WorkflowState.groups);\n readonly roles = select<RoleDefinition[]>(WorkflowState.roles);\n readonly selectedStep = select<StepSchema | null>(WorkflowState.selectedStep);\n readonly isFlowValid = select<boolean | null>(WorkflowState.isFlowValid);\n readonly steps = select<WorkflowStepSchema[]>(WorkflowState.stepsSchema);\n readonly connections = select<WorkflowConnection[]>(\n WorkflowState.connections,\n );\n\n isLoading(loadingName: WorkflowLoadingName) {\n const loadingFactory = select<(name: WorkflowLoadingName) => boolean>(\n WorkflowState.isLoadingFactory,\n );\n return computed(() => loadingFactory()(loadingName));\n }\n\n error(loadingName: WorkflowLoadingName) {\n const errorFactory = select<(name: WorkflowLoadingName) => string | null>(\n WorkflowState.errorFactory,\n );\n return computed(() => errorFactory()(loadingName));\n }\n\n setWorkflowInfo(\n moduleType: string,\n moduleId: string | number,\n ): Observable<unknown> {\n return this.store.dispatch(new SetWorkflowInfo(moduleType, moduleId));\n }\n\n loadWorkflows(): Observable<unknown> {\n return this.store.dispatch(new GetWorkflows());\n }\n\n selectWorkflow(workflowId: string | number): Observable<unknown> {\n return this.store.dispatch(new GetWorkflow(workflowId));\n }\n\n loadWorkflow(): Observable<unknown> {\n return this.loadWorkflows();\n }\n\n loadFormulaProperties(): Observable<unknown> {\n return this.store.dispatch(new GetFormulaProperties());\n }\n\n loadGroups(): Observable<unknown> {\n return this.store.dispatch(new GetGroups());\n }\n\n loadRolesForModule(): Observable<unknown> {\n return this.store.dispatch(new GetRolesForModule());\n }\n\n loadStep(stepId: string | number): Observable<unknown> {\n return this.store.dispatch(new GetStep(stepId));\n }\n\n validateFlow(): Observable<unknown> {\n return this.store.dispatch(new ValidateFlow());\n }\n\n createStep(payload: StepPayload): Observable<unknown> {\n return this.store.dispatch(new CreateStep(payload));\n }\n\n updateStep(\n stepId: string | number,\n payload: StepPayload,\n isInitial?: boolean,\n ): Observable<unknown> {\n return this.store.dispatch(new UpdateStep(stepId, payload, isInitial));\n }\n\n createConnection(payload: ConnectionPayload): Observable<unknown> {\n return this.store.dispatch(new CreateConnection(payload));\n }\n\n updateConnection(\n connectionId: string | number,\n payload: ConnectionPayload,\n ): Observable<unknown> {\n return this.store.dispatch(new UpdateConnection(connectionId, payload));\n }\n\n publishWorkflow(isPublished: boolean): Observable<unknown> {\n return this.store.dispatch(new PublishWorkflow(isPublished));\n }\n\n deleteStep(stepId: string | number): Observable<unknown> {\n return this.store.dispatch(new DeleteStep(stepId));\n }\n\n deleteConnection(connectionId: string | number): Observable<unknown> {\n return this.store.dispatch(new DeleteConnection(connectionId));\n }\n}\n","// shared/models/api.model.ts\n\nexport interface Response<T> {\n endpoint: string;\n status: number;\n code: number;\n locale: string;\n message?: string | null;\n errors?: any | null;\n data: T;\n cacheSession?: string;\n}\n","import {\n Component,\n inject,\n linkedSignal,\n signal,\n computed,\n effect,\n} from '@angular/core';\nimport { DynamicFormConfig } from '@masterteam/components';\nimport { Card } from '@masterteam/components/card';\nimport {\n NodeActionEvent,\n SBAction,\n StructureBuilder,\n} from '@masterteam/structure-builder';\nimport { WorkflowFacade, WorkflowStepSchema } from '../../store/workflow';\nimport { Tabs } from '@masterteam/components/tabs';\nimport { FormControl, ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { DynamicForm } from '@masterteam/forms/dynamic-form';\nimport { Table } from '@masterteam/components/table';\nimport { ColumnDef } from '@masterteam/components/table';\nimport { Skeleton } from 'primeng/skeleton';\nimport { ToggleField } from '@masterteam/components/toggle-field';\nimport { Button } from '@masterteam/components/button';\nimport { SelectField } from '@masterteam/components/select-field';\n\n@Component({\n selector: 'mt-workflow-builder',\n imports: [\n StructureBuilder,\n Card,\n Tabs,\n ReactiveFormsModule,\n FormsModule,\n DynamicForm,\n Table,\n Skeleton,\n ToggleField,\n Button,\n SelectField,\n ],\n templateUrl: './workflow-builder.html',\n styles: [],\n host: {},\n})\nexport class workflowBuilder {\n private workflowFacade = inject(WorkflowFacade);\n groups = this.workflowFacade.groups;\n roles = this.workflowFacade.roles;\n workflows = this.workflowFacade.workflows;\n workflow = this.workflowFacade.workflow;\n loading = this.workflowFacade.isLoading('getWorkflow');\n loadingStep = this.workflowFacade.isLoading('getStep');\n isFlowValid = this.workflowFacade.isFlowValid;\n\n selectedStep = this.workflowFacade.selectedStep;\n selectedWorkflowId = computed(() => this.workflow()?.id);\n\n selectedTab = signal<any>('tab1');\n nodeFields = signal<any>({\n name: 'title',\n });\n nodeFormControl = new FormControl();\n isPublished = signal<boolean>(false);\n isPublishDisabled = computed(() => !this.isFlowValid());\n\n private isEditingInitialNode = signal<boolean>(false);\n\n // Properties table data - writable signal that can be updated when loading step details\n private _propertiesTableData = signal<any[]>([]);\n\n // Computed that initializes from workflow properties\n propertiesTableData = computed(() => {\n const currentData = this._propertiesTableData();\n if (currentData.length > 0) {\n return currentData;\n }\n\n const properties = this.workflow()?.properties || [];\n return properties.map((prop) => ({\n id: prop.id,\n name: prop.property.title,\n isVisible: false,\n isEditable: false,\n _original: prop, // Keep original for reference\n }));\n });\n\n // Table columns configuration\n propertiesColumns = signal<ColumnDef[]>([\n {\n key: 'name',\n label: 'Name',\n type: 'text',\n },\n {\n key: 'isVisible',\n label: 'Visible',\n type: 'boolean',\n },\n {\n key: 'isEditable',\n label: 'Editable',\n type: 'boolean',\n },\n ]);\n\n tabsList = [\n { label: 'Settings', value: 'tab1' },\n { label: 'Permissions', value: 'tab2' },\n ];\n availableNodes = [\n {\n id: 'FormStep',\n label: 'Form Step',\n name: {\n en: 'Form Step',\n ar: 'خطوة النموذج',\n },\n targetType: '1',\n icon: 'general.plus-circle',\n color: '#000000',\n },\n ];\n\n // Base form sections - defined once for reusability\n private readonly baseNameFields = {\n key: 'settings',\n type: 'none',\n bodyClass: 'space-y-2',\n fields: [\n {\n key: 'title.en',\n label: 'Name (English)',\n placeholder: 'Enter name in English',\n cssClass: 'w-full',\n required: true,\n },\n {\n key: 'title.ar',\n label: 'Name (Arabic)',\n placeholder: 'Enter name in Arabic',\n cssClass: 'w-full',\n required: true,\n },\n ],\n };\n\n // Approver section with dynamic options\n private readonly approverSection = computed(() => ({\n key: 'settings',\n type: 'header',\n label: 'Approver',\n headerClass:\n 'rounded-t-xl bg-slate-50 px-4 py-3 text-sm font-semibold text-slate-900 border border-slate-200 border-b-0',\n bodyClass: 'rounded-b-xl border border-slate-200 p-4 space-y-3',\n cssClass: ' ',\n fields: [\n {\n key: 'targetType',\n type: 'radio-button',\n orientation: 'horizontal',\n defaultValue: '1',\n options: [\n { label: 'Group', value: '1' },\n { label: 'Role', value: '2' },\n ],\n optionLabel: 'label',\n optionValue: 'value',\n placeholder: 'Enter Role',\n cssClass: 'flex items-center gap-6 text-sm text-slate-700',\n required: true,\n },\n {\n key: 'group',\n label: 'Select',\n placeholder: 'Select group',\n cssClass: 'mt-2 pt-3 border-t border-slate-200 w-full',\n required: true,\n type: 'select',\n options: this.groups(),\n optionLabel: 'title',\n optionValue: 'id',\n relations: [{ key: 'targetType', value: '1', action: 'show' }],\n },\n {\n key: 'role',\n label: 'Select',\n placeholder: 'Enter target value',\n cssClass: 'mt-2 pt-3 border-t border-slate-200 w-full',\n required: true,\n type: 'select',\n options: this.roles(),\n optionLabel: 'title',\n optionValue: 'id',\n relations: [{ key: 'targetType', value: '2', action: 'show' }],\n },\n ],\n }));\n\n private readonly slaSection = {\n key: 'slaSection',\n type: 'none',\n bodyClass: 'space-y-1',\n fields: [\n {\n key: 'sla',\n label: 'SLA',\n placeholder: 'Enter SLA',\n cssClass: 'w-full',\n required: true,\n },\n ],\n } as const;\n\n // Dynamic form configuration using computed signal\n // Automatically rebuilds when isEditingInitialNode changes\n nodeForm = linkedSignal<DynamicFormConfig>(() => {\n const sections: any[] = [this.baseNameFields];\n\n // Conditionally include approver and SLA sections based on isEditingInitialNode\n // Initial nodes only show name fields\n if (!this.isEditingInitialNode()) {\n sections.push(this.approverSection());\n sections.push(this.slaSection);\n }\n\n return {\n sections,\n layout: {},\n };\n });\n\n // Computed signal for form state info - useful for debugging or UI indicators\n formStateInfo = computed(() => ({\n isInitialNode: this.isEditingInitialNode(),\n sectionsCount: this.nodeForm().sections.length,\n hasApproverSection: !this.isEditingInitialNode(),\n hasSlaSection: !this.isEditingInitialNode(),\n formMode: this.isEditingInitialNode() ? 'initial-node' : 'standard-node',\n }));\n\n // Sample connection form configuration\n connectionForm = signal<DynamicFormConfig>({\n sections: [\n {\n key: 'basic',\n label: 'Basic Information',\n type: 'none',\n cssClass: 'p-4',\n order: 1,\n fields: [\n {\n key: 'priority',\n label: 'Priority',\n },\n ],\n },\n ],\n });\n\n // Nodes currently in the flow (with positions) - linked to store via selectors\n steps = computed(() => {\n return this.workflowFacade.steps().map((step) => ({\n ...step,\n color: '#000000',\n }));\n });\n\n // Connections between nodes (matching your design) - linked to store via selectors\n connections = computed(() => {\n return this.workflowFacade.connections().map((connection) => ({\n ...connection,\n from: connection.source,\n to: connection.target,\n }));\n });\n\n // Node Actions\n nodeActions = signal([\n {\n key: 'edit',\n icon: 'general.edit-05',\n variant: 'outlined',\n size: 'small',\n tooltip: 'Edit',\n },\n {\n key: 'delete',\n icon: 'general.trash-01',\n variant: 'outlined',\n size: 'small',\n severity: 'danger',\n tooltip: 'Delete',\n condition: (node: WorkflowStepSchema) => !node.isInitial,\n },\n ]);\n\n constructor() {\n // Effect to initialize isPublished from workflow.isPublished\n effect(() => {\n const workflow = this.workflow();\n if (workflow && workflow.isPublished !== undefined) {\n this.isPublished.set(workflow.isPublished);\n }\n });\n\n // Effect to watch selectedStep and patch form when it changes\n effect(() => {\n const step = this.selectedStep();\n\n if (step) {\n // Patch form with complete step data including targetType and targetValue\n this.nodeFormControl.patchValue({\n title: step.title,\n targetType: step.targetType || '1',\n group: step.targetType === '1' ? parseInt(step.targetValue!) : null,\n role: step.targetType === '2' ? step.targetValue : null,\n sla: step.sla,\n });\n\n // Update properties table with step's property permissions\n const properties = this.workflow()?.properties || [];\n const updatedTableData = properties.map((prop) => {\n const stepProperty = step.properties?.find(\n (p) => p.propertyId === prop.id,\n );\n\n return {\n id: prop.id,\n name: prop?.property?.title,\n isVisible: stepProperty?.isRead || false,\n isEditable: stepProperty?.isWrite || false,\n _original: prop,\n };\n });\n\n this._propertiesTableData.set(updatedTableData);\n }\n });\n }\n\n onNodeActionsEvent(event: NodeActionEvent) {\n console.log('Node action event:', event);\n }\n\n onPublishToggle(isPublished: boolean): void {\n // Prevent publishing if workflow is not valid\n if (isPublished && !this.isFlowValid()) {\n console.warn('Cannot publish: Workflow is not valid');\n this.isPublished.set(false);\n return;\n }\n\n this.workflowFacade.publishWorkflow(isPublished).subscribe({\n error: (error) => {\n console.error('Failed to update workflow publish status:', error);\n // Revert the toggle on error\n this.isPublished.set(!isPublished);\n },\n });\n }\n\n onWorkflowChange(workflowId: number): void {\n console.log('Workflow changed to:', workflowId);\n this.workflowFacade.selectWorkflow(workflowId);\n }\n\n clearForm(): void {\n // Reset isEditingInitialNode flag\n this.isEditingInitialNode.set(false);\n\n // Reset form to default values\n this.nodeFormControl.reset({\n name: { en: '', ar: '' },\n targetType: '1',\n group: null,\n role: null,\n sla: 0,\n });\n\n // Reset properties table to default state (all unchecked)\n const properties = this.workflow()?.properties || [];\n const resetTableData = properties.map((prop) => ({\n id: prop.id,\n name: prop?.property?.title,\n isVisible: false,\n isEditable: false,\n _original: prop,\n }));\n\n this._propertiesTableData.set(resetTableData);\n\n // Reset to first tab\n this.selectedTab.set('tab1');\n\n console.log('Form and properties cleared for new step');\n }\n\n onStructureAction(event: SBAction) {\n console.log('Structure action received:', event);\n\n switch (event.action) {\n case 'createNode':\n if (event.data) {\n // Get form values\n const formValue = this.nodeFormControl.value;\n\n // Get selected properties with isVisible and isEditable flags\n const propertiesPayload = this.propertiesTableData()\n .filter((prop) => prop.isVisible || prop.isEditable)\n .map((prop) => ({\n PropertyId: prop.id,\n isRead: prop.isVisible,\n isWrite: prop.isEditable,\n }));\n\n // Prepare step payload\n const stepPayload = {\n title: formValue.title,\n targetType: formValue.targetType,\n targetValue:\n formValue.targetType === '1' ? formValue.group : formValue.role,\n sla: formValue.sla || 0,\n properties: propertiesPayload,\n };\n\n // Create step via facade\n this.workflowFacade.createStep(stepPayload).subscribe({\n next: () => {\n console.log('Step created successfully:', stepPayload);\n },\n error: (error) => {\n console.error('Failed to create step:', error);\n },\n });\n }\n break;\n case 'startUpdating':\n if (event.data) {\n this.clearForm();\n\n const stepId = event.data.id;\n\n // Set the flag based on whether node is initial\n // This will trigger nodeForm to rebuild automatically via linkedSignal\n this.isEditingInitialNode.set(!!event.data.isInitial);\n\n // Load step data\n this.workflowFacade.loadStep(stepId);\n }\n break;\n case 'startCreating':\n // Reset form and properties for new step\n this.clearForm();\n break;\n case 'updateNode':\n if (event.data) {\n // Get form values\n const formValue = this.nodeFormControl.value;\n const stepId = event.data.id;\n const isInitial = !!event.data.isInitial;\n\n // Get selected properties with isVisible and isEditable flags\n const propertiesPayload = this.propertiesTableData()\n .filter((prop) => prop.isVisible || prop.isEditable)\n .map((prop) => ({\n PropertyId: prop.id,\n isRead: prop.isVisible,\n isWrite: prop.isEditable,\n }));\n\n // Prepare step payload\n const stepPayload = {\n title: formValue.title,\n targetType: formValue.targetType,\n targetValue:\n formValue.targetType === '1' ? formValue.group : formValue.role,\n sla: formValue.sla || event.data.sla,\n properties: propertiesPayload,\n };\n\n // Update step via facade, passing isInitial flag\n this.workflowFacade\n .updateStep(stepId, stepPayload, isInitial)\n .subscribe({\n next: () => {\n console.log('Step updated successfully:', stepPayload);\n },\n error: (error) => {\n console.error('Failed to update step:', error);\n },\n });\n }\n break;\n\n case 'deleteNode':\n if (event.data) {\n const nodeIdToDelete = event.data.id;\n // Delete step from store\n this.workflowFacade.deleteStep(nodeIdToDelete).subscribe({\n next: () => {\n console.log('Node deleted:', nodeIdToDelete);\n },\n error: (error) => {\n console.error('Failed to delete node:', error);\n },\n });\n }\n break;\n\n case 'createConnection':\n if (event.data) {\n // Create connection in store\n const connectionPayload = {\n sourceStepId: event.data.from,\n targetStepId: event.data.to,\n priority: event.data.priority ?? 1,\n formula: event.data.formula ?? [],\n };\n this.workflowFacade.createConnection(connectionPayload).subscribe({\n next: () => {\n console.log('Connection created:', event.data);\n },\n error: (error) => {\n console.error('Failed to create connection:', error);\n },\n });\n }\n break;\n\n case 'updateConnection':\n if (event.data) {\n // Update connection in store\n const connectionId = event.data.id;\n const updatePayload = {\n sourceStepId: event.data.from,\n targetStepId: event.data.to,\n priority: event.data.priority ?? 1,\n formula: event.data.formula ?? [],\n };\n this.workflowFacade\n .updateConnection(connectionId, updatePayload)\n .subscribe({\n next: () => {\n console.log('Connection updated:', event.data);\n },\n error: (error) => {\n console.error('Failed to update connection:', error);\n },\n });\n }\n break;\n\n case 'deleteConnection':\n if (event.data) {\n const connectionIdToDelete = event.data.id;\n // Delete connection from store\n this.workflowFacade.deleteConnection(connectionIdToDelete).subscribe({\n next: () => {\n console.log('Connection deleted:', connectionIdToDelete);\n },\n error: (error) => {\n console.error('Failed to delete connection:', error);\n },\n });\n }\n break;\n\n default:\n console.warn('Unknown structure action:', event.action);\n }\n }\n}\n","<mt-card class=\"h-full relative\" id=\"workflow-builder-card\">\n @if (!loading()) {\n <mt-structure-builder\n class=\"flex-1\"\n [availableNodes]=\"availableNodes\"\n [connectionForm]=\"connectionForm()\"\n [nodeActions]=\"nodeActions()\"\n (nodeActionsEvent)=\"onNodeActionsEvent($event)\"\n [nodes]=\"steps()\"\n [connections]=\"connections()\"\n (action)=\"onStructureAction($event)\"\n [addModalType]=\"'drawer'\"\n [addModalStyleClass]=\"'!w-[25rem] !absolute !shadow-none'\"\n [updateModalStyleClass]=\"'!w-[25rem] !absolute !shadow-none'\"\n [addModalHeader]=\"'Add Step'\"\n [updateModalHeader]=\"'Edit Step Properties'\"\n [appendTo]=\"'workflow-builder-card'\"\n [nodeFields]=\"nodeFields()\"\n >\n <div flowContent>\n <!-- <div class=\"absolute top-4 left-4 z-10\">\n @if (workflows().length > 1) {\n <div class=\"flex flex-col gap-2 w-80\">\n <mt-card>\n <mt-select-field\n [options]=\"workflows()\"\n [ngModel]=\"selectedWorkflowId()\"\n (ngModelChange)=\"onWorkflowChange($event)\"\n optionLabel=\"displayName\"\n optionValue=\"id\"\n placeholder=\"Select Workflow\"\n />\n </mt-card>\n </div>\n }\n </div> -->\n <div class=\"absolute top-4 right-4 z-10\">\n <div class=\"flex flex-col gap-2 w-80\">\n <mt-card>\n <div class=\"flex items-center gap-10\">\n <div class=\"flex items-center gap-2\">\n <mt-button [severity]=\"'secondary'\" icon=\"dev.dataflow-01\" />\n <label>Enable Workflow</label>\n </div>\n\n <mt-toggle-field\n [ngModel]=\"isPublished()\"\n (ngModelChange)=\"onPublishToggle($event)\"\n [disabled]=\"isPublishDisabled()\"\n ></mt-toggle-field>\n </div>\n </mt-card>\n </div>\n </div>\n </div>\n\n <ng-template\n #nodeDialog\n let-close=\"close\"\n let-save=\"save\"\n let-node=\"node\"\n >\n <div class=\"p-4\">\n @if (loadingStep()) {\n <!-- Loading skeleton -->\n <div class=\"space-y-4\">\n <!-- Tabs skeleton -->\n <div class=\"flex gap-2 mb-4\">\n <p-skeleton\n width=\"6rem\"\n height=\"2.5rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n <p-skeleton\n width=\"8rem\"\n height=\"2.5rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n </div>\n\n <!-- Form fields skeleton -->\n <div class=\"space-y-4\">\n <div>\n <p-skeleton\n width=\"8rem\"\n height=\"1rem\"\n styleClass=\"mb-2\"\n ></p-skeleton>\n <p-skeleton\n width=\"100%\"\n height=\"2.5rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n </div>\n <div>\n <p-skeleton\n width=\"8rem\"\n height=\"1rem\"\n styleClass=\"mb-2\"\n ></p-skeleton>\n <p-skeleton\n width=\"100%\"\n height=\"2.5rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n </div>\n <div>\n <p-skeleton\n width=\"10rem\"\n height=\"1rem\"\n styleClass=\"mb-2\"\n ></p-skeleton>\n <p-skeleton\n width=\"100%\"\n height=\"3rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n </div>\n <div>\n <p-skeleton\n width=\"6rem\"\n height=\"1rem\"\n styleClass=\"mb-2\"\n ></p-skeleton>\n <p-skeleton\n width=\"100%\"\n height=\"2.5rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n </div>\n <div>\n <p-skeleton\n width=\"4rem\"\n height=\"1rem\"\n styleClass=\"mb-2\"\n ></p-skeleton>\n <p-skeleton\n width=\"100%\"\n height=\"2.5rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n </div>\n </div>\n </div>\n } @else {\n <!-- Actual content -->\n <mt-tabs\n [(active)]=\"selectedTab\"\n [options]=\"tabsList\"\n fluid\n size=\"large\"\n ></mt-tabs>\n @switch (selectedTab()) {\n @case (\"tab1\") {\n <div class=\"mt-4\">\n <mt-dynamic-form\n [formConfig]=\"nodeForm()\"\n [formControl]=\"nodeFormControl\"\n ></mt-dynamic-form>\n </div>\n }\n @case (\"tab2\") {\n <div class=\"mt-4\">\n <mt-table\n [data]=\"propertiesTableData()\"\n [columns]=\"propertiesColumns()\"\n [selectableRows]=\"false\"\n [showGridlines]=\"true\"\n [stripedRows]=\"true\"\n ></mt-table>\n </div>\n }\n }\n }\n </div>\n </ng-template>\n </mt-structure-builder>\n }\n</mt-card>\n","// store/app.state.ts\n\nimport { HttpContextToken } from '@angular/common/http';\n\nexport const REQUEST_CONTEXT = new HttpContextToken<{ useBaseUrl: boolean }>(\n () => ({\n useBaseUrl: false,\n }),\n);\n","// Re-export app state\nexport * from './app.state';\n\n// Re-export workflow state\nexport * from './workflow';\n","/*\n * Public API Surface of structure-builder\n */\n\nexport * from './lib/workflow-builder/workflow-builder';\n\nexport * from './store';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"masterteam-workflow.mjs","sources":["../../../../packages/masterteam/workflow/src/store/workflow/workflow.actions.ts","../../../../packages/masterteam/workflow/src/store/utils/state-helpers.ts","../../../../packages/masterteam/workflow/src/store/workflow/workflow.state.ts","../../../../packages/masterteam/workflow/src/store/workflow/workflow.facade.ts","../../../../packages/masterteam/workflow/src/store/workflow/api.model.ts","../../../../packages/masterteam/workflow/src/lib/workflow-builder/workflow-builder.ts","../../../../packages/masterteam/workflow/src/lib/workflow-builder/workflow-builder.html","../../../../packages/masterteam/workflow/src/store/app.state.ts","../../../../packages/masterteam/workflow/src/store/index.ts","../../../../packages/masterteam/workflow/src/public-api.ts","../../../../packages/masterteam/workflow/src/masterteam-workflow.ts"],"sourcesContent":["import type { ConnectionPayload, StepPayload } from './workflow.model';\n\nexport class SetModuleInfo {\n static readonly type = '[Workflow] Set Module Info';\n\n constructor(\n public readonly moduleType: string,\n public readonly moduleId: string | number,\n public readonly parentModuleType?: string,\n public readonly parentModuleId?: string | number,\n public readonly parentPath?: string,\n ) {}\n}\n\nexport class GetWorkflows {\n static readonly type = '[Workflow] Get Workflows';\n}\n\nexport class GetWorkflow {\n static readonly type = '[Workflow] Get Workflow';\n\n constructor(public readonly workflowId: string | number) {}\n}\n\nexport class GetFormulaProperties {\n static readonly type = '[Workflow] Get Formula Properties';\n}\n\nexport class GetGroups {\n static readonly type = '[Workflow] Get Groups';\n}\n\nexport class GetRolesForModule {\n static readonly type = '[Workflow] Get Roles For Module';\n}\n\nexport class GetStep {\n static readonly type = '[Workflow] Get Step';\n\n constructor(public readonly stepId: string | number) {}\n}\n\nexport class ValidateFlow {\n static readonly type = '[Workflow] Validate Flow';\n}\n\nexport class CreateStep {\n static readonly type = '[Workflow] Create Step';\n\n constructor(public readonly payload: StepPayload) {}\n}\n\nexport class UpdateStep {\n static readonly type = '[Workflow] Update Step';\n\n constructor(\n public readonly stepId: string | number,\n public readonly payload: StepPayload,\n public readonly isInitial?: boolean,\n ) {}\n}\n\nexport class CreateConnection {\n static readonly type = '[Workflow] Create Connection';\n\n constructor(public readonly payload: ConnectionPayload) {}\n}\n\nexport class UpdateConnection {\n static readonly type = '[Workflow] Update Connection';\n\n constructor(\n public readonly connectionId: string | number,\n public readonly payload: ConnectionPayload,\n ) {}\n}\n\nexport class PublishWorkflow {\n static readonly type = '[Workflow] Publish Workflow';\n\n constructor(public readonly isPublished: boolean) {}\n}\n\nexport class DeleteStep {\n static readonly type = '[Workflow] Delete Step';\n\n constructor(public readonly stepId: string | number) {}\n}\n\nexport class DeleteConnection {\n static readonly type = '[Workflow] Delete Connection';\n\n constructor(public readonly connectionId: string | number) {}\n}\n","import type { StateContext } from '@ngxs/store';\n\nexport interface LoadingStateShape<L extends string = string> {\n loadingActive: L[];\n errors: Partial<Record<L, string>>;\n}\n\ntype LoadingName<T extends LoadingStateShape<string>> =\n T['loadingActive'][number];\n\nexport function startLoading<T extends LoadingStateShape<string>>(\n ctx: StateContext<T>,\n loadingName: LoadingName<T>,\n): void {\n const { loadingActive, errors } = ctx.getState();\n\n if (!loadingActive.includes(loadingName)) {\n ctx.patchState({\n loadingActive: [...loadingActive, loadingName],\n } as Partial<T>);\n }\n\n if (errors && errors[loadingName]) {\n const { [loadingName]: _removed, ...rest } = errors;\n ctx.patchState({ errors: rest } as Partial<T>);\n }\n}\n\nexport function endLoading<T extends LoadingStateShape<string>>(\n ctx: StateContext<T>,\n loadingName: LoadingName<T>,\n): void {\n const { loadingActive } = ctx.getState();\n\n ctx.patchState({\n loadingActive: loadingActive.filter((name) => name !== loadingName),\n } as Partial<T>);\n}\n\nexport function setLoadingError<T extends LoadingStateShape<string>>(\n ctx: StateContext<T>,\n loadingName: LoadingName<T>,\n message: string,\n): void {\n const { errors } = ctx.getState();\n ctx.patchState({\n errors: { ...errors, [loadingName]: message },\n } as Partial<T>);\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Action, Selector, State, StateContext } from '@ngxs/store';\nimport { of } from 'rxjs';\nimport { catchError, finalize, tap } from 'rxjs/operators';\n\nimport {\n endLoading,\n setLoadingError,\n startLoading,\n} from '../utils/state-helpers';\n\nimport type {\n ConnectionResponse,\n FormulaProperty,\n GroupDefinition,\n PublishResponse,\n RoleDefinition,\n StepResponse,\n StepSchema,\n WorkflowConnection,\n WorkflowListItem,\n WorkflowLoadingName,\n WorkflowSchema,\n WorkflowStateModel,\n WorkflowStepSchema,\n} from './workflow.model';\nimport {\n CreateConnection,\n CreateStep,\n DeleteConnection,\n DeleteStep,\n GetFormulaProperties,\n GetGroups,\n GetRolesForModule,\n GetStep,\n GetWorkflow,\n GetWorkflows,\n PublishWorkflow,\n SetModuleInfo,\n UpdateConnection,\n UpdateStep,\n ValidateFlow,\n} from './workflow.actions';\nimport { Response } from './api.model';\n\nconst DEFAULT_STATE: WorkflowStateModel = {\n workflowId: null,\n moduleType: null,\n moduleId: null,\n workflows: [],\n workflow: null,\n formulaProperties: [],\n groups: [],\n roles: [],\n selectedStep: null,\n isFlowValid: null,\n loadingActive: [],\n errors: {},\n};\n\n@State<WorkflowStateModel>({\n name: 'workflow',\n defaults: DEFAULT_STATE,\n})\n@Injectable()\nexport class WorkflowState {\n private readonly http = inject(HttpClient);\n private readonly baseUrl = 'ProcessBuilder';\n private readonly groupsUrl = 'identity/Groups';\n private readonly rolesUrl = 'identity/roles/scopes';\n\n @Selector()\n static workflowId(state: WorkflowStateModel): string | number | null {\n return state.workflowId;\n }\n\n @Selector()\n static moduleType(state: WorkflowStateModel): string | null {\n return state.moduleType;\n }\n\n @Selector()\n static moduleId(state: WorkflowStateModel): string | number | null {\n return state.moduleId;\n }\n\n @Selector()\n static workflows(state: WorkflowStateModel) {\n return state.workflows;\n }\n\n @Selector()\n static workflow(state: WorkflowStateModel): WorkflowSchema | null {\n return state.workflow;\n }\n\n @Selector()\n static formulaProperties(state: WorkflowStateModel): FormulaProperty[] {\n return state.formulaProperties;\n }\n\n @Selector()\n static groups(state: WorkflowStateModel): GroupDefinition[] {\n return state.groups;\n }\n\n @Selector()\n static roles(state: WorkflowStateModel): RoleDefinition[] {\n return state.roles;\n }\n\n @Selector()\n static selectedStep(state: WorkflowStateModel): StepSchema | null {\n return state.selectedStep;\n }\n\n @Selector()\n static isFlowValid(state: WorkflowStateModel): boolean | null {\n return state.isFlowValid;\n }\n\n @Selector()\n static stepsSchema(state: WorkflowStateModel): WorkflowStepSchema[] {\n return state.workflow?.stepsSchema ?? [];\n }\n\n @Selector()\n static connections(state: WorkflowStateModel): WorkflowConnection[] {\n return state.workflow?.connections ?? [];\n }\n\n @Selector()\n static isLoadingFactory(state: WorkflowStateModel) {\n return (loadingName: WorkflowLoadingName) =>\n state.loadingActive.includes(loadingName);\n }\n\n @Selector()\n static errorFactory(state: WorkflowStateModel) {\n return (loadingName: WorkflowLoadingName) =>\n state.errors?.[loadingName] ?? null;\n }\n\n @Action(SetModuleInfo)\n setModuleInfo(ctx: StateContext<WorkflowStateModel>, action: SetModuleInfo) {\n let parentPath = '';\n if (action.parentModuleType && action.parentModuleId) {\n parentPath = `/${action.parentModuleType}/${action.parentModuleId}`;\n } else if (action.parentPath) {\n parentPath = action.parentPath;\n }\n ctx.patchState({\n moduleType: action.moduleType,\n moduleId: action.moduleId,\n parentModuleType: action.parentModuleType ?? null,\n parentModuleId: action.parentModuleId ?? null,\n parentPath: parentPath ?? '',\n });\n }\n\n @Action(GetWorkflows)\n getWorkflows(ctx: StateContext<WorkflowStateModel>, _action: GetWorkflows) {\n startLoading(ctx, 'getWorkflows');\n\n const state = ctx.getState();\n const { moduleId, parentPath, moduleType } = state;\n\n if (!moduleId) {\n const message = 'Module ID is not set';\n setLoadingError(ctx, 'getWorkflows', message);\n endLoading(ctx, 'getWorkflows');\n return of(null);\n }\n\n return this.http\n .get<\n Response<WorkflowListItem[]>\n >(`${this.baseUrl}${parentPath}/${moduleType}/${moduleId}/requestSchema`)\n .pipe(\n tap((response) => {\n const workflows = response?.data ?? [];\n ctx.patchState({ workflows });\n\n // Auto-select and load first workflow if available\n if (workflows.length > 0) {\n const firstWorkflow = workflows[0];\n ctx.patchState({ workflowId: firstWorkflow.id });\n ctx.dispatch(new GetWorkflow(firstWorkflow.id));\n }\n }),\n catchError((error) => {\n const message =\n error?.error?.message ??\n error?.message ??\n 'Failed to load workflows';\n setLoadingError(ctx, 'getWorkflows', message);\n return of(null);\n }),\n finalize(() => endLoading(ctx, 'getWorkflows')),\n );\n }\n\n @Action(GetWorkflow)\n getWorkflow(ctx: StateContext<WorkflowStateModel>, action: GetWorkflow) {\n startLoading(ctx, 'getWorkflow');\n\n const state = ctx.getState();\n const workflowId = action.workflowId;\n const { moduleId, parentPath, moduleType } = state;\n\n if (!workflowId) {\n const message = 'Workflow ID is not set';\n setLoadingError(ctx, 'getWorkflow', message);\n endLoading(ctx, 'getWorkflow');\n return of(null);\n }\n\n // Set the workflowId in state\n ctx.patchState({ workflowId });\n\n return this.http\n .get<Response<WorkflowSchema>>(\n `${this.baseUrl}${parentPath}/${moduleType}/${moduleId}/requestSchema/${workflowId}`,\n {\n params: { Mode: 'edit' },\n },\n )\n .pipe(\n tap((response) => {\n const workflow = response?.data ?? null;\n ctx.patchState({\n workflow,\n isFlowValid: workflow?.isValid ?? null,\n });\n }),\n catchError((error) => {\n const message =\n error?.error?.message ??\n error?.message ??\n 'Failed to load workflow';\n setLoadingError(ctx, 'getWorkflow', message);\n return of(null);\n }),\n finalize(() => endLoading(ctx, 'getWorkflow')),\n );\n }\n\n @Action(GetFormulaProperties)\n getFormulaProperties(\n ctx: StateContext<WorkflowStateModel>,\n _action: GetFormulaProperties,\n ) {\n startLoading(ctx, 'getFormulaProperties');\n\n const state = ctx.getState();\n const workflowId = state.workflowId;\n\n if (!workflowId) {\n const message = 'Workflow ID is not set';\n setLoadingError(ctx, 'getFormulaProperties', message);\n endLoading(ctx, 'getFormulaProperties');\n return of(null);\n }\n\n return this.http\n .get<\n Response<FormulaProperty[]>\n >(`${this.baseUrl}/processFormulaProperties/${workflowId}`)\n .pipe(\n tap((response) => {\n const formulaProperties = Array.isArray(response?.data)\n ? response.data\n : [];\n ctx.patchState({ formulaProperties });\n }),\n catchError((error) => {\n const message =\n error?.error?.message ??\n error?.message ??\n 'Failed to load formula properties';\n setLoadingError(ctx, 'getFormulaProperties', message);\n return of([]);\n }),\n finalize(() => endLoading(ctx, 'getFormulaProperties')),\n );\n }\n\n @Action(GetGroups)\n getGroups(ctx: StateContext<WorkflowStateModel>, _action: GetGroups) {\n const state = ctx.getState();\n if (state.groups.length) {\n return of(state.groups);\n }\n\n startLoading(ctx, 'getGroups');\n\n return this.http.get<Response<GroupDefinition[]>>(this.groupsUrl).pipe(\n tap((response) => {\n const groups = Array.isArray(response?.data) ? response.data : [];\n ctx.patchState({ groups });\n }),\n catchError((error) => {\n const message =\n error?.error?.message ?? error?.message ?? 'Failed to load groups';\n setLoadingError(ctx, 'getGroups', message);\n return of([]);\n }),\n finalize(() => endLoading(ctx, 'getGroups')),\n );\n }\n\n @Action(GetRolesForModule)\n getRolesForModule(\n ctx: StateContext<WorkflowStateModel>,\n _action: GetRolesForModule,\n ) {\n const state = ctx.getState();\n const { moduleType, moduleId } = state;\n\n if (!moduleType || !moduleId) {\n const message = 'Module type and module ID must be set';\n setLoadingError(ctx, 'getRolesForModule', message);\n return of([]);\n }\n\n startLoading(ctx, 'getRolesForModule');\n\n return this.http\n .get<Response<RoleDefinition[]>>(\n `${this.rolesUrl}/${moduleType}/${moduleId}`,\n {\n params: { inherited: 'true' },\n },\n )\n .pipe(\n tap((response) => {\n const roles = Array.isArray(response?.data) ? response.data : [];\n ctx.patchState({ roles });\n }),\n catchError((error) => {\n const message =\n error?.error?.message ?? error?.message ?? 'Failed to load roles';\n setLoadingError(ctx, 'getRolesForModule', message);\n return of([]);\n }),\n finalize(() => endLoading(ctx, 'getRolesForModule')),\n );\n }\n\n @Action(GetStep)\n getStep(ctx: StateContext<WorkflowStateModel>, action: GetStep) {\n startLoading(ctx, 'getStep');\n\n return this.http\n .get<Response<StepSchema>>(\n `${this.baseUrl}/stepSchema/${action.stepId}`,\n {\n params: { Mode: 'edit' },\n },\n )\n .pipe(\n tap((response) => {\n const selectedStep = response?.data ?? null;\n ctx.patchState({ selectedStep });\n }),\n catchError((error) => {\n const message =\n error?.error?.message ?? error?.message ?? 'Failed to load step';\n setLoadingError(ctx, 'getStep', message);\n return of(null);\n }),\n finalize(() => endLoading(ctx, 'getStep')),\n );\n }\n\n @Action(ValidateFlow)\n validateFlow(ctx: StateContext<WorkflowStateModel>, _action: ValidateFlow) {\n startLoading(ctx, 'validateFlow');\n\n const state = ctx.getState();\n const workflowId = state.workflowId;\n\n if (!workflowId) {\n const message = 'Workflow ID is not set';\n setLoadingError(ctx, 'validateFlow', message);\n endLoading(ctx, 'validateFlow');\n return of(null);\n }\n\n return this.http\n .get<\n Response<boolean>\n >(`${this.baseUrl}/requestSchema/${workflowId}/validity`)\n .pipe(\n tap((response) => {\n const isFlowValid = response?.data ?? null;\n ctx.patchState({ isFlowValid });\n }),\n catchError((error) => {\n const message =\n error?.error?.message ??\n error?.message ??\n 'Failed to validate flow';\n setLoadingError(ctx, 'validateFlow', message);\n return of(null);\n }),\n finalize(() => endLoading(ctx, 'validateFlow')),\n );\n }\n\n @Action(CreateStep)\n createStep(ctx: StateContext<WorkflowStateModel>, action: CreateStep) {\n const state = ctx.getState();\n const workflowId = state.workflowId;\n\n if (!workflowId) {\n const message = 'Workflow ID is not set';\n setLoadingError(ctx, 'createStep', message);\n return of(null);\n }\n\n const tempId = -Date.now();\n const tempStep: any = {\n ...action.payload,\n id: tempId,\n loading: true,\n };\n\n if (state.workflow) {\n ctx.patchState({\n workflow: {\n ...state.workflow,\n stepsSchema: [...state.workflow.stepsSchema, tempStep],\n },\n });\n }\n\n startLoading(ctx, 'createStep');\n\n return this.http\n .post<\n Response<StepResponse>\n >(`${this.baseUrl}/requestSchema/${workflowId}/stepSchema`, action.payload)\n .pipe(\n tap((response) => {\n const createdStep = response?.data;\n const currentState = ctx.getState();\n if (createdStep && currentState.workflow) {\n const updatedSteps = currentState.workflow.stepsSchema.map(\n (step) =>\n step.id === tempId ? { ...createdStep, loading: false } : step,\n );\n\n ctx.patchState({\n workflow: {\n ...currentState.workflow,\n stepsSchema: updatedSteps,\n },\n });\n }\n // Validate flow after creating step\n ctx.dispatch(new ValidateFlow());\n }),\n catchError((error) => {\n const currentState = ctx.getState();\n if (currentState.workflow) {\n const filteredSteps = currentState.workflow.stepsSchema.filter(\n (step) => step.id !== tempId,\n );\n ctx.patchState({\n workflow: {\n ...currentState.workflow,\n stepsSchema: filteredSteps,\n },\n });\n }\n\n const message =\n error?.error?.message ?? error?.message ?? 'Failed to create step';\n setLoadingError(ctx, 'createStep', message);\n return of(null);\n }),\n finalize(() => endLoading(ctx, 'createStep')),\n );\n }\n\n @Action(UpdateStep)\n updateStep(ctx: StateContext<WorkflowStateModel>, action: UpdateStep) {\n const state = ctx.getState();\n const workflowId = state.workflowId;\n\n if (!workflowId) {\n const message = 'Workflow ID is not set';\n setLoadingError(ctx, 'updateStep', message);\n return of(null);\n }\n\n if (state.workflow) {\n const updatedSteps = state.workflow.stepsSchema.map((step) =>\n step.id === action.stepId ? { ...step, loading: true } : step,\n );\n ctx.patchState({\n workflow: {\n ...state.workflow,\n stepsSchema: updatedSteps,\n },\n });\n }\n\n startLoading(ctx, 'updateStep');\n\n const endpoint = action.isInitial ? 'initialStepSchema' : 'stepSchema';\n\n return this.http\n .put<\n Response<StepResponse>\n >(`${this.baseUrl}/${endpoint}/${action.stepId}`, action.payload)\n .pipe(\n tap((response) => {\n const updatedStep = response?.data;\n const currentState = ctx.getState();\n if (updatedStep && currentState.workflow) {\n ctx.patchState({\n workflow: {\n ...currentState.workflow,\n stepsSchema: currentState.workflow.stepsSchema.map((step) =>\n step.id === updatedStep.id\n ? { ...updatedStep, loading: false }\n : step,\n ),\n },\n });\n }\n // Validate flow after updating step\n ctx.dispatch(new ValidateFlow());\n }),\n catchError((error) => {\n const currentState = ctx.getState();\n if (currentState.workflow) {\n const errorSteps = currentState.workflow.stepsSchema.map((step) =>\n step.id === action.stepId ? { ...step, loading: false } : step,\n );\n ctx.patchState({\n workflow: {\n ...currentState.workflow,\n stepsSchema: errorSteps,\n },\n });\n }\n\n const message =\n error?.error?.message ?? error?.message ?? 'Failed to update step';\n setLoadingError(ctx, 'updateStep', message);\n return of(null);\n }),\n finalize(() => endLoading(ctx, 'updateStep')),\n );\n }\n\n @Action(CreateConnection)\n createConnection(\n ctx: StateContext<WorkflowStateModel>,\n action: CreateConnection,\n ) {\n const state = ctx.getState();\n const workflowId = state.workflowId;\n\n if (!workflowId) {\n const message = 'Workflow ID is not set';\n setLoadingError(ctx, 'createConnection', message);\n return of(null);\n }\n\n const tempId = -Date.now();\n const tempConnection: any = {\n ...action.payload,\n id: tempId,\n loading: true,\n source: action.payload.sourceStepId,\n target: action.payload.targetStepId,\n };\n\n if (state.workflow) {\n ctx.patchState({\n workflow: {\n ...state.workflow,\n connections: [...state.workflow.connections, tempConnection],\n },\n });\n }\n\n startLoading(ctx, 'createConnection');\n\n return this.http\n .post<\n Response<ConnectionResponse>\n >(`${this.baseUrl}/requestSchema/${workflowId}/connection`, action.payload)\n .pipe(\n tap((response) => {\n const createdConnection = response?.data;\n const currentState = ctx.getState();\n if (createdConnection && currentState.workflow) {\n const updatedConnections = currentState.workflow.connections.map(\n (conn) =>\n conn.id === tempId\n ? { ...createdConnection, loading: false }\n : conn,\n );\n\n ctx.patchState({\n workflow: {\n ...currentState.workflow,\n connections: updatedConnections,\n },\n });\n }\n // Validate flow after creating connection\n ctx.dispatch(new ValidateFlow());\n }),\n catchError((error) => {\n const currentState = ctx.getState();\n if (currentState.workflow) {\n const filteredConnections =\n currentState.workflow.connections.filter(\n (conn) => conn.id !== tempId,\n );\n ctx.patchState({\n workflow: {\n ...currentState.workflow,\n connections: filteredConnections,\n },\n });\n }\n\n const message =\n error?.error?.message ??\n error?.message ??\n 'Failed to create connection';\n setLoadingError(ctx, 'createConnection', message);\n return of(null);\n }),\n finalize(() => endLoading(ctx, 'createConnection')),\n );\n }\n\n @Action(UpdateConnection)\n updateConnection(\n ctx: StateContext<WorkflowStateModel>,\n action: UpdateConnection,\n ) {\n const state = ctx.getState();\n const workflowId = state.workflowId;\n\n if (!workflowId) {\n const message = 'Workflow ID is not set';\n setLoadingError(ctx, 'updateConnection', message);\n return of(null);\n }\n\n if (state.workflow) {\n const updatedConnections = state.workflow.connections.map((conn) =>\n conn.id === action.connectionId ? { ...conn, loading: true } : conn,\n );\n ctx.patchState({\n workflow: {\n ...state.workflow,\n connections: updatedConnections,\n },\n });\n }\n\n startLoading(ctx, 'updateConnection');\n\n return this.http\n .put<\n Response<ConnectionResponse>\n >(`${this.baseUrl}/stepSchemaConnection/${action.connectionId}`, action.payload)\n .pipe(\n tap((response) => {\n const updatedConnection = response?.data;\n const currentState = ctx.getState();\n if (updatedConnection && currentState.workflow) {\n ctx.patchState({\n workflow: {\n ...currentState.workflow,\n connections: currentState.workflow.connections.map((conn) =>\n conn.id === updatedConnection.id\n ? { ...updatedConnection, loading: false }\n : conn,\n ),\n },\n });\n }\n // Validate flow after updating connection\n ctx.dispatch(new ValidateFlow());\n }),\n catchError((error) => {\n const currentState = ctx.getState();\n if (currentState.workflow) {\n const errorConnections = currentState.workflow.connections.map(\n (conn) =>\n conn.id === action.connectionId\n ? { ...conn, loading: false }\n : conn,\n );\n ctx.patchState({\n workflow: {\n ...currentState.workflow,\n connections: errorConnections,\n },\n });\n }\n\n const message =\n error?.error?.message ??\n error?.message ??\n 'Failed to update connection';\n setLoadingError(ctx, 'updateConnection', message);\n return of(null);\n }),\n finalize(() => endLoading(ctx, 'updateConnection')),\n );\n }\n\n @Action(PublishWorkflow)\n publishWorkflow(\n ctx: StateContext<WorkflowStateModel>,\n action: PublishWorkflow,\n ) {\n startLoading(ctx, 'publishWorkflow');\n\n const state = ctx.getState();\n const workflowId = state.workflowId;\n\n if (!workflowId) {\n const message = 'Workflow ID is not set';\n setLoadingError(ctx, 'publishWorkflow', message);\n endLoading(ctx, 'publishWorkflow');\n return of(null);\n }\n\n return this.http\n .put<\n Response<PublishResponse>\n >(`${this.baseUrl}/requestSchema/${workflowId}/publish`, { IsPublished: action.isPublished })\n .pipe(\n tap((response) => {\n const publishedData = response?.data;\n if (publishedData && state.workflow) {\n ctx.patchState({\n workflow: {\n ...state.workflow,\n isPublished: publishedData.isPublished,\n isValid: publishedData.isValid,\n },\n });\n }\n }),\n catchError((error) => {\n const message =\n error?.error?.message ??\n error?.message ??\n 'Failed to publish workflow';\n setLoadingError(ctx, 'publishWorkflow', message);\n return of(null);\n }),\n finalize(() => endLoading(ctx, 'publishWorkflow')),\n );\n }\n\n @Action(DeleteStep)\n deleteStep(ctx: StateContext<WorkflowStateModel>, action: DeleteStep) {\n const state = ctx.getState();\n\n if (state.workflow) {\n // Mark step as loading\n const updatedSteps = state.workflow.stepsSchema.map((step) =>\n step.id == action.stepId ? { ...step, loading: true } : step,\n );\n\n // Filter out all connections related to this step\n const updatedConnections = state.workflow.connections.filter(\n (conn) => conn.source != action.stepId && conn.target != action.stepId,\n );\n\n ctx.patchState({\n workflow: {\n ...state.workflow,\n stepsSchema: updatedSteps,\n connections: updatedConnections,\n },\n });\n }\n\n startLoading(ctx, 'deleteStep');\n\n return this.http\n .delete<Response<boolean>>(`${this.baseUrl}/stepSchema/${action.stepId}`)\n .pipe(\n tap(() => {\n const currentState = ctx.getState();\n if (currentState.workflow) {\n ctx.patchState({\n workflow: {\n ...currentState.workflow,\n stepsSchema: currentState.workflow.stepsSchema.filter(\n (step) => step.id != action.stepId,\n ),\n },\n });\n }\n // Validate flow after deleting step\n ctx.dispatch(new ValidateFlow());\n }),\n catchError((error) => {\n const currentState = ctx.getState();\n if (currentState.workflow) {\n // Restore step loading state\n const errorSteps = currentState.workflow.stepsSchema.map((step) =>\n step.id == action.stepId ? { ...step, loading: false } : step,\n );\n\n // Restore connections related to this step from original state\n const relatedConnections =\n state.workflow?.connections.filter(\n (conn) =>\n conn.source == action.stepId || conn.target == action.stepId,\n ) || [];\n\n ctx.patchState({\n workflow: {\n ...currentState.workflow,\n stepsSchema: errorSteps,\n connections: [\n ...currentState.workflow.connections,\n ...relatedConnections,\n ],\n },\n });\n }\n\n const message =\n error?.error?.message ?? error?.message ?? 'Failed to delete step';\n setLoadingError(ctx, 'deleteStep', message);\n return of(null);\n }),\n finalize(() => endLoading(ctx, 'deleteStep')),\n );\n }\n\n @Action(DeleteConnection)\n deleteConnection(\n ctx: StateContext<WorkflowStateModel>,\n action: DeleteConnection,\n ) {\n const state = ctx.getState();\n\n if (state.workflow) {\n const updatedConnections = state.workflow.connections.map((conn) =>\n conn.id == action.connectionId ? { ...conn, loading: true } : conn,\n );\n ctx.patchState({\n workflow: {\n ...state.workflow,\n connections: updatedConnections,\n },\n });\n }\n\n startLoading(ctx, 'deleteConnection');\n\n return this.http\n .delete<\n Response<boolean>\n >(`${this.baseUrl}/stepSchemaConnection/${action.connectionId}`)\n .pipe(\n tap(() => {\n const currentState = ctx.getState();\n if (currentState.workflow) {\n ctx.patchState({\n workflow: {\n ...currentState.workflow,\n connections: currentState.workflow.connections.filter(\n (conn) => conn.id != action.connectionId,\n ),\n },\n });\n }\n // Validate flow after deleting connection\n ctx.dispatch(new ValidateFlow());\n }),\n catchError((error) => {\n const currentState = ctx.getState();\n if (currentState.workflow) {\n const errorConnections = currentState.workflow.connections.map(\n (conn) =>\n conn.id == action.connectionId\n ? { ...conn, loading: false }\n : conn,\n );\n ctx.patchState({\n workflow: {\n ...currentState.workflow,\n connections: errorConnections,\n },\n });\n }\n\n const message =\n error?.error?.message ??\n error?.message ??\n 'Failed to delete connection';\n setLoadingError(ctx, 'deleteConnection', message);\n return of(null);\n }),\n finalize(() => endLoading(ctx, 'deleteConnection')),\n );\n }\n}\n","import { Injectable, computed, inject } from '@angular/core';\nimport { select, Store } from '@ngxs/store';\nimport type { Observable } from 'rxjs';\n\nimport type {\n ConnectionPayload,\n FormulaProperty,\n GroupDefinition,\n RoleDefinition,\n StepPayload,\n StepSchema,\n WorkflowConnection,\n WorkflowListItem,\n WorkflowLoadingName,\n WorkflowSchema,\n WorkflowStepSchema,\n} from './workflow.model';\nimport {\n CreateConnection,\n CreateStep,\n DeleteConnection,\n DeleteStep,\n GetFormulaProperties,\n GetGroups,\n GetRolesForModule,\n GetStep,\n GetWorkflow,\n GetWorkflows,\n PublishWorkflow,\n SetModuleInfo,\n UpdateConnection,\n UpdateStep,\n ValidateFlow,\n} from './workflow.actions';\nimport { WorkflowState } from './workflow.state';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WorkflowFacade {\n private readonly store = inject(Store);\n\n readonly workflowId = select<string | number | null>(\n WorkflowState.workflowId,\n );\n readonly moduleType = select<string | null>(WorkflowState.moduleType);\n readonly moduleId = select<string | number | null>(WorkflowState.moduleId);\n readonly workflows = select<WorkflowListItem[]>(WorkflowState.workflows);\n readonly workflow = select<WorkflowSchema | null>(WorkflowState.workflow);\n readonly formulaProperties = select<FormulaProperty[]>(\n WorkflowState.formulaProperties,\n );\n readonly groups = select<GroupDefinition[]>(WorkflowState.groups);\n readonly roles = select<RoleDefinition[]>(WorkflowState.roles);\n readonly selectedStep = select<StepSchema | null>(WorkflowState.selectedStep);\n readonly isFlowValid = select<boolean | null>(WorkflowState.isFlowValid);\n readonly steps = select<WorkflowStepSchema[]>(WorkflowState.stepsSchema);\n readonly connections = select<WorkflowConnection[]>(\n WorkflowState.connections,\n );\n\n isLoading(loadingName: WorkflowLoadingName) {\n const loadingFactory = select<(name: WorkflowLoadingName) => boolean>(\n WorkflowState.isLoadingFactory,\n );\n return computed(() => loadingFactory()(loadingName));\n }\n\n error(loadingName: WorkflowLoadingName) {\n const errorFactory = select<(name: WorkflowLoadingName) => string | null>(\n WorkflowState.errorFactory,\n );\n return computed(() => errorFactory()(loadingName));\n }\n setModuleInfo(\n moduleType: string,\n moduleId: string | number,\n parentModuleType?: string,\n parentModuleId?: string | number,\n parentPath?: string,\n ): Observable<unknown> {\n return this.store.dispatch(\n new SetModuleInfo(\n moduleType,\n moduleId,\n parentModuleType,\n parentModuleId,\n parentPath,\n ),\n );\n }\n\n loadWorkflows(): Observable<unknown> {\n return this.store.dispatch(new GetWorkflows());\n }\n\n selectWorkflow(workflowId: string | number): Observable<unknown> {\n return this.store.dispatch(new GetWorkflow(workflowId));\n }\n\n loadWorkflow(): Observable<unknown> {\n return this.loadWorkflows();\n }\n\n loadFormulaProperties(): Observable<unknown> {\n return this.store.dispatch(new GetFormulaProperties());\n }\n\n loadGroups(): Observable<unknown> {\n return this.store.dispatch(new GetGroups());\n }\n\n loadRolesForModule(): Observable<unknown> {\n return this.store.dispatch(new GetRolesForModule());\n }\n\n loadStep(stepId: string | number): Observable<unknown> {\n return this.store.dispatch(new GetStep(stepId));\n }\n\n validateFlow(): Observable<unknown> {\n return this.store.dispatch(new ValidateFlow());\n }\n\n createStep(payload: StepPayload): Observable<unknown> {\n return this.store.dispatch(new CreateStep(payload));\n }\n\n updateStep(\n stepId: string | number,\n payload: StepPayload,\n isInitial?: boolean,\n ): Observable<unknown> {\n return this.store.dispatch(new UpdateStep(stepId, payload, isInitial));\n }\n\n createConnection(payload: ConnectionPayload): Observable<unknown> {\n return this.store.dispatch(new CreateConnection(payload));\n }\n\n updateConnection(\n connectionId: string | number,\n payload: ConnectionPayload,\n ): Observable<unknown> {\n return this.store.dispatch(new UpdateConnection(connectionId, payload));\n }\n\n publishWorkflow(isPublished: boolean): Observable<unknown> {\n return this.store.dispatch(new PublishWorkflow(isPublished));\n }\n\n deleteStep(stepId: string | number): Observable<unknown> {\n return this.store.dispatch(new DeleteStep(stepId));\n }\n\n deleteConnection(connectionId: string | number): Observable<unknown> {\n return this.store.dispatch(new DeleteConnection(connectionId));\n }\n}\n","// shared/models/api.model.ts\n\nexport interface Response<T> {\n endpoint: string;\n status: number;\n code: number;\n locale: string;\n message?: string | null;\n errors?: any | null;\n data: T;\n cacheSession?: string;\n}\n","import {\n Component,\n inject,\n linkedSignal,\n signal,\n computed,\n effect,\n} from '@angular/core';\nimport { DynamicFormConfig } from '@masterteam/components';\nimport { Card } from '@masterteam/components/card';\nimport {\n NodeActionEvent,\n SBAction,\n StructureBuilder,\n} from '@masterteam/structure-builder';\nimport { WorkflowFacade, WorkflowStepSchema } from '../../store/workflow';\nimport { CellChangeEvent } from '@masterteam/components/table';\nimport { Tabs } from '@masterteam/components/tabs';\nimport { FormControl, ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { DynamicForm } from '@masterteam/forms/dynamic-form';\nimport { Table } from '@masterteam/components/table';\nimport { ColumnDef } from '@masterteam/components/table';\nimport { Skeleton } from 'primeng/skeleton';\nimport { ToggleField } from '@masterteam/components/toggle-field';\nimport { Button } from '@masterteam/components/button';\nimport { SelectField } from '@masterteam/components/select-field';\n\n@Component({\n selector: 'mt-workflow-builder',\n imports: [\n StructureBuilder,\n Card,\n Tabs,\n ReactiveFormsModule,\n FormsModule,\n DynamicForm,\n Table,\n Skeleton,\n ToggleField,\n Button,\n SelectField,\n ],\n templateUrl: './workflow-builder.html',\n styles: [],\n host: {},\n})\nexport class workflowBuilder {\n private workflowFacade = inject(WorkflowFacade);\n groups = this.workflowFacade.groups;\n roles = this.workflowFacade.roles;\n workflows = this.workflowFacade.workflows;\n workflow = this.workflowFacade.workflow;\n loading = this.workflowFacade.isLoading('getWorkflow');\n loadingStep = this.workflowFacade.isLoading('getStep');\n isFlowValid = this.workflowFacade.isFlowValid;\n\n selectedStep = this.workflowFacade.selectedStep;\n selectedWorkflowId = computed(() => this.workflow()?.id);\n\n selectedTab = signal<any>('tab1');\n nodeFields = signal<any>({\n name: 'title',\n });\n nodeFormControl = new FormControl();\n isPublished = signal<boolean>(false);\n isPublishDisabled = computed(() => !this.isFlowValid());\n\n private isEditingInitialNode = signal<boolean>(false);\n\n // Properties table data - writable signal that can be updated when loading step details\n private _propertiesTableData = signal<any[]>([]);\n\n // Computed that initializes from workflow properties\n propertiesTableData = computed(() => {\n const currentData = this._propertiesTableData();\n if (currentData.length > 0) {\n return currentData;\n }\n\n const properties = this.workflow()?.properties || [];\n return properties.map((prop) => ({\n id: prop.id,\n name: prop.property.title,\n isVisible: false,\n isEditable: false,\n _original: prop, // Keep original for reference\n }));\n });\n\n // Table columns configuration\n propertiesColumns = signal<ColumnDef[]>([\n {\n key: 'name',\n label: 'Name',\n type: 'text',\n },\n {\n key: 'isVisible',\n label: 'Visible',\n type: 'boolean',\n },\n {\n key: 'isEditable',\n label: 'Editable',\n type: 'boolean',\n },\n ]);\n\n tabsList = [\n { label: 'Settings', value: 'tab1' },\n { label: 'Permissions', value: 'tab2' },\n ];\n availableNodes = [\n {\n id: 'FormStep',\n label: 'Form Step',\n name: {\n en: 'Form Step',\n ar: 'خطوة النموذج',\n },\n targetType: '1',\n icon: 'general.plus-circle',\n color: '#000000',\n },\n ];\n\n // Base form sections - defined once for reusability\n private readonly baseNameFields = {\n key: 'settings',\n type: 'none',\n bodyClass: 'space-y-2',\n fields: [\n {\n key: 'title.en',\n label: 'Name (English)',\n placeholder: 'Enter name in English',\n cssClass: 'w-full',\n required: true,\n },\n {\n key: 'title.ar',\n label: 'Name (Arabic)',\n placeholder: 'Enter name in Arabic',\n cssClass: 'w-full',\n required: true,\n },\n ],\n };\n\n // Approver section with dynamic options\n private readonly approverSection = computed(() => ({\n key: 'settings',\n type: 'header',\n label: 'Approver',\n headerClass:\n 'rounded-t-xl bg-slate-50 px-4 py-3 text-sm font-semibold text-slate-900 border border-slate-200 border-b-0',\n bodyClass: 'rounded-b-xl border border-slate-200 p-4 space-y-3',\n cssClass: ' ',\n fields: [\n {\n key: 'targetType',\n type: 'radio-button',\n orientation: 'horizontal',\n defaultValue: '1',\n options: [\n { label: 'Group', value: '1' },\n { label: 'Role', value: '2' },\n ],\n optionLabel: 'label',\n optionValue: 'value',\n placeholder: 'Enter Role',\n cssClass: 'flex items-center gap-6 text-sm text-slate-700',\n required: true,\n },\n {\n key: 'group',\n label: 'Select',\n placeholder: 'Select group',\n cssClass: 'mt-2 pt-3 border-t border-slate-200 w-full',\n required: true,\n type: 'select',\n options: this.groups(),\n optionLabel: 'title',\n optionValue: 'id',\n relations: [{ key: 'targetType', value: '1', action: 'show' }],\n },\n {\n key: 'role',\n label: 'Select',\n placeholder: 'Enter target value',\n cssClass: 'mt-2 pt-3 border-t border-slate-200 w-full',\n required: true,\n type: 'select',\n options: this.roles(),\n optionLabel: 'title',\n optionValue: 'id',\n relations: [{ key: 'targetType', value: '2', action: 'show' }],\n },\n ],\n }));\n\n private readonly slaSection = {\n key: 'slaSection',\n type: 'none',\n bodyClass: 'space-y-1',\n fields: [\n {\n key: 'sla',\n label: 'SLA',\n placeholder: 'Enter SLA',\n cssClass: 'w-full',\n required: true,\n },\n ],\n } as const;\n\n // Dynamic form configuration using computed signal\n // Automatically rebuilds when isEditingInitialNode changes\n nodeForm = linkedSignal<DynamicFormConfig>(() => {\n const sections: any[] = [this.baseNameFields];\n\n // Conditionally include approver and SLA sections based on isEditingInitialNode\n // Initial nodes only show name fields\n if (!this.isEditingInitialNode()) {\n sections.push(this.approverSection());\n sections.push(this.slaSection);\n }\n\n return {\n sections,\n layout: {},\n };\n });\n\n // Computed signal for form state info - useful for debugging or UI indicators\n formStateInfo = computed(() => ({\n isInitialNode: this.isEditingInitialNode(),\n sectionsCount: this.nodeForm().sections.length,\n hasApproverSection: !this.isEditingInitialNode(),\n hasSlaSection: !this.isEditingInitialNode(),\n formMode: this.isEditingInitialNode() ? 'initial-node' : 'standard-node',\n }));\n\n // Sample connection form configuration\n connectionForm = signal<DynamicFormConfig>({\n sections: [\n {\n key: 'basic',\n label: 'Basic Information',\n type: 'none',\n cssClass: 'p-4',\n order: 1,\n fields: [\n {\n key: 'priority',\n label: 'Priority',\n },\n ],\n },\n ],\n });\n\n // Nodes currently in the flow (with positions) - linked to store via selectors\n steps = computed(() => {\n return this.workflowFacade.steps().map((step) => ({\n ...step,\n color: '#000000',\n }));\n });\n\n // Connections between nodes (matching your design) - linked to store via selectors\n connections = computed(() => {\n return this.workflowFacade.connections().map((connection) => ({\n ...connection,\n from: connection.source,\n to: connection.target,\n }));\n });\n\n // Node Actions\n nodeActions = signal([\n {\n key: 'edit',\n icon: 'general.edit-05',\n variant: 'outlined',\n size: 'small',\n tooltip: 'Edit',\n },\n {\n key: 'delete',\n icon: 'general.trash-01',\n variant: 'outlined',\n size: 'small',\n severity: 'danger',\n tooltip: 'Delete',\n condition: (node: WorkflowStepSchema) => !node.isInitial,\n },\n ]);\n\n constructor() {\n // Effect to initialize isPublished from workflow.isPublished\n effect(() => {\n const workflow = this.workflow();\n if (workflow && workflow.isPublished !== undefined) {\n this.isPublished.set(workflow.isPublished);\n }\n });\n\n // Effect to watch selectedStep and patch form when it changes\n effect(() => {\n const step = this.selectedStep();\n\n if (step) {\n // Patch form with complete step data including targetType and targetValue\n this.nodeFormControl.patchValue({\n title: step.title,\n targetType: step.targetType || '1',\n group: step.targetType === '1' ? parseInt(step.targetValue!) : null,\n role: step.targetType === '2' ? step.targetValue : null,\n sla: step.sla,\n });\n\n // Update properties table with step's property permissions\n const properties = this.workflow()?.properties || [];\n const updatedTableData = properties.map((prop) => {\n const stepProperty = step.properties?.find(\n (p) => p.propertyId === prop.id,\n );\n\n return {\n id: prop.id,\n name: prop?.property?.title,\n isVisible: stepProperty?.isRead || false,\n isEditable: stepProperty?.isWrite || false,\n _original: prop,\n };\n });\n\n this._propertiesTableData.set(updatedTableData);\n }\n });\n }\n\n onNodeActionsEvent(event: NodeActionEvent) {\n console.log('Node action event:', event);\n }\n\n onPublishToggle(isPublished: boolean): void {\n // Prevent publishing if workflow is not valid\n if (isPublished && !this.isFlowValid()) {\n console.warn('Cannot publish: Workflow is not valid');\n this.isPublished.set(false);\n return;\n }\n\n this.workflowFacade.publishWorkflow(isPublished).subscribe({\n error: (error) => {\n console.error('Failed to update workflow publish status:', error);\n // Revert the toggle on error\n this.isPublished.set(!isPublished);\n },\n });\n }\n\n onWorkflowChange(workflowId: number): void {\n console.log('Workflow changed to:', workflowId);\n this.workflowFacade.selectWorkflow(workflowId);\n }\n\n clearForm(): void {\n // Reset isEditingInitialNode flag\n this.isEditingInitialNode.set(false);\n\n // Reset form to default values\n this.nodeFormControl.reset({\n name: { en: '', ar: '' },\n targetType: '1',\n group: null,\n role: null,\n sla: 0,\n });\n\n // Reset properties table to default state (all unchecked)\n const properties = this.workflow()?.properties || [];\n const resetTableData = properties.map((prop) => ({\n id: prop.id,\n name: prop?.property?.title,\n isVisible: false,\n isEditable: false,\n _original: prop,\n }));\n\n this._propertiesTableData.set(resetTableData);\n\n // Reset to first tab\n this.selectedTab.set('tab1');\n\n console.log('Form and properties cleared for new step');\n }\n\n onPropertyCellChange(event: CellChangeEvent): void {\n if (event.type !== 'boolean') return;\n\n switch (event.column) {\n case 'isEditable':\n if (event.value) event.row.isVisible = true;\n break;\n case 'isVisible':\n if (!event.value) event.row.isEditable = false;\n break;\n }\n }\n\n onStructureAction(event: SBAction) {\n console.log('Structure action received:', event);\n\n switch (event.action) {\n case 'createNode':\n if (event.data) {\n // Get form values\n const formValue = this.nodeFormControl.value;\n\n // Get selected properties with isVisible and isEditable flags\n const propertiesPayload = this.propertiesTableData()\n .filter((prop) => prop.isVisible || prop.isEditable)\n .map((prop) => ({\n PropertyId: prop.id,\n isRead: prop.isVisible,\n isWrite: prop.isEditable,\n }));\n\n // Prepare step payload\n const stepPayload = {\n title: formValue.title,\n targetType: formValue.targetType,\n targetValue:\n formValue.targetType === '1' ? formValue.group : formValue.role,\n sla: formValue.sla || 0,\n properties: propertiesPayload,\n };\n\n // Create step via facade\n this.workflowFacade.createStep(stepPayload).subscribe({\n next: () => {\n console.log('Step created successfully:', stepPayload);\n },\n error: (error) => {\n console.error('Failed to create step:', error);\n },\n });\n }\n break;\n case 'startUpdating':\n if (event.data) {\n this.clearForm();\n\n const stepId = event.data.id;\n\n // Set the flag based on whether node is initial\n // This will trigger nodeForm to rebuild automatically via linkedSignal\n this.isEditingInitialNode.set(!!event.data.isInitial);\n\n // Load step data\n this.workflowFacade.loadStep(stepId);\n }\n break;\n case 'startCreating':\n // Reset form and properties for new step\n this.clearForm();\n break;\n case 'updateNode':\n if (event.data) {\n // Get form values\n const formValue = this.nodeFormControl.value;\n const stepId = event.data.id;\n const isInitial = !!event.data.isInitial;\n\n // Get selected properties with isVisible and isEditable flags\n const propertiesPayload = this.propertiesTableData()\n .filter((prop) => prop.isVisible || prop.isEditable)\n .map((prop) => ({\n PropertyId: prop.id,\n isRead: prop.isVisible,\n isWrite: prop.isEditable,\n }));\n\n // Prepare step payload\n const stepPayload = {\n title: formValue.title,\n targetType: formValue.targetType,\n targetValue:\n formValue.targetType === '1' ? formValue.group : formValue.role,\n sla: formValue.sla || event.data.sla,\n properties: propertiesPayload,\n };\n\n // Update step via facade, passing isInitial flag\n this.workflowFacade\n .updateStep(stepId, stepPayload, isInitial)\n .subscribe({\n next: () => {\n console.log('Step updated successfully:', stepPayload);\n },\n error: (error) => {\n console.error('Failed to update step:', error);\n },\n });\n }\n break;\n\n case 'deleteNode':\n if (event.data) {\n const nodeIdToDelete = event.data.id;\n // Delete step from store\n this.workflowFacade.deleteStep(nodeIdToDelete).subscribe({\n next: () => {\n console.log('Node deleted:', nodeIdToDelete);\n },\n error: (error) => {\n console.error('Failed to delete node:', error);\n },\n });\n }\n break;\n\n case 'createConnection':\n if (event.data) {\n // Create connection in store\n const connectionPayload = {\n sourceStepId: event.data.from,\n targetStepId: event.data.to,\n priority: event.data.priority ?? 1,\n formula: event.data.formula ?? [],\n };\n this.workflowFacade.createConnection(connectionPayload).subscribe({\n next: () => {\n console.log('Connection created:', event.data);\n },\n error: (error) => {\n console.error('Failed to create connection:', error);\n },\n });\n }\n break;\n\n case 'updateConnection':\n if (event.data) {\n // Update connection in store\n const connectionId = event.data.id;\n const updatePayload = {\n sourceStepId: event.data.from,\n targetStepId: event.data.to,\n priority: event.data.priority ?? 1,\n formula: event.data.formula ?? [],\n };\n this.workflowFacade\n .updateConnection(connectionId, updatePayload)\n .subscribe({\n next: () => {\n console.log('Connection updated:', event.data);\n },\n error: (error) => {\n console.error('Failed to update connection:', error);\n },\n });\n }\n break;\n\n case 'deleteConnection':\n if (event.data) {\n const connectionIdToDelete = event.data.id;\n // Delete connection from store\n this.workflowFacade.deleteConnection(connectionIdToDelete).subscribe({\n next: () => {\n console.log('Connection deleted:', connectionIdToDelete);\n },\n error: (error) => {\n console.error('Failed to delete connection:', error);\n },\n });\n }\n break;\n\n default:\n console.warn('Unknown structure action:', event.action);\n }\n }\n}\n","<mt-card class=\"h-full relative\" id=\"workflow-builder-card\">\n @if (!loading()) {\n <mt-structure-builder\n class=\"flex-1\"\n [availableNodes]=\"availableNodes\"\n [connectionForm]=\"connectionForm()\"\n [nodeActions]=\"nodeActions()\"\n (nodeActionsEvent)=\"onNodeActionsEvent($event)\"\n [nodes]=\"steps()\"\n [connections]=\"connections()\"\n (action)=\"onStructureAction($event)\"\n [addModalType]=\"'drawer'\"\n [addModalStyleClass]=\"'!w-[25rem] !absolute !shadow-none'\"\n [updateModalStyleClass]=\"'!w-[25rem] !absolute !shadow-none'\"\n [addModalHeader]=\"'Add Step'\"\n [updateModalHeader]=\"'Edit Step Properties'\"\n [appendTo]=\"'workflow-builder-card'\"\n [nodeFields]=\"nodeFields()\"\n >\n <div flowContent>\n <!-- <div class=\"absolute top-4 left-4 z-10\">\n @if (workflows().length > 1) {\n <div class=\"flex flex-col gap-2 w-80\">\n <mt-card>\n <mt-select-field\n [options]=\"workflows()\"\n [ngModel]=\"selectedWorkflowId()\"\n (ngModelChange)=\"onWorkflowChange($event)\"\n optionLabel=\"displayName\"\n optionValue=\"id\"\n placeholder=\"Select Workflow\"\n />\n </mt-card>\n </div>\n }\n </div> -->\n <div class=\"absolute top-4 right-4 z-10\">\n <div class=\"flex flex-col gap-2 w-80\">\n <mt-card>\n <div class=\"flex items-center gap-10\">\n <div class=\"flex items-center gap-2\">\n <mt-button [severity]=\"'secondary'\" icon=\"dev.dataflow-01\" />\n <label>Enable Workflow</label>\n </div>\n\n <mt-toggle-field\n [ngModel]=\"isPublished()\"\n (ngModelChange)=\"onPublishToggle($event)\"\n [disabled]=\"isPublishDisabled()\"\n ></mt-toggle-field>\n </div>\n </mt-card>\n </div>\n </div>\n </div>\n\n <ng-template\n #nodeDialog\n let-close=\"close\"\n let-save=\"save\"\n let-node=\"node\"\n >\n <div class=\"p-4\">\n @if (loadingStep()) {\n <!-- Loading skeleton -->\n <div class=\"space-y-4\">\n <!-- Tabs skeleton -->\n <div class=\"flex gap-2 mb-4\">\n <p-skeleton\n width=\"6rem\"\n height=\"2.5rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n <p-skeleton\n width=\"8rem\"\n height=\"2.5rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n </div>\n\n <!-- Form fields skeleton -->\n <div class=\"space-y-4\">\n <div>\n <p-skeleton\n width=\"8rem\"\n height=\"1rem\"\n styleClass=\"mb-2\"\n ></p-skeleton>\n <p-skeleton\n width=\"100%\"\n height=\"2.5rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n </div>\n <div>\n <p-skeleton\n width=\"8rem\"\n height=\"1rem\"\n styleClass=\"mb-2\"\n ></p-skeleton>\n <p-skeleton\n width=\"100%\"\n height=\"2.5rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n </div>\n <div>\n <p-skeleton\n width=\"10rem\"\n height=\"1rem\"\n styleClass=\"mb-2\"\n ></p-skeleton>\n <p-skeleton\n width=\"100%\"\n height=\"3rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n </div>\n <div>\n <p-skeleton\n width=\"6rem\"\n height=\"1rem\"\n styleClass=\"mb-2\"\n ></p-skeleton>\n <p-skeleton\n width=\"100%\"\n height=\"2.5rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n </div>\n <div>\n <p-skeleton\n width=\"4rem\"\n height=\"1rem\"\n styleClass=\"mb-2\"\n ></p-skeleton>\n <p-skeleton\n width=\"100%\"\n height=\"2.5rem\"\n borderRadius=\"0.5rem\"\n ></p-skeleton>\n </div>\n </div>\n </div>\n } @else {\n <!-- Actual content -->\n <mt-tabs\n [(active)]=\"selectedTab\"\n [options]=\"tabsList\"\n fluid\n size=\"large\"\n ></mt-tabs>\n @switch (selectedTab()) {\n @case (\"tab1\") {\n <div class=\"mt-4\">\n <mt-dynamic-form\n [formConfig]=\"nodeForm()\"\n [formControl]=\"nodeFormControl\"\n ></mt-dynamic-form>\n </div>\n }\n @case (\"tab2\") {\n <div class=\"mt-4\">\n <mt-table\n [data]=\"propertiesTableData()\"\n [columns]=\"propertiesColumns()\"\n [selectableRows]=\"false\"\n [showGridlines]=\"true\"\n [stripedRows]=\"true\"\n (cellChange)=\"onPropertyCellChange($event)\"\n ></mt-table>\n </div>\n }\n }\n }\n </div>\n </ng-template>\n </mt-structure-builder>\n }\n</mt-card>\n","// store/app.state.ts\n\nimport { HttpContextToken } from '@angular/common/http';\n\nexport const REQUEST_CONTEXT = new HttpContextToken<{ useBaseUrl: boolean }>(\n () => ({\n useBaseUrl: false,\n }),\n);\n","// Re-export app state\nexport * from './app.state';\n\n// Re-export workflow state\nexport * from './workflow';\n","/*\n * Public API Surface of structure-builder\n */\n\nexport * from './lib/workflow-builder/workflow-builder';\n\nexport * from './store';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/index.d.ts CHANGED
@@ -2,8 +2,8 @@ import * as _angular_core from '@angular/core';
2
2
  import * as _masterteam_workflow from '@masterteam/workflow';
3
3
  import { DynamicFormConfig } from '@masterteam/components';
4
4
  import { NodeActionEvent, SBAction } from '@masterteam/structure-builder';
5
+ import { ColumnDef, CellChangeEvent } from '@masterteam/components/table';
5
6
  import { FormControl } from '@angular/forms';
6
- import { ColumnDef } from '@masterteam/components/table';
7
7
  import { HttpContextToken } from '@angular/common/http';
8
8
  import * as rxjs from 'rxjs';
9
9
  import { Observable } from 'rxjs';
@@ -161,8 +161,11 @@ interface PublishResponse {
161
161
  type WorkflowLoadingName = 'getWorkflows' | 'getWorkflow' | 'getFormulaProperties' | 'getGroups' | 'getRolesForModule' | 'getStep' | 'validateFlow' | 'createStep' | 'updateStep' | 'createConnection' | 'updateConnection' | 'publishWorkflow' | 'deleteStep' | 'deleteConnection';
162
162
  interface WorkflowStateModel extends LoadingStateShape<WorkflowLoadingName> {
163
163
  workflowId: string | number | null;
164
+ parentModuleType?: string | null;
165
+ parentModuleId?: string | number | null;
164
166
  moduleType: string | null;
165
167
  moduleId: string | number | null;
168
+ parentPath?: string;
166
169
  workflows: WorkflowListItem[];
167
170
  workflow: WorkflowSchema | null;
168
171
  formulaProperties: FormulaProperty[];
@@ -172,11 +175,14 @@ interface WorkflowStateModel extends LoadingStateShape<WorkflowLoadingName> {
172
175
  isFlowValid: boolean | null;
173
176
  }
174
177
 
175
- declare class SetWorkflowInfo {
178
+ declare class SetModuleInfo {
176
179
  readonly moduleType: string;
177
180
  readonly moduleId: string | number;
178
- static readonly type = "[Workflow] Set Workflow Info";
179
- constructor(moduleType: string, moduleId: string | number);
181
+ readonly parentModuleType?: string | undefined;
182
+ readonly parentModuleId?: string | number | undefined;
183
+ readonly parentPath?: string | undefined;
184
+ static readonly type = "[Workflow] Set Module Info";
185
+ constructor(moduleType: string, moduleId: string | number, parentModuleType?: string | undefined, parentModuleId?: string | number | undefined, parentPath?: string | undefined);
180
186
  }
181
187
  declare class GetWorkflows {
182
188
  static readonly type = "[Workflow] Get Workflows";
@@ -258,7 +264,7 @@ declare class WorkflowFacade {
258
264
  readonly connections: _angular_core.Signal<WorkflowConnection[]>;
259
265
  isLoading(loadingName: WorkflowLoadingName): _angular_core.Signal<boolean>;
260
266
  error(loadingName: WorkflowLoadingName): _angular_core.Signal<string | null>;
261
- setWorkflowInfo(moduleType: string, moduleId: string | number): Observable<unknown>;
267
+ setModuleInfo(moduleType: string, moduleId: string | number, parentModuleType?: string, parentModuleId?: string | number, parentPath?: string): Observable<unknown>;
262
268
  loadWorkflows(): Observable<unknown>;
263
269
  selectWorkflow(workflowId: string | number): Observable<unknown>;
264
270
  loadWorkflow(): Observable<unknown>;
@@ -308,7 +314,7 @@ declare class WorkflowState {
308
314
  static connections(state: WorkflowStateModel): WorkflowConnection[];
309
315
  static isLoadingFactory(state: WorkflowStateModel): (loadingName: WorkflowLoadingName) => boolean;
310
316
  static errorFactory(state: WorkflowStateModel): (loadingName: WorkflowLoadingName) => string | null;
311
- setWorkflowInfo(ctx: StateContext<WorkflowStateModel>, action: SetWorkflowInfo): void;
317
+ setModuleInfo(ctx: StateContext<WorkflowStateModel>, action: SetModuleInfo): void;
312
318
  getWorkflows(ctx: StateContext<WorkflowStateModel>, _action: GetWorkflows): rxjs.Observable<Response<WorkflowListItem[]> | null>;
313
319
  getWorkflow(ctx: StateContext<WorkflowStateModel>, action: GetWorkflow): rxjs.Observable<Response<WorkflowSchema> | null>;
314
320
  getFormulaProperties(ctx: StateContext<WorkflowStateModel>, _action: GetFormulaProperties): rxjs.Observable<null> | rxjs.Observable<never[] | Response<FormulaProperty[]>>;
@@ -416,6 +422,7 @@ declare class workflowBuilder {
416
422
  onPublishToggle(isPublished: boolean): void;
417
423
  onWorkflowChange(workflowId: number): void;
418
424
  clearForm(): void;
425
+ onPropertyCellChange(event: CellChangeEvent): void;
419
426
  onStructureAction(event: SBAction): void;
420
427
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<workflowBuilder, never>;
421
428
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<workflowBuilder, "mt-workflow-builder", never, {}, {}, never, never, true, never>;
@@ -425,5 +432,5 @@ declare const REQUEST_CONTEXT: HttpContextToken<{
425
432
  useBaseUrl: boolean;
426
433
  }>;
427
434
 
428
- export { CreateConnection, CreateStep, DeleteConnection, DeleteStep, GetFormulaProperties, GetGroups, GetRolesForModule, GetStep, GetWorkflow, GetWorkflows, PublishWorkflow, REQUEST_CONTEXT, SetWorkflowInfo, UpdateConnection, UpdateStep, ValidateFlow, WorkflowFacade, WorkflowState, workflowBuilder };
435
+ export { CreateConnection, CreateStep, DeleteConnection, DeleteStep, GetFormulaProperties, GetGroups, GetRolesForModule, GetStep, GetWorkflow, GetWorkflows, PublishWorkflow, REQUEST_CONTEXT, SetModuleInfo, UpdateConnection, UpdateStep, ValidateFlow, WorkflowFacade, WorkflowState, workflowBuilder };
429
436
  export type { ConnectionPayload, ConnectionResponse, FormulaProperty, GroupDefinition, PublishPayload, PublishResponse, Response, RoleDefinition, StepPayload, StepPropertyItem, StepPropertyPayload, StepResponse, StepSchema, WorkflowConnection, WorkflowListItem, WorkflowLoadingName, WorkflowProperty, WorkflowPropertyConfig, WorkflowSchema, WorkflowStateModel, WorkflowStepSchema };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@masterteam/workflow",
3
- "version": "0.0.3",
3
+ "version": "0.0.5",
4
4
  "publishConfig": {
5
5
  "directory": ".",
6
6
  "linkDirectory": false,