ngx-histaff-alpha 6.4.9 → 6.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/{ngx-histaff-alpha-ai-hint-for-table.component-CKKqdgg7.mjs → ngx-histaff-alpha-ai-hint-for-table.component-CHgQSi0p.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-ai-hint-for-table.component-CKKqdgg7.mjs.map → ngx-histaff-alpha-ai-hint-for-table.component-CHgQSi0p.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-core-form-design.component-BZvtwXkM.mjs → ngx-histaff-alpha-core-form-design.component-CTrNNE7-.mjs} +4 -4
- package/fesm2022/{ngx-histaff-alpha-core-form-design.component-BZvtwXkM.mjs.map → ngx-histaff-alpha-core-form-design.component-CTrNNE7-.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-core-sys-action.component-C_VAQLOE.mjs → ngx-histaff-alpha-core-sys-action.component-GIciqrnf.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-core-sys-action.component-C_VAQLOE.mjs.map → ngx-histaff-alpha-core-sys-action.component-GIciqrnf.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-core-template-editor.component-DmTad7AG.mjs → ngx-histaff-alpha-core-template-editor.component-XwgAdRVH.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-core-template-editor.component-DmTad7AG.mjs.map → ngx-histaff-alpha-core-template-editor.component-XwgAdRVH.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-core-toast-loading.component-C3JfOCoY.mjs → ngx-histaff-alpha-core-toast-loading.component-Dx9YYqpG.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-core-toast-loading.component-C3JfOCoY.mjs.map → ngx-histaff-alpha-core-toast-loading.component-Dx9YYqpG.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-core-workflow-consume.component-BvFyWEqO.mjs → ngx-histaff-alpha-core-workflow-consume.component-BP8zuxYQ.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-core-workflow-consume.component-BvFyWEqO.mjs.map → ngx-histaff-alpha-core-workflow-consume.component-BP8zuxYQ.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-db-settings.component-CmO49AZU.mjs → ngx-histaff-alpha-db-settings.component-aOgA1qSq.mjs} +5 -5
- package/fesm2022/{ngx-histaff-alpha-db-settings.component-CmO49AZU.mjs.map → ngx-histaff-alpha-db-settings.component-aOgA1qSq.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-design-wrapper.component-BpGl04Dv.mjs → ngx-histaff-alpha-design-wrapper.component-hBUaZceS.mjs} +5 -5
- package/fesm2022/{ngx-histaff-alpha-design-wrapper.component-BpGl04Dv.mjs.map → ngx-histaff-alpha-design-wrapper.component-hBUaZceS.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-design-wrapper.route-D3Lpsk-N.mjs → ngx-histaff-alpha-design-wrapper.route-DQoOPQge.mjs} +5 -5
- package/fesm2022/{ngx-histaff-alpha-design-wrapper.route-D3Lpsk-N.mjs.map → ngx-histaff-alpha-design-wrapper.route-DQoOPQge.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-hrm-schema.component-Bd3CdbC_.mjs → ngx-histaff-alpha-hrm-schema.component-BJZOW5Wi.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-hrm-schema.component-Bd3CdbC_.mjs.map → ngx-histaff-alpha-hrm-schema.component-BJZOW5Wi.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-live-form.component-LdFysTvc.mjs → ngx-histaff-alpha-live-form.component-x08G6uI3.mjs} +17 -9
- package/fesm2022/ngx-histaff-alpha-live-form.component-x08G6uI3.mjs.map +1 -0
- package/fesm2022/{ngx-histaff-alpha-ngx-histaff-alpha-TWTSrQ0J.mjs → ngx-histaff-alpha-ngx-histaff-alpha-B4dw5BXZ.mjs} +20 -18
- package/fesm2022/ngx-histaff-alpha-ngx-histaff-alpha-B4dw5BXZ.mjs.map +1 -0
- package/fesm2022/{ngx-histaff-alpha-simple-chat.component-Bijz8uoH.mjs → ngx-histaff-alpha-simple-chat.component-CtnJMX2M.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-simple-chat.component-Bijz8uoH.mjs.map → ngx-histaff-alpha-simple-chat.component-CtnJMX2M.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-template-list.component-CKNXhE7n.mjs → ngx-histaff-alpha-template-list.component-BysOT_8n.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-template-list.component-CKNXhE7n.mjs.map → ngx-histaff-alpha-template-list.component-BysOT_8n.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-tracker-studio.component-BLFeI6xO.mjs → ngx-histaff-alpha-tracker-studio.component-D9L1y1k0.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-tracker-studio.component-BLFeI6xO.mjs.map → ngx-histaff-alpha-tracker-studio.component-D9L1y1k0.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-wf-form-assign.component-nct49SFr.mjs → ngx-histaff-alpha-wf-form-assign.component-BACGd2Yk.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-wf-form-assign.component-nct49SFr.mjs.map → ngx-histaff-alpha-wf-form-assign.component-BACGd2Yk.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-wf-global-config.component-BSuUBIrY.mjs → ngx-histaff-alpha-wf-global-config.component-ABO46891.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-wf-global-config.component-BSuUBIrY.mjs.map → ngx-histaff-alpha-wf-global-config.component-ABO46891.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-wf-instance-status.component-B58W1ZBc.mjs → ngx-histaff-alpha-wf-instance-status.component-CJj_SSmd.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-wf-instance-status.component-B58W1ZBc.mjs.map → ngx-histaff-alpha-wf-instance-status.component-CJj_SSmd.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-wf-instance-step-react.component-iyoN_zDV.mjs → ngx-histaff-alpha-wf-instance-step-react.component-D2FW3Uk6.mjs} +3 -3
- package/fesm2022/{ngx-histaff-alpha-wf-instance-step-react.component-iyoN_zDV.mjs.map → ngx-histaff-alpha-wf-instance-step-react.component-D2FW3Uk6.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-wf-lab.component-Db5dIgKZ.mjs → ngx-histaff-alpha-wf-lab.component-Ci9x7286.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-wf-lab.component-Db5dIgKZ.mjs.map → ngx-histaff-alpha-wf-lab.component-Ci9x7286.mjs.map} +1 -1
- package/fesm2022/ngx-histaff-alpha.mjs +1 -1
- package/lib/app/libraries/core-workflow-builder/interfaces/IWorkflowReactContext.d.ts +2 -0
- package/package.json +2 -2
- package/fesm2022/ngx-histaff-alpha-live-form.component-LdFysTvc.mjs.map +0 -1
- package/fesm2022/ngx-histaff-alpha-ngx-histaff-alpha-TWTSrQ0J.mjs.map +0 -1
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import { s as CanDeactivateGuard } from './ngx-histaff-alpha-ngx-histaff-alpha-
|
|
1
|
+
import { s as CanDeactivateGuard } from './ngx-histaff-alpha-ngx-histaff-alpha-B4dw5BXZ.mjs';
|
|
2
2
|
|
|
3
3
|
const wfDesignWrapperRoutes = [
|
|
4
4
|
{
|
|
5
5
|
path: '',
|
|
6
|
-
loadComponent: () => import('./ngx-histaff-alpha-design-wrapper.component-
|
|
6
|
+
loadComponent: () => import('./ngx-histaff-alpha-design-wrapper.component-hBUaZceS.mjs').then(m => m.DesignWrapperComponent),
|
|
7
7
|
canDeactivate: [CanDeactivateGuard],
|
|
8
8
|
children: [
|
|
9
9
|
{
|
|
10
10
|
path: ':id',
|
|
11
11
|
outlet: 'preview',
|
|
12
|
-
loadComponent: () => import('./ngx-histaff-alpha-live-form.component-
|
|
12
|
+
loadComponent: () => import('./ngx-histaff-alpha-live-form.component-x08G6uI3.mjs').then(function (n) { return n.l; }).then(m => m.LiveFormComponent)
|
|
13
13
|
},
|
|
14
14
|
]
|
|
15
15
|
},
|
|
16
16
|
{
|
|
17
17
|
path: ':id',
|
|
18
|
-
loadComponent: () => import('./ngx-histaff-alpha-live-form.component-
|
|
18
|
+
loadComponent: () => import('./ngx-histaff-alpha-live-form.component-x08G6uI3.mjs').then(function (n) { return n.l; }).then(m => m.LiveFormComponent)
|
|
19
19
|
}
|
|
20
20
|
];
|
|
21
21
|
|
|
22
22
|
export { wfDesignWrapperRoutes };
|
|
23
|
-
//# sourceMappingURL=ngx-histaff-alpha-design-wrapper.route-
|
|
23
|
+
//# sourceMappingURL=ngx-histaff-alpha-design-wrapper.route-DQoOPQge.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-histaff-alpha-design-wrapper.route-
|
|
1
|
+
{"version":3,"file":"ngx-histaff-alpha-design-wrapper.route-DQoOPQge.mjs","sources":["../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/design-wrapper/design-wrapper.route.ts"],"sourcesContent":["import { Routes } from '@angular/router';\r\nimport { CanDeactivateGuard } from '../../../guards/can-deactivate.guard';\r\n\r\nexport const wfDesignWrapperRoutes: Routes = [\r\n {\r\n path: '',\r\n loadComponent: () => import('./design-wrapper.component').then(m => m.DesignWrapperComponent),\r\n canDeactivate: [CanDeactivateGuard],\r\n children: [\r\n {\r\n path: ':id',\r\n outlet: 'preview',\r\n loadComponent: () => import('../../core-form-design/live-form/live-form.component').then(m => m.LiveFormComponent)\r\n },\r\n ]\r\n },\r\n {\r\n path: ':id',\r\n loadComponent: () => import('../../core-form-design/live-form/live-form.component').then(m => m.LiveFormComponent)\r\n }\r\n]"],"names":[],"mappings":";;AAGa,MAAA,qBAAqB,GAAW;AACzC,IAAA;AACI,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,aAAa,EAAE,MAAM,OAAO,2DAA4B,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,sBAAsB,CAAC;QAC7F,aAAa,EAAE,CAAC,kBAAkB,CAAC;AACnC,QAAA,QAAQ,EAAE;AACN,YAAA;AACI,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,aAAa,EAAE,MAAM,OAAO,sDAAsD,oCAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,iBAAiB;AACpH,aAAA;AACJ;AACJ,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,aAAa,EAAE,MAAM,OAAO,sDAAsD,oCAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,iBAAiB;AACpH;;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { inject, Component } from '@angular/core';
|
|
3
|
-
import { B as BaseComponent, A as AppService } from './ngx-histaff-alpha-ngx-histaff-alpha-
|
|
3
|
+
import { B as BaseComponent, A as AppService } from './ngx-histaff-alpha-ngx-histaff-alpha-B4dw5BXZ.mjs';
|
|
4
4
|
import { finalize } from 'rxjs';
|
|
5
5
|
|
|
6
6
|
class HrmSchemaComponent extends BaseComponent {
|
|
@@ -36,4 +36,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
36
36
|
}] });
|
|
37
37
|
|
|
38
38
|
export { HrmSchemaComponent };
|
|
39
|
-
//# sourceMappingURL=ngx-histaff-alpha-hrm-schema.component-
|
|
39
|
+
//# sourceMappingURL=ngx-histaff-alpha-hrm-schema.component-BJZOW5Wi.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-histaff-alpha-hrm-schema.component-
|
|
1
|
+
{"version":3,"file":"ngx-histaff-alpha-hrm-schema.component-BJZOW5Wi.mjs","sources":["../../../projects/ngx-histaff-alpha/src/lib/app/root/hrm-schema/hrm-schema.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/root/hrm-schema/hrm-schema.component.html"],"sourcesContent":["import { AfterViewInit, Component, inject } from '@angular/core';\r\nimport { AppService } from '../../services/app.service';\r\nimport { BaseComponent } from '../../libraries/base-component/base/base.component';\r\nimport { finalize } from 'rxjs';\r\n\r\ninterface SchemaReport {\r\n name: string;\r\n success: boolean;\r\n durationMs: number;\r\n logs: string[];\r\n errors: string[];\r\n}\r\n\r\n@Component({\r\n selector: 'hrm-schema',\r\n imports: [],\r\n templateUrl: './hrm-schema.component.html',\r\n styleUrl: './hrm-schema.component.scss'\r\n})\r\nexport class HrmSchemaComponent extends BaseComponent implements AfterViewInit {\r\n reports: SchemaReport[] = [];\r\n loading: boolean = false;\r\n appService = inject(AppService)\r\n\r\n get maxDuration(): number {\r\n return this.reports.length ? Math.max(...this.reports.map(r => r.durationMs)) : 1;\r\n }\r\n\r\n // Scale bar width as percentage\r\n getWidth(report: SchemaReport): string {\r\n return `${(report.durationMs / this.maxDuration) * 100}%`;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n this.loading = true;\r\n this.subscriptions.push(\r\n this.appService.get('/api/HrmSchemaEssential/SchemaCheck').pipe(\r\n finalize(() => this.loading = false)\r\n ).subscribe(x => {\r\n if (x.ok && x.status === 200 && x.body?.statusCode === 200) {\r\n this.reports = x.body.innerBody;\r\n }\r\n })\r\n )\r\n })\r\n }\r\n}\r\n","\r\n<div class=\"container-fluid\">\r\n <div class=\"schema-bar-chart\">\r\n @for (r of reports; track $index) {\r\n <div class=\"schema-bar-row\">\r\n <div class=\"schema-label\">{{ r.name }}</div>\r\n <div class=\"schema-bar-wrapper\">\r\n <div class=\"schema-bar\" [class.success]=\"r.success\" [class.fail]=\"!r.success\" [style.width]=\"getWidth(r)\"\r\n [title]=\"r.durationMs + ' ms\\n' + (r.errors.length ? r.errors.join('; ') : 'OK')\">\r\n {{ r.durationMs }} ms\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</div>"],"names":[],"mappings":";;;;;AAmBM,MAAO,kBAAmB,SAAQ,aAAa,CAAA;AANrD,IAAA,WAAA,GAAA;;QAOE,IAAO,CAAA,OAAA,GAAmB,EAAE;QAC5B,IAAO,CAAA,OAAA,GAAY,KAAK;AACxB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAyBhC;AAvBC,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC;;;AAInF,IAAA,QAAQ,CAAC,MAAoB,EAAA;AAC3B,QAAA,OAAO,CAAG,EAAA,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,IAAI,GAAG,GAAG;;IAG3D,eAAe,GAAA;QACb,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,IAAI,CAC7D,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CACrC,CAAC,SAAS,CAAC,CAAC,IAAG;AACd,gBAAA,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,UAAU,KAAK,GAAG,EAAE;oBAC1D,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS;;aAElC,CAAC,CACH;AACH,SAAC,CAAC;;8GA1BO,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,6FCnB/B,4pBAeM,EAAA,MAAA,EAAA,CAAA,sfAAA,CAAA,EAAA,CAAA,CAAA;;2FDIO,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,WACb,EAAE,EAAA,QAAA,EAAA,4pBAAA,EAAA,MAAA,EAAA,CAAA,sfAAA,CAAA,EAAA;;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { input, signal, computed, isDevMode, inject, HostListener, ChangeDetectionStrategy, Component, output, ChangeDetectorRef, Injector, effect } from '@angular/core';
|
|
3
|
-
import { B as BaseComponent, aa as EnumImageResolverType, m as CoreWorkflowService, o as CoreFormService, b as AlertService, a as AppConfigService, v as alertOptions, M as MultiLanguageService, e as TranslatePipe, I as ImageErrorResolverDirective, ab as NormalizeHumanNamePipe, T as TooltipDirective, ac as CoreIosSwitcherComponent, c as CoreTerminalSpinnerComponent, d as CorePageHeaderComponent, z as DomService, O as CoreParamControlComponent, x as CoreFormDesignService, U as ApplicationHelpService, Z as JsonService, A as AppService, i as EnumFormBaseContolType, W as EnumCorePageEditMode, _ as EnumCoreButtonVNSCode, n as EnumCoreFormControlSeekerSourceType, V as HotKeysDirective, X as CoreFormComponent, a7 as JsonSafePipe } from './ngx-histaff-alpha-ngx-histaff-alpha-
|
|
3
|
+
import { B as BaseComponent, aa as EnumImageResolverType, m as CoreWorkflowService, o as CoreFormService, b as AlertService, a as AppConfigService, v as alertOptions, M as MultiLanguageService, e as TranslatePipe, I as ImageErrorResolverDirective, ab as NormalizeHumanNamePipe, T as TooltipDirective, ac as CoreIosSwitcherComponent, c as CoreTerminalSpinnerComponent, d as CorePageHeaderComponent, z as DomService, O as CoreParamControlComponent, x as CoreFormDesignService, U as ApplicationHelpService, Z as JsonService, A as AppService, i as EnumFormBaseContolType, W as EnumCorePageEditMode, _ as EnumCoreButtonVNSCode, n as EnumCoreFormControlSeekerSourceType, V as HotKeysDirective, X as CoreFormComponent, a7 as JsonSafePipe } from './ngx-histaff-alpha-ngx-histaff-alpha-B4dw5BXZ.mjs';
|
|
4
4
|
import { catchError, of, finalize, BehaviorSubject, filter, distinctUntilChanged, tap } from 'rxjs';
|
|
5
5
|
import { NgClass, JsonPipe, NgStyle } from '@angular/common';
|
|
6
6
|
import { RouterLink, Router, ActivatedRoute } from '@angular/router';
|
|
@@ -358,13 +358,15 @@ class LiveFormComponent extends BaseComponent {
|
|
|
358
358
|
this.$effectiveSections = computed(() => {
|
|
359
359
|
const raw = this.$inputSections();
|
|
360
360
|
// CHÌA KHÓA VÀNG
|
|
361
|
-
const steps = this.wfs.$currentSteps();
|
|
362
|
-
const step = steps?.[0]; // Kickoff & React đều đúng
|
|
363
|
-
if (!step)
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
361
|
+
//const steps = this.wfs.$currentSteps();
|
|
362
|
+
//const step = steps?.[0]; // Kickoff & React đều đúng
|
|
363
|
+
//if (!step) return raw;
|
|
364
|
+
const formUi = this.$workflowReactContext()?.stepFormConfig?.formUi;
|
|
365
|
+
if (!formUi) {
|
|
366
|
+
console.log("[$effectiveSections computed]: formUi was undefined");
|
|
367
367
|
return raw;
|
|
368
|
+
}
|
|
369
|
+
console.log("[$effectiveSections computed]: Calling applyFormUi()", raw, formUi);
|
|
368
370
|
return this.applyFormUi(raw, formUi);
|
|
369
371
|
});
|
|
370
372
|
// 🔁 Reactive bindings
|
|
@@ -615,6 +617,7 @@ class LiveFormComponent extends BaseComponent {
|
|
|
615
617
|
const instance = this.coreFormDesignService.mapFromAfInstanceDTO(afInstanceDto);
|
|
616
618
|
instance.sections = this.coreFormDesignService.toCoreFormSections(instance.formDesignSections);
|
|
617
619
|
this.$afInstance.set(instance);
|
|
620
|
+
console.log("this.$inputSections being merged wuth:", instance.sections);
|
|
618
621
|
this.$inputSections.set([...instance.sections, ...this.$inputSections()]);
|
|
619
622
|
this.$normalMode.set(instance.normalMode);
|
|
620
623
|
this.$submitApi.set(instance.submitApi);
|
|
@@ -848,7 +851,10 @@ class LiveFormComponent extends BaseComponent {
|
|
|
848
851
|
const hidden = formUi.hidden ?? {};
|
|
849
852
|
const readonly = formUi.readonly ?? {};
|
|
850
853
|
const required = formUi.required ?? {};
|
|
851
|
-
|
|
854
|
+
console.log("[applyFormUi] hidden", hidden);
|
|
855
|
+
console.log("[applyFormUi] readonly", readonly);
|
|
856
|
+
console.log("[applyFormUi] required", required);
|
|
857
|
+
const sectionsTransformed = sections.map(sec => ({
|
|
852
858
|
...sec,
|
|
853
859
|
rows: sec.rows.map(row => row.map(ctrl => {
|
|
854
860
|
const c = { ...ctrl };
|
|
@@ -881,6 +887,8 @@ class LiveFormComponent extends BaseComponent {
|
|
|
881
887
|
return c;
|
|
882
888
|
}))
|
|
883
889
|
}));
|
|
890
|
+
console.log("[applyFormUi] sectionsTransformed", sectionsTransformed);
|
|
891
|
+
return sectionsTransformed;
|
|
884
892
|
}
|
|
885
893
|
ngOnDestroy() {
|
|
886
894
|
this.subscriptions.forEach(x => x?.unsubscribe());
|
|
@@ -908,4 +916,4 @@ var liveForm_component = /*#__PURE__*/Object.freeze({
|
|
|
908
916
|
});
|
|
909
917
|
|
|
910
918
|
export { LiveFormComponent as L, RoutingPreviewPanelComponent as R, liveForm_component as l };
|
|
911
|
-
//# sourceMappingURL=ngx-histaff-alpha-live-form.component-
|
|
919
|
+
//# sourceMappingURL=ngx-histaff-alpha-live-form.component-x08G6uI3.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ngx-histaff-alpha-live-form.component-x08G6uI3.mjs","sources":["../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/routing-preview/routing-preview.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/routing-preview/routing-preview.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/routing-preview-panel/routing-preview-panel.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/routing-preview-panel/routing-preview-panel.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/live-form/live-form.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/live-form/live-form.component.html"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, effect, HostListener, inject, input, isDevMode, signal, WritableSignal } from '@angular/core';\r\nimport { IRoutingResult } from '../interfaces/IRoutingResult';\r\nimport { TranslatePipe } from '../../../app-pipes/translate.pipe';\r\nimport { BaseComponent } from '../../base-component/base/base.component';\r\nimport { EnumImageResolverType, ImageErrorResolverDirective } from '../../../directives/image-error-resolver.directive';\r\nimport { MultiLanguageService } from '../../../services/multi-language.service';\r\nimport { CoreWorkflowService } from '../core-workflow.service';\r\nimport { AlertService } from '../../alert/alert.service';\r\nimport { IGenerateWorkflowRoutingRequest } from '../interfaces/IGenerateWorkflowRoutingRequest';\r\nimport { catchError, of, tap, finalize } from 'rxjs';\r\nimport { NormalizeHumanNamePipe } from '../../pipes/normalize-human-name.pipe';\r\nimport { TooltipDirective } from '../../tooltip/tooltip.directive';\r\nimport { alertOptions } from '../../../constants/alertOptions';\r\nimport { CoreIosSwitcherComponent } from '../../core-ios-switcher/core-ios-switcher/core-ios-switcher.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { JsonPipe, NgClass } from '@angular/common';\r\nimport { AppConfigService } from '../../../services/app-config.service';\r\nimport {\r\n trigger,\r\n transition,\r\n style,\r\n animate\r\n} from '@angular/animations';\r\nimport { IInitialDebugSubmitRequest } from '../interfaces/IInitialDebugSubmitRequest';\r\nimport { IRenderWorkflowEmailRequest } from '../interfaces/IRenderWorkflowEmailRequest';\r\nimport { IPlannedActor } from '../interfaces/IPlannedActor';\r\nimport { CoreTerminalSpinnerComponent } from '../../core-terminal-spinner/core-terminal-spinner.component';\r\nimport { CorePageHeaderComponent } from '../../core-page-header/core-page-header/core-page-header.component';\r\nimport { RouterLink } from '@angular/router';\r\nimport { ISubmitResult } from '../interfaces/ISubmitResult';\r\nimport { CoreFormService } from '../../core-form/core-form.service';\r\nimport { IRoutingStep } from '../interfaces/IRoutingStep';\r\nimport { IFormatedResponse } from '../../../interfaces/IFormatedResponse';\r\n\r\n@Component({\r\n selector: 'routing-preview',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n FormsModule,\r\n RouterLink,\r\n NgClass,\r\n JsonPipe,\r\n TranslatePipe,\r\n ImageErrorResolverDirective,\r\n NormalizeHumanNamePipe,\r\n TooltipDirective,\r\n CoreIosSwitcherComponent,\r\n CoreTerminalSpinnerComponent,\r\n CorePageHeaderComponent\r\n ],\r\n templateUrl: './routing-preview.component.html',\r\n styleUrl: './routing-preview.component.scss',\r\n animations: [\r\n trigger('fadeToggle', [\r\n transition(':enter', [\r\n style({ opacity: 0 }),\r\n animate('200ms ease-out', style({ opacity: 1 }))\r\n ]),\r\n transition(':leave', [\r\n animate('150ms ease-in', style({ opacity: 0 }))\r\n ])\r\n ])\r\n ]\r\n})\r\nexport class RoutingPreviewComponent extends BaseComponent {\r\n\r\n $previewMode = input<boolean>(true);\r\n $loading = signal(false);\r\n $loadingMessage = signal('');\r\n $backendMessage = signal('');\r\n $submitResult = signal<ISubmitResult | null>(null);\r\n\r\n $submitErrors = computed(() => {\r\n const submitResult = this.$submitResult();\r\n return submitResult?.items.map(x => x.error)\r\n })\r\n\r\n $results: WritableSignal<IRoutingResult[]> = signal([]);\r\n $logExpandedStates: WritableSignal<boolean[]> = signal([]);\r\n $logs: WritableSignal<string[]> = signal([]);\r\n imageResolverType = EnumImageResolverType.AVATAR;\r\n\r\n isDevMode = isDevMode();\r\n\r\n $isDebugMode = signal(false);\r\n $showResolvedSteps = signal(false);\r\n $showEmailPreview = signal(false);\r\n $emailSubject = signal('');\r\n $emailBody = signal('');\r\n\r\n //$resolvedStepsJson = computed(() => JSON.stringify(this.$steps(), null, 2));\r\n\r\n wfs = inject(CoreWorkflowService);\r\n cfs = inject(CoreFormService);\r\n as = inject(AlertService);\r\n public appConfigService = inject(AppConfigService);\r\n\r\n liveForm = this.wfs.liveForm;\r\n\r\n constructor(public override mls: MultiLanguageService) {\r\n super(mls);\r\n }\r\n\r\n @HostListener('document:keydown', ['$event'])\r\n handleKeyDown(event: KeyboardEvent) {\r\n if (event.key === 'Escape') {\r\n this.wfs.$showLiveRouting.set(false);\r\n }\r\n }\r\n\r\n getGroupSubmitErrors(index: number): string[] {\r\n if (!this.$submitResult()) return [];\r\n return this.$submitResult()!.items.filter(x => !!x.error && !!x.error.length).map(x => x.error!)\r\n }\r\n\r\n generateRouting(): void {\r\n\r\n const steps = this.wfs.$currentSteps();\r\n\r\n const nameMap = new Map<string, number>();\r\n\r\n for (const step of steps) {\r\n const name = step.name?.trim();\r\n if (!name) continue;\r\n\r\n nameMap.set(name, (nameMap.get(name) ?? 0) + 1);\r\n }\r\n\r\n const duplicateNames = [...nameMap.entries()]\r\n .filter(([_, count]) => count > 1)\r\n .map(([name]) => name);\r\n\r\n if (duplicateNames.length > 0) {\r\n this.as.warn(\r\n `Duplicate step name(s) found: ${duplicateNames.join(\", \")}`,\r\n alertOptions\r\n );\r\n this.wfs.$designActiveTab.set(3);\r\n return;\r\n }\r\n\r\n\r\n if (!this.liveForm.valid) {\r\n this.wfs.liveFormCheckError$.next(true);\r\n setTimeout(() => this.wfs.liveFormCheckError$.next(false), 5000);\r\n this.as.info(\"Please fill required fields\", alertOptions);\r\n return;\r\n }\r\n\r\n if (!this.wfs.$currentFlow()) {\r\n this.as.info(\"No flow detected\", alertOptions);\r\n return;\r\n }\r\n\r\n const request: IGenerateWorkflowRoutingRequest = {\r\n workflowId: this.wfs.$currentFlow()?.id!,\r\n attributes: this.cfs.getAttributesWithWys(this.liveForm),\r\n ___targetEmployees: this.liveForm.get('___targetEmployees')?.getRawValue()\r\n };\r\n\r\n this.$backendMessage.set('');\r\n this.$loading.set(true);\r\n this.$loadingMessage.set(\"Generating routes...\")\r\n\r\n this.wfs.generateRouting(request).pipe(\r\n catchError(err => {\r\n const msg =\r\n err?.error?.message || // API-defined message\r\n err?.message || // Native JS or HttpErrorResponse\r\n err?.statusText || // Fallback\r\n 'An unknown error occurred.';\r\n this.$backendMessage.set(msg);\r\n return of({ ok: false, status: 500, body: { messageCode: msg } as IFormatedResponse});\r\n }),\r\n finalize(() => {\r\n this.$loading.set(false);\r\n this.$loadingMessage.set('');\r\n })\r\n ).subscribe(x => {\r\n\r\n if (x.ok && x.status === 200) {\r\n const body = x.body;\r\n\r\n if (body?.statusCode === 200) {\r\n const inner = body.innerBody;\r\n\r\n this.$logs.set(inner.logs ?? []);\r\n\r\n const backendResults = inner.results as IRoutingResult[];\r\n\r\n const validResults: IRoutingResult[] = [];\r\n const allErrors: string[] = [];\r\n\r\n for (const result of backendResults) {\r\n const { targetEmployeeId, targetEmployeeFullName, error, response } = result;\r\n\r\n if (error || !response) {\r\n allErrors.push(`🚫 Employee ${targetEmployeeId} (${targetEmployeeFullName}): ${error || 'Unknown error'}`);\r\n continue;\r\n }\r\n\r\n // Ensure deep cloning or normalization if needed\r\n response.steps = response.steps.map(step => ({\r\n id: step.id,\r\n workflowId: step.workflowId,\r\n name: step.name,\r\n type: step.type,\r\n config: step.config,\r\n resolvedActors: step.resolvedActors\r\n }));\r\n\r\n validResults.push(result);\r\n\r\n // Patch latest attributes (or collect per-employee if needed)\r\n this.liveForm.patchValue(response.attributes);\r\n }\r\n\r\n this.$results.set(validResults);\r\n this.$logExpandedStates.set(new Array(validResults.length).fill(false));\r\n this.$backendMessage.set(allErrors.join('\\n'));\r\n\r\n } else {\r\n this.$backendMessage.set(body?.messageCode || 'UNEXPECTED_ERROR');\r\n }\r\n\r\n } else {\r\n this.$backendMessage.set('API_ERROR');\r\n }\r\n });\r\n\r\n }\r\n\r\n initialDebugSubmit(): void {\r\n const request: IInitialDebugSubmitRequest = {\r\n workflowId: this.wfs.$currentFlow()?.id!,\r\n attributes: this.cfs.getAttributesWithWys(this.liveForm), //this.liveForm.getRawValue(),\r\n results: this.$results()\r\n };\r\n\r\n this.$loading.set(true);\r\n this.subscriptions.push(\r\n this.wfs.initialDebugSubmit(request)\r\n .pipe(\r\n catchError(err => {\r\n this.$loading.set(false);\r\n return of({ ok: false, status: 500, body: { messageCode: \"Error\" } });\r\n }),\r\n finalize(() => this.$loading.set(false))\r\n )\r\n .subscribe(x => {\r\n\r\n if (x.ok && x.status === 200 && x.body?.statusCode === 200) {\r\n this.$submitResult.set(x.body.innerBody);\r\n }\r\n })\r\n );\r\n }\r\n\r\n\r\n backToLiveForm(): void {\r\n this.wfs.$showLiveRouting.set(false);\r\n }\r\n\r\n onIsDebugModeChange(value: boolean): void {\r\n this.$isDebugMode.set(value);\r\n }\r\n\r\n toggleResolvedSteps(): void {\r\n this.$showResolvedSteps.set(!this.$showResolvedSteps());\r\n }\r\n\r\n\r\n onEmailChange(actor: IPlannedActor, email: string): void {\r\n this.$results.update(current => {\r\n current.forEach(stepGroup => {\r\n stepGroup.response?.steps.forEach(step => {\r\n step.resolvedActors\r\n .filter(a => a.employeeId === actor.employeeId)\r\n .forEach(a => a.email = email);\r\n });\r\n });\r\n return current;\r\n });\r\n }\r\n\r\n copy(value: string | number | undefined | null): void {\r\n if (!value) return;\r\n navigator.clipboard.writeText(value.toString()).then(() => {\r\n this.as.success('Copied!', alertOptions);\r\n });\r\n }\r\n\r\n toggleLog(index: number): void {\r\n this.$logExpandedStates.update(arr => {\r\n const newArr = [...arr];\r\n newArr[index] = !newArr[index];\r\n return newArr;\r\n });\r\n }\r\n\r\n isLogVisible(index: number): boolean {\r\n return this.$logExpandedStates()?.[index] ?? false;\r\n }\r\n\r\n onActorToolClick(step: IRoutingStep,actor: IPlannedActor): void {\r\n const results = this.$results();\r\n results.forEach(r => {\r\n r.response.steps.forEach(s => {\r\n s.resolvedActors.forEach(a => {\r\n if (!(s.id === step.id && a.employeeId === actor.employeeId)) {\r\n a.debugToolOpen = false;\r\n } else {\r\n a.debugToolOpen = !a.debugToolOpen;\r\n }\r\n })\r\n })\r\n })\r\n this.$results.set(results);\r\n }\r\n\r\n getLogLinesFor(index: number): string[] {\r\n const logs = this.$logs();\r\n const prefix = `on behalf of`;\r\n const match = `#${index}`;\r\n return logs.filter(line => line.includes(prefix) ? line.includes(match) : true);\r\n }\r\n\r\n getCorrelationId(result: IRoutingResult): string | null {\r\n const filter = this.$submitResult()?.items?.filter(i => i.employeeId == result.targetEmployeeId);\r\n if (!!filter && !!filter.length) {\r\n return filter[0].correlationId;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n previewEmail(templateType: 'SUBMIT' | 'REACT' | 'FULLY_APPROVE' | 'REJECT' | 'CANCEL' | 'TERMINATE' | 'REVOKE' | 'CC', correlationId: string, actorFullName: string): void {\r\n if (!this.wfs.$currentFlow()) {\r\n return;\r\n }\r\n const request: IRenderWorkflowEmailRequest = {\r\n workflowId: this.wfs.$currentFlow()!.id,\r\n templateType,\r\n correlationId,\r\n actorFullName\r\n }\r\n\r\n this.$loading.set(true);\r\n this.subscriptions.push(\r\n this.wfs.generatePreviewEmail(request)\r\n .pipe(\r\n finalize(() => this.$loading.set(false))\r\n )\r\n .subscribe(x => {\r\n if (x.ok && x.body?.statusCode === 200) {\r\n this.$emailSubject.set(x.body.innerBody.subject)\r\n this.$emailBody.set(x.body.innerBody.body)\r\n this.$showEmailPreview.set(true);\r\n }\r\n })\r\n )\r\n }\r\n\r\n onCloseEmailPreview(): void {\r\n this.$showEmailPreview.set(false);\r\n }\r\n\r\n}","<div class=\"routing-preview-container inter-font p-relative\">\r\n\r\n <div class=\"correlation-id\">\r\n </div>\r\n\r\n <div class=\"routing-preview-header\">\r\n\r\n <div class=\"button-group\">\r\n <button type=\"button\" class=\"btn btn-primary h35\" (click)=\"backToLiveForm()\">Back to Form (ESC)</button>\r\n <button type=\"button\" class=\"btn btn-secondary h35\" (click)=\"generateRouting()\">Generate</button>\r\n <button @fadeToggle type=\"button\" class=\"btn btn-primary h35\" (click)=\"initialDebugSubmit()\">Submit</button>\r\n </div>\r\n\r\n @if (!!appConfigService.WORKFLOW_ENABLE_DEBUG_MODE) {\r\n <div class=\"debug-group\">\r\n <label>Debug mode</label>\r\n <core-ios-switcher [width]=\"45\" [showOnOffText]=\"false\" [ngModel]=\"$isDebugMode()\"\r\n (ngModelChange)=\"onIsDebugModeChange($event)\"></core-ios-switcher>\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n <div class=\"workflows-wrapper\">\r\n @if ($loading()) {\r\n <core-terminal-spinner /><span>Generating...</span>\r\n } @else {\r\n\r\n\r\n @if (!!$results().length) {\r\n\r\n @for (result of $results(); track $index; let resultIndex = $index) {\r\n\r\n <div class=\"result-group mb-8 p-4 rounded bg-white shadow-sm\">\r\n\r\n <div class=\"flex items-center justify-between mb-3\">\r\n <h6 class=\"text-base font-semibold text-sky-700\">Routing for {{ result.targetEmployeeFullName }}</h6>\r\n <div class=\"d-flex d-flex-between\">\r\n <button type=\"button\" class=\"text-xs text-blue-500 underline btn btn-secondary\" (click)=\"toggleLog($index)\">\r\n {{ $logExpandedStates()[ $index ] ? 'Hide log' : 'Show log' }}\r\n </button>\r\n @if ($loading()) {\r\n <core-terminal-spinner />\r\n }\r\n @for (result of $submitResult()?.items || []; track result.employeeId) {\r\n <div class=\"saga-link d-flex d-flex-start\">\r\n <label>{{ result.employeeFullName }}:</label>\r\n\r\n @if (result.correlationId) {\r\n <a class=\"external-link\" [routerLink]=\"['/root/workflow/status', result.correlationId]\">\r\n ✅ Click to see status\r\n </a>\r\n } @else {\r\n <span class=\"text-danger d-flex flex-column\">\r\n @for (line of (result.error?.split('\\n') || []); track line) {\r\n <div>❌ {{ line }}</div>\r\n }\r\n </span>\r\n }\r\n </div>\r\n }\r\n\r\n </div>\r\n </div>\r\n\r\n <div class=\"workflow-wrapper\">\r\n\r\n @for (step of result.response.steps! ?? []; track step.id) {\r\n <div class=\"step-column\" [attr.data-actor-count]=\"step.resolvedActors?.length || 0\">\r\n\r\n <div class=\"step-column-aux\">\r\n\r\n <div class=\"step-header {{ step.type.toLowerCase() }}\"\r\n [ngClass]=\"(step.actorResolvedStatus ?? 'RESOLVED').toLowerCase()\">\r\n {{ step.name | translate : lang }} {{ step.config?.routingLogic }}\r\n </div>\r\n\r\n @for (actor of step.resolvedActors; track $index) {\r\n <div class=\"actor-card-aux\">\r\n <div class=\"actor-card d-flex d-flex-start {{ step.type.toLowerCase() }}\">\r\n <div class=\"avatar-wrapper\">\r\n <img [src]=\"actor.avatar\" appImageErrorResolver [type]=\"imageResolverType\"\r\n [isFemale]=\"!!actor.isFemale!\" class=\"actor-avatar\" alt=\"{{ actor.fullName }}\" />\r\n @if ($isDebugMode() && !!$submitResult() && !!$submitResult()?.items) {\r\n <div @fadeToggle class=\"actor-tool\" [appTooltip]=\"!actor.debugToolOpen ? 'Dubug tool' : ''\" [position]=\"'right'\" (click)=\"onActorToolClick(step, actor)\">\r\n <i class=\"feather-more-horizontal\"></i>\r\n @if (!!actor.debugToolOpen) {\r\n <ul class=\"actor-tool-list\">\r\n @switch (step.type) {\r\n @case ('Submit') {\r\n <li (click)=\"previewEmail('SUBMIT', $submitResult()?.items?.[resultIndex]?.correlationId!, actor.fullName)\">Preview Submit email</li>\r\n }\r\n @case ('CC') {\r\n <li (click)=\"previewEmail('CC', $submitResult()?.items?.[resultIndex]?.correlationId!, actor.fullName)\">Preview CC email</li>\r\n }\r\n @case ('Approval') {\r\n <li (click)=\"previewEmail('REACT', $submitResult()?.items?.[resultIndex]?.correlationId!, actor.fullName)\">Preview React email</li>\r\n }\r\n @case ('End') {\r\n <li (click)=\"previewEmail('FULLY_APPROVE', $submitResult()?.items?.[resultIndex]?.correlationId!, actor.fullName)\">Preview FullyAppoved email</li>\r\n <li (click)=\"previewEmail('REJECT', $submitResult()?.items?.[resultIndex]?.correlationId!, actor.fullName)\">Preview Rejected email</li>\r\n <li (click)=\"previewEmail('CANCEL', $submitResult()?.items?.[resultIndex]?.correlationId!, actor.fullName)\">Preview Cancelled email</li>\r\n <li (click)=\"previewEmail('TERMINATE', $submitResult()?.items?.[resultIndex]?.correlationId!, actor.fullName)\">Preview Terminated email</li>\r\n <li (click)=\"previewEmail('REVOKE', $submitResult()?.items?.[resultIndex]?.correlationId!, actor.fullName)\">Preview Revoked email</li>\r\n }\r\n }\r\n </ul>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <div class=\"actor-details\">\r\n <div class=\"actor-line\">\r\n <i class=\"feather-user\"></i>\r\n <span class=\"actor-full-name\" [appTooltip]=\"actor.fullName\">{{ actor.fullName | normalizeHumanName\r\n }}</span>\r\n </div>\r\n <div class=\"actor-line\">\r\n <i class=\"feather-briefcase\"></i>\r\n <span [appTooltip]=\"actor.jobName\">{{ actor.jobName }}</span>\r\n </div>\r\n <div class=\"actor-line\">\r\n <i class=\"feather-mail\"></i>\r\n @if ($isDebugMode()) {\r\n <input @fadeToggle class=\"email-debug-input\" type=\"email\" [(ngModel)]=\"actor.email\"\r\n (ngModelChange)=\"onEmailChange(actor, $event)\" placeholder=\"Enter demo email\" />\r\n } @else {\r\n <span [appTooltip]=\"actor.email\">{{ actor.email }}</span>\r\n }\r\n </div>\r\n <div class=\"actor-line\">\r\n <i class=\"feather-hash\"></i>\r\n <span @fadeToggle [appTooltip]=\"actor.employeeCode\">{{ actor.employeeCode }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n\r\n @if (!!$submitErrors() && !!$submitErrors()!.length) {\r\n <pre>\r\n <span>{{ $submitErrors()![$index] }}</span>\r\n </pre>\r\n }\r\n\r\n @if (isLogVisible($index)) {\r\n <pre class=\"employee-log mt-4 bg-gray-50 p-3 rounded text-xs font-mono text-gray-800\">\r\n @for (line of getLogLinesFor($index); track $index) {\r\n {{ line }}\r\n }\r\n </pre>\r\n }\r\n\r\n </div>\r\n\r\n }\r\n\r\n } @else if (!!$backendMessage()) {\r\n\r\n <div class=\"backend-message error-list bg-red-50 rounded p-4 text-sm text-red-800 leading-relaxed\">\r\n @for (line of $backendMessage().split('\\n'); track $index) {\r\n <div class=\"error-item flex items-start gap-2\">\r\n <i class=\"feather-alert-circle text-red-600 mt-0.5\"></i>\r\n <span [innerText]=\"line\"></span>\r\n </div>\r\n }\r\n </div>\r\n\r\n } @else {\r\n No routing steps found.\r\n }\r\n\r\n\r\n }\r\n\r\n </div>\r\n\r\n @if ($showResolvedSteps()) {\r\n <h5>Resolved steps</h5>\r\n <div class=\"resolved-steps\">\r\n <!-- <pre>{{ $resolvedStepsJson() }}</pre> -->\r\n </div>\r\n }\r\n\r\n @if ($showEmailPreview()) {\r\n <div class=\"modal-container\">\r\n <div class=\"modal-content-root\">\r\n <div class=\"email-preview\">\r\n <div class=\"email-header\">\r\n PREVIEW\r\n <div class=\"close-wrapper\">\r\n <i class=\"feather-x\" (click)=\"onCloseEmailPreview()\"></i>\r\n </div>\r\n </div>\r\n <div class=\"email-subject\" [innerHtml]=\"$emailSubject()\"></div>\r\n <div class=\"email-body\" [innerHtml]=\"$emailBody()\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n</div>","import { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\r\nimport { BaseComponent } from '../../base-component/base/base.component';\r\nimport { CoreParamControlComponent } from '../../core-param-control/core-param-control/core-param-control.component';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { CoreWorkflowService } from '../core-workflow.service';\r\nimport { DomService } from '../../services/dom.service';\r\nimport { NgStyle } from '@angular/common';\r\nimport { MultiLanguageService } from '../../../services/multi-language.service';\r\nimport { AlertService } from '../../alert/alert.service';\r\nimport { RoutingPreviewComponent } from '../routing-preview/routing-preview.component';\r\n\r\n@Component({\r\n selector: 'routing-preview-panel',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n NgStyle,\r\n CoreParamControlComponent,\r\n RoutingPreviewComponent\r\n ],\r\n templateUrl: './routing-preview-panel.component.html',\r\n styleUrl: './routing-preview-panel.component.scss'\r\n})\r\nexport class RoutingPreviewPanelComponent extends BaseComponent {\r\n\r\n $minWidth = input<number | undefined>();\r\n\r\n public wfs = inject(CoreWorkflowService);\r\n ds = inject(DomService);\r\n as = inject(AlertService);\r\n\r\n employeeId: number | undefined = undefined;\r\n\r\n seekerClick$ = new BehaviorSubject<any>(0);\r\n\r\n constructor(public override mls: MultiLanguageService) {\r\n super(mls);\r\n }\r\n\r\n override ngOnDestroy(): void {\r\n this.subscriptions.forEach(x => x?.unsubscribe());\r\n }\r\n\r\n}\r\n","<div class=\"routing-preview-panel-container\" [ngStyle]=\"{\r\n minWidth: $minWidth() ? $minWidth() + 'px' : 'unset'\r\n}\">\r\n \r\n <!-- <div class=\"param-wrapper\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"generateRouting()\">Generate Routing</button>\r\n </div> -->\r\n\r\n <routing-preview />\r\n \r\n\r\n <!-- <div class=\"graph-wrapper\">\r\n <svg id=\"routing-graph\" width=\"100%\"></svg>\r\n </div> -->\r\n\r\n</div>","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, Injector, inject, input, isDevMode, output, signal, effect, WritableSignal } from '@angular/core';\r\nimport { CorePageHeaderComponent } from '../../core-page-header/core-page-header/core-page-header.component';\r\nimport { CoreFormComponent } from '../../core-form/core-form/core-form.component';\r\nimport { BehaviorSubject, catchError, distinctUntilChanged, filter, finalize, of, tap } from 'rxjs';\r\nimport { EnumCorePageEditMode } from '../../core-page-edit/EnumCorePageEditMode';\r\nimport { CoreFormDesignService } from '../core-form-design.service';\r\nimport { TranslatePipe } from '../../../app-pipes/translate.pipe';\r\nimport { NgStyle } from '@angular/common';\r\nimport { BaseComponent } from '../../base-component/base/base.component';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { CoreWorkflowService } from '../../core-workflow-builder/core-workflow.service';\r\nimport { IAfInstance } from '../interfaces';\r\nimport { ICoreFormSection, IFormBaseControl, IValidator } from '../../core-form/core-form/enum-interfaces';\r\nimport { EnumFormBaseContolType } from '../../../enum/EnumFormBaseContolType';\r\nimport { HotKeysDirective } from '../../../directives/hot-keys.directive';\r\nimport { ApplicationHelpService } from '../../../services/application-help.service';\r\nimport { IWfWorkflow } from '../../core-workflow-builder/interfaces/IWfWorkflow';\r\nimport { AlertService } from '../../alert/alert.service';\r\nimport { AppService } from '../../../services/app.service';\r\nimport { MultiLanguageService } from '../../../services/multi-language.service';\r\nimport { RoutingPreviewPanelComponent } from '../../core-workflow-builder/routing-preview-panel/routing-preview-panel.component';\r\nimport { DomService } from '../../services/dom.service';\r\nimport { CoreFormService } from '../../core-form/core-form.service';\r\nimport { alertOptions } from '../../../constants/alertOptions';\r\nimport { AppConfigService } from '../../../services/app-config.service';\r\nimport { JsonService } from '../../../services/json.service';\r\nimport { EnumCoreFormControlSeekerSourceType } from '../../core-form-control-seeker/EnumCoreFormControlSeekerSourceType';\r\nimport { FormGroup, Validators } from '@angular/forms';\r\nimport { EnumCoreButtonVNSCode } from '../../core-button-group-vns/core-button-group-vns/EnumCoreButtonVNSCode';\r\nimport { IWorkflowReactContext } from '../../core-workflow-builder/interfaces/IWorkflowReactContext';\r\nimport { ISubmitResult } from '../../core-workflow-builder/interfaces/ISubmitResult';\r\nimport { IGenerateWorkflowRoutingRequest } from '../../core-workflow-builder/interfaces/IGenerateWorkflowRoutingRequest';\r\nimport { IRoutingResult } from '../../core-workflow-builder/interfaces/IRoutingResult';\r\nimport { ISubmitResponseItem } from '../../core-workflow-builder/interfaces/ISubmitResponseItem';\r\nimport { JsonSafePipe } from '../json-safe.pipe';\r\nimport { FormUi, IStepFormConfig } from '../../core-workflow-builder/interfaces/IStepConfig';\r\nimport { EnumTranslateKey } from 'alpha-global-constants';\r\n\r\n@Component({\r\n selector: 'live-form',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n NgStyle,\r\n JsonSafePipe,\r\n HotKeysDirective,\r\n RoutingPreviewPanelComponent,\r\n CorePageHeaderComponent,\r\n CoreFormComponent,\r\n TranslatePipe,\r\n\r\n ],\r\n templateUrl: './live-form.component.html',\r\n styleUrl: './live-form.component.scss'\r\n})\r\nexport class LiveFormComponent extends BaseComponent implements AfterViewInit {\r\n\r\n $designMode = input<boolean>(false);\r\n $forKickOff = input<boolean>();\r\n\r\n $workflowReactContext = input<IWorkflowReactContext | null>(null);\r\n $form = signal<FormGroup | null>(null);\r\n\r\n\r\n $onClose = output();\r\n $loading = signal<boolean>(false);\r\n $showAfInstanceJson = signal<boolean>(false);\r\n $showWfWorkflowJson = signal<boolean>(false);\r\n $logExpandedStates: WritableSignal<boolean[]> = signal([]);\r\n\r\n $backendMessage = signal('');\r\n $loadingMessage = signal('');\r\n $logs = signal<string[]>([]);\r\n $results: WritableSignal<IRoutingResult[]> = signal([]);\r\n\r\n workflowId: string | undefined;\r\n\r\n public coreFormDesignService = inject(CoreFormDesignService);\r\n applicationHelpService = inject(ApplicationHelpService);\r\n ds = inject(DomService);\r\n public wfs = inject(CoreWorkflowService);\r\n fds = inject(CoreFormDesignService);\r\n js = inject(JsonService);\r\n cdr = inject(ChangeDetectorRef);\r\n router = inject(Router);\r\n route = inject(ActivatedRoute);\r\n alertService = inject(AlertService);\r\n appService = inject(AppService);\r\n cfs = inject(CoreFormService);\r\n appConfigService = inject(AppConfigService);\r\n injector = inject(Injector);\r\n\r\n isDevMode = isDevMode();\r\n $previewMode = signal(false);\r\n\r\n $employeeSubmiterId = signal(0);\r\n\r\n simulatedEmployee$ = new BehaviorSubject<any>(null);\r\n\r\n $showLiveRouting = this.wfs.$showLiveRouting;\r\n\r\n\r\n $zIndex = signal(0);\r\n\r\n $reactMode = signal(false);\r\n\r\n $onBehalfMode = computed(() => this.$workflow()?.allowOnBehalf)\r\n\r\n $reactInjectedFieldsAdded = signal(false);\r\n\r\n $effectiveSections = computed<ICoreFormSection[]>(() => {\r\n const raw = this.$inputSections();\r\n\r\n // CHÌA KHÓA VÀNG\r\n //const steps = this.wfs.$currentSteps();\r\n //const step = steps?.[0]; // Kickoff & React đều đúng\r\n\r\n //if (!step) return raw;\r\n\r\n const formUi = this.$workflowReactContext()?.stepFormConfig?.formUi;\r\n if (!formUi) {\r\n console.log(\"[$effectiveSections computed]: formUi was undefined\"); \r\n return raw;\r\n }\r\n\r\n console.log(\"[$effectiveSections computed]: Calling applyFormUi()\", raw, formUi);\r\n return this.applyFormUi(raw, formUi);\r\n\r\n });\r\n\r\n constructor(\r\n public override mls: MultiLanguageService,\r\n private coreFormService: CoreFormService\r\n ) {\r\n super(mls);\r\n\r\n effect(() => {\r\n const context = this.$workflowReactContext();\r\n const form = this.$form();\r\n\r\n if (!context || !form) return;\r\n\r\n try {\r\n\r\n const attributesJson = context.instance.attributesJson;\r\n const formValue = JSON.parse(attributesJson);\r\n\r\n // 🔑 Ensure FormArrays have correct length BEFORE patching\r\n this.cfs.ensureFormArraysMatch(\r\n this.wfs.liveForm,\r\n formValue,\r\n this.cfs.formArrayConfigMap\r\n );\r\n\r\n console.log(\"this.wfs.liveForm.patchValue(formValue)\", formValue);\r\n this.wfs.liveForm.patchValue(formValue);\r\n\r\n\r\n } catch (err: any) {\r\n if (isDevMode()) {\r\n this.alertService.error(err?.message || \"Error while set value for the context\");\r\n }\r\n }\r\n })\r\n\r\n const navigation = this.router.getCurrentNavigation();\r\n const previewMode = navigation?.extras?.state?.['previewMode'];\r\n this.$previewMode.set(previewMode ?? false);\r\n\r\n this.subscriptions.push(\r\n this.simulatedEmployee$.pipe(\r\n filter(x => !!x)\r\n ).subscribe(x => {\r\n this.wfs.$simulatedEmployee.set(x);\r\n })\r\n )\r\n\r\n this.subscriptions.push(\r\n this.route.params.subscribe(p => {\r\n const rawId = p['id'];\r\n\r\n if (rawId && rawId.includes('___')) {\r\n const parts = rawId.split('___');\r\n\r\n if (parts.length === 4) {\r\n const [workflowId] = parts;\r\n this.workflowId = workflowId;\r\n this.$customButtons.set([\r\n EnumCoreButtonVNSCode.NONE_HEADER_CANCEL,\r\n EnumCoreButtonVNSCode.NONE_HEADER_REJECT,\r\n EnumCoreButtonVNSCode.NONE_HEADER_APPROVE\r\n ])\r\n this.$reactMode.set(true);\r\n this.clearInjectedFields();\r\n // this.makeOriginReadonly();\r\n //this.addReactInjectedFields();\r\n }\r\n } else {\r\n\r\n this.$reactMode.set(false);\r\n\r\n this.$customButtons.set([\r\n EnumCoreButtonVNSCode.NONE_HEADER_CANCEL,\r\n EnumCoreButtonVNSCode.NONE_HEADER_SEND\r\n ])\r\n\r\n const preview = this.route.snapshot.queryParamMap.get('preview');\r\n const isPreviewMode = preview === 'true';\r\n if (isPreviewMode) {\r\n // This route is inside the (preview:) outlet\r\n this.workflowId = this.route.parent?.snapshot.params['id'];\r\n } else {\r\n // Not preview mode → Get workflowId from parent route\r\n const id = this.route.snapshot.params['id'];\r\n this.workflowId = id;\r\n }\r\n }\r\n })\r\n );\r\n\r\n }\r\n\r\n generateSubmitDto(): any {\r\n return {};\r\n }\r\n\r\n toggleShowRouting(): void {\r\n if (!this.$showLiveRouting() && !!this.wfs.liveForm.invalid) {\r\n this.alertService.info(\"The form value is invalid\", alertOptions);\r\n this.wfs.liveFormCheckError$.next(true);\r\n setTimeout(() => this.wfs.liveFormCheckError$.next(false), 5000);\r\n return;\r\n }\r\n this.$showLiveRouting.set(!this.$showLiveRouting())\r\n }\r\n\r\n initialSubmit(): void {\r\n const steps = this.wfs.$currentSteps();\r\n\r\n const nameMap = new Map<string, number>();\r\n\r\n for (const step of steps) {\r\n const name = step.name?.trim();\r\n if (!name) continue;\r\n\r\n nameMap.set(name, (nameMap.get(name) ?? 0) + 1);\r\n }\r\n\r\n const duplicateNames = [...nameMap.entries()]\r\n .filter(([_, count]) => count > 1)\r\n .map(([name]) => name);\r\n\r\n if (duplicateNames.length > 0) {\r\n this.alertService.warn(\r\n `Duplicate step name(s) found: ${duplicateNames.join(\", \")}`,\r\n alertOptions\r\n );\r\n this.wfs.$designActiveTab.set(3);\r\n return;\r\n }\r\n\r\n\r\n const form = this.$form();\r\n if (!form || !form.valid) {\r\n const controls = form?.controls ?? {};\r\n const entries = Object.entries(controls);\r\n\r\n const filteredInvalids = entries.filter(([key, ctrl]) => {\r\n if (key === '___submitterEmployeeId') return false; // skip check\r\n return ctrl.invalid;\r\n });\r\n\r\n if (filteredInvalids.length > 0) {\r\n this.wfs.liveFormCheckError$.next(true);\r\n setTimeout(() => this.wfs.liveFormCheckError$.next(false), 5000);\r\n this.alertService.info(\"Please fill required fields\", alertOptions);\r\n return;\r\n }\r\n }\r\n\r\n if (!this.wfs.$currentFlow()) {\r\n this.alertService.info(\"No flow detected\", alertOptions);\r\n return;\r\n }\r\n\r\n const request: IGenerateWorkflowRoutingRequest = {\r\n workflowId: this.wfs.$currentFlow()?.id!,\r\n attributes: this.cfs.getAttributesWithWys(this.$form()!),\r\n ___targetEmployees: this.$form()?.get('___targetEmployees')?.getRawValue()\r\n };\r\n\r\n this.$backendMessage.set('');\r\n this.$loading.set(true);\r\n this.$loadingMessage.set(\"Generating routes...\")\r\n\r\n this.wfs.initialSubmit(request).pipe(\r\n catchError(err => {\r\n const msg =\r\n err?.error?.message || // API-defined message\r\n err?.message || // Native JS or HttpErrorResponse\r\n err?.statusText || // Fallback\r\n 'An unknown error occurred.';\r\n this.$backendMessage.set(msg);\r\n return of({ ok: false, status: 500, body: { messageCode: msg } });\r\n }),\r\n finalize(() => {\r\n this.$loading.set(false);\r\n this.$loadingMessage.set('');\r\n })\r\n ).subscribe(x => {\r\n\r\n if (x.ok && x.status === 200) {\r\n const body = x.body;\r\n\r\n if (body?.statusCode === 200) {\r\n const inner: ISubmitResult = body.innerBody;\r\n\r\n if (!!inner.violations.length) {\r\n if (this.lang === 'en') {\r\n this.alertService.error(inner.violations[0].messageEnglish);\r\n } else {\r\n this.alertService.error(inner.violations[0].messageDefault);\r\n }\r\n }\r\n\r\n this.$logs.set(inner.logs ?? []);\r\n\r\n const backendResults = inner.items as ISubmitResponseItem[];\r\n\r\n const allErrors: string[] = [];\r\n\r\n for (const result of backendResults) {\r\n\r\n const { employeeId, employeeFullName, correlationId, error } = result;\r\n\r\n if (error || !correlationId) {\r\n allErrors.push(`🚫 Employee ${employeeId} (${employeeFullName}): ${error || 'Unknown error'}`);\r\n continue;\r\n }\r\n\r\n }\r\n\r\n this.$backendMessage.set(allErrors.join('\\n'));\r\n\r\n if (!!allErrors.length) {\r\n this.alertService.error(allErrors[0]);\r\n }\r\n\r\n } else {\r\n this.$backendMessage.set(body?.messageCode || 'UNEXPECTED_ERROR');\r\n }\r\n\r\n } else {\r\n this.$backendMessage.set('API_ERROR');\r\n }\r\n });\r\n }\r\n\r\n\r\n // 🔁 Reactive bindings\r\n $inputSections = signal<ICoreFormSection[]>([\r\n {\r\n rows: [\r\n [\r\n {\r\n field: 'id',\r\n controlType: EnumFormBaseContolType.TEXTBOX,\r\n type: 'string',\r\n flexSize: 0,\r\n hidden: true,\r\n label: '',\r\n value: ''\r\n }\r\n ]\r\n ]\r\n }\r\n ]);\r\n $workflow = this.wfs.$currentFlow;\r\n $afInstance = signal<IAfInstance | undefined>(undefined);\r\n $customButtons = signal<string[] | undefined>(undefined);\r\n $normalMode = signal<boolean | undefined>(undefined);\r\n $submitApi = signal<string | undefined>(undefined);\r\n\r\n $inputSectionsJson = computed(() => {\r\n const clean = this.js.safeTransform(this.$inputSections()).obj;\r\n return JSON.stringify(clean, null, 2);\r\n })\r\n\r\n //removeSignalKeysDeep = this.coreFormDesignService.removeSignalKeysDeep;\r\n\r\n $afInstanceJson = computed(() => {\r\n const instance = this.$afInstance();\r\n //const cleanedInstance = this.removeSignalKeysDeep(instance).obj; // Remove signals or $ fields\r\n const cleanedInstance = this.js.safeTransform(instance).obj; // Remove signals or $ fields\r\n return JSON.stringify(cleanedInstance, null, 2);\r\n\r\n });\r\n\r\n $wfWorkflowJson = computed(() => {\r\n const workflow = this.$workflow();\r\n //const cleanedInstance = this.removeSignalKeysDeep(workflow).obj; // Remove signals or $ fields\r\n const cleanedInstance = this.js.safeTransform(workflow).obj; // Remove signals or $ fields\r\n return JSON.stringify(cleanedInstance, null, 2);\r\n\r\n });\r\n\r\n mode$: BehaviorSubject<EnumCorePageEditMode> = new BehaviorSubject<EnumCorePageEditMode>(EnumCorePageEditMode.CREATE);\r\n\r\n checkError$ = this.wfs.liveFormCheckError$;\r\n\r\n override ngOnInit(): void {\r\n this.subscriptions.push(\r\n this.mls.lang$.subscribe(x => this.lang = x)\r\n )\r\n\r\n // Get query param ?preview=true\r\n const preview = this.route.snapshot.queryParamMap.get('preview');\r\n const isPreviewMode = preview === 'true';\r\n this.$previewMode.set(isPreviewMode);\r\n\r\n if (isDevMode()) {\r\n this.applicationHelpService.activeKey$.pipe(\r\n distinctUntilChanged()\r\n ).subscribe(x => {\r\n switch (x) {\r\n case 'F3':\r\n this.$showAfInstanceJson.set(true);\r\n break;\r\n case 'F6':\r\n this.$showWfWorkflowJson.set(true);\r\n break\r\n case 'Escape':\r\n this.$showAfInstanceJson.set(false);\r\n this.$showWfWorkflowJson.set(false);\r\n break;\r\n }\r\n })\r\n }\r\n\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n\r\n if (!this.$designMode() && !this.$previewMode()) {\r\n\r\n if (!!this.workflowId) {\r\n setTimeout(() => {\r\n\r\n this.subscriptions.push(\r\n this.wfs.loadWorkflowWithAfInstance(this.workflowId!).pipe(\r\n tap(_ => this.$loading.set(true)),\r\n catchError(err => {\r\n return of(err)\r\n }),\r\n finalize(() => this.$loading.set(false))\r\n\r\n ).subscribe(x => {\r\n this.$loading.set(false);\r\n if (x.ok && x.status === 200 && x.body?.statusCode === 200) {\r\n const workflow: IWfWorkflow = x.body.innerBody;\r\n\r\n this.$workflow.set(workflow);\r\n\r\n if (workflow.afInstanceDTO) {\r\n const afInstanceDto = workflow.afInstanceDTO;\r\n const instance = this.coreFormDesignService.mapFromAfInstanceDTO(afInstanceDto);\r\n\r\n instance.sections = this.coreFormDesignService.toCoreFormSections(instance.formDesignSections)\r\n\r\n this.$afInstance.set(instance);\r\n\r\n console.log(\"this.$inputSections being merged wuth:\", instance.sections);\r\n\r\n this.$inputSections.set([...instance.sections, ...this.$inputSections()]);\r\n\r\n this.$normalMode.set(instance.normalMode);\r\n this.$submitApi.set(instance.submitApi);\r\n\r\n this.coreFormDesignService.$afInstance.set(instance);\r\n\r\n this.clearInjectedFields();\r\n\r\n if (!this.$reactMode()) {\r\n this.addKickOffInjectedFields();\r\n }\r\n\r\n }\r\n\r\n }\r\n })\r\n )\r\n\r\n })\r\n }\r\n\r\n } else {\r\n\r\n this.$afInstance.set(this.coreFormDesignService.$afInstance());\r\n console.log(\"sections in ngAfterViewInit when !this.workflowId, being set\", this.coreFormDesignService.$afInstance().sections)\r\n this.$inputSections.set(this.coreFormDesignService.$afInstance().sections ?? []);\r\n this.$customButtons.set(this.coreFormDesignService.$afInstance().customFormButtonItems ?? []);\r\n this.$normalMode.set(this.coreFormDesignService.$afInstance().normalMode);\r\n this.$submitApi.set(this.coreFormDesignService.$afInstance().submitApi);\r\n\r\n this.clearInjectedFields();\r\n if (this.$reactMode()) {\r\n //this.addReactInjectedFields();\r\n } else {\r\n this.addKickOffInjectedFields();\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n onLiveFormCreated(e: any): void {\r\n const form: FormGroup = e.formGroup;\r\n this.$form.set(form);\r\n this.wfs.liveForm = form;\r\n\r\n if (!this.$reactMode()) {\r\n this.wfs.liveForm.get('___submitOnBehalf')?.valueChanges.subscribe(x => {\r\n const inputSections = this.$inputSections();\r\n const targetCtrl = this.coreFormService.getFormBaseControlByName(inputSections, '___targetEmployees');\r\n\r\n if (targetCtrl) {\r\n targetCtrl.hidden = !x;\r\n this.$inputSections.set([...inputSections]);\r\n\r\n // Optional: restore current form values without triggering another valueChanges loop\r\n const currentValue = this.cfs.getAttributesWithWys(this.wfs.liveForm);\r\n console.log(\"onLiveFormCreated\", currentValue)\r\n setTimeout(() => {\r\n this.wfs.liveForm.patchValue({\r\n ___submitOnBehalf: x // ensure value stays intact\r\n }, { emitEvent: false });\r\n if (!x && targetCtrl) {\r\n this.wfs.liveForm.patchValue({ ___targetEmployees: null }, { emitEvent: false });\r\n }\r\n });\r\n }\r\n });\r\n\r\n }\r\n\r\n }\r\n\r\n onLiveSubmit(e: any): void {\r\n\r\n if (!this.wfs.liveForm.valid) {\r\n this.checkError$.next(true);\r\n return;\r\n }\r\n\r\n if (!!this.$submitApi()) {\r\n const payload = this.generateSubmitDto();\r\n\r\n this.$loading.set(true);\r\n this.subscriptions.push(\r\n this.appService.postFullUrl(this.$submitApi()!, payload).pipe(\r\n catchError(err => {\r\n this.$loading.set(false);\r\n return of(err);\r\n })\r\n ).subscribe(x => {\r\n this.$loading.set(false);\r\n if (x.ok && x.status === 200 && x.body?.statusCode === 200) {\r\n // MILESTONE!\r\n }\r\n })\r\n )\r\n\r\n }\r\n }\r\n\r\n onClose(): void {\r\n if (this.$designMode()) {\r\n this.$onClose.emit();\r\n } else {\r\n if (!!this.$afInstance()?.normalMode) {\r\n\r\n } else {\r\n if (this.$previewMode()) {\r\n this.router.navigate(\r\n [\r\n {\r\n outlets: { preview: null }\r\n }\r\n ],\r\n { relativeTo: this.route.parent }\r\n );\r\n } else {\r\n this.router.navigate([\r\n '/root/workflow/workflow-consume',\r\n { outlets: { workflowConsume: null } }\r\n ]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n addKickOffInjectedFields(): void {\r\n\r\n const workflow = this.$workflow();\r\n const current = this.$inputSections();\r\n const sections = [...current];\r\n\r\n sections.push({\r\n rows: [\r\n [\r\n {\r\n field: '___submitterEmployeeId',\r\n flexSize: 12,\r\n type: 'number',\r\n controlType: EnumFormBaseContolType.SEEKER,\r\n seekerSourceType: EnumCoreFormControlSeekerSourceType.EMPLOYEE_SEEK,\r\n getByIdApi: '',\r\n getByIdObject$: new BehaviorSubject<any>({}),\r\n label: 'Simulated Requester',\r\n boundFrom: 'id',\r\n shownFrom: 'fullname',\r\n value: null,\r\n validators: [\r\n {\r\n name: 'required',\r\n validator: Validators.required,\r\n errorMessage: 'Simulated ___submitterEmployeeId required'\r\n }\r\n ]\r\n },]\r\n ]\r\n })\r\n\r\n if (!!workflow && !!workflow.allowCustomCc) {\r\n sections.push({\r\n rows:\r\n [\r\n [\r\n {\r\n field: \"___customCcs\",\r\n type: \"text\",\r\n value: '',\r\n label: \"UI_FORM_CONTROL_LABEL.CUSTOM_CCS\",\r\n flexSize: 12,\r\n controlType: EnumFormBaseContolType.TEXTAREA,\r\n textareaRows: 3,\r\n validators: [\r\n {\r\n name: 'pattern',\r\n validator: Validators.pattern(\r\n /^(\\s*[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}\\s*;)*\\s*[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}\\s*$/\r\n ),\r\n errorMessage: \"Please enter a list of email addresses separated by semicolons (;)\"\r\n }\r\n ]\r\n }\r\n ]\r\n\r\n ]\r\n })\r\n }\r\n\r\n if (!!this.$onBehalfMode()) {\r\n\r\n sections.push({\r\n rows:\r\n [\r\n [\r\n {\r\n field: \"___submitOnBehalf\",\r\n type: \"boolean\",\r\n hint: 'If enabled, users can submit this workflow request on behalf of other employees.',\r\n value: '',\r\n label: \"UI_FORM_CONTROL_LABEL.SUBMIT_ON_BEHALF\",\r\n flexSize: 12,\r\n controlType: EnumFormBaseContolType.CHECKBOX,\r\n }\r\n ],\r\n [\r\n {\r\n field: \"___targetEmployees\",\r\n type: \"object\",\r\n value: null,\r\n label: \"UI_FORM_CONTROL_LABEL.TARGET_EMPLOYEES\",\r\n hidden: true,\r\n flexSize: 12,\r\n controlType: EnumFormBaseContolType.SEEKER,\r\n seekerSourceType: EnumCoreFormControlSeekerSourceType.EMPLOYEE_SEEK,\r\n multiMode: true,\r\n }\r\n ],\r\n ]\r\n })\r\n\r\n }\r\n\r\n this.$inputSections.set(sections);\r\n\r\n }\r\n\r\n clearInjectedFields(): void {\r\n const original = this.$inputSections();\r\n if (!original || !original.length) return;\r\n\r\n // Tạo bản sao deep để tránh mutate sai\r\n const cleaned = original\r\n .map(section => {\r\n\r\n // deep clone rows\r\n const newRows = (section.rows || [])\r\n .map(row =>\r\n row.filter(ctrl => !ctrl.field.startsWith('___')) // remove injected\r\n )\r\n .filter(row => row.length > 0); // remove empty rows\r\n\r\n // Nếu rows rỗng → bỏ luôn section\r\n if (!newRows.length) return null;\r\n\r\n return {\r\n ...section,\r\n rows: newRows\r\n };\r\n })\r\n .filter(x => x !== null) as any[];\r\n\r\n this.$inputSections.set(cleaned);\r\n }\r\n\r\n react(reactType: string): void {\r\n const context = this.$workflowReactContext();\r\n if (!context) {\r\n this.alertService.error(\"NO_CONTEXT_FOUND\");\r\n return;\r\n }\r\n const { workflow, instance, step, actor } = context;\r\n const unitedCorrelationIds = `${workflow.id}___${instance.correlationId}___${step.id}___${actor.id}`;\r\n const updatedAttributes = this.cfs.getAttributesWithWys(this.$form()!);\r\n\r\n this.$loading.set(true);\r\n this.subscriptions.push(\r\n this.wfs.react(unitedCorrelationIds, reactType, \"\", updatedAttributes).pipe(\r\n catchError(err => {\r\n this.$loading.set(false);\r\n return of(err);\r\n })\r\n ).subscribe(x => {\r\n this.$loading.set(false);\r\n if (x.ok && x.status === 200 && x.body?.statusCode === 200) {\r\n\r\n }\r\n })\r\n )\r\n }\r\n\r\n applyFormUi(\r\n sections: ICoreFormSection[],\r\n formUi: IStepFormConfig[\"formUi\"]\r\n ): ICoreFormSection[] {\r\n if (!sections || !formUi) return sections;\r\n\r\n const hidden = formUi.hidden ?? {};\r\n const readonly = formUi.readonly ?? {};\r\n const required = formUi.required ?? {};\r\n\r\n console.log(\"[applyFormUi] hidden\", hidden);\r\n console.log(\"[applyFormUi] readonly\", readonly);\r\n console.log(\"[applyFormUi] required\", required);\r\n\r\n const sectionsTransformed = sections.map(sec => ({\r\n ...sec,\r\n rows: sec.rows.map(row =>\r\n row.map(ctrl => {\r\n const c = { ...ctrl };\r\n const key = c.field;\r\n\r\n // 1) Hidden\r\n if (hidden[key]) {\r\n c.hidden = true;\r\n return c;\r\n }\r\n\r\n // 2) Readonly\r\n if (readonly[key]) {\r\n c.readonly = true;\r\n c.disabled = true;\r\n }\r\n\r\n // 3) Required\r\n if (required[key]) {\r\n c.validators = [\r\n ...(c.validators ?? []),\r\n {\r\n name: 'required',\r\n validator: Validators.required,\r\n errorMessage: `${c.label ?? c.field} is required`\r\n }\r\n ];\r\n } else {\r\n // remove required if exists (optional)\r\n c.validators = (c.validators ?? []).filter(v => v.name !== 'required');\r\n }\r\n\r\n return c;\r\n })\r\n )\r\n }));\r\n\r\n console.log(\"[applyFormUi] sectionsTransformed\", sectionsTransformed);\r\n\r\n return sectionsTransformed;\r\n }\r\n\r\n override ngOnDestroy(): void {\r\n this.subscriptions.forEach(x => x?.unsubscribe());\r\n this.clearInjectedFields()\r\n }\r\n\r\n\r\n}\r\n","<div class=\"live-form-container\" [hotKeys]=\"['F3', 'F6', 'Escape']\">\r\n\r\n @if ($normalMode()) {\r\n <div class=\"form-wrapper live-form\" [ngStyle]=\"{\r\n width: !!coreFormDesignService.$afInstance().width ? coreFormDesignService.$afInstance().width + 'px' : 'unset'\r\n }\">\r\n <div class=\"live-form-header\">\r\n <core-page-header [title]=\"coreFormDesignService.$afInstance().captionCode | translate : lang\" [hideButtonGroup]=\"true\"></core-page-header>\r\n </div>\r\n\r\n <core-form\r\n [inputSections]=\"$effectiveSections()\"\r\n [customFormButtonItems]=\"$customButtons()!\"\r\n [forceCreateNewForm]=\"true\"\r\n [mode$]=\"mode$\"\r\n [hideButtons]=\"$previewMode()\"\r\n [hideCalculatedSection]=\"true\"\r\n [hideDevSector]=\"true\"\r\n [bottomTemplateRef]=\"bottomTemplateRef\"\r\n [buttonGroupTemplateRef]=\"buttonGroupTemplateRef\"\r\n [checkError$]=\"checkError$\"\r\n (onSubmit)=\"onLiveSubmit($event)\"\r\n (onFormCreated)=\"onLiveFormCreated($event)\"\r\n (onCancal)=\"onClose()\"\r\n />\r\n\r\n @if ($previewMode()) {\r\n <div class=\"show-routing-wrapper\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"toggleShowRouting()\">\r\n {{ $showLiveRouting() ? 'Hide Routing' : 'Show Routing' }}\r\n </button>\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n <div class=\"routing-preview-wrapper\" [class.visible]=\"$showLiveRouting()\">\r\n @if ($showLiveRouting()) {\r\n <routing-preview-panel />\r\n }\r\n </div>\r\n\r\n\r\n } @else {\r\n <div class=\"modal-container\">\r\n <div class=\"modal-content-root no-padding\">\r\n\r\n <div class=\"form-wrapper live-form\" [class.d-none]=\"$showLiveRouting()\" [ngStyle]=\"{\r\n width: !!coreFormDesignService.$afInstance().width ? coreFormDesignService.$afInstance().width + 'px' : 'unset'\r\n }\">\r\n\r\n <div class=\"live-form-header\">\r\n <core-page-header [title]=\"coreFormDesignService.$afInstance().captionCode | translate : lang\" [hideButtonGroup]=\"true\" />\r\n <div class=\"preview-close-icon\" (click)=\"onClose()\">\r\n <i class=\"feather-x\"></i>\r\n </div>\r\n </div>\r\n\r\n <core-form\r\n [inputSections]=\"$effectiveSections()\"\r\n [customFormButtonItems]=\"$customButtons()!\"\r\n [forceCreateNewForm]=\"true\"\r\n [hideCalculatedSection]=\"true\"\r\n [mode$]=\"mode$\"\r\n [hideButtons]=\"$previewMode()\"\r\n [bottomTemplateRef]=\"bottomTemplateRef\"\r\n [buttonGroupTemplateRef]=\"buttonGroupTemplateRef\"\r\n [hideDevSector]=\"false\"\r\n [checkError$]=\"checkError$\"\r\n (onSubmit)=\"onLiveSubmit($event)\"\r\n (onFormCreated)=\"onLiveFormCreated($event)\"\r\n (onCancal)=\"onClose()\"\r\n />\r\n\r\n <div class=\"submition-wrapper\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"toggleShowRouting()\">\r\n {{ $showLiveRouting() ? 'Hide Routing' : 'Show Routing' }}\r\n </button>\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"initialSubmit()\">\r\n Submit \r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"routing-preview-wrapper\" [class.visible]=\"$showLiveRouting()\">\r\n @if ($showLiveRouting()) {\r\n <div class=\"h50\"></div>\r\n <routing-preview-panel [$minWidth]=\"coreFormDesignService.$afInstance().width\"/>\r\n <div class=\"h50\"></div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n <ng-template #bottomTemplateRef>\r\n <!-- <pre [ngStyle]=\"{ maxWidth: !!$afInstance()?.width ? $afInstance()?.width! + 'px' : 'unset'}\">{{ $inputSectionsJson() }}</pre> -->\r\n <!-- @if (isDevMode) {\r\n <p class=\"dev-hint\">F3/ESC: Show/Hide afInstance | F6/ESC: Show/Hide Workflow</p>\r\n } -->\r\n @if ($showAfInstanceJson()) {\r\n <pre [ngStyle]=\"{ maxWidth: !!$afInstance()?.width ? $afInstance()?.width! + 'px' : 'unset'}\">{{ $afInstanceJson() }}</pre>\r\n }\r\n @if ($showWfWorkflowJson()) {\r\n <pre [ngStyle]=\"{ maxWidth: !!$afInstance()?.width ? $afInstance()?.width! + 'px' : 'unset'}\">{{ $wfWorkflowJson() }}</pre>\r\n }\r\n </ng-template>\r\n\r\n <ng-template #buttonGroupTemplateRef>\r\n <div class=\"button-group\">\r\n <div class=\"button-group-left\"></div>\r\n <div class=\"button-group-right\">\r\n @if ($reactMode()) {\r\n @if (true) {\r\n <button type=\"button\" class=\"btn btn-secondary\">Cancel</button> \r\n }\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"react('REJECTED')\">Reject</button>\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"react('APPROVED')\">Approve</button>\r\n } @else {\r\n <button type=\"button\" class=\"btn btn-secondary\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary\">Send Request</button>\r\n }\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n</div>"],"names":["i1.MultiLanguageService","i2.CoreFormService"],"mappings":"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"}
|
|
@@ -9261,6 +9261,7 @@ class CoreWorkflowService {
|
|
|
9261
9261
|
this.$currentSteps.set(steps);
|
|
9262
9262
|
}
|
|
9263
9263
|
loadByIdWithAfInstance(workflowId) {
|
|
9264
|
+
console.log("loadByIdWithAfInstance...");
|
|
9264
9265
|
if (workflowId !== '0') {
|
|
9265
9266
|
this.$loading.set(true);
|
|
9266
9267
|
this.subscriptions.push(this.appService.get(`/api/WfWorkflow/GetByIdWithAfInstance?id=${workflowId}`).pipe(filter(_ => workflowId !== '0'), catchError$1(err => {
|
|
@@ -9270,6 +9271,7 @@ class CoreWorkflowService {
|
|
|
9270
9271
|
this.$loading.set(false);
|
|
9271
9272
|
if (x.ok && x.status === 200 && x.body?.statusCode === 200) {
|
|
9272
9273
|
const workflow = x.body.innerBody;
|
|
9274
|
+
console.log("loadByIdWithAfInstance", workflow);
|
|
9273
9275
|
this.$currentFlow.set(workflow);
|
|
9274
9276
|
this.basicInfoForm.patchValue(workflow);
|
|
9275
9277
|
this.emailTemplatesForm.patchValue(workflow);
|
|
@@ -31883,7 +31885,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
31883
31885
|
const hrmSchemaRoutes = [
|
|
31884
31886
|
{
|
|
31885
31887
|
path: '',
|
|
31886
|
-
loadComponent: () => import('./ngx-histaff-alpha-hrm-schema.component-
|
|
31888
|
+
loadComponent: () => import('./ngx-histaff-alpha-hrm-schema.component-BJZOW5Wi.mjs').then(m => m.HrmSchemaComponent)
|
|
31887
31889
|
}
|
|
31888
31890
|
];
|
|
31889
31891
|
|
|
@@ -34056,7 +34058,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
34056
34058
|
const simpleChatRoutes = [
|
|
34057
34059
|
{
|
|
34058
34060
|
path: '',
|
|
34059
|
-
loadComponent: () => import('./ngx-histaff-alpha-simple-chat.component-
|
|
34061
|
+
loadComponent: () => import('./ngx-histaff-alpha-simple-chat.component-CtnJMX2M.mjs').then(m => m.SimpleChatComponent)
|
|
34060
34062
|
}
|
|
34061
34063
|
];
|
|
34062
34064
|
|
|
@@ -34722,7 +34724,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
34722
34724
|
const coreSysActionRoutes = [
|
|
34723
34725
|
{
|
|
34724
34726
|
path: "",
|
|
34725
|
-
loadComponent: () => import('./ngx-histaff-alpha-core-sys-action.component-
|
|
34727
|
+
loadComponent: () => import('./ngx-histaff-alpha-core-sys-action.component-GIciqrnf.mjs').then(m => m.CoreSysActionComponent),
|
|
34726
34728
|
children: [
|
|
34727
34729
|
{
|
|
34728
34730
|
path: ":id",
|
|
@@ -38426,11 +38428,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
38426
38428
|
const coreDocGenRoutes = [
|
|
38427
38429
|
{
|
|
38428
38430
|
path: 'template-list',
|
|
38429
|
-
loadComponent: () => import('./ngx-histaff-alpha-template-list.component-
|
|
38431
|
+
loadComponent: () => import('./ngx-histaff-alpha-template-list.component-BysOT_8n.mjs').then(m => m.TemplateListComponent),
|
|
38430
38432
|
},
|
|
38431
38433
|
{
|
|
38432
38434
|
path: ":id",
|
|
38433
|
-
loadComponent: () => import('./ngx-histaff-alpha-core-template-editor.component-
|
|
38435
|
+
loadComponent: () => import('./ngx-histaff-alpha-core-template-editor.component-XwgAdRVH.mjs').then(m => m.CoreTemplateEditorComponent),
|
|
38434
38436
|
canDeactivate: [CanDeactivateGuard]
|
|
38435
38437
|
},
|
|
38436
38438
|
{
|
|
@@ -38459,7 +38461,7 @@ const coreFormDesignRoutes = [
|
|
|
38459
38461
|
},
|
|
38460
38462
|
{
|
|
38461
38463
|
path: ':id',
|
|
38462
|
-
loadComponent: () => import('./ngx-histaff-alpha-core-form-design.component-
|
|
38464
|
+
loadComponent: () => import('./ngx-histaff-alpha-core-form-design.component-CTrNNE7-.mjs').then(m => m.CoreFormDesignComponent)
|
|
38463
38465
|
}
|
|
38464
38466
|
];
|
|
38465
38467
|
|
|
@@ -39370,7 +39372,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
39370
39372
|
const coreNavigationTrackerRoutes = [
|
|
39371
39373
|
{
|
|
39372
39374
|
path: '',
|
|
39373
|
-
loadComponent: () => import('./ngx-histaff-alpha-tracker-studio.component-
|
|
39375
|
+
loadComponent: () => import('./ngx-histaff-alpha-tracker-studio.component-D9L1y1k0.mjs').then(m => m.TrackerStudioComponent)
|
|
39374
39376
|
}
|
|
39375
39377
|
];
|
|
39376
39378
|
|
|
@@ -41738,33 +41740,33 @@ const coreWorkflowRoutes = [
|
|
|
41738
41740
|
{
|
|
41739
41741
|
path: 'form-assign/:id',
|
|
41740
41742
|
outlet: "formAssignAux",
|
|
41741
|
-
loadComponent: () => import('./ngx-histaff-alpha-wf-form-assign.component-
|
|
41743
|
+
loadComponent: () => import('./ngx-histaff-alpha-wf-form-assign.component-BACGd2Yk.mjs').then(m => m.WfFormAssignComponent),
|
|
41742
41744
|
canDeactivate: [CanDeactivateGuard]
|
|
41743
41745
|
}
|
|
41744
41746
|
]
|
|
41745
41747
|
},
|
|
41746
41748
|
{
|
|
41747
41749
|
path: 'global-config',
|
|
41748
|
-
loadComponent: () => import('./ngx-histaff-alpha-wf-global-config.component-
|
|
41750
|
+
loadComponent: () => import('./ngx-histaff-alpha-wf-global-config.component-ABO46891.mjs').then(m => m.WfGlobalConfigComponent)
|
|
41749
41751
|
},
|
|
41750
41752
|
{
|
|
41751
41753
|
path: 'db-settings',
|
|
41752
|
-
loadComponent: () => import('./ngx-histaff-alpha-db-settings.component-
|
|
41754
|
+
loadComponent: () => import('./ngx-histaff-alpha-db-settings.component-aOgA1qSq.mjs').then(m => m.DbSettingsComponent)
|
|
41753
41755
|
},
|
|
41754
41756
|
{
|
|
41755
41757
|
path: 'workflow-consume',
|
|
41756
|
-
loadComponent: () => import('./ngx-histaff-alpha-core-workflow-consume.component-
|
|
41758
|
+
loadComponent: () => import('./ngx-histaff-alpha-core-workflow-consume.component-BP8zuxYQ.mjs').then(m => m.CoreWorkflowConsumeComponent),
|
|
41757
41759
|
children: [
|
|
41758
41760
|
{
|
|
41759
41761
|
path: ':id',
|
|
41760
41762
|
outlet: "workflowConsume",
|
|
41761
|
-
loadComponent: () => import('./ngx-histaff-alpha-live-form.component-
|
|
41763
|
+
loadComponent: () => import('./ngx-histaff-alpha-live-form.component-x08G6uI3.mjs').then(function (n) { return n.l; }).then(m => m.LiveFormComponent),
|
|
41762
41764
|
}
|
|
41763
41765
|
]
|
|
41764
41766
|
},
|
|
41765
41767
|
{
|
|
41766
41768
|
path: 'workflow-consume/:id',
|
|
41767
|
-
loadComponent: () => import('./ngx-histaff-alpha-live-form.component-
|
|
41769
|
+
loadComponent: () => import('./ngx-histaff-alpha-live-form.component-x08G6uI3.mjs').then(function (n) { return n.l; }).then(m => m.LiveFormComponent),
|
|
41768
41770
|
},
|
|
41769
41771
|
{
|
|
41770
41772
|
path: 'workflow-group-edit/:id',
|
|
@@ -41774,21 +41776,21 @@ const coreWorkflowRoutes = [
|
|
|
41774
41776
|
},
|
|
41775
41777
|
{
|
|
41776
41778
|
path: 'design/:id',
|
|
41777
|
-
loadChildren: () => import('./ngx-histaff-alpha-design-wrapper.route-
|
|
41779
|
+
loadChildren: () => import('./ngx-histaff-alpha-design-wrapper.route-DQoOPQge.mjs').then(m => m.wfDesignWrapperRoutes),
|
|
41778
41780
|
},
|
|
41779
41781
|
]
|
|
41780
41782
|
},
|
|
41781
41783
|
{
|
|
41782
41784
|
path: 'react/:id',
|
|
41783
|
-
loadComponent: () => import('./ngx-histaff-alpha-wf-instance-step-react.component-
|
|
41785
|
+
loadComponent: () => import('./ngx-histaff-alpha-wf-instance-step-react.component-D2FW3Uk6.mjs').then(m => m.WfInstanceStepReactComponent)
|
|
41784
41786
|
},
|
|
41785
41787
|
{
|
|
41786
41788
|
path: 'status/:id',
|
|
41787
|
-
loadComponent: () => import('./ngx-histaff-alpha-wf-instance-status.component-
|
|
41789
|
+
loadComponent: () => import('./ngx-histaff-alpha-wf-instance-status.component-CJj_SSmd.mjs').then(m => m.WfInstanceStatusComponent)
|
|
41788
41790
|
},
|
|
41789
41791
|
{
|
|
41790
41792
|
path: 'lab',
|
|
41791
|
-
loadComponent: () => import('./ngx-histaff-alpha-wf-lab.component-
|
|
41793
|
+
loadComponent: () => import('./ngx-histaff-alpha-wf-lab.component-Ci9x7286.mjs').then(m => m.WfLabComponent)
|
|
41792
41794
|
}
|
|
41793
41795
|
];
|
|
41794
41796
|
|
|
@@ -44414,4 +44416,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
44414
44416
|
*/
|
|
44415
44417
|
|
|
44416
44418
|
export { READONLY_WORKFLOW_FIELDS as $, AppService as A, BaseComponent as B, ChatService as C, DragReorderDirective as D, EnumCoreTablePipeType as E, FullscreenModalLoaderComponent as F, CoreDropdownComponent as G, CoreChecklistComponent as H, ImageErrorResolverDirective as I, CoreDatePickerComponent as J, CoreFormControlSeekerComponent as K, CoreCurrencyInputComponent as L, MultiLanguageService as M, EnumActorSourceType as N, CoreParamControlComponent as O, CoreRadioGroupComponent as P, GptService as Q, CoreStickerCollectionComponent as R, StringHtmlPipe as S, TooltipDirective as T, ApplicationHelpService as U, HotKeysDirective as V, EnumCorePageEditMode as W, CoreFormComponent as X, NavigatorService as Y, JsonService as Z, EnumCoreButtonVNSCode as _, AppConfigService as a, CommonHttpRequestService as a$, noneAutoClosedAlertOptions as a0, CoreButtonGroupVnsComponent as a1, EnumFilterOperator as a2, HtmlTooltipDirective as a3, CoreControlNoFormArrayComponent as a4, EnumFormDesignMode as a5, CoreControlComponent as a6, JsonSafePipe as a7, CoreAttachmentComponent as a8, CoreMonthSelectorComponent as a9, EnumSortDirection as aA, EnumStyleButtonClass as aB, CanActivateFunctionUrlMapperGuard as aC, InitializationCanActivateFn as aD, InitializationCanMatchFn as aE, httpInterceptorProviders as aF, InterceptorSkipHeader as aG, appTypeInterceptor as aH, baseUrlInterceptor as aI, authInterceptor as aJ, graphInterceptor as aK, tokenInterceptor as aL, responseInterceptor as aM, timeZoneInterceptor as aN, cachingInterceptor as aO, langInterceptor as aP, OnlineUsersComponent as aQ, ActionService as aR, AppInitializationService as aS, AuthService as aT, CacheService as aU, EnumSwUpdateVersionUpdatesEventType as aV, CheckForUpdateService as aW, EnumDeviceType as aX, EnumBrowserType as aY, EnumOsType as aZ, ClientService as a_, EnumImageResolverType as aa, NormalizeHumanNamePipe as ab, CoreIosSwitcherComponent as ac, SunnyRotatingComponent as ad, MapAppdemoToServerPipePipe as ae, MapAttachmentToServerPipe as af, MapNewsfeedMediaToServerPipe as ag, UploadedFilenameCutoffPipe as ah, DialogStateComponent as ai, FooterComponent as aj, RightchatComponent as ak, WaittingScreenComponent as al, longAlertOptions as am, attachmentOptions as an, CORE_VNS_BUTTONS as ao, defaultPaging as ap, DESKTOP_SCREEN_HEDER_HEIGHT as aq, MOBILE_SCREEN_HEDER_HEIGHT as ar, themeBlue as as, DATE_VALUE_ACCESSOR as at, DateValueAccessor as au, EnumDragType as av, EnumErrorType as aw, EnumIconClass as ax, EnumProfileInfoSector as ay, EnumSignalRType as az, AlertService as b, MutationViewComponent as b$, TLA_CONFIG as b0, ConfigService as b1, CoreTableService as b2, DndService as b3, DocxMergeService as b4, FilterKitService as b5, GrpcService as b6, HeaderService as b7, HistoryService as b8, HttpErrorHandler as b9, TopicPermissionService as bA, TopicTreeService as bB, UploadedFileService as bC, UrlService as bD, UserActivityService as bE, EvaluateDialogService as bF, EnumWorkScheduleViewMode as bG, WorkShiftDndService as bH, AtShiftPatternComponent as bI, AtShiftPatternApplyComponent as bJ, AtShiftPatternEditComponent as bK, AtWorksignComponent as bL, AtWorksignService as bM, FunctionComponent as bN, IndividualScheduleApplyComponent as bO, FunctionEditComponent as bP, FunctionIgnoreComponent as bQ, FunctionIgnoreEditComponent as bR, GroupFunctionComponent as bS, GroupFunctionEditComponent as bT, hrmSchemaRoutes as bU, InMemoryComponent as bV, LanguageComponent as bW, LanguageEditComponent as bX, MenuComponent as bY, MenuEditComponent as bZ, MutationLogComponent as b_, HubConnectionService as ba, IpServiceService as bb, LayoutService as bc, LiquidJsService as bd, MapService as be, MenuService as bf, MessageService as bg, ModalService as bh, OrganizationService as bi, PkceService as bj, PositionTransferService as bk, EnumNotificationDir as bl, NotificationActionType as bm, PushNotificationService as bn, RandomAvatarService as bo, RequestCache as bp, RequestCacheWithMap as bq, ResponseService as br, RoutingService as bs, EnumSsrsExpressFileExtension as bt, EnumSsrsExpressExportFormat as bu, SsrsExpressService as bv, StatisticService as bw, StatisticAuthService as bx, SysMenuService as by, TimeSheetService as bz, CoreTerminalSpinnerComponent as c, coreDocGenRoutes as c$, PaSalaryPolicyComponent as c0, PaSalaryPolicyEditComponent as c1, PortalRouteComponent as c2, ScheduleOverviewComponent as c3, simpleChatRoutes as c4, PortalRouteEditComponent as c5, SysOtherListComponent as c6, SysOtherListEditComponent as c7, SysOtherListTypeComponent as c8, SysOtherListTypeEditComponent as c9, CoreActiveUserCountComponent as cA, NewlyCreatedTokenService as cB, CoreApiProgressComponent as cC, CoreButtonGroupComponent as cD, EnumCoreButtonCode as cE, ActionSvgEditComponent as cF, CoreButtonGroupService as cG, CoreButtonVnsComponent as cH, CoreComTreeComponent as cI, ComPartyService as cJ, CoreCommonParamKitComponent as cK, CoreCompareDbPipelineComponent as cL, CoreCompositionState as cM, CoreCompositionService as cN, CoreCompositionComponent as cO, CoreConfirmDialogComponent as cP, ConfirmDialogStateComponent as cQ, CoreLazyMountComponent as cR, CoreRootMenuItemPickerComponent as cS, CoreRootMenuItemPickerService as cT, ECoreTableToolCode as cU, ECoreTableToolClass as cV, CoreTableComponent as cW, CoreComProfileComponent as cX, CoreContractSeekerComponent as cY, CoreControlNoGridBufferComponent as cZ, CoreControlNoSeekerComponent as c_, coreSysActionRoutes as ca, SysActionComponent as cb, SysActionEditComponent as cc, SysFunctionActionComponent as cd, SysFunctionActionEditComponent as ce, SysFunctionActionMapperComponent as cf, SysFunctionUrlMapperComponent as cg, FunctionEditService as ch, SysModuleComponent as ci, SysModuleEditComponent as cj, SysRouteAccessComponent as ck, liner_to_nested_array_script as cl, blob_to_base64_script as cm, AlertComponent as cn, EnumAlertType as co, IAlertOptions as cp, AnimatedTextService as cq, AnimatedTextComponent as cr, BaseDropdownComponent as cs, ButtonGroupModule as ct, ButtonGroupService as cu, ButtonGroupComponent as cv, EnumButtonCaptionCode as cw, CoreButtonComponent as cx, CoreAccordionComponent as cy, CoreAccordionService as cz, CorePageHeaderComponent as d, CorePermissionService as d$, CoreDocgenToolbarComponent as d0, CoreEmployeeScheduleComponent as d1, CoreEmployeeSeekerComponent as d2, EnumCoreFileUploaderType as d3, CoreFileUploaderComponent as d4, CoreFilterHubComponent as d5, CoreFilterHubService as d6, ControlBase as d7, Textbox as d8, CoreControlService as d9, CoreNavigationTrackerComponent as dA, coreNavigationTrackerRoutes as dB, CoreOauthCallbackComponent as dC, CoreOauthCallbackOffice365Component as dD, EnumCoreOrgTreeaAccessorMode as dE, EnumCoreOrgTreeaSearchMode as dF, CoreOrgTreeComponent as dG, CoreOrgTreeState as dH, CoreOrgTreeService as dI, CoreOrgUnitSeekerComponent as dJ, CoreOrgchartflexComponent as dK, CoreOrgParamComponent as dL, EnumCorePageEditBootstrapClass as dM, EnumCorePageEditFieldType as dN, CorePageEditService as dO, CorePageEditLiteComponent as dP, CorePageEditTabComponent as dQ, EnumExType as dR, CorePageListService as dS, CorePageListState as dT, CorePageListContentComponent as dU, EnumCoreViewItemType as dV, CorePageViewComponent as dW, CorePaginationComponent as dX, CorePaginationFullComponent as dY, CorePaginationFullService as dZ, CoreFileFormatPickerComponent as d_, CustomValidators as da, URL_PATTERN as db, coreFormDesignRoutes as dc, CoreFormTabComponent as dd, CoreFormLiteComponent as de, CoreFormControlBaseComponent as df, EnumCoreSeekerColumnJob as dg, EnumCoreSeekerColumnStaffProfile as dh, EnumCoreSeekerColumnContract as di, EnumCoreSeekerColumnWorking as dj, EnumCoreSeekerColumnWage as dk, EnumCoreSeekerColumnPosition as dl, EnumCoreSeekerColumnPositionConcurrent as dm, EnumCoreSeekerColumnAutoForm as dn, SeekerService as dp, CoreGridBufferComponent as dq, CoreHeaderParamsComponent as dr, CoreHelperComponent as ds, CoreLineComponent as dt, CoreLiquidWysiwygComponent as du, CoreListComponent as dv, CoreListLazyComponent as dw, CoreLoadingSurfaceComponent as dx, CoreMccComponent as dy, CoreMonthPickerComponent as dz, TranslatePipe as e, LongTaskService as e$, EnumPermissionObjectType as e0, CorePermissionComponent as e1, CorePermissionActionsComponent as e2, CorePositionConcurrentSeekerComponent as e3, CorePositionSeekerComponent as e4, CoreQrcodeComponent as e5, EnumOparator as e6, CoreQueryBuilderComponent as e7, CoreReducerIconComponent as e8, CoreRotatingTextComponent as e9, CoreYearPickerComponent as eA, CoreYearSelectorComponent as eB, EnumCoreD3ScaleType as eC, CoreD3Service as eD, CorePieComponent as eE, CoreScatterPlotComponent as eF, EnumHrComparisonCode as eG, EnumICoreStatisticWidgetDataType as eH, CoreStatisticWidgetComponent as eI, DecisionComponent as eJ, EvaluateDialogComponent as eK, HuconcurrentlyComponent as eL, JobComponent as eM, LanguageChangerComponent as eN, DEFAULT_SVG as eO, ItemComponent as eP, NavigatorComponent as eQ, OtpInputComponent as eR, OtpInputService as eS, PageTitleComponent as eT, PaginationComponent as eU, FilterPipe as eV, normalizeHumanName as eW, PositionComponent as eX, PositionEditService as eY, CoreDatetimeService as eZ, FileService as e_, CoreRouteAccumulatorComponent as ea, CoreRoutingHistoryComponent as eb, CoreSalaryPolicyPickerComponent as ec, CoreScrollComponent as ed, CoreScrollLazyComponent as ee, CoreSeenByComponent as ef, CoreShiftCardComponent as eg, CoreShiftCellComponent as eh, CoreShiftCollectionComponent as ei, CoreShiftStickerComponent as ej, STICKER_COLOR_SCHEMA as ek, CoreStatusStickerComponent as el, CoreSubFormGroupComponent as em, CoreTabListComponent as en, CoreTagsComponent as eo, CoreTopicPickerComponent as ep, EnumCoreArticleCategoryTreeaAccessorMode as eq, CoreTopicTreeComponent as er, CoreTreeComponent as es, EnumCoreTreeGridEditMode as et, CoreTreeGridComponent as eu, CoreWageSeekerComponent as ev, CoreWorkingSeekerComponent as ew, coreWorkflowRoutes as ex, CoreWorkflowBuilderComponent as ey, CoreWorkflowGroupEditComponent as ez, CorePageListComponent as f, EnumRecursiveFields as f0, RecursiveService as f1, StringService as f2, UnicodeService as f3, StaffProfileComponent as f4, ThreedotsComponent as f5, TooltipComponent as f6, UserActivityComponent as f7, WageComponent as f8, tooltip_directive as f9, coreStickerCollection_component as fa, dragReorder_directive as fb, CoreCheckboxComponent as g, BaseEditComponent as h, EnumFormBaseContolType as i, DialogService as j, CorePageEditComponent as k, CoreTabsComponent as l, CoreWorkflowService as m, EnumCoreFormControlSeekerSourceType as n, CoreFormService as o, DbService as p, AiHintForColumnComponent as q, CoreWorkflowListComponent as r, CanDeactivateGuard as s, TableCellPipe as t, MapAvatarToServerPipe as u, alertOptions as v, SocketService as w, CoreFormDesignService as x, EnumWorkflowStepType as y, DomService as z };
|
|
44417
|
-
//# sourceMappingURL=ngx-histaff-alpha-ngx-histaff-alpha-
|
|
44419
|
+
//# sourceMappingURL=ngx-histaff-alpha-ngx-histaff-alpha-B4dw5BXZ.mjs.map
|