@acorex-platform/module-maintenance-management-client 0.0.54 → 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.
Files changed (93) hide show
  1. package/fesm2022/{acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-CGfPQtJ8.mjs → acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-6cXxZPN1.mjs} +477 -64
  2. package/fesm2022/acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-6cXxZPN1.mjs.map +1 -0
  3. package/fesm2022/acorex-platform-module-maintenance-management-client-contracts-entities-maintenance-plan.mjs +234 -22
  4. package/fesm2022/acorex-platform-module-maintenance-management-client-contracts-entities-maintenance-plan.mjs.map +1 -1
  5. package/fesm2022/acorex-platform-module-maintenance-management-client-contracts-entities-maintenance-template.mjs +2 -23
  6. package/fesm2022/acorex-platform-module-maintenance-management-client-contracts-entities-maintenance-template.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-module-maintenance-management-client-contracts-entities-maintenance-type.mjs +0 -23
  8. package/fesm2022/acorex-platform-module-maintenance-management-client-contracts-entities-maintenance-type.mjs.map +1 -1
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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
  21. 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
  22. 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
  23. 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
  24. 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
  25. 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
  26. 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
  27. 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
  28. 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
  29. 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
  30. 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
  31. 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
  32. 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
  33. 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
  34. 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
  35. 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
  36. 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
  37. 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
  38. 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
  39. 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
  40. 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
  41. 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
  42. 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
  43. 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
  44. 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
  45. 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
  46. package/fesm2022/acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-plan.entity-DZp6tUTX.mjs.map +1 -0
  47. 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
  48. 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
  49. 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
  50. 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
  51. 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
  52. 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
  53. 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
  54. package/fesm2022/acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template.entity-DgtyyggM.mjs.map +1 -0
  55. 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
  56. package/fesm2022/acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-type.entity-D3ipDMzR.mjs.map +1 -0
  57. 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
  58. 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
  59. 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
  60. 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
  61. 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
  62. 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
  63. package/fesm2022/acorex-platform-module-maintenance-management-client-contracts-entity-catalog.mjs +1 -1
  64. package/fesm2022/acorex-platform-module-maintenance-management-client-contracts.mjs +306 -1
  65. package/fesm2022/acorex-platform-module-maintenance-management-client-contracts.mjs.map +1 -1
  66. package/fesm2022/{acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-Dk2th4Rc.mjs → acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-DDvUWUU5.mjs} +2 -2
  67. package/fesm2022/{acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-Dk2th4Rc.mjs.map → acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-DDvUWUU5.mjs.map} +1 -1
  68. package/fesm2022/acorex-platform-module-maintenance-management-client-maintenance-interval-widget-edit.component-CUcsLsuh.mjs +54 -0
  69. package/fesm2022/acorex-platform-module-maintenance-management-client-maintenance-interval-widget-edit.component-CUcsLsuh.mjs.map +1 -0
  70. package/fesm2022/acorex-platform-module-maintenance-management-client-maintenance-interval-widget-view.component-CM0Wokah.mjs +121 -0
  71. package/fesm2022/acorex-platform-module-maintenance-management-client-maintenance-interval-widget-view.component-CM0Wokah.mjs.map +1 -0
  72. package/fesm2022/acorex-platform-module-maintenance-management-client-maintenance-interval-widget.kinds-D8Hnq0ct.mjs +22 -0
  73. package/fesm2022/acorex-platform-module-maintenance-management-client-maintenance-interval-widget.kinds-D8Hnq0ct.mjs.map +1 -0
  74. package/fesm2022/{acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-BvFTVTKQ.mjs → acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-BiD6NYBT.mjs} +2 -2
  75. package/fesm2022/{acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-BvFTVTKQ.mjs.map → acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-BiD6NYBT.mjs.map} +1 -1
  76. package/fesm2022/{acorex-platform-module-maintenance-management-client-start-work-order-flow.command-BJeww85O.mjs → acorex-platform-module-maintenance-management-client-start-work-order-flow.command-B5Ko0JyG.mjs} +8 -5
  77. package/fesm2022/acorex-platform-module-maintenance-management-client-start-work-order-flow.command-B5Ko0JyG.mjs.map +1 -0
  78. package/fesm2022/{acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-D0Pv7gvX.mjs → acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-D75YRfD2.mjs} +2 -2
  79. package/fesm2022/{acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-D0Pv7gvX.mjs.map → acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-D75YRfD2.mjs.map} +1 -1
  80. package/fesm2022/{acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-BwOeeKLn.mjs → acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-B90OJ-Ol.mjs} +2 -2
  81. package/fesm2022/{acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-BwOeeKLn.mjs.map → acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-B90OJ-Ol.mjs.map} +1 -1
  82. package/fesm2022/acorex-platform-module-maintenance-management-client.mjs +1 -1
  83. package/i18n/en-AU/maintenance-management.json +2046 -0
  84. package/i18n/en-US/maintenance-management.json +2046 -0
  85. package/i18n/fa-IR/maintenance-management.json +2033 -0
  86. package/package.json +1 -1
  87. package/types/acorex-platform-module-maintenance-management-client-contracts.d.ts +182 -84
  88. package/types/acorex-platform-module-maintenance-management-client.d.ts +59 -7
  89. package/fesm2022/acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-CGfPQtJ8.mjs.map +0 -1
  90. package/fesm2022/acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-plan.entity-Da5_SUPA.mjs.map +0 -1
  91. package/fesm2022/acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template.entity-xx7GbT-x.mjs.map +0 -1
  92. package/fesm2022/acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-type.entity-BtBo0c-c.mjs.map +0 -1
  93. package/fesm2022/acorex-platform-module-maintenance-management-client-start-work-order-flow.command-BJeww85O.mjs.map +0 -1
@@ -1,15 +1,29 @@
1
+ import * as i2 from '@acorex/components/check-box';
2
+ import { AXCheckBoxModule } from '@acorex/components/check-box';
3
+ import * as i2$1 from '@acorex/components/decorators';
4
+ import { AXDecoratorModule } from '@acorex/components/decorators';
5
+ import { AXLabelComponent } from '@acorex/components/label';
6
+ import * as i4 from '@acorex/components/number-box';
7
+ import { AXNumberBoxModule } from '@acorex/components/number-box';
8
+ import { AXSchedulerPickerComponent } from '@acorex/components/scheduler-picker';
9
+ import * as i5 from '@acorex/components/selection-list';
10
+ import { AXSelectionListModule } from '@acorex/components/selection-list';
11
+ import * as i6 from '@acorex/core/translation';
12
+ import { AXTranslationModule, isValidMultiLanguageObject, resolveMultiLanguageString, AXTranslationService, createMultiLanguageString } from '@acorex/core/translation';
13
+ import { AXMMaintenanceIntervalUnit, emptyAXMMaintenanceIntervalConfig, AXMMaintenanceIntervalTriggerLogic, emptyAXMMaintenanceIntervalDraft, buildAXMMaintenanceIntervalConfig, draftFromAXMMaintenanceIntervalConfig, isAXMMaintenanceMeterKind, isAXMMaintenanceIntervalUnitForKind, isAXMMaintenanceIntervalKind, readMaintenancePlanCalendarSchedule, AXMWorkOrderSourceType, AXMWorkOrderStatus, RootConfig, readMaintenanceIntervalStates, resolveMaintenanceIntervalStates, AXM_MAINTENANCE_INTERVAL_STATE_ERRORS, AXMMaintenanceManagementCommandKeys, MM_CATALOG_SCOPE_MN, AXM_MAINTENANCE_INTERVAL_WIDGET, AXPAssetsMaintenancePermissionKeys, AXMMaintenanceManagementMenuKeys } from '@acorex-platform/module-maintenance-management-client/contracts';
14
+ import { AsyncPipe } from '@angular/common';
15
+ import * as i0 from '@angular/core';
16
+ import { input, output, signal, computed, effect, ChangeDetectionStrategy, Component, inject, Injectable, NgModule } from '@angular/core';
17
+ import * as i1 from '@angular/forms';
18
+ import { FormsModule } from '@angular/forms';
1
19
  import { AXPSessionService, AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';
2
20
  import { AXP_MENU_PROVIDER, AXP_SEARCH_PROVIDER, AXP_STATUS_PROVIDERS, AXPSearchCommandProvider, createEntityCommandOptions } from '@acorex-platform/framework-client/common';
3
21
  import { AXPDebugService, AXP_CATALOG_SCOPE_DEFINITION_PROVIDER, AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER, provideLazyProvider } from '@acorex-platform/framework-client/core';
4
- import { AXPEntityStorageService, AXPEntityDefinitionRegistryService, AXPEntityDataSelectorService, AXPEntityService, AXP_ENTITY_STORAGE_MIDDLEWARE } from '@acorex-platform/framework-client/layout/entity';
5
- import { AXP_WIDGET_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/layout/widget-core';
22
+ import { AXPEntityStorageService, AXPEntityDefinitionRegistryService, AXPEntityDataSelectorService, AXPMiddlewareAbortError, AXPEntityService, AXP_ENTITY_STORAGE_MIDDLEWARE } from '@acorex-platform/framework-client/layout/entity';
23
+ import { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_WIDGET_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/layout/widget-core';
6
24
  import { AXPCommandService, provideCommandMiddleware, provideCommandSetups } from '@acorex-platform/framework-client/runtime';
7
- import * as i0 from '@angular/core';
8
- import { inject, Injectable, NgModule } from '@angular/core';
9
- import { AXMWorkOrderSourceType, AXMWorkOrderStatus, RootConfig, AXMMaintenanceManagementCommandKeys, MM_CATALOG_SCOPE_MN, AXPAssetsMaintenancePermissionKeys, AXMMaintenanceManagementMenuKeys } from '@acorex-platform/module-maintenance-management-client/contracts';
10
25
  import { AXDialogService } from '@acorex/components/dialog';
11
26
  import { AXToastService } from '@acorex/components/toast';
12
- import { isValidMultiLanguageObject, resolveMultiLanguageString, AXTranslationService, createMultiLanguageString } from '@acorex/core/translation';
13
27
  import { AXP_IDENTIFIER_SERVICE } from '@acorex-platform/module-identifier-management-client';
14
28
  import { isString, get, isNumber, defaultTo, isObject, isEmpty, isNil } from 'lodash';
15
29
  import { AXPEntityCommandScope } from '@acorex-platform/framework-shared/entity';
@@ -21,6 +35,288 @@ import { AXMAssetManagementCommandKeys } from '@acorex-platform/module-asset-man
21
35
  const AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE = 'maintenance-management';
22
36
  //#endregion
23
37
 
38
+ //#endregion
39
+ //#region ----- Constants -----
40
+ const I18N$2 = '@maintenance-management:maintenance-interval';
41
+ const KIND_ORDER = ['date', 'distance', 'operating-hours', 'operation-count'];
42
+ const LABEL_KEYS = {
43
+ date: `${I18N$2}.kinds.date`,
44
+ distance: `${I18N$2}.kinds.distance`,
45
+ 'operating-hours': `${I18N$2}.kinds.operating-hours`,
46
+ 'operation-count': `${I18N$2}.kinds.operation-count`,
47
+ };
48
+ const ERROR_KEYS = {
49
+ schedule: `${I18N$2}.validation.schedule`,
50
+ interval: `${I18N$2}.validation.interval`,
51
+ integer: `${I18N$2}.validation.integer`,
52
+ };
53
+ const UNIT_LABEL_KEYS = {
54
+ [AXMMaintenanceIntervalUnit.Kilometer]: `${I18N$2}.units.kilometer`,
55
+ [AXMMaintenanceIntervalUnit.Mile]: `${I18N$2}.units.mile`,
56
+ [AXMMaintenanceIntervalUnit.Hour]: `${I18N$2}.units.hour`,
57
+ [AXMMaintenanceIntervalUnit.Operation]: `${I18N$2}.units.operation`,
58
+ };
59
+ /** Same starting value the scheduler-picker widget uses when a schedule is empty. */
60
+ function createDefaultSchedule() {
61
+ return {
62
+ mode: 'daily',
63
+ interval: 1,
64
+ startCondition: { type: 'now', startDate: new Date() },
65
+ recurrence: {},
66
+ endCondition: { type: 'never' },
67
+ };
68
+ }
69
+ function stable(value) {
70
+ return JSON.stringify(value, (_key, item) => (item instanceof Date ? item.toISOString() : item));
71
+ }
72
+ function configsEqual(left, right) {
73
+ const normalized = left == null ? emptyAXMMaintenanceIntervalConfig() : left;
74
+ return stable(normalized) === stable(right);
75
+ }
76
+ function kindsKey(kinds) {
77
+ return [...new Set(kinds)].sort().join('|');
78
+ }
79
+ function readChoiceId(value) {
80
+ if (typeof value === 'string') {
81
+ return value;
82
+ }
83
+ if (Array.isArray(value)) {
84
+ return readChoiceId(value[0]);
85
+ }
86
+ if (value && typeof value === 'object' && 'id' in value && typeof value.id === 'string') {
87
+ return value.id;
88
+ }
89
+ return '';
90
+ }
91
+ //#endregion
92
+ //#region ----- Component -----
93
+ class AXMMaintenanceIntervalComponent {
94
+ //#endregion
95
+ //#region ----- Lifecycle -----
96
+ constructor() {
97
+ //#region ----- Inputs -----
98
+ this.supportedIntervalKinds = input([], /* @ts-ignore */
99
+ ...(ngDevMode ? [{ debugName: "supportedIntervalKinds" }] : /* istanbul ignore next */ []));
100
+ this.value = input(undefined, /* @ts-ignore */
101
+ ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
102
+ this.disabled = input(false, /* @ts-ignore */
103
+ ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
104
+ //#endregion
105
+ //#region ----- Outputs -----
106
+ this.valueChange = output();
107
+ //#endregion
108
+ //#region ----- Constants -----
109
+ this.titleKey = `${I18N$2}.title`;
110
+ this.everyKey = `${I18N$2}.every`;
111
+ this.emptyKey = `${I18N$2}.empty`;
112
+ this.triggerLogicTitleKey = `${I18N$2}.trigger-logic.title`;
113
+ this.triggerLogic = AXMMaintenanceIntervalTriggerLogic;
114
+ this.distanceUnits = [
115
+ { id: AXMMaintenanceIntervalUnit.Kilometer, text: UNIT_LABEL_KEYS[AXMMaintenanceIntervalUnit.Kilometer] },
116
+ { id: AXMMaintenanceIntervalUnit.Mile, text: UNIT_LABEL_KEYS[AXMMaintenanceIntervalUnit.Mile] },
117
+ ];
118
+ this.triggerLogicItems = [
119
+ { id: AXMMaintenanceIntervalTriggerLogic.Any, text: `${I18N$2}.trigger-logic.any` },
120
+ { id: AXMMaintenanceIntervalTriggerLogic.All, text: `${I18N$2}.trigger-logic.all` },
121
+ ];
122
+ this.scheduleSettings = {
123
+ mode: 'daily',
124
+ showStartCondition: true,
125
+ showEndConditions: true,
126
+ showExclusions: false,
127
+ showInclusions: false,
128
+ options: { showInterval: true, showWeekdaysOnly: false },
129
+ };
130
+ //#endregion
131
+ //#region ----- State Signals -----
132
+ this.draft = signal(emptyAXMMaintenanceIntervalDraft(), /* @ts-ignore */
133
+ ...(ngDevMode ? [{ debugName: "draft" }] : /* istanbul ignore next */ []));
134
+ this.lastEmitted = null;
135
+ this.lastSupportedKey = '';
136
+ //#endregion
137
+ //#region ----- Computed Properties -----
138
+ this.scheduleValue = computed(() => {
139
+ const schedule = this.draft().schedule;
140
+ return schedule ? schedule : null;
141
+ }, /* @ts-ignore */
142
+ ...(ngDevMode ? [{ debugName: "scheduleValue" }] : /* istanbul ignore next */ []));
143
+ this.sections = computed(() => {
144
+ const supported = this.supportedKeys();
145
+ const draft = this.draft();
146
+ const errors = new Map(buildAXMMaintenanceIntervalConfig(supported, draft).errors.map((error) => [error.kind, error.code]));
147
+ return KIND_ORDER.filter((kind) => supported.includes(kind)).map((kind) => this.toSection(kind, draft, errors));
148
+ }, /* @ts-ignore */
149
+ ...(ngDevMode ? [{ debugName: "sections" }] : /* istanbul ignore next */ []));
150
+ this.showTriggerLogic = computed(() => this.sections().filter((section) => section.enabled).length > 1, /* @ts-ignore */
151
+ ...(ngDevMode ? [{ debugName: "showTriggerLogic" }] : /* istanbul ignore next */ []));
152
+ this.selectedTriggerLogic = computed(() => this.draft().triggerLogic, /* @ts-ignore */
153
+ ...(ngDevMode ? [{ debugName: "selectedTriggerLogic" }] : /* istanbul ignore next */ []));
154
+ effect(() => {
155
+ const supported = this.supportedKeys();
156
+ const incoming = this.value();
157
+ const supportedKey = kindsKey(supported);
158
+ if (this.lastEmitted &&
159
+ configsEqual(incoming, this.lastEmitted) &&
160
+ supportedKey === this.lastSupportedKey) {
161
+ return;
162
+ }
163
+ this.lastSupportedKey = supportedKey;
164
+ const next = draftFromAXMMaintenanceIntervalConfig(incoming, supported);
165
+ this.draft.set(next);
166
+ const built = buildAXMMaintenanceIntervalConfig(supported, next).config;
167
+ this.lastEmitted = built;
168
+ if (!configsEqual(incoming, built)) {
169
+ this.valueChange.emit(built);
170
+ }
171
+ });
172
+ }
173
+ //#endregion
174
+ //#region ----- Event Handlers -----
175
+ onEnabled(kind, event) {
176
+ if (!event.isUserInteraction || this.disabled()) {
177
+ return;
178
+ }
179
+ const enabled = Boolean(event.value);
180
+ const draft = this.draft();
181
+ if (kind === 'date') {
182
+ const schedule = enabled && !draft.schedule
183
+ ? createDefaultSchedule()
184
+ : draft.schedule;
185
+ this.commit({ ...draft, dateEnabled: enabled, schedule });
186
+ return;
187
+ }
188
+ if (!isAXMMaintenanceMeterKind(kind)) {
189
+ return;
190
+ }
191
+ this.commit({
192
+ ...draft,
193
+ meters: {
194
+ ...draft.meters,
195
+ [kind]: { ...draft.meters[kind], enabled },
196
+ },
197
+ });
198
+ }
199
+ onInterval(kind, event) {
200
+ if (!event.isUserInteraction || this.disabled()) {
201
+ return;
202
+ }
203
+ const interval = typeof event.value === 'number' && Number.isFinite(event.value) ? event.value : null;
204
+ const draft = this.draft();
205
+ if (draft.meters[kind].interval === interval) {
206
+ return;
207
+ }
208
+ this.commit({
209
+ ...draft,
210
+ meters: {
211
+ ...draft.meters,
212
+ [kind]: { ...draft.meters[kind], interval },
213
+ },
214
+ });
215
+ }
216
+ onDistanceUnit(event) {
217
+ if (!event.isUserInteraction || this.disabled()) {
218
+ return;
219
+ }
220
+ const unit = readChoiceId(event.value);
221
+ if (!isAXMMaintenanceIntervalUnitForKind('distance', unit)) {
222
+ return;
223
+ }
224
+ const draft = this.draft();
225
+ if (draft.meters.distance.unit === unit) {
226
+ return;
227
+ }
228
+ this.commit({
229
+ ...draft,
230
+ meters: {
231
+ ...draft.meters,
232
+ distance: { ...draft.meters.distance, unit: unit },
233
+ },
234
+ });
235
+ }
236
+ onSchedule(value) {
237
+ if (this.disabled()) {
238
+ return;
239
+ }
240
+ const draft = this.draft();
241
+ if (stable(draft.schedule) === stable(value)) {
242
+ return;
243
+ }
244
+ this.commit({ ...draft, schedule: value });
245
+ }
246
+ onTriggerLogic(event) {
247
+ if (!event.isUserInteraction || this.disabled()) {
248
+ return;
249
+ }
250
+ const logic = readChoiceId(event.value);
251
+ const triggerLogic = logic === AXMMaintenanceIntervalTriggerLogic.All
252
+ ? AXMMaintenanceIntervalTriggerLogic.All
253
+ : AXMMaintenanceIntervalTriggerLogic.Any;
254
+ const draft = this.draft();
255
+ if (draft.triggerLogic === triggerLogic) {
256
+ return;
257
+ }
258
+ this.commit({ ...draft, triggerLogic });
259
+ }
260
+ //#endregion
261
+ //#region ----- Draft -----
262
+ supportedKeys() {
263
+ return this.supportedIntervalKinds().filter(isAXMMaintenanceIntervalKind);
264
+ }
265
+ toSection(kind, draft, errors) {
266
+ const error = errors.get(kind);
267
+ if (kind === 'date') {
268
+ return {
269
+ kind,
270
+ labelKey: LABEL_KEYS[kind],
271
+ enabled: draft.dateEnabled,
272
+ editor: 'schedule',
273
+ meterKind: null,
274
+ interval: null,
275
+ decimals: 0,
276
+ unitId: null,
277
+ unitLabelKey: '',
278
+ errorKey: draft.dateEnabled && error ? ERROR_KEYS[error] : null,
279
+ };
280
+ }
281
+ const meter = draft.meters[kind];
282
+ return {
283
+ kind,
284
+ labelKey: LABEL_KEYS[kind],
285
+ enabled: meter.enabled,
286
+ editor: kind === 'distance' ? 'distance' : 'meter',
287
+ meterKind: kind,
288
+ interval: meter.interval,
289
+ decimals: kind === 'operation-count' ? 0 : 2,
290
+ unitId: meter.unit,
291
+ unitLabelKey: UNIT_LABEL_KEYS[meter.unit],
292
+ errorKey: meter.enabled && error ? ERROR_KEYS[error] : null,
293
+ };
294
+ }
295
+ commit(draft) {
296
+ this.draft.set(draft);
297
+ const config = buildAXMMaintenanceIntervalConfig(this.supportedKeys(), draft).config;
298
+ this.lastEmitted = config;
299
+ this.lastSupportedKey = kindsKey(this.supportedKeys());
300
+ this.valueChange.emit(config);
301
+ }
302
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMMaintenanceIntervalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
303
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMMaintenanceIntervalComponent, isStandalone: true, selector: "axm-maintenance-interval", inputs: { supportedIntervalKinds: { classPropertyName: "supportedIntervalKinds", publicName: "supportedIntervalKinds", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, host: { classAttribute: "block" }, ngImport: i0, template: "<div class=\"flex flex-col gap-4\">\n <span class=\"text-sm font-medium\">{{ titleKey | translate | async }}</span>\n\n <!-- ----- No interval sections when the asset type supports none ----- -->\n @if (sections().length === 0) {\n <p class=\"ax-text-muted\">{{ emptyKey | translate | async }}</p>\n }\n\n @for (section of sections(); track section.kind) {\n <div class=\"flex flex-col gap-2\">\n <div class=\"flex items-center gap-2\">\n <ax-check-box\n [ngModel]=\"section.enabled\"\n [disabled]=\"disabled()\"\n (onValueChanged)=\"onEnabled(section.kind, $event)\"\n ></ax-check-box>\n <ax-label>{{ section.labelKey | translate | async }}</ax-label>\n </div>\n\n <!-- ----- Date interval reuses the scheduler picker ----- -->\n @if (section.enabled && section.editor === 'schedule') {\n <div class=\"ps-7\">\n <ax-scheduler-picker\n [config]=\"scheduleSettings\"\n [ngModel]=\"scheduleValue()\"\n [disabled]=\"disabled()\"\n (ngModelChange)=\"onSchedule($event)\"\n />\n <!-- ----- Schedule is required while Date is enabled ----- -->\n @if (section.errorKey; as errorKey) {\n <p class=\"text-sm text-danger\">{{ errorKey | translate | async }}</p>\n }\n </div>\n }\n <!-- ----- Distance interval with a kilometer or mile choice ----- -->\n @else if (section.enabled && section.editor === 'distance') {\n <div class=\"flex flex-wrap items-end gap-3 ps-7\">\n <span>{{ everyKey | translate | async }}</span>\n <ax-number-box\n class=\"w-36\"\n [minValue]=\"0\"\n [decimals]=\"section.decimals\"\n [ngModel]=\"section.interval\"\n [disabled]=\"disabled()\"\n [showSpinButtons]=\"false\"\n (onValueChanged)=\"onInterval('distance', $event)\"\n ></ax-number-box>\n <ax-selection-list\n [items]=\"distanceUnits\"\n [ngModel]=\"section.unitId\"\n [disabled]=\"disabled()\"\n direction=\"horizontal\"\n [multiple]=\"false\"\n [showControl]=\"true\"\n valueField=\"id\"\n textField=\"text\"\n (onValueChanged)=\"onDistanceUnit($event)\"\n >\n <ng-template #itemTemplate let-item>\n <span>{{ item.text | translate | async }}</span>\n </ng-template>\n </ax-selection-list>\n </div>\n <!-- ----- Positive distance is required while the section is enabled ----- -->\n @if (section.errorKey; as errorKey) {\n <p class=\"ps-7 text-sm text-danger\">{{ errorKey | translate | async }}</p>\n }\n }\n <!-- ----- Operating hours or operation count with a fixed unit ----- -->\n @else if (section.enabled && section.editor === 'meter') {\n <div class=\"flex flex-wrap items-end gap-3 ps-7\">\n <span>{{ everyKey | translate | async }}</span>\n <ax-number-box\n class=\"w-36\"\n [minValue]=\"0\"\n [decimals]=\"section.decimals\"\n [ngModel]=\"section.interval\"\n [disabled]=\"disabled()\"\n [showSpinButtons]=\"false\"\n (onValueChanged)=\"onInterval(section.meterKind ?? 'operating-hours', $event)\"\n >\n <ax-suffix>{{ section.unitLabelKey | translate | async }}</ax-suffix>\n </ax-number-box>\n </div>\n <!-- ----- Positive meter interval is required while the section is enabled ----- -->\n @if (section.errorKey; as errorKey) {\n <p class=\"ps-7 text-sm text-danger\">{{ errorKey | translate | async }}</p>\n }\n }\n </div>\n }\n\n <!-- ----- Trigger condition when more than one interval is enabled ----- -->\n @if (showTriggerLogic()) {\n <div class=\"flex flex-col gap-2\">\n <ax-label>{{ triggerLogicTitleKey | translate | async }}</ax-label>\n <ax-selection-list\n [items]=\"triggerLogicItems\"\n [ngModel]=\"selectedTriggerLogic()\"\n [disabled]=\"disabled()\"\n direction=\"vertical\"\n [multiple]=\"false\"\n [showControl]=\"true\"\n valueField=\"id\"\n textField=\"text\"\n (onValueChanged)=\"onTriggerLogic($event)\"\n >\n <ng-template #itemTemplate let-item>\n <span>{{ item.text | translate | async }}</span>\n </ng-template>\n </ax-selection-list>\n </div>\n }\n</div>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXCheckBoxModule }, { kind: "component", type: i2.AXCheckBoxComponent, selector: "ax-check-box", inputs: ["disabled", "tabIndex", "readonly", "color", "value", "name", "id", "isLoading", "indeterminate"], outputs: ["onBlur", "onFocus", "valueChange", "onValueChanged"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "component", type: AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXNumberBoxModule }, { kind: "component", type: i4.AXNumberBoxComponent, selector: "ax-number-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "minValue", "maxValue", "showSpinButtons", "thousandsSeparator", "decimals", "changeOnScroll", "step"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress", "thousandsSeparatorChange"] }, { kind: "ngmodule", type: AXSelectionListModule }, { kind: "component", type: i5.AXSelectionListComponent, selector: "ax-selection-list", inputs: ["id", "name", "disabled", "readonly", "tabIndex", "value", "valueField", "textField", "disabledField", "readonlyField", "multiple", "direction", "customTemplate", "showControl", "items", "look"], outputs: ["onValueChanged", "onBlur", "onFocus"] }, { kind: "component", type: AXSchedulerPickerComponent, selector: "ax-scheduler-picker", inputs: ["disabled", "readonly", "tabIndex", "value", "state", "name", "id", "config"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "summaryChange"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i6.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
304
+ }
305
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMMaintenanceIntervalComponent, decorators: [{
306
+ type: Component,
307
+ args: [{ selector: 'axm-maintenance-interval', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
308
+ AsyncPipe,
309
+ FormsModule,
310
+ AXTranslationModule,
311
+ AXCheckBoxModule,
312
+ AXDecoratorModule,
313
+ AXLabelComponent,
314
+ AXNumberBoxModule,
315
+ AXSelectionListModule,
316
+ AXSchedulerPickerComponent,
317
+ ], host: { class: 'block' }, template: "<div class=\"flex flex-col gap-4\">\n <span class=\"text-sm font-medium\">{{ titleKey | translate | async }}</span>\n\n <!-- ----- No interval sections when the asset type supports none ----- -->\n @if (sections().length === 0) {\n <p class=\"ax-text-muted\">{{ emptyKey | translate | async }}</p>\n }\n\n @for (section of sections(); track section.kind) {\n <div class=\"flex flex-col gap-2\">\n <div class=\"flex items-center gap-2\">\n <ax-check-box\n [ngModel]=\"section.enabled\"\n [disabled]=\"disabled()\"\n (onValueChanged)=\"onEnabled(section.kind, $event)\"\n ></ax-check-box>\n <ax-label>{{ section.labelKey | translate | async }}</ax-label>\n </div>\n\n <!-- ----- Date interval reuses the scheduler picker ----- -->\n @if (section.enabled && section.editor === 'schedule') {\n <div class=\"ps-7\">\n <ax-scheduler-picker\n [config]=\"scheduleSettings\"\n [ngModel]=\"scheduleValue()\"\n [disabled]=\"disabled()\"\n (ngModelChange)=\"onSchedule($event)\"\n />\n <!-- ----- Schedule is required while Date is enabled ----- -->\n @if (section.errorKey; as errorKey) {\n <p class=\"text-sm text-danger\">{{ errorKey | translate | async }}</p>\n }\n </div>\n }\n <!-- ----- Distance interval with a kilometer or mile choice ----- -->\n @else if (section.enabled && section.editor === 'distance') {\n <div class=\"flex flex-wrap items-end gap-3 ps-7\">\n <span>{{ everyKey | translate | async }}</span>\n <ax-number-box\n class=\"w-36\"\n [minValue]=\"0\"\n [decimals]=\"section.decimals\"\n [ngModel]=\"section.interval\"\n [disabled]=\"disabled()\"\n [showSpinButtons]=\"false\"\n (onValueChanged)=\"onInterval('distance', $event)\"\n ></ax-number-box>\n <ax-selection-list\n [items]=\"distanceUnits\"\n [ngModel]=\"section.unitId\"\n [disabled]=\"disabled()\"\n direction=\"horizontal\"\n [multiple]=\"false\"\n [showControl]=\"true\"\n valueField=\"id\"\n textField=\"text\"\n (onValueChanged)=\"onDistanceUnit($event)\"\n >\n <ng-template #itemTemplate let-item>\n <span>{{ item.text | translate | async }}</span>\n </ng-template>\n </ax-selection-list>\n </div>\n <!-- ----- Positive distance is required while the section is enabled ----- -->\n @if (section.errorKey; as errorKey) {\n <p class=\"ps-7 text-sm text-danger\">{{ errorKey | translate | async }}</p>\n }\n }\n <!-- ----- Operating hours or operation count with a fixed unit ----- -->\n @else if (section.enabled && section.editor === 'meter') {\n <div class=\"flex flex-wrap items-end gap-3 ps-7\">\n <span>{{ everyKey | translate | async }}</span>\n <ax-number-box\n class=\"w-36\"\n [minValue]=\"0\"\n [decimals]=\"section.decimals\"\n [ngModel]=\"section.interval\"\n [disabled]=\"disabled()\"\n [showSpinButtons]=\"false\"\n (onValueChanged)=\"onInterval(section.meterKind ?? 'operating-hours', $event)\"\n >\n <ax-suffix>{{ section.unitLabelKey | translate | async }}</ax-suffix>\n </ax-number-box>\n </div>\n <!-- ----- Positive meter interval is required while the section is enabled ----- -->\n @if (section.errorKey; as errorKey) {\n <p class=\"ps-7 text-sm text-danger\">{{ errorKey | translate | async }}</p>\n }\n }\n </div>\n }\n\n <!-- ----- Trigger condition when more than one interval is enabled ----- -->\n @if (showTriggerLogic()) {\n <div class=\"flex flex-col gap-2\">\n <ax-label>{{ triggerLogicTitleKey | translate | async }}</ax-label>\n <ax-selection-list\n [items]=\"triggerLogicItems\"\n [ngModel]=\"selectedTriggerLogic()\"\n [disabled]=\"disabled()\"\n direction=\"vertical\"\n [multiple]=\"false\"\n [showControl]=\"true\"\n valueField=\"id\"\n textField=\"text\"\n (onValueChanged)=\"onTriggerLogic($event)\"\n >\n <ng-template #itemTemplate let-item>\n <span>{{ item.text | translate | async }}</span>\n </ng-template>\n </ax-selection-list>\n </div>\n }\n</div>\n" }]
318
+ }], ctorParameters: () => [], propDecorators: { supportedIntervalKinds: [{ type: i0.Input, args: [{ isSignal: true, alias: "supportedIntervalKinds", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] } });
319
+
24
320
  //#region ---- Imports ----
25
321
  //#endregion
26
322
  //#region ---- Identifier rules ----
@@ -182,25 +478,26 @@ function resolveOccurrenceScheduledEnd(scheduledStart, estimatedHours) {
182
478
  * - End `byDate`: occurrences from anchor through end date (inclusive).
183
479
  */
184
480
  function resolveWorkOrderScheduledStarts(schedule, referenceDate = new Date()) {
185
- if (!schedule) {
481
+ const calendar = readMaintenancePlanCalendarSchedule(schedule);
482
+ if (!calendar) {
186
483
  return [];
187
484
  }
188
- const anchor = resolveScheduleAnchorDate(schedule, referenceDate);
485
+ const anchor = resolveScheduleAnchorDate(calendar, referenceDate);
189
486
  if (!anchor) {
190
487
  return [];
191
488
  }
192
- const mode = inferScheduleMode(schedule);
193
- const interval = resolveScheduleInterval(schedule);
194
- const endType = defaultTo(get(schedule, 'endCondition.type'), 'never');
489
+ const mode = inferScheduleMode(calendar);
490
+ const interval = resolveScheduleInterval(calendar);
491
+ const endType = defaultTo(get(calendar, 'endCondition.type'), 'never');
195
492
  if (endType === 'never') {
196
493
  return [anchor];
197
494
  }
198
495
  if (endType === 'afterOccurrences') {
199
- const count = Math.max(1, defaultTo(get(schedule, 'endCondition.occurrences'), 1));
496
+ const count = Math.max(1, defaultTo(get(calendar, 'endCondition.occurrences'), 1));
200
497
  return Array.from({ length: count }, (_, step) => addScheduleInterval(anchor, mode, interval, step));
201
498
  }
202
499
  if (endType === 'byDate') {
203
- const endDate = toScheduleEndBoundary(get(schedule, 'endCondition.endDate'));
500
+ const endDate = toScheduleEndBoundary(get(calendar, 'endCondition.endDate'));
204
501
  if (!endDate) {
205
502
  return [anchor];
206
503
  }
@@ -265,9 +562,18 @@ function buildMaintenancePlanPayload(asset, template, options) {
265
562
  assetId: asset.id,
266
563
  maintenanceTypeId: template.maintenanceTypeId,
267
564
  maintenanceTemplateId: template.id,
268
- schedule: template.schedule ?? {
269
- startCondition: { type: 'byDate', startDate: new Date().toISOString() },
565
+ intervalConfig: {
566
+ triggerLogic: AXMMaintenanceIntervalTriggerLogic.Any,
567
+ triggers: [
568
+ {
569
+ kind: 'date',
570
+ schedule: template.schedule ?? {
571
+ startCondition: { type: 'byDate', startDate: new Date().toISOString() },
572
+ },
573
+ },
574
+ ],
270
575
  },
576
+ intervalStates: [],
271
577
  estimatedHours: template.estimatedMinutes
272
578
  ? Math.max(1, Math.ceil(template.estimatedMinutes / 60))
273
579
  : undefined,
@@ -348,7 +654,7 @@ function mergeMaintenancePlanForWorkOrder(createPayload, stored, id) {
348
654
  fillIfMissing('assetId');
349
655
  fillIfMissing('maintenanceTypeId');
350
656
  fillIfMissing('maintenanceTemplateId');
351
- fillIfMissing('schedule');
657
+ fillIfMissing('intervalConfig');
352
658
  fillIfMissing('title');
353
659
  fillIfMissing('description');
354
660
  fillIfMissing('needPermission');
@@ -438,7 +744,7 @@ function buildWorkOrderPayloadFromFailureRegister(failureRegister, template, wor
438
744
  function buildWorkOrderPayloadFromPlan(plan, workOrderNo, options) {
439
745
  const title = normalizeMultiLanguageString(plan.title, plan.code ?? 'Work order');
440
746
  const occurrence = options?.occurrence ??
441
- resolveWorkOrderOccurrences(plan.schedule, {
747
+ resolveWorkOrderOccurrences(plan.intervalConfig, {
442
748
  referenceDate: options?.referenceDate,
443
749
  estimatedHours: resolvePlanEstimatedHours(plan),
444
750
  })[0];
@@ -480,7 +786,7 @@ function buildWorkOrderPayloadFromPlan(plan, workOrderNo, options) {
480
786
  function buildWorkOrderPayloadsFromPlan(plan, options) {
481
787
  const referenceDate = options?.referenceDate ?? new Date();
482
788
  const estimatedHours = resolvePlanEstimatedHours(plan);
483
- const occurrences = resolveWorkOrderOccurrences(plan.schedule, {
789
+ const occurrences = resolveWorkOrderOccurrences(plan.intervalConfig, {
484
790
  referenceDate,
485
791
  estimatedHours,
486
792
  });
@@ -641,7 +947,7 @@ async function hasWorkOrderForPlanScheduledStart(backend, workOrderEntityName, p
641
947
  * For `endCondition.type === 'never'`, returns the next interval from the signed-off scheduled start.
642
948
  */
643
949
  function resolveNextWorkOrderOccurrenceAfterSignedOff(plan, signedOffWorkOrder, referenceDate = new Date()) {
644
- const schedule = plan.schedule;
950
+ const schedule = readMaintenancePlanCalendarSchedule(plan.intervalConfig);
645
951
  if (!schedule) {
646
952
  return null;
647
953
  }
@@ -846,6 +1152,7 @@ const assetCreateMaintenanceOfferMiddleware = {
846
1152
  /** Asset detail route entity keys (must match AssetManagement registration). */
847
1153
  const ASSET_ENTITY = 'AssetManagement.Asset';
848
1154
  const ASSET_TYPE_ENTITY = 'AssetManagement.AssetType';
1155
+ const I18N$1 = '@maintenance-management:failure-registers.create-work-order-prompt';
849
1156
  //#endregion
850
1157
  //#region ---- Helpers ----
851
1158
  function normalizeMaintenanceTypeIds(value) {
@@ -889,6 +1196,7 @@ const failureRegisterCreateWorkOrderMiddleware = {
889
1196
  // IMPORTANT: resolve injected deps before any await to keep Angular injection context valid.
890
1197
  const dialogService = inject(AXDialogService, { optional: true });
891
1198
  const toastService = inject(AXToastService, { optional: true });
1199
+ const translateService = inject(AXTranslationService, { optional: true });
892
1200
  const entityRegistry = inject(AXPEntityDefinitionRegistryService, { optional: true });
893
1201
  const entityDataSelector = inject(AXPEntityDataSelectorService, { optional: true });
894
1202
  const backend = ctx.entities;
@@ -908,6 +1216,7 @@ const failureRegisterCreateWorkOrderMiddleware = {
908
1216
  // The middleware can run in non-UI execution contexts; keep it safe.
909
1217
  if (!dialogService ||
910
1218
  !toastService ||
1219
+ !translateService ||
911
1220
  !entityRegistry ||
912
1221
  !entityDataSelector ||
913
1222
  !entityStorage ||
@@ -919,7 +1228,7 @@ const failureRegisterCreateWorkOrderMiddleware = {
919
1228
  if (!fr?.assetId) {
920
1229
  return;
921
1230
  }
922
- const confirm = await dialogService.confirm('Create work order', 'Do you want to create work order now?', 'warning', 'horizontal', false, 'cancel');
1231
+ const confirm = await dialogService.confirm(await translateService.translateAsync(`${I18N$1}.confirm-title`), await translateService.translateAsync(`${I18N$1}.confirm-message`), 'warning', 'horizontal', false, 'cancel');
923
1232
  if (confirm.result !== true) {
924
1233
  return;
925
1234
  }
@@ -927,8 +1236,8 @@ const failureRegisterCreateWorkOrderMiddleware = {
927
1236
  if (!templateEntity) {
928
1237
  toastService.show({
929
1238
  color: 'danger',
930
- title: 'Template error',
931
- content: 'Maintenance template entity is not available.',
1239
+ title: await translateService.translateAsync(`${I18N$1}.template-error-title`),
1240
+ content: await translateService.translateAsync(`${I18N$1}.template-entity-unavailable`),
932
1241
  });
933
1242
  return;
934
1243
  }
@@ -936,8 +1245,8 @@ const failureRegisterCreateWorkOrderMiddleware = {
936
1245
  if (!maintenanceTypeIds.length) {
937
1246
  toastService.show({
938
1247
  color: 'warning',
939
- title: 'No maintenance types',
940
- content: 'The selected asset has no maintenance types configured on its asset type.',
1248
+ title: await translateService.translateAsync(`${I18N$1}.no-maintenance-types-title`),
1249
+ content: await translateService.translateAsync(`${I18N$1}.no-maintenance-types-content`),
941
1250
  });
942
1251
  return;
943
1252
  }
@@ -961,7 +1270,6 @@ const failureRegisterCreateWorkOrderMiddleware = {
961
1270
  'needPermission',
962
1271
  'needShutdown',
963
1272
  'estimatedHours',
964
- 'hasSchedule',
965
1273
  'schedule',
966
1274
  'autoGeneratePlan',
967
1275
  ],
@@ -975,16 +1283,16 @@ const failureRegisterCreateWorkOrderMiddleware = {
975
1283
  if (!template) {
976
1284
  toastService.show({
977
1285
  color: 'danger',
978
- title: 'Template error',
979
- content: 'Selected template does not have maintenance type.',
1286
+ title: await translateService.translateAsync(`${I18N$1}.template-error-title`),
1287
+ content: await translateService.translateAsync(`${I18N$1}.template-missing-type`),
980
1288
  });
981
1289
  return;
982
1290
  }
983
1291
  if (!canCreateWorkOrderFromFailureRegister(fr, template)) {
984
1292
  toastService.show({
985
1293
  color: 'warning',
986
- title: 'Missing data',
987
- content: 'Asset, maintenance type, and maintenance template are required to create a work order.',
1294
+ title: await translateService.translateAsync(`${I18N$1}.missing-data-title`),
1295
+ content: await translateService.translateAsync(`${I18N$1}.missing-data-content`),
988
1296
  });
989
1297
  return;
990
1298
  }
@@ -994,15 +1302,15 @@ const failureRegisterCreateWorkOrderMiddleware = {
994
1302
  if (!workOrderId) {
995
1303
  toastService.show({
996
1304
  color: 'danger',
997
- title: 'Work order error',
998
- content: 'Work order creation failed.',
1305
+ title: await translateService.translateAsync(`${I18N$1}.work-order-error-title`),
1306
+ content: await translateService.translateAsync(`${I18N$1}.work-order-error-content`),
999
1307
  });
1000
1308
  return;
1001
1309
  }
1002
1310
  toastService.show({
1003
1311
  color: 'success',
1004
- title: 'Work order created',
1005
- content: 'Work order was created successfully.',
1312
+ title: await translateService.translateAsync(`${I18N$1}.success-title`),
1313
+ content: await translateService.translateAsync(`${I18N$1}.success-content`),
1006
1314
  });
1007
1315
  },
1008
1316
  };
@@ -1013,6 +1321,7 @@ const failureRegisterCreateWorkOrderMiddleware = {
1013
1321
  //#region ---- Constants ----
1014
1322
  /** Per-create ctx.locals flag so duplicate middleware entries schedule only one prompt. */
1015
1323
  const WORK_ORDER_PROMPT_SCHEDULED_KEY = 'maintenancePlan.workOrderPromptScheduled';
1324
+ const I18N = '@maintenance-management:maintenance-plans.create-work-order-prompt';
1016
1325
  //#endregion
1017
1326
  //#region ---- Prompt runner ----
1018
1327
  /**
@@ -1020,47 +1329,52 @@ const WORK_ORDER_PROMPT_SCHEDULED_KEY = 'maintenancePlan.workOrderPromptSchedule
1020
1329
  * Runs inline after `next()` so the dialog appears before navigation away from the create form.
1021
1330
  */
1022
1331
  async function runMaintenancePlanWorkOrderPrompt(deps) {
1023
- const { createdId, planEntity, createPayload, dialogService, backend, entityStorage, identifierService, sessionService, toastService, } = deps;
1332
+ const { createdId, planEntity, createPayload, dialogService, backend, entityStorage, identifierService, sessionService, toastService, translateService, } = deps;
1024
1333
  const storedPlan = (await backend.getOne(planEntity, createdId).catch(() => null));
1025
1334
  const plan = mergeMaintenancePlanForWorkOrder(createPayload, storedPlan, createdId);
1026
1335
  if (!plan) {
1027
1336
  return;
1028
1337
  }
1029
- const plannedWorkOrderCount = countWorkOrdersToCreateFromSchedule(plan.schedule);
1338
+ const plannedWorkOrderCount = countWorkOrdersToCreateFromSchedule(plan.intervalConfig);
1339
+ const confirmTitle = await translateService.translateAsync(`${I18N}.confirm-title`);
1030
1340
  const confirmMessage = plannedWorkOrderCount === 1
1031
- ? 'Do you want to create 1 work order now based on the plan schedule?'
1032
- : `Do you want to create ${plannedWorkOrderCount} work orders now based on the plan schedule?`;
1033
- const confirm = await dialogService.confirm('Create work order', confirmMessage, 'warning', 'horizontal', false, 'cancel');
1341
+ ? await translateService.translateAsync(`${I18N}.confirm-single`)
1342
+ : await translateService.translateAsync(`${I18N}.confirm-multiple`, {
1343
+ params: { count: plannedWorkOrderCount },
1344
+ });
1345
+ const confirm = await dialogService.confirm(confirmTitle, confirmMessage, 'warning', 'horizontal', false, 'cancel');
1034
1346
  if (confirm.result !== true) {
1035
1347
  return;
1036
1348
  }
1037
1349
  if (!canCreateWorkOrderFromPlan(plan)) {
1038
- await dialogService.alert('Missing plan data', 'Asset, maintenance type, and maintenance template are required to create a work order.', 'warning');
1350
+ await dialogService.alert(await translateService.translateAsync(`${I18N}.missing-data-title`), await translateService.translateAsync(`${I18N}.missing-data-message`), 'warning');
1039
1351
  return;
1040
1352
  }
1041
1353
  const workOrderEntity = `${RootConfig.module.name}.${RootConfig.entities.workOrder.name}`;
1042
1354
  if (await hasWorkOrderForPlan(backend, workOrderEntity, plan.id)) {
1043
- await dialogService.alert('Work order exists', 'A work order already exists for this maintenance plan.', 'warning');
1355
+ await dialogService.alert(await translateService.translateAsync(`${I18N}.exists-title`), await translateService.translateAsync(`${I18N}.exists-message`), 'warning');
1044
1356
  return;
1045
1357
  }
1046
1358
  try {
1047
1359
  const workOrderCount = await insertWorkOrdersFromPlan(entityStorage, identifierService, sessionService, workOrderEntity, plan, { backend });
1048
1360
  if (workOrderCount === 0) {
1049
- await dialogService.alert('Work order error', 'Work order creation failed.', 'danger');
1361
+ await dialogService.alert(await translateService.translateAsync(`${I18N}.error-title`), await translateService.translateAsync(`${I18N}.error-failed`), 'danger');
1050
1362
  return;
1051
1363
  }
1052
1364
  const successMessage = workOrderCount === 1
1053
- ? 'Work order was created successfully.'
1054
- : `${workOrderCount} work orders were created successfully.`;
1365
+ ? await translateService.translateAsync(`${I18N}.success-single`)
1366
+ : await translateService.translateAsync(`${I18N}.success-multiple`, {
1367
+ params: { count: workOrderCount },
1368
+ });
1055
1369
  toastService.show({
1056
1370
  color: 'success',
1057
- title: 'Work order created',
1371
+ title: await translateService.translateAsync(`${I18N}.success-title`),
1058
1372
  content: successMessage,
1059
1373
  });
1060
1374
  }
1061
1375
  catch (error) {
1062
- const message = error instanceof Error ? error.message : 'Work order creation failed.';
1063
- await dialogService.alert('Work order error', message, 'danger');
1376
+ const message = error instanceof Error ? error.message : await translateService.translateAsync(`${I18N}.error-failed`);
1377
+ await dialogService.alert(await translateService.translateAsync(`${I18N}.error-title`), message, 'danger');
1064
1378
  }
1065
1379
  }
1066
1380
  //#endregion
@@ -1069,9 +1383,20 @@ async function runMaintenancePlanWorkOrderPrompt(deps) {
1069
1383
  * After creating a Maintenance Plan, asks whether to create a Work Order immediately.
1070
1384
  * If confirmed, creates Work Order using the plan's already selected template.
1071
1385
  */
1386
+ const WRITE_OPS = new Set(['create', 'update', 'upsertOne']);
1387
+ function readRecord(value) {
1388
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
1389
+ return null;
1390
+ }
1391
+ return value;
1392
+ }
1393
+ function assignIntervalStates(record) {
1394
+ record['intervalStates'] = readMaintenanceIntervalStates(record['intervalStates']);
1395
+ }
1072
1396
  const maintenancePlanCreateWorkOrderMiddleware = {
1073
1397
  target: {
1074
- ops: ['create'],
1398
+ ops: ['create', 'update', 'upsertOne', 'getOne', 'getAll', 'query', 'queryAll', 'getMany'],
1399
+ entity: `${RootConfig.module.name}.${RootConfig.entities.maintenancePlan.name}`,
1075
1400
  order: 91,
1076
1401
  },
1077
1402
  execute: async (ctx, next) => {
@@ -1081,16 +1406,52 @@ const maintenancePlanCreateWorkOrderMiddleware = {
1081
1406
  const entityStorage = inject(AXPEntityStorageService, { optional: true });
1082
1407
  const identifierService = inject(AXP_IDENTIFIER_SERVICE, { optional: true });
1083
1408
  const sessionService = inject(AXPSessionService, { optional: true });
1409
+ const translateService = inject(AXTranslationService, { optional: true });
1084
1410
  const maintenancePlanEntity = `${RootConfig.module.name}.${RootConfig.entities.maintenancePlan.name}`;
1085
1411
  if (ctx.entityName !== maintenancePlanEntity) {
1086
1412
  await next();
1087
1413
  return;
1088
1414
  }
1415
+ if (WRITE_OPS.has(ctx.op)) {
1416
+ const data = readRecord(ctx.data);
1417
+ const fieldPresent = ctx.op === 'create' || ctx.op === 'upsertOne' || (data != null && 'intervalStates' in data);
1418
+ if (data && fieldPresent) {
1419
+ const resolved = resolveMaintenanceIntervalStates(data['intervalStates']);
1420
+ if (resolved.issue) {
1421
+ const error = AXM_MAINTENANCE_INTERVAL_STATE_ERRORS[resolved.issue];
1422
+ throw new AXPMiddlewareAbortError(error.message, { code: error.code, status: 400 });
1423
+ }
1424
+ data['intervalStates'] = resolved.states;
1425
+ }
1426
+ }
1089
1427
  const suppressPrompt = ctx.data &&
1090
1428
  typeof ctx.data === 'object' &&
1091
1429
  ctx.data[SUPPRESS_WORK_ORDER_PROMPT_FIELD] === true;
1092
1430
  const createPayload = ctx.data && typeof ctx.data === 'object' ? ctx.data : undefined;
1093
1431
  await next();
1432
+ if (ctx.op !== 'create') {
1433
+ if (ctx.op === 'getOne') {
1434
+ const record = readRecord(ctx.result);
1435
+ if (record) {
1436
+ assignIntervalStates(record);
1437
+ }
1438
+ return;
1439
+ }
1440
+ const items = Array.isArray(ctx.result)
1441
+ ? ctx.result
1442
+ : Array.isArray(ctx.result?.items)
1443
+ ? ctx.result.items
1444
+ : null;
1445
+ if (items) {
1446
+ for (const item of items) {
1447
+ const record = readRecord(item);
1448
+ if (record) {
1449
+ assignIntervalStates(record);
1450
+ }
1451
+ }
1452
+ }
1453
+ return;
1454
+ }
1094
1455
  const createdId = typeof ctx.result === 'string' ? ctx.result : undefined;
1095
1456
  if (!createdId ||
1096
1457
  !dialogService ||
@@ -1098,6 +1459,7 @@ const maintenancePlanCreateWorkOrderMiddleware = {
1098
1459
  !entityStorage ||
1099
1460
  !identifierService ||
1100
1461
  !sessionService ||
1462
+ !translateService ||
1101
1463
  suppressPrompt) {
1102
1464
  return;
1103
1465
  }
@@ -1115,6 +1477,7 @@ const maintenancePlanCreateWorkOrderMiddleware = {
1115
1477
  identifierService,
1116
1478
  sessionService,
1117
1479
  toastService,
1480
+ translateService,
1118
1481
  });
1119
1482
  },
1120
1483
  };
@@ -1585,13 +1948,53 @@ class AXMMaintenanceManagementWorkOrderExpressionEvaluatorScopeProvider {
1585
1948
  }
1586
1949
  }
1587
1950
 
1951
+ //#region ----- Imports -----
1952
+ //#endregion
1953
+ //#region ----- Widget config -----
1954
+ const AXMMaintenanceIntervalWidget = {
1955
+ name: AXM_MAINTENANCE_INTERVAL_WIDGET,
1956
+ title: '@maintenance-management:maintenance-interval.title',
1957
+ description: '@maintenance-management:maintenance-interval.description',
1958
+ type: 'editor',
1959
+ designer: { needLabel: true },
1960
+ categories: [],
1961
+ groups: [AXPWidgetGroupEnum.EntityWidget],
1962
+ icon: 'fa-light fa-calendar-clock',
1963
+ properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY],
1964
+ components: {
1965
+ view: {
1966
+ component: () => import('./acorex-platform-module-maintenance-management-client-maintenance-interval-widget-view.component-CM0Wokah.mjs').then((c) => c.AXMMaintenanceIntervalWidgetViewComponent),
1967
+ },
1968
+ edit: {
1969
+ component: () => import('./acorex-platform-module-maintenance-management-client-maintenance-interval-widget-edit.component-CUcsLsuh.mjs').then((c) => c.AXMMaintenanceIntervalWidgetEditComponent),
1970
+ },
1971
+ designer: {
1972
+ component: () => import('./acorex-platform-module-maintenance-management-client-maintenance-interval-widget-edit.component-CUcsLsuh.mjs').then((c) => c.AXMMaintenanceIntervalWidgetEditComponent),
1973
+ },
1974
+ },
1975
+ };
1976
+ //#endregion
1977
+
1978
+ //#endregion
1979
+ //#region ----- Provider -----
1980
+ class AXMMaintenanceIntervalWidgetProvider {
1981
+ getWidgets() {
1982
+ return [AXMMaintenanceIntervalWidget];
1983
+ }
1984
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMMaintenanceIntervalWidgetProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1985
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMMaintenanceIntervalWidgetProvider }); }
1986
+ }
1987
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMMaintenanceIntervalWidgetProvider, decorators: [{
1988
+ type: Injectable
1989
+ }] });
1990
+
1588
1991
  //#region ---- Imports ----
1589
1992
  //#endregion
1590
1993
  //#region ---- Widget config ----
1591
1994
  const AXMWorkOrderWorkflowColumnWidget = {
1592
1995
  name: 'work-order-workflow-column',
1593
- title: 'Work Order Workflow Column',
1594
- description: 'List column for selecting a maintenance template workflow and starting the flow per row.',
1996
+ title: '@maintenance-management:widgets.work-order-workflow-column.title',
1997
+ description: '@maintenance-management:widgets.work-order-workflow-column.description',
1595
1998
  type: 'view',
1596
1999
  categories: [],
1597
2000
  groups: [AXPWidgetGroupEnum.EntityWidget],
@@ -1599,7 +2002,7 @@ const AXMWorkOrderWorkflowColumnWidget = {
1599
2002
  properties: [],
1600
2003
  components: {
1601
2004
  column: {
1602
- component: () => import('./acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-BwOeeKLn.mjs').then((c) => c.AXMWorkOrderWorkflowColumnComponent),
2005
+ component: () => import('./acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-B90OJ-Ol.mjs').then((c) => c.AXMWorkOrderWorkflowColumnComponent),
1603
2006
  },
1604
2007
  },
1605
2008
  };
@@ -1610,8 +2013,8 @@ const AXMWorkOrderWorkflowColumnWidget = {
1610
2013
  //#region ---- Widget config ----
1611
2014
  const AXMWorkOrderWorkReportColumnWidget = {
1612
2015
  name: 'work-order-work-report-column',
1613
- title: 'Work Order Work Report Column',
1614
- description: 'List column for viewing the work report linked to a work order.',
2016
+ title: '@maintenance-management:widgets.work-order-work-report-column.title',
2017
+ description: '@maintenance-management:widgets.work-order-work-report-column.description',
1615
2018
  type: 'view',
1616
2019
  categories: [],
1617
2020
  groups: [AXPWidgetGroupEnum.EntityWidget],
@@ -1643,8 +2046,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
1643
2046
  //#region ---- Widget config ----
1644
2047
  const AXMWorkReportChecklistResultsWidget = {
1645
2048
  name: 'work-report-checklist-results',
1646
- title: 'Work Report Checklist Results',
1647
- description: 'Read-only checklist assessment references with view-response actions.',
2049
+ title: '@maintenance-management:widgets.work-report-checklist-results.title',
2050
+ description: '@maintenance-management:widgets.work-report-checklist-results.description',
1648
2051
  type: 'view',
1649
2052
  categories: [],
1650
2053
  groups: [AXPWidgetGroupEnum.EntityWidget],
@@ -1691,6 +2094,11 @@ class AXMMaintenanceManagementModule {
1691
2094
  useClass: AXMMaintenanceManagementWorkOrderExpressionEvaluatorScopeProvider,
1692
2095
  multi: true,
1693
2096
  },
2097
+ {
2098
+ provide: AXP_WIDGET_DEFINITION_PROVIDER,
2099
+ useClass: AXMMaintenanceIntervalWidgetProvider,
2100
+ multi: true,
2101
+ },
1694
2102
  {
1695
2103
  provide: AXP_WIDGET_DEFINITION_PROVIDER,
1696
2104
  useClass: AXMWorkReportWidgetProvider,
@@ -1724,7 +2132,7 @@ class AXMMaintenanceManagementModule {
1724
2132
  },
1725
2133
  {
1726
2134
  key: AXMMaintenanceManagementCommandKeys.WorkOrder.StartFlow,
1727
- command: () => import('./acorex-platform-module-maintenance-management-client-start-work-order-flow.command-BJeww85O.mjs').then((c) => c.StartWorkOrderFlowCommand),
2135
+ command: () => import('./acorex-platform-module-maintenance-management-client-start-work-order-flow.command-B5Ko0JyG.mjs').then((c) => c.StartWorkOrderFlowCommand),
1728
2136
  },
1729
2137
  {
1730
2138
  key: AXMMaintenanceManagementCommandKeys.WorkflowActivity.ResolveWorkOrder,
@@ -1736,11 +2144,11 @@ class AXMMaintenanceManagementModule {
1736
2144
  },
1737
2145
  {
1738
2146
  key: AXMMaintenanceManagementCommandKeys.WorkflowActivity.CreateOrGetWorkReportDraft,
1739
- command: () => import('./acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-Dk2th4Rc.mjs').then((c) => c.CreateOrGetWorkReportDraftActivity),
2147
+ command: () => import('./acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-DDvUWUU5.mjs').then((c) => c.CreateOrGetWorkReportDraftActivity),
1740
2148
  },
1741
2149
  {
1742
2150
  key: AXMMaintenanceManagementCommandKeys.WorkflowActivity.UpdateWorkOrderInProgress,
1743
- command: () => import('./acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-D0Pv7gvX.mjs').then((c) => c.UpdateWorkOrderInProgressActivity),
2151
+ command: () => import('./acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-D75YRfD2.mjs').then((c) => c.UpdateWorkOrderInProgressActivity),
1744
2152
  },
1745
2153
  {
1746
2154
  key: AXMMaintenanceManagementCommandKeys.WorkflowActivity.ValidateWorkOrderCompletion,
@@ -1752,7 +2160,7 @@ class AXMMaintenanceManagementModule {
1752
2160
  },
1753
2161
  {
1754
2162
  key: AXMMaintenanceManagementCommandKeys.WorkflowActivity.RecordWorkReportAssessment,
1755
- command: () => import('./acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-BvFTVTKQ.mjs').then((c) => c.RecordWorkReportAssessmentActivity),
2163
+ command: () => import('./acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-BiD6NYBT.mjs').then((c) => c.RecordWorkReportAssessmentActivity),
1756
2164
  },
1757
2165
  {
1758
2166
  key: AXMMaintenanceManagementCommandKeys.WorkflowActivity.UpdateWorkOrderCompleted,
@@ -1804,6 +2212,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
1804
2212
  useClass: AXMMaintenanceManagementWorkOrderExpressionEvaluatorScopeProvider,
1805
2213
  multi: true,
1806
2214
  },
2215
+ {
2216
+ provide: AXP_WIDGET_DEFINITION_PROVIDER,
2217
+ useClass: AXMMaintenanceIntervalWidgetProvider,
2218
+ multi: true,
2219
+ },
1807
2220
  {
1808
2221
  provide: AXP_WIDGET_DEFINITION_PROVIDER,
1809
2222
  useClass: AXMWorkReportWidgetProvider,
@@ -1837,7 +2250,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
1837
2250
  },
1838
2251
  {
1839
2252
  key: AXMMaintenanceManagementCommandKeys.WorkOrder.StartFlow,
1840
- command: () => import('./acorex-platform-module-maintenance-management-client-start-work-order-flow.command-BJeww85O.mjs').then((c) => c.StartWorkOrderFlowCommand),
2253
+ command: () => import('./acorex-platform-module-maintenance-management-client-start-work-order-flow.command-B5Ko0JyG.mjs').then((c) => c.StartWorkOrderFlowCommand),
1841
2254
  },
1842
2255
  {
1843
2256
  key: AXMMaintenanceManagementCommandKeys.WorkflowActivity.ResolveWorkOrder,
@@ -1849,11 +2262,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
1849
2262
  },
1850
2263
  {
1851
2264
  key: AXMMaintenanceManagementCommandKeys.WorkflowActivity.CreateOrGetWorkReportDraft,
1852
- command: () => import('./acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-Dk2th4Rc.mjs').then((c) => c.CreateOrGetWorkReportDraftActivity),
2265
+ command: () => import('./acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-DDvUWUU5.mjs').then((c) => c.CreateOrGetWorkReportDraftActivity),
1853
2266
  },
1854
2267
  {
1855
2268
  key: AXMMaintenanceManagementCommandKeys.WorkflowActivity.UpdateWorkOrderInProgress,
1856
- command: () => import('./acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-D0Pv7gvX.mjs').then((c) => c.UpdateWorkOrderInProgressActivity),
2269
+ command: () => import('./acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-D75YRfD2.mjs').then((c) => c.UpdateWorkOrderInProgressActivity),
1857
2270
  },
1858
2271
  {
1859
2272
  key: AXMMaintenanceManagementCommandKeys.WorkflowActivity.ValidateWorkOrderCompletion,
@@ -1865,7 +2278,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
1865
2278
  },
1866
2279
  {
1867
2280
  key: AXMMaintenanceManagementCommandKeys.WorkflowActivity.RecordWorkReportAssessment,
1868
- command: () => import('./acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-BvFTVTKQ.mjs').then((c) => c.RecordWorkReportAssessmentActivity),
2281
+ command: () => import('./acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-BiD6NYBT.mjs').then((c) => c.RecordWorkReportAssessmentActivity),
1869
2282
  },
1870
2283
  {
1871
2284
  key: AXMMaintenanceManagementCommandKeys.WorkflowActivity.UpdateWorkOrderCompleted,
@@ -2587,5 +3000,5 @@ const workOrderExecutionWorkflowDefinition = createWorkOrderExecutionWorkflowDef
2587
3000
  * Generated bundle index. Do not edit.
2588
3001
  */
2589
3002
 
2590
- export { AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE as A, AXMMaintenanceManagementMenuProvider as a, AXMMaintenanceManagementModule as b, AXMMaintenanceManagementPermissionDefinitionProvider as c, AXMMaintenanceManagementSearchCommandProvider as d, createWorkOrderExecutionWorkflowDefinition as e, workOrderExecutionWorkflowName as f, queryWorkflowTemplatesForAsset as q, resolveDisplayLabel as r, workOrderExecutionWorkflowDefinition as w };
2591
- //# sourceMappingURL=acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-CGfPQtJ8.mjs.map
3003
+ export { AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE as A, AXMMaintenanceIntervalComponent as a, AXMMaintenanceManagementMenuProvider as b, AXMMaintenanceManagementModule as c, AXMMaintenanceManagementPermissionDefinitionProvider as d, AXMMaintenanceManagementSearchCommandProvider as e, createWorkOrderExecutionWorkflowDefinition as f, workOrderExecutionWorkflowName as g, queryWorkflowTemplatesForAsset as q, resolveDisplayLabel as r, workOrderExecutionWorkflowDefinition as w };
3004
+ //# sourceMappingURL=acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-6cXxZPN1.mjs.map