@acorex/modules 21.0.0-next.41 → 21.0.0-next.43

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 (364) hide show
  1. package/fesm2022/acorex-modules-ai-management-agent-registry-tool-configurator-widget-column.component-D0ruV6aJ.mjs.map +1 -1
  2. package/fesm2022/{acorex-modules-ai-management-agent-registry-tool-configurator-widget-edit.component-C7TQMwX4.mjs → acorex-modules-ai-management-agent-registry-tool-configurator-widget-edit.component-C-XsPEIg.mjs} +2 -2
  3. package/fesm2022/acorex-modules-ai-management-agent-registry-tool-configurator-widget-edit.component-C-XsPEIg.mjs.map +1 -0
  4. package/fesm2022/{acorex-modules-ai-management-agent.entity-DwPIKib2.mjs → acorex-modules-ai-management-agent.entity-D6-0_Ms3.mjs} +2 -2
  5. package/fesm2022/acorex-modules-ai-management-agent.entity-D6-0_Ms3.mjs.map +1 -0
  6. package/fesm2022/acorex-modules-ai-management-assist-delegated-agent-configurator-widget-column.component-DSC48iD0.mjs.map +1 -1
  7. package/fesm2022/{acorex-modules-ai-management-assist-delegated-agent-configurator-widget-edit.component-BozVAuLO.mjs → acorex-modules-ai-management-assist-delegated-agent-configurator-widget-edit.component-u1hZ4P5s.mjs} +2 -2
  8. package/fesm2022/acorex-modules-ai-management-assist-delegated-agent-configurator-widget-edit.component-u1hZ4P5s.mjs.map +1 -0
  9. package/fesm2022/{acorex-modules-ai-management-assist.entity-CuToMDS_.mjs → acorex-modules-ai-management-assist.entity-DfW-FFCt.mjs} +2 -2
  10. package/fesm2022/{acorex-modules-ai-management-assist.entity-CuToMDS_.mjs.map → acorex-modules-ai-management-assist.entity-DfW-FFCt.mjs.map} +1 -1
  11. package/fesm2022/{acorex-modules-ai-management-model.entity-vUNlioDw.mjs → acorex-modules-ai-management-model.entity-DiDaXVa3.mjs} +2 -2
  12. package/fesm2022/{acorex-modules-ai-management-model.entity-vUNlioDw.mjs.map → acorex-modules-ai-management-model.entity-DiDaXVa3.mjs.map} +1 -1
  13. package/fesm2022/{acorex-modules-ai-management-open-ai-endpoint.entity-BpxRR5ir.mjs → acorex-modules-ai-management-open-ai-endpoint.entity-CZLNKtl0.mjs} +2 -2
  14. package/fesm2022/{acorex-modules-ai-management-open-ai-endpoint.entity-BpxRR5ir.mjs.map → acorex-modules-ai-management-open-ai-endpoint.entity-CZLNKtl0.mjs.map} +1 -1
  15. package/fesm2022/acorex-modules-ai-management.mjs +4636 -1
  16. package/fesm2022/acorex-modules-ai-management.mjs.map +1 -1
  17. package/fesm2022/{acorex-modules-application-management-features-widget-view.component-DlfkfOay.mjs → acorex-modules-application-management-features-widget-view.component-uc8eGA-k.mjs} +2 -2
  18. package/fesm2022/{acorex-modules-application-management-features-widget-view.component-DlfkfOay.mjs.map → acorex-modules-application-management-features-widget-view.component-uc8eGA-k.mjs.map} +1 -1
  19. package/fesm2022/acorex-modules-application-management.mjs +22 -77
  20. package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
  21. package/fesm2022/{acorex-modules-assessment-management-acorex-modules-assessment-management-CMS2WJDu.mjs → acorex-modules-assessment-management-acorex-modules-assessment-management-c8OrTwDw.mjs} +26 -26
  22. package/fesm2022/{acorex-modules-assessment-management-acorex-modules-assessment-management-CMS2WJDu.mjs.map → acorex-modules-assessment-management-acorex-modules-assessment-management-c8OrTwDw.mjs.map} +1 -1
  23. package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-C-Q4hu8o.mjs → acorex-modules-assessment-management-assessment-case.entity-DEsJE7x3.mjs} +2 -2
  24. package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-C-Q4hu8o.mjs.map → acorex-modules-assessment-management-assessment-case.entity-DEsJE7x3.mjs.map} +1 -1
  25. package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-CQI_FpUd.mjs → acorex-modules-assessment-management-assessment-session.entity-eNFfu-Jq.mjs} +2 -2
  26. package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-CQI_FpUd.mjs.map → acorex-modules-assessment-management-assessment-session.entity-eNFfu-Jq.mjs.map} +1 -1
  27. package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-Bpvco5iD.mjs → acorex-modules-assessment-management-fill-assessment-session.command-BeSUBkI9.mjs} +2 -2
  28. package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-Bpvco5iD.mjs.map → acorex-modules-assessment-management-fill-assessment-session.command-BeSUBkI9.mjs.map} +1 -1
  29. package/fesm2022/{acorex-modules-assessment-management-index-_fPuBQeK.mjs → acorex-modules-assessment-management-index-3GB9Xkyv.mjs} +4 -4
  30. package/fesm2022/{acorex-modules-assessment-management-index-_fPuBQeK.mjs.map → acorex-modules-assessment-management-index-3GB9Xkyv.mjs.map} +1 -1
  31. package/fesm2022/{acorex-modules-assessment-management-preview-question.command-drR6nq76.mjs → acorex-modules-assessment-management-preview-question.command-QinKZtTz.mjs} +2 -2
  32. package/fesm2022/{acorex-modules-assessment-management-preview-question.command-drR6nq76.mjs.map → acorex-modules-assessment-management-preview-question.command-QinKZtTz.mjs.map} +1 -1
  33. package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-CY8tZWdG.mjs → acorex-modules-assessment-management-preview-questionnaire.command-CKZYSyOv.mjs} +2 -2
  34. package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-CY8tZWdG.mjs.map → acorex-modules-assessment-management-preview-questionnaire.command-CKZYSyOv.mjs.map} +1 -1
  35. package/fesm2022/{acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-DV9irFZ0.mjs → acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-qZXANgNr.mjs} +2 -2
  36. package/fesm2022/{acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-DV9irFZ0.mjs.map → acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-qZXANgNr.mjs.map} +1 -1
  37. package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-DO4bTKKo.mjs → acorex-modules-assessment-management-question-bank-item.entity-Dp4eYR3O.mjs} +2 -2
  38. package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-DO4bTKKo.mjs.map → acorex-modules-assessment-management-question-bank-item.entity-Dp4eYR3O.mjs.map} +1 -1
  39. package/fesm2022/{acorex-modules-assessment-management-questionnaire-calculation.entity-B-N0v4zs.mjs → acorex-modules-assessment-management-questionnaire-calculation.entity-BMB9IEIv.mjs} +2 -2
  40. package/fesm2022/{acorex-modules-assessment-management-questionnaire-calculation.entity-B-N0v4zs.mjs.map → acorex-modules-assessment-management-questionnaire-calculation.entity-BMB9IEIv.mjs.map} +1 -1
  41. package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-Cc-o6qmY.mjs → acorex-modules-assessment-management-questionnaire-viewer-popup.component-DgC1xuH9.mjs} +2 -2
  42. package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-Cc-o6qmY.mjs.map → acorex-modules-assessment-management-questionnaire-viewer-popup.component-DgC1xuH9.mjs.map} +1 -1
  43. package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-CJWNlaJs.mjs → acorex-modules-assessment-management-questionnaire.entity-ChUNq9Bc.mjs} +3 -3
  44. package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-CJWNlaJs.mjs.map → acorex-modules-assessment-management-questionnaire.entity-ChUNq9Bc.mjs.map} +1 -1
  45. package/fesm2022/{acorex-modules-assessment-management-save-questionnaire-questions.command-C3gOkZa5.mjs → acorex-modules-assessment-management-save-questionnaire-questions.command-sji05ut4.mjs} +2 -2
  46. package/fesm2022/{acorex-modules-assessment-management-save-questionnaire-questions.command-C3gOkZa5.mjs.map → acorex-modules-assessment-management-save-questionnaire-questions.command-sji05ut4.mjs.map} +1 -1
  47. package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-AvTbWvGE.mjs → acorex-modules-assessment-management-view-session-answers.command-BIpotfIE.mjs} +2 -2
  48. package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-AvTbWvGE.mjs.map → acorex-modules-assessment-management-view-session-answers.command-BIpotfIE.mjs.map} +1 -1
  49. package/fesm2022/acorex-modules-assessment-management.mjs +1 -1
  50. package/fesm2022/{acorex-modules-asset-management-acorex-modules-asset-management-DrIhRaZ6.mjs → acorex-modules-asset-management-acorex-modules-asset-management-fQ0rp8vu.mjs} +765 -131
  51. package/fesm2022/acorex-modules-asset-management-acorex-modules-asset-management-fQ0rp8vu.mjs.map +1 -0
  52. package/fesm2022/acorex-modules-asset-management-asset-rental-history-status.provider-BiWf2TwD.mjs +118 -0
  53. package/fesm2022/acorex-modules-asset-management-asset-rental-history-status.provider-BiWf2TwD.mjs.map +1 -0
  54. package/fesm2022/{acorex-modules-asset-management-asset-system-assignment.entity-HqZtfJpe.mjs → acorex-modules-asset-management-asset-system-assignment.entity-DuFgujR6.mjs} +2 -2
  55. package/fesm2022/{acorex-modules-asset-management-asset-system-assignment.entity-HqZtfJpe.mjs.map → acorex-modules-asset-management-asset-system-assignment.entity-DuFgujR6.mjs.map} +1 -1
  56. package/fesm2022/{acorex-modules-asset-management-asset-system-type.entity-fvrbyjXb.mjs → acorex-modules-asset-management-asset-system-type.entity-sszGMFny.mjs} +2 -2
  57. package/fesm2022/{acorex-modules-asset-management-asset-system-type.entity-fvrbyjXb.mjs.map → acorex-modules-asset-management-asset-system-type.entity-sszGMFny.mjs.map} +1 -1
  58. package/fesm2022/{acorex-modules-asset-management-asset-system.entity-DVAaXNWx.mjs → acorex-modules-asset-management-asset-system.entity-tWUPNYQq.mjs} +2 -2
  59. package/fesm2022/{acorex-modules-asset-management-asset-system.entity-DVAaXNWx.mjs.map → acorex-modules-asset-management-asset-system.entity-tWUPNYQq.mjs.map} +1 -1
  60. package/fesm2022/{acorex-modules-asset-management-asset-type-section-component.entity-n-bxBcGz.mjs → acorex-modules-asset-management-asset-type-section-component.entity-l3xXMo2l.mjs} +32 -31
  61. package/fesm2022/acorex-modules-asset-management-asset-type-section-component.entity-l3xXMo2l.mjs.map +1 -0
  62. package/fesm2022/{acorex-modules-asset-management-asset-type-section.entity-BF7N699p.mjs → acorex-modules-asset-management-asset-type-section.entity-CldvQBUW.mjs} +2 -2
  63. package/fesm2022/{acorex-modules-asset-management-asset-type-section.entity-BF7N699p.mjs.map → acorex-modules-asset-management-asset-type-section.entity-CldvQBUW.mjs.map} +1 -1
  64. package/fesm2022/{acorex-modules-asset-management-asset-type.entity-Dt61Rs4F.mjs → acorex-modules-asset-management-asset-type.entity-CP0dryvp.mjs} +108 -28
  65. package/fesm2022/acorex-modules-asset-management-asset-type.entity-CP0dryvp.mjs.map +1 -0
  66. package/fesm2022/{acorex-modules-asset-management-asset.entity-BzlsaEwC.mjs → acorex-modules-asset-management-asset.entity-Du_fWe9V.mjs} +21 -230
  67. package/fesm2022/acorex-modules-asset-management-asset.entity-Du_fWe9V.mjs.map +1 -0
  68. package/fesm2022/acorex-modules-asset-management.mjs +1 -1
  69. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-BUtk_RQC.mjs → acorex-modules-auth-acorex-modules-auth-CGiDe3e-.mjs} +13 -13
  70. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-BUtk_RQC.mjs.map → acorex-modules-auth-acorex-modules-auth-CGiDe3e-.mjs.map} +1 -1
  71. package/fesm2022/{acorex-modules-auth-app-chooser.component-DnVYLE4q.mjs → acorex-modules-auth-app-chooser.component-Dt_2eXel.mjs} +2 -2
  72. package/fesm2022/{acorex-modules-auth-app-chooser.component-DnVYLE4q.mjs.map → acorex-modules-auth-app-chooser.component-Dt_2eXel.mjs.map} +1 -1
  73. package/fesm2022/{acorex-modules-auth-login.module-Be-fhX-L.mjs → acorex-modules-auth-login.module-Bl8pAhHc.mjs} +4 -4
  74. package/fesm2022/{acorex-modules-auth-login.module-Be-fhX-L.mjs.map → acorex-modules-auth-login.module-Bl8pAhHc.mjs.map} +1 -1
  75. package/fesm2022/{acorex-modules-auth-master.layout-6n06jHF4.mjs → acorex-modules-auth-master.layout-B8GSev0J.mjs} +2 -2
  76. package/fesm2022/{acorex-modules-auth-master.layout-6n06jHF4.mjs.map → acorex-modules-auth-master.layout-B8GSev0J.mjs.map} +1 -1
  77. package/fesm2022/{acorex-modules-auth-oauth-callback.component-B_u8aKEs.mjs → acorex-modules-auth-oauth-callback.component-DleQ24IP.mjs} +3 -3
  78. package/fesm2022/{acorex-modules-auth-oauth-callback.component-B_u8aKEs.mjs.map → acorex-modules-auth-oauth-callback.component-DleQ24IP.mjs.map} +1 -1
  79. package/fesm2022/{acorex-modules-auth-password.component-Bz6qjJ_G.mjs → acorex-modules-auth-password.component-C1GbARlM.mjs} +2 -2
  80. package/fesm2022/{acorex-modules-auth-password.component-Bz6qjJ_G.mjs.map → acorex-modules-auth-password.component-C1GbARlM.mjs.map} +1 -1
  81. package/fesm2022/{acorex-modules-auth-password.component-w9qdHuT5.mjs → acorex-modules-auth-password.component-D6ALMoO4.mjs} +2 -2
  82. package/fesm2022/{acorex-modules-auth-password.component-w9qdHuT5.mjs.map → acorex-modules-auth-password.component-D6ALMoO4.mjs.map} +1 -1
  83. package/fesm2022/{acorex-modules-auth-routes-CUbjrK-J.mjs → acorex-modules-auth-routes-FDp1SEZA.mjs} +2 -2
  84. package/fesm2022/{acorex-modules-auth-routes-CUbjrK-J.mjs.map → acorex-modules-auth-routes-FDp1SEZA.mjs.map} +1 -1
  85. package/fesm2022/{acorex-modules-auth-settings.provider-DkhbuDBO.mjs → acorex-modules-auth-settings.provider-CN7Lb38l.mjs} +26 -31
  86. package/fesm2022/acorex-modules-auth-settings.provider-CN7Lb38l.mjs.map +1 -0
  87. package/fesm2022/{acorex-modules-auth-tenant-chooser.component-D_cV-RUp.mjs → acorex-modules-auth-tenant-chooser.component-o55sauLG.mjs} +2 -2
  88. package/fesm2022/{acorex-modules-auth-tenant-chooser.component-D_cV-RUp.mjs.map → acorex-modules-auth-tenant-chooser.component-o55sauLG.mjs.map} +1 -1
  89. package/fesm2022/{acorex-modules-auth-two-factor.module-ok-nT2VM.mjs → acorex-modules-auth-two-factor.module-CVrYPw5D.mjs} +2 -2
  90. package/fesm2022/{acorex-modules-auth-two-factor.module-ok-nT2VM.mjs.map → acorex-modules-auth-two-factor.module-CVrYPw5D.mjs.map} +1 -1
  91. package/fesm2022/{acorex-modules-auth-user-sessions.component-Cmrx3_vM.mjs → acorex-modules-auth-user-sessions.component-BVglZAnc.mjs} +2 -2
  92. package/fesm2022/{acorex-modules-auth-user-sessions.component-Cmrx3_vM.mjs.map → acorex-modules-auth-user-sessions.component-BVglZAnc.mjs.map} +1 -1
  93. package/fesm2022/acorex-modules-auth.mjs +1 -1
  94. package/fesm2022/{acorex-modules-common-search-popup.component-UIz5Bphx.mjs → acorex-modules-common-search-popup.component-BbRyjGia.mjs} +2 -2
  95. package/fesm2022/{acorex-modules-common-search-popup.component-UIz5Bphx.mjs.map → acorex-modules-common-search-popup.component-BbRyjGia.mjs.map} +1 -1
  96. package/fesm2022/acorex-modules-common.mjs +10 -35
  97. package/fesm2022/acorex-modules-common.mjs.map +1 -1
  98. package/fesm2022/{acorex-modules-content-management-acorex-modules-content-management-of3UnjxP.mjs → acorex-modules-content-management-acorex-modules-content-management-CO8lZb34.mjs} +40 -6
  99. package/fesm2022/acorex-modules-content-management-acorex-modules-content-management-CO8lZb34.mjs.map +1 -0
  100. package/fesm2022/{acorex-modules-content-management-permission-definition.provider-DnjtPg6f.mjs → acorex-modules-content-management-permission-definition.provider-Bcq5uOVH.mjs} +2 -2
  101. package/fesm2022/{acorex-modules-content-management-permission-definition.provider-DnjtPg6f.mjs.map → acorex-modules-content-management-permission-definition.provider-Bcq5uOVH.mjs.map} +1 -1
  102. package/fesm2022/{acorex-modules-content-management-template-content-editor-widget-edit.component-BKHvQiql.mjs → acorex-modules-content-management-template-content-editor-widget-edit.component-D_q_xWeI.mjs} +59 -16
  103. package/fesm2022/acorex-modules-content-management-template-content-editor-widget-edit.component-D_q_xWeI.mjs.map +1 -0
  104. package/fesm2022/{acorex-modules-content-management-template-content-editor-widget-view.component-q1Se62Hd.mjs → acorex-modules-content-management-template-content-editor-widget-view.component-DU5y6UxK.mjs} +15 -5
  105. package/fesm2022/acorex-modules-content-management-template-content-editor-widget-view.component-DU5y6UxK.mjs.map +1 -0
  106. package/fesm2022/acorex-modules-content-management.mjs +1 -1
  107. package/fesm2022/acorex-modules-conversation-acorex-modules-conversation-BJU2_R9O.mjs +6155 -0
  108. package/fesm2022/acorex-modules-conversation-acorex-modules-conversation-BJU2_R9O.mjs.map +1 -0
  109. package/fesm2022/acorex-modules-conversation-assist-delegated-agent-detail-popup.component-DX2JPckF.mjs +324 -0
  110. package/fesm2022/acorex-modules-conversation-assist-delegated-agent-detail-popup.component-DX2JPckF.mjs.map +1 -0
  111. package/fesm2022/{acorex-modules-conversation-comments-page.component-DnAbpVxZ.mjs → acorex-modules-conversation-comments-page.component-Bg6m7UTG.mjs} +2 -2
  112. package/fesm2022/{acorex-modules-conversation-comments-page.component-DnAbpVxZ.mjs.map → acorex-modules-conversation-comments-page.component-Bg6m7UTG.mjs.map} +1 -1
  113. package/fesm2022/acorex-modules-conversation.mjs +1 -7353
  114. package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
  115. package/fesm2022/{acorex-modules-dashboard-management-acorex-modules-dashboard-management-DLndkp6w.mjs → acorex-modules-dashboard-management-acorex-modules-dashboard-management-D11VudG8.mjs} +6 -7
  116. package/fesm2022/acorex-modules-dashboard-management-acorex-modules-dashboard-management-D11VudG8.mjs.map +1 -0
  117. package/fesm2022/{acorex-modules-dashboard-management-index-c8QzHHtG.mjs → acorex-modules-dashboard-management-index-DB3Uh1wL.mjs} +2 -2
  118. package/fesm2022/{acorex-modules-dashboard-management-index-c8QzHHtG.mjs.map → acorex-modules-dashboard-management-index-DB3Uh1wL.mjs.map} +1 -1
  119. package/fesm2022/acorex-modules-dashboard-management.mjs +1 -1
  120. package/fesm2022/acorex-modules-data-management.mjs +4 -4
  121. package/fesm2022/acorex-modules-data-management.mjs.map +1 -1
  122. package/fesm2022/acorex-modules-document-management-large-tiles-view.component-BZWN7WCX.mjs +24 -0
  123. package/fesm2022/acorex-modules-document-management-large-tiles-view.component-BZWN7WCX.mjs.map +1 -0
  124. package/fesm2022/acorex-modules-document-management-small-tiles-view.component-DI6QQ2St.mjs +24 -0
  125. package/fesm2022/acorex-modules-document-management-small-tiles-view.component-DI6QQ2St.mjs.map +1 -0
  126. package/fesm2022/acorex-modules-document-management.mjs +209 -397
  127. package/fesm2022/acorex-modules-document-management.mjs.map +1 -1
  128. package/fesm2022/{acorex-modules-form-template-management-template-picker.component-GHXF4eT3.mjs → acorex-modules-form-template-management-template-picker.component-CtTkFhXf.mjs} +2 -2
  129. package/fesm2022/{acorex-modules-form-template-management-template-picker.component-GHXF4eT3.mjs.map → acorex-modules-form-template-management-template-picker.component-CtTkFhXf.mjs.map} +1 -1
  130. package/fesm2022/acorex-modules-form-template-management.mjs +14 -18
  131. package/fesm2022/acorex-modules-form-template-management.mjs.map +1 -1
  132. package/fesm2022/{acorex-modules-human-capital-management-acorex-modules-human-capital-management-Bgsi3FHG.mjs → acorex-modules-human-capital-management-acorex-modules-human-capital-management-Bwk3-2wy.mjs} +90 -79
  133. package/fesm2022/acorex-modules-human-capital-management-acorex-modules-human-capital-management-Bwk3-2wy.mjs.map +1 -0
  134. package/fesm2022/{acorex-modules-human-capital-management-approve-leave-request.command-CxpTmb-1.mjs → acorex-modules-human-capital-management-approve-leave-request.command-B5aSubCY.mjs} +2 -2
  135. package/fesm2022/{acorex-modules-human-capital-management-approve-leave-request.command-CxpTmb-1.mjs.map → acorex-modules-human-capital-management-approve-leave-request.command-B5aSubCY.mjs.map} +1 -1
  136. package/fesm2022/{acorex-modules-human-capital-management-assign-position-assignment.command-jLGe49dJ.mjs → acorex-modules-human-capital-management-assign-position-assignment.command-l8dGe3kg.mjs} +2 -2
  137. package/fesm2022/{acorex-modules-human-capital-management-assign-position-assignment.command-jLGe49dJ.mjs.map → acorex-modules-human-capital-management-assign-position-assignment.command-l8dGe3kg.mjs.map} +1 -1
  138. package/fesm2022/{acorex-modules-human-capital-management-cancel-leave-request.command-ChNGu90e.mjs → acorex-modules-human-capital-management-cancel-leave-request.command-CeV-5Y5n.mjs} +2 -2
  139. package/fesm2022/{acorex-modules-human-capital-management-cancel-leave-request.command-ChNGu90e.mjs.map → acorex-modules-human-capital-management-cancel-leave-request.command-CeV-5Y5n.mjs.map} +1 -1
  140. package/fesm2022/{acorex-modules-human-capital-management-employee.entity-4k7F7_ON.mjs → acorex-modules-human-capital-management-employee.entity-DNgt9yQm.mjs} +4 -2
  141. package/fesm2022/acorex-modules-human-capital-management-employee.entity-DNgt9yQm.mjs.map +1 -0
  142. package/fesm2022/{acorex-modules-human-capital-management-employment-type.entity-Jo2fB9R3.mjs → acorex-modules-human-capital-management-employment-type.entity-rq8-Bauc.mjs} +2 -2
  143. package/fesm2022/{acorex-modules-human-capital-management-employment-type.entity-Jo2fB9R3.mjs.map → acorex-modules-human-capital-management-employment-type.entity-rq8-Bauc.mjs.map} +1 -1
  144. package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity-DhLUXnJu.mjs → acorex-modules-human-capital-management-leave-request.entity-DlQJw4F6.mjs} +2 -2
  145. package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity-DhLUXnJu.mjs.map → acorex-modules-human-capital-management-leave-request.entity-DlQJw4F6.mjs.map} +1 -1
  146. package/fesm2022/{acorex-modules-human-capital-management-leave-type.entity-C-lN2bb0.mjs → acorex-modules-human-capital-management-leave-type.entity-D5J2oOuY.mjs} +2 -2
  147. package/fesm2022/{acorex-modules-human-capital-management-leave-type.entity-C-lN2bb0.mjs.map → acorex-modules-human-capital-management-leave-type.entity-D5J2oOuY.mjs.map} +1 -1
  148. package/fesm2022/{acorex-modules-human-capital-management-position-assignment.entity-BD1jN4Mx.mjs → acorex-modules-human-capital-management-position-assignment.entity-D7mKhxYp.mjs} +2 -2
  149. package/fesm2022/{acorex-modules-human-capital-management-position-assignment.entity-BD1jN4Mx.mjs.map → acorex-modules-human-capital-management-position-assignment.entity-D7mKhxYp.mjs.map} +1 -1
  150. package/fesm2022/{acorex-modules-human-capital-management-reject-leave-request.command-D0G6UrqI.mjs → acorex-modules-human-capital-management-reject-leave-request.command-C4AWFOmG.mjs} +2 -2
  151. package/fesm2022/{acorex-modules-human-capital-management-reject-leave-request.command-D0G6UrqI.mjs.map → acorex-modules-human-capital-management-reject-leave-request.command-C4AWFOmG.mjs.map} +1 -1
  152. package/fesm2022/{acorex-modules-human-capital-management-revoke-position-assignment.command-CYzqQXja.mjs → acorex-modules-human-capital-management-revoke-position-assignment.command-BSJhBW3p.mjs} +28 -17
  153. package/fesm2022/acorex-modules-human-capital-management-revoke-position-assignment.command-BSJhBW3p.mjs.map +1 -0
  154. package/fesm2022/acorex-modules-human-capital-management.mjs +1 -1
  155. package/fesm2022/acorex-modules-locale-management.mjs +72 -70
  156. package/fesm2022/acorex-modules-locale-management.mjs.map +1 -1
  157. package/fesm2022/acorex-modules-location-management.mjs +20 -10
  158. package/fesm2022/acorex-modules-location-management.mjs.map +1 -1
  159. package/fesm2022/{acorex-modules-maintenance-management-acorex-modules-maintenance-management-B5wf4zMI.mjs → acorex-modules-maintenance-management-acorex-modules-maintenance-management-C0LLBxMR.mjs} +40 -38
  160. package/fesm2022/acorex-modules-maintenance-management-acorex-modules-maintenance-management-C0LLBxMR.mjs.map +1 -0
  161. package/fesm2022/{acorex-modules-maintenance-management-failure-effect.entity-Cv5KnboB.mjs → acorex-modules-maintenance-management-failure-effect.entity-D8yOqKWQ.mjs} +2 -2
  162. package/fesm2022/{acorex-modules-maintenance-management-failure-effect.entity-Cv5KnboB.mjs.map → acorex-modules-maintenance-management-failure-effect.entity-D8yOqKWQ.mjs.map} +1 -1
  163. package/fesm2022/{acorex-modules-maintenance-management-failure-mode-asset-type.entity-BBL3-hfv.mjs → acorex-modules-maintenance-management-failure-mode-asset-type.entity-CHXkbEHG.mjs} +2 -2
  164. package/fesm2022/{acorex-modules-maintenance-management-failure-mode-asset-type.entity-BBL3-hfv.mjs.map → acorex-modules-maintenance-management-failure-mode-asset-type.entity-CHXkbEHG.mjs.map} +1 -1
  165. package/fesm2022/{acorex-modules-maintenance-management-failure-mode-mechanism.entity-nxOdHZxu.mjs → acorex-modules-maintenance-management-failure-mode-mechanism.entity-yR11e9TU.mjs} +2 -2
  166. package/fesm2022/{acorex-modules-maintenance-management-failure-mode-mechanism.entity-nxOdHZxu.mjs.map → acorex-modules-maintenance-management-failure-mode-mechanism.entity-yR11e9TU.mjs.map} +1 -1
  167. package/fesm2022/{acorex-modules-maintenance-management-failure-mode-solution.entity-ApD80Scc.mjs → acorex-modules-maintenance-management-failure-mode-solution.entity-BD4Uz6G-.mjs} +2 -2
  168. package/fesm2022/{acorex-modules-maintenance-management-failure-mode-solution.entity-ApD80Scc.mjs.map → acorex-modules-maintenance-management-failure-mode-solution.entity-BD4Uz6G-.mjs.map} +1 -1
  169. package/fesm2022/{acorex-modules-maintenance-management-failure-register-cause.entity-CibfwJLG.mjs → acorex-modules-maintenance-management-failure-register-cause.entity-CZFgl-t4.mjs} +2 -2
  170. package/fesm2022/{acorex-modules-maintenance-management-failure-register-cause.entity-CibfwJLG.mjs.map → acorex-modules-maintenance-management-failure-register-cause.entity-CZFgl-t4.mjs.map} +1 -1
  171. package/fesm2022/{acorex-modules-maintenance-management-failure-register-effect.entity-DpoqULBf.mjs → acorex-modules-maintenance-management-failure-register-effect.entity-DQE5nqiN.mjs} +2 -2
  172. package/fesm2022/{acorex-modules-maintenance-management-failure-register-effect.entity-DpoqULBf.mjs.map → acorex-modules-maintenance-management-failure-register-effect.entity-DQE5nqiN.mjs.map} +1 -1
  173. package/fesm2022/{acorex-modules-maintenance-management-failure-register-mechanism.entity-0-J2Hkmn.mjs → acorex-modules-maintenance-management-failure-register-mechanism.entity-C6mhbWzU.mjs} +2 -2
  174. package/fesm2022/{acorex-modules-maintenance-management-failure-register-mechanism.entity-0-J2Hkmn.mjs.map → acorex-modules-maintenance-management-failure-register-mechanism.entity-C6mhbWzU.mjs.map} +1 -1
  175. package/fesm2022/{acorex-modules-maintenance-management-failure-register.entity-C4Az4Rr9.mjs → acorex-modules-maintenance-management-failure-register.entity-DSnrVaWI.mjs} +2 -2
  176. package/fesm2022/{acorex-modules-maintenance-management-failure-register.entity-C4Az4Rr9.mjs.map → acorex-modules-maintenance-management-failure-register.entity-DSnrVaWI.mjs.map} +1 -1
  177. package/fesm2022/{acorex-modules-maintenance-management-failure-severity.entity-BZo6UUun.mjs → acorex-modules-maintenance-management-failure-severity.entity-DZoMhgW7.mjs} +2 -2
  178. package/fesm2022/{acorex-modules-maintenance-management-failure-severity.entity-BZo6UUun.mjs.map → acorex-modules-maintenance-management-failure-severity.entity-DZoMhgW7.mjs.map} +1 -1
  179. package/fesm2022/{acorex-modules-maintenance-management-maintenance-template.entity-DxYY0hpG.mjs → acorex-modules-maintenance-management-maintenance-template.entity-qf2WNKB_.mjs} +2 -2
  180. package/fesm2022/{acorex-modules-maintenance-management-maintenance-template.entity-DxYY0hpG.mjs.map → acorex-modules-maintenance-management-maintenance-template.entity-qf2WNKB_.mjs.map} +1 -1
  181. package/fesm2022/acorex-modules-maintenance-management.mjs +1 -1
  182. package/fesm2022/{acorex-modules-notification-management-notification-page.component-D0we6H1f.mjs → acorex-modules-notification-management-notification-page.component-B017YY1H.mjs} +2 -2
  183. package/fesm2022/{acorex-modules-notification-management-notification-page.component-D0we6H1f.mjs.map → acorex-modules-notification-management-notification-page.component-B017YY1H.mjs.map} +1 -1
  184. package/fesm2022/acorex-modules-notification-management.mjs +369 -45
  185. package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
  186. package/fesm2022/{acorex-modules-order-management-settings.provider-BzNJIZCu.mjs → acorex-modules-order-management-settings.provider-DF8JQ1PZ.mjs} +6 -11
  187. package/fesm2022/acorex-modules-order-management-settings.provider-DF8JQ1PZ.mjs.map +1 -0
  188. package/fesm2022/acorex-modules-order-management.mjs +2 -2
  189. package/fesm2022/{acorex-modules-organization-management-acorex-modules-organization-management-Bu8fRj_5.mjs → acorex-modules-organization-management-acorex-modules-organization-management-Dqhk5reQ.mjs} +479 -89
  190. package/fesm2022/acorex-modules-organization-management-acorex-modules-organization-management-Dqhk5reQ.mjs.map +1 -0
  191. package/fesm2022/acorex-modules-organization-management-add-business-unit-to-business-unit.command-pnxqURIQ.mjs +165 -0
  192. package/fesm2022/acorex-modules-organization-management-add-business-unit-to-business-unit.command-pnxqURIQ.mjs.map +1 -0
  193. package/fesm2022/{acorex-modules-organization-management-add-position-to-business-unit.command-Qej_boIY.mjs → acorex-modules-organization-management-add-position-to-business-unit.command-DbHKd1Nd.mjs} +32 -2
  194. package/fesm2022/acorex-modules-organization-management-add-position-to-business-unit.command-DbHKd1Nd.mjs.map +1 -0
  195. package/fesm2022/{acorex-modules-organization-management-business-unit.entity-BfQ_7JAq.mjs → acorex-modules-organization-management-business-unit.entity-FsF290Im.mjs} +38 -5
  196. package/fesm2022/acorex-modules-organization-management-business-unit.entity-FsF290Im.mjs.map +1 -0
  197. package/fesm2022/{acorex-modules-organization-management-chart.entity-CNQGGfHV.mjs → acorex-modules-organization-management-chart.entity-_OJkO2zX.mjs} +2 -2
  198. package/fesm2022/{acorex-modules-organization-management-chart.entity-CNQGGfHV.mjs.map → acorex-modules-organization-management-chart.entity-_OJkO2zX.mjs.map} +1 -1
  199. package/fesm2022/{acorex-modules-organization-management-company.entity-D_nTKLzu.mjs → acorex-modules-organization-management-company.entity-Dw7_BvxV.mjs} +2 -2
  200. package/fesm2022/{acorex-modules-organization-management-company.entity-D_nTKLzu.mjs.map → acorex-modules-organization-management-company.entity-Dw7_BvxV.mjs.map} +1 -1
  201. package/fesm2022/{acorex-modules-organization-management-entity.provider-B4uYixLQ.mjs → acorex-modules-organization-management-entity.provider-BWw2RN_V.mjs} +15 -15
  202. package/fesm2022/{acorex-modules-organization-management-entity.provider-B4uYixLQ.mjs.map → acorex-modules-organization-management-entity.provider-BWw2RN_V.mjs.map} +1 -1
  203. package/fesm2022/{acorex-modules-organization-management-feature-definition.provider-COjc6knz.mjs → acorex-modules-organization-management-feature-definition.provider-D3WYwpy0.mjs} +2 -2
  204. package/fesm2022/{acorex-modules-organization-management-feature-definition.provider-COjc6knz.mjs.map → acorex-modules-organization-management-feature-definition.provider-D3WYwpy0.mjs.map} +1 -1
  205. package/fesm2022/{acorex-modules-organization-management-job-definition-pages-component.provider-gDpII9TZ.mjs → acorex-modules-organization-management-job-definition-pages-component.provider-CnS_nu1v.mjs} +3 -3
  206. package/fesm2022/{acorex-modules-organization-management-job-definition-pages-component.provider-gDpII9TZ.mjs.map → acorex-modules-organization-management-job-definition-pages-component.provider-CnS_nu1v.mjs.map} +1 -1
  207. package/fesm2022/{acorex-modules-organization-management-job-definition-responsibilities-page.component-CjXV4wrM.mjs → acorex-modules-organization-management-job-definition-responsibilities-page.component-ZTopEh2M.mjs} +3 -3
  208. package/fesm2022/{acorex-modules-organization-management-job-definition-responsibilities-page.component-CjXV4wrM.mjs.map → acorex-modules-organization-management-job-definition-responsibilities-page.component-ZTopEh2M.mjs.map} +1 -1
  209. package/fesm2022/{acorex-modules-organization-management-job-definition-skills-page.component-2XBgMms-.mjs → acorex-modules-organization-management-job-definition-skills-page.component-Yyzwqg0v.mjs} +2 -2
  210. package/fesm2022/{acorex-modules-organization-management-job-definition-skills-page.component-2XBgMms-.mjs.map → acorex-modules-organization-management-job-definition-skills-page.component-Yyzwqg0v.mjs.map} +1 -1
  211. package/fesm2022/{acorex-modules-organization-management-job-definition.entity-f0JnkdjP.mjs → acorex-modules-organization-management-job-definition.entity-DJjmv1hf.mjs} +2 -2
  212. package/fesm2022/{acorex-modules-organization-management-job-definition.entity-f0JnkdjP.mjs.map → acorex-modules-organization-management-job-definition.entity-DJjmv1hf.mjs.map} +1 -1
  213. package/fesm2022/{acorex-modules-organization-management-job-level.datasource-ByHluGvc.mjs → acorex-modules-organization-management-job-level.datasource-DJH3zaNN.mjs} +2 -2
  214. package/fesm2022/{acorex-modules-organization-management-job-level.datasource-ByHluGvc.mjs.map → acorex-modules-organization-management-job-level.datasource-DJH3zaNN.mjs.map} +1 -1
  215. package/fesm2022/{acorex-modules-organization-management-job-level.entity-BJJJQxCp.mjs → acorex-modules-organization-management-job-level.entity-DBEFEBzu.mjs} +2 -2
  216. package/fesm2022/{acorex-modules-organization-management-job-level.entity-BJJJQxCp.mjs.map → acorex-modules-organization-management-job-level.entity-DBEFEBzu.mjs.map} +1 -1
  217. package/fesm2022/{acorex-modules-organization-management-menu.provider-Dd_Z58sY.mjs → acorex-modules-organization-management-menu.provider-yGn338K1.mjs} +2 -2
  218. package/fesm2022/{acorex-modules-organization-management-menu.provider-Dd_Z58sY.mjs.map → acorex-modules-organization-management-menu.provider-yGn338K1.mjs.map} +1 -1
  219. package/fesm2022/{acorex-modules-organization-management-org-chart.page-fudrNddI.mjs → acorex-modules-organization-management-org-chart.page-C1J123cl.mjs} +35 -48
  220. package/fesm2022/acorex-modules-organization-management-org-chart.page-C1J123cl.mjs.map +1 -0
  221. package/fesm2022/{acorex-modules-organization-management-permission-definition.provider-CoB_RGSa.mjs → acorex-modules-organization-management-permission-definition.provider-B1f668X4.mjs} +2 -2
  222. package/fesm2022/{acorex-modules-organization-management-permission-definition.provider-CoB_RGSa.mjs.map → acorex-modules-organization-management-permission-definition.provider-B1f668X4.mjs.map} +1 -1
  223. package/fesm2022/{acorex-modules-organization-management-position.entity-T1DY1fZn.mjs → acorex-modules-organization-management-position.entity-BvSjM5Hs.mjs} +6 -2
  224. package/fesm2022/acorex-modules-organization-management-position.entity-BvSjM5Hs.mjs.map +1 -0
  225. package/fesm2022/acorex-modules-organization-management-remove-position-from-business-unit.command-CPdbVSno.mjs +92 -0
  226. package/fesm2022/acorex-modules-organization-management-remove-position-from-business-unit.command-CPdbVSno.mjs.map +1 -0
  227. package/fesm2022/acorex-modules-organization-management-replace-position-assignee.command-CQRcVN6R.mjs +66 -0
  228. package/fesm2022/acorex-modules-organization-management-replace-position-assignee.command-CQRcVN6R.mjs.map +1 -0
  229. package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix-widget-edit.component-CIPzMi3d.mjs → acorex-modules-organization-management-responsibilities-matrix-widget-edit.component-Ce3T04Qb.mjs} +2 -2
  230. package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix-widget-edit.component-CIPzMi3d.mjs.map → acorex-modules-organization-management-responsibilities-matrix-widget-edit.component-Ce3T04Qb.mjs.map} +1 -1
  231. package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix-widget-view.component-DzdTNVP6.mjs → acorex-modules-organization-management-responsibilities-matrix-widget-view.component-CIr7JDX-.mjs} +2 -2
  232. package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix-widget-view.component-DzdTNVP6.mjs.map → acorex-modules-organization-management-responsibilities-matrix-widget-view.component-CIr7JDX-.mjs.map} +1 -1
  233. package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix.component-C850Dz47.mjs → acorex-modules-organization-management-responsibilities-matrix.component-BXWso7Ga.mjs} +2 -2
  234. package/fesm2022/{acorex-modules-organization-management-responsibilities-matrix.component-C850Dz47.mjs.map → acorex-modules-organization-management-responsibilities-matrix.component-BXWso7Ga.mjs.map} +1 -1
  235. package/fesm2022/{acorex-modules-organization-management-responsibility-level.entity-CVxWva5x.mjs → acorex-modules-organization-management-responsibility-level.entity-DB04XTJ8.mjs} +2 -2
  236. package/fesm2022/{acorex-modules-organization-management-responsibility-level.entity-CVxWva5x.mjs.map → acorex-modules-organization-management-responsibility-level.entity-DB04XTJ8.mjs.map} +1 -1
  237. package/fesm2022/{acorex-modules-organization-management-responsibility.entity-BmDZhqNl.mjs → acorex-modules-organization-management-responsibility.entity-BMqhYqJS.mjs} +2 -2
  238. package/fesm2022/{acorex-modules-organization-management-responsibility.entity-BmDZhqNl.mjs.map → acorex-modules-organization-management-responsibility.entity-BMqhYqJS.mjs.map} +1 -1
  239. package/fesm2022/{acorex-modules-organization-management-settings.provider-wwGKyBrV.mjs → acorex-modules-organization-management-settings.provider-BhIJkbq_.mjs} +21 -24
  240. package/fesm2022/acorex-modules-organization-management-settings.provider-BhIJkbq_.mjs.map +1 -0
  241. package/fesm2022/{acorex-modules-organization-management-team-business-unit.entity-BmXLb4RI.mjs → acorex-modules-organization-management-team-business-unit.entity-DkTtZv7y.mjs} +2 -2
  242. package/fesm2022/{acorex-modules-organization-management-team-business-unit.entity-BmXLb4RI.mjs.map → acorex-modules-organization-management-team-business-unit.entity-DkTtZv7y.mjs.map} +1 -1
  243. package/fesm2022/{acorex-modules-organization-management-team-member-role.entity-C4DGSm2r.mjs → acorex-modules-organization-management-team-member-role.entity-DPqEPpkP.mjs} +2 -2
  244. package/fesm2022/{acorex-modules-organization-management-team-member-role.entity-C4DGSm2r.mjs.map → acorex-modules-organization-management-team-member-role.entity-DPqEPpkP.mjs.map} +1 -1
  245. package/fesm2022/{acorex-modules-organization-management-team-member.entity-CvVHEzIU.mjs → acorex-modules-organization-management-team-member.entity-IN-CPv5W.mjs} +2 -2
  246. package/fesm2022/{acorex-modules-organization-management-team-member.entity-CvVHEzIU.mjs.map → acorex-modules-organization-management-team-member.entity-IN-CPv5W.mjs.map} +1 -1
  247. package/fesm2022/{acorex-modules-organization-management-team.entity-urjULfNp.mjs → acorex-modules-organization-management-team.entity-D7B8ulFX.mjs} +3 -2
  248. package/fesm2022/acorex-modules-organization-management-team.entity-D7B8ulFX.mjs.map +1 -0
  249. package/fesm2022/acorex-modules-organization-management.mjs +1 -1
  250. package/fesm2022/acorex-modules-person-core-gender.entity-DQVC2nR1.mjs +121 -0
  251. package/fesm2022/acorex-modules-person-core-gender.entity-DQVC2nR1.mjs.map +1 -0
  252. package/fesm2022/acorex-modules-person-core-marital-status.entity-Bcrni-xU.mjs +121 -0
  253. package/fesm2022/acorex-modules-person-core-marital-status.entity-Bcrni-xU.mjs.map +1 -0
  254. package/fesm2022/acorex-modules-person-core-person-title.entity-h53llLF9.mjs +121 -0
  255. package/fesm2022/acorex-modules-person-core-person-title.entity-h53llLF9.mjs.map +1 -0
  256. package/fesm2022/acorex-modules-person-core.mjs +151 -295
  257. package/fesm2022/acorex-modules-person-core.mjs.map +1 -1
  258. package/fesm2022/{acorex-modules-platform-dev-tools-settings.provider-CGyf-4eq.mjs → acorex-modules-platform-dev-tools-settings.provider-DKmgBUYt.mjs} +2 -2
  259. package/fesm2022/acorex-modules-platform-dev-tools-settings.provider-DKmgBUYt.mjs.map +1 -0
  260. package/fesm2022/acorex-modules-platform-dev-tools.mjs +2 -2
  261. package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-CZMqG3Eq.mjs → acorex-modules-platform-management-acorex-modules-platform-management-DkOzj2Oy.mjs} +12 -4
  262. package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-DkOzj2Oy.mjs.map +1 -0
  263. package/fesm2022/acorex-modules-platform-management-entity-master-actions-for-ai.util-OCk5eqQz.mjs +56 -0
  264. package/fesm2022/acorex-modules-platform-management-entity-master-actions-for-ai.util-OCk5eqQz.mjs.map +1 -0
  265. package/fesm2022/acorex-modules-platform-management-list-platform-navigation-for-ai.query-C3-eBMwF.mjs +198 -0
  266. package/fesm2022/acorex-modules-platform-management-list-platform-navigation-for-ai.query-C3-eBMwF.mjs.map +1 -0
  267. package/fesm2022/{acorex-modules-platform-management-list-registered-entities.query-B6-zV_Ml.mjs → acorex-modules-platform-management-list-registered-entities.query-BZVD9YPU.mjs} +26 -4
  268. package/fesm2022/acorex-modules-platform-management-list-registered-entities.query-BZVD9YPU.mjs.map +1 -0
  269. package/fesm2022/{acorex-modules-platform-management-menu-list.component-BRA7Q50z.mjs → acorex-modules-platform-management-menu-list.component-agWZWchQ.mjs} +3 -3
  270. package/fesm2022/{acorex-modules-platform-management-menu-list.component-BRA7Q50z.mjs.map → acorex-modules-platform-management-menu-list.component-agWZWchQ.mjs.map} +1 -1
  271. package/fesm2022/acorex-modules-platform-management.mjs +1 -1
  272. package/fesm2022/{acorex-modules-report-management-report-runner-root-page.component-BjKrHoBg.mjs → acorex-modules-report-management-report-runner-root-page.component-B-NoGoOJ.mjs} +2 -2
  273. package/fesm2022/{acorex-modules-report-management-report-runner-root-page.component-BjKrHoBg.mjs.map → acorex-modules-report-management-report-runner-root-page.component-B-NoGoOJ.mjs.map} +1 -1
  274. package/fesm2022/acorex-modules-report-management.mjs +7 -7
  275. package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
  276. package/fesm2022/acorex-modules-security-management.mjs +1 -1
  277. package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
  278. package/fesm2022/{acorex-modules-settings-management-acorex-modules-settings-management-BaDnebTm.mjs → acorex-modules-settings-management-acorex-modules-settings-management-oArHHeSx.mjs} +88 -13
  279. package/fesm2022/acorex-modules-settings-management-acorex-modules-settings-management-oArHHeSx.mjs.map +1 -0
  280. package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-cuuhKUJ1.mjs → acorex-modules-settings-management-permission-definition.provider-BsFyZ-gS.mjs} +2 -2
  281. package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-cuuhKUJ1.mjs.map → acorex-modules-settings-management-permission-definition.provider-BsFyZ-gS.mjs.map} +1 -1
  282. package/fesm2022/{acorex-modules-settings-management-setting-page.component-CWIs93_1.mjs → acorex-modules-settings-management-setting-page.component-BftWms4f.mjs} +5 -4
  283. package/fesm2022/acorex-modules-settings-management-setting-page.component-BftWms4f.mjs.map +1 -0
  284. package/fesm2022/{acorex-modules-settings-management-setting-view.component-BTexlmU1.mjs → acorex-modules-settings-management-setting-view.component-paKdiSEr.mjs} +2 -2
  285. package/fesm2022/{acorex-modules-settings-management-setting-view.component-BTexlmU1.mjs.map → acorex-modules-settings-management-setting-view.component-paKdiSEr.mjs.map} +1 -1
  286. package/fesm2022/acorex-modules-settings-management.mjs +1 -1
  287. package/fesm2022/{acorex-modules-task-management-acorex-modules-task-management-it-Lf0L_.mjs → acorex-modules-task-management-acorex-modules-task-management-CWlgXg_u.mjs} +26 -29
  288. package/fesm2022/acorex-modules-task-management-acorex-modules-task-management-CWlgXg_u.mjs.map +1 -0
  289. package/fesm2022/{acorex-modules-task-management-task-board.page-DF4XWz_0.mjs → acorex-modules-task-management-task-board.page-Bxpga0DN.mjs} +3 -3
  290. package/fesm2022/{acorex-modules-task-management-task-board.page-DF4XWz_0.mjs.map → acorex-modules-task-management-task-board.page-Bxpga0DN.mjs.map} +1 -1
  291. package/fesm2022/acorex-modules-task-management.mjs +1 -1
  292. package/fesm2022/acorex-modules-tenant-management.mjs +3 -7
  293. package/fesm2022/acorex-modules-tenant-management.mjs.map +1 -1
  294. package/fesm2022/acorex-modules-workflow-management.mjs +0 -7
  295. package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
  296. package/organization-management/README.md +1 -1
  297. package/package.json +2 -2
  298. package/platform-management/README.md +4 -0
  299. package/types/acorex-modules-ai-management.d.ts +150 -527
  300. package/types/acorex-modules-application-management.d.ts +5 -2
  301. package/types/acorex-modules-asset-management.d.ts +19 -87
  302. package/types/acorex-modules-common.d.ts +3 -6
  303. package/types/acorex-modules-content-management.d.ts +22 -5
  304. package/types/acorex-modules-conversation.d.ts +60 -4
  305. package/types/acorex-modules-document-management.d.ts +53 -22
  306. package/types/acorex-modules-human-capital-management.d.ts +15 -10
  307. package/types/acorex-modules-location-management.d.ts +9 -1
  308. package/types/acorex-modules-maintenance-management.d.ts +0 -2
  309. package/types/acorex-modules-notification-management.d.ts +68 -6
  310. package/types/acorex-modules-organization-management.d.ts +46 -4
  311. package/types/acorex-modules-person-core.d.ts +61 -4
  312. package/types/acorex-modules-settings-management.d.ts +3 -0
  313. package/types/acorex-modules-task-management.d.ts +0 -1
  314. package/types/acorex-modules-tenant-management.d.ts +0 -1
  315. package/fesm2022/acorex-modules-ai-management-acorex-modules-ai-management-D7_4LOGV.mjs +0 -8666
  316. package/fesm2022/acorex-modules-ai-management-acorex-modules-ai-management-D7_4LOGV.mjs.map +0 -1
  317. package/fesm2022/acorex-modules-ai-management-agent-registry-tool-configurator-widget-edit.component-C7TQMwX4.mjs.map +0 -1
  318. package/fesm2022/acorex-modules-ai-management-agent.entity-DwPIKib2.mjs.map +0 -1
  319. package/fesm2022/acorex-modules-ai-management-ai-delegated-agent-transcript-popup.component-D2GJ5qD1.mjs +0 -1254
  320. package/fesm2022/acorex-modules-ai-management-ai-delegated-agent-transcript-popup.component-D2GJ5qD1.mjs.map +0 -1
  321. package/fesm2022/acorex-modules-ai-management-assist-delegated-agent-configurator-widget-edit.component-BozVAuLO.mjs.map +0 -1
  322. package/fesm2022/acorex-modules-ai-management-index-DaGJVOFw.mjs +0 -2
  323. package/fesm2022/acorex-modules-ai-management-index-DaGJVOFw.mjs.map +0 -1
  324. package/fesm2022/acorex-modules-asset-management-acorex-modules-asset-management-DrIhRaZ6.mjs.map +0 -1
  325. package/fesm2022/acorex-modules-asset-management-asset-rental-history.entity-95NBXoex.mjs +0 -302
  326. package/fesm2022/acorex-modules-asset-management-asset-rental-history.entity-95NBXoex.mjs.map +0 -1
  327. package/fesm2022/acorex-modules-asset-management-asset-state-history.entity-C-z103la.mjs +0 -258
  328. package/fesm2022/acorex-modules-asset-management-asset-state-history.entity-C-z103la.mjs.map +0 -1
  329. package/fesm2022/acorex-modules-asset-management-asset-status.rules-B7KwWQEe.mjs +0 -98
  330. package/fesm2022/acorex-modules-asset-management-asset-status.rules-B7KwWQEe.mjs.map +0 -1
  331. package/fesm2022/acorex-modules-asset-management-asset-type-section-component.entity-n-bxBcGz.mjs.map +0 -1
  332. package/fesm2022/acorex-modules-asset-management-asset-type.entity-Dt61Rs4F.mjs.map +0 -1
  333. package/fesm2022/acorex-modules-asset-management-asset.entity-BzlsaEwC.mjs.map +0 -1
  334. package/fesm2022/acorex-modules-asset-management-assetLifecycle-state.provider-DZ5r2zx7.mjs +0 -192
  335. package/fesm2022/acorex-modules-asset-management-assetLifecycle-state.provider-DZ5r2zx7.mjs.map +0 -1
  336. package/fesm2022/acorex-modules-asset-management-status.provider-C41t4e2U.mjs +0 -363
  337. package/fesm2022/acorex-modules-asset-management-status.provider-C41t4e2U.mjs.map +0 -1
  338. package/fesm2022/acorex-modules-auth-settings.provider-DkhbuDBO.mjs.map +0 -1
  339. package/fesm2022/acorex-modules-content-management-acorex-modules-content-management-of3UnjxP.mjs.map +0 -1
  340. package/fesm2022/acorex-modules-content-management-template-content-editor-widget-edit.component-BKHvQiql.mjs.map +0 -1
  341. package/fesm2022/acorex-modules-content-management-template-content-editor-widget-view.component-q1Se62Hd.mjs.map +0 -1
  342. package/fesm2022/acorex-modules-dashboard-management-acorex-modules-dashboard-management-DLndkp6w.mjs.map +0 -1
  343. package/fesm2022/acorex-modules-document-management-large-tiles-view.component-CSHUgcLx.mjs +0 -24
  344. package/fesm2022/acorex-modules-document-management-large-tiles-view.component-CSHUgcLx.mjs.map +0 -1
  345. package/fesm2022/acorex-modules-document-management-small-tiles-view.component-BQSgUw6o.mjs +0 -24
  346. package/fesm2022/acorex-modules-document-management-small-tiles-view.component-BQSgUw6o.mjs.map +0 -1
  347. package/fesm2022/acorex-modules-human-capital-management-acorex-modules-human-capital-management-Bgsi3FHG.mjs.map +0 -1
  348. package/fesm2022/acorex-modules-human-capital-management-employee.entity-4k7F7_ON.mjs.map +0 -1
  349. package/fesm2022/acorex-modules-human-capital-management-revoke-position-assignment.command-CYzqQXja.mjs.map +0 -1
  350. package/fesm2022/acorex-modules-maintenance-management-acorex-modules-maintenance-management-B5wf4zMI.mjs.map +0 -1
  351. package/fesm2022/acorex-modules-order-management-settings.provider-BzNJIZCu.mjs.map +0 -1
  352. package/fesm2022/acorex-modules-organization-management-acorex-modules-organization-management-Bu8fRj_5.mjs.map +0 -1
  353. package/fesm2022/acorex-modules-organization-management-add-position-to-business-unit.command-Qej_boIY.mjs.map +0 -1
  354. package/fesm2022/acorex-modules-organization-management-business-unit.entity-BfQ_7JAq.mjs.map +0 -1
  355. package/fesm2022/acorex-modules-organization-management-org-chart.page-fudrNddI.mjs.map +0 -1
  356. package/fesm2022/acorex-modules-organization-management-position.entity-T1DY1fZn.mjs.map +0 -1
  357. package/fesm2022/acorex-modules-organization-management-settings.provider-wwGKyBrV.mjs.map +0 -1
  358. package/fesm2022/acorex-modules-organization-management-team.entity-urjULfNp.mjs.map +0 -1
  359. package/fesm2022/acorex-modules-platform-dev-tools-settings.provider-CGyf-4eq.mjs.map +0 -1
  360. package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-CZMqG3Eq.mjs.map +0 -1
  361. package/fesm2022/acorex-modules-platform-management-list-registered-entities.query-B6-zV_Ml.mjs.map +0 -1
  362. package/fesm2022/acorex-modules-settings-management-acorex-modules-settings-management-BaDnebTm.mjs.map +0 -1
  363. package/fesm2022/acorex-modules-settings-management-setting-page.component-CWIs93_1.mjs.map +0 -1
  364. package/fesm2022/acorex-modules-task-management-acorex-modules-task-management-it-Lf0L_.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"acorex-modules-dashboard-management-acorex-modules-dashboard-management-DLndkp6w.mjs","sources":["../../../../libs/modules/dashboard-management/src/lib/const.ts","../../../../libs/modules/dashboard-management/src/lib/entity.provider.ts","../../../../libs/modules/dashboard-management/src/lib/manifest.ts","../../../../libs/modules/dashboard-management/src/lib/menu.keys.ts","../../../../libs/modules/dashboard-management/src/lib/permission.keys.ts","../../../../libs/modules/dashboard-management/src/lib/menu.provider.ts","../../../../libs/modules/dashboard-management/src/lib/permission-definition.provider.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/dashboard-widget-base.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/chart/bar-chart/bar-chart-widget.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/chart/bar-chart/bar-chart-widget.component.html","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/widget-categories.type.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/widget-subcategories.type.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/chart/bar-chart/bar-chart-widget.config.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/chart/donut-chart/donut-chart-widget.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/chart/donut-chart/donut-chart-widget.component.html","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/chart/donut-chart/donut-chart-widget.config.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/chart/funnel-chart/funnel-chart-widget.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/chart/funnel-chart/funnel-chart-widget.component.html","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/chart/funnel-chart/funnel-chart-widget.config.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/chart/gauge-chart/gauge-chart-widget.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/chart/gauge-chart/gauge-chart-widget.component.html","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/chart/gauge-chart/gauge-chart-widget.config.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/chart/heatmap-chart/heatmap-chart-widget.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/chart/heatmap-chart/heatmap-chart-widget.component.html","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/chart/heatmap-chart/heatmap-chart-widget.config.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/chart/line-chart/line-chart-widget.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/chart/line-chart/line-chart-widget.component.html","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/chart/line-chart/line-chart-widget.config.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/kpi/kpi-progress/kpi-progress-widget.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/kpi/kpi-progress/kpi-progress-widget.component.html","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/kpi/kpi-progress/kpi-progress-widget.config.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/kpi/kpi-segmented/kpi-segmented-widget.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/kpi/kpi-segmented/kpi-segmented-widget.component.html","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/kpi/kpi-segmented/kpi-segmented-widget.config.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/kpi/kpi-details/kpi-details-widget.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/kpi/kpi-details/kpi-details-widget.component.html","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/kpi/kpi-details/kpi-details-widget.config.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/kpi/kpi-stat-card/kpi-stat-card-widget.config.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/kpi/kpi-stat-card/kpi-stat-card-widget.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/kpi/kpi-stat-card/kpi-stat-card-widget.component.html","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/utility/weather/weather-services/weather-api.abstract.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/utility/weather/weather-services/weather-api.mock.service.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/utility/weather/weather-services/weather-api.key.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/utility/weather/weather-services/weather-api.service.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/utility/weather/advanced-weather/advanced-weather.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/utility/weather/advanced-weather/advanced-weather.config.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/utility/weather/minimal-weather/minimal-weather.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/utility/weather/minimal-weather/minimal-weather.component.html","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/utility/weather/minimal-weather/minimal-weather.config.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/utility/weather/weather-widget.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/utility/weather/weather-widget.component.html","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/utility/weather/weather-widget.config.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/utility/analog-clock/analog-clock.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/utility/analog-clock/analog-clock.component.html","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/utility/analog-clock/analog-clock-widget-view.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/utility/analog-clock/analog-clock-widget-view.component.html","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/utility/analog-clock/analog-clock-widget.config.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/utility/clock-calendar/clock-calendar-widget.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/utility/clock-calendar/clock-calendar-widget.component.html","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/utility/clock-calendar/clock-calendar.types.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/utility/clock-calendar/clock-calendar-widget.config.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/utility/shortcut/shortcut-widget-view.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/utility/shortcut/shortcut-widget-view.component.html","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/utility/shortcut/shortcut-widget.config.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/utility/sticky-note/sticky-note-widget.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/utility/sticky-note/sticky-note-widget.component.html","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/utility/sticky-note/sticky-note-widget.config.ts","../../../../libs/modules/dashboard-management/src/lib/widget-definition.provider.ts","../../../../libs/modules/dashboard-management/src/lib/features/dashboard-layout-page/DASHBOARD_LAYOUT_PAGE_COMPONENT_KEY.ts","../../../../libs/modules/dashboard-management/src/lib/entities/dashboard/dashboard.entity.ts","../../../../libs/modules/dashboard-management/src/lib/entities/dashboard/dashboard.types.ts","../../../../libs/modules/dashboard-management/src/lib/entities/dashboard/dashboard-default-scope.middleware.ts","../../../../libs/modules/dashboard-management/src/lib/entities/dashboard/dashboard.module.ts","../../../../libs/modules/dashboard-management/src/lib/entities/index.ts","../../../../libs/modules/dashboard-management/src/lib/dashboard-management.module.ts","../../../../libs/modules/dashboard-management/src/lib/settings.keys.ts","../../../../libs/modules/dashboard-management/src/lib/features/dashboard-layout-page/dashboard-layout-entity-mode.token.ts","../../../../libs/modules/dashboard-management/src/lib/features/home-dashboard/dashboard-popups/configuration-popup.ts","../../../../libs/modules/dashboard-management/src/lib/features/home-dashboard/dashboard-popups/dashboard-popup.service.ts","../../../../libs/modules/dashboard-management/src/lib/features/dashboard-services/home-dashboard.store.ts","../../../../libs/modules/dashboard-management/src/lib/features/dashboard-services/home-dashboard.type.ts","../../../../libs/modules/dashboard-management/src/lib/features/home-dashboard/widget-wrapper/dashboard-widget-wrapper.ts","../../../../libs/modules/dashboard-management/src/lib/features/home-dashboard/widget-wrapper/dashboard-widget-wrapper.html","../../../../libs/modules/dashboard-management/src/lib/features/shared/dashboard-grid-layout-section/dashboard-grid-layout-section.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/dashboard-grid-layout-section/dashboard-grid-layout-section.component.html","../../../../libs/modules/dashboard-management/src/lib/features/home-dashboard/dashboard-home/home-dashboard.ts","../../../../libs/modules/dashboard-management/src/lib/features/home-dashboard/dashboard-home/home-dashboard.html","../../../../libs/modules/dashboard-management/src/lib/features/home-dashboard/dashboard-popups/add-dashboard-popup.ts","../../../../libs/modules/dashboard-management/src/lib/features/home-dashboard/setrting.keys.ts","../../../../libs/modules/dashboard-management/src/acorex-modules-dashboard-management.ts"],"sourcesContent":["const config = {\n i18n: 'dashboard-management',\n module: 'DashboardManagement',\n} as const;\n\n/** Builds shared dashboard widget type ids: `{module}:Widget:Dashboard:{Segment}`. */\nconst dashboardWidgetId = (segment: string): string =>\n `${config.module}:Widget:Dashboard:${segment}`;\n\nexport const RootConfig = {\n config,\n module: {\n module: config.module,\n name: config.module,\n title: `@${config.i18n}:module.title`,\n icon: 'fa-regular fa-tachometer-alt',\n },\n entities: {\n dashboard: {\n name: 'Dashboard',\n title: '@dashboard-management:dashboards.terms.dashboard',\n titlePlural: '@dashboard-management:dashboards.terms.dashboards',\n icon: 'fa-regular fa-tachometer-alt',\n },\n },\n /** Dashboard widget type ids owned by dashboard-management. */\n widgets: {\n barChart: dashboardWidgetId('BarChart'),\n donutChart: dashboardWidgetId('DonutChart'),\n lineChart: dashboardWidgetId('LineChart'),\n gaugeChart: dashboardWidgetId('GaugeChart'),\n funnelChart: dashboardWidgetId('FunnelChart'),\n heatmapChart: dashboardWidgetId('HeatmapChart'),\n stickyNote: dashboardWidgetId('StickyNote'),\n clockCalendar: dashboardWidgetId('ClockCalendar'),\n analogClock: dashboardWidgetId('AnalogClock'),\n weather: dashboardWidgetId('Weather'),\n minimalWeather: dashboardWidgetId('MinimalWeather'),\n advancedWeather: dashboardWidgetId('AdvancedWeather'),\n shortcut: dashboardWidgetId('Shortcut'),\n kpiProgress: dashboardWidgetId('KpiProgress'),\n kpiSegmented: dashboardWidgetId('KpiSegmented'),\n kpiDetails: dashboardWidgetId('KpiDetails'),\n kpiStatCard: dashboardWidgetId('KpiStatCard'),\n },\n};\n","import { AXPEntity } from '@acorex/platform/common';\nimport {\n AXPEntityDefinitionLoader,\n AXPEntityDefinitionPreloader,\n AXPEntityPreloadEntity,\n} from '@acorex/platform/layout/entity';\nimport { Injectable, Injector, inject } from '@angular/core';\nimport { RootConfig } from './const';\n\n@Injectable()\nexport class AXMEntityProvider implements AXPEntityDefinitionLoader, AXPEntityDefinitionPreloader {\n private injector = inject(Injector);\n\n public preload(): AXPEntityPreloadEntity[] {\n const module = RootConfig.module.name;\n return [{ module, entity: RootConfig.entities.dashboard.name }];\n }\n\n async get(moduleName: string, entityName: string): Promise<AXPEntity | null> {\n if (moduleName == RootConfig.module.name) {\n switch (entityName) {\n case RootConfig.entities.dashboard.name:\n return (await import('./entities/dashboard/dashboard.entity')).dashboardFactory(this.injector);\n }\n }\n return null;\n }\n\n async list(): Promise<{ name: string; module: string }[]> {\n const m = RootConfig.module.name;\n return Promise.resolve([{ name: RootConfig.entities.dashboard.name, module: m }]);\n }\n}\n","//#region ---- Imports ----\n\nimport { AXPModuleManifest } from '@acorex/platform/core';\nimport { RootConfig } from './const';\n\n//#endregion\n\n//#region ---- Manifest Definition ----\n\n/**\n * Dashboard Management Module Manifest.\n * Defines module metadata, features, and provider references.\n */\nexport const DashboardManagementManifest: AXPModuleManifest = {\n name: RootConfig.module.name,\n version: '1.0.0',\n title: RootConfig.module.title,\n icon: RootConfig.module.icon,\n i18n: RootConfig.config.i18n,\n required: true,\n\n // Module dependencies (optional)\n};\n\n//#endregion\n\n","export const AXPDashboardManagementMenuKeys = {\n Root: 'DashboardManagement:Menu',\n Dashboards: 'DashboardManagement:Menu:Dashboards',\n} as const;\n\n","//#region ---- Imports ----\n\nimport { AXPSystemActionType } from '@acorex/platform/core';\nimport { RootConfig } from './const';\n\n//#endregion\n\n//#region ---- Permission Keys ----\n\nconst moduleKey = RootConfig.module.name;\n\nexport const AXMPermissionsKeys = {\n DashboardManagement: {\n Management: `${moduleKey}:${AXPSystemActionType.Manage}`,\n Dashboard: {\n Management: `${moduleKey}:Dashboard:${AXPSystemActionType.Manage}`,\n View: `${moduleKey}:Dashboard:${AXPSystemActionType.View}`,\n Edit: `${moduleKey}:Dashboard:${AXPSystemActionType.Update}`,\n Delete: `${moduleKey}:Dashboard:${AXPSystemActionType.Delete}`,\n Create: `${moduleKey}:Dashboard:${AXPSystemActionType.Create}`,\n },\n },\n} as const;\n\n//#endregion\n\n\n","import { AXPCommonMenuKeys } from '@acorex/modules/common';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPMenuProvider, AXPMenuProviderContext } from '@acorex/platform/common';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { inject } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\nimport { RootConfig } from './const';\nimport { AXPDashboardManagementMenuKeys } from './menu.keys';\nimport { AXMPermissionsKeys } from './permission.keys';\n\nexport class AXMMenuProvider implements AXPMenuProvider {\n private sessionService = inject(AXPSessionService);\n private entityService = inject(AXPEntityService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const isAuthorized = await firstValueFrom(this.sessionService.isAuthorized$);\n if (!isAuthorized) {\n return;\n }\n\n const scope = RootConfig.config.i18n;\n const module = RootConfig.module;\n const appName = this.sessionService.application?.name;\n\n const contentMenu = context.find(AXPCommonMenuKeys.Content);\n if (!contentMenu.exists) {\n context.find(AXPCommonMenuKeys.Administration).addItems([\n {\n name: AXPCommonMenuKeys.Content,\n priority: 10,\n text: '@general:menus.content.title',\n icon: 'fa-light fa-paint-brush',\n type: 'menu',\n children: [],\n },\n ]);\n }\n\n context.find(AXPCommonMenuKeys.Content).addItems([\n {\n name: AXPDashboardManagementMenuKeys.Dashboards,\n text: '@dashboard-management:dashboards.menus.dashboards.title',\n path: this.entityService.withEntity(module.name, RootConfig.entities.dashboard.name).createPath(),\n icon: RootConfig.entities.dashboard.icon,\n priority: 2,\n policy: {\n features: [RootConfig.module.name],\n permissions: [AXMPermissionsKeys.DashboardManagement.Management],\n },\n },\n ]);\n }\n}\n","import { AXTranslationService } from '@acorex/core/translation';\nimport { AXPPermissionDefinitionProvider, AXPPermissionDefinitionProviderContext } from '@acorex/platform/auth';\nimport { Injectable, Injector } from '@angular/core';\nimport { AXMPermissionsKeys } from './permission.keys';\nimport { RootConfig } from './const';\n\n@Injectable()\nexport class AXMPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {\n private readonly translateService: AXTranslationService;\n\n constructor(private injector: Injector) {\n this.translateService = this.injector.get(AXTranslationService);\n }\n\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\n const trans = async (key: string) => await this.translateService.translateAsync(`@dashboard-management:dashboards.permissions.${key}`);\n\n const keys = AXMPermissionsKeys.DashboardManagement;\n\n context.addGroup(RootConfig.module.name, await trans('manage.title'), await trans('manage.description'))\n //\n .addPermission(keys.Dashboard.Management, await trans('dashboards.actions.manage.title'), await trans('dashboards.actions.manage.description'))\n .addChild(keys.Dashboard.View, await trans('dashboards.actions.view.title'), await trans('dashboards.actions.view.description'))\n .addChild(keys.Dashboard.Create, await trans('dashboards.actions.create.title'), await trans('dashboards.actions.create.description'))\n .addChild(keys.Dashboard.Edit, await trans('dashboards.actions.edit.title'), await trans('dashboards.actions.edit.description'))\n .addChild(keys.Dashboard.Delete, await trans('dashboards.actions.delete.title'), await trans('dashboards.actions.delete.description'))\n .endPermission()\n //\n .endGroup();\n }\n}\n\n","//#region ---- Imports ----\n\nimport { AXPOptionsData } from '@acorex/platform/core';\nimport { AXPBaseWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { afterNextRender, DestroyRef, Injectable, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Observable, Subject } from 'rxjs';\nimport { throttleTime } from 'rxjs/operators';\n\n//#endregion\n\n//#region ---- Constants ----\n\n/** Minimum interval between container resize emissions to subscribers and {@link AXPDashboardWidgetComponent.onContainerSizeChanged}. */\nconst AXPDASHBOARD_WIDGET_CONTAINER_RESIZE_THROTTLE_MS = 100;\n\n//#endregion\n\n//#region ---- Types ----\n\n/** Content-box size of the widget host element (from ResizeObserver). */\nexport interface AXPDashboardWidgetContainerSize {\n width: number;\n height: number;\n}\n\n//#endregion\n\n//#region ---- Dashboard widget base ----\n\n/**\n * Base class for dashboard widgets ({@link AXPBaseWidgetComponent}).\n * Extend this to add shared dashboard logic and helpers.\n */\n@Injectable()\nexport abstract class AXPDashboardWidgetComponent<\n TOptions extends Record<string, unknown> = AXPOptionsData,\n> extends AXPBaseWidgetComponent<TOptions> {\n //#region ---- Container resize ----\n\n private readonly containerResizeRawSubject = new Subject<AXPDashboardWidgetContainerSize>();\n\n private readonly containerSizeSubject = new Subject<AXPDashboardWidgetContainerSize>();\n\n /**\n * Emits the widget host content-box size whenever it changes.\n * Notifications are throttled; see `AXPDASHBOARD_WIDGET_CONTAINER_RESIZE_THROTTLE_MS`.\n */\n protected readonly containerSize$: Observable<AXPDashboardWidgetContainerSize> =\n this.containerSizeSubject.asObservable();\n\n constructor() {\n super();\n const destroyRef = inject(DestroyRef);\n if (typeof ResizeObserver === 'undefined') {\n return;\n }\n\n this.containerResizeRawSubject\n .pipe(\n throttleTime(AXPDASHBOARD_WIDGET_CONTAINER_RESIZE_THROTTLE_MS, undefined, {\n leading: true,\n trailing: true,\n }),\n takeUntilDestroyed(destroyRef),\n )\n .subscribe((size) => {\n this.containerSizeSubject.next(size);\n this.onContainerSizeChanged(size);\n });\n\n const resizeObserver = new ResizeObserver((entries) => {\n const entry = entries[0];\n if (!entry) {\n return;\n }\n const size: AXPDashboardWidgetContainerSize = {\n width: entry.contentRect.width,\n height: entry.contentRect.height,\n };\n this.containerResizeRawSubject.next(size);\n });\n\n const bindResizeObservation = (): void => {\n if (!this.host.isConnected) {\n return;\n }\n resizeObserver.disconnect();\n resizeObserver.observe(this.host);\n };\n\n afterNextRender(() => {\n bindResizeObservation();\n });\n\n destroyRef.onDestroy(() => {\n resizeObserver.disconnect();\n this.containerResizeRawSubject.complete();\n this.containerSizeSubject.complete();\n });\n }\n\n /**\n * Called when the widget host content box is resized.\n * Override for imperative updates; use {@link containerSize$} for reactive pipelines.\n */\n protected onContainerSizeChanged(_size: AXPDashboardWidgetContainerSize): void { }\n\n //#endregion\n}\n\n//#endregion\n","import { AXBarChartComponent, AXBarChartData, AXBarChartOption } from '@acorex/charts/bar-chart';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPDataSourceDefinitionProviderService, AXPMultiLanguageString } from '@acorex/platform/core';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal } from '@angular/core';\nimport { AXPDashboardWidgetComponent } from '../../dashboard-widget-base';\n\n/**\n * Bar Chart Widget Component\n * Renders data as vertical bars with interactive hover effects and animations\n */\n@Component({\n templateUrl: './bar-chart-widget.component.html',\n styleUrls: ['./bar-chart-widget.component.scss'],\n imports: [AXBarChartComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPBarChartWidgetViewComponent extends AXPDashboardWidgetComponent {\n //#region ---- Services & Dependencies ----\n\n private readonly dataService = inject(AXPDataSourceDefinitionProviderService);\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Chart state ----\n\n protected data = signal<AXBarChartData[]>([]);\n\n /** Options for the chart with localized title and axis labels. */\n protected barChartOptions = signal<AXBarChartOption & { title: string }>({} as AXBarChartOption & { title: string });\n\n private labelResolveGeneration = 0;\n\n //#endregion\n\n private async resolveChartOptionLabel(value: unknown): Promise<string> {\n if (value != null && typeof value === 'object' && !Array.isArray(value)) {\n return this.translationService.resolve(value as AXPMultiLanguageString);\n }\n const s = String(value ?? '');\n if (s.startsWith('@')) {\n return this.translationService.translateAsync(s);\n }\n return s;\n }\n\n /**\n * Resolves bar category labels from plain text, @i18n keys, or multi-language maps.\n */\n private async resolveLocalizedChartText(value: unknown): Promise<string> {\n if (value == null) {\n return '';\n }\n if (typeof value === 'string') {\n if (value.startsWith('@')) {\n return this.translationService.translateAsync(value);\n }\n return value;\n }\n if (\n typeof value === 'object' &&\n !Array.isArray(value) &&\n this.translationService.isValidMultiLanguageObject(value)\n ) {\n return this.translationService.resolve(value as AXPMultiLanguageString);\n }\n return String(value);\n }\n\n private readonly resolveChartLabelKeysEffect = effect(() => {\n const raw = this.options() as Record<string, unknown>;\n const generation = ++this.labelResolveGeneration;\n void Promise.all([\n this.resolveChartOptionLabel(raw['title']),\n this.resolveChartOptionLabel(raw['xAxisLabel']),\n this.resolveChartOptionLabel(raw['yAxisLabel']),\n ]).then(([title, xAxisLabel, yAxisLabel]) => {\n if (generation !== this.labelResolveGeneration) {\n return;\n }\n const base = raw as unknown as AXBarChartOption & { title: string };\n this.barChartOptions.set({\n ...base,\n title,\n xAxisLabel,\n yAxisLabel,\n });\n });\n });\n\n dataSource = computed(() => this.options()['dataSource'] as string | AXBarChartData[]);\n\n eff = effect(async () => {\n const ds = this.dataSource();\n if (typeof ds === 'string') {\n const result = await this.dataService.get(ds);\n if (result) {\n const source = await (result.source() as any).config.load();\n const items = (source.items ?? []) as Record<string, unknown>[];\n const resolved = await Promise.all(\n items.map(async (item) => ({\n ...item,\n label: await this.resolveLocalizedChartText(item['label']),\n })),\n );\n this.data.set(resolved as AXBarChartData[]);\n }\n } else if (ds && Array.isArray(ds)) {\n const resolved = await Promise.all(\n (ds as unknown as Record<string, unknown>[]).map(async (item) => ({\n ...item,\n label: await this.resolveLocalizedChartText(item['label']),\n })),\n );\n this.data.set(resolved as unknown as AXBarChartData[]);\n } else {\n this.data.set([]);\n }\n });\n\n constructor() {\n super();\n this.setOptions({\n ...this.options(),\n showXAxis: true,\n showYAxis: true,\n barWidth: 80,\n cornerRadius: 4,\n showGrid: true,\n showDataLabels: false,\n showTooltip: true,\n animationEasing: 'cubic-out',\n animationDuration: 800,\n });\n this.barChartOptions.set(this.options() as AXBarChartOption & { title: string });\n }\n\n handleBarClick(event: any) {\n //console.log(event);\n }\n}\n","<ax-bar-chart [data]=\"data()\" [options]=\"barChartOptions()\" (barClick)=\"handleBarClick($event)\"></ax-bar-chart>\n","import type { AXPDefinitionCategory } from '@acorex/platform/core';\n\nconst CAT = '@dashboard-management:shared-widgets.widget-picker-category';\n\nexport const AXP_WIDGETS_CHART_CATEGORY: AXPDefinitionCategory = {\n name: 'chart',\n order: 6,\n title: `${CAT}.chart`,\n};\n\nexport const AXP_WIDGETS_UTILITY_CATEGORY: AXPDefinitionCategory = {\n name: 'utility',\n order: 7,\n title: `${CAT}.utility`,\n};\n","import { AXPDefinitionCategory } from \"@acorex/platform/core\";\n\nconst SUB = '@dashboard-management:shared-widgets.widget-picker-sub-categories';\n\n//#region ---- Chart tab sub-categories ----\n\nexport const AXP_DASHBOARD_SHARED_SUB_CHART_KPI: AXPDefinitionCategory = {\n name: 'dashboard-chart-kpi',\n order: 1,\n title: `${SUB}.chart-kpi`,\n};\n\nexport const AXP_DASHBOARD_SHARED_SUB_CHART_CARTESIAN: AXPDefinitionCategory = {\n name: 'dashboard-chart-cartesian',\n order: 2,\n title: `${SUB}.chart-cartesian`,\n};\n\nexport const AXP_DASHBOARD_SHARED_SUB_CHART_RADIAL: AXPDefinitionCategory = {\n name: 'dashboard-chart-radial',\n order: 3,\n title: `${SUB}.chart-radial`,\n};\n\nexport const AXP_DASHBOARD_SHARED_SUB_CHART_SPECIALIZED: AXPDefinitionCategory = {\n name: 'dashboard-chart-specialized',\n order: 4,\n title: `${SUB}.chart-specialized`,\n};\n\n//#endregion\n\n\n//#region ---- Utility tab sub-categories ----\n\nexport const AXP_DASHBOARD_SHARED_SUB_UTILITY_SHORTCUT: AXPDefinitionCategory = {\n name: 'dashboard-utility-shortcut',\n order: 1,\n title: `${SUB}.utility-shortcut`,\n};\n\nexport const AXP_DASHBOARD_SHARED_SUB_UTILITY_TIME: AXPDefinitionCategory = {\n name: 'dashboard-utility-time',\n order: 2,\n title: `${SUB}.utility-time`,\n};\n\nexport const AXP_DASHBOARD_SHARED_SUB_UTILITY_WEATHER: AXPDefinitionCategory = {\n name: 'dashboard-utility-weather',\n order: 3,\n title: `${SUB}.utility-weather`,\n};\n\nexport const AXP_DASHBOARD_SHARED_SUB_UTILITY_NOTES: AXPDefinitionCategory = {\n name: 'dashboard-utility-notes',\n order: 4,\n title: `${SUB}.utility-notes`,\n};\n\n//#endregion\n\n","import { RootConfig } from '../../../../../const';\nimport {\n AXPWidgetConfig,\n AXPWidgetGroupEnum,\n AXPWidgetsCatalog,\n cloneProperty,\n} from '@acorex/platform/layout/widget-core';\nimport {\n AXP_APPEARANCE_PROPERTY_GROUP,\n AXP_DATA_PATH_PROPERTY,\n AXP_DATA_SOURCE_OPTIONS_PROPERTY,\n AXP_NAME_PROPERTY,\n} from '@acorex/platform/layout/widgets';\nimport { AXP_WIDGETS_CHART_CATEGORY } from '../../widget-categories.type';\nimport { AXP_DASHBOARD_SHARED_SUB_CHART_CARTESIAN } from '../../widget-subcategories.type';\n\nexport const AXPBarChartWidget: AXPWidgetConfig = {\n name: RootConfig.widgets.barChart,\n title: '@dashboard:widgets.bar-chart.widget-title',\n description: '@dashboard:widgets.bar-chart.widget-description',\n categories: [AXP_WIDGETS_CHART_CATEGORY],\n subCategory: AXP_DASHBOARD_SHARED_SUB_CHART_CARTESIAN,\n groups: [AXPWidgetGroupEnum.BaseWidget],\n type: 'dashboard',\n icon: 'fa-light fa-chart-bar',\n properties: [\n AXP_DATA_SOURCE_OPTIONS_PROPERTY,\n cloneProperty(AXP_NAME_PROPERTY, { visible: false }),\n cloneProperty(AXP_DATA_PATH_PROPERTY, { visible: false }),\n // ====== Chart Title ======\n {\n name: 'title',\n title: '@dashboard:widgets.bar-chart.chart-title',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'title',\n path: 'options.title',\n type: AXPWidgetsCatalog.text,\n options: {\n placeholder: 'Enter chart title',\n },\n },\n },\n visible: true,\n },\n // ====== X Axis Settings ======\n {\n name: 'xAxisLabel',\n title: '@dashboard:widgets.bar-chart.x-axis-label',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'xAxisLabel',\n path: 'options.xAxisLabel',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n // ====== Y Axis Settings ======\n {\n name: 'yAxisLabel',\n title: '@dashboard:widgets.bar-chart.y-axis-label',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'yAxisLabel',\n path: 'options.yAxisLabel',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n /* Commented out properties\n // ====== Layout & Dimensions ======\n {\n name: 'width',\n title: '@dashboard:widgets.bar-chart.width',\n group: AXP_STYLING_PROPERTY_GROUP,\n schema: {\n defaultValue: null,\n dataType: 'number',\n interface: {\n name: 'width',\n path: 'options.width',\n type: AXPWidgetsCatalog.number,\n options: {\n minValue: 0,\n maxValue: 1200,\n },\n },\n },\n visible: true,\n },\n {\n name: 'height',\n title: '@dashboard:widgets.bar-chart.height',\n group: AXP_STYLING_PROPERTY_GROUP,\n schema: {\n defaultValue: 300,\n dataType: 'number',\n interface: {\n name: 'height',\n path: 'options.height',\n type: AXPWidgetsCatalog.number,\n options: {\n minValue: 0,\n maxValue: 800,\n },\n },\n },\n visible: true,\n },\n // ====== X Axis Settings ======\n {\n name: 'showXAxis',\n title: '@dashboard:widgets.bar-chart.show-x-axis',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showXAxis',\n path: 'options.showXAxis',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n // ====== Y Axis Settings ======\n {\n name: 'showYAxis',\n title: '@dashboard:widgets.bar-chart.show-y-axis',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showYAxis',\n path: 'options.showYAxis',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n // ====== Bar Appearance ======\n {\n name: 'barWidth',\n title: '@dashboard:widgets.bar-chart.bar-width',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 80,\n dataType: 'number',\n interface: {\n name: 'barWidth',\n path: 'options.barWidth',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '1-100',\n minValue: 1,\n maxValue: 100,\n },\n },\n },\n visible: true,\n },\n {\n name: 'cornerRadius',\n title: '@dashboard:widgets.bar-chart.corner-radius',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 4,\n dataType: 'number',\n interface: {\n name: 'cornerRadius',\n path: 'options.cornerRadius',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '0-20',\n minValue: 0,\n maxValue: 20,\n },\n },\n },\n visible: true,\n },\n // ====== Grid Settings ======\n {\n name: 'showGrid',\n title: '@dashboard:widgets.bar-chart.show-grid',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showGrid',\n path: 'options.showGrid',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'showDataLabels',\n title: '@dashboard:widgets.bar-chart.show-data-labels',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showDataLabels',\n path: 'options.showDataLabels',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n // ====== Tooltip Settings ======\n {\n name: 'showTooltip',\n title: '@dashboard:widgets.bar-chart.show-tooltip',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showTooltip',\n path: 'options.showTooltip',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n // ====== Animation Settings ======\n {\n name: 'animationEasing',\n title: '@dashboard:widgets.bar-chart.animation-easing',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 'cubic-out',\n dataType: 'string',\n interface: {\n name: 'animationEasing',\n path: 'options.animationEasing',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: [\n { value: 'linear', text: 'Linear' },\n { value: 'ease', text: 'Ease' },\n { value: 'ease-in', text: 'Ease In' },\n { value: 'ease-out', text: 'Ease Out' },\n { value: 'ease-in-out', text: 'Ease In Out' },\n { value: 'cubic', text: 'Cubic' },\n { value: 'cubic-in', text: 'Cubic In' },\n { value: 'cubic-out', text: 'Cubic Out' },\n { value: 'cubic-in-out', text: 'Cubic In Out' },\n ],\n textField: 'text',\n valueField: 'value',\n },\n },\n },\n visible: true,\n },\n {\n name: 'animationDuration',\n title: '@dashboard:widgets.bar-chart.animation-duration',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 800,\n dataType: 'number',\n interface: {\n name: 'animationDuration',\n path: 'options.animationDuration',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '0-2000',\n minValue: 0,\n maxValue: 2000,\n },\n },\n },\n visible: true,\n },\n */\n ],\n components: {\n view: {\n component: () => import('./bar-chart-widget.component').then((c) => c.AXPBarChartWidgetViewComponent),\n },\n },\n meta: {\n dimensions: {\n lg: {\n width: 5,\n height: 6,\n minWidth: 2,\n minHeight: 2,\n maxWidth: 6,\n maxHeight: 7,\n },\n md: {\n width: 5,\n height: 6,\n minWidth: 2,\n minHeight: 2,\n maxWidth: 6,\n maxHeight: 7,\n },\n sm: {\n height: 6,\n minHeight: 2,\n maxHeight: 7,\n },\n },\n },\n};\n","import { AXDataSource } from '@acorex/cdk/common';\nimport { AXDonutChartComponent, AXDonutChartData, AXDonutChartOption } from '@acorex/charts/donut-chart';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPDataSourceDefinitionProviderService, AXPMultiLanguageString } from '@acorex/platform/core';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal } from '@angular/core';\nimport { AXPDashboardWidgetComponent } from '../../dashboard-widget-base';\n\n/**\n * Donut Chart Widget Component\n * Displays data in a circular donut chart with interactive segments\n */\n@Component({\n templateUrl: './donut-chart-widget.component.html',\n styleUrls: ['./donut-chart-widget.component.scss'],\n imports: [AXDonutChartComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPDonutChartWidgetViewComponent extends AXPDashboardWidgetComponent {\n //#region ---- Services & Dependencies ----\n\n private readonly dataService = inject(AXPDataSourceDefinitionProviderService);\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Chart state ----\n\n protected data = signal<AXDonutChartData[]>([]);\n\n protected donutChartOptions = signal<AXDonutChartOption & { title: string }>(\n {} as AXDonutChartOption & { title: string },\n );\n\n private labelResolveGeneration = 0;\n\n //#endregion\n\n dataSource = computed(() => this.options()['dataSource'] as string | AXDonutChartData[] | undefined);\n\n private async resolveChartOptionLabel(value: unknown): Promise<string> {\n if (value != null && typeof value === 'object' && !Array.isArray(value)) {\n return this.translationService.resolve(value as AXPMultiLanguageString);\n }\n const s = String(value ?? '');\n if (s.startsWith('@')) {\n return this.translationService.translateAsync(s);\n }\n return s;\n }\n\n /**\n * Resolves segment names from plain text, @i18n keys, or multi-language maps.\n */\n private async resolveLocalizedChartText(value: unknown): Promise<string> {\n if (value == null) {\n return '';\n }\n if (typeof value === 'string') {\n if (value.startsWith('@')) {\n return this.translationService.translateAsync(value);\n }\n return value;\n }\n if (\n typeof value === 'object' &&\n !Array.isArray(value) &&\n this.translationService.isValidMultiLanguageObject(value)\n ) {\n return this.translationService.resolve(value as AXPMultiLanguageString);\n }\n return String(value);\n }\n\n private readonly resolveDonutOptionsEffect = effect(() => {\n const raw = this.options() as Record<string, unknown>;\n const generation = ++this.labelResolveGeneration;\n void (async () => {\n const title = await this.resolveChartOptionLabel(raw['title']);\n const totalLabel =\n raw['totalLabel'] !== undefined ? await this.resolveChartOptionLabel(raw['totalLabel']) : undefined;\n if (generation !== this.labelResolveGeneration) {\n return;\n }\n const base = raw as unknown as AXDonutChartOption & { title: string };\n this.donutChartOptions.set({\n ...base,\n title,\n ...(totalLabel !== undefined ? { totalLabel } : {}),\n });\n })();\n });\n\n private readonly dataLoadEffect = effect(async () => {\n const ds = this.dataSource();\n if (typeof ds === 'string') {\n const result = await this.dataService.get(ds);\n if (result) {\n const dataSource = result.source() as AXDataSource<unknown>;\n const page = await dataSource.config.load({\n take: dataSource.pageSize,\n skip: 0,\n sort: [],\n });\n const items = (page.items ?? []) as Record<string, unknown>[];\n const resolved = await Promise.all(\n items.map(async (item) => ({\n ...item,\n name: await this.resolveLocalizedChartText(item['name']),\n })),\n );\n this.data.set(resolved as unknown as AXDonutChartData[]);\n }\n } else if (ds && Array.isArray(ds)) {\n const resolved = await Promise.all(\n (ds as unknown as Record<string, unknown>[]).map(async (item) => ({\n ...item,\n name: await this.resolveLocalizedChartText(item['name']),\n })),\n );\n this.data.set(resolved as unknown as AXDonutChartData[]);\n } else {\n this.data.set([]);\n }\n });\n\n constructor() {\n super();\n this.setOptions({\n width: 300,\n height: 300,\n showDataLabels: false,\n donutWidth: 35,\n cornerRadius: 4,\n showTooltip: true,\n animationEasing: 'cubic-out',\n animationDuration: 800,\n ...this.options(),\n });\n this.donutChartOptions.set(this.options() as AXDonutChartOption & { title: string });\n }\n\n handleDonutChartSegmentClick(event: any) {\n //console.log(event);\n }\n}\n","<ax-donut-chart\n [data]=\"data()\"\n [options]=\"donutChartOptions()\"\n (segmentClick)=\"handleDonutChartSegmentClick($event)\"\n></ax-donut-chart>\n","import { RootConfig } from '../../../../../const';\nimport { AXPWidgetConfig, AXPWidgetGroupEnum, AXPWidgetsCatalog, cloneProperty } from '@acorex/platform/layout/widget-core';\nimport {\n AXP_APPEARANCE_PROPERTY_GROUP,\n AXP_DATA_PATH_PROPERTY,\n AXP_NAME_PROPERTY,\n AXP_STYLING_PROPERTY_GROUP,\n} from '@acorex/platform/layout/widgets';\nimport { AXP_WIDGETS_CHART_CATEGORY } from '../../widget-categories.type';\nimport { AXP_DASHBOARD_SHARED_SUB_CHART_RADIAL } from '../../widget-subcategories.type';\n\nexport const AXPDonutChartWidget: AXPWidgetConfig = {\n name: RootConfig.widgets.donutChart,\n title: '@dashboard:widgets.donut-chart.widget-title',\n description: '@dashboard:widgets.donut-chart.widget-description',\n categories: AXP_WIDGETS_CHART_CATEGORY,\n subCategory: AXP_DASHBOARD_SHARED_SUB_CHART_RADIAL,\n groups: [AXPWidgetGroupEnum.BaseWidget],\n type: 'dashboard',\n icon: 'fa-light fa-donut',\n properties: [\n cloneProperty(AXP_NAME_PROPERTY, { visible: false }),\n cloneProperty(AXP_DATA_PATH_PROPERTY, { visible: false }),\n // ====== Chart Title ======\n {\n name: 'title',\n title: '@dashboard:widgets.donut-chart.chart-title',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'title',\n path: 'options.title',\n type: AXPWidgetsCatalog.text,\n options: {\n placeholder: 'Enter chart title',\n },\n },\n },\n visible: true,\n },\n /* Commented out properties\n // ====== Size & Layout ======\n {\n name: 'width',\n title: '@dashboard:widgets.donut-chart.width',\n group: AXP_STYLING_PROPERTY_GROUP,\n schema: {\n defaultValue: 300,\n dataType: 'number',\n interface: {\n name: 'width',\n path: 'options.width',\n type: AXPWidgetsCatalog.number,\n options: {\n minValue: 200,\n maxValue: 1200,\n },\n },\n },\n visible: true,\n },\n {\n name: 'height',\n title: '@dashboard:widgets.donut-chart.height',\n group: AXP_STYLING_PROPERTY_GROUP,\n schema: {\n defaultValue: 300,\n dataType: 'number',\n interface: {\n name: 'height',\n path: 'options.height',\n type: AXPWidgetsCatalog.number,\n options: {\n minValue: 200,\n maxValue: 800,\n },\n },\n },\n visible: true,\n },\n // ====== Donut Appearance ======\n {\n name: 'showDataLabels',\n title: '@dashboard:widgets.donut-chart.show-data-labels',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showDataLabels',\n path: 'options.showDataLabels',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'donutWidth',\n title: '@dashboard:widgets.donut-chart.donut-width',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 35,\n dataType: 'number',\n interface: {\n name: 'donutWidth',\n path: 'options.donutWidth',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '10-80',\n minValue: 10,\n maxValue: 80,\n },\n },\n },\n visible: true,\n },\n {\n name: 'cornerRadius',\n title: '@dashboard:widgets.donut-chart.corner-radius',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 4,\n dataType: 'number',\n interface: {\n name: 'cornerRadius',\n path: 'options.cornerRadius',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '0-20',\n minValue: 0,\n maxValue: 20,\n },\n },\n },\n visible: true,\n },\n // ====== Legend ======\n // {\n // name: 'showLegend',\n // title: 'Show Legend',\n // group: AXP_APPEARANCE_PROPERTY_GROUP,\n // schema: {\n // defaultValue: true,\n // dataType: 'boolean',\n // interface: {\n // name: 'showLegend',\n // path: 'options.showLegend',\n // type: AXPWidgetsCatalog.toggle,\n // },\n // },\n // visible: true,\n // },\n // {\n // name: 'legendPosition',\n // title: 'Legend Position',\n // group: AXP_APPEARANCE_PROPERTY_GROUP,\n // schema: {\n // defaultValue: 'right',\n // dataType: 'string',\n // interface: {\n // name: 'legendPosition',\n // path: 'options.legendPosition',\n // type: AXPWidgetsCatalog.select,\n // options: {\n // dataSource: ['right', 'bottom'],\n // },\n // },\n // },\n // visible: true,\n // },\n // ====== Tooltip ======\n {\n name: 'showTooltip',\n title: '@dashboard:widgets.donut-chart.show-tooltip',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showTooltip',\n path: 'options.showTooltip',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n // ====== Animation Settings ======\n {\n name: 'animationEasing',\n title: '@dashboard:widgets.donut-chart.animation-easing',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 'cubic-out',\n dataType: 'string',\n interface: {\n name: 'animationEasing',\n path: 'options.animationEasing',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: [\n { value: 'linear', text: 'Linear' },\n { value: 'ease', text: 'Ease' },\n { value: 'ease-in', text: 'Ease In' },\n { value: 'ease-out', text: 'Ease Out' },\n { value: 'ease-in-out', text: 'Ease In Out' },\n { value: 'cubic', text: 'Cubic' },\n { value: 'cubic-in', text: 'Cubic In' },\n { value: 'cubic-out', text: 'Cubic Out' },\n { value: 'cubic-in-out', text: 'Cubic In Out' },\n ],\n textField: 'text',\n valueField: 'value',\n },\n },\n },\n visible: true,\n },\n {\n name: 'animationDuration',\n title: '@dashboard:widgets.donut-chart.animation-duration',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 800,\n dataType: 'number',\n interface: {\n name: 'animationDuration',\n path: 'options.animationDuration',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '0-2000',\n minValue: 0,\n maxValue: 2000,\n },\n },\n },\n visible: true,\n },\n */\n ],\n components: {\n view: {\n component: () => import('./donut-chart-widget.component').then((c) => c.AXPDonutChartWidgetViewComponent),\n },\n },\n meta: {\n dimensions: {\n lg: {\n width: 4,\n height: 4,\n minWidth: 2,\n minHeight: 2,\n maxWidth: 5,\n maxHeight: 6,\n },\n md: {\n width: 4,\n height: 4,\n minWidth: 2,\n minHeight: 2,\n maxWidth: 5,\n maxHeight: 6,\n },\n sm: {\n height: 4,\n minHeight: 2,\n maxHeight: 6,\n },\n },\n },\n};\n","import { AXDataSource } from '@acorex/cdk/common';\nimport { AXFunnelChartComponent, AXFunnelChartOption, AXFunnelData } from '@acorex/charts/funnel-chart';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPDataSourceDefinitionProviderService, AXPMultiLanguageString } from '@acorex/platform/core';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal } from '@angular/core';\nimport { AXPDashboardWidgetComponent } from '../../dashboard-widget-base';\n\n/**\n * Funnel Chart Widget Component\n * Displays step-wise conversion/flow data as a funnel.\n */\n@Component({\n templateUrl: './funnel-chart-widget.component.html',\n styleUrls: ['./funnel-chart-widget.component.scss'],\n imports: [AXFunnelChartComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPFunnelChartWidgetViewComponent extends AXPDashboardWidgetComponent {\n //#region ---- Services & Dependencies ----\n\n private readonly dataService = inject(AXPDataSourceDefinitionProviderService);\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Chart state ----\n\n protected data = signal<AXFunnelData[]>([]);\n\n /** Options passed to the chart with resolved messages/labels (multi-language and @i18n keys). */\n protected funnelOptions = signal<AXFunnelChartOption>({} as AXFunnelChartOption);\n\n private labelResolveGeneration = 0;\n\n //#endregion\n\n dataSource = computed(() => this.options()['dataSource'] as string | AXFunnelData[] | undefined);\n\n //#region ---- Localization ----\n\n private async resolveChartText(value: unknown): Promise<string> {\n if (value == null) {\n return '';\n }\n if (typeof value === 'string') {\n return value.startsWith('@') ? this.translationService.translateAsync(value) : value;\n }\n if (\n typeof value === 'object' &&\n !Array.isArray(value) &&\n this.translationService.isValidMultiLanguageObject(value)\n ) {\n return this.translationService.resolve(value as AXPMultiLanguageString);\n }\n return String(value);\n }\n\n //#endregion\n\n //#region ---- Effects ----\n\n private readonly resolveOptionLabelsEffect = effect(() => {\n const raw = this.options() as Record<string, unknown>;\n const generation = ++this.labelResolveGeneration;\n\n void (async () => {\n const messagesRaw = raw['messages'];\n const messages =\n messagesRaw && typeof messagesRaw === 'object' && !Array.isArray(messagesRaw)\n ? (messagesRaw as Record<string, unknown>)\n : undefined;\n\n const noData = await this.resolveChartText(messages?.['noData']);\n\n if (generation !== this.labelResolveGeneration) {\n return;\n }\n\n const base = raw as unknown as AXFunnelChartOption;\n this.funnelOptions.set({\n ...base,\n ...(messages\n ? {\n messages: {\n ...base.messages,\n ...(noData ? { noData } : {}),\n ...(messages['noDataIcon'] ? { noDataIcon: String(messages['noDataIcon']) } : {}),\n },\n }\n : {}),\n });\n })();\n });\n\n private readonly dataLoadEffect = effect(async () => {\n const ds = this.dataSource();\n\n const resolveName = async (name: unknown): Promise<string> => {\n const resolved = await this.resolveChartText(name);\n return resolved;\n };\n\n if (typeof ds === 'string') {\n const result = await this.dataService.get(ds);\n if (!result) {\n this.data.set([]);\n return;\n }\n\n const dataSource = result.source() as AXDataSource<unknown>;\n const page = await dataSource.config.load({\n take: dataSource.pageSize,\n skip: 0,\n sort: [],\n });\n const items = (page.items ?? []) as Record<string, unknown>[];\n const resolved = await Promise.all(\n items.map(async (item) => ({\n ...item,\n name: await resolveName(item['name']),\n })),\n );\n this.data.set(resolved as unknown as AXFunnelData[]);\n return;\n }\n\n if (ds && Array.isArray(ds)) {\n const resolved = await Promise.all(\n (ds as unknown as Record<string, unknown>[]).map(async (item) => ({\n ...item,\n name: await resolveName(item['name']),\n })),\n );\n this.data.set(resolved as unknown as AXFunnelData[]);\n return;\n }\n\n this.data.set([]);\n });\n\n //#endregion\n\n constructor() {\n super();\n this.setOptions({\n showLabels: true,\n showTooltip: true,\n neckWidth: 0.3,\n animationEasing: 'cubic-out',\n color: 'rgb(var(--ax-sys-color-primary-500))',\n animationDuration: 800,\n margin: { top: 16, right: 16, bottom: 16, left: 16 },\n ...this.options(),\n });\n\n this.funnelOptions.set(this.options() as AXFunnelChartOption);\n }\n}\n","<ax-funnel-chart [data]=\"data()\" [options]=\"funnelOptions()\"></ax-funnel-chart>\n\n","import {\n AXPWidgetConfig,\n AXPWidgetGroupEnum,\n AXPWidgetsCatalog,\n cloneProperty,\n} from '@acorex/platform/layout/widget-core';\nimport {\n AXP_APPEARANCE_PROPERTY_GROUP,\n AXP_DATA_PATH_PROPERTY,\n AXP_DATA_SOURCE_OPTIONS_PROPERTY,\n AXP_NAME_PROPERTY,\n} from '@acorex/platform/layout/widgets';\nimport { RootConfig } from '../../../../../const';\nimport { AXP_WIDGETS_CHART_CATEGORY } from '../../widget-categories.type';\nimport { AXP_DASHBOARD_SHARED_SUB_CHART_SPECIALIZED } from '../../widget-subcategories.type';\n\nexport const AXPFunnelChartWidget: AXPWidgetConfig = {\n name: RootConfig.widgets.funnelChart,\n title: '@dashboard:widgets.funnel-chart.widget-title',\n description: '@dashboard:widgets.funnel-chart.widget-description',\n categories: [AXP_WIDGETS_CHART_CATEGORY],\n subCategory: AXP_DASHBOARD_SHARED_SUB_CHART_SPECIALIZED,\n groups: [AXPWidgetGroupEnum.BaseWidget],\n type: 'dashboard',\n icon: 'fa-light fa-filter',\n properties: [\n AXP_DATA_SOURCE_OPTIONS_PROPERTY,\n cloneProperty(AXP_NAME_PROPERTY, { visible: false }),\n cloneProperty(AXP_DATA_PATH_PROPERTY, { visible: false }),\n {\n name: 'title',\n title: '@dashboard:widgets.funnel-chart.chart-title',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'title',\n path: 'options.title',\n type: AXPWidgetsCatalog.text,\n options: {\n placeholder: 'Enter chart title',\n },\n },\n },\n visible: true,\n },\n ],\n components: {\n view: {\n component: () => import('./funnel-chart-widget.component').then((c) => c.AXPFunnelChartWidgetViewComponent),\n },\n },\n meta: {\n dimensions: {\n lg: { width: 5, height: 5, minWidth: 2, minHeight: 2, maxWidth: 7, maxHeight: 7 },\n md: { width: 5, height: 5, minWidth: 2, minHeight: 2, maxWidth: 7, maxHeight: 7 },\n sm: { height: 5, minHeight: 2, maxHeight: 7 },\n },\n },\n};\n","import { AXGaugeChartComponent, AXGaugeChartOption } from '@acorex/charts/gauge-chart';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPDataSourceDefinitionProviderService, AXPMultiLanguageString } from '@acorex/platform/core';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal } from '@angular/core';\nimport { AXPDashboardWidgetComponent } from '../../dashboard-widget-base';\n\n/**\n * Gauge Chart Widget Component\n * Renders a semi-circular gauge chart with animated needle and thresholds\n */\n@Component({\n templateUrl: './gauge-chart-widget.component.html',\n styleUrls: ['./gauge-chart-widget.component.scss'],\n imports: [AXGaugeChartComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPGaugeChartWidgetViewComponent extends AXPDashboardWidgetComponent {\n //#region ---- Services & Dependencies ----\n\n private readonly dataService = inject(AXPDataSourceDefinitionProviderService);\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Chart state ----\n\n protected value = signal<number>(0);\n\n /** Options with resolved title, label, and threshold labels for the chart SVG/layer. */\n protected gaugeChartOptions = signal<AXGaugeChartOption & { title?: string }>(\n {} as AXGaugeChartOption & { title?: string },\n );\n\n private labelResolveGeneration = 0;\n\n //#endregion\n\n dataSource = computed(() => this.options()['dataSource'] as string | number | undefined);\n\n private async resolveChartOptionLabel(value: unknown): Promise<string> {\n if (value != null && typeof value === 'object' && !Array.isArray(value)) {\n return this.translationService.resolve(value as AXPMultiLanguageString);\n }\n const s = String(value ?? '');\n if (s.startsWith('@')) {\n return this.translationService.translateAsync(s);\n }\n return s;\n }\n\n private readonly resolveGaugeOptionsEffect = effect(() => {\n const raw = this.options() as Record<string, unknown>;\n const generation = ++this.labelResolveGeneration;\n const thresholdSource = raw['thresholds'];\n void (async () => {\n const [title, label] = await Promise.all([\n this.resolveChartOptionLabel(raw['title']),\n this.resolveChartOptionLabel(raw['label']),\n ]);\n let thresholds: AXGaugeChartOption['thresholds'];\n if (Array.isArray(thresholdSource)) {\n thresholds = await Promise.all(\n thresholdSource.map(async (t) => {\n const entry = t as Record<string, unknown>;\n const labelRaw = entry['label'];\n return {\n value: entry['value'] as number,\n color: String(entry['color'] ?? ''),\n ...(labelRaw != null && labelRaw !== '' ? { label: await this.resolveChartOptionLabel(labelRaw) } : {}),\n };\n }),\n );\n }\n if (generation !== this.labelResolveGeneration) {\n return;\n }\n const base = raw as unknown as AXGaugeChartOption & { title?: string };\n this.gaugeChartOptions.set({\n ...base,\n title,\n label,\n ...(thresholds ? { thresholds } : {}),\n });\n })();\n });\n\n private readonly dataLoadEffect = effect(async () => {\n const ds = this.dataSource();\n if (typeof ds === 'string') {\n const result = await this.dataService.get<number>(ds);\n if (result) {\n const loaded = result.source() as number | Promise<number>;\n this.value.set(await Promise.resolve(loaded));\n }\n } else if (typeof ds === 'number') {\n this.value.set(ds);\n } else {\n this.value.set(0);\n }\n });\n\n constructor() {\n super();\n this.setOptions({\n width: null,\n height: 300,\n minValue: 0,\n maxValue: 100,\n showTooltip: true,\n gaugeWidth: 30,\n cornerRadius: 4,\n animationEasing: 'cubic-out',\n animationDuration: 800,\n ...this.options(),\n });\n this.gaugeChartOptions.set(this.options() as AXGaugeChartOption & { title?: string });\n }\n}\n","<ax-gauge-chart [value]=\"value()\" [options]=\"gaugeChartOptions()\"></ax-gauge-chart>\n","import { RootConfig } from '../../../../../const';\nimport { AXPWidgetConfig, AXPWidgetsCatalog, cloneProperty } from '@acorex/platform/layout/widget-core';\nimport {\n AXP_APPEARANCE_PROPERTY_GROUP,\n AXP_DATA_PATH_PROPERTY,\n AXP_NAME_PROPERTY,\n AXP_STYLING_PROPERTY_GROUP,\n} from '@acorex/platform/layout/widgets';\nimport { AXP_WIDGETS_CHART_CATEGORY } from '../../widget-categories.type';\nimport { AXP_DASHBOARD_SHARED_SUB_CHART_RADIAL } from '../../widget-subcategories.type';\n\nexport const AXPGaugeChartWidget: AXPWidgetConfig = {\n name: RootConfig.widgets.gaugeChart,\n title: '@dashboard:widgets.gauge-chart.widget-title',\n description: '@dashboard:widgets.gauge-chart.widget-description',\n categories: [AXP_WIDGETS_CHART_CATEGORY],\n subCategory: AXP_DASHBOARD_SHARED_SUB_CHART_RADIAL,\n type: 'dashboard',\n icon: 'fa-light fa-gauge',\n properties: [\n cloneProperty(AXP_NAME_PROPERTY, { visible: false }),\n cloneProperty(AXP_DATA_PATH_PROPERTY, { visible: false }),\n // ====== Chart Title ======\n {\n name: 'title',\n title: '@dashboard:widgets.gauge-chart.chart-title',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'title',\n path: 'options.title',\n type: AXPWidgetsCatalog.text,\n options: {\n placeholder: 'Enter chart title',\n },\n },\n },\n visible: true,\n },\n // ====== Label Display ======\n {\n name: 'label',\n title: '@dashboard:widgets.gauge-chart.label',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'label',\n path: 'options.label',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n /* Commented out properties\n // ====== Layout & Dimensions ======\n {\n name: 'width',\n title: '@dashboard:widgets.gauge-chart.width',\n group: AXP_STYLING_PROPERTY_GROUP,\n schema: {\n defaultValue: null,\n dataType: 'number',\n interface: {\n name: 'width',\n path: 'options.width',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '1-1200',\n minValue: 1,\n maxValue: 1200,\n },\n },\n },\n visible: true,\n },\n {\n name: 'height',\n title: '@dashboard:widgets.gauge-chart.height',\n group: AXP_STYLING_PROPERTY_GROUP,\n schema: {\n defaultValue: 300,\n dataType: 'number',\n interface: {\n name: 'height',\n path: 'options.height',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '1-800',\n minValue: 1,\n maxValue: 800,\n },\n },\n },\n visible: true,\n },\n // ====== Gauge Configuration ======\n {\n name: 'minValue',\n title: '@dashboard:widgets.gauge-chart.min-value',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 0,\n dataType: 'number',\n interface: {\n name: 'minValue',\n path: 'options.minValue',\n type: AXPWidgetsCatalog.number,\n },\n },\n visible: true,\n },\n {\n name: 'maxValue',\n title: '@dashboard:widgets.gauge-chart.max-value',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 100,\n dataType: 'number',\n interface: {\n name: 'maxValue',\n path: 'options.maxValue',\n type: AXPWidgetsCatalog.number,\n },\n },\n visible: true,\n },\n // ====== Gauge Appearance ======\n {\n name: 'showTooltip',\n title: '@dashboard:widgets.gauge-chart.show-tooltip',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showTooltip',\n path: 'options.showTooltip',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'gaugeWidth',\n title: '@dashboard:widgets.gauge-chart.gauge-width',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 30,\n dataType: 'number',\n interface: {\n name: 'gaugeWidth',\n path: 'options.gaugeWidth',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '1-100',\n minValue: 1,\n maxValue: 100,\n },\n },\n },\n visible: true,\n },\n {\n name: 'cornerRadius',\n title: '@dashboard:widgets.gauge-chart.corner-radius',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 4,\n dataType: 'number',\n interface: {\n name: 'cornerRadius',\n path: 'options.cornerRadius',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '1-20',\n minValue: 0,\n maxValue: 20,\n },\n },\n },\n visible: true,\n },\n // ====== Animation Settings ======\n {\n name: 'animationEasing',\n title: '@dashboard:widgets.gauge-chart.animation-easing',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 'cubic-out',\n dataType: 'string',\n interface: {\n name: 'animationEasing',\n path: 'options.animationEasing',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: [\n { value: 'linear', text: 'Linear' },\n { value: 'ease', text: 'Ease' },\n { value: 'ease-in', text: 'Ease In' },\n { value: 'ease-out', text: 'Ease Out' },\n { value: 'ease-in-out', text: 'Ease In Out' },\n { value: 'cubic', text: 'Cubic' },\n { value: 'cubic-in', text: 'Cubic In' },\n { value: 'cubic-out', text: 'Cubic Out' },\n { value: 'cubic-in-out', text: 'Cubic In Out' },\n ],\n textField: 'text',\n valueField: 'value',\n },\n },\n },\n visible: true,\n },\n {\n name: 'animationDuration',\n title: '@dashboard:widgets.gauge-chart.animation-duration',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 800,\n dataType: 'number',\n interface: {\n name: 'animationDuration',\n path: 'options.animationDuration',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '0-2000',\n minValue: 0,\n maxValue: 2000,\n },\n },\n },\n visible: true,\n },\n */\n ],\n components: {\n view: {\n component: () => import('./gauge-chart-widget.component').then((c) => c.AXPGaugeChartWidgetViewComponent),\n },\n },\n meta: {\n dimensions: {\n lg: {\n width: 3,\n height: 4,\n minWidth: 2,\n minHeight: 2,\n maxWidth: 4,\n maxHeight: 5,\n },\n md: {\n width: 3,\n height: 4,\n minWidth: 2,\n minHeight: 2,\n maxWidth: 4,\n maxHeight: 5,\n },\n sm: {\n height: 4,\n minHeight: 2,\n maxHeight: 5,\n },\n },\n },\n};\n","import { AXDataSource } from '@acorex/cdk/common';\nimport { AXHeatmapChartComponent, AXHeatmapChartOption, AXHeatmapData } from '@acorex/charts/heatmap-chart';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPDataSourceDefinitionProviderService, AXPMultiLanguageString } from '@acorex/platform/core';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal } from '@angular/core';\nimport { AXPDashboardWidgetComponent } from '../../dashboard-widget-base';\n\n/**\n * Heatmap Chart Widget Component\n * Displays matrix-like data with color intensity based on value.\n */\n@Component({\n templateUrl: './heatmap-chart-widget.component.html',\n styleUrls: ['./heatmap-chart-widget.component.scss'],\n imports: [AXHeatmapChartComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPHeatmapChartWidgetViewComponent extends AXPDashboardWidgetComponent {\n //#region ---- Services & Dependencies ----\n\n private readonly dataService = inject(AXPDataSourceDefinitionProviderService);\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Chart state ----\n\n protected data = signal<AXHeatmapData[]>([]);\n\n /** Options passed to the chart with resolved string labels (multi-language and @i18n keys). */\n protected heatmapOptions = signal<AXHeatmapChartOption>({} as AXHeatmapChartOption);\n\n private labelResolveGeneration = 0;\n\n //#endregion\n\n dataSource = computed(() => this.options()['dataSource'] as string | AXHeatmapData[] | undefined);\n\n //#region ---- Localization ----\n\n private async resolveChartText(value: unknown): Promise<string> {\n if (value == null) {\n return '';\n }\n if (typeof value === 'string') {\n return value.startsWith('@') ? this.translationService.translateAsync(value) : value;\n }\n if (\n typeof value === 'object' &&\n !Array.isArray(value) &&\n this.translationService.isValidMultiLanguageObject(value)\n ) {\n return this.translationService.resolve(value as AXPMultiLanguageString);\n }\n return String(value);\n }\n\n //#endregion\n\n //#region ---- Effects ----\n\n private readonly resolveOptionLabelsEffect = effect(() => {\n const raw = this.options() as Record<string, unknown>;\n const generation = ++this.labelResolveGeneration;\n\n void (async () => {\n const [xAxisLabel, yAxisLabel] = await Promise.all([\n this.resolveChartText(raw['xAxisLabel']),\n this.resolveChartText(raw['yAxisLabel']),\n ]);\n\n const messagesRaw = raw['messages'];\n const messages =\n messagesRaw && typeof messagesRaw === 'object' && !Array.isArray(messagesRaw)\n ? (messagesRaw as Record<string, unknown>)\n : undefined;\n\n const [noData, noDataHelp] = await Promise.all([\n this.resolveChartText(messages?.['noData']),\n this.resolveChartText(messages?.['noDataHelp']),\n ]);\n\n if (generation !== this.labelResolveGeneration) {\n return;\n }\n\n const base = raw as unknown as AXHeatmapChartOption;\n this.heatmapOptions.set({\n ...base,\n xAxisLabel,\n yAxisLabel,\n ...(messages\n ? {\n messages: {\n ...base.messages,\n ...(noData ? { noData } : {}),\n ...(noDataHelp ? { noDataHelp } : {}),\n ...(messages['noDataIcon'] ? { noDataIcon: String(messages['noDataIcon']) } : {}),\n },\n }\n : {}),\n });\n })();\n });\n\n private readonly dataLoadEffect = effect(async () => {\n const ds = this.dataSource();\n\n if (typeof ds === 'string') {\n const result = await this.dataService.get(ds);\n if (!result) {\n this.data.set([]);\n return;\n }\n\n const dataSource = result.source() as AXDataSource<unknown>;\n const page = await dataSource.config.load({\n take: dataSource.pageSize,\n skip: 0,\n sort: [],\n });\n const items = (page.items ?? []) as Record<string, unknown>[];\n const resolved = await Promise.all(\n items.map(async (item) => {\n const x = item['x'];\n const y = item['y'];\n const label = item['label'];\n\n return {\n ...item,\n x: typeof x === 'number' ? x : await this.resolveChartText(x),\n y: typeof y === 'number' ? y : await this.resolveChartText(y),\n ...(label !== undefined ? { label: await this.resolveChartText(label) } : {}),\n };\n }),\n );\n\n this.data.set(resolved as unknown as AXHeatmapData[]);\n return;\n }\n\n if (ds && Array.isArray(ds)) {\n const resolved = await Promise.all(\n (ds as unknown as Record<string, unknown>[]).map(async (item) => {\n const x = item['x'];\n const y = item['y'];\n const label = item['label'];\n\n return {\n ...item,\n x: typeof x === 'number' ? x : await this.resolveChartText(x),\n y: typeof y === 'number' ? y : await this.resolveChartText(y),\n ...(label !== undefined ? { label: await this.resolveChartText(label) } : {}),\n };\n }),\n );\n\n this.data.set(resolved as unknown as AXHeatmapData[]);\n return;\n }\n\n this.data.set([]);\n });\n\n //#endregion\n\n constructor() {\n super();\n this.setOptions({\n showXAxis: true,\n showYAxis: true,\n showTooltip: true,\n cellPadding: 0.05,\n borderRadius: 2,\n color: 'rgb(var(--ax-sys-color-primary-500))',\n animationEasing: 'cubic-out',\n animationDuration: 800,\n ...this.options(),\n });\n\n this.heatmapOptions.set(this.options() as AXHeatmapChartOption);\n }\n}\n","<ax-heatmap-chart [data]=\"data()\" [options]=\"heatmapOptions()\"></ax-heatmap-chart>\n\n","import {\n AXPWidgetConfig,\n AXPWidgetGroupEnum,\n AXPWidgetsCatalog,\n cloneProperty,\n} from '@acorex/platform/layout/widget-core';\nimport {\n AXP_APPEARANCE_PROPERTY_GROUP,\n AXP_DATA_PATH_PROPERTY,\n AXP_DATA_SOURCE_OPTIONS_PROPERTY,\n AXP_NAME_PROPERTY,\n} from '@acorex/platform/layout/widgets';\nimport { RootConfig } from '../../../../../const';\nimport { AXP_WIDGETS_CHART_CATEGORY } from '../../widget-categories.type';\nimport { AXP_DASHBOARD_SHARED_SUB_CHART_SPECIALIZED } from '../../widget-subcategories.type';\n\nexport const AXPHeatmapChartWidget: AXPWidgetConfig = {\n name: RootConfig.widgets.heatmapChart,\n title: '@dashboard:widgets.heatmap-chart.widget-title',\n description: '@dashboard:widgets.heatmap-chart.widget-description',\n categories: [AXP_WIDGETS_CHART_CATEGORY],\n subCategory: AXP_DASHBOARD_SHARED_SUB_CHART_SPECIALIZED,\n groups: [AXPWidgetGroupEnum.BaseWidget],\n type: 'dashboard',\n icon: 'fa-light fa-grid-2',\n properties: [\n AXP_DATA_SOURCE_OPTIONS_PROPERTY,\n cloneProperty(AXP_NAME_PROPERTY, { visible: false }),\n cloneProperty(AXP_DATA_PATH_PROPERTY, { visible: false }),\n {\n name: 'title',\n title: '@dashboard:widgets.heatmap-chart.chart-title',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'title',\n path: 'options.title',\n type: AXPWidgetsCatalog.text,\n options: {\n placeholder: 'Enter chart title',\n },\n },\n },\n visible: true,\n },\n // ====== Axis Settings ======\n {\n name: 'xAxisLabel',\n title: '@dashboard:widgets.heatmap-chart.x-axis-label',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'xAxisLabel',\n path: 'options.xAxisLabel',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n {\n name: 'yAxisLabel',\n title: '@dashboard:widgets.heatmap-chart.y-axis-label',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'yAxisLabel',\n path: 'options.yAxisLabel',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n ],\n components: {\n view: {\n component: () => import('./heatmap-chart-widget.component').then((c) => c.AXPHeatmapChartWidgetViewComponent),\n },\n },\n meta: {\n dimensions: {\n lg: { width: 6, height: 5, minWidth: 2, minHeight: 2, maxWidth: 8, maxHeight: 7 },\n md: { width: 6, height: 5, minWidth: 2, minHeight: 2, maxWidth: 8, maxHeight: 7 },\n sm: { height: 5, minHeight: 2, maxHeight: 7 },\n },\n },\n};\n","import { AXDataSource } from '@acorex/cdk/common';\nimport {\n AXLineChartComponent,\n AXLineChartData,\n AXLineChartOption,\n AXLineChartPointClickEvent,\n} from '@acorex/charts/line-chart';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPDataSourceDefinitionProviderService, AXPMultiLanguageString } from '@acorex/platform/core';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal } from '@angular/core';\nimport { AXPDashboardWidgetComponent } from '../../dashboard-widget-base';\n\n/**\n * Line Chart Widget Component\n * Renders data as lines with interactive hover effects and animations\n */\n@Component({\n templateUrl: './line-chart-widget.component.html',\n styleUrls: ['./line-chart-widget.component.scss'],\n standalone: true,\n imports: [AXLineChartComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPLineChartWidgetViewComponent extends AXPDashboardWidgetComponent {\n //#region ---- Services & Dependencies ----\n\n private readonly dataService = inject(AXPDataSourceDefinitionProviderService);\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Chart state ----\n\n protected data = signal<AXLineChartData[]>([]);\n\n /** Options passed to the chart with resolved string labels (multi-language and @i18n keys). */\n protected lineChartOptions = signal<AXLineChartOption & { title: string }>(\n {} as AXLineChartOption & { title: string },\n );\n\n private labelResolveGeneration = 0;\n\n //#endregion\n\n dataSource = computed(() => this.options()['dataSource'] as string | AXLineChartData[] | undefined);\n\n private async resolveChartOptionLabel(value: unknown): Promise<string> {\n if (value != null && typeof value === 'object' && !Array.isArray(value)) {\n return this.translationService.resolve(value as AXPMultiLanguageString);\n }\n const s = String(value ?? '');\n if (s.startsWith('@')) {\n return this.translationService.translateAsync(s);\n }\n return s;\n }\n\n /**\n * Resolves series labels from plain text, @i18n keys, or multi-language maps.\n */\n private async resolveLocalizedChartText(value: unknown): Promise<string> {\n if (value == null) {\n return '';\n }\n if (typeof value === 'string') {\n if (value.startsWith('@')) {\n return this.translationService.translateAsync(value);\n }\n return value;\n }\n if (\n typeof value === 'object' &&\n !Array.isArray(value) &&\n this.translationService.isValidMultiLanguageObject(value)\n ) {\n return this.translationService.resolve(value as AXPMultiLanguageString);\n }\n return String(value);\n }\n\n private readonly resolveChartLabelKeysEffect = effect(() => {\n const raw = this.options() as Record<string, unknown>;\n const generation = ++this.labelResolveGeneration;\n void Promise.all([\n this.resolveChartOptionLabel(raw['title']),\n this.resolveChartOptionLabel(raw['xAxisLabel']),\n this.resolveChartOptionLabel(raw['yAxisLabel']),\n ]).then(([title, xAxisLabel, yAxisLabel]) => {\n if (generation !== this.labelResolveGeneration) {\n return;\n }\n const base = raw as unknown as AXLineChartOption & { title: string };\n this.lineChartOptions.set({\n ...base,\n title,\n xAxisLabel,\n yAxisLabel,\n });\n });\n });\n\n private readonly dataLoadEffect = effect(async () => {\n const ds = this.dataSource();\n if (typeof ds === 'string') {\n const result = await this.dataService.get(ds);\n if (result) {\n const dataSource = result.source() as AXDataSource<unknown>;\n const page = await dataSource.config.load({\n take: dataSource.pageSize,\n skip: 0,\n sort: [],\n });\n const series = (page.items ?? []) as Record<string, unknown>[];\n const resolved = await Promise.all(\n series.map(async (s) => ({\n ...s,\n label: await this.resolveLocalizedChartText(s['label']),\n })),\n );\n this.data.set(resolved as AXLineChartData[]);\n }\n } else if (ds && Array.isArray(ds)) {\n const resolved = await Promise.all(\n (ds as unknown as Record<string, unknown>[]).map(async (s) => ({\n ...s,\n label: await this.resolveLocalizedChartText(s['label']),\n })),\n );\n this.data.set(resolved as unknown as AXLineChartData[]);\n } else {\n this.data.set([]);\n }\n });\n\n constructor() {\n super();\n this.setOptions({\n showXAxis: true,\n showYAxis: true,\n yAxisStartsAtZero: true,\n showGrid: true,\n showVerticalGrid: true,\n lineWidth: 2,\n smoothLine: true,\n showPoints: true,\n pointRadius: 4,\n fillOpacity: 80,\n showTooltip: true,\n showCrosshair: true,\n animationEasing: 'cubic-out',\n animationDuration: 800,\n ...this.options(),\n });\n this.lineChartOptions.set(this.options() as AXLineChartOption & { title: string });\n }\n\n handleLineChartPointClick(event: AXLineChartPointClickEvent) {\n //console.log(event);\n }\n}\n","<ax-line-chart\n (pointClick)=\"handleLineChartPointClick($event)\"\n [data]=\"data()\"\n [options]=\"lineChartOptions()\"\n></ax-line-chart>\n","import { RootConfig } from '../../../../../const';\nimport { AXPWidgetConfig, AXPWidgetGroupEnum, AXPWidgetsCatalog, cloneProperty } from '@acorex/platform/layout/widget-core';\nimport {\n AXP_APPEARANCE_PROPERTY_GROUP,\n AXP_DATA_PATH_PROPERTY,\n AXP_NAME_PROPERTY,\n AXP_STYLING_PROPERTY_GROUP,\n} from '@acorex/platform/layout/widgets';\nimport { AXP_WIDGETS_CHART_CATEGORY } from '../../widget-categories.type';\nimport { AXP_DASHBOARD_SHARED_SUB_CHART_CARTESIAN } from '../../widget-subcategories.type';\n\nexport const AXPLineChartWidget: AXPWidgetConfig = {\n name: RootConfig.widgets.lineChart,\n title: '@dashboard:widgets.line-chart.widget-title',\n description: '@dashboard:widgets.line-chart.widget-description',\n categories: [AXP_WIDGETS_CHART_CATEGORY],\n subCategory: AXP_DASHBOARD_SHARED_SUB_CHART_CARTESIAN,\n groups: [AXPWidgetGroupEnum.BaseWidget],\n type: 'dashboard',\n icon: 'fa-light fa-chart-line',\n properties: [\n cloneProperty(AXP_NAME_PROPERTY, { visible: false }),\n cloneProperty(AXP_DATA_PATH_PROPERTY, { visible: false }),\n // ====== Chart Title ======\n {\n name: 'title',\n title: '@dashboard:widgets.line-chart.chart-title',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'title',\n path: 'options.title',\n type: AXPWidgetsCatalog.text,\n options: {\n placeholder: 'Enter chart title',\n },\n },\n },\n visible: true,\n },\n // ====== Axis Settings ======\n {\n name: 'xAxisLabel',\n title: '@dashboard:widgets.line-chart.x-axis-label',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'xAxisLabel',\n path: 'options.xAxisLabel',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n {\n name: 'yAxisLabel',\n title: '@dashboard:widgets.line-chart.y-axis-label',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'yAxisLabel',\n path: 'options.yAxisLabel',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n {\n name: 'fillArea',\n title: '@dashboard:widgets.line-chart.fill-area',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: false,\n dataType: 'boolean',\n interface: {\n name: 'fillArea',\n path: 'options.fillArea',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n /* Commented out properties\n // ====== Layout & Dimensions ======\n {\n name: 'width',\n title: '@dashboard:widgets.line-chart.width',\n group: AXP_STYLING_PROPERTY_GROUP,\n schema: {\n defaultValue: null,\n dataType: 'number',\n interface: {\n name: 'width',\n path: 'options.width',\n type: AXPWidgetsCatalog.number,\n options: {\n minValue: 0,\n maxValue: 1200,\n },\n },\n },\n visible: true,\n },\n {\n name: 'height',\n title: '@dashboard:widgets.line-chart.height',\n group: AXP_STYLING_PROPERTY_GROUP,\n schema: {\n defaultValue: 300,\n dataType: 'number',\n interface: {\n name: 'height',\n path: 'options.height',\n type: AXPWidgetsCatalog.number,\n options: {\n minValue: 0,\n maxValue: 800,\n },\n },\n },\n visible: true,\n },\n\n // ====== Axis Settings ======\n {\n name: 'showXAxis',\n title: '@dashboard:widgets.line-chart.show-x-axis',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showXAxis',\n path: 'options.showXAxis',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'showYAxis',\n title: '@dashboard:widgets.line-chart.show-y-axis',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showYAxis',\n path: 'options.showYAxis',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'yAxisStartsAtZero',\n title: '@dashboard:widgets.line-chart.y-axis-starts-at-zero',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'yAxisStartsAtZero',\n path: 'options.yAxisStartsAtZero',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n\n {\n name: 'showGrid',\n title: '@dashboard:widgets.line-chart.show-grid',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showGrid',\n path: 'options.showGrid',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'showVerticalGrid',\n title: '@dashboard:widgets.line-chart.show-vertical-grid',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showVerticalGrid',\n path: 'options.showVerticalGrid',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n\n // ====== Line Appearance ======\n {\n name: 'lineWidth',\n title: '@dashboard:widgets.line-chart.line-width',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 2,\n dataType: 'number',\n interface: {\n name: 'lineWidth',\n path: 'options.lineWidth',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '1-10',\n minValue: 1,\n maxValue: 10,\n },\n },\n },\n visible: true,\n },\n {\n name: 'smoothLine',\n title: '@dashboard:widgets.line-chart.smooth-line',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'smoothLine',\n path: 'options.smoothLine',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'showPoints',\n title: '@dashboard:widgets.line-chart.show-points',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showPoints',\n path: 'options.showPoints',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'pointRadius',\n title: '@dashboard:widgets.line-chart.point-radius',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 4,\n dataType: 'number',\n interface: {\n name: 'pointRadius',\n path: 'options.pointRadius',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '1-10',\n minValue: 1,\n maxValue: 10,\n },\n },\n },\n visible: true,\n },\n {\n name: 'fillOpacity',\n title: '@dashboard:widgets.line-chart.fill-opacity',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 80,\n dataType: 'number',\n interface: {\n name: 'fillOpacity',\n path: 'options.fillOpacity',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '1-100',\n minValue: 1,\n maxValue: 100,\n },\n },\n },\n visible: true,\n },\n\n // ====== Tooltip Settings ======\n {\n name: 'showTooltip',\n title: '@dashboard:widgets.line-chart.show-tooltip',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showTooltip',\n path: 'options.showTooltip',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'showCrosshair',\n title: '@dashboard:widgets.line-chart.show-crosshair',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showCrosshair',\n path: 'options.showCrosshair',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n\n // ====== Animation Settings ======\n {\n name: 'animationEasing',\n title: '@dashboard:widgets.line-chart.animation-easing',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 'cubic-out',\n dataType: 'string',\n interface: {\n name: 'animationEasing',\n path: 'options.animationEasing',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: [\n { value: 'linear', text: 'Linear' },\n { value: 'ease', text: 'Ease' },\n { value: 'ease-in', text: 'Ease In' },\n { value: 'ease-out', text: 'Ease Out' },\n { value: 'ease-in-out', text: 'Ease In Out' },\n { value: 'cubic', text: 'Cubic' },\n { value: 'cubic-in', text: 'Cubic In' },\n { value: 'cubic-out', text: 'Cubic Out' },\n { value: 'cubic-in-out', text: 'Cubic In Out' },\n ],\n textField: 'text',\n valueField: 'value',\n },\n },\n },\n visible: true,\n },\n {\n name: 'animationDuration',\n title: '@dashboard:widgets.line-chart.animation-duration',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 800,\n dataType: 'number',\n interface: {\n name: 'animationDuration',\n path: 'options.animationDuration',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '0-2000',\n minValue: 0,\n maxValue: 2000,\n },\n },\n },\n visible: true,\n },\n */\n ],\n components: {\n view: {\n component: () => import('./line-chart-widget.component').then((c) => c.AXPLineChartWidgetViewComponent),\n },\n },\n meta: {\n dimensions: {\n lg: {\n width: 3,\n height: 4,\n minWidth: 2,\n minHeight: 2,\n maxWidth: 6,\n maxHeight: 6,\n },\n md: {\n width: 3,\n height: 4,\n minWidth: 2,\n minHeight: 2,\n maxWidth: 6,\n maxHeight: 6,\n },\n sm: {\n height: 4,\n minHeight: 2,\n maxHeight: 6,\n },\n },\n },\n};\n","import { AXDataSource } from '@acorex/cdk/common';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPDataSourceDefinitionProviderService, AXPMultiLanguageString } from '@acorex/platform/core';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal } from '@angular/core';\nimport { AXPDashboardWidgetComponent } from '../../dashboard-widget-base';\nimport { AXPKpiProgressData } from '../kpi-widget.types';\n\n@Component({\n templateUrl: './kpi-progress-widget.component.html',\n styleUrls: ['./kpi-progress-widget.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPKpiProgressWidgetViewComponent extends AXPDashboardWidgetComponent {\n //#region ---- Services & Dependencies ----\n\n private readonly dataService = inject(AXPDataSourceDefinitionProviderService);\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- State ----\n\n protected readonly model = signal<AXPKpiProgressData>({\n title: 'KPI',\n value: 0,\n subtitle: '',\n targetValue: '',\n progressPercent: 0,\n });\n protected readonly localized = signal({\n title: 'KPI',\n valuePrefix: '',\n valueSuffix: '',\n subtitle: '',\n targetValue: '',\n });\n\n private readonly dataSource = computed(() => this.options()['dataSource'] as string | undefined);\n\n //#endregion\n\n //#region ---- Computed values ----\n\n protected readonly progressPercent = computed(() => {\n const model = this.model();\n if (typeof model.progressPercent === 'number') {\n return this.normalizePercent(model.progressPercent);\n }\n\n const progressValue = model.progressValue ?? (typeof model.value === 'number' ? model.value : 0);\n const targetValue = Number(model.targetValue);\n if (!targetValue || Number.isNaN(targetValue)) {\n return 0;\n }\n return this.normalizePercent((progressValue / targetValue) * 100);\n });\n\n protected readonly formattedValue = computed(() => this.formatValue(this.model().value, this.model().format));\n\n //#endregion\n\n //#region ---- Effects ----\n\n private readonly optionsEffect = effect(() => {\n const raw = this.options() as AXPKpiProgressData;\n this.model.update((current) => ({ ...current, ...raw }));\n });\n\n private readonly localizationEffect = effect(() => {\n const model = this.model();\n void Promise.all([\n this.resolveText(model.title),\n this.resolveText(model.valuePrefix),\n this.resolveText(model.valueSuffix),\n this.resolveText(model.subtitle),\n this.resolveText(model.targetValue),\n ]).then(([title, valuePrefix, valueSuffix, subtitle, targetValue]) => {\n this.localized.set({\n title,\n valuePrefix,\n valueSuffix,\n subtitle,\n targetValue,\n });\n });\n });\n\n private readonly dataLoadEffect = effect(async () => {\n const ds = this.dataSource();\n if (!ds) {\n return;\n }\n const result = await this.dataService.get(ds);\n if (!result) {\n return;\n }\n const source = result.source() as AXDataSource<unknown>;\n const page = await source.config.load({\n take: 1,\n skip: 0,\n sort: [],\n });\n const item = (page.items?.[0] ?? {}) as AXPKpiProgressData;\n this.model.update((current) => ({ ...current, ...item }));\n });\n\n //#endregion\n\n //#region ---- Helpers ----\n\n protected async resolveText(value: unknown): Promise<string> {\n if (value == null) {\n return '';\n }\n if (typeof value === 'string') {\n if (value.startsWith('@')) {\n return this.translationService.translateAsync(value);\n }\n return value;\n }\n if (\n typeof value === 'object' &&\n !Array.isArray(value) &&\n this.translationService.isValidMultiLanguageObject(value)\n ) {\n return this.translationService.resolve(value as AXPMultiLanguageString);\n }\n return String(value);\n }\n\n protected normalizePercent(value: number): number {\n if (!Number.isFinite(value)) {\n return 0;\n }\n return Math.max(0, Math.min(100, value));\n }\n\n protected formatValue(value: unknown, format?: AXPKpiProgressData['format']): string {\n if (value == null || value === '') {\n return '';\n }\n if (typeof value !== 'number' || !format?.style) {\n return String(value);\n }\n return new Intl.NumberFormat(undefined, {\n style: format.style,\n currency: format.currency,\n minimumFractionDigits: format.minimumFractionDigits,\n maximumFractionDigits: format.maximumFractionDigits,\n }).format(value);\n }\n //#endregion\n}\n","<div class=\"axp-kpi-progress\">\n <div class=\"__header\">\n <div class=\"__title\">{{ localized().title }}</div>\n <div class=\"__badge\">{{ progressPercent() }}%</div>\n </div>\n\n <div class=\"__value-row\">\n <div class=\"__value\">\n {{ localized().valuePrefix }}{{ formattedValue() }}{{ localized().valueSuffix }}\n </div>\n @if (localized().targetValue) {\n <div class=\"__target-wrap\">\n <div class=\"__target-label\">Target</div>\n <div class=\"__target\">{{ localized().targetValue }}</div>\n </div>\n }\n </div>\n\n @if (localized().subtitle) {\n <div class=\"__subtitle\">{{ localized().subtitle }}</div>\n }\n\n <div class=\"__bar-track\">\n <div class=\"__bar-fill\" [style.width.%]=\"progressPercent()\"></div>\n </div>\n</div>\n","import { RootConfig } from '../../../../../const';\nimport { AXPWidgetConfig, AXPWidgetGroupEnum, AXPWidgetsCatalog, cloneProperty } from '@acorex/platform/layout/widget-core';\nimport {\n AXP_APPEARANCE_PROPERTY_GROUP,\n AXP_DATA_PATH_PROPERTY,\n AXP_DATA_SOURCE_OPTIONS_PROPERTY,\n AXP_NAME_PROPERTY,\n} from '@acorex/platform/layout/widgets';\nimport { AXP_WIDGETS_CHART_CATEGORY } from '../../widget-categories.type';\nimport { AXP_DASHBOARD_SHARED_SUB_CHART_KPI } from '../../widget-subcategories.type';\n\nexport const AXPKpiProgressWidget: AXPWidgetConfig = {\n name: RootConfig.widgets.kpiProgress,\n title: '@dashboard:widgets.kpi-progress.widget-title',\n description: '@dashboard:widgets.kpi-progress.widget-description',\n categories: [AXP_WIDGETS_CHART_CATEGORY],\n subCategory: AXP_DASHBOARD_SHARED_SUB_CHART_KPI,\n groups: [AXPWidgetGroupEnum.BaseWidget],\n type: 'dashboard',\n icon: 'fa-light fa-chart-bullet',\n properties: [\n AXP_DATA_SOURCE_OPTIONS_PROPERTY,\n cloneProperty(AXP_NAME_PROPERTY, { visible: false }),\n cloneProperty(AXP_DATA_PATH_PROPERTY, { visible: false }),\n {\n name: 'title',\n title: '@dashboard:widgets.kpi-progress.title',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'title',\n path: 'options.title',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n {\n name: 'value',\n title: '@dashboard:widgets.kpi-progress.value',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 0,\n dataType: 'number',\n interface: {\n name: 'value',\n path: 'options.value',\n type: AXPWidgetsCatalog.number,\n },\n },\n visible: true,\n },\n {\n name: 'subtitle',\n title: '@dashboard:widgets.kpi-progress.subtitle',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'subtitle',\n path: 'options.subtitle',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n {\n name: 'targetValue',\n title: '@dashboard:widgets.kpi-progress.target-value',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'targetValue',\n path: 'options.targetValue',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n {\n name: 'progressPercent',\n title: '@dashboard:widgets.kpi-progress.progress-percent',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 0,\n dataType: 'number',\n interface: {\n name: 'progressPercent',\n path: 'options.progressPercent',\n type: AXPWidgetsCatalog.number,\n },\n },\n visible: true,\n },\n ],\n components: {\n view: {\n component: () => import('./kpi-progress-widget.component').then((c) => c.AXPKpiProgressWidgetViewComponent),\n },\n },\n meta: {\n dimensions: {\n lg: {\n width: 5,\n height: 3,\n minWidth: 3,\n minHeight: 2,\n },\n md: {\n width: 5,\n height: 3,\n minWidth: 3,\n minHeight: 2,\n },\n sm: {\n height: 3,\n minHeight: 2,\n },\n },\n },\n};\n","import { AXDataSource } from '@acorex/cdk/common';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPDataSourceDefinitionProviderService, AXPMultiLanguageString } from '@acorex/platform/core';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal } from '@angular/core';\nimport { AXPDashboardWidgetComponent } from '../../dashboard-widget-base';\nimport { AXPKpiSegmentItem, AXPKpiSegmentedData } from '../kpi-widget.types';\n\ninterface AXPKpiSegmentViewItem {\n label: string;\n value: number;\n color: string;\n percent: number;\n}\n\n@Component({\n templateUrl: './kpi-segmented-widget.component.html',\n styleUrls: ['./kpi-segmented-widget.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPKpiSegmentedWidgetViewComponent extends AXPDashboardWidgetComponent {\n private readonly dataService = inject(AXPDataSourceDefinitionProviderService);\n private readonly translationService = inject(AXTranslationService);\n\n protected readonly model = signal<AXPKpiSegmentedData>({\n title: 'KPI Breakdown',\n segments: [],\n });\n protected readonly title = signal('KPI Breakdown');\n protected readonly segments = signal<AXPKpiSegmentViewItem[]>([]);\n private readonly dataSource = computed(() => this.options()['dataSource'] as string | undefined);\n\n private readonly optionsEffect = effect(() => {\n const raw = this.options() as AXPKpiSegmentedData;\n this.model.update((current) => ({ ...current, ...raw }));\n });\n\n private readonly transformEffect = effect(() => {\n const model = this.model();\n const segments = model.segments ?? [];\n void Promise.all([this.resolveText(model.title), this.resolveSegments(segments)]).then(\n ([title, resolvedSegments]) => {\n this.title.set(title);\n this.segments.set(resolvedSegments);\n },\n );\n });\n\n private readonly dataLoadEffect = effect(async () => {\n const ds = this.dataSource();\n if (!ds) {\n return;\n }\n const result = await this.dataService.get(ds);\n if (!result) {\n return;\n }\n const source = result.source() as AXDataSource<unknown>;\n const page = await source.config.load({ take: source.pageSize, skip: 0, sort: [] });\n const items = (page.items ?? []) as AXPKpiSegmentItem[];\n this.model.update((current) => ({ ...current, segments: items }));\n });\n\n protected trackByLabel(_: number, item: AXPKpiSegmentViewItem): string {\n return item.label;\n }\n\n private async resolveSegments(segments: AXPKpiSegmentItem[]): Promise<AXPKpiSegmentViewItem[]> {\n const total = segments.reduce((sum, item) => sum + (item.value ?? 0), 0);\n const resolved = await Promise.all(\n segments.map(async (item, index) => ({\n label: await this.resolveText(item.label),\n value: item.value ?? 0,\n color: item.color || this.getPaletteColor(index),\n percent: total > 0 ? ((item.value ?? 0) / total) * 100 : 0,\n })),\n );\n return resolved;\n }\n\n private getPaletteColor(index: number): string {\n const palette = [\n 'rgb(var(--ax-sys-color-primary-500))',\n 'rgb(var(--ax-sys-color-warning-500))',\n 'rgb(var(--ax-sys-color-success-500))',\n 'rgb(var(--ax-sys-color-accent2-500))',\n 'rgb(var(--ax-sys-color-danger-500))',\n ];\n return palette[index % palette.length];\n }\n\n private async resolveText(value: unknown): Promise<string> {\n if (value == null) {\n return '';\n }\n if (typeof value === 'string') {\n return value.startsWith('@') ? this.translationService.translateAsync(value) : value;\n }\n if (\n typeof value === 'object' &&\n !Array.isArray(value) &&\n this.translationService.isValidMultiLanguageObject(value)\n ) {\n return this.translationService.resolve(value as AXPMultiLanguageString);\n }\n return String(value);\n }\n}\n","<div class=\"axp-kpi-segmented\">\n <div class=\"__header\">{{ title() }}</div>\n\n <div class=\"__bar-track\">\n @for (segment of segments(); track trackByLabel($index, segment)) {\n <div\n class=\"__bar-part\"\n [style.width.%]=\"segment.percent\"\n [style.background-color]=\"segment.color\"\n ></div>\n }\n </div>\n\n <div class=\"__legend\">\n @for (segment of segments(); track trackByLabel($index, segment)) {\n <div class=\"__legend-item\">\n <span class=\"__legend-dot\" [style.background-color]=\"segment.color\"></span>\n <span class=\"__legend-value\">{{ segment.value }}</span>\n <span class=\"__legend-label\">{{ segment.label }}</span>\n </div>\n }\n </div>\n</div>\n","import { RootConfig } from '../../../../../const';\nimport { AXPWidgetConfig, AXPWidgetGroupEnum, AXPWidgetsCatalog, cloneProperty } from '@acorex/platform/layout/widget-core';\nimport {\n AXP_APPEARANCE_PROPERTY_GROUP,\n AXP_DATA_PATH_PROPERTY,\n AXP_DATA_SOURCE_OPTIONS_PROPERTY,\n AXP_NAME_PROPERTY,\n} from '@acorex/platform/layout/widgets';\nimport { AXP_WIDGETS_CHART_CATEGORY } from '../../widget-categories.type';\nimport { AXP_DASHBOARD_SHARED_SUB_CHART_KPI } from '../../widget-subcategories.type';\n\nexport const AXPKpiSegmentedWidget: AXPWidgetConfig = {\n name: RootConfig.widgets.kpiSegmented,\n title: '@dashboard:widgets.kpi-segmented.widget-title',\n description: '@dashboard:widgets.kpi-segmented.widget-description',\n categories: [AXP_WIDGETS_CHART_CATEGORY],\n subCategory: AXP_DASHBOARD_SHARED_SUB_CHART_KPI,\n groups: [AXPWidgetGroupEnum.BaseWidget],\n type: 'dashboard',\n icon: 'fa-light fa-chart-simple',\n properties: [\n AXP_DATA_SOURCE_OPTIONS_PROPERTY,\n cloneProperty(AXP_NAME_PROPERTY, { visible: false }),\n cloneProperty(AXP_DATA_PATH_PROPERTY, { visible: false }),\n {\n name: 'title',\n title: '@dashboard:widgets.kpi-segmented.title',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'title',\n path: 'options.title',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n ],\n components: {\n view: {\n component: () => import('./kpi-segmented-widget.component').then((c) => c.AXPKpiSegmentedWidgetViewComponent),\n },\n },\n meta: {\n title: {\n visible: false,\n },\n dimensions: {\n lg: {\n width: 4,\n height: 3,\n minWidth: 3,\n minHeight: 2,\n },\n md: {\n width: 4,\n height: 3,\n minWidth: 3,\n minHeight: 2,\n },\n sm: {\n height: 3,\n minHeight: 2,\n },\n },\n },\n};\n","import { AXDataSource } from '@acorex/cdk/common';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPDataSourceDefinitionProviderService, AXPMultiLanguageString } from '@acorex/platform/core';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal } from '@angular/core';\nimport { AXPDashboardWidgetComponent } from '../../dashboard-widget-base';\nimport { AXPKpiDetailItem, AXPKpiDetailsData } from '../kpi-widget.types';\n\ninterface AXPKpiDetailViewItem {\n label: string;\n value: string;\n color?: string;\n}\n\n@Component({\n templateUrl: './kpi-details-widget.component.html',\n styleUrls: ['./kpi-details-widget.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPKpiDetailsWidgetViewComponent extends AXPDashboardWidgetComponent {\n private readonly dataService = inject(AXPDataSourceDefinitionProviderService);\n private readonly translationService = inject(AXTranslationService);\n\n protected readonly model = signal<AXPKpiDetailsData>({\n title: 'KPI',\n value: 0,\n subtitle: '',\n details: [],\n });\n protected readonly localized = signal({\n title: 'KPI',\n subtitle: '',\n valuePrefix: '',\n valueSuffix: '',\n });\n protected readonly detailItems = signal<AXPKpiDetailViewItem[]>([]);\n\n private readonly dataSource = computed(() => this.options()['dataSource'] as string | undefined);\n protected readonly formattedValue = computed(() => this.formatValue(this.model().value, this.model().format));\n\n private readonly optionsEffect = effect(() => {\n const raw = this.options() as AXPKpiDetailsData;\n this.model.update((current) => ({ ...current, ...raw }));\n });\n\n private readonly localizationEffect = effect(() => {\n const model = this.model();\n void Promise.all([\n this.resolveText(model.title),\n this.resolveText(model.subtitle),\n this.resolveText(model.valuePrefix),\n this.resolveText(model.valueSuffix),\n this.resolveDetails(model.details),\n ]).then(([title, subtitle, valuePrefix, valueSuffix, details]) => {\n this.localized.set({ title, subtitle, valuePrefix, valueSuffix });\n this.detailItems.set(details);\n });\n });\n\n private readonly dataLoadEffect = effect(async () => {\n const ds = this.dataSource();\n if (!ds) {\n return;\n }\n const result = await this.dataService.get(ds);\n if (!result) {\n return;\n }\n const source = result.source() as AXDataSource<unknown>;\n const page = await source.config.load({ take: 1, skip: 0, sort: [] });\n const item = (page.items?.[0] ?? {}) as AXPKpiDetailsData;\n this.model.update((current) => ({ ...current, ...item }));\n });\n\n protected trackByLabel(_: number, item: AXPKpiDetailViewItem): string {\n return item.label;\n }\n\n private async resolveDetails(items: AXPKpiDetailItem[] = []): Promise<AXPKpiDetailViewItem[]> {\n return Promise.all(\n items.map(async (item) => ({\n label: await this.resolveText(item.label),\n value: await this.resolveText(item.value),\n color: item.color,\n })),\n );\n }\n\n private async resolveText(value: unknown): Promise<string> {\n if (value == null) {\n return '';\n }\n if (typeof value === 'string') {\n return value.startsWith('@') ? this.translationService.translateAsync(value) : value;\n }\n if (\n typeof value === 'object' &&\n !Array.isArray(value) &&\n this.translationService.isValidMultiLanguageObject(value)\n ) {\n return this.translationService.resolve(value as AXPMultiLanguageString);\n }\n return String(value);\n }\n\n private formatValue(value: unknown, format?: AXPKpiDetailsData['format']): string {\n if (value == null || value === '') {\n return '';\n }\n if (typeof value !== 'number' || !format?.style) {\n return String(value);\n }\n return new Intl.NumberFormat(undefined, {\n style: format.style,\n currency: format.currency,\n minimumFractionDigits: format.minimumFractionDigits,\n maximumFractionDigits: format.maximumFractionDigits,\n }).format(value);\n }\n}\n","<div class=\"axp-kpi-details\">\n <div class=\"__title\">{{ localized().title }}</div>\n <div class=\"__value\">\n {{ localized().valuePrefix }}{{ formattedValue() }}{{ localized().valueSuffix }}\n </div>\n @if (localized().subtitle) {\n <div class=\"__subtitle\">{{ localized().subtitle }}</div>\n }\n\n <div class=\"__items\">\n @for (item of detailItems(); track trackByLabel($index, item)) {\n <div class=\"__item\">\n <span class=\"__item-label\">{{ item.label }}</span>\n <span class=\"__item-value\" [style.color]=\"item.color || 'rgb(var(--ax-sys-color-on-lightest-surface))'\">{{ item.value }}</span>\n </div>\n }\n </div>\n</div>\n","import { RootConfig } from '../../../../../const';\nimport { AXPWidgetConfig, AXPWidgetGroupEnum, AXPWidgetsCatalog, cloneProperty } from '@acorex/platform/layout/widget-core';\nimport {\n AXP_APPEARANCE_PROPERTY_GROUP,\n AXP_DATA_PATH_PROPERTY,\n AXP_DATA_SOURCE_OPTIONS_PROPERTY,\n AXP_NAME_PROPERTY,\n} from '@acorex/platform/layout/widgets';\nimport { AXP_WIDGETS_CHART_CATEGORY } from '../../widget-categories.type';\nimport { AXP_DASHBOARD_SHARED_SUB_CHART_KPI } from '../../widget-subcategories.type';\n\nexport const AXPKpiDetailsWidget: AXPWidgetConfig = {\n name: RootConfig.widgets.kpiDetails,\n title: '@dashboard:widgets.kpi-details.widget-title',\n description: '@dashboard:widgets.kpi-details.widget-description',\n categories: [AXP_WIDGETS_CHART_CATEGORY],\n subCategory: AXP_DASHBOARD_SHARED_SUB_CHART_KPI,\n groups: [AXPWidgetGroupEnum.BaseWidget],\n type: 'dashboard',\n icon: 'fa-light fa-square-list',\n properties: [\n AXP_DATA_SOURCE_OPTIONS_PROPERTY,\n cloneProperty(AXP_NAME_PROPERTY, { visible: false }),\n cloneProperty(AXP_DATA_PATH_PROPERTY, { visible: false }),\n {\n name: 'title',\n title: '@dashboard:widgets.kpi-details.title',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'title',\n path: 'options.title',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n {\n name: 'value',\n title: '@dashboard:widgets.kpi-details.value',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 0,\n dataType: 'number',\n interface: {\n name: 'value',\n path: 'options.value',\n type: AXPWidgetsCatalog.number,\n },\n },\n visible: true,\n },\n {\n name: 'subtitle',\n title: '@dashboard:widgets.kpi-details.subtitle',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'subtitle',\n path: 'options.subtitle',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n ],\n components: {\n view: {\n component: () => import('./kpi-details-widget.component').then((c) => c.AXPKpiDetailsWidgetViewComponent),\n },\n },\n meta: {\n title: {\n visible: false,\n },\n dimensions: {\n lg: {\n width: 4,\n height: 4,\n minWidth: 3,\n minHeight: 2,\n },\n md: {\n width: 4,\n height: 3,\n minWidth: 3,\n minHeight: 2,\n },\n sm: {\n height: 3,\n minHeight: 2,\n },\n },\n },\n};\n","import { RootConfig } from '../../../../../const';\nimport { AXPWidgetConfig, AXPWidgetGroupEnum, AXPWidgetsCatalog, cloneProperty } from '@acorex/platform/layout/widget-core';\nimport {\n AXP_APPEARANCE_PROPERTY_GROUP,\n AXP_DATA_PATH_PROPERTY,\n AXP_DATA_SOURCE_OPTIONS_PROPERTY,\n AXP_NAME_PROPERTY,\n} from '@acorex/platform/layout/widgets';\nimport { AXP_WIDGETS_CHART_CATEGORY } from '../../widget-categories.type';\nimport { AXP_DASHBOARD_SHARED_SUB_CHART_KPI } from '../../widget-subcategories.type';\n\nconst ICON_TONE_OPTIONS = ['primary', 'secondary', 'success', 'warning', 'info', 'danger'] as const;\nconst TREND_STATUS_OPTIONS = ['success', 'danger', 'neutral'] as const;\nconst TITLE_BADGE_TONE_OPTIONS = ['primary', 'secondary', 'warning', 'info', 'neutral'] as const;\n\nexport const AXPKpiStatCardWidget: AXPWidgetConfig = {\n name: RootConfig.widgets.kpiStatCard,\n title: '@dashboard:widgets.kpi-stat-card.widget-title',\n description: '@dashboard:widgets.kpi-stat-card.widget-description',\n categories: [AXP_WIDGETS_CHART_CATEGORY],\n subCategory: AXP_DASHBOARD_SHARED_SUB_CHART_KPI,\n groups: [AXPWidgetGroupEnum.BaseWidget],\n type: 'dashboard',\n icon: 'fa-light fa-gauge-high',\n properties: [\n AXP_DATA_SOURCE_OPTIONS_PROPERTY,\n cloneProperty(AXP_NAME_PROPERTY, { visible: false }),\n cloneProperty(AXP_DATA_PATH_PROPERTY, { visible: false }),\n {\n name: 'title',\n title: '@dashboard:widgets.kpi-stat-card.title',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'title',\n path: 'options.title',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n {\n name: 'titleBadgeText',\n title: '@dashboard:widgets.kpi-stat-card.title-badge-text',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'titleBadgeText',\n path: 'options.titleBadgeText',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n {\n name: 'titleBadgeTone',\n title: '@dashboard:widgets.kpi-stat-card.title-badge-tone',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 'warning',\n dataType: 'string',\n interface: {\n name: 'titleBadgeTone',\n path: 'options.titleBadgeTone',\n type: AXPWidgetsCatalog.select,\n options: { dataSource: TITLE_BADGE_TONE_OPTIONS },\n },\n },\n visible: true,\n },\n {\n name: 'value',\n title: '@dashboard:widgets.kpi-stat-card.value',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 0,\n dataType: 'number',\n interface: {\n name: 'value',\n path: 'options.value',\n type: AXPWidgetsCatalog.number,\n },\n },\n visible: true,\n },\n {\n name: 'valuePrefix',\n title: '@dashboard:widgets.kpi-stat-card.value-prefix',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'valuePrefix',\n path: 'options.valuePrefix',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n {\n name: 'valueSuffix',\n title: '@dashboard:widgets.kpi-stat-card.value-suffix',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'valueSuffix',\n path: 'options.valueSuffix',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n {\n name: 'trendValue',\n title: '@dashboard:widgets.kpi-stat-card.trend-value',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'trendValue',\n path: 'options.trendValue',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n {\n name: 'trendLabel',\n title: '@dashboard:widgets.kpi-stat-card.trend-label',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'trendLabel',\n path: 'options.trendLabel',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n {\n name: 'trendStatus',\n title: '@dashboard:widgets.kpi-stat-card.trend-status',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 'neutral',\n dataType: 'string',\n interface: {\n name: 'trendStatus',\n path: 'options.trendStatus',\n type: AXPWidgetsCatalog.select,\n options: { dataSource: TREND_STATUS_OPTIONS },\n },\n },\n visible: true,\n },\n {\n name: 'icon',\n title: '@dashboard:widgets.kpi-stat-card.icon',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 'fa-light fa-chart-line',\n dataType: 'string',\n interface: {\n name: 'icon',\n path: 'options.icon',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n {\n name: 'iconTone',\n title: '@dashboard:widgets.kpi-stat-card.icon-tone',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 'primary',\n dataType: 'string',\n interface: {\n name: 'iconTone',\n path: 'options.iconTone',\n type: AXPWidgetsCatalog.select,\n options: { dataSource: ICON_TONE_OPTIONS },\n },\n },\n visible: true,\n },\n ],\n components: {\n view: {\n component: () =>\n import('./kpi-stat-card-widget.component').then((c) => c.AXPKpiStatCardWidgetViewComponent),\n },\n },\n meta: {\n title: { visible: false },\n dimensions: {\n lg: { width: 3, height: 3, minWidth: 2, minHeight: 2 },\n md: { width: 3, height: 3, minWidth: 2, minHeight: 2 },\n sm: { height: 3, minHeight: 2 },\n },\n },\n};\n","//#region ---- Imports ----\n\nimport { AXDataSource } from '@acorex/cdk/common';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPDataSourceDefinitionProviderService, AXPMultiLanguageString } from '@acorex/platform/core';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal } from '@angular/core';\nimport { AXPDashboardWidgetComponent } from '../../dashboard-widget-base';\nimport { AXPKpiIconTone, AXPKpiStatCardData, AXPKpiTitleBadgeTone, AXPKpiTrendStatus } from '../kpi-widget.types';\n\n//#endregion\n\n@Component({\n templateUrl: './kpi-stat-card-widget.component.html',\n styleUrls: ['./kpi-stat-card-widget.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPKpiStatCardWidgetViewComponent extends AXPDashboardWidgetComponent {\n //#region ---- Services & Dependencies ----\n\n private readonly dataService = inject(AXPDataSourceDefinitionProviderService);\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- State ----\n\n protected readonly model = signal<AXPKpiStatCardData>({\n title: 'KPI',\n value: 0,\n trendStatus: 'neutral',\n icon: 'fa-light fa-chart-line',\n iconTone: 'primary',\n });\n\n protected readonly localized = signal({\n title: '',\n valuePrefix: '',\n valueSuffix: '',\n titleBadgeText: '',\n trendValue: '',\n trendLabel: '',\n });\n\n private readonly dataSource = computed(() => this.options()['dataSource'] as string | undefined);\n\n //#endregion\n\n //#region ---- Computed ----\n\n protected readonly formattedValue = computed(() => this.formatValue(this.model().value, this.model().format));\n\n protected readonly iconClass = computed(() => this.model().icon || 'fa-light fa-chart-line');\n\n protected readonly iconHostClasses = computed(() => {\n const tone = (this.model().iconTone ?? 'primary') as AXPKpiIconTone;\n return {\n 'axp-kpi-stat-card__icon-box': true,\n 'axp-kpi-stat-card__icon-box--primary': tone === 'primary',\n 'axp-kpi-stat-card__icon-box--secondary': tone === 'secondary',\n 'axp-kpi-stat-card__icon-box--success': tone === 'success',\n 'axp-kpi-stat-card__icon-box--warning': tone === 'warning',\n 'axp-kpi-stat-card__icon-box--info': tone === 'info',\n 'axp-kpi-stat-card__icon-box--danger': tone === 'danger',\n };\n });\n\n protected readonly titleBadgeClasses = computed(() => {\n const raw = this.model();\n const tone = (raw.titleBadgeTone ?? raw.titleBadge?.tone ?? 'warning') as AXPKpiTitleBadgeTone;\n return {\n 'axp-kpi-stat-card__title-badge': true,\n 'axp-kpi-stat-card__title-badge--primary': tone === 'primary',\n 'axp-kpi-stat-card__title-badge--secondary': tone === 'secondary',\n 'axp-kpi-stat-card__title-badge--warning': tone === 'warning',\n 'axp-kpi-stat-card__title-badge--info': tone === 'info',\n 'axp-kpi-stat-card__title-badge--neutral': tone === 'neutral',\n };\n });\n\n protected readonly trendPillClasses = computed(() => {\n const s = (this.model().trendStatus ?? 'neutral') as AXPKpiTrendStatus;\n return {\n 'axp-kpi-stat-card__trend-pill': true,\n 'axp-kpi-stat-card__trend-pill--success': s === 'success',\n 'axp-kpi-stat-card__trend-pill--danger': s === 'danger',\n 'axp-kpi-stat-card__trend-pill--neutral': s === 'neutral',\n };\n });\n\n //#endregion\n\n //#region ---- Effects ----\n\n private readonly optionsEffect = effect(() => {\n const raw = this.options() as Partial<AXPKpiStatCardData>;\n this.model.update((current) => this.applyPatch(current, raw));\n });\n\n private readonly localizationEffect = effect(() => {\n const m = this.model();\n const badgeFromNested = m.titleBadge?.text;\n const badgeFlat = m.titleBadgeText;\n const badgeText = badgeFromNested ?? badgeFlat;\n\n void Promise.all([\n this.resolveText(m.title),\n this.resolveText(m.valuePrefix),\n this.resolveText(m.valueSuffix),\n this.resolveText(badgeText),\n this.resolveText(m.trendValue),\n this.resolveText(m.trendLabel),\n ]).then(([title, valuePrefix, valueSuffix, titleBadgeText, trendValue, trendLabel]) => {\n this.localized.set({ title, valuePrefix, valueSuffix, titleBadgeText, trendValue, trendLabel });\n });\n });\n\n private readonly dataLoadEffect = effect(async () => {\n const ds = this.dataSource();\n if (!ds) {\n return;\n }\n const result = await this.dataService.get(ds);\n if (!result) {\n return;\n }\n const source = result.source() as AXDataSource<unknown>;\n const page = await source.config.load({ take: 1, skip: 0, sort: [] });\n const item = (page.items?.[0] ?? {}) as Partial<AXPKpiStatCardData>;\n this.model.update((current) => this.applyPatch(current, item));\n });\n\n //#endregion\n\n //#region ---- Helpers ----\n\n private applyPatch(current: AXPKpiStatCardData, raw: Partial<AXPKpiStatCardData>): AXPKpiStatCardData {\n const next: AXPKpiStatCardData = { ...current, ...raw };\n if (raw.titleBadge && typeof raw.titleBadge === 'object') {\n next.titleBadgeText = raw.titleBadge.text;\n if (raw.titleBadge.tone != null) {\n next.titleBadgeTone = raw.titleBadge.tone;\n }\n }\n if (next.trendStatus == null) {\n next.trendStatus = 'neutral';\n }\n if (next.iconTone == null) {\n next.iconTone = 'primary';\n }\n if (!next.icon) {\n next.icon = 'fa-light fa-chart-line';\n }\n return next;\n }\n\n private async resolveText(value: unknown): Promise<string> {\n if (value == null) {\n return '';\n }\n if (typeof value === 'string') {\n return value.startsWith('@') ? this.translationService.translateAsync(value) : value;\n }\n if (\n typeof value === 'object' &&\n !Array.isArray(value) &&\n this.translationService.isValidMultiLanguageObject(value)\n ) {\n return this.translationService.resolve(value as AXPMultiLanguageString);\n }\n return String(value);\n }\n\n private formatValue(value: unknown, format?: AXPKpiStatCardData['format']): string {\n if (value == null || value === '') {\n return '';\n }\n if (typeof value === 'string') {\n return value;\n }\n if (typeof value !== 'number' || !format?.style) {\n return String(value);\n }\n return new Intl.NumberFormat(undefined, {\n style: format.style,\n currency: format.currency,\n minimumFractionDigits: format.minimumFractionDigits,\n maximumFractionDigits: format.maximumFractionDigits,\n }).format(value);\n }\n\n //#endregion\n}\n","<div class=\"axp-kpi-stat-card\">\n <div class=\"axp-kpi-stat-card__content\">\n <div class=\"axp-kpi-stat-card__head\">\n <div class=\"axp-kpi-stat-card__title-row\">\n <span class=\"axp-kpi-stat-card__title\">{{ localized().title }}</span>\n @if (localized().titleBadgeText) {\n <span [class]=\"titleBadgeClasses()\">\n {{ localized().titleBadgeText }}\n </span>\n }\n </div>\n <div [class]=\"iconHostClasses()\" role=\"img\" [attr.aria-label]=\"localized().title\">\n <i [class]=\"iconClass()\" aria-hidden=\"true\"></i>\n </div>\n </div>\n\n <div class=\"axp-kpi-stat-card__value\">\n {{ localized().valuePrefix }}{{ formattedValue() }}{{ localized().valueSuffix }}\n </div>\n\n @if (localized().trendValue || localized().trendLabel) {\n <div class=\"axp-kpi-stat-card__trend\">\n <p class=\"axp-kpi-stat-card__trend-line\">\n @if (localized().trendValue) {\n <span [class]=\"trendPillClasses()\">\n {{ localized().trendValue }}\n </span>\n }\n @if (localized().trendLabel) {\n <span class=\"axp-kpi-stat-card__trend-label\">{{ localized().trendLabel }}</span>\n }\n </p>\n </div>\n }\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n/**\n * Weather location information\n */\nexport interface AXPWeatherLocation {\n /** City name */\n city: string;\n /** Country name */\n country: string;\n /** Formatted location display name */\n displayName: string;\n}\n\n/**\n * Weather current condition information\n */\nexport interface AXPWeatherCondition {\n /** Condition text */\n condition: string;\n /** Condition code */\n conditionCode: number;\n /** Icon URL */\n iconUrl: string;\n /** Temperature in Celsius */\n tempC: number;\n /** Temperature in Fahrenheit */\n tempF: number;\n /** Feels like temperature in Celsius */\n feelsLikeC: number;\n /** Feels like temperature in Fahrenheit */\n feelsLikeF: number;\n /** Humidity percentage */\n humidity: number;\n /** Wind speed in km/h */\n windKph: number;\n /** Wind speed in mph */\n windMph: number;\n /** Wind direction */\n windDirection: string;\n /** UV index */\n uv: number;\n /** Last updated timestamp */\n lastUpdated: string;\n}\n\n/**\n * Weather forecast data for a single day\n */\nexport interface AXPWeatherForecastDay {\n /** Date string */\n date: string;\n /** Day name (e.g., \"Mon\", \"Tue\") */\n day: string;\n /** Weather condition code */\n condition: string;\n /** Weather icon URL */\n iconUrl: string;\n /** Max temperature in Celsius */\n maxTempC: number;\n /** Max temperature in Fahrenheit */\n maxTempF: number;\n /** Min temperature in Celsius */\n minTempC: number;\n /** Min temperature in Fahrenheit */\n minTempF: number;\n /** Hourly forecast data */\n hour: AXPWeatherHour[];\n}\n\n/**\n * Weather hourly forecast data\n */\nexport interface AXPWeatherHour {\n /** Time string */\n time: string;\n /** Weather condition code */\n condition: string;\n /** Weather icon URL */\n iconUrl: string;\n /** Hourly temperature in Celsius */\n tempC: number;\n /** Hourly temperature in Fahrenheit */\n tempF: number;\n}\n\n/**\n * Complete weather data response\n */\nexport interface AXPWeatherData {\n /** Location information */\n location: AXPWeatherLocation;\n /** Current weather data */\n current: AXPWeatherCondition;\n /** Forecast data */\n forecast: AXPWeatherForecastDay[];\n}\n\n/**\n * Weather API request options\n */\nexport interface AXPWeatherRequestOptions {\n /** Temperature unit */\n tempUnit?: string;\n /** Location query */\n location?: string;\n /** Use mock data */\n useMockData?: boolean;\n}\n\n/**\n * Weather UI condition display info\n */\nexport interface AXPWeatherConditionDisplay {\n /** Condition unique ID */\n id: string;\n /** Display name */\n name: string;\n /** Icon class (Font Awesome) */\n icon: string;\n /** SVG icon name */\n svgIcon: string;\n /** Associated color */\n color: string;\n}\n\n/**\n * Abstract Weather API Service\n * Base class that defines the interface and common functionality\n * for weather data providers\n */\n@Injectable()\nexport abstract class AXPWeatherApiAbstract {\n /** Weather condition definitions mapping */\n protected weatherConditions: Record<string, AXPWeatherConditionDisplay> = {\n sunny: {\n id: 'sunny',\n name: 'Sunny',\n icon: 'fa-solid fa-sun',\n svgIcon: 'day.svg',\n color: '#ff9d00',\n },\n clearNight: {\n id: 'clearNight',\n name: 'Clear Night',\n icon: 'fa-solid fa-moon',\n svgIcon: 'night.svg',\n color: '#5d639e',\n },\n partlyCloudy: {\n id: 'partlyCloudy',\n name: 'Partly Cloudy',\n icon: 'fa-solid fa-cloud-sun',\n svgIcon: 'cloudy-day-3.svg',\n color: '#6ba4e8',\n },\n partlyCloudyNight: {\n id: 'partlyCloudyNight',\n name: 'Partly Cloudy Night',\n icon: 'fa-solid fa-cloud-moon',\n svgIcon: 'cloudy-night-3.svg',\n color: '#5d639e',\n },\n cloudy: {\n id: 'cloudy',\n name: 'Cloudy',\n icon: 'fa-solid fa-cloud',\n svgIcon: 'cloudy.svg',\n color: '#72869d',\n },\n rain: {\n id: 'rain',\n name: 'Rain',\n icon: 'fa-solid fa-cloud-rain',\n svgIcon: 'rainy-6.svg',\n color: '#3a74ad',\n },\n showers: {\n id: 'showers',\n name: 'Showers',\n icon: 'fa-solid fa-cloud-showers-heavy',\n svgIcon: 'rainy-7.svg',\n color: '#2c5d8c',\n },\n thunderstorm: {\n id: 'thunderstorm',\n name: 'Thunderstorm',\n icon: 'fa-solid fa-bolt-lightning',\n svgIcon: 'thunder.svg',\n color: '#8834af',\n },\n snow: {\n id: 'snow',\n name: 'Snow',\n icon: 'fa-solid fa-snowflake',\n svgIcon: 'snowy-6.svg',\n color: '#68a9cd',\n },\n mist: {\n id: 'mist',\n name: 'Mist',\n icon: 'fa-solid fa-smog',\n svgIcon: 'cloudy.svg',\n color: '#94a3b8',\n },\n };\n\n /** Day of week mapping */\n protected readonly dayNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n\n /**\n * Get weather condition info by ID\n * @param id Condition ID\n * @returns Weather condition info or default if not found\n */\n public getCondition(id: string): AXPWeatherConditionDisplay {\n // Normalize condition ID by removing spaces and converting to lowercase\n const normalizedId = id.toLowerCase().replace(/\\s+/g, '');\n\n // Direct match first\n if (this.weatherConditions[normalizedId]) {\n return this.weatherConditions[normalizedId];\n }\n\n // Check for partial matches or common variants\n if (normalizedId.includes('partly') && normalizedId.includes('cloud')) {\n return this.weatherConditions['partlyCloudy'];\n }\n\n if (normalizedId.includes('cloud')) {\n return this.weatherConditions['cloudy'];\n }\n\n if (normalizedId.includes('sun')) {\n return this.weatherConditions['sunny'];\n }\n\n if (normalizedId.includes('rain')) {\n return this.weatherConditions['rain'];\n }\n\n if (normalizedId.includes('snow')) {\n return this.weatherConditions['snow'];\n }\n\n // If no match found, return default unknown condition\n return {\n id: 'unknown',\n name: 'Unknown',\n icon: 'fa-solid fa-question',\n svgIcon: 'weather.svg',\n color: '#999999',\n };\n }\n\n /**\n * Get current weather data for given location\n * @param options Weather request options\n * @returns Observable with weather data\n */\n abstract getWeather(options: AXPWeatherRequestOptions): Observable<AXPWeatherData>;\n\n /**\n * Get weather forecast for a location\n * @param options Weather request options with days\n * @returns Observable of weather data with forecast\n */\n abstract getForecast(options: AXPWeatherRequestOptions & { days?: number }): Observable<AXPWeatherData>;\n\n /**\n * Parse location string into city and display components\n * @param location Location query string\n * @returns Parsed location parts\n */\n protected parseLocation(location: string): { city: string; country: string; display: string } {\n if (!location || location.trim() === '') {\n return { city: 'New York', country: 'USA', display: 'New York' };\n }\n\n const city = location.trim();\n return { city, country: '', display: city };\n }\n\n /**\n * Format location name for display\n * @param locationParts Parsed location parts\n * @returns Formatted location name\n */\n protected formatLocationName(locationParts: { city: string; country: string; display: string }): string {\n return locationParts.city || 'Unknown Location';\n }\n\n /**\n * Map API condition text to our internal condition IDs\n * @param conditionText Condition text from API\n * @returns Internal condition ID\n */\n protected mapApiConditionToId(conditionText: string): string {\n const text = conditionText.toLowerCase();\n\n // Match WeatherAPI.com condition text\n // Reference: https://www.weatherapi.com/docs/#weather-icons\n\n if (text.includes('sunny') || text.includes('clear')) {\n return 'sunny';\n }\n\n if (text === 'partly cloudy') {\n return 'partlyCloudy';\n }\n\n if (text.includes('cloudy') || text.includes('overcast')) {\n return 'cloudy';\n }\n\n if (text.includes('rain') || text.includes('drizzle') || text.includes('shower')) {\n return 'rain';\n }\n\n if (text.includes('thunder') || text.includes('lightning')) {\n return 'thunderstorm';\n }\n\n if (text.includes('snow') || text.includes('sleet') || text.includes('blizzard')) {\n return 'snow';\n }\n\n if (text.includes('mist') || text.includes('fog')) {\n return 'mist';\n }\n\n // Default to partly cloudy if we don't have a specific mapping\n return 'partlyCloudy';\n }\n\n /**\n * Generate random integer between min and max (inclusive)\n * Helper method for implementations\n * @param min Minimum value\n * @param max Maximum value\n * @returns Random integer\n */\n protected getRandomInt(min: number, max: number): number {\n return Math.floor(Math.random() * (max - min + 1)) + min;\n }\n\n /**\n * Set the API key for the weather service\n * This is only used by the real API implementation,\n * but is defined in the abstract class for consistency\n * @param key The API key\n */\n abstract setApiKey(key: string): void;\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, catchError, map, throwError } from 'rxjs';\nimport { AXPWeatherApiAbstract, AXPWeatherData, AXPWeatherRequestOptions } from './weather-api.abstract';\n\n/**\n * Mock Weather API Service\n * Provides simulated weather data for development and testing\n */\n@Injectable()\nexport class AXPWeatherApiMockService extends AXPWeatherApiAbstract {\n // Mock configuration\n private readonly mockDelay = 500;\n\n /**\n * Get current weather data for given location\n * @param options Weather request options\n * @returns Observable with weather data\n */\n override getWeather(options: AXPWeatherRequestOptions): Observable<AXPWeatherData> {\n const locationParts = this.parseLocation(options.location || '');\n const displayName = this.formatLocationName(locationParts);\n\n return this.getMockWeatherData(locationParts.city, options).pipe(\n map((mockData) => ({\n ...mockData,\n location: {\n city: locationParts.city,\n country: '',\n displayName: displayName,\n },\n })),\n );\n }\n\n /**\n * Get weather forecast for a location\n * @param options Weather request options with days\n * @returns Observable of weather data with forecast\n */\n override getForecast(options: AXPWeatherRequestOptions & { days?: number }): Observable<AXPWeatherData> {\n const days = options.days || 5;\n return this.getMockForecast(options.location || '', days, options);\n }\n\n /**\n * Get mock weather data for demo/development\n * @param location Location query\n * @param options Request options\n * @returns Observable of mock weather data\n */\n private getMockWeatherData(location: string, options?: AXPWeatherRequestOptions): Observable<AXPWeatherData> {\n return new Observable<AXPWeatherData>((observer) => {\n setTimeout(() => {\n try {\n const locationParts = this.parseLocation(location);\n const tempUnit = options?.tempUnit || '°C';\n const isCelsius = tempUnit === '°C';\n\n // Generate more realistic weather data based on location and current date\n const now = new Date();\n const month = now.getMonth(); // 0-11\n\n // Seasonally appropriate temperature range\n let minRange = 15;\n let maxRange = 25;\n\n // Northern hemisphere seasonal adjustments\n if (month >= 11 || month <= 1) {\n // Winter\n minRange = -5;\n maxRange = 10;\n } else if (month >= 2 && month <= 4) {\n // Spring\n minRange = 10;\n maxRange = 20;\n } else if (month >= 5 && month <= 7) {\n // Summer\n minRange = 20;\n maxRange = 35;\n } else if (month >= 8 && month <= 10) {\n // Fall/Autumn\n minRange = 10;\n maxRange = 25;\n }\n\n // Generate current temperature - more likely to be in the middle of the range\n const tempC = Math.round(minRange + (this.getRandomInt(4, 8) / 10) * (maxRange - minRange));\n const tempF = Math.round((tempC * 9) / 5 + 32);\n\n const humidity = this.getRandomInt(30, 90);\n const windKph = this.getRandomInt(5, 30);\n const windMph = Math.round(windKph * 0.621371);\n\n // Temperature-based conditions with randomization\n let conditionId = 'partlyCloudy';\n if (tempC > 25) conditionId = 'sunny';\n else if (tempC < 10) conditionId = 'cloudy';\n if (this.getRandomInt(1, 10) > 7) conditionId = 'rain';\n\n observer.next({\n location: {\n city: locationParts.city,\n country: '',\n displayName: this.formatLocationName(locationParts),\n },\n current: {\n condition: conditionId,\n conditionCode: 0,\n iconUrl: '', // Would be set from API\n tempC: tempC,\n tempF: tempF,\n feelsLikeC: tempC + this.getRandomInt(-3, 2),\n feelsLikeF: tempF + this.getRandomInt(-5, 3),\n humidity: humidity,\n windKph: windKph,\n windMph: windMph,\n windDirection: ['N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW'][this.getRandomInt(0, 7)],\n uv: this.getRandomInt(0, 10),\n lastUpdated: new Date().toISOString(),\n },\n forecast: [],\n });\n\n observer.complete();\n } catch (error) {\n observer.error(error);\n }\n }, this.mockDelay);\n }).pipe(catchError((error) => throwError(() => new Error(`Failed to get weather data: ${error.message}`))));\n }\n\n /**\n * Get mock forecast data for demo/development\n * @param location Location query\n * @param days Number of forecast days\n * @param options Request options\n * @returns Observable of mock weather data with forecast\n */\n private getMockForecast(\n location: string,\n days: number = 5,\n options?: AXPWeatherRequestOptions,\n ): Observable<AXPWeatherData> {\n return this.getMockWeatherData(location, options).pipe(\n map((data) => {\n const currentCondition = data.current.condition;\n const currentTemp = data.current.tempC;\n\n // Use the current weather as a base for the forecast trend\n const forecast = Array.from({ length: days }, (_, i) => {\n // Create forecast date for each day (starting from tomorrow)\n const forecastDate = new Date();\n forecastDate.setDate(new Date().getDate() + i + 1);\n\n const dateStr = forecastDate.toISOString().split('T')[0];\n const dayName = this.dayNames[forecastDate.getDay()];\n\n // Generate condition with some continuity from current weather\n // Weather tends to be similar for a few days with gradual changes\n let conditionId: string;\n\n if (i === 0) {\n // Tomorrow's weather has 60% chance of being similar to today\n conditionId =\n this.getRandomInt(1, 10) <= 6\n ? currentCondition\n : ['sunny', 'partlyCloudy', 'cloudy', 'rain', 'snow'][this.getRandomInt(0, 4)];\n } else {\n // Subsequent days have 70% chance of being similar to previous day\n const previousCondition = forecast[i - 1]?.condition || currentCondition;\n conditionId =\n this.getRandomInt(1, 10) <= 7\n ? previousCondition\n : ['sunny', 'partlyCloudy', 'cloudy', 'rain', 'snow'][this.getRandomInt(0, 4)];\n }\n\n // Generate temperatures with realistic variance\n // Max is typically higher than current temperature\n // Min is typically lower than current temperature\n const tempVariance = this.getRandomInt(-3, 3); // Small day-to-day change\n const baseMaxC = currentTemp + this.getRandomInt(0, 5); // Max is higher than current\n const maxTempC = baseMaxC + tempVariance;\n const minTempC = maxTempC - this.getRandomInt(5, 10); // Min is lower than max\n\n const maxTempF = Math.round((maxTempC * 9) / 5 + 32);\n const minTempF = Math.round((minTempC * 9) / 5 + 32);\n\n return {\n date: dateStr,\n day: dayName,\n condition: conditionId,\n iconUrl: '', // Would be set from API\n maxTempC,\n maxTempF,\n minTempC,\n minTempF,\n hour: [],\n };\n });\n\n return { ...data, forecast };\n }),\n );\n }\n\n /**\n * Set the API key for the weather service\n * No-op in the mock implementation\n * @param key The API key\n */\n override setApiKey(key: string): void {\n // No-op for mock service\n console.log('API key setting is ignored in mock weather service');\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const AXP_WEATHER_API_KEY = new InjectionToken<string>('AXP_WEATHER_API_KEY', {\n providedIn: 'root',\n factory: () => {\n return '40281dc1e31749edb6c104828250604';\n },\n});\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Observable, catchError, map, throwError } from 'rxjs';\nimport { AXPWeatherApiAbstract, AXPWeatherData, AXPWeatherRequestOptions } from './weather-api.abstract';\nimport { AXP_WEATHER_API_KEY } from './weather-api.key';\n\n/**\n * Real Weather API Service\n * Fetches actual weather data from a weather API service\n */\n@Injectable()\nexport class AXPWeatherApiService extends AXPWeatherApiAbstract {\n private readonly http = inject(HttpClient);\n\n // API configuration\n private readonly baseApiUrl = 'https://api.weatherapi.com/v1';\n private apiKeyToken = inject(AXP_WEATHER_API_KEY, { optional: true });\n\n /**\n * Set the API key for the weather service\n * @param key The API key\n */\n setApiKey(key: string): void {\n if (key && key.trim() !== '') {\n this.apiKeyToken = key;\n }\n }\n\n /**\n * Get current weather data for given location\n * @param options Weather request options\n * @returns Observable with weather data\n */\n override getWeather(options: AXPWeatherRequestOptions): Observable<AXPWeatherData> {\n // If forecast is likely needed, we should fetch it all at once\n if (options.useMockData === false || options.useMockData === undefined) {\n // For real API, use the forecast endpoint which includes current data\n return this.getForecast({\n ...options,\n days: 1, // Request minimal forecast data\n });\n }\n\n // For mock data, we'll continue using separate calls for backward compatibility\n const locationParts = this.parseLocation(options.location || '');\n const displayName = this.formatLocationName(locationParts);\n\n // Use real API with query based on city only\n const query = encodeURIComponent(locationParts.city);\n const url = `${this.baseApiUrl}/current.json?key=${this.apiKeyToken}&q=${query}&aqi=no`;\n\n return this.http.get<any>(url).pipe(\n map((data) => this.transformApiResponse(data, displayName)),\n catchError((error) => {\n console.error('Weather API error:', error);\n // Check for location not found error\n if (error.error?.error?.code === 1006) {\n return throwError(\n () => new Error(`Location \"${locationParts.city}\" not found. Please check the city name and try again.`),\n );\n }\n return throwError(() => new Error(`Failed to fetch weather data: ${error.message}`));\n }),\n );\n }\n\n /**\n * Get weather forecast for a location\n * @param options Weather request options with days\n * @returns Observable of weather data with forecast\n */\n override getForecast(options: AXPWeatherRequestOptions & { days?: number }): Observable<AXPWeatherData> {\n const locationParts = this.parseLocation(options.location || '');\n const displayName = this.formatLocationName(locationParts);\n const days = options.days || 5;\n\n // Build forecast API URL\n const query = encodeURIComponent(locationParts.city);\n const url = `${this.baseApiUrl}/forecast.json?key=${this.apiKeyToken}&q=${query}&days=${days}&aqi=no`;\n\n return this.http.get<any>(url).pipe(\n map((data) => this.transformForecastResponse(data, displayName, days)),\n catchError((error) => {\n console.error('Weather API error:', error);\n // Check for location not found error\n if (error.error?.error?.code === 1006) {\n return throwError(\n () => new Error(`Location \"${locationParts.city}\" not found. Please check the city name and try again.`),\n );\n }\n return throwError(() => new Error(`Failed to fetch forecast data: ${error.message}`));\n }),\n );\n }\n\n /**\n * Transform API response to our internal data model\n * @param apiData Raw API response\n * @param displayName Formatted location name\n * @returns Normalized weather data\n */\n private transformApiResponse(apiData: any, displayName: string): AXPWeatherData {\n // Map API condition text to our condition IDs\n const conditionText = apiData.current?.condition?.text || '';\n const conditionId = this.mapApiConditionToId(conditionText);\n\n return {\n location: {\n city: apiData.location?.name || '',\n country: apiData.location?.country || '',\n displayName: displayName,\n },\n current: {\n condition: conditionId, // Use our mapped condition ID\n conditionCode: apiData.current?.condition?.code || 0,\n iconUrl: apiData.current?.condition?.icon || '',\n tempC: apiData.current?.temp_c || 0,\n tempF: apiData.current?.temp_f || 0,\n feelsLikeC: apiData.current?.feelslike_c || 0,\n feelsLikeF: apiData.current?.feelslike_f || 0,\n humidity: apiData.current?.humidity || 0,\n windKph: apiData.current?.wind_kph || 0,\n windMph: apiData.current?.wind_mph || 0,\n windDirection: apiData.current?.wind_dir || '',\n uv: apiData.current?.uv || 0,\n lastUpdated: apiData.current?.last_updated || new Date().toISOString(),\n },\n forecast: [],\n };\n }\n\n /**\n * Transform forecast API response to our internal data model\n * @param apiData Raw API response with forecast\n * @param displayName Formatted location name\n * @param days Number of forecast days\n * @returns Normalized weather data with forecast\n */\n private transformForecastResponse(apiData: any, displayName: string, days: number): AXPWeatherData {\n // First transform the current weather data using the current field of the forecast response\n const weatherData = this.transformApiResponse(apiData, displayName);\n\n // Then add the forecast data\n const forecastDays = apiData.forecast?.forecastday || [];\n weatherData.forecast = forecastDays.slice(0, days).map((day: any) => {\n // Parse the date for day name\n const date = new Date(day.date);\n const dayName = date.toLocaleDateString('en-US', { weekday: 'short' });\n\n // Map condition to our internal ID\n const conditionText = day.day?.condition?.text || '';\n const conditionId = this.mapApiConditionToId(conditionText);\n\n return {\n date: day.date,\n day: dayName,\n condition: conditionId,\n iconUrl: day.day?.condition?.icon || '',\n maxTempC: day.day?.maxtemp_c || 0,\n maxTempF: day.day?.maxtemp_f || 0,\n minTempC: day.day?.mintemp_c || 0,\n minTempF: day.day?.mintemp_f || 0,\n hour: day.hour.map((hour: any) => ({\n time: hour.time,\n condition: hour.condition.code,\n iconUrl: hour.condition.icon,\n tempC: hour.temp_c,\n tempF: hour.temp_f,\n })),\n };\n });\n\n return weatherData;\n }\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXTooltipModule } from '@acorex/components/tooltip';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal } from '@angular/core';\nimport { catchError, finalize, of } from 'rxjs';\nimport { AXPWeatherApiAbstract, AXPWeatherApiService, AXPWeatherData, AXPWeatherHour } from '../weather-services';\n\n@Component({\n template: `\n <div class=\"ax-size-full ax-p-6\">\n @if (weatherData() && !isLoading() && !hasError()) {\n <div class=\"ax-flex ax-h-full ax-flex-col ax-gap-4 ax-justify-around\">\n <div class=\"ax-flex ax-items-center ax-justify-between ax-w-full ax-gap-1 ax-flex-wrap\">\n <div class=\"ax-flex ax-items-center ax-gap-2 ax-shrink-0\">\n <img\n [src]=\"getConditionIcon(weatherData()!.current.condition)\"\n class=\"ax-size-32 ax-object-cover -ax-m-8\"\n [alt]=\"getConditionName(weatherData()!.current.condition)\"\n loading=\"lazy\"\n />\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-items-start\">\n <span class=\"ax-text-lg ax-font-medium ax-opacity-85\">{{\n getConditionName(weatherData()!.current.condition)\n }}</span>\n <span class=\"ax-text-5xl\" style=\"text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3)\"\n >{{ getCurrentTemperature() | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span\n >\n </div>\n </div>\n <div class=\"ax-flex ax-flex-col ax-items-center ax-gap-2\">\n <span class=\"ax-text-2xl ax-font-bold ax-capitalize\">{{ city() }}</span>\n <div class=\"ax-flex ax-gap-4 ax-font-semibold ax-opacity-85\">\n <span\n >H: {{ getMaxTemp() | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span\n >\n <span\n >L: {{ getMinTemp() | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span\n >\n </div>\n </div>\n </div>\n\n <div\n class=\"ax-flex ax-w-full ax-gap-1 ax-items-center ax-justify-around ax-shrink-0\"\n [class]=\"displayedHourlyForecast().length > 5 ? 'ax-overflow-x-auto' : 'ax-overflow-x-visible'\"\n >\n @for (hour of displayedHourlyForecast(); track hour.time) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-p-2 ax-cursor-default ax-min-w-16 ax-gap-2\">\n <span class=\"ax-text-sm ax-font-medium ax-opacity-85\">{{ getHourLabel(hour.time) }}</span>\n <img\n [src]=\"getConditionIcon(weatherData()!.forecast[0].condition)\"\n class=\"ax-size-16 ax-object-cover -ax-m-4\"\n [alt]=\"getConditionName(weatherData()!.forecast[0].condition)\"\n />\n <span class=\"ax-text-lg ax-font-semibold\"\n >{{ getHourTemp(hour) | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span\n >\n </div>\n }\n </div>\n\n <div class=\"ax-mt-2 ax-w-full\">\n <div\n class=\"ax-grid ax-grid-cols-[1fr_auto_auto_auto] ax-gap-x-4 ax-gap-y-2 ax-items-center ax-justify-items-start\"\n >\n @for (day of displayedForecast(); track day.date) {\n <span class=\"ax-font-medium\">{{ getDayName(parseDate(day.date)) }}</span>\n <div class=\"ax-flex ax-items-center ax-justify-center\">\n <img\n [src]=\"getConditionIcon(day.condition)\"\n class=\"ax-w-8 ax-h-8 ax-scale-[2]\"\n [alt]=\"getConditionName(day.condition)\"\n />\n </div>\n <span class=\"ax-font-semibold\"\n >{{ getForecastDayTemp(day) | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span\n >\n <span class=\"ax-opacity-85\"\n >{{ day.minTempC | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span\n >\n } @empty {\n <span class=\"ax-opacity-85\">No forecast data available</span>\n }\n </div>\n </div>\n </div>\n } @else {\n <div class=\"ax-flex ax-size-full ax-flex-col ax-gap-6\" [attr.aria-busy]=\"isLoading()\">\n @if (isLoading()) {\n <!-- Current weather skeleton -->\n <div class=\"ax-flex ax-items-start ax-justify-around ax-w-full ax-gap-4\">\n <div class=\"ax-flex ax-items-center ax-gap-4\">\n <ax-skeleton class=\"ax-w-20 ax-h-20 ax-rounded-full\"></ax-skeleton>\n <div class=\"ax-flex ax-flex-col ax-gap-2\">\n <ax-skeleton class=\"ax-w-24 ax-h-6 ax-rounded\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-32 ax-h-12 ax-rounded\"></ax-skeleton>\n </div>\n </div>\n <div class=\"ax-flex ax-flex-col ax-items-end ax-gap-2\">\n <ax-skeleton class=\"ax-w-28 ax-h-8 ax-rounded\"></ax-skeleton>\n <div class=\"ax-flex ax-gap-2\">\n <ax-skeleton class=\"ax-w-12 ax-h-6 ax-rounded\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-12 ax-h-6 ax-rounded\"></ax-skeleton>\n </div>\n </div>\n </div>\n\n <!-- Hourly forecast skeleton -->\n <div class=\"ax-flex ax-w-full ax-gap-2 ax-items-center ax-justify-around\">\n @for (i of [1, 2, 3, 4, 5]; track i) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-gap-2 ax-min-w-16\">\n <ax-skeleton class=\"ax-w-12 ax-h-4 ax-rounded\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-10 ax-h-10 ax-rounded-full ax-my-1\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-10 ax-h-6 ax-rounded\"></ax-skeleton>\n </div>\n }\n </div>\n\n <!-- Daily forecast skeleton -->\n <div class=\"ax-mt-2 ax-w-full\">\n <div class=\"ax-grid ax-grid-cols-[1fr_auto_auto_auto] ax-gap-x-4 ax-gap-y-4 ax-items-center\">\n @for (i of [1, 2]; track i) {\n <ax-skeleton class=\"ax-w-20 ax-h-6 ax-rounded\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-8 ax-h-8 ax-rounded-full\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-10 ax-h-6 ax-rounded\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-10 ax-h-6 ax-rounded\"></ax-skeleton>\n }\n </div>\n </div>\n } @else if (hasError()) {\n <!-- No data state (not loading, no error) -->\n <div class=\"axp-weather-no-data-state\">\n <i class=\"fa-solid fa-cloud-sun\"></i>\n <p>{{ 'weather.no-data.title' | translate: { scope: 'dashboard' } | async }}</p>\n <ax-button\n [look]=\"'outline'\"\n [color]=\"'secondary'\"\n [text]=\"'widgets.weather.refresh-weather' | translate: { scope: 'dashboard' } | async\"\n (onClick)=\"loadWeatherData()\"\n ></ax-button>\n </div>\n }\n </div>\n }\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n @apply ax-size-full;\n }\n\n .ax-opacity-85 {\n color: gray;\n }\n\n .axp-weather-no-data-state {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n height: 100%;\n padding: 2rem;\n text-align: center;\n\n i {\n font-size: 3rem;\n margin-bottom: 1rem;\n }\n\n p {\n margin-bottom: 1.5rem;\n font-size: 1.1rem;\n }\n }\n\n sup {\n @apply ax-font-light;\n position: relative;\n top: -0.3em;\n font-size: 0.6em;\n margin-left: 0.1em;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXDecoratorModule, AXTooltipModule, AXSkeletonModule, AXTranslationModule, AXButtonModule],\n providers: [\n {\n provide: AXPWeatherApiAbstract,\n useClass: AXPWeatherApiService,\n },\n ],\n})\nexport class AXMAdvancedWeatherViewComponent extends AXPValueWidgetComponent {\n private weatherService = inject(AXPWeatherApiAbstract);\n protected weatherData = signal<AXPWeatherData | null>(null);\n\n protected isLoading = signal(true);\n protected hasError = signal(false);\n protected errorMessage = signal('');\n\n protected city = computed(() => this.options()['city'] || 'New York');\n protected temperatureUnit = computed(() => this.options()['temperatureUnit']?.id || '°C');\n protected forecastDays = computed(() => (this.options()['forecastDays'] ?? 2) + 1);\n protected forecastHours = computed(() => this.options()['forecastHours'] ?? 5);\n\n private iconCache = new Map<string, string>();\n\n constructor() {\n super();\n effect(() => {\n if (this.options()) {\n this.loadWeatherData();\n }\n });\n }\n\n protected loadWeatherData(): void {\n if (!this.city()) {\n this.isLoading.set(false);\n return;\n }\n\n this.isLoading.set(true);\n this.hasError.set(false);\n this.errorMessage.set('');\n\n const requestOptions = {\n location: this.city(),\n tempUnit: this.temperatureUnit(),\n days: this.forecastDays(),\n };\n\n this.weatherService\n .getForecast(requestOptions)\n .pipe(\n catchError((error) => {\n this.handleError(error);\n return of(null);\n }),\n finalize(() => this.isLoading.set(false)),\n )\n .subscribe((data) => {\n if (data) {\n this.weatherData.set(data);\n }\n });\n }\n\n private handleError(error: any): void {\n console.error('Advanced weather widget error:', error);\n this.hasError.set(true);\n this.errorMessage.set(error.message || 'Failed to load weather data');\n }\n\n protected getConditionIcon(conditionId: string): string {\n if (!conditionId) {\n return '';\n }\n if (this.iconCache.has(conditionId)) {\n return this.iconCache.get(conditionId)!;\n }\n\n const svgIcon = this.weatherService.getCondition(conditionId).svgIcon;\n const iconPath = `assets/images/weather/${svgIcon}`;\n this.iconCache.set(conditionId, iconPath);\n return iconPath;\n }\n\n protected getConditionName(conditionId: string): string {\n if (!conditionId) {\n return 'Unknown';\n }\n const condition = this.weatherService.getCondition(conditionId);\n return condition?.name || 'Unknown';\n }\n\n protected getCurrentTemperature(): number {\n if (!this.weatherData()) return 0;\n return this.temperatureUnit() === '°C' ? this.weatherData()!.current.tempC : this.weatherData()!.current.tempF;\n }\n\n protected getMaxTemp(): number {\n if (!this.weatherData()?.forecast?.[0]) return 0;\n return this.temperatureUnit() === '°C'\n ? this.weatherData()!.forecast[0].maxTempC\n : this.weatherData()!.forecast[0].maxTempF;\n }\n\n protected getMinTemp(): number {\n if (!this.weatherData()?.forecast?.[0]) return 0;\n return this.temperatureUnit() === '°C'\n ? this.weatherData()!.forecast[0].minTempC\n : this.weatherData()!.forecast[0].minTempF;\n }\n\n protected getForecastDayTemp(day: any): number {\n if (!day) return 0;\n return this.temperatureUnit() === '°C' ? day.maxTempC : day.maxTempF;\n }\n\n protected parseDate(dateStr: string): Date {\n return new Date(dateStr);\n }\n\n protected getDayName(date: Date): string {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n const tomorrow = new Date(today);\n tomorrow.setDate(tomorrow.getDate() + 1);\n\n const checkDate = new Date(date);\n checkDate.setHours(0, 0, 0, 0);\n\n if (checkDate.getTime() === today.getTime()) {\n return 'Today';\n }\n if (checkDate.getTime() === tomorrow.getTime()) {\n return 'Tomorrow';\n }\n\n const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n return days[checkDate.getDay()];\n }\n\n protected displayedForecast = computed(() => {\n this.forecastDays();\n const weatherData = this.weatherData();\n if (!weatherData?.forecast) return [];\n // Skip today's forecast for the bottom row display\n return weatherData.forecast.slice(1, this.forecastDays());\n });\n\n protected displayedHourlyForecast = computed(() => {\n this.forecastHours();\n const weatherData = this.weatherData();\n if (!weatherData?.forecast?.[0]?.hour) return [];\n\n const now = new Date();\n const currentHour = now.getHours();\n const todayHours = weatherData.forecast[0].hour;\n\n // Get hours after current hour for today\n const remainingTodayHours = todayHours.filter((hour) => {\n const hourTime = new Date(hour.time);\n return hourTime.getHours() > currentHour;\n });\n\n // If we need more hours, get from tomorrow\n let result = [...remainingTodayHours];\n if (result.length < this.forecastHours() && weatherData.forecast.length > 1) {\n const tomorrowHours = weatherData.forecast[1].hour;\n const neededFromTomorrow = this.forecastHours() - result.length;\n result = [...result, ...tomorrowHours.slice(0, neededFromTomorrow)];\n }\n\n // Limit to requested number of hours\n return result.slice(0, this.forecastHours());\n });\n\n protected getHourLabel(timeStr: string): string {\n const time = new Date(timeStr);\n return time.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: false });\n }\n\n protected getHourTemp(hour: AXPWeatherHour): number {\n return this.temperatureUnit() === '°C' ? hour.tempC : hour.tempF;\n }\n}\n","import { RootConfig } from '../../../../../../const';\nimport { AXPWidgetConfig, AXPWidgetGroupEnum, AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\n\nimport { AXP_DATA_PROPERTY_GROUP } from '@acorex/platform/layout/widgets';\nimport { AXP_WIDGETS_UTILITY_CATEGORY } from '../../../widget-categories.type';\nimport { AXP_DASHBOARD_SHARED_SUB_UTILITY_WEATHER } from '../../../widget-subcategories.type';\n\n/**\n * Weather Widget Configuration\n * Provides customization options for displaying weather data and forecast\n */\nexport const AXPAdvancedWeatherWidget: AXPWidgetConfig = {\n name: RootConfig.widgets.advancedWeather,\n title: '@dashboard:widgets.advanced-weather.widget-title',\n description: '@dashboard:widgets.advanced-weather.widget-description',\n categories: [AXP_WIDGETS_UTILITY_CATEGORY],\n subCategory: AXP_DASHBOARD_SHARED_SUB_UTILITY_WEATHER,\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n type: 'dashboard',\n icon: 'fa-light fa-cloud-sun',\n properties: [\n {\n name: 'temperatureUnit',\n title: '@dashboard:widgets.weather.temperature-unit',\n group: AXP_DATA_PROPERTY_GROUP,\n schema: {\n defaultValue: '°C',\n dataType: 'string',\n interface: {\n name: 'temperatureUnit',\n path: 'options.temperatureUnit',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: ['°C', '°F'],\n },\n },\n },\n visible: true,\n },\n {\n name: 'city',\n title: '@dashboard:widgets.weather.city',\n group: AXP_DATA_PROPERTY_GROUP,\n schema: {\n defaultValue: 'New York',\n dataType: 'string',\n interface: {\n name: 'city',\n path: 'options.city',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n\n {\n name: 'forecastHours',\n title: '@dashboard:widgets.weather.forecast-hours',\n group: AXP_DATA_PROPERTY_GROUP,\n schema: {\n defaultValue: 5,\n dataType: 'number',\n interface: {\n name: 'forecastHours',\n path: 'options.forecastHours',\n type: AXPWidgetsCatalog.number,\n options: {\n minValue: 1,\n maxValue: 8,\n step: 1,\n },\n },\n },\n visible: true,\n },\n {\n name: 'forecastDays',\n title: '@dashboard:widgets.weather.forecast-days',\n group: AXP_DATA_PROPERTY_GROUP,\n schema: {\n defaultValue: 2,\n dataType: 'number',\n interface: {\n name: 'forecastDays',\n path: 'options.forecastDays',\n type: AXPWidgetsCatalog.number,\n options: {\n minValue: 1,\n maxValue: 2,\n step: 1,\n },\n },\n },\n visible: true,\n },\n ],\n components: {\n view: {\n component: () => import('./advanced-weather.component').then((c) => c.AXMAdvancedWeatherViewComponent),\n },\n },\n meta: {\n dimensions: {\n lg: {\n width: 3,\n height: 5,\n minWidth: 3,\n minHeight: 5,\n maxWidth: 5,\n maxHeight: 7,\n },\n md: {\n width: 3,\n height: 5,\n minWidth: 3,\n minHeight: 5,\n maxWidth: 5,\n maxHeight: 7,\n },\n sm: {\n height: 5,\n minHeight: 5,\n maxHeight: 7,\n },\n },\n },\n};\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXTooltipModule } from '@acorex/components/tooltip';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPDashboardWidgetComponent } from '../../../dashboard-widget-base';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal } from '@angular/core';\nimport { catchError, finalize, of } from 'rxjs';\nimport { AXPWeatherApiAbstract, AXPWeatherApiService, AXPWeatherData } from '../weather-services';\n\n@Component({\n templateUrl: './minimal-weather.component.html',\n styleUrls: ['./minimal-weather.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXDecoratorModule, AXTooltipModule, AXSkeletonModule, AXTranslationModule, AXButtonModule],\n providers: [\n {\n provide: AXPWeatherApiAbstract,\n useClass: AXPWeatherApiService,\n },\n ],\n})\nexport class AXMMinimalWeatherViewComponent extends AXPDashboardWidgetComponent {\n private weatherService = inject(AXPWeatherApiAbstract);\n\n protected weatherData = signal<AXPWeatherData | null>(null);\n protected isLoading = signal(true);\n protected hasError = signal(false);\n protected errorMessage = signal('');\n\n protected city = computed(() => this.options()['city'] || 'New York');\n protected temperatureUnit = computed(() => this.options()['temperatureUnit']?.id || '°C');\n\n private iconCache = new Map<string, string>();\n\n constructor() {\n super();\n effect(() => {\n if (this.options()) {\n this.loadWeatherData();\n }\n });\n }\n\n protected loadWeatherData(): void {\n if (!this.city()) {\n this.isLoading.set(false);\n return;\n }\n\n this.isLoading.set(true);\n this.hasError.set(false);\n this.errorMessage.set('');\n\n const requestOptions = {\n location: this.city(),\n tempUnit: this.temperatureUnit(),\n days: 1,\n };\n\n this.weatherService\n .getForecast(requestOptions)\n .pipe(\n catchError((error) => {\n this.handleError(error);\n return of(null);\n }),\n finalize(() => this.isLoading.set(false)),\n )\n .subscribe((data) => {\n if (data) {\n this.weatherData.set(data);\n }\n });\n }\n\n private handleError(error: any): void {\n console.error('Minimal weather widget error:', error);\n this.hasError.set(true);\n this.errorMessage.set(error.message || 'Failed to load weather data');\n }\n\n protected getConditionIcon(): string {\n const conditionId = this.weatherData()?.current.condition || 'unknown';\n\n if (this.iconCache.has(conditionId)) {\n return this.iconCache.get(conditionId)!;\n }\n\n const svgIcon = this.weatherService.getCondition(conditionId).svgIcon;\n const iconPath = `assets/images/weather/${svgIcon}`;\n this.iconCache.set(conditionId, iconPath);\n return iconPath;\n }\n\n protected getCurrentTemperature(): number {\n if (!this.weatherData()) return 0;\n return this.temperatureUnit() === '°C' ? this.weatherData()!.current.tempC : this.weatherData()!.current.tempF;\n }\n\n protected getMaxTemp(): number {\n if (!this.weatherData()?.forecast?.[0]) return 0;\n return this.temperatureUnit() === '°C'\n ? this.weatherData()!.forecast[0].maxTempC\n : this.weatherData()!.forecast[0].maxTempF;\n }\n\n protected getMinTemp(): number {\n if (!this.weatherData()?.forecast?.[0]) return 0;\n return this.temperatureUnit() === '°C'\n ? this.weatherData()!.forecast[0].minTempC\n : this.weatherData()!.forecast[0].minTempF;\n }\n}\n","@if (weatherData() && !isLoading() && !hasError()) {\n <div\n class=\"ax-flex ax-size-full ax-flex-col ax-items-start ax-p-2 ax-justify-evenly weather-container ax-overflow-hidden\"\n [attr.aria-label]=\"'Current weather for ' + city()\"\n >\n <div class=\"weather-top ax-flex ax-justify-around ax-items-center ax-w-full ax-pt-2 ax-gap-2 ax-flex-wrap\">\n <img\n [src]=\"getConditionIcon()\"\n class=\"ax-size-28 ax-object-cover -ax-m-6\"\n [alt]=\"weatherData()?.current?.condition + ' weather icon'\"\n loading=\"lazy\"\n />\n <div class=\"temperature ax-flex ax-justify-center ax-items-start\">\n <span class=\"ax-text-5xl ax-minimal-weather-temp-shadow\">\n {{ getCurrentTemperature() | number: '1.0-0' }}\n </span>\n <span>{{ temperatureUnit() }}</span>\n </div>\n </div>\n <div class=\"ax-text-start ax-ps-6\">\n <div class=\"ax-mt-1\">\n <span class=\"ax-font-bold ax-capitalize\">{{ city() }}</span>\n </div>\n <div class=\"ax-pt-2 ax-flex ax-gap-4 ax-opacity-75\">\n <span aria-label=\"High temperature\">\n H: {{ getMaxTemp() | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup>\n </span>\n <span aria-label=\"Low temperature\">\n L: {{ getMinTemp() | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup>\n </span>\n </div>\n </div>\n </div>\n} @else {\n <div class=\"ax-flex ax-size-full ax-flex-col ax-p-2 ax-gap-2 ax-justify-center\" [attr.aria-busy]=\"isLoading()\">\n @if (isLoading()) {\n <div class=\"ax-flex ax-items-center ax-w-full ax-pt-2 ax-gap-8\">\n <ax-skeleton class=\"ax-w-16 ax-h-12 ax-rounded-full\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-24 ax-h-8 ax-rounded -ax-ms-2\"></ax-skeleton>\n </div>\n\n <div class=\"ax-text-start ax-ps-6 ax-w-full\">\n <div class=\"ax-mt-1\">\n <ax-skeleton class=\"ax-w-24 ax-h-6 ax-rounded\"></ax-skeleton>\n </div>\n <div class=\"ax-pt-2 ax-flex ax-gap-4\">\n <ax-skeleton class=\"ax-w-12 ax-h-4 ax-rounded\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-12 ax-h-4 ax-rounded\"></ax-skeleton>\n </div>\n </div>\n } @else if (hasError()) {\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-justify-center ax-items-center ax-h-full ax-p-8\">\n <i class=\"ax-text-3xl fa-solid fa-cloud-sun\"></i>\n <p class=\"ax-text-sm\">{{ 'weather.no-data' | translate: { scope: 'dashboard' } | async }}</p>\n <ax-button\n [look]=\"'outline'\"\n [color]=\"'secondary'\"\n [text]=\"'weather.refresh-weather' | translate: { scope: 'dashboard' } | async\"\n (onClick)=\"loadWeatherData()\"\n ></ax-button>\n </div>\n }\n </div>\n}\n","import { RootConfig } from '../../../../../../const';\nimport { AXPWidgetConfig, AXPWidgetGroupEnum, AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\n\nimport { AXP_DATA_PROPERTY_GROUP } from '@acorex/platform/layout/widgets';\nimport { AXP_WIDGETS_UTILITY_CATEGORY } from '../../../widget-categories.type';\nimport { AXP_DASHBOARD_SHARED_SUB_UTILITY_WEATHER } from '../../../widget-subcategories.type';\n\n/**\n * Weather Widget Configuration\n * Provides customization options for displaying weather data and forecast\n */\nexport const AXPMinimalWeatherWidget: AXPWidgetConfig = {\n name: RootConfig.widgets.minimalWeather,\n title: '@dashboard:widgets.minimal-weather.widget-title',\n description: '@dashboard:widgets.minimal-weather.widget-description',\n categories: [AXP_WIDGETS_UTILITY_CATEGORY],\n subCategory: AXP_DASHBOARD_SHARED_SUB_UTILITY_WEATHER,\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n type: 'dashboard',\n icon: 'fa-light fa-cloud-sun',\n properties: [\n {\n name: 'temperatureUnit',\n title: '@dashboard:widgets.weather.temperature-unit',\n group: AXP_DATA_PROPERTY_GROUP,\n schema: {\n defaultValue: '°C',\n dataType: 'string',\n interface: {\n name: 'temperatureUnit',\n path: 'options.temperatureUnit',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: ['°C', '°F'],\n },\n },\n },\n visible: true,\n },\n {\n name: 'city',\n title: '@dashboard:widgets.weather.city',\n group: AXP_DATA_PROPERTY_GROUP,\n schema: {\n defaultValue: 'New York',\n dataType: 'string',\n interface: {\n name: 'city',\n path: 'options.city',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n ],\n components: {\n view: {\n component: () => import('./minimal-weather.component').then((c) => c.AXMMinimalWeatherViewComponent),\n },\n },\n meta: {\n dimensions: {\n lg: {\n width: 2,\n height: 2,\n minWidth: 1,\n minHeight: 2,\n maxWidth: 2,\n maxHeight: 3,\n },\n md: {\n width: 2,\n height: 2,\n minWidth: 1,\n minHeight: 2,\n maxWidth: 2,\n maxHeight: 3,\n },\n sm: {\n height: 2,\n minHeight: 2,\n maxHeight: 3,\n },\n },\n },\n};\n","import { AXDateTimeModule } from '@acorex/core/date-time';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPStateMessageComponent } from '@acorex/platform/layout/components';\nimport { AXPDashboardWidgetComponent } from '../../dashboard-widget-base';\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n computed,\n effect,\n inject,\n signal,\n viewChild,\n} from '@angular/core';\nimport { Observable, Subscription, interval as rxjsInterval, switchMap } from 'rxjs';\nimport {\n AXPWeatherApiAbstract,\n AXPWeatherApiService,\n AXPWeatherData,\n AXPWeatherRequestOptions,\n} from './weather-services';\n\n/**\n * Weather Widget Component\n * Displays current weather conditions and optional forecast data\n * for a specified location with customizable display options.\n */\n@Component({\n templateUrl: './weather-widget.component.html',\n styleUrls: ['./weather-widget.component.scss'],\n standalone: true,\n imports: [CommonModule, AXDateTimeModule, AXFormatModule, HttpClientModule, AXTranslationModule, AXPStateMessageComponent],\n providers: [\n {\n provide: AXPWeatherApiAbstract,\n useClass: AXPWeatherApiService,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPWeatherWidgetViewComponent extends AXPDashboardWidgetComponent {\n // Container element reference\n protected containerEl = viewChild.required<ElementRef<HTMLDivElement>>('containerElement');\n\n // Weather API service instance\n private weatherService = inject(AXPWeatherApiAbstract);\n\n // State signals\n protected weatherData = signal<AXPWeatherData | null>(null);\n protected isLoading = signal(true);\n protected hasError = signal(false);\n protected errorMessage = signal('');\n protected isForecastLoading = signal(false);\n\n // Auto-refresh subscription\n private refreshSubscription: Subscription | null = null;\n\n // Option-derived computed properties\n protected city = computed(() => {\n return this.options()['city'] || 'Newyork';\n });\n protected temperatureUnit = computed(() => this.options()['temperatureUnit']?.id || '°C');\n protected windSpeedUnit = computed(() => this.options()['windSpeedUnit']?.id || 'km/h');\n\n // Display option flags\n protected showCurrentCondition = computed(() => this.options()['showCurrentCondition'] !== false);\n protected showTemperature = computed(() => this.options()['showTemperature'] !== false);\n protected showHumidity = computed(() => this.options()['showHumidity'] !== false);\n protected showWind = computed(() => this.options()['showWind'] !== false);\n protected showForecast = computed(() => this.options()['showForecast'] !== false);\n protected forecastDays = computed(() => this.options()['forecastDays'] ?? 5);\n\n // Refresh settings\n protected autoRefresh = computed(() => this.options()['autoRefresh'] !== false);\n protected refreshInterval = computed(() => this.options()['refreshInterval']?.id ?? 15);\n\n // Reactivity effects\n private optionsEffect = effect(() => {\n this.options();\n this.loadWeatherData();\n this.setupRefreshTimer();\n });\n\n protected displayedForecast = computed(() => {\n const weatherData = this.weatherData();\n if (!weatherData?.forecast) return [];\n\n const forecastDays = this.forecastDays();\n return weatherData.forecast.slice(0, forecastDays);\n });\n\n /**\n * Component constructor\n * @param cdr ChangeDetectorRef for triggering view updates\n */\n constructor(protected cdr: ChangeDetectorRef) {\n super();\n // Inject the abstract service which will resolve to either the mock or real implementation\n this.weatherService = inject(AXPWeatherApiAbstract);\n\n setTimeout(() => {\n this.loadWeatherData();\n this.setupRefreshTimer();\n }, 0);\n }\n\n /**\n * Component cleanup on destroy\n */\n ngOnDestroy(): void {\n this.clearRefreshTimer();\n }\n\n /**\n * Loads weather data from the API\n * Sets loading state and handles errors\n */\n private loadWeatherData(): void {\n this.isLoading.set(true);\n this.hasError.set(false);\n this.errorMessage.set('');\n\n const locationQuery = this.city();\n const shouldShowForecast = this.showForecast();\n\n // If we need forecast, request it directly to avoid duplicate calls\n // The forecast endpoint also returns current weather\n if (shouldShowForecast) {\n const forecastOptions: AXPWeatherRequestOptions & { days?: number } = {\n location: locationQuery,\n tempUnit: this.temperatureUnit(),\n useMockData: false, // Use real API, signals to use forecast endpoint\n days: this.forecastDays(),\n };\n\n this.isForecastLoading.set(true);\n this.weatherService.getForecast(forecastOptions).subscribe({\n next: (data) => {\n this.weatherData.set(data);\n this.isLoading.set(false);\n this.isForecastLoading.set(false);\n setTimeout(() => this.cdr.detectChanges());\n },\n error: (error) => {\n this.handleError(error);\n this.isLoading.set(false);\n this.isForecastLoading.set(false);\n this.cdr.detectChanges();\n },\n });\n return;\n }\n\n // If we only need current weather, use getWeather\n const requestOptions: AXPWeatherRequestOptions = {\n location: locationQuery,\n tempUnit: this.temperatureUnit(),\n useMockData: false, // Use real API\n };\n\n this.weatherService.getWeather(requestOptions).subscribe({\n next: (data) => {\n this.weatherData.set(data);\n this.isLoading.set(false);\n setTimeout(() => this.cdr.detectChanges());\n },\n error: (error) => {\n this.handleError(error);\n this.isLoading.set(false);\n this.cdr.detectChanges();\n },\n });\n }\n\n /**\n * Sets up the auto-refresh timer based on configuration\n */\n private setupRefreshTimer(): void {\n this.clearRefreshTimer();\n if (!this.autoRefresh()) return;\n\n const minInterval = 5; // 5 minutes minimum\n const intervalValue = Math.max(this.refreshInterval(), minInterval);\n const intervalMs = intervalValue * 60 * 1000;\n\n this.refreshSubscription = rxjsInterval(intervalMs)\n .pipe(\n switchMap(() => {\n // Always use the loadWeatherData method to determine the correct API call\n this.loadWeatherData();\n // Return an empty observable to satisfy the switchMap typing\n return new Observable<AXPWeatherData>((observer) => {\n observer.complete();\n });\n }),\n )\n .subscribe();\n }\n\n /**\n * Clears the refresh timer subscription\n */\n private clearRefreshTimer(): void {\n if (this.refreshSubscription) {\n this.refreshSubscription.unsubscribe();\n this.refreshSubscription = null;\n }\n }\n\n /**\n * Manually refreshes the weather data\n */\n protected refreshWeather(): void {\n this.loadWeatherData();\n }\n\n /**\n * Gets the current temperature based on selected unit\n */\n protected getCurrentTemperature(): number {\n if (!this.weatherData()) return 0;\n\n return this.temperatureUnit() === '°C' ? this.weatherData()!.current.tempC : this.weatherData()!.current.tempF;\n }\n\n /**\n * Gets the feels like temperature based on selected unit\n */\n protected getFeelsLikeTemperature(): number {\n if (!this.weatherData()) return 0;\n\n return this.temperatureUnit() === '°C'\n ? this.weatherData()!.current.feelsLikeC\n : this.weatherData()!.current.feelsLikeF;\n }\n\n /**\n * Gets the humidity percentage\n */\n protected getHumidity(): number {\n return this.weatherData()?.current.humidity || 0;\n }\n\n /**\n * Gets the wind speed based on selected unit\n */\n protected getWindSpeed(): number {\n if (!this.weatherData()) return 0;\n\n return this.windSpeedUnit() === 'km/h' ? this.weatherData()!.current.windKph : this.weatherData()!.current.windMph;\n }\n\n /**\n * Gets the current weather condition\n */\n protected getCurrentCondition(): string {\n const conditionId = this.weatherData()?.current.condition || '';\n return this.getConditionName(conditionId);\n }\n\n /**\n * Gets the formatted last updated time\n */\n protected getLastUpdated(): string {\n if (!this.weatherData()?.current.lastUpdated) return '';\n\n return new Date(this.weatherData()!.current.lastUpdated).toLocaleTimeString();\n }\n\n /**\n * Gets the appropriate icon class for a weather condition\n * @param conditionId The ID of the weather condition\n * @returns The Font Awesome icon class string\n */\n protected getConditionIcon(conditionId: string): string {\n if (!conditionId) {\n conditionId = 'unknown';\n }\n const svgIcon = this.weatherService.getCondition(conditionId).svgIcon;\n return `assets/images/weather/${svgIcon}`;\n }\n\n /**\n * Gets the display name for a weather condition\n * @param conditionId The ID of the weather condition\n * @returns The translated display name\n */\n protected getConditionName(conditionId: string): string {\n const condition = this.weatherService.getCondition(conditionId);\n if (!condition?.name) return 'weather.conditions.sunny';\n\n // Convert condition name to lowercase and replace spaces with hyphens\n const formattedName = condition.name.toLowerCase().replace(/\\s+/g, '-');\n return `weather.conditions.${formattedName}`;\n }\n\n /**\n * Gets the color for a weather condition\n * @param conditionId Weather condition ID\n * @returns CSS color value\n */\n protected getConditionColor(conditionId: string): string {\n const condition = this.weatherService.getCondition(conditionId);\n return condition?.color || '#999999';\n }\n\n /**\n * Cleans up chart resources\n * Required by AXPChartBaseComponent\n */\n protected cleanupChart(): void {\n this.clearRefreshTimer();\n }\n\n private handleError(error: any): void {\n console.error('Weather widget error:', error);\n this.hasError.set(true);\n\n // Check if it's a network error\n if (error.status === 0) {\n this.errorMessage.set('weather.error.network');\n return;\n }\n\n // Check if it's an API error\n if (error.status >= 400 && error.status < 500) {\n this.errorMessage.set('weather.error.api');\n return;\n }\n\n // Default error message\n this.errorMessage.set('weather.error.general');\n }\n\n protected getTemperatureUnit(): string {\n return this.temperatureUnit() === '°C' ? 'weather.units.celsius' : 'weather.units.fahrenheit';\n }\n\n protected getWindSpeedUnit(): string {\n return this.windSpeedUnit() === 'km/h' ? 'weather.units.kmh' : 'weather.units.mph';\n }\n\n protected getDayName(date: Date): string {\n const today = new Date();\n const tomorrow = new Date(today);\n tomorrow.setDate(tomorrow.getDate() + 1);\n\n if (date.toDateString() === today.toDateString()) {\n return 'weather.days.today';\n }\n if (date.toDateString() === tomorrow.toDateString()) {\n return 'weather.days.tomorrow';\n }\n\n const days = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];\n return `weather.days.${days[date.getDay()]}`;\n }\n\n protected parseDate(dateStr: string): Date {\n return new Date(dateStr);\n }\n}\n","<!-- Weather Widget Component Template -->\n<div class=\"axp-weather-container\" #containerElement>\n <!-- Loading indicator -->\n @if (isLoading()) {\n <div class=\"axp-weather-loading-overlay\">\n <div class=\"axp-weather-loading-spinner\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>{{ '@dashboard:weather.loading' | translate | async }}</span>\n </div>\n </div>\n }\n\n <!-- Error message -->\n @if (hasError()) {\n <axp-state-message\n mode=\"error\"\n icon=\"fa-solid fa-exclamation-triangle\"\n [title]=\"'@dashboard:weather.error.title'\"\n [description]=\"errorMessage()\"\n >\n <button slot=\"actions\" class=\"axp-weather-retry-button\" (click)=\"refreshWeather()\">\n <i class=\"fa-solid fa-sync-alt\"></i>\n <span>{{ '@dashboard:weather.retry' | translate | async }}</span>\n </button>\n </axp-state-message>\n }\n\n <!-- Weather content - only show when we have data -->\n @if (weatherData()) {\n <!-- Background decorations based on weather condition -->\n <div class=\"axp-weather-background-decorations\">\n <div class=\"axp-weather-decoration\" [ngClass]=\"weatherData()?.current?.condition?.toLowerCase()\"></div>\n <div class=\"axp-weather-gradient-overlay\"></div>\n </div>\n\n <div class=\"axp-weather-inner\">\n <!-- Location information section -->\n <div class=\"axp-weather-location-info\">\n <div class=\"axp-weather-location-icon\">\n <i class=\"fa-solid fa-location-dot\"></i>\n </div>\n <div class=\"axp-weather-location-text\">\n <h2 class=\"axp-weather-location-name\">{{ city() }}</h2>\n </div>\n </div>\n\n <!-- Current weather conditions section -->\n <div class=\"axp-weather-current-weather\">\n <!-- Weather icon and condition name -->\n @if (showCurrentCondition()) {\n <div class=\"axp-weather-condition\">\n <div class=\"axp-weather-icon-wrapper\">\n <div class=\"axp-weather-icon\">\n <img [src]=\"getConditionIcon(weatherData()?.current?.condition || '')\" />\n </div>\n <div\n class=\"axp-weather-icon-glow\"\n [style.background-color]=\"getConditionColor(weatherData()?.current?.condition || '')\"\n ></div>\n </div>\n <div class=\"axp-weather-condition-name\">\n {{ getCurrentCondition() | translate | async }}\n </div>\n </div>\n }\n\n <!-- Temperature display -->\n @if (showTemperature()) {\n <div class=\"axp-weather-temperature\">\n <span class=\"axp-weather-temperature-value\">{{ getCurrentTemperature() }}</span>\n <span class=\"axp-weather-temperature-unit\">{{ getTemperatureUnit() | translate | async }}</span>\n </div>\n }\n </div>\n\n <!-- Weather details section (humidity and wind) -->\n @if (showHumidity() || showWind()) {\n <div class=\"axp-weather-details\">\n <!-- Humidity information -->\n @if (showHumidity()) {\n <div class=\"axp-weather-detail-item\">\n <div class=\"axp-weather-detail-icon\">\n <i class=\"fa-solid fa-droplet\"></i>\n </div>\n <div class=\"axp-weather-detail-info\">\n <div class=\"axp-weather-detail-label\">\n {{ '@dashboard:weather.humidity' | translate | async }}\n </div>\n <div class=\"axp-weather-detail-value\">{{ getHumidity() }}%</div>\n </div>\n </div>\n }\n\n <!-- Wind speed information -->\n @if (showWind()) {\n <div class=\"axp-weather-detail-item\">\n <div class=\"axp-weather-detail-icon\">\n <i class=\"fa-solid fa-wind\"></i>\n </div>\n <div class=\"axp-weather-detail-info\">\n <div class=\"axp-weather-detail-label\">\n {{ '@dashboard:weather.wind' | translate | async }}\n </div>\n <div class=\"axp-weather-detail-value\">\n {{ getWindSpeed() }} {{ getWindSpeedUnit() | translate | async }}\n </div>\n </div>\n </div>\n }\n </div>\n }\n\n <!-- Weather forecast section -->\n @if (showForecast() && weatherData()?.forecast) {\n <div class=\"axp-weather-forecast\">\n <div class=\"axp-weather-forecast-header\">\n <h3 class=\"axp-weather-forecast-title\">\n <i class=\"fa-solid fa-calendar-days\"></i>\n <span class=\"ax-px-1\">{{ '@dashboard:weather.forecast' | translate | async }}</span>\n </h3>\n </div>\n <!-- Loading indicator for forecast -->\n <!-- @if (isForecastLoading()) {\n <div class=\"axp-weather-forecast-loading\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>{{ '@dashboard:weather.loading-forecast' | translate | async }}</span>\n </div>\n } -->\n <!-- Scrollable forecast days display -->\n <div class=\"axp-weather-forecast-items\">\n @for (day of displayedForecast(); track day.day) {\n <div class=\"axp-weather-forecast-day\">\n <div class=\"axp-weather-forecast-day-name\">\n {{ getDayName(parseDate(day.date)) | translate | async }}\n </div>\n <div class=\"axp-weather-forecast-icon\" [title]=\"getConditionName(day.condition) | translate | async\">\n <img [src]=\"getConditionIcon(day.condition || '')\" />\n </div>\n <div class=\"axp-weather-forecast-temps\">\n <span class=\"axp-weather-forecast-low\">\n {{ temperatureUnit() === '°C' ? day.minTempC : day.minTempF\n }}{{ getTemperatureUnit() | translate | async }}\n </span>\n <span class=\"axp-weather-forecast-high\">\n {{ temperatureUnit() === '°C' ? day.maxTempC : day.maxTempF\n }}{{ getTemperatureUnit() | translate | async }}\n </span>\n </div>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Last updated timestamp -->\n <div class=\"axp-weather-last-updated\">\n <span>{{ '@dashboard:weather.last-updated' | translate | async }}: {{ getLastUpdated() }}</span>\n </div>\n\n <!-- Manual refresh button -->\n <div class=\"axp-weather-refresh-action\">\n <button\n class=\"axp-weather-refresh-button\"\n (click)=\"refreshWeather()\"\n [attr.aria-label]=\"'@dashboard:weather.refresh' | translate | async\"\n [title]=\"'@dashboard:weather.refresh' | translate | async\"\n >\n <i class=\"fa-solid fa-sync-alt\"></i>\n <span>{{ '@dashboard:weather.refresh' | translate | async }}</span>\n </button>\n </div>\n </div>\n } @else if (!isLoading() && !hasError()) {\n <!-- No data state (not loading, no error) -->\n <axp-state-message\n icon=\"fa-solid fa-cloud-sun\"\n [title]=\"'@dashboard:weather.no-data.title'\"\n [description]=\"'@dashboard:weather.no-data.description'\"\n >\n <button slot=\"actions\" class=\"axp-weather-refresh-button\" (click)=\"refreshWeather()\">\n <i class=\"fa-solid fa-sync-alt\"></i>\n <span>{{ '@dashboard:weather.load-data' | translate | async }}</span>\n </button>\n </axp-state-message>\n }\n</div>\n","import { RootConfig } from '../../../../../const';\nimport { AXPWidgetConfig, AXPWidgetGroupEnum, AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\n\nimport { AXP_WIDGETS_UTILITY_CATEGORY } from '../../widget-categories.type';\nimport { AXP_DASHBOARD_SHARED_SUB_UTILITY_WEATHER } from '../../widget-subcategories.type';\nimport {\n AXP_APPEARANCE_PROPERTY_GROUP,\n AXP_BEHAVIOR_PROPERTY_GROUP,\n AXP_DATA_PROPERTY_GROUP,\n} from '@acorex/platform/layout/widgets';\n\n/**\n * Weather Widget Configuration\n * Provides customization options for displaying weather data and forecast\n */\nexport const AXPWeatherWidget: AXPWidgetConfig = {\n name: RootConfig.widgets.weather,\n title: '@dashboard:widgets.weather.widget-title',\n description: '@dashboard:widgets.weather.widget-description',\n categories: [AXP_WIDGETS_UTILITY_CATEGORY],\n subCategory: AXP_DASHBOARD_SHARED_SUB_UTILITY_WEATHER,\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n type: 'dashboard',\n icon: 'fa-light fa-cloud-sun',\n properties: [\n /* Location Settings */\n {\n name: 'city',\n title: '@dashboard:widgets.weather.city',\n group: AXP_DATA_PROPERTY_GROUP,\n schema: {\n defaultValue: 'New York',\n dataType: 'string',\n interface: {\n name: 'city',\n path: 'options.city',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n\n /* Display Options */\n // {\n // name: 'showCurrentCondition',\n // title: 'Show Current Condition',\n // group: AXP_APPEARANCE_PROPERTY_GROUP,\n // schema: {\n // defaultValue: true,\n // dataType: 'boolean',\n // interface: {\n // name: 'showCurrentCondition',\n // path: 'options.showCurrentCondition',\n // type: AXPWidgetsCatalog.toggle,\n // },\n // },\n // visible: true,\n // },\n // {\n // name: 'showTemperature',\n // title: 'Show Temperature',\n // group: AXP_APPEARANCE_PROPERTY_GROUP,\n // schema: {\n // defaultValue: true,\n // dataType: 'boolean',\n // interface: {\n // name: 'showTemperature',\n // path: 'options.showTemperature',\n // type: AXPWidgetsCatalog.toggle,\n // },\n // },\n // visible: true,\n // },\n // {\n // name: 'showCurrentCondition',\n // title: 'Show Current Condition',\n // group: AXP_APPEARANCE_PROPERTY_GROUP,\n // schema: {\n // defaultValue: true,\n // dataType: 'boolean',\n // interface: {\n // name: 'showCurrentCondition',\n // path: 'options.showCurrentCondition',\n // type: AXPWidgetsCatalog.toggle,\n // },\n // },\n // visible: true,\n // },\n // {\n // name: 'showTemperature',\n // title: 'Show Temperature',\n // group: AXP_APPEARANCE_PROPERTY_GROUP,\n // schema: {\n // defaultValue: true,\n // dataType: 'boolean',\n // interface: {\n // name: 'showTemperature',\n // path: 'options.showTemperature',\n // type: AXPWidgetsCatalog.toggle,\n // },\n // },\n // visible: true,\n // },\n {\n name: 'showHumidity',\n title: '@dashboard:widgets.weather.show-humidity',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showHumidity',\n path: 'options.showHumidity',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'showWind',\n title: '@dashboard:widgets.weather.show-wind',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showWind',\n path: 'options.showWind',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'showForecast',\n title: '@dashboard:widgets.weather.show-forecast',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showForecast',\n path: 'options.showForecast',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'forecastDays',\n title: '@dashboard:widgets.weather.forecast-days',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 5,\n dataType: 'number',\n interface: {\n name: 'forecastDays',\n path: 'options.forecastDays',\n type: AXPWidgetsCatalog.number,\n options: {\n minValue: 1,\n maxValue: 7,\n step: 1,\n },\n },\n },\n visible: true,\n },\n\n /* Units Settings */\n {\n name: 'temperatureUnit',\n title: '@dashboard:widgets.weather.temperature-unit',\n group: AXP_DATA_PROPERTY_GROUP,\n schema: {\n defaultValue: '°C',\n dataType: 'string',\n interface: {\n name: 'temperatureUnit',\n path: 'options.temperatureUnit',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: ['°C', '°F'],\n },\n },\n },\n visible: true,\n },\n {\n name: 'windSpeedUnit',\n title: '@dashboard:widgets.weather.wind-speed-unit',\n group: AXP_DATA_PROPERTY_GROUP,\n schema: {\n defaultValue: 'km/h',\n dataType: 'string',\n interface: {\n name: 'windSpeedUnit',\n path: 'options.windSpeedUnit',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: ['km/h', 'mph', 'm/s'],\n },\n },\n },\n visible: true,\n },\n\n /* Refresh Settings */\n {\n name: 'autoRefresh',\n title: '@dashboard:widgets.weather.auto-refresh',\n group: AXP_BEHAVIOR_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'autoRefresh',\n path: 'options.autoRefresh',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'refreshInterval',\n title: '@dashboard:widgets.weather.refresh-interval',\n group: AXP_BEHAVIOR_PROPERTY_GROUP,\n schema: {\n defaultValue: 15,\n dataType: 'number',\n interface: {\n name: 'refreshInterval',\n path: 'options.refreshInterval',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: [5, 10, 15, 30, 60],\n },\n },\n },\n visible: true,\n },\n ],\n components: {\n view: {\n component: () => import('./weather-widget.component').then((c) => c.AXPWeatherWidgetViewComponent),\n },\n },\n meta: {\n dimensions: {\n lg: {\n width: 3,\n height: 7,\n minWidth: 2,\n minHeight: 4,\n maxWidth: 4,\n maxHeight: 8,\n },\n md: {\n width: 3,\n height: 7,\n minWidth: 2,\n minHeight: 4,\n maxWidth: 4,\n maxHeight: 8,\n },\n sm: {\n height: 7,\n minHeight: 4,\n maxHeight: 8,\n },\n },\n },\n};\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n input,\n OnDestroy,\n OnInit,\n signal,\n WritableSignal,\n} from '@angular/core';\n\ninterface AXMClockMark {\n transform?: string;\n top?: string;\n left?: string;\n value?: number;\n}\n\n@Component({\n selector: 'axm-analog-clock',\n standalone: true,\n imports: [],\n templateUrl: './analog-clock.component.html',\n styleUrls: ['./analog-clock.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXMAnalogClockComponent implements OnInit, OnDestroy {\n timezone = input<string>();\n classes = input<string>();\n showNumbers = input<boolean>(true);\n\n private readonly currentTime: WritableSignal<Date> = signal(new Date());\n private readonly timeParts = signal({ hours: 0, minutes: 0, seconds: 0 });\n\n constructor() {\n effect(() => {\n const now = this.currentTime();\n const tz = this.timezone();\n let hours, minutes, seconds;\n\n if (tz) {\n try {\n const formatter = new Intl.DateTimeFormat('en-US', {\n timeZone: tz,\n hour12: false,\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n });\n const parts = formatter.formatToParts(now);\n hours = parseInt(parts.find((p) => p.type === 'hour')?.value ?? '0', 10);\n minutes = parseInt(parts.find((p) => p.type === 'minute')?.value ?? '0', 10);\n seconds = parseInt(parts.find((p) => p.type === 'second')?.value ?? '0', 10);\n } catch (e) {\n console.error(`Invalid timezone provided: \"${tz}\". Falling back to local time.`);\n hours = now.getHours();\n minutes = now.getMinutes();\n seconds = now.getSeconds();\n }\n } else {\n hours = now.getHours();\n minutes = now.getMinutes();\n seconds = now.getSeconds();\n }\n this.timeParts.set({ hours, minutes, seconds });\n });\n }\n\n readonly hourHandTransform = computed(() => {\n const { hours, minutes } = this.timeParts();\n const hoursAngle = (hours % 12) * 30 + minutes * 0.5;\n return `translateX(-50%) rotate(${hoursAngle}deg)`;\n });\n\n readonly minuteHandTransform = computed(() => {\n const { minutes, seconds } = this.timeParts();\n const minutesAngle = minutes * 6 + seconds * 0.1;\n return `translateX(-50%) rotate(${minutesAngle}deg)`;\n });\n\n readonly secondHandTransform = computed(() => {\n const { seconds } = this.timeParts();\n const secondsAngle = seconds * 6;\n return `translateX(-50%) rotate(${secondsAngle}deg)`;\n });\n\n hourLines: AXMClockMark[] = [];\n hourNumbers: AXMClockMark[] = [];\n dots: AXMClockMark[] = [];\n\n private timerId?: number;\n\n ngOnInit(): void {\n this.createClockMarks();\n this.timerId = window.setInterval(() => {\n this.currentTime.set(new Date());\n }, 1000);\n }\n\n ngOnDestroy(): void {\n if (this.timerId) {\n clearInterval(this.timerId);\n }\n }\n\n private createClockMarks(): void {\n const majorHours = [12, 3, 6, 9];\n\n // Hour Lines\n this.hourLines = [];\n for (let i = 1; i <= 12; i++) {\n this.hourLines.push({\n transform: `translateX(-50%) rotate(${i * 30}deg)`,\n });\n }\n\n // Hour Numbers\n this.hourNumbers = [];\n for (const hour of majorHours) {\n const angleRad = (hour * 30 - 90) * (Math.PI / 180);\n this.hourNumbers.push({\n value: hour,\n top: `calc(50% + ${30 * Math.sin(angleRad)}%)`,\n left: `calc(50% + ${30 * Math.cos(angleRad)}%)`,\n });\n }\n\n // Dots\n this.dots = [];\n for (let i = 1; i <= 60; i++) {\n if (i % 5 !== 0) {\n this.dots.push({\n transform: `translateX(-50%) rotate(${i * 6}deg)`,\n });\n }\n }\n }\n}\n","<div class=\"axm-analog-clock-container\">\n <div class=\"axm-analog-clock-face\" [class]=\"classes()\">\n <div class=\"axm-analog-clock-inner-ring\"></div>\n <div class=\"axm-analog-clock-marks-container\">\n @for (line of hourLines; track $index) {\n <div class=\"axm-analog-clock-hour-line\" [style.transform]=\"line.transform\">\n <div class=\"axm-analog-clock-hour-line-inner\"></div>\n </div>\n }\n @for (dot of dots; track $index) {\n <div class=\"axm-analog-clock-dot-line\" [style.transform]=\"dot.transform\">\n <div class=\"axm-analog-clock-dot-line-inner\"></div>\n </div>\n }\n </div>\n\n @if (showNumbers()) {\n <div class=\"axm-analog-clock-numbers-container\">\n @for (num of hourNumbers; track num.value) {\n <div class=\"axm-analog-clock-hour-number\" [style.top]=\"num.top\" [style.left]=\"num.left\">\n {{ num.value }}\n </div>\n }\n </div>\n }\n <div class=\"axm-analog-clock-hands\">\n <div class=\"axm-analog-clock-hand axm-analog-clock-hour-hand\" [style.transform]=\"hourHandTransform()\"></div>\n <div\n class=\"axm-analog-clock-hand axm-analog-clock-minute-hand\"\n [style.transform]=\"minuteHandTransform()\"\n ></div>\n <div\n class=\"axm-analog-clock-hand axm-analog-clock-second-hand\"\n [style.transform]=\"secondHandTransform()\"\n ></div>\n <div class=\"axm-analog-clock-center-point\"></div>\n </div>\n </div>\n</div>\n","import { AXTooltipModule } from '@acorex/components/tooltip';\nimport { AXMLocaleManagementService } from '@acorex/modules/locale-management';\nimport { AXPTimeZone } from '@acorex/platform/common';\nimport { AXPDashboardWidgetComponent } from '../../dashboard-widget-base';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n OnDestroy,\n signal,\n} from '@angular/core';\nimport { AXMAnalogClockComponent } from './analog-clock.component';\n\n@Component({\n templateUrl: './analog-clock-widget-view.component.html',\n styleUrls: ['./analog-clock-widget-view.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXMAnalogClockComponent, AXTooltipModule],\n})\nexport class AXMClockWidgetViewComponent extends AXPDashboardWidgetComponent implements AfterViewInit, OnDestroy {\n private readonly regionalService = inject(AXMLocaleManagementService);\n private readonly elementRef = inject(ElementRef);\n private userTimezone = signal<AXPTimeZone | null>(null);\n private containerWidth = signal<number>(0);\n private containerHeight = signal<number>(0);\n private resizeObserver: ResizeObserver | null = null;\n\n constructor() {\n super();\n this.loadUserTimezone();\n }\n\n ngAfterViewInit(): void {\n this.setupResizeObserver();\n }\n\n ngOnDestroy(): void {\n this.resizeObserver?.disconnect();\n }\n\n private setupResizeObserver(): void {\n if (typeof ResizeObserver !== 'undefined') {\n this.resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (entry.target === this.elementRef.nativeElement) {\n const { width, height } = entry.contentRect;\n this.containerWidth.set(width);\n this.containerHeight.set(height);\n }\n }\n });\n this.resizeObserver.observe(this.elementRef.nativeElement);\n }\n }\n\n private async loadUserTimezone(): Promise<void> {\n try {\n const timezoneCode = await this.regionalService.getBrowserTimeZoneCode();\n const timezones = await this.regionalService.getTimeZones();\n const timezone = timezones.find((tz) => tz.code === timezoneCode);\n if (timezone) {\n this.userTimezone.set(timezone);\n }\n } catch (error) {\n console.error('Failed to load user timezone', error);\n }\n }\n\n timezone = computed(() => {\n const configuredTimezone = this.options()?.['timezone'] as AXPTimeZone | undefined;\n return configuredTimezone || this.userTimezone();\n });\n\n others = computed(() => (this.options()?.['others'] ?? []) as AXPTimeZone[]);\n\n isHorizontal = computed(() => {\n const width = this.containerWidth();\n const height = this.containerHeight();\n // If width is greater than height or they are equal, use horizontal layout\n return width >= height - (this.others().length > 0 ? 75 : 0);\n });\n\n hasEnoughSpaceForHorizontal = computed(() => {\n const width = this.containerWidth();\n const clockCount = this.others().length;\n\n // Estimate minimum width needed for horizontal layout\n // Each clock needs about 100px (60px clock + padding + text)\n const minWidthNeeded = clockCount * 100;\n\n return width >= minWidthNeeded && clockCount <= 4;\n });\n\n // Dynamically compute font sizes for timezone code and abbreviation\n codeFontSize = computed(() => {\n const width = this.containerWidth();\n const codeLength = this.timezone()?.code?.length ?? 0;\n\n // Base scales with container width (100px -> ~10px, 400px -> ~22px)\n const base = (width / 400) * 14 + 8;\n\n // Penalize long codes more aggressively to allow two-line fit\n const penalty = codeLength > 14 ? (codeLength - 14) * 0.8 : 0;\n const size = Math.max(9, Math.min(22, base - penalty));\n return Math.round(size);\n });\n\n abbrFontSize = computed(() => {\n const width = this.containerWidth();\n const abbrLength = this.timezone()?.abbr?.length ?? 0;\n\n // Base scales with container width (100px -> ~16px, 400px -> ~30px)\n const base = (width / 400) * 18 + 12;\n\n // Penalize unusually long abbreviations\n const penalty = abbrLength > 4 ? (abbrLength - 4) * 1 : 0;\n const size = Math.max(14, Math.min(28, base - penalty));\n return Math.round(size);\n });\n}\n","<div class=\"axm-clock-widget-shell ax-p-2 ax-h-full ax-overflow-hidden\">\n <div\n class=\"axm-clock-widget-layout ax-flex ax-flex-col ax-items-center ax-justify-around ax-gap-3 ax-flex-1 ax-h-full\"\n >\n <div\n class=\"axm-clock-main-card ax-flex ax-items-center ax-justify-around ax-gap-3 ax-w-full ax-grow\"\n [class.ax-flex-row]=\"isHorizontal()\"\n [class.ax-flex-col]=\"!isHorizontal()\"\n [class.axm-clock-main-card--compact]=\"others().length === 0\"\n >\n <div\n class=\"ax-aspect-square ax-flex ax-items-center ax-justify-center ax-min-w-[100px] ax-min-h-[100px] axm-clock-main-dial\"\n [style.height]=\"isHorizontal() ? '100%' : 'auto'\"\n [style.width]=\"isHorizontal() ? 'auto' : '100%'\"\n >\n <axm-analog-clock [timezone]=\"timezone()?.iana\" [classes]=\"'axm-clock-face-theme'\"></axm-analog-clock>\n </div>\n @if (timezone()?.abbr) {\n <div\n class=\"axm-clock-main-meta ax-flex ax-flex-col ax-items-center ax-justify-center ax-text-center ax-min-w-[70px] ax-gap-2\"\n >\n @if (timezone()?.code) {\n <span\n class=\"axm-clock-main-code ax-font-medium ax-uppercase ax-block ax-2line\"\n [style.fontSize.px]=\"codeFontSize()\"\n >{{ timezone()?.code }}</span\n >\n }\n <span class=\"axm-clock-main-abbr ax-font-bold ax-mt-0\" [style.fontSize.px]=\"abbrFontSize()\">\n {{ timezone()?.abbr }}\n </span>\n </div>\n }\n </div>\n\n @if (others().length > 0) {\n <div class=\"axm-clock-others-wrap ax-w-full ax-max-w-4xl ax-mx-auto\">\n <div\n class=\"ax-flex ax-justify-around ax-items-center\"\n [class.ax-flex-wrap]=\"hasEnoughSpaceForHorizontal()\"\n [class.ax-gap-3]=\"true\"\n [class.ax-overflow-auto]=\"true\"\n >\n @for (clock of others(); track clock.code) {\n <div\n class=\"axm-clock-mini-card ax-flex ax-flex-col ax-items-center ax-justify-center ax-p-2 ax-flex-wrap ax-gap-2\"\n >\n <div\n [axTooltip]=\"clock.code\"\n [axTooltipPlacement]=\"'top'\"\n class=\"ax-aspect-square ax-flex ax-items-center ax-justify-center ax-rounded-lg ax-size-16\"\n >\n <axm-analog-clock\n [timezone]=\"clock.iana\"\n [showNumbers]=\"false\"\n [classes]=\"'axm-clock-face-theme-mini'\"\n ></axm-analog-clock>\n </div>\n @if (clock.abbr) {\n <div\n [class.ax-text-center]=\"hasEnoughSpaceForHorizontal()\"\n [class.ax-pt-1]=\"hasEnoughSpaceForHorizontal()\"\n [class.ax-pl-1]=\"!hasEnoughSpaceForHorizontal()\"\n >\n <span class=\"axm-clock-mini-abbr ax-text-xs ax-font-medium ax-truncate ax-block\">{{\n clock.abbr\n }}</span>\n @if (clock.code) {\n <span class=\"axm-clock-mini-code ax-text-xs ax-font-light ax-truncate ax-block\">{{\n clock.code\n }}</span>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n </div>\n</div>\n","import { RootConfig } from '../../../../../const';\nimport { AXPWidgetConfig, AXPWidgetGroupEnum, AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PROPERTY_GROUP } from '@acorex/platform/layout/widgets';\nimport { AXP_WIDGETS_UTILITY_CATEGORY } from '../../widget-categories.type';\nimport { AXP_DASHBOARD_SHARED_SUB_UTILITY_TIME } from '../../widget-subcategories.type';\n\nexport const AXPAnalogClockWidget: AXPWidgetConfig = {\n name: RootConfig.widgets.analogClock,\n title: '@dashboard:widgets.analog-clock.widget-title',\n description: '@dashboard:widgets.analog-clock.widget-description',\n type: 'view',\n categories: [AXP_WIDGETS_UTILITY_CATEGORY],\n subCategory: AXP_DASHBOARD_SHARED_SUB_UTILITY_TIME,\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n icon: 'fa-light fa-clock',\n properties: [\n {\n name: 'timezone',\n title: '@dashboard:widgets.analog-clock.timezone',\n group: AXP_DATA_PROPERTY_GROUP,\n schema: {\n dataType: 'object',\n interface: {\n name: 'timezone',\n path: 'options.timezone',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: 'timezones',\n textField: 'title',\n valueField: 'code',\n },\n },\n },\n visible: true,\n order: 1,\n },\n {\n name: 'others',\n title: '@dashboard:widgets.analog-clock.other-timezones',\n group: AXP_DATA_PROPERTY_GROUP,\n schema: {\n dataType: 'object',\n interface: {\n name: 'others',\n path: 'options.others',\n type: AXPWidgetsCatalog.select,\n options: {\n multiple: true,\n dataSource: 'timezones',\n textField: 'title',\n valueField: 'code',\n },\n },\n },\n visible: true,\n order: 2,\n },\n ],\n components: {\n view: {\n component: () => import('./analog-clock-widget-view.component').then((c) => c.AXMClockWidgetViewComponent),\n },\n },\n meta: {\n dimensions: {\n lg: {\n width: 3,\n height: 3,\n minWidth: 3,\n minHeight: 2,\n maxWidth: 3,\n maxHeight: 7,\n },\n md: {\n width: 3,\n height: 3,\n minWidth: 3,\n minHeight: 2,\n maxWidth: 3,\n maxHeight: 7,\n },\n sm: {\n height: 3,\n minHeight: 2,\n maxHeight: 7,\n },\n },\n },\n};\n","import { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTagModule } from '@acorex/components/tag';\nimport { AXDateTimeModule } from '@acorex/core/date-time';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXPDashboardWidgetComponent } from '../../dashboard-widget-base';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnDestroy,\n OnInit,\n Signal,\n computed,\n inject,\n} from '@angular/core';\nimport { Subscription, interval } from 'rxjs';\nimport { AXPHourNumber } from './clock-calendar.types';\n\n@Component({\n templateUrl: './clock-calendar-widget.component.html',\n styleUrls: ['./clock-calendar-widget.component.scss'],\n standalone: true,\n imports: [CommonModule, AXDateTimeModule, AXFormatModule, AXTagModule, AXDecoratorModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPClockCalendarWidgetViewComponent extends AXPDashboardWidgetComponent implements OnInit, OnDestroy {\n // Dependencies\n private readonly cdr = inject(ChangeDetectorRef);\n\n // Time state\n protected currentTime = new Date();\n protected currentDate = new Date();\n private clockSubscription: Subscription | null = null;\n\n // Static clock elements\n protected readonly clockHours = Array.from({ length: 12 }, (_, i) => i + 1);\n protected readonly clockHourNumbers: AXPHourNumber[] = Array.from({ length: 12 }, (_, i) => ({\n number: i === 0 ? 12 : i,\n angle: i * 30,\n }));\n\n // Clock hands rotation angles\n protected hourRotation = 0;\n protected minuteRotation = 0;\n protected secondRotation = 0;\n\n // Options with computed properties and defaults\n protected readonly displayLayout: Signal<string> = computed(() => this.options()?.['displayLayout']?.id ?? 'both');\n\n protected readonly showDigitalClock: Signal<boolean> = computed(() => {\n const layout = this.displayLayout();\n return layout === 'both' || layout === 'digital';\n });\n\n protected readonly showAnalogClock: Signal<boolean> = computed(() => {\n const layout = this.displayLayout();\n return layout === 'both' || layout === 'analog';\n });\n\n protected readonly showDate: Signal<boolean> = computed(() => this.options()?.['showDate'] !== false);\n\n protected readonly showDayOfWeek: Signal<boolean> = computed(() => this.options()?.['showDayOfWeek'] !== false);\n\n protected readonly use24Hour: Signal<boolean> = computed(() => this.options()?.['use24Hour'] === true);\n\n protected readonly showSeconds: Signal<boolean> = computed(() => this.options()?.['showSeconds'] !== false);\n\n protected readonly dateFormat: Signal<string> = computed(() => this.options()?.['dateFormat']?.id ?? 'DD MMM YYYY');\n\n protected readonly timezone: Signal<string> = computed(() => this.options()?.['timezone']?.id ?? 'local');\n\n // protected readonly showTimezoneIndicator: Signal<boolean> = computed(() => this.timezone() !== 'local');\n\n protected readonly displayTimezone: Signal<string> = computed(() => {\n const tz = this.timezone();\n if (tz === 'local') return '';\n\n if (tz.startsWith('UTC')) {\n const [match, sign, hours, minutes] = tz.match(/UTC([+-])(\\d+):?(\\d+)?/) ?? [];\n if (match) {\n if (!minutes || minutes === '00') {\n return `UTC${sign}${parseInt(hours)}`;\n }\n return `UTC${sign}${parseInt(hours)}:${minutes}`;\n }\n }\n return tz;\n });\n\n protected readonly timeFormat: Signal<string> = computed(() =>\n this.showSeconds() ? (this.use24Hour() ? 'HH:mm:ss' : 'hh:mm:ss a') : this.use24Hour() ? 'HH:mm' : 'hh:mm a',\n );\n\n override ngOnInit(): void {\n super.ngOnInit();\n this.startClockTimer();\n this.updateTime();\n }\n\n ngOnDestroy(): void {\n this.stopClockTimer();\n }\n\n private startClockTimer(): void {\n this.stopClockTimer();\n this.clockSubscription = interval(1000).subscribe(() => this.updateTime());\n }\n\n private stopClockTimer(): void {\n this.clockSubscription?.unsubscribe();\n this.clockSubscription = null;\n }\n\n private updateTime(): void {\n const now = this.getAdjustedTime();\n this.currentTime = now;\n this.currentDate = now;\n\n this.updateClockHandsRotation(now);\n this.cdr.markForCheck();\n }\n\n private getAdjustedTime(): Date {\n const now = new Date();\n const tz = this.timezone();\n\n if (tz === 'local' || !tz.startsWith('UTC')) {\n return now;\n }\n\n const [match, sign, hours, minutes] = tz.match(/UTC([+-])(\\d+):?(\\d+)?/) ?? [];\n if (!match) {\n return now;\n }\n\n const offsetHours = parseInt(hours) * (sign === '+' ? 1 : -1);\n const offsetMinutes = minutes ? parseInt(minutes) * (sign === '+' ? 1 : -1) : 0;\n\n const utcTime = now.getTime() + now.getTimezoneOffset() * 60000;\n return new Date(utcTime + (offsetHours * 3600000 + offsetMinutes * 60000));\n }\n\n private updateClockHandsRotation(now: Date): void {\n const hours = now.getHours() % 12;\n const minutes = now.getMinutes();\n const seconds = now.getSeconds();\n\n // For analog clocks:\n // - 12 o'clock is 0°\n // - 3 o'clock is 90°\n // - 6 o'clock is 180°\n // - 9 o'clock is 270°\n\n // Hour hand: 30° per hour (360°/12) plus gradual movement from minutes\n this.hourRotation = hours * 30 + minutes / 2 + 180;\n\n // Minute hand: 6° per minute (360°/60)\n this.minuteRotation = minutes * 6 + 180;\n\n // Second hand: 6° per second (360°/60)\n this.secondRotation = seconds * 6 + 180;\n }\n\n protected initializeWidget(): void {\n this.updateTime();\n }\n\n protected updateWidget(): void {\n this.stopClockTimer();\n this.startClockTimer();\n this.updateTime();\n }\n\n protected destroyWidget(): void {\n this.stopClockTimer();\n }\n\n protected getDayOfWeek(): string {\n const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n return days[this.currentDate.getDay()];\n }\n}\n","<div class=\"axp-clock-calendar-container\">\n <!-- Timezone indicator (only shown when not local) -->\n <!-- @if (showTimezoneIndicator()) {\n <div class=\"axp-clock-calendar-timezone-badge\"><i class=\"fa-solid fa-globe\"></i> {{ displayTimezone() }}</div>\n } -->\n\n <!-- Day of week display -->\n @if (showDayOfWeek()) {\n <div class=\"axp-clock-calendar-day-label\">{{ getDayOfWeek() }}</div>\n }\n\n <div class=\"axp-clock-calendar-content\">\n <!-- Digital Clock Display -->\n @if (showDigitalClock()) {\n <div class=\"axp-clock-calendar-digital-clock\">\n {{ currentTime | format: 'datetime' : timeFormat() | async }}\n </div>\n }\n\n <!-- Analog Clock Display -->\n @if (showAnalogClock()) {\n <div class=\"axp-clock-calendar-analog-clock\">\n <!-- Hour markers -->\n @for (hour of clockHours; track hour) {\n <div\n class=\"axp-clock-calendar-hour-marker\"\n [style.transform]=\"'rotate(' + hour * 30 + 'deg) translateY(-80px)'\"\n ></div>\n }\n\n <!-- Clock Numbers -->\n <div class=\"axp-clock-calendar-numbers-container\">\n @for (hour of clockHourNumbers; track hour) {\n <div\n class=\"axp-clock-calendar-hour-number\"\n [style.transform]=\"'rotate(' + hour.angle + 'deg) translateY(-82px)'\"\n >\n <span [style.transform]=\"'rotate(' + -hour.angle + 'deg)'\">{{ hour.number }}</span>\n </div>\n }\n </div>\n\n <!-- Clock Hands -->\n <div class=\"axp-clock-calendar-hands-container\">\n <div class=\"axp-clock-calendar-hour-hand\" [style.transform]=\"'rotate(' + hourRotation + 'deg)'\"></div>\n <div class=\"axp-clock-calendar-minute-hand\" [style.transform]=\"'rotate(' + minuteRotation + 'deg)'\"></div>\n @if (showSeconds()) {\n <div class=\"axp-clock-calendar-second-hand\" [style.transform]=\"'rotate(' + secondRotation + 'deg)'\"></div>\n }\n <div class=\"axp-clock-calendar-center-dot\"></div>\n </div>\n </div>\n }\n\n <!-- Date Display -->\n @if (showDate()) {\n <div class=\"axp-clock-calendar-date-display\">\n <i class=\"fa-regular fa-calendar\"></i>\n {{ currentDate | format: 'datetime' : dateFormat() | async }}\n </div>\n }\n </div>\n</div>\n","/**\n * ACoreX Clock Calendar Widget Types\n * Contains all types and interfaces for the Clock Calendar widget\n */\n\n/**\n * Clock layout display options\n */\nexport type AXPClockLayout = 'both' | 'digital' | 'analog';\n\n/**\n * Clock timezone options\n */\nexport interface AXPTimezoneOption {\n id: string;\n title: string;\n}\n\n/**\n * Date format options\n */\nexport interface AXPDateFormatOption {\n id: string;\n title: string;\n}\n\n/**\n * Hour number definition for the analog clock\n */\nexport interface AXPHourNumber {\n number: number;\n angle: number;\n}\n\n/**\n * Widget options for configuring the clock-calendar\n */\nexport interface AXPClockCalendarOptions {\n // Display options\n displayLayout?: AXPClockLayout;\n showDate?: boolean;\n showDayOfWeek?: boolean;\n\n // Clock settings\n use24Hour?: boolean;\n showSeconds?: boolean;\n showHourMarkers?: boolean;\n\n // Date format\n dateFormat?: string;\n\n // Timezone\n timezone?: string;\n}\n\n/**\n * Common timezone options for the widget configuration\n */\nexport const AXP_TIMEZONE_OPTIONS: AXPTimezoneOption[] = [\n { id: 'local', title: 'Local Time' },\n { id: 'UTC+0', title: 'UTC (GMT)' },\n { id: 'UTC+1', title: 'Central European Time (UTC+1)' },\n { id: 'UTC+2', title: 'Eastern European Time (UTC+2)' },\n { id: 'UTC+3', title: 'Moscow Time (UTC+3)' },\n { id: 'UTC+4', title: 'Gulf Time (UTC+4)' },\n { id: 'UTC+5:30', title: 'Indian Time (UTC+5:30)' },\n { id: 'UTC+8', title: 'China Time (UTC+8)' },\n { id: 'UTC+9', title: 'Japan Time (UTC+9)' },\n { id: 'UTC+10', title: 'Australian Eastern Time (UTC+10)' },\n { id: 'UTC-5', title: 'Eastern Time (UTC-5)' },\n { id: 'UTC-6', title: 'Central Time (UTC-6)' },\n { id: 'UTC-7', title: 'Mountain Time (UTC-7)' },\n { id: 'UTC-8', title: 'Pacific Time (UTC-8)' },\n];\n\n/**\n * Common date format options for the widget configuration\n */\nexport const AXP_DATE_FORMAT_OPTIONS: AXPDateFormatOption[] = [\n { id: 'DD MMM YYYY', title: '31 Dec 2023' },\n { id: 'MMM DD, YYYY', title: 'Dec 31, 2023' },\n { id: 'DD/MM/YYYY', title: '31/12/2023' },\n { id: 'MM/DD/YYYY', title: '12/31/2023' },\n];\n","import { RootConfig } from '../../../../../const';\nimport { AXPWidgetConfig, AXPWidgetGroupEnum, AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport { AXP_APPEARANCE_PROPERTY_GROUP, AXP_BEHAVIOR_PROPERTY_GROUP } from '@acorex/platform/layout/widgets';\nimport { AXP_WIDGETS_UTILITY_CATEGORY } from '../../widget-categories.type';\nimport { AXP_DASHBOARD_SHARED_SUB_UTILITY_TIME } from '../../widget-subcategories.type';\nimport { AXP_DATE_FORMAT_OPTIONS, AXP_TIMEZONE_OPTIONS } from './clock-calendar.types';\n\nexport const AXPClockCalendarWidget: AXPWidgetConfig = {\n name: RootConfig.widgets.clockCalendar,\n title: '@dashboard:widgets.clock-calendar.widget-title',\n description: '@dashboard:widgets.clock-calendar.widget-description',\n categories: [AXP_WIDGETS_UTILITY_CATEGORY],\n subCategory: AXP_DASHBOARD_SHARED_SUB_UTILITY_TIME,\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n type: 'dashboard',\n icon: 'fa-light fa-clock',\n properties: [\n // ====== Title ======\n {\n name: 'title',\n title: '@dashboard:widgets.clock-calendar.chart-title',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'title',\n path: 'options.title',\n type: AXPWidgetsCatalog.text,\n options: {\n placeholder: '@dashboard:widgets.clock-calendar.title-placeholder',\n },\n },\n },\n visible: true,\n },\n // ====== Display Settings ======\n {\n name: 'displayLayout',\n title: '@dashboard:widgets.clock-calendar.display-layout',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n dataType: 'string',\n defaultValue: 'both',\n interface: {\n name: 'displayLayout',\n path: 'options.displayLayout',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: [\n { id: 'both', title: '@dashboard:widgets.clock-calendar.layout-both' },\n { id: 'digital', title: '@dashboard:widgets.clock-calendar.layout-digital' },\n { id: 'analog', title: '@dashboard:widgets.clock-calendar.layout-analog' },\n ],\n },\n },\n },\n visible: true,\n },\n {\n name: 'showDate',\n title: '@dashboard:widgets.clock-calendar.show-date',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showDate',\n path: 'options.showDate',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'showDayOfWeek',\n title: '@dashboard:widgets.clock-calendar.show-day-of-week',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showDayOfWeek',\n path: 'options.showDayOfWeek',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n\n // ====== Time Format Settings ======\n {\n name: 'use24Hour',\n title: '@dashboard:widgets.clock-calendar.use-24-hour',\n group: AXP_BEHAVIOR_PROPERTY_GROUP,\n schema: {\n defaultValue: false,\n dataType: 'boolean',\n interface: {\n name: 'use24Hour',\n path: 'options.use24Hour',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'showSeconds',\n title: '@dashboard:widgets.clock-calendar.show-seconds',\n group: AXP_BEHAVIOR_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showSeconds',\n path: 'options.showSeconds',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n // {\n // name: 'showHourMarkers',\n // title: 'Show Hour Markers',\n // group: AXP_APPEARANCE_PROPERTY_GROUP,\n // schema: {\n // defaultValue: true,\n // dataType: 'boolean',\n // interface: {\n // name: 'showHourMarkers',\n // path: 'options.showHourMarkers',\n // type: AXPWidgetsCatalog.toggle,\n // },\n // },\n // visible: true,\n // },\n {\n name: 'dateFormat',\n title: '@dashboard:widgets.clock-calendar.date-format',\n group: AXP_BEHAVIOR_PROPERTY_GROUP,\n schema: {\n defaultValue: 'DD MMM YYYY',\n dataType: 'string',\n interface: {\n name: 'dateFormat',\n path: 'options.dateFormat',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: AXP_DATE_FORMAT_OPTIONS,\n },\n },\n },\n visible: true,\n },\n {\n name: 'timezone',\n title: '@dashboard:widgets.clock-calendar.timezone',\n group: AXP_BEHAVIOR_PROPERTY_GROUP,\n schema: {\n defaultValue: 'local',\n dataType: 'string',\n interface: {\n name: 'timezone',\n path: 'options.timezone',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: AXP_TIMEZONE_OPTIONS,\n },\n },\n },\n visible: true,\n },\n ],\n components: {\n view: {\n component: () => import('./clock-calendar-widget.component').then((m) => m.AXPClockCalendarWidgetViewComponent),\n },\n },\n meta: {\n dimensions: {\n lg: {\n width: 2,\n height: 5,\n minWidth: 2,\n minHeight: 2,\n maxWidth: 3,\n maxHeight: 6,\n },\n md: {\n width: 2,\n height: 5,\n minWidth: 2,\n minHeight: 2,\n maxWidth: 3,\n maxHeight: 6,\n },\n sm: {\n height: 5,\n minHeight: 2,\n maxHeight: 6,\n },\n },\n },\n};\n","import { AXPopupService } from '@acorex/components/popup';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXP_GLOBAL_SEARCH_CONFIG_TOKEN } from '@acorex/modules/common';\nimport { AXPSearchDisplayResult } from '@acorex/platform/common';\nimport { AXPDataGenerator, AXPExecuteCommand } from '@acorex/platform/core';\nimport { AXPPageLayoutBase } from '@acorex/platform/layout/views';\nimport { AXPCommandService } from '@acorex/platform/runtime';\nimport { AXPDashboardWidgetComponent } from '../../dashboard-widget-base';\nimport { AXPWorkflowService } from '@acorex/platform/workflow';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, HostBinding, inject } from '@angular/core';\n\nexport interface AXPShortcutItem {\n name: string;\n title: string;\n description?: string;\n icon: string;\n command: AXPExecuteCommand;\n}\n\n@Component({\n templateUrl: './shortcut-widget-view.component.html',\n styleUrls: ['./shortcut-widget-view.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXTranslationModule],\n})\nexport class AXPShortcutWidgetViewComponent extends AXPDashboardWidgetComponent {\n private popupService = inject(AXPopupService);\n private workflow = inject(AXPWorkflowService);\n private commandService = inject(AXPCommandService);\n private page = inject(AXPPageLayoutBase, { optional: true });\n private searchConfig = inject(AXP_GLOBAL_SEARCH_CONFIG_TOKEN);\n\n protected item = computed<AXPShortcutItem>(() => this.options()['item'] as AXPShortcutItem);\n protected color = computed<string>(() => this.options()['color'] as string);\n\n override ngOnInit(): void {\n super.ngOnInit();\n if (!this.color()) {\n this.setOptions({\n color: AXPDataGenerator.color(),\n });\n }\n }\n\n protected async executeCommand() {\n debugger\n const command = this.item()?.command;\n if (!command) {\n return;\n }\n\n const reservedWorkflowCommands = ['navigate'];\n if (reservedWorkflowCommands.includes(command.name)) {\n await this.workflow.execute(command.name, command.options);\n return;\n }\n\n if (this.commandService.exists(command.name)) {\n await this.commandService.execute(command.name, command.options ?? {});\n return;\n }\n\n if (this.page) {\n await this.page.execute(command);\n return;\n }\n\n await this.workflow.execute(command.name, command.options);\n }\n\n protected async setCommand() {\n const component = await this.searchConfig.window();\n const popup = await this.popupService.open(component, {\n title: 'Choose command...',\n size: 'fit',\n closeOnBackdropClick: true,\n header: false,\n });\n if (popup.data) {\n const result = popup.data as AXPSearchDisplayResult;\n if (result && result.command) {\n this.setOptions({\n item: {\n name: result.name,\n title: result.title,\n description: result.description,\n icon: result.icon,\n command: result.command,\n } as AXPShortcutItem,\n });\n }\n }\n }\n\n @HostBinding('style')\n private get __style() {\n const cls: any = {};\n cls[`background-color`] = this.color();\n return cls;\n }\n\n @HostBinding('class')\n private get __class() {\n const cls: any = {};\n cls[`ax-flex`] = true;\n cls[`ax-flex-col`] = true;\n cls[`ax-items-center`] = true;\n cls[`ax-justify-center`] = true;\n cls[`ax-w-full`] = true;\n cls[`ax-h-full`] = true;\n cls[`ax-text-center`] = true;\n cls[`ax-overflow-hidden`] = true;\n cls[`ax-cursor-pointer`] = true;\n cls[`ax-text-white`] = true;\n return cls;\n }\n}\n","@if (item()) {\n <div\n class=\"ax-group ax-flex ax-flex-col ax-items-center ax-justify-center ax-p-3 ax-w-full ax-h-full ax-relative ax-overflow-hidden \"\n (click)=\"executeCommand()\"\n >\n <div class=\"ax-absolute ax-inset-0 ax-bg-black/0 hover:ax-bg-black/10 ax-transition-opacity\"></div>\n <i [class]=\"item().icon + ' ax-text-3xl'\"></i>\n <span class=\"ax-text-xl ax-font-semibold\">{{ item().title | translate | async }}</span>\n @if (item().description) {\n <span class=\"ax-text-sm ax-opacity-90 ax-text-center ax-px-2\">{{ item().description! | translate | async }}</span>\n }\n </div>\n} @else {\n <div\n (click)=\"setCommand()\"\n class=\"ax-group ax-flex ax-flex-col ax-items-center ax-justify-center ax-p-3 ax-w-full ax-h-full ax-relative ax-overflow-hidden\"\n >\n <div class=\"ax-absolute ax-inset-0 ax-bg-black/0 hover:ax-bg-black/5 ax-transition-opacity\"></div>\n <i class=\"fa-light fa-plus ax-text-3xl\"></i>\n <span class=\"ax-text-xl ax-font-semibold\">{{\n '@dashboard:widgets.shortcut.add-shortcut' | translate | async\n }}</span>\n </div>\n}\n","import { RootConfig } from '../../../../../const';\nimport { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core';\nimport { AXP_COLOR_PROPERTY } from '@acorex/platform/layout/widgets';\nimport { AXP_WIDGETS_UTILITY_CATEGORY } from '../../widget-categories.type';\nimport { AXP_DASHBOARD_SHARED_SUB_UTILITY_SHORTCUT } from '../../widget-subcategories.type';\n\nexport const AXPShortcutWidget: AXPWidgetConfig = {\n name: RootConfig.widgets.shortcut,\n title: '@dashboard:widgets.shortcut.widget-title',\n description: '@dashboard:widgets.shortcut.widget-description',\n type: 'view',\n categories: [AXP_WIDGETS_UTILITY_CATEGORY],\n subCategory: AXP_DASHBOARD_SHARED_SUB_UTILITY_SHORTCUT,\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n icon: 'fa-light fa-link',\n properties: [\n {\n ...AXP_COLOR_PROPERTY,\n title: '@dashboard:widgets.shortcut.color',\n },\n ],\n meta: {\n dimensions: {\n lg: {\n width: 2,\n height: 2,\n minWidth: 1,\n minHeight: 1,\n maxWidth: 3,\n maxHeight: 2,\n },\n md: {\n width: 2,\n height: 2,\n minWidth: 1,\n minHeight: 1,\n maxWidth: 3,\n maxHeight: 2,\n },\n sm: {\n height: 2,\n minHeight: 1,\n maxHeight: 2,\n },\n },\n },\n components: {\n view: {\n component: () =>\n import('./shortcut-widget-view.component').then((c) => c.AXPShortcutWidgetViewComponent),\n },\n },\n};\n","import { AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXColorBoxModule } from '@acorex/components/color-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXGridLayoutWidgetComponent } from '@acorex/components/grid-layout-builder';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXToolBarModule } from '@acorex/components/toolbar';\nimport { AXWysiwygContainerComponent, AXWysiwygModule } from '@acorex/components/wysiwyg';\nimport { AXDateTimeModule } from '@acorex/core/date-time';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXPDashboardWidgetComponent } from '../../dashboard-widget-base';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n computed,\n inject,\n linkedSignal,\n signal,\n viewChild,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n templateUrl: './sticky-note-widget.component.html',\n styleUrls: ['./sticky-note-widget.component.scss'],\n standalone: true,\n imports: [\n AXWysiwygModule,\n AXDecoratorModule,\n AXToolBarModule,\n FormsModule,\n AXDateTimeModule,\n AXFormatModule,\n AXPopoverModule,\n CommonModule,\n AXColorBoxModule,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXGridLayoutWidgetComponent,\n useExisting: AXPStickyNoteWidgetViewComponent,\n },\n ],\n})\nexport class AXPStickyNoteWidgetViewComponent extends AXPDashboardWidgetComponent {\n protected isEditing = signal(false);\n private wysiwyg = viewChild<AXWysiwygContainerComponent>('wysiwyg');\n\n /** Note HTML persisted in `options.noteText`. */\n protected value = linkedSignal(() => String(this.options()['noteText'] ?? ''));\n\n protected date = computed(() => this.options()?.['date'] ?? new Date());\n protected bgColor = computed(() => this.options()?.['backgroundColor'] ?? '#FFF8B8');\n protected color = signal('#333333');\n\n private el = inject(ElementRef);\n\n protected colorPresets: string[] = [\n '#FFF8B8',\n '#FFD8E6',\n '#D1F0FF',\n '#E2FFD1',\n '#FFE8D1',\n '#F0D1FF',\n '#FFCDD2',\n '#D1FFF0',\n '#F5F5F5',\n '#FFFFFF',\n ];\n\n @HostListener('document:click', ['$event'])\n handleClickOutside(event: MouseEvent) {\n const clickedInside = (this.el.nativeElement as HTMLElement).contains(event.target as Node);\n if (!clickedInside && this.isEditing()) {\n this.saveChanges();\n }\n }\n\n protected activateEdit() {\n this.wysiwyg()?.focus();\n this.isEditing.set(true);\n }\n\n protected saveChanges() {\n this.setOptions({ noteText: this.value() });\n this.isEditing.set(false);\n }\n\n protected setColor(color: string) {\n this.setOptions({ backgroundColor: color });\n }\n\n protected valueChange(event: AXValueChangedEvent<unknown>) {\n if (event.isUserInteraction) {\n this.value.set(event.value as string);\n }\n }\n}\n","<div\n class=\"sticky-note-container ax-size-full ax-rounded-lg ax-flex ax-flex-col ax-p-4 ax-shadow-md ax-transition-all ax-duration-300 hover:ax-shadow-lg\"\n [style.background-color]=\"bgColor()\"\n [style.color]=\"color()\"\n [class.ax-shadow-lg]=\"isEditing()\"\n [class.ax-scale-[1.02]]=\"isEditing()\"\n (dblclick)=\"activateEdit()\"\n>\n <!-- Header with timestamp -->\n <div class=\"ax-flex ax-justify-between ax-items-center ax-mb-3\">\n <div class=\"ax-text-xs ax-opacity-70 ax-font-medium ax-flex ax-items-center ax-gap-1\">\n <i class=\"fa-regular fa-clock ax-text-[0.65rem]\"></i>\n {{ date() | format: 'datetime' : { format: 'short' } | async }}\n </div>\n </div>\n\n <!-- Content area -->\n <div class=\"ax-flex-1 ax-overflow-auto\">\n <ax-wysiwyg-container\n #wysiwyg\n [class]=\"isEditing() ? 'ax-pointer-events-auto ax-cursor-text' : 'ax-pointer-events-none !ax-cursor-pointer'\"\n class=\"ax-h-full\"\n placeHolder=\"start writing with double click...\"\n look=\"none\"\n (onValueChanged)=\"valueChange($event)\"\n [ngModel]=\"value()\"\n >\n <ax-wysiwyg-view class=\"!ax-size-full ax-border-b-0\"></ax-wysiwyg-view>\n <ax-wysiwyg-toolbar class=\"ax-hidden\"></ax-wysiwyg-toolbar>\n </ax-wysiwyg-container>\n </div>\n\n <!-- Footer with color selector and save button -->\n @if (isEditing()) {\n <div class=\"ax-absolute ax-bottom-2 ax-left-2 ax-right-2 ax-flex ax-flex-wrap ax-gap-1 ax-text-xs\">\n <!-- Color selection bar when in edit mode -->\n <div class=\"ax-flex ax-w-full ax-mt-2 ax-border ax-border-gray-200 ax-overflow-hidden ax-rounded-md\">\n @for (preset of colorPresets; track preset) {\n <div\n class=\"ax-h-6 ax-flex-1 ax-cursor-pointer ax-transition-all ax-duration-200 ax-border-r ax-border-gray-200 last:ax-border-r-0 hover:ax-brightness-95\"\n [style.background-color]=\"preset\"\n [class.ax-ring-inset]=\"bgColor() === preset\"\n [class.ax-ring-2]=\"bgColor() === preset\"\n [class.ax-ring-primary]=\"bgColor() === preset\"\n (click)=\"setColor(preset)\"\n ></div>\n }\n </div>\n </div>\n }\n</div>\n","import { RootConfig } from '../../../../../const';\nimport { AXPWidgetConfig, AXPWidgetGroupEnum, createStringProperty } from '@acorex/platform/layout/widget-core';\nimport { AXP_BG_COLOR_PROPERTY, AXP_DATA_PROPERTY_GROUP } from '@acorex/platform/layout/widgets';\nimport { AXP_WIDGETS_UTILITY_CATEGORY } from '../../widget-categories.type';\nimport { AXP_DASHBOARD_SHARED_SUB_UTILITY_NOTES } from '../../widget-subcategories.type';\n\nexport const AXPStickyNoteWidget: AXPWidgetConfig = {\n name: RootConfig.widgets.stickyNote,\n title: '@dashboard:widgets.sticky-note.widget-title',\n description: '@dashboard:widgets.sticky-note.widget-description',\n categories: AXP_WIDGETS_UTILITY_CATEGORY,\n subCategory: AXP_DASHBOARD_SHARED_SUB_UTILITY_NOTES,\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n type: 'dashboard',\n icon: 'fa-light fa-sticky-note',\n properties: [\n createStringProperty({\n name: 'noteText',\n title: '@dashboard:widgets.sticky-note.note-text',\n path: 'options.noteText',\n group: AXP_DATA_PROPERTY_GROUP,\n defaultValue: '',\n }),\n {\n ...AXP_BG_COLOR_PROPERTY,\n title: '@dashboard:widgets.sticky-note.background-color',\n },\n ],\n components: {\n view: {\n component: () => import('./sticky-note-widget.component').then((c) => c.AXPStickyNoteWidgetViewComponent),\n },\n },\n meta: {\n dimensions: {\n lg: {\n width: 2,\n height: 3,\n minWidth: 2,\n minHeight: 2,\n maxWidth: 4,\n maxHeight: 4,\n },\n md: {\n width: 2,\n height: 3,\n minWidth: 2,\n minHeight: 2,\n maxWidth: 4,\n maxHeight: 4,\n },\n sm: {\n height: 3,\n minHeight: 2,\n maxHeight: 4,\n },\n },\n },\n};\n","//#region ---- Imports ----\n\nimport { AXPWidgetDefinitionProvider } from '@acorex/platform/layout/widget-core';\nimport { Injectable } from '@angular/core';\nimport {\n AXPAdvancedWeatherWidget,\n AXPAnalogClockWidget,\n AXPBarChartWidget,\n AXPDonutChartWidget,\n AXPFunnelChartWidget,\n AXPGaugeChartWidget,\n AXPHeatmapChartWidget,\n AXPLineChartWidget,\n AXPKpiDetailsWidget,\n AXPKpiProgressWidget,\n AXPKpiSegmentedWidget,\n AXPKpiStatCardWidget,\n AXPMinimalWeatherWidget,\n AXPStickyNoteWidget,\n AXPShortcutWidget,\n} from './features/shared/widgets';\n\n//#endregion\n\n//#region ---- Dashboard Management Widgets Provider ----\n\nconst DASHBOARD_WIDGETS = [\n AXPShortcutWidget,\n AXPDonutChartWidget,\n AXPBarChartWidget,\n AXPLineChartWidget,\n AXPFunnelChartWidget,\n AXPHeatmapChartWidget,\n AXPKpiProgressWidget,\n AXPKpiSegmentedWidget,\n AXPKpiDetailsWidget,\n AXPKpiStatCardWidget,\n AXPGaugeChartWidget,\n AXPStickyNoteWidget,\n AXPMinimalWeatherWidget,\n AXPAdvancedWeatherWidget,\n AXPAnalogClockWidget,\n];\n\n@Injectable()\nexport class AXMDashboardManagementWidgetsProvider implements AXPWidgetDefinitionProvider {\n getWidgets() {\n return DASHBOARD_WIDGETS;\n }\n}\n\n//#endregion\n","/** Component key for the dashboard Layout page tab. Register via AXP_PAGE_COMPONENT_PROVIDER. */\nexport const DASHBOARD_LAYOUT_PAGE_COMPONENT_KEY = 'dashboard-layout-page';\n","import { AXPWidgetsList } from '@acorex/modules/common';\nimport { AXPEntity, createQueryView } from '@acorex/platform/common';\nimport { entityMasterCrudActions, entityMasterRecordActions } from '@acorex/platform/layout/entity';\nimport { Injector } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport { DASHBOARD_LAYOUT_PAGE_COMPONENT_KEY } from '../../features/dashboard-layout-page/DASHBOARD_LAYOUT_PAGE_COMPONENT_KEY';\n\nexport async function dashboardFactory(_injector: Injector): Promise<AXPEntity | null> {\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.dashboard.name,\n title: RootConfig.entities.dashboard.title,\n icon: RootConfig.entities.dashboard.icon,\n plugins: [{ name: 'category' }, { name: 'archive' }],\n pages: [\n {\n componentKey: DASHBOARD_LAYOUT_PAGE_COMPONENT_KEY,\n title: '@dashboard-management:dashboards.entities.dashboard.pages.layout.title',\n description: '@dashboard-management:dashboards.entities.dashboard.pages.layout.description',\n icon: 'fa-light fa-table-layout',\n layout: { order: 1, position: 'after' },\n },\n ],\n formats: {\n individual: RootConfig.entities.dashboard.title,\n plural: RootConfig.entities.dashboard.titlePlural,\n displayName: '@general:terms.interface.configuration',\n searchResult: {\n title: '{{ title }}',\n description: RootConfig.module.title,\n },\n },\n relatedEntities: [],\n groups: [\n {\n id: 'section',\n title: RootConfig.entities.dashboard.title,\n },\n {\n id: 'access',\n title: '@dashboard-management:dashboards.entities.dashboard.groups.access.title',\n },\n ],\n properties: [\n {\n name: 'id',\n title: 'ID',\n groupId: 'section',\n schema: { dataType: 'uuid', visible: false, nullable: false, readonly: true, unique: { enabled: true } },\n },\n {\n name: 'title',\n title: '@general:terms.common.title',\n groupId: 'section',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: true,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsList.Editors.TextBox,\n options: {\n multiLanguage: true,\n placeholder: '@general:terms.common.title',\n },\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n\n {\n name: 'description',\n title: '@dashboard-management:dashboards.entities.dashboard.fields.description.title',\n groupId: 'section',\n options: {\n sort: {\n enabled: false,\n },\n filter: {\n advance: {\n enabled: false,\n },\n inline: {\n enabled: false,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsList.Editors.LargeTextBox,\n options: {\n rows: 3,\n multiLanguage: true,\n placeholder: '@general:terms.common.description',\n },\n },\n },\n },\n {\n name: 'scope',\n title: '@dashboard-management:dashboards.entities.dashboard.fields.scope.title',\n groupId: 'access',\n options: {\n sort: { enabled: true },\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n },\n schema: {\n dataType: 'string',\n visible: false,\n interface: {\n type: AXPWidgetsList.Editors.SelectBox,\n options: {\n valueField: 'id',\n dataSource: [\n {\n id: 'T',\n title: '@dashboard-management:dashboards.entities.dashboard.fields.scope.options.tenant',\n },\n {\n id: 'U',\n title: '@dashboard-management:dashboards.entities.dashboard.fields.scope.options.personal',\n },\n ],\n },\n },\n },\n },\n {\n name: 'roleIds',\n title: '@dashboard:roles',\n groupId: 'access',\n schema: {\n dataType: 'object',\n visible: `{{ !context.eval(\"scope\") || context.eval(\"scope\") === \"T\" }}`,\n interface: {\n type: AXPWidgetsList.Editors.LookupBox,\n options: {\n entity: 'SecurityManagement.Role',\n multiple: true,\n look: 'select',\n },\n },\n },\n },\n ],\n columns: [{ name: 'title' }, { name: 'description' }],\n interfaces: {\n master: {\n create: {\n sections: [{ id: 'section' }, { id: 'access' }],\n properties: [\n { name: 'title', layout: { positions: { lg: { colSpan: 6, order: 1 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 2 } } } },\n { name: 'roleIds', layout: { positions: { lg: { colSpan: 12, order: 3 } } } },\n ],\n },\n update: {\n sections: [{ id: 'section' }, { id: 'access' }],\n properties: [\n { name: 'title', layout: { positions: { lg: { colSpan: 6, order: 1 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 2 } } } },\n { name: 'roleIds', layout: { positions: { lg: { colSpan: 12, order: 3 } } } },\n ],\n },\n single: {\n title: '{{title}}',\n sections: [{ id: 'section', layout: { positions: { lg: { colSpan: 12 } } } }, { id: 'access' }],\n properties: [\n { name: 'title', layout: { positions: { lg: { colSpan: 6, order: 1 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 2 } } } },\n { name: 'roleIds', layout: { positions: { lg: { colSpan: 12, order: 3 } } } },\n ],\n actions: [...entityMasterRecordActions()],\n },\n list: {\n actions: [...entityMasterCrudActions()],\n views: [\n createQueryView('tenant', '@dashboard-management:dashboards.entities.dashboard.views.tenant', true, {\n sorts: [{ name: 'title', dir: 'asc' }],\n conditions: [{ name: 'scope', operator: { type: 'equal' }, value: 'T' }],\n }),\n ],\n },\n },\n },\n };\n\n return entityDef;\n}\n","import type { AXPMultiLanguageString } from '@acorex/platform/core';\nimport type { AXPEntityModel } from '@acorex/platform/layout/entity';\nimport type { AXMDashboardWidgetData } from '../../features/dashboard-services/home-dashboard.type';\n\n//#region ---- Dashboard Types ----\n\n/**\n * Dashboard visibility scope.\n * - `T`: Tenant shared dashboard\n * - `U`: User personal dashboard\n */\nexport type AXMDashboardScope = 'U' | 'T';\n\n/**\n * Persisted dashboard entity model.\n * Includes core entity fields plus plugin/runtime fields used by dashboard UX.\n */\nexport interface AXMCommonDashboardEntityModel extends AXPEntityModel<string> {\n /** Dashboard title shown in lists and headers. */\n title: AXPMultiLanguageString;\n /** Optional dashboard description. */\n description?: AXPMultiLanguageString;\n /** Dashboard widget tree and responsive layout payload. */\n widgets: AXMDashboardWidgetData[];\n /** Owner user id for personal dashboards. */\n userId?: string;\n /** Allowed role ids for tenant dashboards. */\n roleIds?: string[];\n /** Archive plugin flag. */\n isArchived?: boolean;\n /** Archive plugin timestamp. */\n archivedAt?: string | Date;\n /** Lock flag used to prevent editing shared dashboards. */\n locked?: boolean;\n /** Dashboard scope (`T` tenant/shared, `U` personal). */\n scope: AXMDashboardScope;\n /** Assigned by the category plugin (`categoryIds` property). */\n categoryIds?: string[];\n}\n\n//#endregion\n","import { AXPEntityStorageMiddleware } from '@acorex/platform/layout/entity';\nimport { RootConfig } from '../../const';\n\n//#region ---- Constants ----\n\nconst DASHBOARD_ENTITY_KEY = `${RootConfig.module.name}.${RootConfig.entities.dashboard.name}`;\n\n//#endregion\n\n//#region ---- Middleware ----\n\n/**\n * Ensures admin-created dashboards are tenant scoped and tenant dashboards stay locked.\n */\nexport const dashboardDefaultTenantScopeMiddleware: AXPEntityStorageMiddleware = {\n target: { ops: ['create', 'update'], order: 4 },\n execute: async (ctx, next) => {\n if (ctx.entityName !== DASHBOARD_ENTITY_KEY || ctx.data == null || typeof ctx.data !== 'object') {\n await next();\n return;\n }\n const payload = ctx.data as Record<string, unknown>;\n const scope = payload['scope'];\n if (scope === undefined || scope === null || scope === '') {\n payload['scope'] = 'T';\n }\n if (payload['scope'] === 'T') {\n payload['locked'] = true;\n }\n await next();\n },\n};\n\n//#endregion\n","import { AXP_ENTITY_STORAGE_MIDDLEWARE } from '@acorex/platform/layout/entity';\nimport { NgModule } from '@angular/core';\nimport { dashboardDefaultTenantScopeMiddleware } from './dashboard-default-scope.middleware';\n\n@NgModule({\n imports: [],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXP_ENTITY_STORAGE_MIDDLEWARE,\n multi: true,\n useValue: dashboardDefaultTenantScopeMiddleware,\n },\n ],\n})\nexport class AXMDashboardEntityModule { }\n","// Entity Services\nexport * from './dashboard';\n\n// Entity Modules\nexport * from './dashboard/dashboard.module';\n","import { AXP_PERMISSION_DEFINITION_PROVIDER, AXPAuthGuard } from '@acorex/platform/auth';\nimport { AXP_HOME_PAGE_DEFAULT_KEY, AXP_HOME_PAGES, AXP_MENU_PROVIDER } from '@acorex/platform/common';\nimport { AXP_MODULE_MANIFEST_PROVIDER, provideLazyProvider } from '@acorex/platform/core';\nimport { AXP_PAGE_COMPONENT_PROVIDER } from '@acorex/platform/layout/components';\nimport { AXP_ENTITY_CONFIG_TOKEN, AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';\nimport { AXP_WIDGET_DEFINITION_PROVIDER, AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport { AXPWidgetsModule } from '@acorex/platform/layout/widgets';\nimport { inject, NgModule } from '@angular/core';\nimport { Route } from '@angular/router';\nimport { AXMEntityProvider } from './entity.provider';\nimport { DashboardManagementManifest } from './manifest';\nimport { AXMMenuProvider } from './menu.provider';\nimport { AXMPermissionDefinitionProvider } from './permission-definition.provider';\nimport { AXMDashboardManagementWidgetsProvider } from './widget-definition.provider';\n\n// Entity Modules\nimport { AXMDashboardEntityModule } from './entities';\n\nfunction createAppRoute(): Route {\n const config = inject(AXP_ENTITY_CONFIG_TOKEN);\n return {\n path: ':app',\n canActivate: [AXPAuthGuard],\n loadComponent: () => {\n return config.viewers.root();\n },\n children: [\n {\n path: 'dashboard',\n loadComponent: () =>\n import('./features/home-dashboard/dashboard-home/home-dashboard').then((c) => c.AXMDashboardHomeComponent),\n },\n ],\n };\n}\n\n@NgModule({\n imports: [\n AXPWidgetCoreModule,\n // Entity Modules\n AXMDashboardEntityModule,\n ],\n providers: [\n { provide: AXP_WIDGET_DEFINITION_PROVIDER, useClass: AXMDashboardManagementWidgetsProvider, multi: true },\n {\n provide: AXP_HOME_PAGES,\n multi: true,\n useFactory: () => [\n {\n key: 'dashboard',\n title: 'Dashboard',\n route: createAppRoute(),\n },\n ],\n },\n // Module-specific providers (not part of manifest system)\n AXPWidgetsModule,\n {\n provide: AXP_HOME_PAGE_DEFAULT_KEY,\n useValue: 'dashboard',\n },\n // Module Manifest Provider\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: DashboardManagementManifest,\n multi: true,\n },\n // Provider references (now using tokens)\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useClass: AXMPermissionDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMMenuProvider,\n multi: true,\n },\n {\n provide: AXP_ENTITY_DEFINITION_LOADER,\n useClass: AXMEntityProvider,\n multi: true,\n },\n provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () =>\n import('./features/dashboard-layout-page').then((m) => m.AXMDashboardLayoutPageComponentProvider),\n ),\n ],\n})\nexport class AXMDashboardManagementModule {}\n","export enum AXPHomeDashboardSetting {\n CurrentDashboard = 'DashboardManagement:Setting:Home.CurrentDashboard',\n}\n","import { InjectionToken } from '@angular/core';\n\n/** When true (provided on the dashboard layout entity tab), the store skips the default list query effect. */\nexport const DASHBOARD_LAYOUT_ENTITY_MODE = new InjectionToken<boolean>('DASHBOARD_LAYOUT_ENTITY_MODE');\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXPWidgetNode } from '@acorex/platform/layout/widget-core';\nimport { AXPWidgetPropertiesChangedEvent, AXPWidgetPropertyViewerComponent } from '@acorex/platform/layout/components';\nimport { Component, OnInit, signal } from '@angular/core';\n\n@Component({\n template: `\n @if(widget) {\n <div class=\"ax-px-1\">\n <axp-widget-property-viewer (onChanged)=\"handlePropertyChange($event)\" [widget]=\"widget\">\n </axp-widget-property-viewer>\n </div>\n }\n <ax-footer>\n <ax-prefix></ax-prefix>\n <ax-suffix>\n <ax-button text=\"Cancel\" look=\"solid\" (onClick)=\"handleClose(true)\"> </ax-button>\n <ax-button text=\"Save\" look=\"solid\" color=\"primary\" (onClick)=\"handleClose()\">\n <ax-icon class=\"fa-solid fa-save\"></ax-icon>\n </ax-button>\n </ax-suffix>\n </ax-footer>\n `,\n imports: [AXButtonModule, AXDecoratorModule, AXPWidgetPropertyViewerComponent],\n})\nexport class AXMConfigurationPopup extends AXBasePageComponent implements OnInit {\n widget!: AXPWidgetNode;\n protected readonly widgetData = signal<AXPWidgetNode | null>(null);\n\n override ngOnInit(): void {\n this.widgetData.set(this.widget);\n }\n\n protected async handleClose(isCanceled = false): Promise<void> {\n this.close({\n isCanceled,\n widget: this.widgetData(),\n });\n }\n\n protected handlePropertyChange(event: AXPWidgetPropertiesChangedEvent): void {\n this.widgetData.set(event.values);\n }\n}\n","import { AXPopupService } from '@acorex/components/popup';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXMSecurityManagementRolesEntityService } from '@acorex/modules/security-management';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport type { AXPMultiLanguageString } from '@acorex/platform/core';\nimport { AXPLayoutBuilderService } from '@acorex/platform/layout/builder';\nimport { AXPWidgetNode } from '@acorex/platform/layout/widget-core';\nimport { inject, Injectable } from '@angular/core';\nimport { AXMDashboardLayout } from '../dashboard-home';\nimport { AXMConfigurationPopup } from './configuration-popup';\n\nexport interface AXMDashboardLayoutDialogOptions {\n /** When false, hides the roles field (e.g. home-dashboard edit). Default: admin + tenant scope. */\n showRoleField?: boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AXMDashboardPopupService {\n private readonly popupService = inject(AXPopupService);\n private readonly translateService = inject(AXTranslationService);\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly roleService = inject(AXMSecurityManagementRolesEntityService);\n private readonly sessionService = inject(AXPSessionService);\n\n async generateDashboardLayout(\n data: Partial<AXMDashboardLayout>,\n isAdmin: boolean,\n dialogOptions?: AXMDashboardLayoutDialogOptions,\n ): Promise<AXMDashboardLayout | void> {\n const showRoleByDefault = isAdmin && data?.scope !== 'U';\n const showRoleField = dialogOptions?.showRoleField !== undefined ? dialogOptions.showRoleField : showRoleByDefault;\n const roles = showRoleField\n ? (\n await this.roleService\n .query({ skip: 0, take: 100 })\n .catch(() => ({ items: [] as Array<{ id: string; title: string }> }))\n ).items.map((i: { id: string; title: string }) => ({ id: i.id, title: i.title }))\n : [];\n\n const result = await this.layoutBuilder\n .create()\n .dialog<AXMDashboardLayout | undefined>((dialog) => {\n dialog\n .setTitle('@dashboard:dashboard-info')\n .setSize('sm')\n .setContext({\n title: this.normalizeTitleForFormContext(data?.title),\n description: this.normalizeDescriptionForFormContext(data?.description),\n selectedRoleIds: (data as any)?.roleIds ?? [],\n locked: (data as any)?.locked ?? false,\n isAdmin,\n })\n .content((flex) => {\n flex\n .setDirection('column')\n .formField('@general:terms.common.title', (field) => {\n field.path('title');\n field.textBox({\n placeholder: '@general:terms.common.title',\n multiLanguage: true,\n validations: [{ rule: 'required' }],\n } as any);\n })\n .formField('@general:terms.common.description', (field) => {\n field.path('description');\n field.largeTextBox({\n placeholder: '@general:terms.common.description',\n rows: 3,\n multiLanguage: true,\n } as any);\n })\n .formField('@dashboard:lock', (field) => {\n field.path('locked');\n field.toggleSwitch({});\n });\n // .formField('@dashboard:roles', (field) => {\n // field.path('selectedRoleIds');\n // field.visible(showRoleField ? 'true' : 'false');\n // field.selectionList({\n // valueField: 'id',\n // textField: 'title',\n // dataSource: roles,\n // multiple: true,\n // placeholder: '@dashboard:select-roles',\n // });\n // });\n })\n .setActions((actions) => {\n actions.cancel('@general:actions.cancel.title').submit('@general:actions.save.title');\n })\n .onAction(async (dialogRef) => {\n const context = dialogRef.context();\n const action = dialogRef.action();\n if (!context || action === 'cancel') {\n return undefined;\n }\n const formData = context as Record<string, unknown>;\n const now = new Date();\n const userId = this.sessionService.user?.id;\n return {\n ...(data as any),\n title: this.normalizeTitleFromFormSubmit(formData['title']),\n description: this.normalizeDescriptionFromFormSubmit(formData['description']),\n roleIds: showRoleField ? (formData['selectedRoleIds'] ?? []) : (data as any)?.roleIds,\n locked: this.normalizeBooleanInput(formData['locked'], (data as any)?.locked ?? false),\n scope: (data?.scope ?? (isAdmin ? 'T' : 'U')) as 'U' | 'T',\n createdBy: userId,\n createdAt: now,\n updatedBy: userId,\n updatedAt: now,\n } as AXMDashboardLayout;\n });\n })\n .show();\n\n return result;\n }\n\n async handlePopupConfiguration(widget: AXPWidgetNode): Promise<AXPWidgetNode | void> {\n const result = await this.popupService.open(AXMConfigurationPopup, {\n header: true,\n size: 'sm',\n draggable: true,\n hasBackdrop: true,\n title: await this.translateService.translateAsync('@dashboard:widget-configuration'),\n data: { widget },\n });\n\n if (!result.data) {\n return;\n }\n\n const { isCanceled, ...rest } = result.data;\n if (isCanceled) {\n return;\n }\n\n return rest.widget as AXPWidgetNode;\n }\n\n //#region ---- Description (multi-language) helpers ----\n\n private normalizeTitleForFormContext(\n value: AXPMultiLanguageString | string | undefined | null,\n ): AXPMultiLanguageString | string {\n if (value == null || value === '') {\n return '';\n }\n if (typeof value === 'object' && !Array.isArray(value)) {\n return { ...(value as Record<string, string>) };\n }\n return (value as string).toString();\n }\n\n private normalizeTitleFromFormSubmit(raw: unknown): AXPMultiLanguageString {\n if (raw == null || raw === '') {\n return '';\n }\n if (typeof raw === 'object' && !Array.isArray(raw)) {\n return raw as AXPMultiLanguageString;\n }\n return (raw as string).toString().trim();\n }\n\n private normalizeDescriptionForFormContext(\n value: AXPMultiLanguageString | string | undefined | null,\n ): AXPMultiLanguageString | string {\n if (value == null) {\n return '';\n }\n if (typeof value === 'object' && !Array.isArray(value)) {\n return { ...(value as Record<string, string>) };\n }\n return (value as string).toString();\n }\n\n private normalizeDescriptionFromFormSubmit(raw: unknown): AXPMultiLanguageString {\n if (raw == null || raw === '') {\n return '';\n }\n if (typeof raw === 'object' && !Array.isArray(raw)) {\n return raw as AXPMultiLanguageString;\n }\n return (raw as string).toString().trim();\n }\n\n private normalizeBooleanInput(raw: unknown, fallback = false): boolean {\n if (raw === undefined || raw === null || raw === '') {\n return Boolean(fallback);\n }\n if (typeof raw === 'boolean') {\n return raw;\n }\n if (typeof raw === 'string') {\n const normalized = raw.trim().toLowerCase();\n if (normalized === 'true' || normalized === '1' || normalized === 'yes' || normalized === 'on') {\n return true;\n }\n if (normalized === 'false' || normalized === '0' || normalized === 'no' || normalized === 'off') {\n return false;\n }\n }\n if (typeof raw === 'number') {\n return raw !== 0;\n }\n return Boolean(raw);\n }\n\n //#endregion\n}\n","//#region ---- Imports ----\nimport { RootConfig } from '../../const';\n\nimport { AXDataSourceFilterOption } from '@acorex/cdk/common';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXGridLayoutEvent, AXGridLayoutNode, AXGridLayoutOptions } from '@acorex/components/grid-layout-builder';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXMUsersEntityService } from '@acorex/modules/security-management';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPSettingsService } from '@acorex/platform/common';\nimport {\n AXPDataGenerator,\n AXPDeviceService,\n AXPPlatformScope,\n type AXPMultiLanguageString,\n} from '@acorex/platform/core';\nimport { AXP_WIDGET_PICKER_TAB_CONTEXT, AXPWidgetPickerService } from '@acorex/platform/layout/designer';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { AXPWidgetGroupEnum, AXPWidgetNode } from '@acorex/platform/layout/widget-core';\nimport { computed, effect, inject } from '@angular/core';\nimport { patchState, signalStore, withComputed, withHooks, withMethods, withState } from '@ngrx/signals';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { AXMCommonDashboardEntityModel } from '../../entities/dashboard/dashboard.types';\nimport { AXPHomeDashboardSetting } from '../../settings.keys';\nimport { DASHBOARD_LAYOUT_ENTITY_MODE } from '../dashboard-layout-page/dashboard-layout-entity-mode.token';\nimport { AXMDashboardPopupService } from '../home-dashboard/dashboard-popups/dashboard-popup.service';\nimport { AXMDashboardBreakpoint, AXMDashboardLayout, AXMDashboardWidgetData } from './home-dashboard.type';\n\n//#endregion\n\n//#region ---- Types ----\n\n/**\n * State container for dashboard feature.\n */\ninterface DashboardState {\n dashboards: AXMDashboardLayout[];\n allDashboards: AXMDashboardLayout[];\n currentDashboardId: string | null;\n isAdmin: boolean;\n dashboardsOption: AXGridLayoutOptions;\n isLoading: boolean;\n currentBreakpoint: AXMDashboardBreakpoint;\n /** True while a breakpoint transition is in progress; suppresses layout saves */\n isBreakpointTransitioning: boolean;\n /**\n * When true, the automatic list query effect is skipped (entity detail layout tab uses a\n * component-scoped store hydrated from `rootContext` instead of the shared list query).\n */\n entityDetailLayoutLock: boolean;\n}\n\ntype SessionUserMinimal = { id?: string; role?: string } | undefined | null;\n\n//#endregion\n\n//#region ---- Utility Functions ----\n\n/** Width threshold for switching between lg (12 col) and md (6 col) breakpoints */\nconst BREAKPOINT_MD_WIDTH = 768;\nconst BREAKPOINT_MD_COLUMN = 6;\nconst BREAKPOINT_SM_WIDTH = 576;\nconst BREAKPOINT_SM_COLUMN = 1;\n\n/**\n * Returns the current dashboard breakpoint based on window width.\n * lg: > 768px (12 columns), md: 481–768px (6 columns), sm: <= 480px (1 column)\n */\nconst getBreakpointFromWidth = (): AXMDashboardBreakpoint => {\n if (typeof window === 'undefined') return 'lg';\n const width = window.innerWidth;\n if (width <= BREAKPOINT_SM_WIDTH) return 'sm';\n if (width <= BREAKPOINT_MD_WIDTH) return 'md';\n return 'lg';\n};\n\n/**\n * Returns the grid column count for a given breakpoint.\n */\nconst getColumnsForBreakpoint = (bp: AXMDashboardBreakpoint): number => {\n switch (bp) {\n case 'sm':\n return BREAKPOINT_SM_COLUMN;\n case 'md':\n return BREAKPOINT_MD_COLUMN;\n case 'lg':\n default:\n return 12;\n }\n};\n\n/**\n * Keeps transient layout drafts for entity-detail layout tab re-mounts.\n * This prevents stale `rootContext` snapshots from overwriting in-session grid edits.\n */\nconst entityLayoutDrafts = new Map<string, AXMDashboardLayout>();\n\n/**\n * Creates the initial state for the dashboard store.\n */\nconst createInitialState = (): DashboardState => ({\n dashboards: [],\n allDashboards: [],\n currentDashboardId: null,\n isAdmin: false,\n dashboardsOption: {\n float: false,\n cellHeight: 75,\n gap: 5,\n minRow: 9,\n column: getColumnsForBreakpoint(getBreakpointFromWidth()),\n },\n isLoading: false,\n currentBreakpoint: getBreakpointFromWidth(),\n isBreakpointTransitioning: false,\n entityDetailLayoutLock: false,\n});\n\n/**\n * Migrates a widget config from the old flat format to the new per-breakpoint format.\n * Old format: { id, x, y, width, height, minWidth, ... }\n * New format: { id, lg: { ... }, md: { ... }, sm: { ... } }\n */\nconst migrateWidgetConfig = (widget: AXMDashboardWidgetData): AXMDashboardWidgetData => {\n const config = widget.config as any;\n // Already in new format (has lg key as an object)\n if (config && typeof config.lg === 'object' && config.lg !== null) {\n return widget;\n }\n // Old flat format: convert to per-breakpoint\n const { id, ...rest } = config || {};\n const widgetId = id || AXPDataGenerator.uuid();\n return {\n ...widget,\n config: {\n id: widgetId,\n lg: { id: widgetId, ...rest } as AXGridLayoutNode,\n md: { id: widgetId, ...rest } as AXGridLayoutNode,\n sm: { id: widgetId, width: 1, height: rest.height || 2 } as AXGridLayoutNode,\n },\n };\n};\n\n/**\n * Maps an entity model to a dashboard layout model.\n * Automatically migrates old flat widget configs to the new per-breakpoint format.\n */\nconst modelToDashboardLayout = (model: AXMCommonDashboardEntityModel): AXMDashboardLayout => ({\n id: model.id || '',\n title: model.title,\n description: model.description,\n widgets: (model.widgets || []).map(migrateWidgetConfig),\n createdBy: model.userId ?? model.auditInfo?.created?.by?.id,\n roleIds: model.roleIds,\n isArchived: model.isArchived,\n archivedAt: model.archivedAt,\n locked: model.locked,\n createdAt: model.auditInfo?.created?.at,\n updatedAt: model.auditInfo?.updated?.at,\n updatedBy: model.auditInfo?.updated?.by?.id,\n scope: model.scope,\n categoryIds: model.categoryIds,\n});\n\n/**\n * Maps a dashboard layout to an entity model for persistence.\n */\nconst dashboardLayoutToModel = (layout: AXMDashboardLayout): AXMCommonDashboardEntityModel => ({\n id: layout.id,\n title: layout.title,\n description: layout.description ?? '',\n widgets: layout.widgets,\n userId: layout.createdBy,\n roleIds: layout.roleIds,\n isArchived: layout.isArchived,\n archivedAt: layout.archivedAt,\n locked: layout.locked,\n categoryIds: layout.categoryIds,\n auditInfo: {\n created: layout.createdAt\n ? { at: layout.createdAt, by: layout.createdBy ? ({ id: layout.createdBy, type: 'user' } as any) : undefined }\n : undefined,\n updated: layout.updatedAt\n ? { at: layout.updatedAt, by: layout.updatedBy ? ({ id: layout.updatedBy, type: 'user' } as any) : undefined }\n : undefined,\n },\n scope: layout.scope,\n});\n\n/**\n * Safely reads the current user id from the session service.\n */\nconst readUserId = (sessionService: AXPSessionService): string | undefined => {\n const candidate = sessionService.user as SessionUserMinimal;\n return candidate?.id;\n};\n\n/**\n * Safely reads the current user role from the session service.\n */\nconst readUserRole = (sessionService: AXPSessionService): string | undefined => {\n const candidate = sessionService.user as SessionUserMinimal;\n return candidate?.role;\n};\n\n/**\n * Extracts role ids from a user entity returned by AXMUsersEntityService.\n */\nconst extractUserRoleIds = (user: any): string[] => {\n if (!user) return [];\n if (Array.isArray(user.roleIds) && user.roleIds.length > 0) {\n return user.roleIds.filter((r: unknown): r is string => typeof r === 'string');\n }\n if (Array.isArray(user.roles) && user.roles.length > 0) {\n const ids = user.roles\n .map((r: any) => (typeof r?.id === 'string' ? r.id : undefined))\n .filter((id: unknown): id is string => typeof id === 'string');\n if (ids.length > 0) return ids;\n }\n if (typeof user.roleId === 'string' && user.roleId) return [user.roleId];\n if (typeof user.role === 'string' && user.role) return [user.role];\n return [];\n};\n\n/**\n * Determines whether the given dashboard contains the provided user role.\n */\nconst hasMatchingRole = (dashboard: AXMDashboardLayout, userRole?: string): boolean => {\n if (!userRole) return false;\n const roleIds = dashboard.roleIds;\n return Array.isArray(roleIds) && roleIds.length > 0 && roleIds.includes(userRole);\n};\n\n/**\n * Determines whether a tenant dashboard is visible for a user.\n * Dashboards with no assigned roles are treated as public tenant dashboards.\n */\nconst isTenantDashboardVisibleForUser = (dashboard: AXMDashboardLayout, userRole?: string): boolean => {\n if (dashboard.scope !== 'T' || dashboard.isArchived === true) {\n return false;\n }\n if (!Array.isArray(dashboard.roleIds) || dashboard.roleIds.length === 0) {\n return true;\n }\n return hasMatchingRole(dashboard, userRole);\n};\n\n/**\n * Computes effective layout options based on device, lock, admin and role restrictions.\n * Always derives drag/resize state from the dashboard model — never from base options.\n */\nconst deriveLayoutOptions = (\n baseOptions: AXGridLayoutOptions,\n dashboard: AXMDashboardLayout | undefined,\n isAdmin: boolean,\n isDesktop: boolean,\n userRole?: string,\n): AXGridLayoutOptions => {\n const { disableDrag: _dd, disableResize: _dr, ...cleanBase } = baseOptions;\n\n if (!dashboard) return cleanBase;\n if (isAdmin) return cleanBase;\n if (dashboard.locked === true || dashboard.scope === 'T') {\n return { ...cleanBase, disableDrag: true, disableResize: true };\n }\n\n return { ...cleanBase, disableDrag: false, disableResize: false };\n};\n\n/**\n * Checks if a widget is locked for the current user based on dashboard and role context.\n */\nconst isWidgetLockedForUser = (\n dashboard: AXMDashboardLayout | undefined,\n isAdmin: boolean,\n userRole?: string,\n): boolean => {\n if (!dashboard) return false;\n if (isAdmin) return false;\n if (dashboard.locked === true) return true;\n return hasMatchingRole(dashboard, userRole) && dashboard.scope === 'T';\n};\n\n/**\n * Determines if a widget can be configured by the current user.\n */\nconst canConfigureWidgetForUser = (\n dashboard: AXMDashboardLayout | undefined,\n isAdmin: boolean,\n userRole: string | undefined,\n widgetHasConfiguration: boolean,\n): boolean => {\n if (!dashboard) return true;\n if (isAdmin) return widgetHasConfiguration;\n if (dashboard.locked === true) return false;\n if (hasMatchingRole(dashboard, userRole) && dashboard.scope === 'T') return false;\n return widgetHasConfiguration;\n};\n\n/**\n * Filters dashboards for current user scope and permissions.\n */\nconst filterDashboardsForUser = (\n dashboards: AXMDashboardLayout[],\n isAdmin: boolean,\n userId: string | undefined,\n userRole: string | undefined,\n): AXMDashboardLayout[] => {\n if (!userId) return dashboards;\n\n if (isAdmin) {\n return dashboards.filter((d) => d.scope === 'T');\n }\n\n return dashboards.filter((d) => {\n const isUserDashboard = d.scope === 'U' && d.createdBy === userId;\n const isTenantDashboardVisible = isTenantDashboardVisibleForUser(d, userRole);\n return isUserDashboard || isTenantDashboardVisible;\n });\n};\n\n//#endregion\n\n//#region ---- Signal Store ----\n/**\n * Dashboard Signal Store: manages dashboards, widgets and permissions.\n */\nexport const AXMDashboardStore = signalStore(\n { providedIn: 'root' },\n\n //#region ---- Initial State ----\n withState(() => createInitialState()),\n //#endregion\n\n //#region ---- Computed Properties ----\n withComputed((state, sessionService = inject(AXPSessionService), deviceService = inject(AXPDeviceService)) => ({\n selectedDashboard: computed(\n () => state.dashboards().find((dashboard) => dashboard.id === state.currentDashboardId()) || null,\n ),\n isUserAdmin: computed(() => state.isAdmin()),\n availableDashboards: computed(() => state.allDashboards()),\n currentLayoutOptions: computed(() => {\n const currentDashboard = state.dashboards().find((dashboard) => dashboard.id === state.currentDashboardId());\n const baseOptions = state.dashboardsOption();\n const isDesktop = deviceService.isDesktopDevice();\n const userRole = readUserRole(sessionService);\n // Dynamically set column count based on the current breakpoint\n const bp = state.currentBreakpoint();\n const optionsWithColumn = { ...baseOptions, column: getColumnsForBreakpoint(bp) };\n return deriveLayoutOptions(\n optionsWithColumn,\n currentDashboard || undefined,\n state.isAdmin(),\n isDesktop,\n userRole,\n );\n }),\n /**\n * Returns the current dashboard's widgets with their resolved breakpoint options.\n * This computed depends on BOTH the dashboard widgets AND currentBreakpoint,\n * ensuring the @for source produces a new array when the breakpoint changes.\n */\n currentWidgets: computed(() => {\n const dashboard = state.dashboards().find((d) => d.id === state.currentDashboardId());\n const bp = state.currentBreakpoint();\n if (!dashboard?.widgets) return [];\n return dashboard.widgets.map((widget) => ({\n ...widget,\n resolvedOptions: widget.config[bp],\n }));\n }),\n canConfigureWidget: computed(() => (widget: AXMDashboardWidgetData) => {\n const currentDashboard = state.dashboards().find((dashboard) => dashboard.id === state.currentDashboardId());\n const userRole = readUserRole(sessionService);\n const widgetHasConfiguration = widget.node?.options?.['hasConfiguration'] ?? true;\n return canConfigureWidgetForUser(\n currentDashboard || undefined,\n state.isAdmin(),\n userRole,\n widgetHasConfiguration,\n );\n }),\n isWidgetLocked: computed(() => (widget: AXMDashboardWidgetData) => {\n const currentDashboard = state.dashboards().find((dashboard) => dashboard.id === state.currentDashboardId());\n const userRole = readUserRole(sessionService);\n return isWidgetLockedForUser(currentDashboard || undefined, state.isAdmin(), userRole);\n }),\n })),\n //#endregion\n\n //#region ---- Methods ----\n withMethods(\n (\n store,\n dashboardPopup = inject(AXMDashboardPopupService),\n dialogService = inject(AXDialogService),\n translationService = inject(AXTranslationService),\n widgetPickerService = inject(AXPWidgetPickerService),\n entityService = inject(AXPEntityService),\n settingsService = inject(AXPSettingsService),\n sessionService = inject(AXPSessionService),\n deviceService = inject(AXPDeviceService),\n usersService = inject(AXMUsersEntityService),\n ) => {\n const dashboardData = entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.dashboard.name)\n .data<string, AXMCommonDashboardEntityModel, AXMCommonDashboardEntityModel>();\n\n // Load dashboards from service - runs on init and when admin flag changes\n effect(() => {\n if (store.entityDetailLayoutLock()) {\n return;\n }\n const isAdmin = store.isUserAdmin();\n loadDashboards(isAdmin);\n });\n\n // Track window resize and update currentBreakpoint signal.\n // Sets isBreakpointTransitioning to suppress onGridChange saves\n // while the grid settles after a breakpoint switch.\n let transitionTimer: ReturnType<typeof setTimeout> | null = null;\n\n // Queued save: ensures only one save is in-flight at a time.\n // If a new save is requested while one is running, it queues the latest and runs it after.\n let isSaving = false;\n let pendingSaveDashboard: AXMDashboardLayout | null = null;\n\n async function persistDashboard(dashboard: AXMDashboardLayout): Promise<void> {\n if (isSaving) {\n // Queue the latest dashboard for saving after current completes\n pendingSaveDashboard = dashboard;\n return;\n }\n isSaving = true;\n try {\n await dashboardData.update(dashboard.id, dashboardLayoutToModel(dashboard));\n } catch (error) {\n console.error('Error saving dashboard layout:', error);\n }\n isSaving = false;\n // Process queued save if any\n if (pendingSaveDashboard) {\n const next = pendingSaveDashboard;\n pendingSaveDashboard = null;\n await persistDashboard(next);\n }\n }\n\n if (typeof window !== 'undefined') {\n fromEvent(window, 'resize')\n .pipe(debounceTime(100))\n .subscribe(() => {\n const bp = getBreakpointFromWidth();\n if (bp !== store.currentBreakpoint()) {\n if (transitionTimer) clearTimeout(transitionTimer);\n patchState(store, { currentBreakpoint: bp, isBreakpointTransitioning: true });\n\n // End transition after grid has settled (~500ms covers GridStack reflow + Angular CD)\n transitionTimer = setTimeout(() => {\n patchState(store, { isBreakpointTransitioning: false });\n transitionTimer = null;\n }, 500);\n }\n });\n }\n\n /**\n * Loads dashboards and sets current dashboard based on user settings.\n */\n async function loadDashboards(isAdmin: boolean): Promise<void> {\n try {\n patchState(store, { isLoading: true });\n // Build server-side filter based on admin flag and user identity/role\n const userId = readUserId(sessionService);\n let userRoleIds: string[] = [];\n\n let filter: AXDataSourceFilterOption | undefined;\n\n if (isAdmin) {\n // Admins see tenant scoped dashboards\n filter = {\n field: 'scope',\n operator: { type: 'equal' },\n value: 'T',\n } as AXDataSourceFilterOption;\n } else {\n // Non-admins see either:\n // 1) User scoped dashboards they created\n // 2) Tenant scoped dashboards where their role is included in roleIds\n const orFilters: AXDataSourceFilterOption[] = [];\n\n if (userId) {\n try {\n const user = await usersService.getOne(userId);\n userRoleIds = extractUserRoleIds(user);\n } catch {}\n }\n\n if (userId) {\n // Match personal U dashboards by new field userId (preferred)\n orFilters.push({\n field: null as any,\n logic: 'and',\n operator: null as any,\n filters: [\n { field: 'scope', operator: { type: 'equal' }, value: 'U' },\n { field: 'userId', operator: { type: 'equal' }, value: userId },\n ],\n } as AXDataSourceFilterOption);\n\n // Backward compatibility: also match by legacy createdBy if present\n orFilters.push({\n field: null as any,\n logic: 'and',\n operator: null as any,\n filters: [\n { field: 'scope', operator: { type: 'equal' }, value: 'U' },\n { field: 'createdBy', operator: { type: 'equal' }, value: userId },\n ],\n } as AXDataSourceFilterOption);\n }\n\n if (userRoleIds.length > 0) {\n const roleMatchFilters: AXDataSourceFilterOption[] = userRoleIds.map((roleId) => ({\n field: 'roleIds',\n operator: { type: 'contains' },\n value: roleId,\n }));\n\n orFilters.push({\n field: null as any,\n logic: 'and',\n operator: null as any,\n filters: [\n { field: 'scope', operator: { type: 'equal' }, value: 'T' },\n {\n field: null as any,\n logic: 'or',\n operator: null as any,\n filters: roleMatchFilters,\n },\n ],\n } as AXDataSourceFilterOption);\n }\n\n // Public tenant dashboards (without role restrictions) should be visible to all users.\n orFilters.push({\n field: null as any,\n logic: 'and',\n operator: null as any,\n filters: [\n { field: 'scope', operator: { type: 'equal' }, value: 'T' },\n { field: 'isArchived', operator: { type: 'notEqual' }, value: true },\n {\n field: null as any,\n logic: 'or',\n operator: null as any,\n filters: [\n { field: 'roleIds', operator: { type: 'isEmpty' }, value: true },\n { field: 'roleIds', operator: { type: 'isNull' }, value: true },\n ],\n },\n ],\n } as AXDataSourceFilterOption);\n\n if (orFilters.length === 1) {\n filter = orFilters[0];\n } else if (orFilters.length > 1) {\n filter = {\n field: null as any,\n logic: 'or',\n operator: null as any,\n filters: orFilters,\n } as AXDataSourceFilterOption;\n }\n }\n\n const result = await dashboardData.query({ skip: 0, take: 100, filter });\n const dashboardModels = result.items || [];\n const dashboards = dashboardModels.map(modelToDashboardLayout);\n const currentDashboardId = await settingsService\n .scope(AXPPlatformScope.User)\n .get(AXPHomeDashboardSetting.CurrentDashboard);\n\n let newCurrentDashboardId = null;\n if (dashboards.length > 0) {\n const dashboardExists = currentDashboardId && dashboards.some((d) => d.id === currentDashboardId);\n newCurrentDashboardId = dashboardExists ? (currentDashboardId as string) : dashboards[0].id;\n\n if (!dashboardExists) {\n settingsService\n .scope(AXPPlatformScope.User)\n .set(AXPHomeDashboardSetting.CurrentDashboard, newCurrentDashboardId);\n }\n }\n\n patchState(store, {\n allDashboards: dashboards,\n dashboards: dashboards,\n isLoading: false,\n currentDashboardId: newCurrentDashboardId,\n });\n } catch (error) {\n console.error('Error loading dashboards:', error);\n patchState(store, { isLoading: false });\n }\n }\n\n return {\n /**\n * Sets the selected dashboard and persists the choice for the user.\n */\n setCurrentDashboard(dashboardId: string): void {\n patchState(store, { currentDashboardId: dashboardId });\n settingsService.scope(AXPPlatformScope.User).set(AXPHomeDashboardSetting.CurrentDashboard, dashboardId);\n },\n\n /**\n * Creates a new dashboard and selects it as current.\n */\n async addDashboard(): Promise<void> {\n try {\n const newDashboard = await dashboardPopup.generateDashboardLayout({}, store.isUserAdmin());\n if (!newDashboard) return;\n\n const userId = readUserId(sessionService);\n const now = new Date();\n const dashboardWithMetadata: AXMDashboardLayout = {\n ...newDashboard,\n createdBy: userId,\n createdAt: now,\n updatedBy: userId,\n updatedAt: now,\n scope: store.isUserAdmin() ? 'T' : 'U',\n widgets: [],\n };\n\n const dashboardModel = dashboardLayoutToModel(dashboardWithMetadata);\n const createdDashboardId = await dashboardData.create(dashboardModel);\n dashboardWithMetadata.id = createdDashboardId;\n\n const updatedAllDashboards = [...store.availableDashboards(), dashboardWithMetadata];\n const updatedDashboards = [...store.dashboards(), dashboardWithMetadata];\n\n patchState(store, {\n allDashboards: updatedAllDashboards,\n dashboards: updatedDashboards,\n currentDashboardId: dashboardWithMetadata.id,\n });\n\n settingsService\n .scope(AXPPlatformScope.User)\n .set(AXPHomeDashboardSetting.CurrentDashboard, dashboardWithMetadata.id);\n } catch (error) {\n console.error('Error adding dashboard:', error);\n }\n },\n\n /**\n * Edits the current dashboard metadata and persists changes.\n */\n async editDashboard(): Promise<void> {\n const currentDashboard = store.selectedDashboard();\n if (!currentDashboard) return;\n if (!store.isUserAdmin() && currentDashboard.scope === 'T') {\n console.warn('Tenant scoped dashboards are read-only for non-admin users');\n return;\n }\n\n try {\n const editedDashboard = await dashboardPopup.generateDashboardLayout(\n {\n title: currentDashboard.title,\n description: currentDashboard.description,\n roleIds: currentDashboard.roleIds,\n scope: currentDashboard.scope,\n isArchived: currentDashboard.isArchived,\n locked: currentDashboard.locked,\n },\n store.isUserAdmin(),\n { showRoleField: false },\n );\n\n if (!editedDashboard) return;\n\n const userId = readUserId(sessionService);\n const now = new Date();\n const updatedDashboard: AXMDashboardLayout = {\n ...currentDashboard,\n ...editedDashboard,\n updatedBy: userId,\n updatedAt: now,\n };\n\n await dashboardData.update(updatedDashboard.id, dashboardLayoutToModel(updatedDashboard));\n\n const updatedAllDashboards = store\n .availableDashboards()\n .map((d) => (d.id === updatedDashboard.id ? updatedDashboard : d));\n const updatedDashboards = store\n .dashboards()\n .map((d) => (d.id === updatedDashboard.id ? updatedDashboard : d));\n\n patchState(store, {\n allDashboards: updatedAllDashboards,\n dashboards: updatedDashboards,\n });\n } catch (error) {\n console.error('Error editing dashboard:', error);\n }\n },\n\n /**\n * Updates the current dashboard metadata from an inline admin editor\n * (no popup/preview).\n */\n async updateDashboardMetadataFromEditor(form: {\n title: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n roleIds: string[];\n isArchived: boolean;\n locked: boolean;\n }): Promise<boolean> {\n const currentDashboard = store.selectedDashboard();\n if (!currentDashboard) return false;\n\n try {\n const userId = readUserId(sessionService);\n const now = new Date();\n\n const updatedDashboard: AXMDashboardLayout = {\n ...currentDashboard,\n title:\n form.title === undefined || form.title === null\n ? ''\n : typeof form.title === 'object'\n ? form.title\n : (form.title as string).toString().trim(),\n description:\n form.description === undefined || form.description === null\n ? undefined\n : typeof form.description === 'object'\n ? form.description\n : (form.description as string).toString().trim(),\n roleIds: form.roleIds ?? [],\n isArchived: Boolean(form.isArchived),\n locked: Boolean(form.locked),\n scope: currentDashboard.scope,\n updatedBy: userId,\n updatedAt: now,\n };\n\n await dashboardData.update(updatedDashboard.id, dashboardLayoutToModel(updatedDashboard));\n\n const updatedAllDashboards = store\n .availableDashboards()\n .map((d) => (d.id === updatedDashboard.id ? updatedDashboard : d));\n const updatedDashboards = store\n .dashboards()\n .map((d) => (d.id === updatedDashboard.id ? updatedDashboard : d));\n\n patchState(store, {\n allDashboards: updatedAllDashboards,\n dashboards: updatedDashboards,\n });\n\n return true;\n } catch (error) {\n console.error('Error updating dashboard metadata:', error);\n return false;\n }\n },\n\n /**\n * Adds selected widgets to the current dashboard and saves layout.\n */\n async addWidget(): Promise<void> {\n if (!store.selectedDashboard()) {\n console.warn('No current dashboard selected');\n return;\n }\n\n try {\n const widgets = await widgetPickerService.showPicker({\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n tabPersistenceContext: AXP_WIDGET_PICKER_TAB_CONTEXT.dashboardHome,\n });\n\n const filteredWidgets = (widgets as any[]).map(({ __meta__, ...rest }) => {\n const widget = rest;\n if (widget.type === RootConfig.widgets.stickyNote && !widget.options) {\n widget.options = { hasConfiguration: false };\n }\n const randomId = AXPDataGenerator.uuid();\n widget.name = `${widget.type}-${randomId}`;\n widget.path = `${widget.type}-${randomId}`;\n return widget;\n });\n\n const convertedWidgets: AXMDashboardWidgetData[] = filteredWidgets.map((widget) => {\n const id = AXPDataGenerator.uuid();\n const dims = widget?.meta?.dimensions;\n return {\n config: {\n id,\n title: widget.options?.['title'],\n lg: {\n id,\n height: dims?.lg?.height ?? 2,\n width: dims?.lg?.width ?? 2,\n minHeight: dims?.lg?.minHeight,\n minWidth: dims?.lg?.minWidth,\n maxHeight: dims?.lg?.maxHeight,\n maxWidth: dims?.lg?.maxWidth,\n } as AXGridLayoutNode,\n md: {\n id,\n height: dims?.md?.height ?? dims?.lg?.height ?? 2,\n width: dims?.md?.width ?? dims?.lg?.width ?? 2,\n minHeight: dims?.md?.minHeight ?? dims?.lg?.minHeight,\n minWidth: dims?.md?.minWidth ?? dims?.lg?.minWidth,\n maxHeight: dims?.md?.maxHeight ?? dims?.lg?.maxHeight,\n maxWidth: dims?.md?.maxWidth ?? dims?.lg?.maxWidth,\n } as AXGridLayoutNode,\n sm: {\n id,\n width: 1,\n height: dims?.sm?.height ?? dims?.lg?.height ?? 2,\n minHeight: dims?.sm?.minHeight ?? dims?.lg?.minHeight,\n maxHeight: dims?.sm?.maxHeight ?? dims?.lg?.maxHeight,\n } as AXGridLayoutNode,\n },\n node: {\n ...widget,\n name: widget.name,\n },\n };\n });\n\n const currentDashboard = store.selectedDashboard()!;\n const updatedDashboard = {\n ...currentDashboard,\n widgets: [...currentDashboard.widgets, ...convertedWidgets],\n };\n\n await dashboardData.update(updatedDashboard.id, dashboardLayoutToModel(updatedDashboard));\n const updatedDashboards = store\n .dashboards()\n .map((d) => (d.id === updatedDashboard.id ? updatedDashboard : d));\n const updatedAllDashboards = store\n .availableDashboards()\n .map((d) => (d.id === updatedDashboard.id ? updatedDashboard : d));\n\n patchState(store, { dashboards: updatedDashboards, allDashboards: updatedAllDashboards });\n } catch (error) {\n console.error('Error adding widget:', error);\n }\n },\n\n /**\n * Removes a dashboard after user confirmation and updates selection.\n */\n async removeDashboard(id: string): Promise<void> {\n if (!id) {\n console.warn('No dashboard ID provided for removal');\n return;\n }\n const targetDashboard = store.dashboards().find((dashboard) => dashboard.id === id);\n if (!store.isUserAdmin() && targetDashboard?.scope === 'T') {\n console.warn('Tenant scoped dashboards cannot be deleted by non-admin users');\n return;\n }\n\n try {\n const dialogResult = await dialogService.confirm(\n await translationService.translateAsync('@general:workflow.warning'),\n await translationService.translateAsync('@general:workflow.confirm-delete'),\n 'danger',\n 'horizontal',\n );\n\n if (dialogResult.result) {\n await dashboardData.delete(id);\n const updatedAllDashboards = store.availableDashboards().filter((dashboard) => dashboard.id !== id);\n const updatedDashboards = store.dashboards().filter((dashboard) => dashboard.id !== id);\n let newCurrentDashboardId = store.currentDashboardId();\n\n if (id === store.currentDashboardId()) {\n newCurrentDashboardId =\n updatedDashboards.length > 0 ? updatedDashboards[updatedDashboards.length - 1].id : null;\n if (newCurrentDashboardId) {\n settingsService\n .scope(AXPPlatformScope.User)\n .set(AXPHomeDashboardSetting.CurrentDashboard, newCurrentDashboardId);\n }\n }\n\n patchState(store, {\n allDashboards: updatedAllDashboards,\n dashboards: updatedDashboards,\n currentDashboardId: newCurrentDashboardId,\n });\n }\n } catch (error) {\n console.error('Error removing dashboard:', error);\n }\n },\n\n /**\n * Removes a widget from the specified dashboard and persists the change.\n */\n async removeWidget(dashboardId: string, widgetId: string): Promise<void> {\n const currentDashboard = store.dashboards().find((d) => d.id === dashboardId);\n if (!currentDashboard) return;\n\n const updatedDashboard = {\n ...currentDashboard,\n widgets: currentDashboard.widgets.filter((widget) => widget.config.id !== widgetId),\n };\n\n await dashboardData.update(dashboardId, dashboardLayoutToModel(updatedDashboard));\n const updatedDashboards = store\n .dashboards()\n .map((dashboard) => (dashboard.id === dashboardId ? updatedDashboard : dashboard));\n const updatedAllDashboards = store\n .availableDashboards()\n .map((dashboard) => (dashboard.id === dashboardId ? updatedDashboard : dashboard));\n\n patchState(store, { dashboards: updatedDashboards, allDashboards: updatedAllDashboards });\n },\n\n /**\n * Persists dashboard configuration changes and updates selection.\n */\n async handleConfigChange(dashboard: AXMDashboardLayout): Promise<void> {\n // await dashboardData.update(dashboard.id, dashboardLayoutToModel(dashboard));\n // const updatedDashboards = store.dashboards().map((d) => (d.id === dashboard.id ? dashboard : d));\n\n patchState(store, {\n // dashboards: updatedDashboards,\n currentDashboardId: dashboard.id,\n });\n\n settingsService.scope(AXPPlatformScope.User).set(AXPHomeDashboardSetting.CurrentDashboard, dashboard.id);\n },\n\n /**\n * Handles grid layout changes (drag/resize) and saves positions for the current breakpoint.\n * Skips saving during breakpoint transitions to avoid persisting auto-reflowed layouts.\n * Persists immediately with queued writes to prevent concurrent save conflicts.\n */\n onGridChange(event: AXGridLayoutEvent): void {\n if (!store.selectedDashboard()) return;\n\n // Skip saves during breakpoint transitions to avoid persisting auto-reflowed layouts\n if (store.isBreakpointTransitioning()) return;\n\n // Skip if the live window breakpoint disagrees with the store\n const liveBp = getBreakpointFromWidth();\n const storeBp = store.currentBreakpoint();\n if (liveBp !== storeBp) return;\n\n const bp = storeBp;\n const nodes = event.nodes.map(({ element, ...rest }) => rest);\n const currentDashboard = store.selectedDashboard()!;\n\n let hasChanges = false;\n const updatedWidgets = currentDashboard.widgets.map((widget) => {\n const updatedNode = nodes.find((node) => node.id === widget.config.id);\n if (!updatedNode) return widget;\n\n const existing = widget.config[bp];\n if (\n existing?.x === updatedNode.x &&\n existing?.y === updatedNode.y &&\n existing?.width === updatedNode.width &&\n existing?.height === updatedNode.height\n ) {\n return widget;\n }\n\n hasChanges = true;\n return {\n ...widget,\n config: {\n ...widget.config,\n [bp]: { ...widget.config[bp], ...updatedNode, id: widget.config.id },\n },\n };\n });\n\n if (!hasChanges) return;\n\n const updatedDashboard = {\n ...currentDashboard,\n widgets: updatedWidgets,\n };\n entityLayoutDrafts.set(updatedDashboard.id, updatedDashboard);\n\n const updatedDashboards = store\n .dashboards()\n .map((dashboard) => (dashboard.id === updatedDashboard.id ? updatedDashboard : dashboard));\n const updatedAllDashboards = store\n .availableDashboards()\n .map((dashboard) => (dashboard.id === updatedDashboard.id ? updatedDashboard : dashboard));\n\n patchState(store, { dashboards: updatedDashboards, allDashboards: updatedAllDashboards });\n\n // Persist to storage (queued to prevent concurrent writes)\n persistDashboard(updatedDashboard);\n },\n\n /**\n * Applies widget configuration changes returned from popup.\n */\n async handlePopupConfiguration(widgetNode: AXPWidgetNode): Promise<void> {\n if (!store.selectedDashboard()) return;\n\n try {\n const updatedNode = await dashboardPopup.handlePopupConfiguration(widgetNode);\n if (!updatedNode) return;\n\n const currentDashboard = store.selectedDashboard()!;\n const updatedWidgets = currentDashboard.widgets.map((widget) =>\n widget.node?.name === widgetNode.name && widget.node?.path === widgetNode.path\n ? { ...widget, node: updatedNode }\n : widget,\n );\n\n const updatedDashboard = {\n ...currentDashboard,\n widgets: updatedWidgets,\n };\n\n await dashboardData.update(updatedDashboard.id, dashboardLayoutToModel(updatedDashboard));\n const updatedDashboards = store\n .dashboards()\n .map((dashboard) => (dashboard.id === updatedDashboard.id ? updatedDashboard : dashboard));\n const updatedAllDashboards = store\n .availableDashboards()\n .map((dashboard) => (dashboard.id === updatedDashboard.id ? updatedDashboard : dashboard));\n\n patchState(store, { dashboards: updatedDashboards, allDashboards: updatedAllDashboards });\n } catch (error) {\n console.error('Error handling widget configuration:', error);\n }\n },\n\n /**\n * Updates widget value (defaultValue) and persists changes.\n */\n async handleValueChanged(widgetNode: AXPWidgetNode, data: unknown): Promise<void> {\n if (!store.selectedDashboard()) return;\n if (!deviceService.isDesktopDevice()) {\n return;\n }\n\n try {\n const currentDashboard = store.selectedDashboard()!;\n const updatedWidgets = currentDashboard.widgets.map((widget) =>\n widget.node && widget.node.name === widgetNode.name && widget.node.path === widgetNode.path\n ? { ...widget, node: { ...widget.node, defaultValue: data } }\n : widget,\n );\n\n const updatedDashboard = {\n ...currentDashboard,\n widgets: updatedWidgets,\n };\n\n await dashboardData.update(updatedDashboard.id, dashboardLayoutToModel(updatedDashboard));\n const updatedDashboards = store\n .dashboards()\n .map((dashboard) => (dashboard.id === updatedDashboard.id ? updatedDashboard : dashboard));\n const updatedAllDashboards = store\n .availableDashboards()\n .map((dashboard) => (dashboard.id === updatedDashboard.id ? updatedDashboard : dashboard));\n\n patchState(store, { dashboards: updatedDashboards, allDashboards: updatedAllDashboards });\n } catch (error) {\n console.error('Error handling widget value change:', error);\n }\n },\n\n /**\n * Merges widget options with provided data and persists changes.\n */\n async handleOptionsChanged(widgetNode: AXPWidgetNode, data: unknown): Promise<void> {\n if (!store.selectedDashboard()) return;\n\n try {\n const currentDashboard = store.selectedDashboard()!;\n const updatedWidgets = currentDashboard.widgets.map((widget) =>\n widget.node && widget.node.name === widgetNode.name && widget.node.path === widgetNode.path\n ? {\n ...widget,\n node: {\n ...widget.node,\n options: { ...(widget.node.options || {}), ...(data as object) },\n },\n }\n : widget,\n );\n\n const updatedDashboard = {\n ...currentDashboard,\n widgets: updatedWidgets,\n };\n\n await dashboardData.update(updatedDashboard.id, dashboardLayoutToModel(updatedDashboard));\n const updatedDashboards = store\n .dashboards()\n .map((dashboard) => (dashboard.id === updatedDashboard.id ? updatedDashboard : dashboard));\n const updatedAllDashboards = store\n .availableDashboards()\n .map((dashboard) => (dashboard.id === updatedDashboard.id ? updatedDashboard : dashboard));\n\n patchState(store, { dashboards: updatedDashboards, allDashboards: updatedAllDashboards });\n } catch (error) {\n console.error('Error handling widget options change:', error);\n }\n },\n\n /**\n * Updates the admin flag in store state.\n */\n setIsAdmin(isAdmin: boolean): void {\n patchState(store, { isAdmin });\n },\n\n /**\n * Skips the default dashboard list query (used by the entity detail layout tab with a\n * component-scoped store instance).\n */\n setEntityDetailLayoutLock(locked: boolean): void {\n patchState(store, { entityDetailLayoutLock: locked });\n },\n\n /**\n * Hydrates store state from a single dashboard model (entity detail layout tab).\n */\n hydrateFromEntityDetailModel(model: AXMCommonDashboardEntityModel): void {\n const layout = modelToDashboardLayout(model);\n const layoutDraft = entityLayoutDrafts.get(layout.id);\n const hydratedLayout = layoutDraft\n ? {\n ...layout,\n ...layoutDraft,\n widgets: layoutDraft.widgets ?? layout.widgets,\n }\n : layout;\n patchState(store, {\n isAdmin: true,\n isLoading: false,\n allDashboards: [hydratedLayout],\n dashboards: [hydratedLayout],\n currentDashboardId: hydratedLayout.id,\n });\n },\n\n // Client-side scope filtering is no longer needed; handled in query filter\n\n /**\n * Toggles lock state for current dashboard based on permission rules.\n */\n async toggleLockDashboard(): Promise<void> {\n const currentDashboard = store.selectedDashboard();\n if (!currentDashboard) return;\n\n try {\n const isAdmin = store.isUserAdmin();\n const userId = readUserId(sessionService);\n const canToggle =\n (!isAdmin && currentDashboard.scope === 'U' && currentDashboard.createdBy === userId) ||\n (isAdmin && currentDashboard.scope === 'T');\n\n if (!canToggle) {\n console.warn('User does not have permission to toggle lock for this dashboard');\n return;\n }\n\n const updatedDashboard = {\n ...currentDashboard,\n locked: !currentDashboard.locked,\n };\n\n await dashboardData.update(updatedDashboard.id, dashboardLayoutToModel(updatedDashboard));\n const updatedDashboards = store\n .dashboards()\n .map((dashboard) => (dashboard.id === updatedDashboard.id ? updatedDashboard : dashboard));\n const updatedAllDashboards = store\n .availableDashboards()\n .map((dashboard) => (dashboard.id === updatedDashboard.id ? updatedDashboard : dashboard));\n\n patchState(store, { dashboards: updatedDashboards, allDashboards: updatedAllDashboards });\n } catch (error) {\n console.error('Error toggling dashboard lock state:', error);\n }\n },\n\n /**\n * Returns the lock state of the current dashboard.\n */\n isDashboardLocked(): boolean {\n const currentDashboard = store.selectedDashboard();\n return currentDashboard?.locked === true;\n },\n };\n },\n ),\n //#endregion\n\n //#region ---- Hooks ----\n\n withHooks((store, entityLayoutTab = inject(DASHBOARD_LAYOUT_ENTITY_MODE, { optional: true })) => ({\n onInit() {\n if (entityLayoutTab === true) {\n patchState(store, { entityDetailLayoutLock: true });\n }\n },\n })),\n\n //#endregion\n);\n//#endregion\n","import { AXGridLayoutNode } from '@acorex/components/grid-layout-builder';\nimport type { AXPMultiLanguageString } from '@acorex/platform/core';\nimport { AXPWidgetNode } from '@acorex/platform/layout/widget-core';\n\n//#region ---- Breakpoint Types ----\n\n/** Breakpoint size keys for responsive layout profiles */\nexport type AXMDashboardBreakpoint = 'sm' | 'md' | 'lg';\n\n/**\n * Per-breakpoint layout configuration for a dashboard widget.\n * Each breakpoint stores its own AXGridLayoutNode (position, size, constraints).\n * The `id` at the top level is the shared widget identifier across all breakpoints.\n */\nexport interface AXMDashboardWidgetLayoutMap {\n /** Shared widget identifier across all breakpoints */\n id: string;\n title?: string;\n /** Large breakpoint layout (12 columns, window width > 768px) */\n lg: AXGridLayoutNode;\n /** Medium breakpoint layout (6 columns, window width <= 768px) */\n md: AXGridLayoutNode;\n /** Small breakpoint layout (1 column, mobile devices) */\n sm: AXGridLayoutNode;\n}\n\n//#endregion\n\n//#region ---- Dashboard Types ----\n\nexport interface AXMDashboardLayout {\n id: string;\n title: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n widgets: AXMDashboardWidgetData[];\n\n createdAt?: Date;\n updatedAt?: Date;\n createdBy?: string;\n updatedBy?: string;\n\n roleIds?: string[];\n isArchived?: boolean;\n archivedAt?: string | Date;\n locked?: boolean;\n\n scope: 'U' | 'T';\n\n categoryIds?: string[];\n}\n\nexport type AXMDashboardWidgetData = {\n config: AXMDashboardWidgetLayoutMap;\n node?: AXPWidgetNode;\n};\n\n//#endregion\n","import { AXEvent, AXItemClickEvent } from '@acorex/cdk/common';\nimport { AXButtonItemComponent, AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPWidgetRendererDirective } from '@acorex/platform/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n contentChild,\n input,\n output,\n signal,\n} from '@angular/core';\n\n@Component({\n selector: 'axm-dashboard-widget-wrapper',\n templateUrl: './dashboard-widget-wrapper.html',\n styleUrls: ['./dashboard-widget-wrapper.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXButtonModule, AXDecoratorModule, AXDropdownModule, AXTranslationModule, CommonModule],\n standalone: true,\n})\nexport class AXMDashboardWidgetWrapperComponent {\n title = input<string | null>(null);\n\n onDelete = output<void>();\n onConfiguration = output<void>();\n onValueChanged = output<unknown>();\n onOptionsChanged = output<unknown>();\n\n widget = contentChild(AXPWidgetRendererDirective);\n\n #init = afterNextRender(() => {\n this.widget()?.onOptionsChanged.subscribe((c) => {\n console.log(c);\n this.onOptionsChanged.emit(c.widget.options());\n });\n this.widget()?.onValueChanged.subscribe((c) => {\n console.log(c);\n this.onValueChanged.emit(c.widget.getValue());\n });\n });\n\n hasConfiguration = input<boolean>(true);\n isLocked = input<boolean>(false);\n isDropdownOpen = signal(false);\n\n handleOnItemClick(event: AXItemClickEvent<AXButtonItemComponent>) {\n switch (event.item.data) {\n case 'delete':\n this.onDelete.emit();\n break;\n case 'configuration':\n this.onConfiguration.emit();\n break;\n default:\n break;\n }\n this.isDropdownOpen.set(false);\n }\n log(event: AXEvent) {\n console.log('Dropdown event:', event);\n }\n}\n","<section class=\"ax-relative ax-size-full ax-flex ax-flex-col ax-group ax-overflow-hidden\">\n <!-- Action button - stays absolute -->\n @if(!isLocked()) {\n <div\n class=\"ax-p-[0.6125rem] ax-absolute ax-top-0 ax-end-0 ax-z-[9] ax-invisible group-hover:ax-visible md:group-hover:ax-visible\"\n [class.!ax-visible]=\"isDropdownOpen()\"\n (touchstart)=\"isDropdownOpen.set(true)\"\n >\n <ax-button class=\"ax-sm ax-main-button\" [look]=\"'blank'\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-ellipsis-vertical\"></ax-icon>\n </ax-prefix>\n <ax-dropdown-panel (onOpened)=\"isDropdownOpen.set(true)\" (onClosed)=\"isDropdownOpen.set(false)\">\n <ng-container *translate=\"let t\">\n <ax-button-item-list (onItemClick)=\"handleOnItemClick($event)\">\n @if(hasConfiguration()){\n <ax-button-item\n [data]=\"'configuration'\"\n [text]=\"('@dashboard:configuration' | translate | async) || 'configuration'\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-cog\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-divider></ax-divider>\n }\n <ax-button-item\n [data]=\"'delete'\"\n [text]=\"('@general:actions.delete.title' | translate | async)!\"\n color=\"danger\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ng-container>\n </ax-dropdown-panel>\n </ax-button>\n </div>\n }\n\n <!-- Title section -->\n @if(title()) {\n <div class=\"ax-ps-5 ax-pe-8 ax-py-3 ax-border-b\">\n <h3 class=\"ax-text-start ax-text-lg ax-font-medium ax-truncate\">{{title()}}</h3>\n </div>\n }\n\n <!-- Content section -->\n <div class=\"ax-overflow-hidden ax-h-full\">\n <ng-content></ng-content>\n </div>\n</section>\n","//#region ---- Imports ----\n\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, input, output, ViewEncapsulation } from '@angular/core';\n\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXGridLayoutBuilderModule } from '@acorex/components/grid-layout-builder';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXPStateMessageComponent } from '@acorex/platform/layout/components';\nimport { AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\n\nimport { AXMDashboardStore } from '../../dashboard-services/home-dashboard.store';\nimport { AXMDashboardWidgetWrapperComponent } from '../../home-dashboard/widget-wrapper/dashboard-widget-wrapper';\n\n//#endregion\n\nexport type AXMDashboardGridLayoutLoadingVariant = 'inline' | 'overlay';\n\n@Component({\n selector: 'axm-dashboard-grid-layout-section',\n templateUrl: './dashboard-grid-layout-section.component.html',\n styleUrls: ['./dashboard-grid-layout-section.component.scss'],\n imports: [\n CommonModule,\n AXLoadingModule,\n AXButtonModule,\n AXGridLayoutBuilderModule,\n AXTranslationModule,\n AXPWidgetCoreModule,\n AXPStateMessageComponent,\n AXMDashboardWidgetWrapperComponent,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXMDashboardGridLayoutSectionComponent {\n //#region ---- Services & Dependencies ----\n\n protected readonly store = inject(AXMDashboardStore);\n private readonly dialogService = inject(AXDialogService);\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Inputs ----\n\n /** Widget container context object (bound to `axp-widgets-container`). */\n readonly widgetsContext = input<Record<string, unknown>>({});\n\n /**\n * `inline`: centered block (entity layout tab).\n * `overlay`: absolute overlay (home dashboard).\n */\n readonly loadingVariant = input<AXMDashboardGridLayoutLoadingVariant>('inline');\n\n /** Emitted when the user chooses to add a widget from the empty state. */\n readonly addWidget = output<void>();\n\n //#endregion\n\n //#region ---- Widget delete ----\n\n protected async confirmWidgetDelete(dashboardId: string, widgetId: string): Promise<void> {\n try {\n const dialogResult = await this.dialogService.confirm(\n await this.translationService.translateAsync('@general:workflow.warning'),\n await this.translationService.translateAsync('@general:workflow.confirm-delete'),\n 'danger',\n 'horizontal',\n );\n\n if (dialogResult.result) {\n this.store.removeWidget(dashboardId, widgetId);\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Error confirming widget deletion:', error);\n }\n }\n\n //#endregion\n}\n","<div class=\"axm-dashboard-grid-layout-section ax-flex ax-flex-col ax-h-full ax-min-h-0 ax-w-full\">\n @if (store.isLoading()) {\n @if (loadingVariant() === 'overlay') {\n <div\n class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-w-full ax-absolute ax-z-10 ax-bg-white/80\"\n >\n <ax-loading></ax-loading>\n <p class=\"ax-mt-3 ax-text-gray-600\">{{ '@dashboard:loading' | translate | async }}</p>\n </div>\n } @else {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-w-full ax-flex-1\">\n <ax-loading></ax-loading>\n <p class=\"ax-mt-3 ax-text-gray-600\">{{ '@dashboard:loading' | translate | async }}</p>\n </div>\n }\n } @else if (!store.selectedDashboard()?.widgets?.length) {\n <axp-state-message\n icon=\"fa-light fa-shapes\"\n [title]=\"'@dashboard:no-widgets.title'\"\n [description]=\"'@dashboard:no-widgets.description'\"\n >\n <div slot=\"actions\">\n <button type=\"button\" (click)=\"addWidget.emit()\" class=\"ax-underline\">\n {{ '@dashboard:add-widget' | translate | async }}\n </button>\n </div>\n </axp-state-message>\n } @else {\n <axp-widgets-container [context]=\"widgetsContext()\">\n <ax-grid-layout-container\n class=\"ax-w-full dark:[--ax-comp-grid-layout-stack-item-content-bg-color:var(--ax-sys-color-lighter-surface)] [--ax-comp-grid-layout-stack-item-content-bg-color:var(--ax-sys-color-lightest-surface)]\"\n [options]=\"store.currentLayoutOptions()\"\n (onChange)=\"store.onGridChange($event)\"\n >\n @for (widget of store.currentWidgets(); track widget.config.id) {\n <ax-grid-layout-widget [options]=\"widget.resolvedOptions\">\n @let title = (widget.node?.options?.['title'] ?? widget.config.title) | translate | async;\n @let isHeaderTitleVisible = widget.node?.meta?.['title']?.['visible'] ?? true;\n\n <axm-dashboard-widget-wrapper\n [title]=\"isHeaderTitleVisible ? title! : null\"\n [hasConfiguration]=\"store.canConfigureWidget()(widget)\"\n [isLocked]=\"store.isWidgetLocked()(widget)\"\n (onDelete)=\"confirmWidgetDelete(store.selectedDashboard()!.id, widget.config.id!)\"\n (onConfiguration)=\"store.handlePopupConfiguration(widget.node!)\"\n (onValueChanged)=\"store.handleValueChanged(widget?.node!, $event)\"\n (onOptionsChanged)=\"store.handleOptionsChanged(widget?.node!, $event)\"\n >\n @if (widget.node) {\n <ng-container axp-widget-renderer [node]=\"widget.node\" [mode]=\"'view'\"></ng-container>\n }\n </axm-dashboard-widget-wrapper>\n </ax-grid-layout-widget>\n }\n </ax-grid-layout-container>\n </axp-widgets-container>\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, inject, signal, ViewEncapsulation } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXButtonGroupModule } from '@acorex/components/button-group';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPStateMessageComponent, AXPThemeLayoutBlockComponent } from '@acorex/platform/layout/components';\nimport { AXPDesignerService } from '@acorex/platform/layout/designer';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent, AXPPageLayoutComponent } from '@acorex/platform/layout/views';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\n\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { resolveMultiLanguageString } from '@acorex/core/translation';\nimport { AXPActionMenuItem, AXPBadge, AXPExecuteCommand } from '@acorex/platform/core';\nimport { RootConfig } from '../../../const';\nimport { AXMDashboardStore } from '../../dashboard-services/home-dashboard.store';\nimport { AXMDashboardGridLayoutSectionComponent } from '../../shared/dashboard-grid-layout-section';\n\n@Component({\n selector: 'axm-dashboard-home',\n templateUrl: './home-dashboard.html',\n styleUrls: ['./home-dashboard.scss'],\n imports: [\n CommonModule,\n AXLoadingModule,\n AXButtonModule,\n AXButtonGroupModule,\n AXPPageLayoutComponent,\n AXPThemeLayoutBlockComponent,\n AXDropdownButtonModule,\n AXDropdownModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXBreadcrumbsModule,\n AXMDashboardGridLayoutSectionComponent,\n AXPStateMessageComponent,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n AXPDesignerService,\n AXMDashboardStore,\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMDashboardHomeComponent,\n },\n ],\n})\nexport class AXMDashboardHomeComponent extends AXPPageLayoutBaseComponent {\n // Dependencies\n protected readonly rootConfig = RootConfig;\n protected readonly dialogService = inject(AXDialogService);\n protected readonly popupService = inject(AXPopupService);\n protected readonly router = inject(Router);\n protected readonly store = inject(AXMDashboardStore);\n protected readonly themeService = inject(AXPLayoutThemeService);\n // Component State\n\n protected readonly context = signal({});\n private dashboardsLoaded = signal(false);\n\n // Effects\n #initEffect = effect(() => {\n const allDashboards = this.store.availableDashboards();\n if (allDashboards.length > 0 && !this.dashboardsLoaded()) {\n this.dashboardsLoaded.set(true);\n this.applyDashboardFiltering();\n this.recompute();\n }\n });\n\n // Private Methods\n private applyDashboardFiltering(): void {}\n\n private isTenantDashboardReadOnlyForCurrentUser(): boolean {\n const selectedDashboard = this.store.selectedDashboard();\n return !this.store.isUserAdmin() && selectedDashboard?.scope === 'T';\n }\n\n // Page Interface Implementation\n override getPageTitle(): string {\n const title = this.store.selectedDashboard()?.title;\n if (title == null || title === '') {\n return 'Dashboard';\n }\n const translatedTitle = resolveMultiLanguageString(title, this.translateService.getActiveLang());\n return translatedTitle;\n }\n\n override async getPageDescription(): Promise<string> {\n const raw = this.store.selectedDashboard()?.description;\n if (raw == null || raw === '') {\n return '';\n }\n if (typeof raw === 'object' && !Array.isArray(raw) && this.translateService.isValidMultiLanguageObject(raw)) {\n return this.translateService.resolve(raw);\n }\n return String(raw);\n }\n\n override async getPageBadge(): Promise<AXPBadge | null> {\n const selectedDashboard = this.store.selectedDashboard();\n if (selectedDashboard?.scope !== 'T') {\n return null;\n }\n return {\n title: await this.translateService.translateAsync(\n '@dashboard-management:dashboards.entities.dashboard.fields.scope.options.tenant',\n ),\n color: 'primary',\n description: 'Shared tenant dashboard',\n };\n }\n\n protected override getTitleActions(): AXPActionMenuItem[] | Promise<AXPActionMenuItem[]> {\n return this.store\n .dashboards()\n .map((dashboard) => ({\n title: resolveMultiLanguageString(dashboard.title, this.translateService.getActiveLang()),\n command: { name: dashboard.id, metadata: { isDashboard: true, dashboard } },\n icon: dashboard.id === this.store.currentDashboardId() ? 'fa-solid fa-check' : '',\n }))\n .sort((a, b) => (a.title ?? '').localeCompare(b.title ?? '', undefined, { sensitivity: 'base' }));\n }\n\n override async getPrimaryMenuItems(): Promise<AXPActionMenuItem[]> {\n return [\n {\n title: '@general:actions.add-item.title',\n icon: 'fa-light fa-square-plus',\n color: 'primary',\n items: [\n {\n title: await this.translateService.translateAsync('@dashboard:dashboard'),\n icon: 'fa-light fa-gauge-high',\n break: true,\n command: { name: 'new-dashboard' },\n },\n {\n title: await this.translateService.translateAsync('@dashboard:widget'),\n icon: 'fa-light fa-window-restore',\n command: { name: 'new-widget' },\n disabled:\n this.store.dashboards().length < 1 ||\n this.store.isDashboardLocked() ||\n this.isTenantDashboardReadOnlyForCurrentUser(),\n },\n ],\n },\n ];\n }\n\n override async getSecondaryMenuItems(): Promise<AXPActionMenuItem[]> {\n const items: AXPActionMenuItem[] = [\n {\n title: await this.translateService.translateAsync('@general:actions.edit.title'),\n icon: 'fa-light fa-pen',\n color: 'primary',\n disabled: this.store.dashboards().length < 1 || this.isTenantDashboardReadOnlyForCurrentUser(),\n command: { name: 'edit' },\n },\n ];\n\n items.push({\n title: await this.translateService.translateAsync('@general:actions.delete.title'),\n icon: 'fa-light fa-trash-can',\n color: 'danger',\n disabled: this.store.dashboards().length < 1 || this.isTenantDashboardReadOnlyForCurrentUser(),\n command: { name: 'delete' },\n });\n\n return items;\n }\n\n override async execute(command: AXPExecuteCommand): Promise<void> {\n if (command.metadata?.['isDashboard']) {\n this.store.handleConfigChange(command.metadata?.['dashboard']);\n this.recompute();\n return;\n }\n\n switch (command.name) {\n case 'new-dashboard':\n await this.store.addDashboard();\n this.recompute();\n break;\n case 'new-widget':\n await this.store.addWidget();\n this.recompute();\n break;\n case 'edit':\n await this.store.editDashboard();\n this.recompute();\n break;\n case 'delete':\n await this.store.removeDashboard(this.store.selectedDashboard()?.id!);\n this.recompute();\n break;\n case 'toggle-lock':\n await this.store.toggleLockDashboard();\n this.recompute();\n setTimeout(() => this.recompute(), 50);\n break;\n }\n }\n}\n","<axp-page-layout *translate=\"let t\">\n <axp-page-content class=\"ax-relative\">\n @if (store.isLoading()) {\n <div\n class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-w-full ax-absolute ax-z-10 ax-bg-white/80\"\n >\n <ax-loading></ax-loading>\n <p class=\"ax-mt-3 ax-text-gray-600\">{{ '@dashboard:loading' | translate | async }}</p>\n </div>\n } @else if (!store.dashboards().length) {\n <axp-state-message\n icon=\"fa-light fa-shapes\"\n [title]=\"'@dashboard:empty-state.title'\"\n [description]=\"'@dashboard:empty-state.description'\"\n >\n <div slot=\"actions\">\n <button type=\"button\" (click)=\"execute({ name: 'new-dashboard' })\" class=\"ax-underline\">\n {{ '@dashboard:add-first-dashboard' | translate | async }}\n </button>\n </div>\n </axp-state-message>\n } @else {\n <axm-dashboard-grid-layout-section\n [widgetsContext]=\"context()\"\n [loadingVariant]=\"'overlay'\"\n (addWidget)=\"execute({ name: 'new-widget' })\"\n ></axm-dashboard-grid-layout-section>\n }\n </axp-page-content>\n</axp-page-layout>\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXSwitchModule } from '@acorex/components/switch';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport {\n AXMOrganizationManagementJobDefinitionEntityModel,\n RootConfig as OrganizationManagementRootConfig,\n} from '@acorex/modules/organization-management';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { CommonModule } from '@angular/common';\nimport { Component, inject, model, OnInit } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RootConfig } from '../../../const';\nimport { AXMDashboardLayout } from '../dashboard-home';\n\n@Component({\n template: `\n <div class=\"ax-card-body ax-p-4\">\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-pb-4\">\n <p class=\"ax-font-semibold\">{{ '@general:terms.common.title' | translate | async }}</p>\n <ax-text-box\n [(ngModel)]=\"title\"\n name=\"title\"\n placeholder=\"{{ '@general:terms.common.title' | translate | async }}\"\n >\n </ax-text-box>\n </div>\n <div class=\"ax-flex ax-flex-col ax-gap-2\">\n <p class=\"ax-font-semibold\">{{ '@general:terms.common.description' | translate | async }}</p>\n <ax-text-box\n [(ngModel)]=\"description\"\n name=\"description\"\n placeholder=\"{{ '@general:terms.common.description' | translate | async }}\"\n >\n </ax-text-box>\n </div>\n\n @if (showAdminFields()) {\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-mt-4\">\n <p class=\"ax-font-semibold\">{{ 'roles' | translate: { scope } | async }}</p>\n <ax-select-box\n [(ngModel)]=\"selectedRoleIds\"\n [dataSource]=\"roles\"\n [multiple]=\"true\"\n [textField]=\"'title'\"\n [valueField]=\"'id'\"\n name=\"roles\"\n placeholder=\"{{ 'select-roles' | translate: { scope } | async }}\"\n >\n </ax-select-box>\n </div>\n\n <div class=\"ax-grid grid-cols-2 ax-grid-flow-col ax-gap-8 ax-mt-4\">\n <div class=\"ax-flex ax-flex-row ax-items-center ax-gap-2\">\n <p class=\"ax-font-semibold\">{{ '@general:terms.status.states.is-archived' | translate | async }}</p>\n <ax-switch [(ngModel)]=\"isArchived\" name=\"isArchived\"></ax-switch>\n </div>\n\n <div class=\"ax-flex ax-flex-row ax-items-center ax-gap-2\">\n <p class=\"ax-font-semibold\">{{ 'lock' | translate: { scope } | async }}</p>\n <ax-switch [(ngModel)]=\"isLocked\" name=\"isLocked\"></ax-switch>\n </div>\n </div>\n }\n </div>\n\n <ax-footer>\n <ax-prefix></ax-prefix>\n <ax-suffix>\n <ax-button\n [text]=\"'@general:actions.cancel.title' | translate | async\"\n look=\"solid\"\n (onClick)=\"handleClose(true)\"\n >\n </ax-button>\n <ax-button\n [text]=\"'@general:actions.save.title' | translate | async\"\n look=\"solid\"\n color=\"primary\"\n [disabled]=\"!isValid\"\n (onClick)=\"handleClose()\"\n >\n <ax-icon class=\"fa-solid fa-save\"></ax-icon>\n </ax-button>\n </ax-suffix>\n </ax-footer>\n `,\n imports: [\n FormsModule,\n AXButtonModule,\n AXTextBoxModule,\n AXLabelModule,\n AXDecoratorModule,\n CommonModule,\n AXTranslationModule,\n AXSelectBoxModule,\n AXSwitchModule,\n ],\n standalone: true,\n})\nexport class AXMAddDashboardPopup extends AXBasePageComponent implements OnInit {\n protected readonly scope = RootConfig.config.i18n;\n\n private readonly data: Partial<AXMDashboardLayout & { isAdmin: boolean }>;\n\n private readonly entityService = inject(AXPEntityService);\n private readonly jobDefinitionData = this.entityService\n .withEntity(OrganizationManagementRootConfig.module.name, OrganizationManagementRootConfig.entities.jobDefinition.name)\n .data<string, AXMOrganizationManagementJobDefinitionEntityModel>();\n private readonly sessionService = inject(AXPSessionService);\n private readonly multiLanguageResolver = inject(AXTranslationService);\n\n protected title = model<string>('');\n protected description = model<string>('');\n protected selectedRoleIds = model<string[]>([]);\n protected isArchived = model<boolean>(false);\n protected isLocked = model<boolean>(false);\n protected isAdmin = model<boolean>(false);\n protected showAdminFields = model<boolean>(false);\n protected roles: any[] = [];\n\n protected get isValid(): boolean {\n return !!this.title()?.trim();\n }\n\n /**\n * Maps stored dashboard title (plain or multi-language) to a single string for this popup’s text box.\n */\n private titleToPlainText(value: AXMDashboardLayout['title'] | undefined): string {\n if (value == null || value === '') {\n return '';\n }\n if (\n typeof value === 'object' &&\n !Array.isArray(value) &&\n this.multiLanguageResolver.isValidMultiLanguageObject(value)\n ) {\n return this.multiLanguageResolver.resolve(value);\n }\n return String(value);\n }\n\n /**\n * Maps stored dashboard description (plain or multi-language) to a single string for this popup’s text box.\n */\n private descriptionToPlainText(value: AXMDashboardLayout['description'] | undefined): string {\n if (value == null || value === '') {\n return '';\n }\n if (\n typeof value === 'object' &&\n !Array.isArray(value) &&\n this.multiLanguageResolver.isValidMultiLanguageObject(value)\n ) {\n return this.multiLanguageResolver.resolve(value);\n }\n return String(value);\n }\n\n override async ngOnInit(): Promise<void> {\n // Set initial values from input data\n this.title.set(this.titleToPlainText(this.data?.title));\n this.description.set(this.descriptionToPlainText(this.data?.description));\n this.isArchived.set(this.data?.isArchived || false);\n this.isLocked.set(this.data?.locked || false);\n this.isAdmin.set(this.data?.isAdmin || false);\n this.showAdminFields.set(this.isAdmin() && this.data?.scope !== 'U');\n // Load roles if admin\n if (this.showAdminFields()) {\n try {\n const result = await this.jobDefinitionData.query({ skip: 0, take: 100 });\n if (result.items && result.items.length > 0) {\n this.roles = result.items.map((i) => ({\n id: i.id,\n title: this.multiLanguageResolver.resolve(i.title),\n }));\n }\n this.selectedRoleIds.set(this.roles.filter((i) => this.data?.roleIds?.includes(i.id)).map((i) => i.id));\n } catch (error) {\n console.error('Error loading roles:', error);\n this.roles = [];\n }\n }\n }\n\n protected async handleClose(isCanceled = false): Promise<void> {\n this.close({\n title: this.title()?.trim(),\n description: this.description()?.trim(),\n roleIds: this.showAdminFields() ? this.selectedRoleIds() : undefined,\n isArchived: this.showAdminFields() ? this.isArchived() : undefined,\n locked: this.showAdminFields() ? this.isLocked() : undefined,\n scope: this.showAdminFields() ? 'T' : 'U',\n createdBy: this.sessionService.user?.id,\n createdAt: new Date(),\n updatedBy: this.sessionService.user?.id,\n updatedAt: new Date(),\n isCanceled,\n });\n }\n}\n","const path = 'home:dashboard:';\nexport enum AXPHomeDashboardSetting {\n CurrentDashboard = `${path}current-dashboard`,\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","rxjsInterval","i1","i3","i4","AXPHomeDashboardSetting","i5","OrganizationManagementRootConfig","i7","i8"],"mappings":"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"}