@acorex-platform/module-maintenance-management-client 0.0.56 → 0.0.57
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/{acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-Dqy4wGda.mjs → acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-6cXxZPN1.mjs} +434 -33
- package/fesm2022/acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-6cXxZPN1.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-maintenance-management-client-contracts-entities-maintenance-plan.mjs +234 -22
- package/fesm2022/acorex-platform-module-maintenance-management-client-contracts-entities-maintenance-plan.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-maintenance-management-client-contracts-entities-maintenance-template.mjs +2 -23
- package/fesm2022/acorex-platform-module-maintenance-management-client-contracts-entities-maintenance-template.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-maintenance-management-client-contracts-entities-maintenance-type.mjs +0 -23
- package/fesm2022/acorex-platform-module-maintenance-management-client-contracts-entities-maintenance-type.mjs.map +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-acorex-platform-module-maintenance-management-client-contracts-entity-catalog-DDAXs7ph.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-acorex-platform-module-maintenance-management-client-contracts-entity-catalog-CDwXJTyO.mjs} +27 -27
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-acorex-platform-module-maintenance-management-client-contracts-entity-catalog-DDAXs7ph.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-acorex-platform-module-maintenance-management-client-contracts-entity-catalog-CDwXJTyO.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-activity-type-asset-type.entity-6XjyRZy6.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-activity-type-asset-type.entity-BgNCJg1o.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-activity-type-asset-type.entity-6XjyRZy6.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-activity-type-asset-type.entity-BgNCJg1o.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-activity-type-resource.entity-Dcfl5o8o.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-activity-type-resource.entity-LY3WhspA.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-activity-type-resource.entity-Dcfl5o8o.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-activity-type-resource.entity-LY3WhspA.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-activity-type.entity-ChuV_aCW.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-activity-type.entity-DyXcIKqY.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-activity-type.entity-ChuV_aCW.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-activity-type.entity-DyXcIKqY.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-cause.entity-di-vjWEN.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-cause.entity-B93wAqPv.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-cause.entity-di-vjWEN.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-cause.entity-B93wAqPv.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-detection.entity-896J0GU8.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-detection.entity-Clc6RXxF.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-detection.entity-896J0GU8.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-detection.entity-Clc6RXxF.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-effect.entity-CRuuswbK.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-effect.entity-qSSTwoD0.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-effect.entity-CRuuswbK.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-effect.entity-qSSTwoD0.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mechanism.entity-C9W_N1rE.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mechanism.entity-DsMYTxrE.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mechanism.entity-C9W_N1rE.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mechanism.entity-DsMYTxrE.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode-asset-type.entity-DtrolwgP.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode-asset-type.entity-DlqzE2Za.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode-asset-type.entity-DtrolwgP.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode-asset-type.entity-DlqzE2Za.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode-mechanism.entity-C38Hhz8z.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode-mechanism.entity-0xGHmQqy.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode-mechanism.entity-C38Hhz8z.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode-mechanism.entity-0xGHmQqy.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode-solution.entity-3yhzcAdh.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode-solution.entity-B5bLQ4g6.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode-solution.entity-3yhzcAdh.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode-solution.entity-B5bLQ4g6.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode.entity-Ct2IVb_W.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode.entity-BCCVzThS.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode.entity-Ct2IVb_W.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode.entity-BCCVzThS.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register-cause.entity-D2WrHgUr.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register-cause.entity-CZKNsPR2.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register-cause.entity-D2WrHgUr.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register-cause.entity-CZKNsPR2.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register-effect.entity-DNz6g-mO.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register-effect.entity-CWhXlK6i.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register-effect.entity-DNz6g-mO.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register-effect.entity-CWhXlK6i.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register-mechanism.entity-B7O5O2cJ.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register-mechanism.entity-DzSmFBD_.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register-mechanism.entity-B7O5O2cJ.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register-mechanism.entity-DzSmFBD_.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register.entity-BYhHb6gp.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register.entity-5mfrErkC.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register.entity-BYhHb6gp.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register.entity-5mfrErkC.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-severity.entity-BKcqicYB.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-severity.entity-DKL3K1P_.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-severity.entity-BKcqicYB.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-severity.entity-DKL3K1P_.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-type.entity-BlN2xNHw.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-type.entity-BwPWU2hj.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-type.entity-BlN2xNHw.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-type.entity-BwPWU2hj.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-plan.entity-Da5_SUPA.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-plan.entity-DZp6tUTX.mjs} +236 -24
- package/fesm2022/acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-plan.entity-DZp6tUTX.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template-activity-type.entity-DuK6vGUc.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template-activity-type.entity-CEgtM97Q.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template-activity-type.entity-DuK6vGUc.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template-activity-type.entity-CEgtM97Q.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template-failure-mode.entity-AVtJcY11.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template-failure-mode.entity-DRt6Cfbc.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template-failure-mode.entity-AVtJcY11.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template-failure-mode.entity-DRt6Cfbc.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template-resource.entity-Dv0ht2vz.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template-resource.entity-zQAeVklB.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template-resource.entity-Dv0ht2vz.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template-resource.entity-zQAeVklB.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template.entity-xx7GbT-x.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template.entity-DgtyyggM.mjs} +4 -25
- package/fesm2022/acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template.entity-DgtyyggM.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-type.entity-BtBo0c-c.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-type.entity-D3ipDMzR.mjs} +2 -25
- package/fesm2022/acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-type.entity-D3ipDMzR.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-work-order.entity-DTYYDI-y.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-work-order.entity-hgfgOV6Q.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-work-order.entity-DTYYDI-y.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-work-order.entity-hgfgOV6Q.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-work-package.entity-BlBbbfU_.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-work-package.entity-ubzIZ90s.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-work-package.entity-BlBbbfU_.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-work-package.entity-ubzIZ90s.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-work-report.entity-rg2NHWs8.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-work-report.entity-Blu2UR8v.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-work-report.entity-rg2NHWs8.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-work-report.entity-Blu2UR8v.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-maintenance-management-client-contracts-entity-catalog.mjs +1 -1
- package/fesm2022/acorex-platform-module-maintenance-management-client-contracts.mjs +306 -1
- package/fesm2022/acorex-platform-module-maintenance-management-client-contracts.mjs.map +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-BX8JwWt8.mjs → acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-DDvUWUU5.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-BX8JwWt8.mjs.map → acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-DDvUWUU5.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-maintenance-management-client-maintenance-interval-widget-edit.component-CUcsLsuh.mjs +54 -0
- package/fesm2022/acorex-platform-module-maintenance-management-client-maintenance-interval-widget-edit.component-CUcsLsuh.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-maintenance-management-client-maintenance-interval-widget-view.component-CM0Wokah.mjs +121 -0
- package/fesm2022/acorex-platform-module-maintenance-management-client-maintenance-interval-widget-view.component-CM0Wokah.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-maintenance-management-client-maintenance-interval-widget.kinds-D8Hnq0ct.mjs +22 -0
- package/fesm2022/acorex-platform-module-maintenance-management-client-maintenance-interval-widget.kinds-D8Hnq0ct.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-mWMeP02k.mjs → acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-BiD6NYBT.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-mWMeP02k.mjs.map → acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-BiD6NYBT.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-start-work-order-flow.command-CWhKwFy9.mjs → acorex-platform-module-maintenance-management-client-start-work-order-flow.command-B5Ko0JyG.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-start-work-order-flow.command-CWhKwFy9.mjs.map → acorex-platform-module-maintenance-management-client-start-work-order-flow.command-B5Ko0JyG.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-DiKnz1IH.mjs → acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-D75YRfD2.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-DiKnz1IH.mjs.map → acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-D75YRfD2.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-BbyqDKGm.mjs → acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-B90OJ-Ol.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-BbyqDKGm.mjs.map → acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-B90OJ-Ol.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-maintenance-management-client.mjs +1 -1
- package/i18n/en-AU/maintenance-management.json +38 -6
- package/i18n/en-US/maintenance-management.json +38 -6
- package/i18n/fa-IR/maintenance-management.json +38 -6
- package/package.json +1 -1
- package/types/acorex-platform-module-maintenance-management-client-contracts.d.ts +182 -84
- package/types/acorex-platform-module-maintenance-management-client.d.ts +59 -7
- package/fesm2022/acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-Dqy4wGda.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-plan.entity-Da5_SUPA.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template.entity-xx7GbT-x.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-type.entity-BtBo0c-c.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-maintenance-management-client-maintenance-interval-widget-view.component-CM0Wokah.mjs","sources":["../../../../libs/modules/maintenance-management/client/src/lib/features/maintenance-interval/maintenance-interval-widget-view.component.ts","../../../../libs/modules/maintenance-management/client/src/lib/features/maintenance-interval/maintenance-interval-widget-view.component.html"],"sourcesContent":["//#region ----- Imports -----\n\nimport { AXLabelComponent } from '@acorex/components/label';\nimport { AXSchedulerPickerService, AXSchedulerPickerValue } from '@acorex/components/scheduler-picker';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport {\n AXMMaintenanceIntervalConfig,\n AXMMaintenanceIntervalTrigger,\n AXMMaintenanceIntervalTriggerLogic,\n AXMMaintenanceIntervalUnit,\n buildAXMMaintenanceIntervalConfig,\n draftFromAXMMaintenanceIntervalConfig,\n} from '@acorex-platform/module-maintenance-management-client/contracts';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal } from '@angular/core';\n\nimport { readMaintenanceIntervalKinds } from './maintenance-interval-widget.kinds';\n\n//#endregion\n\n//#region ----- Constants -----\n\nconst I18N = '@maintenance-management:maintenance-interval';\n\nconst UNIT_LABEL_KEYS: Record<AXMMaintenanceIntervalUnit, string> = {\n [AXMMaintenanceIntervalUnit.Kilometer]: `${I18N}.units.kilometer`,\n [AXMMaintenanceIntervalUnit.Mile]: `${I18N}.units.mile`,\n [AXMMaintenanceIntervalUnit.Hour]: `${I18N}.units.hour`,\n [AXMMaintenanceIntervalUnit.Operation]: `${I18N}.units.operation`,\n};\n\nconst KIND_LABEL_KEYS: Record<string, string> = {\n date: `${I18N}.kinds.date`,\n distance: `${I18N}.kinds.distance`,\n 'operating-hours': `${I18N}.kinds.operating-hours`,\n 'operation-count': `${I18N}.kinds.operation-count`,\n};\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-maintenance-interval-widget-view',\n templateUrl: './maintenance-interval-widget-view.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe, AXTranslationModule, AXLabelComponent],\n})\nexport class AXMMaintenanceIntervalWidgetViewComponent extends AXPValueWidgetComponent<\n AXMMaintenanceIntervalConfig | null\n> {\n //#region ----- Services & Dependencies -----\n\n private readonly schedulerPickerService = inject(AXSchedulerPickerService);\n\n //#endregion\n\n //#region ----- Constants -----\n\n protected readonly emptyKey = `${I18N}.empty`;\n protected readonly noneKey = `${I18N}.none`;\n protected readonly everyKey = `${I18N}.every`;\n protected readonly triggerLogicTitleKey = `${I18N}.trigger-logic.title`;\n protected readonly anyKey = `${I18N}.trigger-logic.any`;\n protected readonly allKey = `${I18N}.trigger-logic.all`;\n\n //#endregion\n\n //#region ----- State Signals -----\n\n private readonly scheduleSummary = signal('');\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n protected readonly intervalConfig = computed(() => {\n const supported = readMaintenanceIntervalKinds(this.options(), (path) => this.contextService.getValue(path));\n const draft = draftFromAXMMaintenanceIntervalConfig(this.getValue(), supported);\n return buildAXMMaintenanceIntervalConfig(supported, draft).config;\n });\n\n protected readonly hasSupportedKinds = computed(\n () => readMaintenanceIntervalKinds(this.options(), (path) => this.contextService.getValue(path)).length > 0,\n );\n\n protected readonly triggers = computed(() => this.intervalConfig().triggers);\n\n protected readonly showTriggerLogic = computed(() => this.triggers().length > 1);\n\n protected readonly triggerLogicKey = computed(() =>\n this.intervalConfig().triggerLogic === AXMMaintenanceIntervalTriggerLogic.All ? this.allKey : this.anyKey,\n );\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n #scheduleSummaryEffect = effect(() => {\n const dateTrigger = this.triggers().find((trigger) => trigger.kind === 'date');\n const schedule = dateTrigger && 'schedule' in dateTrigger ? dateTrigger.schedule : null;\n void this.loadScheduleSummary(schedule);\n });\n\n //#endregion\n\n //#region ----- Template helpers -----\n\n protected kindLabel(trigger: AXMMaintenanceIntervalTrigger): string {\n return KIND_LABEL_KEYS[trigger.kind] ?? '';\n }\n\n protected meterText(trigger: AXMMaintenanceIntervalTrigger): string {\n if (trigger.kind === 'date') {\n return '';\n }\n return String(trigger.interval);\n }\n\n protected unitLabel(trigger: AXMMaintenanceIntervalTrigger): string {\n if (trigger.kind === 'date' || trigger.unit == null) {\n return '';\n }\n return UNIT_LABEL_KEYS[trigger.unit];\n }\n\n protected scheduleLabel(): string {\n return this.scheduleSummary();\n }\n\n //#endregion\n\n //#region ----- Schedule summary -----\n\n private async loadScheduleSummary(schedule: unknown): Promise<void> {\n if (!this.isSchedulerValue(schedule)) {\n this.scheduleSummary.set('');\n return;\n }\n try {\n this.scheduleSummary.set(await this.schedulerPickerService.toNaturalLanguage(schedule));\n } catch {\n this.scheduleSummary.set('');\n }\n }\n\n private isSchedulerValue(value: unknown): value is AXSchedulerPickerValue {\n return !!value && typeof value === 'object' && 'mode' in value;\n }\n\n //#endregion\n}\n\n//#endregion\n","<!-- ----- Nothing to configure, or no interval is enabled ----- -->\n@if (triggers().length === 0) {\n <!-- ----- Asset type supports intervals, but none are enabled ----- -->\n @if (hasSupportedKinds()) {\n <span class=\"ax-text-muted\">{{ noneKey | translate | async }}</span>\n }\n <!-- ----- Asset type has no supported interval kinds ----- -->\n @else {\n <span class=\"ax-text-muted\">{{ emptyKey | translate | async }}</span>\n }\n}\n\n@for (trigger of triggers(); track trigger.kind) {\n <div class=\"mt-2\">\n <ax-label>{{ kindLabel(trigger) | translate | async }}</ax-label>\n <!-- ----- Date shows the existing scheduler summary ----- -->\n @if (trigger.kind === 'date') {\n <span class=\"ms-2\">{{ scheduleLabel() }}</span>\n }\n <!-- ----- Meter interval shows the amount and unit ----- -->\n @else {\n <span class=\"ms-2\">{{ everyKey | translate | async }} {{ meterText(trigger) }} {{ unitLabel(trigger) | translate | async }}</span>\n }\n </div>\n}\n\n<!-- ----- Trigger condition when more than one interval is configured ----- -->\n@if (showTriggerLogic()) {\n <div class=\"mt-3\">\n <ax-label>{{ triggerLogicTitleKey | translate | async }}</ax-label>\n <span class=\"ms-2\">{{ triggerLogicKey() | translate | async }}</span>\n </div>\n}\n"],"names":["i1"],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { resolveSupportedIntervalKinds } from '@acorex-platform/module-asset-management-client/contracts';
|
|
2
|
+
|
|
3
|
+
//#region ----- Supported kinds -----
|
|
4
|
+
const CONTEXT_PATHS = ['assetType.supportedIntervalKinds', 'asset.assetType.supportedIntervalKinds'];
|
|
5
|
+
/** Widget option first, then the asset type already on the form. */
|
|
6
|
+
function readMaintenanceIntervalKinds(options, readContext) {
|
|
7
|
+
const record = options;
|
|
8
|
+
if ('supportedIntervalKinds' in record) {
|
|
9
|
+
return resolveSupportedIntervalKinds(record['supportedIntervalKinds']).kinds;
|
|
10
|
+
}
|
|
11
|
+
for (const path of CONTEXT_PATHS) {
|
|
12
|
+
const resolved = resolveSupportedIntervalKinds(readContext(path));
|
|
13
|
+
if (resolved.kinds.length > 0) {
|
|
14
|
+
return resolved.kinds;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return [];
|
|
18
|
+
}
|
|
19
|
+
//#endregion
|
|
20
|
+
|
|
21
|
+
export { readMaintenanceIntervalKinds as r };
|
|
22
|
+
//# sourceMappingURL=acorex-platform-module-maintenance-management-client-maintenance-interval-widget.kinds-D8Hnq0ct.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-maintenance-management-client-maintenance-interval-widget.kinds-D8Hnq0ct.mjs","sources":["../../../../libs/modules/maintenance-management/client/src/lib/features/maintenance-interval/maintenance-interval-widget.kinds.ts"],"sourcesContent":["import { resolveSupportedIntervalKinds } from '@acorex-platform/module-asset-management-client/contracts';\nimport type { AXMAssetIntervalKind } from '@acorex-platform/module-asset-management-client/contracts';\n\n//#region ----- Supported kinds -----\n\nconst CONTEXT_PATHS = ['assetType.supportedIntervalKinds', 'asset.assetType.supportedIntervalKinds'];\n\n/** Widget option first, then the asset type already on the form. */\nexport function readMaintenanceIntervalKinds(\n options: object,\n readContext: (path: string) => unknown,\n): AXMAssetIntervalKind[] {\n const record = options as Record<string, unknown>;\n if ('supportedIntervalKinds' in record) {\n return resolveSupportedIntervalKinds(record['supportedIntervalKinds']).kinds;\n }\n for (const path of CONTEXT_PATHS) {\n const resolved = resolveSupportedIntervalKinds(readContext(path));\n if (resolved.kinds.length > 0) {\n return resolved.kinds;\n }\n }\n return [];\n}\n\n//#endregion\n"],"names":[],"mappings":";;AAGA;AAEA,MAAM,aAAa,GAAG,CAAC,kCAAkC,EAAE,wCAAwC,CAAC;AAEpG;AACM,SAAU,4BAA4B,CAC1C,OAAe,EACf,WAAsC,EAAA;IAEtC,MAAM,MAAM,GAAG,OAAkC;AACjD,IAAA,IAAI,wBAAwB,IAAI,MAAM,EAAE;QACtC,OAAO,6BAA6B,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC,KAAK;IAC9E;AACA,IAAA,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE;QAChC,MAAM,QAAQ,GAAG,6BAA6B,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACjE,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,OAAO,QAAQ,CAAC,KAAK;QACvB;IACF;AACA,IAAA,OAAO,EAAE;AACX;AAEA;;"}
|
|
@@ -4,7 +4,7 @@ import * as i0 from '@angular/core';
|
|
|
4
4
|
import { inject, Injectable } from '@angular/core';
|
|
5
5
|
import { defaultTo, get, isString } from 'lodash';
|
|
6
6
|
import { RootConfig } from '@acorex-platform/module-maintenance-management-client/contracts';
|
|
7
|
-
import { A as AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE } from './acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-
|
|
7
|
+
import { A as AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE } from './acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-6cXxZPN1.mjs';
|
|
8
8
|
import { i as isWorkReportFinalized, s as sortWorkReportAssessments, u as upsertWorkReportAssessment } from './acorex-platform-module-maintenance-management-client-work-report-assessment.util-Da1HVAit.mjs';
|
|
9
9
|
|
|
10
10
|
//#region ---- Imports ----
|
|
@@ -149,4 +149,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
149
149
|
}] });
|
|
150
150
|
|
|
151
151
|
export { RecordWorkReportAssessmentActivity };
|
|
152
|
-
//# sourceMappingURL=acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-
|
|
152
|
+
//# sourceMappingURL=acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-BiD6NYBT.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-mWMeP02k.mjs","sources":["../../../../libs/modules/maintenance-management/client/src/lib/features/work-order/workflows/activities/record-work-report-assessment.activity.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPDebugService } from '@acorex-platform/framework-client/core';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { inject, Injectable } from '@angular/core';\nimport { defaultTo, get, isString } from 'lodash';\n\nimport { RootConfig } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport { AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE } from '../work-order-workflow.debug';\nimport type { AXMMaintenanceManagementWorkReportEntityModel } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport {\n isWorkReportFinalized,\n sortWorkReportAssessments,\n upsertWorkReportAssessment,\n} from '../../../work-report/work-report-assessment.util';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport interface RecordWorkReportAssessmentInput {\n workOrderId: string;\n workReportId?: string | null;\n performedById?: string | null;\n assessmentCaseId: string;\n completedById?: string | null;\n}\n\nexport interface RecordWorkReportAssessmentOutput {\n workReportId: string;\n workOrderId: string;\n}\n\n//#endregion\n\n/**\n * Persists a lightweight checklist assessment reference on WorkReport after a checklist is submitted.\n * Questionnaire answers remain in AssessmentCase / AssessmentSession storage.\n */\n@Injectable({ providedIn: 'root' })\nexport class RecordWorkReportAssessmentActivity\n implements AXPCommand<RecordWorkReportAssessmentInput, RecordWorkReportAssessmentOutput>\n{\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly debug = inject(AXPDebugService);\n\n //#endregion\n\n //#region ---- Command Implementation ----\n\n async execute(\n input: RecordWorkReportAssessmentInput,\n ): AXPCommandExecuteResultPromise<RecordWorkReportAssessmentOutput> {\n const workOrderId = this.resolveText(input?.workOrderId);\n const assessmentCaseId = this.resolveText(input?.assessmentCaseId);\n\n if (!workOrderId) {\n return {\n success: false,\n message: { text: 'workOrderId is required' },\n metadata: { outcome: 'Failed' },\n };\n }\n\n if (!assessmentCaseId) {\n return { success: true, kind: 'object',\n data: { workReportId: this.resolveText(input.workReportId), workOrderId },\n metadata: { outcome: 'Done' },\n };\n }\n\n const workReport = await this.resolveWorkReport(workOrderId, input);\n if (!workReport?.id) {\n return {\n success: false,\n message: { text: 'Work report could not be resolved for the work order' },\n metadata: { outcome: 'Failed' },\n };\n }\n\n if (isWorkReportFinalized(workReport)) {\n return {\n success: false,\n message: { text: 'Work report is finalized and cannot be updated' },\n metadata: { outcome: 'Failed' },\n };\n }\n\n const assessmentCase = await this.loadAssessmentCase(assessmentCaseId);\n const completedById = this.resolveText(input.completedById);\n const assessments = sortWorkReportAssessments(\n upsertWorkReportAssessment(workReport.assessments, {\n assessmentCaseId,\n assessmentCaseTitle: assessmentCase?.title as never,\n completedAt: new Date().toISOString(),\n completedById: completedById || null,\n }),\n );\n\n await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workReport.name)\n .data()\n .update(workReport.id, { assessments } as never);\n\n this.debug.trace(\n AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE,\n 'work-report-assessment',\n 'Recorded checklist reference on work report',\n { workOrderId, workReportId: workReport.id, assessmentCaseId, assessmentCount: assessments.length },\n );\n\n return { success: true, kind: 'object',\n data: { workReportId: workReport.id, workOrderId },\n metadata: { outcome: 'Done' },\n };\n }\n\n //#endregion\n\n //#region ---- Helpers ----\n\n private async resolveWorkReport(\n workOrderId: string,\n input: RecordWorkReportAssessmentInput,\n ): Promise<AXMMaintenanceManagementWorkReportEntityModel | null> {\n const workReportId = this.resolveText(input.workReportId);\n if (workReportId) {\n const byId = (await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workReport.name)\n .data()\n .byKey(workReportId)) as AXMMaintenanceManagementWorkReportEntityModel | null;\n\n if (byId?.id && this.resolveText(byId.workOrderId) === workOrderId) {\n return byId;\n }\n }\n\n const page = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workReport.name)\n .data()\n .query({\n skip: 0,\n take: 1,\n filter: {\n logic: 'and',\n filters: [{ field: 'workOrderId', operator: { type: 'equal' }, value: workOrderId }],\n },\n } as never);\n\n const existing = defaultTo(get(page, 'items[0]'), null) as AXMMaintenanceManagementWorkReportEntityModel | null;\n if (existing?.id) {\n return existing;\n }\n\n const performedById = this.resolveText(input.performedById);\n if (!performedById) {\n return null;\n }\n\n const now = new Date().toISOString();\n const createdId = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workReport.name)\n .data()\n .create({\n workOrderId,\n reportedAt: now,\n performedById,\n startedAt: now,\n finalizedAt: null,\n assessments: [],\n } as never);\n\n const id = this.resolveText(createdId);\n if (!id) {\n return null;\n }\n\n return (await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workReport.name)\n .data()\n .byKey(id)) as AXMMaintenanceManagementWorkReportEntityModel | null;\n }\n\n private async loadAssessmentCase(assessmentCaseId: string): Promise<{ title?: unknown } | null> {\n try {\n return (await this.entityService\n .withEntity('AssessmentManagement', 'AssessmentCase')\n .data()\n .byKey(assessmentCaseId)) as { title?: unknown } | null;\n } catch {\n return null;\n }\n }\n\n private resolveText(value: unknown): string {\n if (!isString(value)) {\n return '';\n }\n return value.trim();\n }\n\n //#endregion\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-BiD6NYBT.mjs","sources":["../../../../libs/modules/maintenance-management/client/src/lib/features/work-order/workflows/activities/record-work-report-assessment.activity.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPDebugService } from '@acorex-platform/framework-client/core';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { inject, Injectable } from '@angular/core';\nimport { defaultTo, get, isString } from 'lodash';\n\nimport { RootConfig } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport { AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE } from '../work-order-workflow.debug';\nimport type { AXMMaintenanceManagementWorkReportEntityModel } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport {\n isWorkReportFinalized,\n sortWorkReportAssessments,\n upsertWorkReportAssessment,\n} from '../../../work-report/work-report-assessment.util';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport interface RecordWorkReportAssessmentInput {\n workOrderId: string;\n workReportId?: string | null;\n performedById?: string | null;\n assessmentCaseId: string;\n completedById?: string | null;\n}\n\nexport interface RecordWorkReportAssessmentOutput {\n workReportId: string;\n workOrderId: string;\n}\n\n//#endregion\n\n/**\n * Persists a lightweight checklist assessment reference on WorkReport after a checklist is submitted.\n * Questionnaire answers remain in AssessmentCase / AssessmentSession storage.\n */\n@Injectable({ providedIn: 'root' })\nexport class RecordWorkReportAssessmentActivity\n implements AXPCommand<RecordWorkReportAssessmentInput, RecordWorkReportAssessmentOutput>\n{\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly debug = inject(AXPDebugService);\n\n //#endregion\n\n //#region ---- Command Implementation ----\n\n async execute(\n input: RecordWorkReportAssessmentInput,\n ): AXPCommandExecuteResultPromise<RecordWorkReportAssessmentOutput> {\n const workOrderId = this.resolveText(input?.workOrderId);\n const assessmentCaseId = this.resolveText(input?.assessmentCaseId);\n\n if (!workOrderId) {\n return {\n success: false,\n message: { text: 'workOrderId is required' },\n metadata: { outcome: 'Failed' },\n };\n }\n\n if (!assessmentCaseId) {\n return { success: true, kind: 'object',\n data: { workReportId: this.resolveText(input.workReportId), workOrderId },\n metadata: { outcome: 'Done' },\n };\n }\n\n const workReport = await this.resolveWorkReport(workOrderId, input);\n if (!workReport?.id) {\n return {\n success: false,\n message: { text: 'Work report could not be resolved for the work order' },\n metadata: { outcome: 'Failed' },\n };\n }\n\n if (isWorkReportFinalized(workReport)) {\n return {\n success: false,\n message: { text: 'Work report is finalized and cannot be updated' },\n metadata: { outcome: 'Failed' },\n };\n }\n\n const assessmentCase = await this.loadAssessmentCase(assessmentCaseId);\n const completedById = this.resolveText(input.completedById);\n const assessments = sortWorkReportAssessments(\n upsertWorkReportAssessment(workReport.assessments, {\n assessmentCaseId,\n assessmentCaseTitle: assessmentCase?.title as never,\n completedAt: new Date().toISOString(),\n completedById: completedById || null,\n }),\n );\n\n await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workReport.name)\n .data()\n .update(workReport.id, { assessments } as never);\n\n this.debug.trace(\n AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE,\n 'work-report-assessment',\n 'Recorded checklist reference on work report',\n { workOrderId, workReportId: workReport.id, assessmentCaseId, assessmentCount: assessments.length },\n );\n\n return { success: true, kind: 'object',\n data: { workReportId: workReport.id, workOrderId },\n metadata: { outcome: 'Done' },\n };\n }\n\n //#endregion\n\n //#region ---- Helpers ----\n\n private async resolveWorkReport(\n workOrderId: string,\n input: RecordWorkReportAssessmentInput,\n ): Promise<AXMMaintenanceManagementWorkReportEntityModel | null> {\n const workReportId = this.resolveText(input.workReportId);\n if (workReportId) {\n const byId = (await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workReport.name)\n .data()\n .byKey(workReportId)) as AXMMaintenanceManagementWorkReportEntityModel | null;\n\n if (byId?.id && this.resolveText(byId.workOrderId) === workOrderId) {\n return byId;\n }\n }\n\n const page = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workReport.name)\n .data()\n .query({\n skip: 0,\n take: 1,\n filter: {\n logic: 'and',\n filters: [{ field: 'workOrderId', operator: { type: 'equal' }, value: workOrderId }],\n },\n } as never);\n\n const existing = defaultTo(get(page, 'items[0]'), null) as AXMMaintenanceManagementWorkReportEntityModel | null;\n if (existing?.id) {\n return existing;\n }\n\n const performedById = this.resolveText(input.performedById);\n if (!performedById) {\n return null;\n }\n\n const now = new Date().toISOString();\n const createdId = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workReport.name)\n .data()\n .create({\n workOrderId,\n reportedAt: now,\n performedById,\n startedAt: now,\n finalizedAt: null,\n assessments: [],\n } as never);\n\n const id = this.resolveText(createdId);\n if (!id) {\n return null;\n }\n\n return (await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workReport.name)\n .data()\n .byKey(id)) as AXMMaintenanceManagementWorkReportEntityModel | null;\n }\n\n private async loadAssessmentCase(assessmentCaseId: string): Promise<{ title?: unknown } | null> {\n try {\n return (await this.entityService\n .withEntity('AssessmentManagement', 'AssessmentCase')\n .data()\n .byKey(assessmentCaseId)) as { title?: unknown } | null;\n } catch {\n return null;\n }\n }\n\n private resolveText(value: unknown): string {\n if (!isString(value)) {\n return '';\n }\n return value.trim();\n }\n\n //#endregion\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ import * as i0 from '@angular/core';
|
|
|
8
8
|
import { inject, Injectable } from '@angular/core';
|
|
9
9
|
import { defaultTo, get, isString } from 'lodash';
|
|
10
10
|
import { AXMWorkOrderStatus, RootConfig } from '@acorex-platform/module-maintenance-management-client/contracts';
|
|
11
|
-
import { q as queryWorkflowTemplatesForAsset, r as resolveDisplayLabel } from './acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-
|
|
11
|
+
import { q as queryWorkflowTemplatesForAsset, r as resolveDisplayLabel } from './acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-6cXxZPN1.mjs';
|
|
12
12
|
|
|
13
13
|
//#region ---- Imports ----
|
|
14
14
|
const STARTABLE_STATUSES = new Set([
|
|
@@ -402,4 +402,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
402
402
|
}] });
|
|
403
403
|
|
|
404
404
|
export { StartWorkOrderFlowCommand };
|
|
405
|
-
//# sourceMappingURL=acorex-platform-module-maintenance-management-client-start-work-order-flow.command-
|
|
405
|
+
//# sourceMappingURL=acorex-platform-module-maintenance-management-client-start-work-order-flow.command-B5Ko0JyG.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-maintenance-management-client-start-work-order-flow.command-CWhKwFy9.mjs","sources":["../../../../libs/modules/maintenance-management/client/src/lib/features/work-order/commands/start-work-order-flow.command.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService, resolveMultiLanguageString } from '@acorex/core/translation';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport {\n AXPEntityService,\n buildAXPRecordWorkflowInfo,\n getRecordWorkflowInstanceId,\n} from '@acorex-platform/framework-client/layout/entity';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXPBroadcastEventService } from '@acorex-platform/framework-client/core';\nimport { AXP_WORKFLOW_ENGINE, type AXPWorkflowEngine } from '@acorex-platform/framework-client/workflow';\nimport { inject, Injectable } from '@angular/core';\nimport { defaultTo, get, isString } from 'lodash';\n\nimport { AXMWorkOrderStatus, RootConfig } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport type { AXMMaintenanceManagementMaintenanceTemplateWorkflowConfig } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport type { AXMMaintenanceManagementWorkOrderEntityModel } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport {\n type EntityStorageBackend,\n queryWorkflowTemplatesForAsset,\n resolveDisplayLabel,\n type MaintenanceTemplateLike,\n} from '../../../middlewares/maintenance-generation.utils';\n\n//#endregion\n\n//#region ---- Types ----\n\ninterface StartWorkOrderFlowContext {\n /** When set, applies the maintenance template on the work order before starting the workflow. */\n maintenanceTemplateId?: string;\n data?: Record<string, unknown>;\n options?: { maintenanceTemplateId?: string };\n}\n\nconst STARTABLE_STATUSES = new Set<string>([\n AXMWorkOrderStatus.Planned,\n AXMWorkOrderStatus.Scheduled,\n AXMWorkOrderStatus.Assigned,\n]);\n\n//#endregion\n\n/**\n * Starts the maintenance template workflow for a work order (execution + approval).\n */\n@Injectable({ providedIn: 'root' })\nexport class StartWorkOrderFlowCommand implements AXPCommand<StartWorkOrderFlowContext, void> {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly workflowEngine = inject(AXP_WORKFLOW_ENGINE) as AXPWorkflowEngine;\n private readonly toastService = inject(AXToastService);\n private readonly translationService = inject(AXTranslationService);\n private readonly dialogService = inject(AXDialogService);\n private readonly eventService = inject(AXPBroadcastEventService);\n\n //#endregion\n\n //#region ---- Command Implementation ----\n\n async execute(input: StartWorkOrderFlowContext): AXPCommandExecuteResultPromise<void> {\n const row = defaultTo(get(input, 'data'), {}) as Record<string, unknown>;\n const workOrderId = this.resolveText(get(row, 'id'));\n if (!workOrderId) {\n return { success: false, message: { text: 'Work order id is required.' } };\n }\n\n if (getRecordWorkflowInstanceId(row)) {\n return { success: false };\n }\n\n let workOrder = await this.loadWorkOrder(workOrderId, row);\n if (!workOrder) {\n return { success: false, message: { text: 'Work order not found.' } };\n }\n\n const explicitTemplateId = this.resolveText(get(input, 'maintenanceTemplateId'));\n const selectedTemplateId = await this.resolveMaintenanceTemplateId(workOrder, explicitTemplateId || undefined);\n if (!selectedTemplateId) {\n return { success: false };\n }\n\n const flowPrerequisites = await this.validateFlowPrerequisites(workOrder, selectedTemplateId);\n if (!flowPrerequisites) {\n return { success: false };\n }\n\n const { workflowConfig, workflowName, assignedEmployeeId } = flowPrerequisites;\n\n if (selectedTemplateId !== workOrder.maintenanceTemplateId) {\n await this.applyMaintenanceTemplate(workOrderId, selectedTemplateId);\n workOrder = (await this.loadWorkOrder(workOrderId)) ?? workOrder;\n }\n\n const assetIdentifiers = await this.resolveAssetIdentifiers(this.resolveText(workOrder.assetId));\n const workflowInputs = this.buildWorkflowInputs(\n workOrder,\n workflowConfig,\n assignedEmployeeId,\n assetIdentifiers,\n );\n const correlationId = `${RootConfig.entities.workOrder.source}:${workOrderId}:${workflowName}`;\n\n try {\n // Start via engine only — do not use AXPWorkflowManager.start() here; it auto-runs inline\n // frontend steps (e.g. checklist fill). Human tasks must stay on the task board.\n const startResponse = await this.workflowEngine.start({\n workflowId: workflowName,\n input: {\n ...workflowInputs,\n refId: workOrderId,\n refType: RootConfig.entities.workOrder.source,\n correlationId,\n },\n });\n\n const instanceId = startResponse.instanceId;\n if (!instanceId) {\n const unknownError = await this.translationService.translateAsync(\n '@general:messages.generic.error.description',\n );\n this.toastService.show({\n color: 'danger',\n title: await this.translationService.translateAsync('@general:messages.generic.error.title'),\n content: unknownError,\n closeButton: true,\n timeOut: 5000,\n });\n return { success: false, message: { text: unknownError } };\n }\n\n await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workOrder.name)\n .data()\n .update(workOrderId, {\n workflowInfo: buildAXPRecordWorkflowInfo({\n instanceId,\n definitionId: workflowName,\n correlationId,\n }),\n } as never);\n\n this.eventService.publish('task-board.refresh', { provider: workflowName });\n\n const taskBoardHint = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.messages.workflow-started-use-task-board',\n );\n this.toastService.show({\n color: 'success',\n title: await this.translationService.translateAsync('@general:messages.generic.success.title'),\n content: taskBoardHint,\n closeButton: true,\n timeOut: 6000,\n });\n\n return { success: true, kind: 'object', data: undefined };\n } catch (error: unknown) {\n const message =\n error instanceof Error\n ? error.message\n : await this.translationService.translateAsync(\n '@general:messages.generic.error.description',\n );\n console.error('[StartWorkOrderFlowCommand]', error);\n this.toastService.show({\n color: 'danger',\n title: await this.translationService.translateAsync('@general:messages.generic.error.title'),\n content: message,\n closeButton: true,\n timeOut: 5000,\n });\n return { success: false, message: { text: message } };\n }\n }\n\n //#endregion\n\n //#region ---- Helpers ----\n\n private async loadWorkOrder(\n workOrderId: string,\n row?: Record<string, unknown>,\n ): Promise<AXMMaintenanceManagementWorkOrderEntityModel | null> {\n if (get(row, 'id') === workOrderId) {\n return row as unknown as AXMMaintenanceManagementWorkOrderEntityModel;\n }\n\n const loaded = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workOrder.name)\n .data()\n .byKey(workOrderId);\n return (loaded as AXMMaintenanceManagementWorkOrderEntityModel | null) ?? null;\n }\n\n private async applyMaintenanceTemplate(workOrderId: string, templateId: string): Promise<void> {\n const template = (await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.maintenanceTemplate.name)\n .data()\n .byKey(templateId)) as {\n id?: string;\n title?: unknown;\n maintenanceTypeId?: string;\n metadataIds?: string[];\n workflowConfig?: AXMMaintenanceManagementMaintenanceTemplateWorkflowConfig | null;\n needShutdown?: boolean;\n needPermission?: boolean;\n estimatedMinutes?: number;\n } | null;\n\n if (!template?.id) {\n throw new Error('Maintenance template not found.');\n }\n\n const estimatedHours =\n typeof template.estimatedMinutes === 'number' && template.estimatedMinutes > 0\n ? Math.round((template.estimatedMinutes / 60) * 100) / 100\n : undefined;\n\n await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workOrder.name)\n .data()\n .update(workOrderId, {\n maintenanceTemplateId: template.id,\n maintenanceTypeId: template.maintenanceTypeId,\n maintenanceTemplate: {\n id: template.id,\n title: template.title,\n metadataIds: template.metadataIds,\n workflowConfig: template.workflowConfig,\n },\n needShutdown: template.needShutdown ?? false,\n needPermission: template.needPermission ?? false,\n ...(estimatedHours !== undefined ? { estimatedHours } : {}),\n } as never);\n }\n\n private async resolveWorkflowConfig(\n workOrder: AXMMaintenanceManagementWorkOrderEntityModel,\n ): Promise<AXMMaintenanceManagementMaintenanceTemplateWorkflowConfig | null> {\n let workflowConfig = workOrder.maintenanceTemplate?.workflowConfig ?? null;\n if (!workflowConfig?.workflowDefinitionId && workOrder.maintenanceTemplateId) {\n const template = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.maintenanceTemplate.name)\n .data()\n .byKey(workOrder.maintenanceTemplateId);\n workflowConfig = get(template, 'workflowConfig') ?? null;\n }\n return workflowConfig;\n }\n\n private isWorkflowEnabled(\n workflowConfig: AXMMaintenanceManagementMaintenanceTemplateWorkflowConfig | null,\n ): boolean {\n if (!workflowConfig?.workflowDefinitionId?.trim() || !workflowConfig.workflowName?.trim()) {\n return false;\n }\n return workflowConfig.enabled !== false;\n }\n\n /**\n * Validates work-order state before starting a workflow or persisting workflowInfo.\n */\n private async validateFlowPrerequisites(\n workOrder: AXMMaintenanceManagementWorkOrderEntityModel,\n selectedTemplateId: string,\n ): Promise<{\n workflowConfig: AXMMaintenanceManagementMaintenanceTemplateWorkflowConfig;\n workflowName: string;\n assignedEmployeeId: string;\n } | null> {\n const statusId = workOrder.statusId ?? '';\n if (!STARTABLE_STATUSES.has(statusId)) {\n const content = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.messages.flow-requires-startable-status',\n );\n await this.showWarning(content);\n return null;\n }\n\n const workflowConfig = await this.resolveWorkflowConfigForTemplate(selectedTemplateId);\n if (!this.isWorkflowEnabled(workflowConfig)) {\n const content = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.messages.no-workflow-configured',\n );\n await this.showWarning(content);\n return null;\n }\n\n const workflowName = workflowConfig!.workflowName.trim();\n const assignedToId = this.resolveText(workOrder.assignedToId);\n if (!assignedToId) {\n const content = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.messages.assigned-user-required',\n );\n await this.showWarning(content);\n return null;\n }\n\n const assignedEmployeeId = await this.resolveEmployeeIdByPersonId(assignedToId);\n if (workflowName === 'work-order-approval' && !assignedEmployeeId) {\n const content = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.messages.assigned-employee-required',\n );\n await this.showWarning(content);\n return null;\n }\n\n return { workflowConfig: workflowConfig!, workflowName, assignedEmployeeId };\n }\n\n private async resolveWorkflowConfigForTemplate(\n templateId: string,\n ): Promise<AXMMaintenanceManagementMaintenanceTemplateWorkflowConfig | null> {\n const template = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.maintenanceTemplate.name)\n .data()\n .byKey(templateId);\n return get(template, 'workflowConfig') ?? null;\n }\n\n private async resolveAssetIdentifiers(\n assetId: string,\n ): Promise<{ assetCode: string | null; assetSerialNumber: string | null }> {\n if (!assetId) {\n return { assetCode: null, assetSerialNumber: null };\n }\n\n const asset = (await this.entityService\n .withEntity('AssetManagement', 'Asset')\n .data()\n .byKey(assetId)) as { code?: string; serialNumber?: string } | null;\n\n const assetCode = this.resolveText(asset?.code);\n const assetSerialNumber = this.resolveText(asset?.serialNumber);\n\n return {\n assetCode: assetCode || null,\n assetSerialNumber: assetSerialNumber || null,\n };\n }\n\n private buildWorkflowInputs(\n workOrder: AXMMaintenanceManagementWorkOrderEntityModel,\n workflowConfig: AXMMaintenanceManagementMaintenanceTemplateWorkflowConfig,\n assignedEmployeeId: string,\n assetIdentifiers: { assetCode: string | null; assetSerialNumber: string | null },\n ): Record<string, unknown> {\n const assetTitle = workOrder.asset?.title;\n const assetDisplayName =\n typeof assetTitle === 'string'\n ? assetTitle\n : resolveMultiLanguageString(assetTitle as never, this.translationService.getActiveLang());\n\n const templateDefaults = defaultTo(workflowConfig.defaultInput, {}) as Record<string, unknown>;\n const maintenanceTypeTitle = workOrder.maintenanceType?.title;\n const maintenanceTypeName =\n typeof maintenanceTypeTitle === 'string'\n ? maintenanceTypeTitle\n : resolveMultiLanguageString(maintenanceTypeTitle as never, this.translationService.getActiveLang());\n\n const assignedToTitle = workOrder.assignedTo?.fullName;\n\n return {\n ...templateDefaults,\n workOrderId: workOrder.id,\n workOrderNo: workOrder.workOrderNo,\n workOrderCode: workOrder.workOrderNo,\n assetId: workOrder.assetId,\n assetCode: assetIdentifiers.assetCode,\n assetSerialNumber: assetIdentifiers.assetSerialNumber,\n assetDisplayName,\n maintenanceTypeId: workOrder.maintenanceTypeId,\n maintenanceTypeName,\n maintenancePlanId: workOrder.maintenancePlanId ?? null,\n failureRegisterId: workOrder.failureRegisterId ?? null,\n assignedToId: workOrder.assignedToId ?? null,\n assignedToDisplayName:\n typeof assignedToTitle === 'string' && assignedToTitle.trim()\n ? assignedToTitle.trim()\n : workOrder.assignedToId ?? null,\n assignedEmployeeId: assignedEmployeeId || null,\n sourceType: workOrder.sourceType ?? null,\n dueDate: workOrder.scheduledEnd ?? workOrder.scheduledStart ?? null,\n };\n }\n\n private resolveText(value: unknown): string {\n if (!isString(value)) {\n return '';\n }\n return value.trim();\n }\n\n private async showWarning(content: string): Promise<void> {\n this.toastService.show({\n color: 'warning',\n title: await this.translationService.translateAsync('@general:messages.generic.warning.title'),\n content,\n closeButton: true,\n timeOut: 10000,\n timeOutProgress: true,\n });\n }\n\n /**\n * Work-order approval flow expects `HumanCapitalManagement.Employee` id (`performedById` on WorkReport).\n * `WorkOrder.assignedToId` stores `PersonCore.Person` id.\n */\n private async resolveEmployeeIdByPersonId(personId: string): Promise<string> {\n if (!personId) {\n return '';\n }\n\n const page = await this.entityService\n .withEntity('HumanCapitalManagement', 'Employee')\n .data()\n .query({\n skip: 0,\n take: 1,\n filter: {\n logic: 'and',\n filters: [{ field: 'personId', operator: { type: 'equal' }, value: personId }],\n },\n } as never);\n\n const employee = defaultTo(get(page, 'items[0]'), null) as { id?: string } | null;\n return this.resolveText(employee?.id);\n }\n\n private async resolveMaintenanceTemplateId(\n workOrder: AXMMaintenanceManagementWorkOrderEntityModel,\n explicitTemplateId?: string,\n ): Promise<string> {\n if (explicitTemplateId) {\n return explicitTemplateId;\n }\n\n const currentTemplateId = this.resolveText(workOrder.maintenanceTemplateId);\n if (currentTemplateId) {\n const currentConfig = await this.resolveWorkflowConfig(workOrder);\n if (this.isWorkflowEnabled(currentConfig)) {\n return currentTemplateId;\n }\n }\n\n const assetId = this.resolveText(workOrder.assetId);\n if (!assetId) {\n const content = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.messages.no-workflow-templates-for-asset',\n );\n await this.showWarning(content);\n return '';\n }\n\n const backend = this.createStorageBackend();\n const templateEntityName = `${RootConfig.module.name}.${RootConfig.entities.maintenanceTemplate.name}`;\n const templates = await queryWorkflowTemplatesForAsset(backend, templateEntityName, assetId);\n if (templates.length === 0) {\n const content = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.messages.no-workflow-templates-for-asset',\n );\n await this.showWarning(content);\n return '';\n }\n\n if (templates.length === 1) {\n return templates[0].id;\n }\n\n return (await this.pickMaintenanceTemplate(templates)) ?? '';\n }\n\n private async pickMaintenanceTemplate(templates: MaintenanceTemplateLike[]): Promise<string | null> {\n const locale = this.translationService.getActiveLang() as 'en-US' | 'fa-IR';\n const sorted = [...templates].sort((a, b) => {\n const ta = resolveDisplayLabel(a.title, a.code ?? a.id, locale);\n const tb = resolveDisplayLabel(b.title, b.code ?? b.id, locale);\n return ta.localeCompare(tb, locale, { sensitivity: 'base' });\n });\n\n const title = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.actions.start-flow.select-template.title',\n );\n const content = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.actions.start-flow.select-template.content',\n );\n const cancelLabel = await this.translationService.translateAsync('@general:actions.cancel.title');\n\n return new Promise((resolve) => {\n let settled = false;\n const finish = (value: string | null) => {\n if (settled) {\n return;\n }\n settled = true;\n resolve(value);\n };\n\n const dialog = this.dialogService.open({\n title,\n content,\n type: 'primary',\n orientation: 'vertical',\n closeButton: true,\n buttons: [\n {\n text: cancelLabel,\n color: 'default',\n autofocus: true,\n onClick: () => {\n dialog.close();\n finish(null);\n },\n },\n ...sorted.map((template) => ({\n text: resolveDisplayLabel(template.title, template.code ?? template.id, locale),\n color: 'primary' as const,\n onClick: () => {\n dialog.close();\n finish(template.id);\n },\n })),\n ],\n });\n });\n }\n\n private createStorageBackend(): EntityStorageBackend {\n return {\n getOne: async (entityName, id) => {\n const [module, entity] = entityName.split('.');\n return this.entityService.withEntity(module, entity).data().byKey(id);\n },\n insertOne: async () => null,\n query: async (entityName, request) => {\n const [module, entity] = entityName.split('.');\n return this.entityService.withEntity(module, entity).data().query(request as never);\n },\n };\n }\n\n //#endregion\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-maintenance-management-client-start-work-order-flow.command-B5Ko0JyG.mjs","sources":["../../../../libs/modules/maintenance-management/client/src/lib/features/work-order/commands/start-work-order-flow.command.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService, resolveMultiLanguageString } from '@acorex/core/translation';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport {\n AXPEntityService,\n buildAXPRecordWorkflowInfo,\n getRecordWorkflowInstanceId,\n} from '@acorex-platform/framework-client/layout/entity';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXPBroadcastEventService } from '@acorex-platform/framework-client/core';\nimport { AXP_WORKFLOW_ENGINE, type AXPWorkflowEngine } from '@acorex-platform/framework-client/workflow';\nimport { inject, Injectable } from '@angular/core';\nimport { defaultTo, get, isString } from 'lodash';\n\nimport { AXMWorkOrderStatus, RootConfig } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport type { AXMMaintenanceManagementMaintenanceTemplateWorkflowConfig } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport type { AXMMaintenanceManagementWorkOrderEntityModel } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport {\n type EntityStorageBackend,\n queryWorkflowTemplatesForAsset,\n resolveDisplayLabel,\n type MaintenanceTemplateLike,\n} from '../../../middlewares/maintenance-generation.utils';\n\n//#endregion\n\n//#region ---- Types ----\n\ninterface StartWorkOrderFlowContext {\n /** When set, applies the maintenance template on the work order before starting the workflow. */\n maintenanceTemplateId?: string;\n data?: Record<string, unknown>;\n options?: { maintenanceTemplateId?: string };\n}\n\nconst STARTABLE_STATUSES = new Set<string>([\n AXMWorkOrderStatus.Planned,\n AXMWorkOrderStatus.Scheduled,\n AXMWorkOrderStatus.Assigned,\n]);\n\n//#endregion\n\n/**\n * Starts the maintenance template workflow for a work order (execution + approval).\n */\n@Injectable({ providedIn: 'root' })\nexport class StartWorkOrderFlowCommand implements AXPCommand<StartWorkOrderFlowContext, void> {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly workflowEngine = inject(AXP_WORKFLOW_ENGINE) as AXPWorkflowEngine;\n private readonly toastService = inject(AXToastService);\n private readonly translationService = inject(AXTranslationService);\n private readonly dialogService = inject(AXDialogService);\n private readonly eventService = inject(AXPBroadcastEventService);\n\n //#endregion\n\n //#region ---- Command Implementation ----\n\n async execute(input: StartWorkOrderFlowContext): AXPCommandExecuteResultPromise<void> {\n const row = defaultTo(get(input, 'data'), {}) as Record<string, unknown>;\n const workOrderId = this.resolveText(get(row, 'id'));\n if (!workOrderId) {\n return { success: false, message: { text: 'Work order id is required.' } };\n }\n\n if (getRecordWorkflowInstanceId(row)) {\n return { success: false };\n }\n\n let workOrder = await this.loadWorkOrder(workOrderId, row);\n if (!workOrder) {\n return { success: false, message: { text: 'Work order not found.' } };\n }\n\n const explicitTemplateId = this.resolveText(get(input, 'maintenanceTemplateId'));\n const selectedTemplateId = await this.resolveMaintenanceTemplateId(workOrder, explicitTemplateId || undefined);\n if (!selectedTemplateId) {\n return { success: false };\n }\n\n const flowPrerequisites = await this.validateFlowPrerequisites(workOrder, selectedTemplateId);\n if (!flowPrerequisites) {\n return { success: false };\n }\n\n const { workflowConfig, workflowName, assignedEmployeeId } = flowPrerequisites;\n\n if (selectedTemplateId !== workOrder.maintenanceTemplateId) {\n await this.applyMaintenanceTemplate(workOrderId, selectedTemplateId);\n workOrder = (await this.loadWorkOrder(workOrderId)) ?? workOrder;\n }\n\n const assetIdentifiers = await this.resolveAssetIdentifiers(this.resolveText(workOrder.assetId));\n const workflowInputs = this.buildWorkflowInputs(\n workOrder,\n workflowConfig,\n assignedEmployeeId,\n assetIdentifiers,\n );\n const correlationId = `${RootConfig.entities.workOrder.source}:${workOrderId}:${workflowName}`;\n\n try {\n // Start via engine only — do not use AXPWorkflowManager.start() here; it auto-runs inline\n // frontend steps (e.g. checklist fill). Human tasks must stay on the task board.\n const startResponse = await this.workflowEngine.start({\n workflowId: workflowName,\n input: {\n ...workflowInputs,\n refId: workOrderId,\n refType: RootConfig.entities.workOrder.source,\n correlationId,\n },\n });\n\n const instanceId = startResponse.instanceId;\n if (!instanceId) {\n const unknownError = await this.translationService.translateAsync(\n '@general:messages.generic.error.description',\n );\n this.toastService.show({\n color: 'danger',\n title: await this.translationService.translateAsync('@general:messages.generic.error.title'),\n content: unknownError,\n closeButton: true,\n timeOut: 5000,\n });\n return { success: false, message: { text: unknownError } };\n }\n\n await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workOrder.name)\n .data()\n .update(workOrderId, {\n workflowInfo: buildAXPRecordWorkflowInfo({\n instanceId,\n definitionId: workflowName,\n correlationId,\n }),\n } as never);\n\n this.eventService.publish('task-board.refresh', { provider: workflowName });\n\n const taskBoardHint = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.messages.workflow-started-use-task-board',\n );\n this.toastService.show({\n color: 'success',\n title: await this.translationService.translateAsync('@general:messages.generic.success.title'),\n content: taskBoardHint,\n closeButton: true,\n timeOut: 6000,\n });\n\n return { success: true, kind: 'object', data: undefined };\n } catch (error: unknown) {\n const message =\n error instanceof Error\n ? error.message\n : await this.translationService.translateAsync(\n '@general:messages.generic.error.description',\n );\n console.error('[StartWorkOrderFlowCommand]', error);\n this.toastService.show({\n color: 'danger',\n title: await this.translationService.translateAsync('@general:messages.generic.error.title'),\n content: message,\n closeButton: true,\n timeOut: 5000,\n });\n return { success: false, message: { text: message } };\n }\n }\n\n //#endregion\n\n //#region ---- Helpers ----\n\n private async loadWorkOrder(\n workOrderId: string,\n row?: Record<string, unknown>,\n ): Promise<AXMMaintenanceManagementWorkOrderEntityModel | null> {\n if (get(row, 'id') === workOrderId) {\n return row as unknown as AXMMaintenanceManagementWorkOrderEntityModel;\n }\n\n const loaded = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workOrder.name)\n .data()\n .byKey(workOrderId);\n return (loaded as AXMMaintenanceManagementWorkOrderEntityModel | null) ?? null;\n }\n\n private async applyMaintenanceTemplate(workOrderId: string, templateId: string): Promise<void> {\n const template = (await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.maintenanceTemplate.name)\n .data()\n .byKey(templateId)) as {\n id?: string;\n title?: unknown;\n maintenanceTypeId?: string;\n metadataIds?: string[];\n workflowConfig?: AXMMaintenanceManagementMaintenanceTemplateWorkflowConfig | null;\n needShutdown?: boolean;\n needPermission?: boolean;\n estimatedMinutes?: number;\n } | null;\n\n if (!template?.id) {\n throw new Error('Maintenance template not found.');\n }\n\n const estimatedHours =\n typeof template.estimatedMinutes === 'number' && template.estimatedMinutes > 0\n ? Math.round((template.estimatedMinutes / 60) * 100) / 100\n : undefined;\n\n await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workOrder.name)\n .data()\n .update(workOrderId, {\n maintenanceTemplateId: template.id,\n maintenanceTypeId: template.maintenanceTypeId,\n maintenanceTemplate: {\n id: template.id,\n title: template.title,\n metadataIds: template.metadataIds,\n workflowConfig: template.workflowConfig,\n },\n needShutdown: template.needShutdown ?? false,\n needPermission: template.needPermission ?? false,\n ...(estimatedHours !== undefined ? { estimatedHours } : {}),\n } as never);\n }\n\n private async resolveWorkflowConfig(\n workOrder: AXMMaintenanceManagementWorkOrderEntityModel,\n ): Promise<AXMMaintenanceManagementMaintenanceTemplateWorkflowConfig | null> {\n let workflowConfig = workOrder.maintenanceTemplate?.workflowConfig ?? null;\n if (!workflowConfig?.workflowDefinitionId && workOrder.maintenanceTemplateId) {\n const template = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.maintenanceTemplate.name)\n .data()\n .byKey(workOrder.maintenanceTemplateId);\n workflowConfig = get(template, 'workflowConfig') ?? null;\n }\n return workflowConfig;\n }\n\n private isWorkflowEnabled(\n workflowConfig: AXMMaintenanceManagementMaintenanceTemplateWorkflowConfig | null,\n ): boolean {\n if (!workflowConfig?.workflowDefinitionId?.trim() || !workflowConfig.workflowName?.trim()) {\n return false;\n }\n return workflowConfig.enabled !== false;\n }\n\n /**\n * Validates work-order state before starting a workflow or persisting workflowInfo.\n */\n private async validateFlowPrerequisites(\n workOrder: AXMMaintenanceManagementWorkOrderEntityModel,\n selectedTemplateId: string,\n ): Promise<{\n workflowConfig: AXMMaintenanceManagementMaintenanceTemplateWorkflowConfig;\n workflowName: string;\n assignedEmployeeId: string;\n } | null> {\n const statusId = workOrder.statusId ?? '';\n if (!STARTABLE_STATUSES.has(statusId)) {\n const content = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.messages.flow-requires-startable-status',\n );\n await this.showWarning(content);\n return null;\n }\n\n const workflowConfig = await this.resolveWorkflowConfigForTemplate(selectedTemplateId);\n if (!this.isWorkflowEnabled(workflowConfig)) {\n const content = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.messages.no-workflow-configured',\n );\n await this.showWarning(content);\n return null;\n }\n\n const workflowName = workflowConfig!.workflowName.trim();\n const assignedToId = this.resolveText(workOrder.assignedToId);\n if (!assignedToId) {\n const content = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.messages.assigned-user-required',\n );\n await this.showWarning(content);\n return null;\n }\n\n const assignedEmployeeId = await this.resolveEmployeeIdByPersonId(assignedToId);\n if (workflowName === 'work-order-approval' && !assignedEmployeeId) {\n const content = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.messages.assigned-employee-required',\n );\n await this.showWarning(content);\n return null;\n }\n\n return { workflowConfig: workflowConfig!, workflowName, assignedEmployeeId };\n }\n\n private async resolveWorkflowConfigForTemplate(\n templateId: string,\n ): Promise<AXMMaintenanceManagementMaintenanceTemplateWorkflowConfig | null> {\n const template = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.maintenanceTemplate.name)\n .data()\n .byKey(templateId);\n return get(template, 'workflowConfig') ?? null;\n }\n\n private async resolveAssetIdentifiers(\n assetId: string,\n ): Promise<{ assetCode: string | null; assetSerialNumber: string | null }> {\n if (!assetId) {\n return { assetCode: null, assetSerialNumber: null };\n }\n\n const asset = (await this.entityService\n .withEntity('AssetManagement', 'Asset')\n .data()\n .byKey(assetId)) as { code?: string; serialNumber?: string } | null;\n\n const assetCode = this.resolveText(asset?.code);\n const assetSerialNumber = this.resolveText(asset?.serialNumber);\n\n return {\n assetCode: assetCode || null,\n assetSerialNumber: assetSerialNumber || null,\n };\n }\n\n private buildWorkflowInputs(\n workOrder: AXMMaintenanceManagementWorkOrderEntityModel,\n workflowConfig: AXMMaintenanceManagementMaintenanceTemplateWorkflowConfig,\n assignedEmployeeId: string,\n assetIdentifiers: { assetCode: string | null; assetSerialNumber: string | null },\n ): Record<string, unknown> {\n const assetTitle = workOrder.asset?.title;\n const assetDisplayName =\n typeof assetTitle === 'string'\n ? assetTitle\n : resolveMultiLanguageString(assetTitle as never, this.translationService.getActiveLang());\n\n const templateDefaults = defaultTo(workflowConfig.defaultInput, {}) as Record<string, unknown>;\n const maintenanceTypeTitle = workOrder.maintenanceType?.title;\n const maintenanceTypeName =\n typeof maintenanceTypeTitle === 'string'\n ? maintenanceTypeTitle\n : resolveMultiLanguageString(maintenanceTypeTitle as never, this.translationService.getActiveLang());\n\n const assignedToTitle = workOrder.assignedTo?.fullName;\n\n return {\n ...templateDefaults,\n workOrderId: workOrder.id,\n workOrderNo: workOrder.workOrderNo,\n workOrderCode: workOrder.workOrderNo,\n assetId: workOrder.assetId,\n assetCode: assetIdentifiers.assetCode,\n assetSerialNumber: assetIdentifiers.assetSerialNumber,\n assetDisplayName,\n maintenanceTypeId: workOrder.maintenanceTypeId,\n maintenanceTypeName,\n maintenancePlanId: workOrder.maintenancePlanId ?? null,\n failureRegisterId: workOrder.failureRegisterId ?? null,\n assignedToId: workOrder.assignedToId ?? null,\n assignedToDisplayName:\n typeof assignedToTitle === 'string' && assignedToTitle.trim()\n ? assignedToTitle.trim()\n : workOrder.assignedToId ?? null,\n assignedEmployeeId: assignedEmployeeId || null,\n sourceType: workOrder.sourceType ?? null,\n dueDate: workOrder.scheduledEnd ?? workOrder.scheduledStart ?? null,\n };\n }\n\n private resolveText(value: unknown): string {\n if (!isString(value)) {\n return '';\n }\n return value.trim();\n }\n\n private async showWarning(content: string): Promise<void> {\n this.toastService.show({\n color: 'warning',\n title: await this.translationService.translateAsync('@general:messages.generic.warning.title'),\n content,\n closeButton: true,\n timeOut: 10000,\n timeOutProgress: true,\n });\n }\n\n /**\n * Work-order approval flow expects `HumanCapitalManagement.Employee` id (`performedById` on WorkReport).\n * `WorkOrder.assignedToId` stores `PersonCore.Person` id.\n */\n private async resolveEmployeeIdByPersonId(personId: string): Promise<string> {\n if (!personId) {\n return '';\n }\n\n const page = await this.entityService\n .withEntity('HumanCapitalManagement', 'Employee')\n .data()\n .query({\n skip: 0,\n take: 1,\n filter: {\n logic: 'and',\n filters: [{ field: 'personId', operator: { type: 'equal' }, value: personId }],\n },\n } as never);\n\n const employee = defaultTo(get(page, 'items[0]'), null) as { id?: string } | null;\n return this.resolveText(employee?.id);\n }\n\n private async resolveMaintenanceTemplateId(\n workOrder: AXMMaintenanceManagementWorkOrderEntityModel,\n explicitTemplateId?: string,\n ): Promise<string> {\n if (explicitTemplateId) {\n return explicitTemplateId;\n }\n\n const currentTemplateId = this.resolveText(workOrder.maintenanceTemplateId);\n if (currentTemplateId) {\n const currentConfig = await this.resolveWorkflowConfig(workOrder);\n if (this.isWorkflowEnabled(currentConfig)) {\n return currentTemplateId;\n }\n }\n\n const assetId = this.resolveText(workOrder.assetId);\n if (!assetId) {\n const content = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.messages.no-workflow-templates-for-asset',\n );\n await this.showWarning(content);\n return '';\n }\n\n const backend = this.createStorageBackend();\n const templateEntityName = `${RootConfig.module.name}.${RootConfig.entities.maintenanceTemplate.name}`;\n const templates = await queryWorkflowTemplatesForAsset(backend, templateEntityName, assetId);\n if (templates.length === 0) {\n const content = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.messages.no-workflow-templates-for-asset',\n );\n await this.showWarning(content);\n return '';\n }\n\n if (templates.length === 1) {\n return templates[0].id;\n }\n\n return (await this.pickMaintenanceTemplate(templates)) ?? '';\n }\n\n private async pickMaintenanceTemplate(templates: MaintenanceTemplateLike[]): Promise<string | null> {\n const locale = this.translationService.getActiveLang() as 'en-US' | 'fa-IR';\n const sorted = [...templates].sort((a, b) => {\n const ta = resolveDisplayLabel(a.title, a.code ?? a.id, locale);\n const tb = resolveDisplayLabel(b.title, b.code ?? b.id, locale);\n return ta.localeCompare(tb, locale, { sensitivity: 'base' });\n });\n\n const title = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.actions.start-flow.select-template.title',\n );\n const content = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.actions.start-flow.select-template.content',\n );\n const cancelLabel = await this.translationService.translateAsync('@general:actions.cancel.title');\n\n return new Promise((resolve) => {\n let settled = false;\n const finish = (value: string | null) => {\n if (settled) {\n return;\n }\n settled = true;\n resolve(value);\n };\n\n const dialog = this.dialogService.open({\n title,\n content,\n type: 'primary',\n orientation: 'vertical',\n closeButton: true,\n buttons: [\n {\n text: cancelLabel,\n color: 'default',\n autofocus: true,\n onClick: () => {\n dialog.close();\n finish(null);\n },\n },\n ...sorted.map((template) => ({\n text: resolveDisplayLabel(template.title, template.code ?? template.id, locale),\n color: 'primary' as const,\n onClick: () => {\n dialog.close();\n finish(template.id);\n },\n })),\n ],\n });\n });\n }\n\n private createStorageBackend(): EntityStorageBackend {\n return {\n getOne: async (entityName, id) => {\n const [module, entity] = entityName.split('.');\n return this.entityService.withEntity(module, entity).data().byKey(id);\n },\n insertOne: async () => null,\n query: async (entityName, request) => {\n const [module, entity] = entityName.split('.');\n return this.entityService.withEntity(module, entity).data().query(request as never);\n },\n };\n }\n\n //#endregion\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import * as i0 from '@angular/core';
|
|
|
4
4
|
import { inject, Injectable } from '@angular/core';
|
|
5
5
|
import { isString } from 'lodash';
|
|
6
6
|
import { RootConfig, AXMWorkOrderStatus } from '@acorex-platform/module-maintenance-management-client/contracts';
|
|
7
|
-
import { A as AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE } from './acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-
|
|
7
|
+
import { A as AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE } from './acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-6cXxZPN1.mjs';
|
|
8
8
|
|
|
9
9
|
//#region ---- Imports ----
|
|
10
10
|
//#endregion
|
|
@@ -93,4 +93,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
93
93
|
}] });
|
|
94
94
|
|
|
95
95
|
export { UpdateWorkOrderInProgressActivity };
|
|
96
|
-
//# sourceMappingURL=acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-
|
|
96
|
+
//# sourceMappingURL=acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-D75YRfD2.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-D75YRfD2.mjs","sources":["../../../../libs/modules/maintenance-management/client/src/lib/features/work-order/workflows/activities/update-work-order-in-progress.activity.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPDebugService } from '@acorex-platform/framework-client/core';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { inject, Injectable } from '@angular/core';\nimport { isString } from 'lodash';\n\nimport { AXMWorkOrderStatus, RootConfig } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport { AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE } from '../work-order-workflow.debug';\nimport type { AXMMaintenanceManagementWorkOrderEntityModel } from '@acorex-platform/module-maintenance-management-client/contracts';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport interface UpdateWorkOrderInProgressInput {\n workOrderId: string;\n}\n\nexport interface UpdateWorkOrderInProgressOutput {\n workOrderId: string;\n statusId: string;\n startedAt: string | null;\n skipped: boolean;\n}\n\n//#endregion\n\n/**\n * Sets the work order to in-progress when it is not already in that state.\n */\n@Injectable({ providedIn: 'root' })\nexport class UpdateWorkOrderInProgressActivity\n implements AXPCommand<UpdateWorkOrderInProgressInput, UpdateWorkOrderInProgressOutput>\n{\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly debug = inject(AXPDebugService);\n\n //#endregion\n\n //#region ---- Command Implementation ----\n\n async execute(\n input: UpdateWorkOrderInProgressInput,\n ): AXPCommandExecuteResultPromise<UpdateWorkOrderInProgressOutput> {\n const workOrderId = this.resolveText(input?.workOrderId);\n if (!workOrderId) {\n return {\n success: false,\n message: { text: 'workOrderId is required' },\n metadata: { outcome: 'Failed' },\n };\n }\n\n const workOrder = (await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workOrder.name)\n .data()\n .byKey(workOrderId)) as AXMMaintenanceManagementWorkOrderEntityModel | null;\n\n if (!workOrder?.id) {\n return {\n success: false,\n message: { text: 'Work order not found' },\n metadata: { outcome: 'NotFound' },\n };\n }\n\n if (workOrder.statusId === AXMWorkOrderStatus.InProgress) {\n return { success: true, kind: 'object',\n data: {\n workOrderId,\n statusId: AXMWorkOrderStatus.InProgress,\n startedAt: workOrder.startedAt ?? null,\n skipped: true,\n },\n metadata: { outcome: 'Done' },\n };\n }\n\n if (workOrder.statusId === AXMWorkOrderStatus.Completed || workOrder.statusId === AXMWorkOrderStatus.SignedOff) {\n return {\n success: false,\n message: { text: 'Work order is already completed.' },\n metadata: { outcome: 'Failed' },\n };\n }\n\n const startedAt = this.resolveText(workOrder.startedAt) || new Date().toISOString();\n await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workOrder.name)\n .data()\n .update(workOrderId, {\n statusId: AXMWorkOrderStatus.InProgress,\n startedAt,\n } as never);\n\n this.debug.trace(\n AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE,\n 'work-order-status',\n 'Work order set to in-progress',\n { workOrderId, startedAt, previousStatusId: workOrder.statusId },\n );\n\n return { success: true, kind: 'object',\n data: {\n workOrderId,\n statusId: AXMWorkOrderStatus.InProgress,\n startedAt,\n skipped: false,\n },\n metadata: { outcome: 'Done' },\n };\n }\n\n //#endregion\n\n //#region ---- Helpers ----\n\n private resolveText(value: unknown): string {\n if (!isString(value)) {\n return '';\n }\n return value.trim();\n }\n\n //#endregion\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@ import * as i0 from '@angular/core';
|
|
|
14
14
|
import { inject, signal, effect, untracked, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
15
15
|
import { get, defaultTo, isString } from 'lodash';
|
|
16
16
|
import { AXMWorkOrderStatus, RootConfig, AXMMaintenanceManagementCommandKeys } from '@acorex-platform/module-maintenance-management-client/contracts';
|
|
17
|
-
import { q as queryWorkflowTemplatesForAsset, r as resolveDisplayLabel } from './acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-
|
|
17
|
+
import { q as queryWorkflowTemplatesForAsset, r as resolveDisplayLabel } from './acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-6cXxZPN1.mjs';
|
|
18
18
|
|
|
19
19
|
//#region ---- Imports ----
|
|
20
20
|
const STARTABLE_STATUSES = new Set([
|
|
@@ -317,4 +317,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
317
317
|
}], ctorParameters: () => [] });
|
|
318
318
|
|
|
319
319
|
export { AXMWorkOrderWorkflowColumnComponent };
|
|
320
|
-
//# sourceMappingURL=acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-
|
|
320
|
+
//# sourceMappingURL=acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-B90OJ-Ol.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-BbyqDKGm.mjs","sources":["../../../../libs/modules/maintenance-management/client/src/lib/features/work-order/widgets/work-order-workflow-column.component.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport {\n AXTranslationModule,\n AXTranslationService,\n} from '@acorex/core/translation';\nimport {\n AXPEntityService,\n getRecordWorkflowInstanceId,\n} from '@acorex-platform/framework-client/layout/entity';\nimport { AXPColumnWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXPCommandService } from '@acorex-platform/framework-client/runtime';\nimport { ChangeDetectionStrategy, Component, effect, inject, signal, untracked } from '@angular/core';\nimport { defaultTo, get, isString } from 'lodash';\n\nimport {\n AXMMaintenanceManagementCommandKeys,\n AXMWorkOrderStatus,\n RootConfig,\n} from '@acorex-platform/module-maintenance-management-client/contracts';\nimport type { AXMMaintenanceManagementMaintenanceTemplateWorkflowConfig } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport {\n type EntityStorageBackend,\n queryWorkflowTemplatesForAsset,\n resolveDisplayLabel,\n} from '../../../middlewares/maintenance-generation.utils';\n\n//#endregion\n\n//#region ---- Types ----\n\ninterface WorkflowTemplateOption {\n id: string;\n title: string;\n}\n\nconst STARTABLE_STATUSES = new Set<string>([\n AXMWorkOrderStatus.Planned,\n AXMWorkOrderStatus.Scheduled,\n AXMWorkOrderStatus.Assigned,\n]);\n\n//#endregion\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axm-work-order-workflow-column',\n host: {\n class: 'w-full block',\n '(click)': 'onColumnClick($event)',\n '(mousedown)': 'onColumnClick($event)',\n '(dblclick)': 'onColumnClick($event)',\n },\n template: `\n <div class=\"w-full\">\n @if (isBusy() || isLoading()) {\n <ax-loading></ax-loading>\n } @else if (activeWorkflowLabel()) {\n <span\n class=\"inline-flex items-center gap-1 text-xs font-medium\"\n [title]=\"activeWorkflowLabel()\"\n >\n <i class=\"fa-light fa-diagram-project fa-fw\"></i>\n <span>{{ activeWorkflowLabel() }}</span>\n </span>\n } @else if (canSelect()) {\n @if (templates().length === 0) {\n <span class=\"text-muted text-xs\">---</span>\n } @else if (templates().length === 1) {\n <ax-button\n class=\"ax-sm\"\n look=\"link\"\n [text]=\"templates()[0].title\"\n (onClick)=\"selectTemplate(templates()[0])\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-play\"></i>\n </ax-prefix>\n </ax-button>\n } @else {\n <ax-button class=\"ax-sm\" look=\"outline\" [text]=\"selectLabel()\">\n <ax-prefix>\n <i class=\"fa-light fa-diagram-project\"></i>\n </ax-prefix>\n <ax-dropdown-panel #panel>\n <ax-button-item-list>\n @for (template of templates(); track template.id) {\n <ax-button-item\n [text]=\"template.title\"\n (onClick)=\"selectTemplate(template)\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-play\"></i>\n </ax-prefix>\n </ax-button-item>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n }\n } @else {\n <span class=\"text-muted text-xs\">---</span>\n }\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AXButtonModule,\n AXDecoratorModule,\n AXDropdownModule,\n AXLoadingModule,\n AXTranslationModule,\n ],\n inputs: ['rawValue', 'rowData'],\n})\nexport class AXMWorkOrderWorkflowColumnComponent extends AXPColumnWidgetComponent<unknown> {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly commandService = inject(AXPCommandService);\n private readonly translation = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- State ----\n\n protected isLoading = signal(false);\n protected isBusy = signal(false);\n protected templates = signal<WorkflowTemplateOption[]>([]);\n protected activeWorkflowLabel = signal('');\n protected canSelect = signal(false);\n protected selectLabel = signal('');\n\n //#endregion\n\n //#region ---- Lifecycle ----\n\n constructor() {\n super();\n effect(() => {\n const row = this.rowData as Record<string, unknown> | undefined;\n untracked(() => {\n void this.syncRowState(row);\n });\n });\n }\n\n //#endregion\n\n //#region ---- UI Handlers ----\n\n /** Prevents grid row default / double-click actions when interacting with this column. */\n protected onColumnClick(event: Event): void {\n event.stopPropagation();\n event.preventDefault();\n }\n\n protected async selectTemplate(\n template: WorkflowTemplateOption,\n ): Promise<void> {\n if (this.isBusy() || !template.id) {\n return;\n }\n\n const row = this.rowData as Record<string, unknown> | undefined;\n const workOrderId = this.resolveText(get(row, 'id'));\n if (!workOrderId) {\n return;\n }\n\n this.isBusy.set(true);\n try {\n const entitySource = `${RootConfig.module.name}.${RootConfig.entities.workOrder.name}`;\n const result = await this.commandService.execute(\n AXMMaintenanceManagementCommandKeys.WorkOrder.StartFlow,\n {\n entity: entitySource,\n data: {\n ...defaultTo(row, {}),\n id: workOrderId,\n maintenanceTemplateId: template.id,\n },\n \n },\n );\n\n if (result?.success) {\n const updated = (await this.entityService\n .withEntity(\n RootConfig.module.name,\n RootConfig.entities.workOrder.name,\n )\n .data()\n .byKey(workOrderId)) as Record<string, unknown> | null;\n if (row && updated) {\n Object.assign(row, updated);\n await this.syncRowState(row);\n }\n } else if (row) {\n const updated = (await this.entityService\n .withEntity(\n RootConfig.module.name,\n RootConfig.entities.workOrder.name,\n )\n .data()\n .byKey(workOrderId)\n .catch(() => null)) as Record<string, unknown> | null;\n if (updated) {\n Object.assign(row, updated);\n await this.syncRowState(row);\n }\n }\n } finally {\n this.isBusy.set(false);\n }\n }\n\n //#endregion\n\n //#region ---- Helpers ----\n\n private async syncRowState(\n row: Record<string, unknown> | undefined,\n ): Promise<void> {\n this.isLoading.set(true);\n try {\n this.selectLabel.set(\n await this.translation.translateAsync(\n '@maintenance-management:work-orders.entities.work-order.fields.workflow-column.select-workflow',\n ),\n );\n\n if (!row) {\n this.templates.set([]);\n this.activeWorkflowLabel.set('');\n this.canSelect.set(false);\n return;\n }\n\n if (getRecordWorkflowInstanceId(row)) {\n this.templates.set([]);\n this.canSelect.set(false);\n this.activeWorkflowLabel.set(this.resolveActiveWorkflowLabel(row));\n return;\n }\n\n const statusId = this.resolveText(get(row, 'statusId'));\n const assetId = this.resolveText(get(row, 'assetId'));\n const canStart = STARTABLE_STATUSES.has(statusId) && !!assetId;\n this.canSelect.set(canStart);\n this.activeWorkflowLabel.set('');\n\n if (!canStart || !assetId) {\n this.templates.set([]);\n return;\n }\n\n const backend = this.createStorageBackend();\n const templateEntityName = `${RootConfig.module.name}.${RootConfig.entities.maintenanceTemplate.name}`;\n const rawTemplates = await queryWorkflowTemplatesForAsset(\n backend,\n templateEntityName,\n assetId,\n );\n const locale = this.translation.getActiveLang() as 'en-US' | 'fa-IR';\n\n this.templates.set(\n [...rawTemplates]\n .sort((a, b) => {\n const ta = resolveDisplayLabel(a.title, a.code ?? a.id, locale);\n const tb = resolveDisplayLabel(b.title, b.code ?? b.id, locale);\n return ta.localeCompare(tb, locale, { sensitivity: 'base' });\n })\n .map((template) => ({\n id: template.id,\n title: resolveDisplayLabel(\n template.title,\n template.code ?? template.id,\n locale,\n ),\n })),\n );\n } finally {\n this.isLoading.set(false);\n }\n }\n\n private resolveActiveWorkflowLabel(row: Record<string, unknown>): string {\n const locale = this.translation.getActiveLang() as 'en-US' | 'fa-IR';\n const workflowConfig = get(row, 'maintenanceTemplate.workflowConfig') as\n | AXMMaintenanceManagementMaintenanceTemplateWorkflowConfig\n | null\n | undefined;\n const workflowName = workflowConfig?.workflowName?.trim();\n if (workflowName) {\n return workflowName;\n }\n\n const templateTitle = get(row, 'maintenanceTemplate.title');\n if (templateTitle) {\n return resolveDisplayLabel(\n templateTitle as Parameters<typeof resolveDisplayLabel>[0],\n this.resolveText(get(row, 'maintenanceTemplateId')),\n locale,\n );\n }\n\n return '';\n }\n\n private createStorageBackend(): EntityStorageBackend {\n return {\n getOne: async (entityName, id) => {\n const [module, entity] = entityName.split('.');\n return this.entityService.withEntity(module, entity).data().byKey(id);\n },\n insertOne: async () => null,\n query: async (entityName, request) => {\n const [module, entity] = entityName.split('.');\n return this.entityService\n .withEntity(module, entity)\n .data()\n .query(request as never);\n },\n };\n }\n\n private resolveText(value: unknown): string {\n if (!isString(value)) {\n return '';\n }\n return value.trim();\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-B90OJ-Ol.mjs","sources":["../../../../libs/modules/maintenance-management/client/src/lib/features/work-order/widgets/work-order-workflow-column.component.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport {\n AXTranslationModule,\n AXTranslationService,\n} from '@acorex/core/translation';\nimport {\n AXPEntityService,\n getRecordWorkflowInstanceId,\n} from '@acorex-platform/framework-client/layout/entity';\nimport { AXPColumnWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXPCommandService } from '@acorex-platform/framework-client/runtime';\nimport { ChangeDetectionStrategy, Component, effect, inject, signal, untracked } from '@angular/core';\nimport { defaultTo, get, isString } from 'lodash';\n\nimport {\n AXMMaintenanceManagementCommandKeys,\n AXMWorkOrderStatus,\n RootConfig,\n} from '@acorex-platform/module-maintenance-management-client/contracts';\nimport type { AXMMaintenanceManagementMaintenanceTemplateWorkflowConfig } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport {\n type EntityStorageBackend,\n queryWorkflowTemplatesForAsset,\n resolveDisplayLabel,\n} from '../../../middlewares/maintenance-generation.utils';\n\n//#endregion\n\n//#region ---- Types ----\n\ninterface WorkflowTemplateOption {\n id: string;\n title: string;\n}\n\nconst STARTABLE_STATUSES = new Set<string>([\n AXMWorkOrderStatus.Planned,\n AXMWorkOrderStatus.Scheduled,\n AXMWorkOrderStatus.Assigned,\n]);\n\n//#endregion\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axm-work-order-workflow-column',\n host: {\n class: 'w-full block',\n '(click)': 'onColumnClick($event)',\n '(mousedown)': 'onColumnClick($event)',\n '(dblclick)': 'onColumnClick($event)',\n },\n template: `\n <div class=\"w-full\">\n @if (isBusy() || isLoading()) {\n <ax-loading></ax-loading>\n } @else if (activeWorkflowLabel()) {\n <span\n class=\"inline-flex items-center gap-1 text-xs font-medium\"\n [title]=\"activeWorkflowLabel()\"\n >\n <i class=\"fa-light fa-diagram-project fa-fw\"></i>\n <span>{{ activeWorkflowLabel() }}</span>\n </span>\n } @else if (canSelect()) {\n @if (templates().length === 0) {\n <span class=\"text-muted text-xs\">---</span>\n } @else if (templates().length === 1) {\n <ax-button\n class=\"ax-sm\"\n look=\"link\"\n [text]=\"templates()[0].title\"\n (onClick)=\"selectTemplate(templates()[0])\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-play\"></i>\n </ax-prefix>\n </ax-button>\n } @else {\n <ax-button class=\"ax-sm\" look=\"outline\" [text]=\"selectLabel()\">\n <ax-prefix>\n <i class=\"fa-light fa-diagram-project\"></i>\n </ax-prefix>\n <ax-dropdown-panel #panel>\n <ax-button-item-list>\n @for (template of templates(); track template.id) {\n <ax-button-item\n [text]=\"template.title\"\n (onClick)=\"selectTemplate(template)\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-play\"></i>\n </ax-prefix>\n </ax-button-item>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n }\n } @else {\n <span class=\"text-muted text-xs\">---</span>\n }\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AXButtonModule,\n AXDecoratorModule,\n AXDropdownModule,\n AXLoadingModule,\n AXTranslationModule,\n ],\n inputs: ['rawValue', 'rowData'],\n})\nexport class AXMWorkOrderWorkflowColumnComponent extends AXPColumnWidgetComponent<unknown> {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly commandService = inject(AXPCommandService);\n private readonly translation = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- State ----\n\n protected isLoading = signal(false);\n protected isBusy = signal(false);\n protected templates = signal<WorkflowTemplateOption[]>([]);\n protected activeWorkflowLabel = signal('');\n protected canSelect = signal(false);\n protected selectLabel = signal('');\n\n //#endregion\n\n //#region ---- Lifecycle ----\n\n constructor() {\n super();\n effect(() => {\n const row = this.rowData as Record<string, unknown> | undefined;\n untracked(() => {\n void this.syncRowState(row);\n });\n });\n }\n\n //#endregion\n\n //#region ---- UI Handlers ----\n\n /** Prevents grid row default / double-click actions when interacting with this column. */\n protected onColumnClick(event: Event): void {\n event.stopPropagation();\n event.preventDefault();\n }\n\n protected async selectTemplate(\n template: WorkflowTemplateOption,\n ): Promise<void> {\n if (this.isBusy() || !template.id) {\n return;\n }\n\n const row = this.rowData as Record<string, unknown> | undefined;\n const workOrderId = this.resolveText(get(row, 'id'));\n if (!workOrderId) {\n return;\n }\n\n this.isBusy.set(true);\n try {\n const entitySource = `${RootConfig.module.name}.${RootConfig.entities.workOrder.name}`;\n const result = await this.commandService.execute(\n AXMMaintenanceManagementCommandKeys.WorkOrder.StartFlow,\n {\n entity: entitySource,\n data: {\n ...defaultTo(row, {}),\n id: workOrderId,\n maintenanceTemplateId: template.id,\n },\n \n },\n );\n\n if (result?.success) {\n const updated = (await this.entityService\n .withEntity(\n RootConfig.module.name,\n RootConfig.entities.workOrder.name,\n )\n .data()\n .byKey(workOrderId)) as Record<string, unknown> | null;\n if (row && updated) {\n Object.assign(row, updated);\n await this.syncRowState(row);\n }\n } else if (row) {\n const updated = (await this.entityService\n .withEntity(\n RootConfig.module.name,\n RootConfig.entities.workOrder.name,\n )\n .data()\n .byKey(workOrderId)\n .catch(() => null)) as Record<string, unknown> | null;\n if (updated) {\n Object.assign(row, updated);\n await this.syncRowState(row);\n }\n }\n } finally {\n this.isBusy.set(false);\n }\n }\n\n //#endregion\n\n //#region ---- Helpers ----\n\n private async syncRowState(\n row: Record<string, unknown> | undefined,\n ): Promise<void> {\n this.isLoading.set(true);\n try {\n this.selectLabel.set(\n await this.translation.translateAsync(\n '@maintenance-management:work-orders.entities.work-order.fields.workflow-column.select-workflow',\n ),\n );\n\n if (!row) {\n this.templates.set([]);\n this.activeWorkflowLabel.set('');\n this.canSelect.set(false);\n return;\n }\n\n if (getRecordWorkflowInstanceId(row)) {\n this.templates.set([]);\n this.canSelect.set(false);\n this.activeWorkflowLabel.set(this.resolveActiveWorkflowLabel(row));\n return;\n }\n\n const statusId = this.resolveText(get(row, 'statusId'));\n const assetId = this.resolveText(get(row, 'assetId'));\n const canStart = STARTABLE_STATUSES.has(statusId) && !!assetId;\n this.canSelect.set(canStart);\n this.activeWorkflowLabel.set('');\n\n if (!canStart || !assetId) {\n this.templates.set([]);\n return;\n }\n\n const backend = this.createStorageBackend();\n const templateEntityName = `${RootConfig.module.name}.${RootConfig.entities.maintenanceTemplate.name}`;\n const rawTemplates = await queryWorkflowTemplatesForAsset(\n backend,\n templateEntityName,\n assetId,\n );\n const locale = this.translation.getActiveLang() as 'en-US' | 'fa-IR';\n\n this.templates.set(\n [...rawTemplates]\n .sort((a, b) => {\n const ta = resolveDisplayLabel(a.title, a.code ?? a.id, locale);\n const tb = resolveDisplayLabel(b.title, b.code ?? b.id, locale);\n return ta.localeCompare(tb, locale, { sensitivity: 'base' });\n })\n .map((template) => ({\n id: template.id,\n title: resolveDisplayLabel(\n template.title,\n template.code ?? template.id,\n locale,\n ),\n })),\n );\n } finally {\n this.isLoading.set(false);\n }\n }\n\n private resolveActiveWorkflowLabel(row: Record<string, unknown>): string {\n const locale = this.translation.getActiveLang() as 'en-US' | 'fa-IR';\n const workflowConfig = get(row, 'maintenanceTemplate.workflowConfig') as\n | AXMMaintenanceManagementMaintenanceTemplateWorkflowConfig\n | null\n | undefined;\n const workflowName = workflowConfig?.workflowName?.trim();\n if (workflowName) {\n return workflowName;\n }\n\n const templateTitle = get(row, 'maintenanceTemplate.title');\n if (templateTitle) {\n return resolveDisplayLabel(\n templateTitle as Parameters<typeof resolveDisplayLabel>[0],\n this.resolveText(get(row, 'maintenanceTemplateId')),\n locale,\n );\n }\n\n return '';\n }\n\n private createStorageBackend(): EntityStorageBackend {\n return {\n getOne: async (entityName, id) => {\n const [module, entity] = entityName.split('.');\n return this.entityService.withEntity(module, entity).data().byKey(id);\n },\n insertOne: async () => null,\n query: async (entityName, request) => {\n const [module, entity] = entityName.split('.');\n return this.entityService\n .withEntity(module, entity)\n .data()\n .query(request as never);\n },\n };\n }\n\n private resolveText(value: unknown): string {\n if (!isString(value)) {\n return '';\n }\n return value.trim();\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { a as
|
|
1
|
+
export { a as AXMMaintenanceIntervalComponent, b as AXMMaintenanceManagementMenuProvider, c as AXMMaintenanceManagementModule, d as AXMMaintenanceManagementPermissionDefinitionProvider, e as AXMMaintenanceManagementSearchCommandProvider, A as AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE, f as createWorkOrderExecutionWorkflowDefinition, w as workOrderExecutionWorkflowDefinition, g as workOrderExecutionWorkflowName } from './acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-6cXxZPN1.mjs';
|
|
2
2
|
//# sourceMappingURL=acorex-platform-module-maintenance-management-client.mjs.map
|
|
@@ -25,6 +25,35 @@
|
|
|
25
25
|
"description": "Questionnaires, question bank items, and workflow definitions for asset maintenance and failure management."
|
|
26
26
|
}
|
|
27
27
|
},
|
|
28
|
+
"maintenance-interval": {
|
|
29
|
+
"title": "Maintenance Interval",
|
|
30
|
+
"description": "Configure which maintenance intervals create work.",
|
|
31
|
+
"every": "Every",
|
|
32
|
+
"empty": "This asset type has no maintenance intervals.",
|
|
33
|
+
"none": "No maintenance intervals are enabled.",
|
|
34
|
+
"kinds": {
|
|
35
|
+
"date": "Date",
|
|
36
|
+
"distance": "Distance",
|
|
37
|
+
"operating-hours": "Operating Hours",
|
|
38
|
+
"operation-count": "Operation Count"
|
|
39
|
+
},
|
|
40
|
+
"units": {
|
|
41
|
+
"kilometer": "Kilometres",
|
|
42
|
+
"mile": "Miles",
|
|
43
|
+
"hour": "Hours",
|
|
44
|
+
"operation": "Operations"
|
|
45
|
+
},
|
|
46
|
+
"trigger-logic": {
|
|
47
|
+
"title": "Trigger Condition",
|
|
48
|
+
"any": "Create maintenance when any interval is reached",
|
|
49
|
+
"all": "Create maintenance when all intervals are reached"
|
|
50
|
+
},
|
|
51
|
+
"validation": {
|
|
52
|
+
"interval": "Enter a number greater than zero.",
|
|
53
|
+
"integer": "Enter a whole number greater than zero.",
|
|
54
|
+
"schedule": "Set a schedule for the date interval."
|
|
55
|
+
}
|
|
56
|
+
},
|
|
28
57
|
"maintenance-types": {
|
|
29
58
|
"terms": {
|
|
30
59
|
"maintenance-type": "Maintenance Type",
|
|
@@ -58,9 +87,6 @@
|
|
|
58
87
|
},
|
|
59
88
|
"autoGeneratePlan": {
|
|
60
89
|
"title": "Auto Generate Plan"
|
|
61
|
-
},
|
|
62
|
-
"hasSchedule": {
|
|
63
|
-
"title": "Has Schedule"
|
|
64
90
|
}
|
|
65
91
|
},
|
|
66
92
|
"related-entities": {
|
|
@@ -185,9 +211,6 @@
|
|
|
185
211
|
},
|
|
186
212
|
"auto-generate-plan": {
|
|
187
213
|
"title": "Auto Generate Plan"
|
|
188
|
-
},
|
|
189
|
-
"has-schedule": {
|
|
190
|
-
"title": "Has Schedule"
|
|
191
214
|
}
|
|
192
215
|
},
|
|
193
216
|
"related-entities": {
|
|
@@ -282,6 +305,15 @@
|
|
|
282
305
|
"schedule": {
|
|
283
306
|
"title": "Schedule"
|
|
284
307
|
},
|
|
308
|
+
"interval-states": {
|
|
309
|
+
"title": "Interval States",
|
|
310
|
+
"validation": {
|
|
311
|
+
"invalid": "Enter a distance, operating hours, or operation count state.",
|
|
312
|
+
"date-kind": "Date intervals are not stored as interval state.",
|
|
313
|
+
"negative": "Interval state values must be zero or greater.",
|
|
314
|
+
"next-before-last": "Next due value cannot be lower than the last completed value."
|
|
315
|
+
}
|
|
316
|
+
},
|
|
285
317
|
"assigned-to-id": {
|
|
286
318
|
"title": "Assigned To"
|
|
287
319
|
},
|