@masterteam/workflow 0.0.1 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/workflow.css +2 -2
- package/fesm2022/masterteam-workflow.mjs +16 -24
- package/fesm2022/masterteam-workflow.mjs.map +1 -1
- package/index.d.ts +13 -12
- package/package.json +1 -1
package/assets/workflow.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! tailwindcss v4.1.
|
|
2
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-slate-50:oklch(98.4% .003 247.858);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-900:oklch(20.8% .042 265.755);--spacing:.25rem;--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--font-weight-semibold:600;--radius-xl:.75rem;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.\!absolute{position:absolute!important}.absolute{position:absolute}.relative{position:relative}.static{position:static}.top-4{top:calc(var(--spacing)*4)}.right-4{right:calc(var(--spacing)*4)}.left-4{left:calc(var(--spacing)*4)}.z-10{z-index:10}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-4{margin-top:calc(var(--spacing)*4)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.flex{display:flex}.table{display:table}.h
|
|
1
|
+
/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */
|
|
2
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-slate-50:oklch(98.4% .003 247.858);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-900:oklch(20.8% .042 265.755);--spacing:.25rem;--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--font-weight-semibold:600;--radius-xl:.75rem;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.\!absolute{position:absolute!important}.absolute{position:absolute}.relative{position:relative}.static{position:static}.top-4{top:calc(var(--spacing)*4)}.right-4{right:calc(var(--spacing)*4)}.left-4{left:calc(var(--spacing)*4)}.z-10{z-index:10}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-4{margin-top:calc(var(--spacing)*4)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.flex{display:flex}.table{display:table}.h-full{height:100%}.\!w-\[25rem\]{width:25rem!important}.w-80{width:calc(var(--spacing)*80)}.w-full{width:100%}.flex-1{flex:1}.flex-col{flex-direction:column}.items-center{align-items:center}.gap-2{gap:calc(var(--spacing)*2)}.gap-6{gap:calc(var(--spacing)*6)}.gap-10{gap:calc(var(--spacing)*10)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}.rounded-t-xl{border-top-left-radius:var(--radius-xl);border-top-right-radius:var(--radius-xl)}.rounded-b-xl{border-bottom-right-radius:var(--radius-xl);border-bottom-left-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.border-slate-200{border-color:var(--color-slate-200)}.bg-slate-50{background-color:var(--color-slate-50)}.p-4{padding:calc(var(--spacing)*4)}.px-4{padding-inline:calc(var(--spacing)*4)}.py-3{padding-block:calc(var(--spacing)*3)}.pt-3{padding-top:calc(var(--spacing)*3)}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-slate-700{color:var(--color-slate-700)}.text-slate-900{color:var(--color-slate-900)}.\!shadow-none{--tw-shadow:0 0 #0000!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}}@keyframes enter{0%{opacity:var(--p-enter-opacity,1);transform:translate3d(var(--p-enter-translate-x,0),var(--p-enter-translate-y,0),0)scale3d(var(--p-enter-scale,1),var(--p-enter-scale,1),var(--p-enter-scale,1))rotate(var(--p-enter-rotate,0))}}@keyframes leave{to{opacity:var(--p-leave-opacity,1);transform:translate3d(var(--p-leave-translate-x,0),var(--p-leave-translate-y,0),0)scale3d(var(--p-leave-scale,1),var(--p-leave-scale,1),var(--p-leave-scale,1))rotate(var(--p-leave-rotate,0))}}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}
|
|
@@ -915,6 +915,9 @@ class workflowBuilder {
|
|
|
915
915
|
selectedStep = this.workflowFacade.selectedStep;
|
|
916
916
|
selectedWorkflowId = computed(() => this.workflow()?.id, ...(ngDevMode ? [{ debugName: "selectedWorkflowId" }] : []));
|
|
917
917
|
selectedTab = signal('tab1', ...(ngDevMode ? [{ debugName: "selectedTab" }] : []));
|
|
918
|
+
nodeFields = signal({
|
|
919
|
+
name: 'title',
|
|
920
|
+
}, ...(ngDevMode ? [{ debugName: "nodeFields" }] : []));
|
|
918
921
|
nodeFormControl = new FormControl();
|
|
919
922
|
isPublished = signal(false, ...(ngDevMode ? [{ debugName: "isPublished" }] : []));
|
|
920
923
|
isPublishDisabled = computed(() => !this.isFlowValid(), ...(ngDevMode ? [{ debugName: "isPublishDisabled" }] : []));
|
|
@@ -930,7 +933,7 @@ class workflowBuilder {
|
|
|
930
933
|
const properties = this.workflow()?.properties || [];
|
|
931
934
|
return properties.map((prop) => ({
|
|
932
935
|
id: prop.id,
|
|
933
|
-
name: prop.property.
|
|
936
|
+
name: prop.property.title,
|
|
934
937
|
isVisible: false,
|
|
935
938
|
isEditable: false,
|
|
936
939
|
_original: prop, // Keep original for reference
|
|
@@ -978,14 +981,14 @@ class workflowBuilder {
|
|
|
978
981
|
bodyClass: 'space-y-2',
|
|
979
982
|
fields: [
|
|
980
983
|
{
|
|
981
|
-
key: '
|
|
984
|
+
key: 'title.en',
|
|
982
985
|
label: 'Name (English)',
|
|
983
986
|
placeholder: 'Enter name in English',
|
|
984
987
|
cssClass: 'w-full',
|
|
985
988
|
required: true,
|
|
986
989
|
},
|
|
987
990
|
{
|
|
988
|
-
key: '
|
|
991
|
+
key: 'title.ar',
|
|
989
992
|
label: 'Name (Arabic)',
|
|
990
993
|
placeholder: 'Enter name in Arabic',
|
|
991
994
|
cssClass: 'w-full',
|
|
@@ -1025,7 +1028,7 @@ class workflowBuilder {
|
|
|
1025
1028
|
required: true,
|
|
1026
1029
|
type: 'select',
|
|
1027
1030
|
options: this.groups(),
|
|
1028
|
-
optionLabel: '
|
|
1031
|
+
optionLabel: 'title',
|
|
1029
1032
|
optionValue: 'id',
|
|
1030
1033
|
relations: [{ key: 'targetType', value: '1', action: 'show' }],
|
|
1031
1034
|
},
|
|
@@ -1037,14 +1040,14 @@ class workflowBuilder {
|
|
|
1037
1040
|
required: true,
|
|
1038
1041
|
type: 'select',
|
|
1039
1042
|
options: this.roles(),
|
|
1040
|
-
optionLabel: '
|
|
1043
|
+
optionLabel: 'title',
|
|
1041
1044
|
optionValue: 'id',
|
|
1042
1045
|
relations: [{ key: 'targetType', value: '2', action: 'show' }],
|
|
1043
1046
|
},
|
|
1044
1047
|
],
|
|
1045
1048
|
}), ...(ngDevMode ? [{ debugName: "approverSection" }] : []));
|
|
1046
1049
|
slaSection = {
|
|
1047
|
-
key: '
|
|
1050
|
+
key: 'slaSection',
|
|
1048
1051
|
type: 'none',
|
|
1049
1052
|
bodyClass: 'space-y-1',
|
|
1050
1053
|
fields: [
|
|
@@ -1138,7 +1141,6 @@ class workflowBuilder {
|
|
|
1138
1141
|
const workflow = this.workflow();
|
|
1139
1142
|
if (workflow && workflow.isPublished !== undefined) {
|
|
1140
1143
|
this.isPublished.set(workflow.isPublished);
|
|
1141
|
-
console.log('Publish status initialized from workflow:', workflow.isPublished);
|
|
1142
1144
|
}
|
|
1143
1145
|
});
|
|
1144
1146
|
// Effect to watch selectedStep and patch form when it changes
|
|
@@ -1147,7 +1149,7 @@ class workflowBuilder {
|
|
|
1147
1149
|
if (step) {
|
|
1148
1150
|
// Patch form with complete step data including targetType and targetValue
|
|
1149
1151
|
this.nodeFormControl.patchValue({
|
|
1150
|
-
|
|
1152
|
+
title: step.title,
|
|
1151
1153
|
targetType: step.targetType || '1',
|
|
1152
1154
|
group: step.targetType === '1' ? parseInt(step.targetValue) : null,
|
|
1153
1155
|
role: step.targetType === '2' ? step.targetValue : null,
|
|
@@ -1159,21 +1161,15 @@ class workflowBuilder {
|
|
|
1159
1161
|
const stepProperty = step.properties?.find((p) => p.propertyId === prop.id);
|
|
1160
1162
|
return {
|
|
1161
1163
|
id: prop.id,
|
|
1162
|
-
name: prop
|
|
1164
|
+
name: prop?.property?.title,
|
|
1163
1165
|
isVisible: stepProperty?.isRead || false,
|
|
1164
1166
|
isEditable: stepProperty?.isWrite || false,
|
|
1165
1167
|
_original: prop,
|
|
1166
1168
|
};
|
|
1167
1169
|
});
|
|
1168
1170
|
this._propertiesTableData.set(updatedTableData);
|
|
1169
|
-
console.log('Form patched with step data:', step);
|
|
1170
1171
|
}
|
|
1171
1172
|
});
|
|
1172
|
-
// Effect to log form state changes (demonstrates reactive tracking)
|
|
1173
|
-
effect(() => {
|
|
1174
|
-
const state = this.formStateInfo();
|
|
1175
|
-
console.log('🔄 Form configuration updated:', state);
|
|
1176
|
-
});
|
|
1177
1173
|
}
|
|
1178
1174
|
onNodeActionsEvent(event) {
|
|
1179
1175
|
console.log('Node action event:', event);
|
|
@@ -1185,11 +1181,7 @@ class workflowBuilder {
|
|
|
1185
1181
|
this.isPublished.set(false);
|
|
1186
1182
|
return;
|
|
1187
1183
|
}
|
|
1188
|
-
console.log('Publish toggled:', isPublished);
|
|
1189
1184
|
this.workflowFacade.publishWorkflow(isPublished).subscribe({
|
|
1190
|
-
next: () => {
|
|
1191
|
-
console.log('Workflow publish status updated:', isPublished);
|
|
1192
|
-
},
|
|
1193
1185
|
error: (error) => {
|
|
1194
1186
|
console.error('Failed to update workflow publish status:', error);
|
|
1195
1187
|
// Revert the toggle on error
|
|
@@ -1216,7 +1208,7 @@ class workflowBuilder {
|
|
|
1216
1208
|
const properties = this.workflow()?.properties || [];
|
|
1217
1209
|
const resetTableData = properties.map((prop) => ({
|
|
1218
1210
|
id: prop.id,
|
|
1219
|
-
name: prop
|
|
1211
|
+
name: prop?.property?.title,
|
|
1220
1212
|
isVisible: false,
|
|
1221
1213
|
isEditable: false,
|
|
1222
1214
|
_original: prop,
|
|
@@ -1243,7 +1235,7 @@ class workflowBuilder {
|
|
|
1243
1235
|
}));
|
|
1244
1236
|
// Prepare step payload
|
|
1245
1237
|
const stepPayload = {
|
|
1246
|
-
|
|
1238
|
+
title: formValue.title,
|
|
1247
1239
|
targetType: formValue.targetType,
|
|
1248
1240
|
targetValue: formValue.targetType === '1' ? formValue.group : formValue.role,
|
|
1249
1241
|
sla: formValue.sla || 0,
|
|
@@ -1291,7 +1283,7 @@ class workflowBuilder {
|
|
|
1291
1283
|
}));
|
|
1292
1284
|
// Prepare step payload
|
|
1293
1285
|
const stepPayload = {
|
|
1294
|
-
|
|
1286
|
+
title: formValue.title,
|
|
1295
1287
|
targetType: formValue.targetType,
|
|
1296
1288
|
targetValue: formValue.targetType === '1' ? formValue.group : formValue.role,
|
|
1297
1289
|
sla: formValue.sla || event.data.sla,
|
|
@@ -1384,7 +1376,7 @@ class workflowBuilder {
|
|
|
1384
1376
|
}
|
|
1385
1377
|
}
|
|
1386
1378
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: workflowBuilder, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1387
|
-
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-
|
|
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"] }] });
|
|
1388
1380
|
}
|
|
1389
1381
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: workflowBuilder, decorators: [{
|
|
1390
1382
|
type: Component,
|
|
@@ -1400,7 +1392,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
1400
1392
|
ToggleField,
|
|
1401
1393
|
Button,
|
|
1402
1394
|
SelectField,
|
|
1403
|
-
], host: {}, template: "<mt-card class=\"h-
|
|
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" }]
|
|
1404
1396
|
}], ctorParameters: () => [] });
|
|
1405
1397
|
|
|
1406
1398
|
// store/app.state.ts
|
|
@@ -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 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.name,\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: 'name.en',\n label: 'Name (English)',\n placeholder: 'Enter name in English',\n cssClass: 'w-full',\n required: true,\n },\n {\n key: 'name.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: 'name',\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: 'name',\n optionValue: 'id',\n relations: [{ key: 'targetType', value: '2', action: 'show' }],\n },\n ],\n }));\n\n private readonly slaSection = {\n key: 'settings',\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 console.log(\n 'Publish status initialized from workflow:',\n workflow.isPublished,\n );\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 name: step.name,\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.name,\n isVisible: stepProperty?.isRead || false,\n isEditable: stepProperty?.isWrite || false,\n _original: prop,\n };\n });\n\n this._propertiesTableData.set(updatedTableData);\n console.log('Form patched with step data:', step);\n }\n });\n\n // Effect to log form state changes (demonstrates reactive tracking)\n effect(() => {\n const state = this.formStateInfo();\n console.log('🔄 Form configuration updated:', state);\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 console.log('Publish toggled:', isPublished);\n this.workflowFacade.publishWorkflow(isPublished).subscribe({\n next: () => {\n console.log('Workflow publish status updated:', isPublished);\n },\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.name,\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 name: formValue.name || { en: 'New Step', ar: 'خطوة جديدة' },\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 name: formValue.name || event.data.name,\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-[calc(100vh---spacing(26))] relative\" id=\"helloYususf\">\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]=\"'helloYususf'\"\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 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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"}
|
package/index.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ interface LoadingStateShape<L extends string = string> {
|
|
|
16
16
|
|
|
17
17
|
interface WorkflowStepSchema {
|
|
18
18
|
id: number;
|
|
19
|
-
|
|
19
|
+
title: string | Record<string, string>;
|
|
20
20
|
sla: number;
|
|
21
21
|
isInitial: boolean;
|
|
22
22
|
targetType?: string;
|
|
@@ -33,7 +33,7 @@ interface WorkflowConnection {
|
|
|
33
33
|
}
|
|
34
34
|
interface WorkflowPropertyConfig {
|
|
35
35
|
id: number;
|
|
36
|
-
|
|
36
|
+
title: string;
|
|
37
37
|
key: string;
|
|
38
38
|
normalizedKey: string;
|
|
39
39
|
configuration?: any;
|
|
@@ -64,7 +64,7 @@ interface WorkflowProperty {
|
|
|
64
64
|
}
|
|
65
65
|
interface WorkflowSchema {
|
|
66
66
|
id: number;
|
|
67
|
-
|
|
67
|
+
title: Record<string, string> | string;
|
|
68
68
|
moduleId: number;
|
|
69
69
|
moduleType: string;
|
|
70
70
|
isValid: boolean;
|
|
@@ -75,7 +75,7 @@ interface WorkflowSchema {
|
|
|
75
75
|
}
|
|
76
76
|
interface WorkflowListItem {
|
|
77
77
|
id: number;
|
|
78
|
-
|
|
78
|
+
title: string;
|
|
79
79
|
moduleId: number;
|
|
80
80
|
moduleType: string;
|
|
81
81
|
isValid: boolean;
|
|
@@ -83,16 +83,16 @@ interface WorkflowListItem {
|
|
|
83
83
|
}
|
|
84
84
|
interface FormulaProperty {
|
|
85
85
|
key: string;
|
|
86
|
-
|
|
86
|
+
title: string;
|
|
87
87
|
}
|
|
88
88
|
interface GroupDefinition {
|
|
89
89
|
id: number;
|
|
90
|
-
|
|
90
|
+
title: string;
|
|
91
91
|
[key: string]: unknown;
|
|
92
92
|
}
|
|
93
93
|
interface RoleDefinition {
|
|
94
94
|
id: number;
|
|
95
|
-
|
|
95
|
+
title: string;
|
|
96
96
|
[key: string]: unknown;
|
|
97
97
|
}
|
|
98
98
|
interface StepPropertyItem {
|
|
@@ -106,7 +106,7 @@ interface StepPropertyItem {
|
|
|
106
106
|
}
|
|
107
107
|
interface StepSchema {
|
|
108
108
|
id: number;
|
|
109
|
-
|
|
109
|
+
title: Record<string, string>;
|
|
110
110
|
sla: number;
|
|
111
111
|
isInitial: boolean;
|
|
112
112
|
targetType?: string;
|
|
@@ -119,7 +119,7 @@ interface StepPropertyPayload {
|
|
|
119
119
|
isWrite?: boolean;
|
|
120
120
|
}
|
|
121
121
|
interface StepPayload {
|
|
122
|
-
|
|
122
|
+
title: Record<string, string>;
|
|
123
123
|
targetType?: string;
|
|
124
124
|
targetValue?: number | string;
|
|
125
125
|
sla: string | number;
|
|
@@ -127,7 +127,7 @@ interface StepPayload {
|
|
|
127
127
|
}
|
|
128
128
|
interface StepResponse {
|
|
129
129
|
id: number;
|
|
130
|
-
|
|
130
|
+
title: string;
|
|
131
131
|
sla: number;
|
|
132
132
|
isInitial: boolean;
|
|
133
133
|
targetType?: string;
|
|
@@ -152,7 +152,7 @@ interface PublishPayload {
|
|
|
152
152
|
}
|
|
153
153
|
interface PublishResponse {
|
|
154
154
|
id: number;
|
|
155
|
-
|
|
155
|
+
title: string;
|
|
156
156
|
moduleId: number;
|
|
157
157
|
moduleType: string;
|
|
158
158
|
isValid: boolean;
|
|
@@ -339,6 +339,7 @@ declare class workflowBuilder {
|
|
|
339
339
|
selectedStep: _angular_core.Signal<_masterteam_workflow.StepSchema | null>;
|
|
340
340
|
selectedWorkflowId: _angular_core.Signal<number | undefined>;
|
|
341
341
|
selectedTab: _angular_core.WritableSignal<any>;
|
|
342
|
+
nodeFields: _angular_core.WritableSignal<any>;
|
|
342
343
|
nodeFormControl: FormControl<any>;
|
|
343
344
|
isPublished: _angular_core.WritableSignal<boolean>;
|
|
344
345
|
isPublishDisabled: _angular_core.Signal<boolean>;
|
|
@@ -376,7 +377,7 @@ declare class workflowBuilder {
|
|
|
376
377
|
steps: _angular_core.Signal<{
|
|
377
378
|
color: string;
|
|
378
379
|
id: number;
|
|
379
|
-
|
|
380
|
+
title: string | Record<string, string>;
|
|
380
381
|
sla: number;
|
|
381
382
|
isInitial: boolean;
|
|
382
383
|
targetType?: string;
|