@acorex-platform/module-maintenance-management-client 0.0.70 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (17) hide show
  1. package/fesm2022/{acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-DzBAGvuZ.mjs → acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-CGjcOjjv.mjs} +12 -12
  2. package/fesm2022/{acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-DzBAGvuZ.mjs.map → acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-CGjcOjjv.mjs.map} +1 -1
  3. package/fesm2022/{acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-BWN_yXC0.mjs → acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-BXKKfu4I.mjs} +2 -2
  4. package/fesm2022/{acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-BWN_yXC0.mjs.map → acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-BXKKfu4I.mjs.map} +1 -1
  5. package/fesm2022/{acorex-platform-module-maintenance-management-client-maintenance-interval-widget-edit.component-6MzY-uB0.mjs → acorex-platform-module-maintenance-management-client-maintenance-interval-widget-edit.component-Be1Nup4H.mjs} +2 -2
  6. package/fesm2022/{acorex-platform-module-maintenance-management-client-maintenance-interval-widget-edit.component-6MzY-uB0.mjs.map → acorex-platform-module-maintenance-management-client-maintenance-interval-widget-edit.component-Be1Nup4H.mjs.map} +1 -1
  7. package/fesm2022/{acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-v1gioM7S.mjs → acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-BJUgm59a.mjs} +2 -2
  8. package/fesm2022/{acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-v1gioM7S.mjs.map → acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-BJUgm59a.mjs.map} +1 -1
  9. package/fesm2022/{acorex-platform-module-maintenance-management-client-start-work-order-flow.command-CW_9ROmv.mjs → acorex-platform-module-maintenance-management-client-start-work-order-flow.command-Bg1do_Uu.mjs} +115 -7
  10. package/fesm2022/acorex-platform-module-maintenance-management-client-start-work-order-flow.command-Bg1do_Uu.mjs.map +1 -0
  11. package/fesm2022/{acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-BTaGzrEt.mjs → acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-B8vjsOI_.mjs} +2 -2
  12. package/fesm2022/{acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-BTaGzrEt.mjs.map → acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-B8vjsOI_.mjs.map} +1 -1
  13. package/fesm2022/{acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-BtDv8ueZ.mjs → acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-DG80hqRj.mjs} +2 -2
  14. package/fesm2022/{acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-BtDv8ueZ.mjs.map → acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-DG80hqRj.mjs.map} +1 -1
  15. package/fesm2022/acorex-platform-module-maintenance-management-client.mjs +1 -1
  16. package/package.json +2 -2
  17. package/fesm2022/acorex-platform-module-maintenance-management-client-start-work-order-flow.command-CW_9ROmv.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-BtDv8ueZ.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":";;;;;;;;;;;;;;;;;;AAAA;AAwCA,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAS;AACzC,IAAA,kBAAkB,CAAC,OAAO;AAC1B,IAAA,kBAAkB,CAAC,SAAS;AAC5B,IAAA,kBAAkB,CAAC,QAAQ;AAC5B,CAAA,CAAC;AAEF;AAEA;AAwEM,MAAO,mCAAoC,SAAQ,wBAAiC,CAAA;;;AAsBxF,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;;AApBQ,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC1C,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,oBAAoB,CAAC;;;QAMjD,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,KAAK;sFAAC;QACzB,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,KAAK;mFAAC;QACtB,IAAA,CAAA,SAAS,GAAG,MAAM,CAA2B,EAAE;sFAAC;QAChD,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,EAAE;gGAAC;QAChC,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,KAAK;sFAAC;QACzB,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,EAAE;wFAAC;QAQhC,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAA8C;YAC/D,SAAS,CAAC,MAAK;AACb,gBAAA,KAAK,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;AAC7B,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;;;;AAOU,IAAA,aAAa,CAAC,KAAY,EAAA;QAClC,KAAK,CAAC,eAAe,EAAE;QACvB,KAAK,CAAC,cAAc,EAAE;IACxB;IAEU,MAAM,cAAc,CAC5B,QAAgC,EAAA;QAEhC,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;YACjC;QACF;AAEA,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAA8C;AAC/D,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW,EAAE;YAChB;QACF;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,QAAA,IAAI;AACF,YAAA,MAAM,YAAY,GAAG,CAAA,EAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE;AACtF,YAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC9C,mCAAmC,CAAC,SAAS,CAAC,SAAS,EACvD;AACE,gBAAA,MAAM,EAAE,YAAY;AACpB,gBAAA,IAAI,EAAE;AACJ,oBAAA,GAAG,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC;AACrB,oBAAA,EAAE,EAAE,WAAW;oBACf,qBAAqB,EAAE,QAAQ,CAAC,EAAE;AACnC,iBAAA;AAEF,aAAA,CACF;AAED,YAAA,IAAI,MAAM,EAAE,OAAO,EAAE;AACnB,gBAAA,MAAM,OAAO,IAAI,MAAM,IAAI,CAAC;AACzB,qBAAA,UAAU,CACT,UAAU,CAAC,MAAM,CAAC,IAAI,EACtB,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI;AAEnC,qBAAA,IAAI;AACJ,qBAAA,KAAK,CAAC,WAAW,CAAC,CAAmC;AACxD,gBAAA,IAAI,GAAG,IAAI,OAAO,EAAE;AAClB,oBAAA,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC;AAC3B,oBAAA,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;gBAC9B;YACF;iBAAO,IAAI,GAAG,EAAE;AACd,gBAAA,MAAM,OAAO,IAAI,MAAM,IAAI,CAAC;AACzB,qBAAA,UAAU,CACT,UAAU,CAAC,MAAM,CAAC,IAAI,EACtB,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI;AAEnC,qBAAA,IAAI;qBACJ,KAAK,CAAC,WAAW;AACjB,qBAAA,KAAK,CAAC,MAAM,IAAI,CAAC,CAAmC;gBACvD,IAAI,OAAO,EAAE;AACX,oBAAA,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC;AAC3B,oBAAA,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;gBAC9B;YACF;QACF;gBAAU;AACR,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QACxB;IACF;;;IAMQ,MAAM,YAAY,CACxB,GAAwC,EAAA;AAExC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAClB,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CACnC,gGAAgG,CACjG,CACF;YAED,IAAI,CAAC,GAAG,EAAE;AACR,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;AACtB,gBAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;AAChC,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;gBACzB;YACF;AAEA,YAAA,IAAI,2BAA2B,CAAC,GAAG,CAAC,EAAE;AACpC,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;AACtB,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,gBAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC;gBAClE;YACF;AAEA,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AACrD,YAAA,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO;AAC9D,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC5B,YAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;AAEhC,YAAA,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,EAAE;AACzB,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB;YACF;AAEA,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,EAAE;AAC3C,YAAA,MAAM,kBAAkB,GAAG,CAAA,EAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,EAAE;YACtG,MAAM,YAAY,GAAG,MAAM,8BAA8B,CACvD,OAAO,EACP,kBAAkB,EAClB,OAAO,CACR;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,EAAuB;YAEpE,IAAI,CAAC,SAAS,CAAC,GAAG,CAChB,CAAC,GAAG,YAAY;AACb,iBAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACb,gBAAA,MAAM,EAAE,GAAG,mBAAmB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC;AAC/D,gBAAA,MAAM,EAAE,GAAG,mBAAmB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC;AAC/D,gBAAA,OAAO,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;AAC9D,YAAA,CAAC;AACA,iBAAA,GAAG,CAAC,CAAC,QAAQ,MAAM;gBAClB,EAAE,EAAE,QAAQ,CAAC,EAAE;AACf,gBAAA,KAAK,EAAE,mBAAmB,CACxB,QAAQ,CAAC,KAAK,EACd,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,EAAE,EAC5B,MAAM,CACP;aACF,CAAC,CAAC,CACN;QACH;gBAAU;AACR,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;QAC3B;IACF;AAEQ,IAAA,0BAA0B,CAAC,GAA4B,EAAA;QAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,EAAuB;QACpE,MAAM,cAAc,GAAG,GAAG,CAAC,GAAG,EAAE,oCAAoC,CAGvD;QACb,MAAM,YAAY,GAAG,cAAc,EAAE,YAAY,EAAE,IAAI,EAAE;QACzD,IAAI,YAAY,EAAE;AAChB,YAAA,OAAO,YAAY;QACrB;QAEA,MAAM,aAAa,GAAG,GAAG,CAAC,GAAG,EAAE,2BAA2B,CAAC;QAC3D,IAAI,aAAa,EAAE;AACjB,YAAA,OAAO,mBAAmB,CACxB,aAA0D,EAC1D,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC,EACnD,MAAM,CACP;QACH;AAEA,QAAA,OAAO,EAAE;IACX;IAEQ,oBAAoB,GAAA;QAC1B,OAAO;AACL,YAAA,MAAM,EAAE,OAAO,UAAU,EAAE,EAAE,KAAI;AAC/B,gBAAA,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;AAC9C,gBAAA,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;YACvE,CAAC;AACD,YAAA,SAAS,EAAE,YAAY,IAAI;AAC3B,YAAA,KAAK,EAAE,OAAO,UAAU,EAAE,OAAO,KAAI;AACnC,gBAAA,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;gBAC9C,OAAO,IAAI,CAAC;AACT,qBAAA,UAAU,CAAC,MAAM,EAAE,MAAM;AACzB,qBAAA,IAAI;qBACJ,KAAK,CAAC,OAAgB,CAAC;YAC5B,CAAC;SACF;IACH;AAEQ,IAAA,WAAW,CAAC,KAAc,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACpB,YAAA,OAAO,EAAE;QACX;AACA,QAAA,OAAO,KAAK,CAAC,IAAI,EAAE;IACrB;8GAzNW,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mCAAmC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,EAAA,cAAA,EAAA,cAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA9DpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAGC,cAAc,mwBACd,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,8IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,eAAe,8KACf,mBAAmB,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIV,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAtE/C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gCAAgC;AAC1C,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,cAAc;AACrB,wBAAA,SAAS,EAAE,uBAAuB;AAClC,wBAAA,aAAa,EAAE,uBAAuB;AACtC,wBAAA,YAAY,EAAE,uBAAuB;AACtC,qBAAA;AACD,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmDT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,OAAO,EAAE;wBACP,cAAc;wBACd,iBAAiB;wBACjB,gBAAgB;wBAChB,eAAe;wBACf,mBAAmB;AACpB,qBAAA;AACD,oBAAA,MAAM,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC;AAChC,iBAAA;;;"}
1
+ {"version":3,"file":"acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-DG80hqRj.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 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-DzBAGvuZ.mjs';
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-CGjcOjjv.mjs';
2
2
  //# sourceMappingURL=acorex-platform-module-maintenance-management-client.mjs.map
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@acorex-platform/module-maintenance-management-client",
3
- "version": "0.0.70",
3
+ "version": "1.0.1",
4
4
  "sideEffects": false,
5
5
  "peerDependencies": {
6
- "@acorex-platform/module-asset-management-client": "0.0.70",
6
+ "@acorex-platform/module-asset-management-client": "1.0.1",
7
7
  "@angular/common": "^21.0.0 || ^22.0.0",
8
8
  "@angular/core": "^21.0.0 || ^22.0.0"
9
9
  },
@@ -1 +0,0 @@
1
- {"version":3,"file":"acorex-platform-module-maintenance-management-client-start-work-order-flow.command-CW_9ROmv.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 /** Interval workflow checklist → approval `preChecklistQuestionnaireId`. */\n checklist?: string;\n data?: Record<string, unknown>;\n options?: { maintenanceTemplateId?: string; checklist?: 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 checklistOverride =\n this.resolveText(get(input, 'checklist')) || this.resolveText(get(input, 'options.checklist'));\n const workflowInputs = this.buildWorkflowInputs(\n workOrder,\n workflowConfig,\n assignedEmployeeId,\n assetIdentifiers,\n checklistOverride || undefined,\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 = this.resolveExecutionWorkflowName(workflowConfig!);\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 /**\n * Interval templates bind `maintenance-interval-work-order` for due-check creation.\n * Manual StartFlow continues with `defaultInput.executionWorkflowName` when present.\n */\n private resolveExecutionWorkflowName(\n workflowConfig: AXMMaintenanceManagementMaintenanceTemplateWorkflowConfig,\n ): string {\n const executionName = this.resolveText(get(workflowConfig, 'defaultInput.executionWorkflowName'));\n if (executionName) {\n return executionName;\n }\n return workflowConfig.workflowName.trim();\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 checklistOverride?: string,\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 // Interval workflow input `checklist` maps to approval flow `preChecklistQuestionnaireId`.\n const checklistId =\n this.resolveText(checklistOverride) ||\n this.resolveText(templateDefaults['checklist']) ||\n this.resolveText(templateDefaults['preChecklistQuestionnaireId']);\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 ...(checklistId ? { preChecklistQuestionnaireId: checklistId, checklist: checklistId } : {}),\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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"}