@acorex/modules 19.3.1 → 19.3.3-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (257) hide show
  1. package/common/index.d.ts +1 -0
  2. package/common/lib/common.module.d.ts +3 -1
  3. package/common/lib/features/global-search/index.d.ts +3 -0
  4. package/common/lib/features/global-search/search-popup.component.d.ts +22 -0
  5. package/common/lib/features/global-search/search-slot.component.d.ts +9 -0
  6. package/common/lib/features/global-search/search.config.d.ts +5 -0
  7. package/common/lib/features/global-search/search.module.d.ts +11 -0
  8. package/common/lib/features/global-search/search.viewmodel.d.ts +34 -0
  9. package/common/lib/features/global-search/workflows/search.workflow.d.ts +11 -0
  10. package/dashboard-management/lib/entities/dashboard/dashboard.types.d.ts +2 -2
  11. package/dashboard-management/lib/features/home-dashboard/dashboard-home/home-dashboard.d.ts +7 -7
  12. package/dashboard-management/lib/features/home-dashboard/dashboard-home/home-dashboard.store.d.ts +6 -6
  13. package/dashboard-management/lib/features/home-dashboard/dashboard-home/home-dashboard.type.d.ts +3 -3
  14. package/dashboard-management/lib/features/home-dashboard/dashboard-popups/add-dashboard-popup.d.ts +3 -3
  15. package/dashboard-management/lib/features/home-dashboard/dashboard-popups/configuration-popup.d.ts +3 -3
  16. package/dashboard-management/lib/features/home-dashboard/dashboard-popups/dashboard-popup.service.d.ts +5 -5
  17. package/dashboard-management/lib/features/home-dashboard/widget-wrapper/dashboard-widget-wrapper.d.ts +4 -3
  18. package/dashboard-management/lib/features/shared/widgets/bar-chart/bar-chart-widget.component.d.ts +9 -64
  19. package/dashboard-management/lib/features/shared/widgets/clock-calendar/clock-calendar-widget.component.d.ts +0 -1
  20. package/dashboard-management/lib/features/shared/widgets/donut-chart/donut-chart-widget.component.d.ts +9 -50
  21. package/dashboard-management/lib/features/shared/widgets/gauge-chart/gauge-chart-widget.component.d.ts +8 -67
  22. package/dashboard-management/lib/features/shared/widgets/gauge-chart/index.d.ts +0 -1
  23. package/dashboard-management/lib/features/shared/widgets/index.d.ts +0 -2
  24. package/dashboard-management/lib/features/shared/widgets/line-chart/index.d.ts +0 -1
  25. package/dashboard-management/lib/features/shared/widgets/line-chart/line-chart-widget.component.d.ts +9 -68
  26. package/document-management/lib/features/document-explorer/document-explorer.component.d.ts +1 -0
  27. package/document-management/lib/features/document-explorer/document-explorer.viewmodel.d.ts +1 -0
  28. package/document-management/lib/features/document-explorer/views/detail-panel/detail-panel.component.d.ts +1 -0
  29. package/document-management/lib/features/document-explorer/views/details/details-view.component.d.ts +1 -0
  30. package/document-management/lib/features/document-explorer/views/large-icons/large-icons-view.component.d.ts +1 -0
  31. package/document-management/lib/features/document-explorer/views/large-tiles/large-tiles-view.component.d.ts +1 -0
  32. package/document-management/lib/features/document-explorer/views/list/list-view.component.d.ts +1 -0
  33. package/document-management/lib/features/document-explorer/views/small-icons/small-icons-view.component.d.ts +1 -0
  34. package/document-management/lib/features/document-explorer/views/small-tiles/small-tiles-view.component.d.ts +1 -0
  35. package/document-management/lib/features/drive/drive.component.d.ts +1 -0
  36. package/document-management/lib/features/drive-choose/drive-choose.component.d.ts +1 -0
  37. package/document-management/lib/features/shared/components/folder-path-breadcrumbs/folder-path-breadcrumbs.component.d.ts +1 -0
  38. package/document-management/lib/features/widgets/document-attachment/document-attachment-widget-edit.component.d.ts +4 -3
  39. package/document-management/lib/permission-definition.provider.d.ts +4 -0
  40. package/document-management/lib/permission.keys.d.ts +19 -0
  41. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-B1HTJdsE.mjs → acorex-modules-auth-acorex-modules-auth-DJZcD1j3.mjs} +23 -83
  42. package/fesm2022/acorex-modules-auth-acorex-modules-auth-DJZcD1j3.mjs.map +1 -0
  43. package/fesm2022/acorex-modules-auth-app-chooser.component-DlYxDGQr.mjs +65 -0
  44. package/fesm2022/acorex-modules-auth-app-chooser.component-DlYxDGQr.mjs.map +1 -0
  45. package/fesm2022/{acorex-modules-auth-login.module-TtdNj0aL.mjs → acorex-modules-auth-login.module-D-XgzifC.mjs} +4 -4
  46. package/fesm2022/{acorex-modules-auth-login.module-TtdNj0aL.mjs.map → acorex-modules-auth-login.module-D-XgzifC.mjs.map} +1 -1
  47. package/fesm2022/{acorex-modules-auth-master.layout-CtVrY1hn.mjs → acorex-modules-auth-master.layout-ZaCb3CED.mjs} +2 -2
  48. package/fesm2022/{acorex-modules-auth-master.layout-CtVrY1hn.mjs.map → acorex-modules-auth-master.layout-ZaCb3CED.mjs.map} +1 -1
  49. package/fesm2022/{acorex-modules-auth-password.component-Dmj9zZSI.mjs → acorex-modules-auth-password.component-C-xRIhrM.mjs} +2 -2
  50. package/fesm2022/{acorex-modules-auth-password.component-Dmj9zZSI.mjs.map → acorex-modules-auth-password.component-C-xRIhrM.mjs.map} +1 -1
  51. package/fesm2022/{acorex-modules-auth-password.component-BXm2NAaN.mjs → acorex-modules-auth-password.component-CLTZoufP.mjs} +2 -2
  52. package/fesm2022/{acorex-modules-auth-password.component-BXm2NAaN.mjs.map → acorex-modules-auth-password.component-CLTZoufP.mjs.map} +1 -1
  53. package/fesm2022/{acorex-modules-auth-routes-DkgsKi3a.mjs → acorex-modules-auth-routes-4T5jq7su.mjs} +2 -2
  54. package/fesm2022/{acorex-modules-auth-routes-DkgsKi3a.mjs.map → acorex-modules-auth-routes-4T5jq7su.mjs.map} +1 -1
  55. package/fesm2022/acorex-modules-auth-tenant-chooser.component-Ow7QtAWc.mjs +98 -0
  56. package/fesm2022/acorex-modules-auth-tenant-chooser.component-Ow7QtAWc.mjs.map +1 -0
  57. package/fesm2022/{acorex-modules-auth-two-factor.module-DDOSqjYs.mjs → acorex-modules-auth-two-factor.module-D72KIpvA.mjs} +2 -2
  58. package/fesm2022/{acorex-modules-auth-two-factor.module-DDOSqjYs.mjs.map → acorex-modules-auth-two-factor.module-D72KIpvA.mjs.map} +1 -1
  59. package/fesm2022/{acorex-modules-auth-user-sessions.component-B3i44VC5.mjs → acorex-modules-auth-user-sessions.component-Btnu_Oeq.mjs} +2 -2
  60. package/fesm2022/{acorex-modules-auth-user-sessions.component-B3i44VC5.mjs.map → acorex-modules-auth-user-sessions.component-Btnu_Oeq.mjs.map} +1 -1
  61. package/fesm2022/acorex-modules-auth.mjs +1 -1
  62. package/fesm2022/acorex-modules-common-search-popup.component-C3XUb6pF.mjs +128 -0
  63. package/fesm2022/acorex-modules-common-search-popup.component-C3XUb6pF.mjs.map +1 -0
  64. package/fesm2022/acorex-modules-common.mjs +289 -9
  65. package/fesm2022/acorex-modules-common.mjs.map +1 -1
  66. package/fesm2022/{acorex-modules-dashboard-management-acorex-modules-dashboard-management-CReOsVhq.mjs → acorex-modules-dashboard-management-acorex-modules-dashboard-management-Ccj2AaJ1.mjs} +848 -2176
  67. package/fesm2022/acorex-modules-dashboard-management-acorex-modules-dashboard-management-Ccj2AaJ1.mjs.map +1 -0
  68. package/fesm2022/{acorex-modules-dashboard-management-home-dashboard-CHXDeuSF.mjs → acorex-modules-dashboard-management-home-dashboard-BXD0g_tp.mjs} +49 -48
  69. package/fesm2022/acorex-modules-dashboard-management-home-dashboard-BXD0g_tp.mjs.map +1 -0
  70. package/fesm2022/acorex-modules-dashboard-management.mjs +1 -1
  71. package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-vYaqbxKs.mjs → acorex-modules-document-management-acorex-modules-document-management-Dw7YKb_h.mjs} +59 -41
  72. package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-Dw7YKb_h.mjs.map +1 -0
  73. package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-Bc_IX3gT.mjs → acorex-modules-document-management-create-folder-dialog.component-Ty5V60Tu.mjs} +2 -2
  74. package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-Bc_IX3gT.mjs.map → acorex-modules-document-management-create-folder-dialog.component-Ty5V60Tu.mjs.map} +1 -1
  75. package/fesm2022/{acorex-modules-document-management-details-view.component-_9f5TQJi.mjs → acorex-modules-document-management-details-view.component-BuUJq8WU.mjs} +2 -2
  76. package/fesm2022/{acorex-modules-document-management-details-view.component-_9f5TQJi.mjs.map → acorex-modules-document-management-details-view.component-BuUJq8WU.mjs.map} +1 -1
  77. package/fesm2022/{acorex-modules-document-management-drive-choose.component-CFOb0_MF.mjs → acorex-modules-document-management-drive-choose.component-DSCIj1X_.mjs} +2 -2
  78. package/fesm2022/{acorex-modules-document-management-drive-choose.component-CFOb0_MF.mjs.map → acorex-modules-document-management-drive-choose.component-DSCIj1X_.mjs.map} +1 -1
  79. package/fesm2022/{acorex-modules-document-management-large-icons-view.component-D9es4CBl.mjs → acorex-modules-document-management-large-icons-view.component-DvrdSkIZ.mjs} +2 -2
  80. package/fesm2022/{acorex-modules-document-management-large-icons-view.component-D9es4CBl.mjs.map → acorex-modules-document-management-large-icons-view.component-DvrdSkIZ.mjs.map} +1 -1
  81. package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-Q1Sjg47F.mjs → acorex-modules-document-management-large-tiles-view.component-rIxsD8sE.mjs} +2 -2
  82. package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-Q1Sjg47F.mjs.map → acorex-modules-document-management-large-tiles-view.component-rIxsD8sE.mjs.map} +1 -1
  83. package/fesm2022/{acorex-modules-document-management-list-view.component-BUu5vrul.mjs → acorex-modules-document-management-list-view.component-BrutZLAU.mjs} +2 -2
  84. package/fesm2022/{acorex-modules-document-management-list-view.component-BUu5vrul.mjs.map → acorex-modules-document-management-list-view.component-BrutZLAU.mjs.map} +1 -1
  85. package/fesm2022/acorex-modules-document-management-permission-definition.provider-CQOLEctF.mjs +31 -0
  86. package/fesm2022/acorex-modules-document-management-permission-definition.provider-CQOLEctF.mjs.map +1 -0
  87. package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-BMRmdslE.mjs → acorex-modules-document-management-rename-node-dialog.component-zSY0PShA.mjs} +2 -2
  88. package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-BMRmdslE.mjs.map → acorex-modules-document-management-rename-node-dialog.component-zSY0PShA.mjs.map} +1 -1
  89. package/fesm2022/{acorex-modules-document-management-small-icons-view.component-ChSS7z9z.mjs → acorex-modules-document-management-small-icons-view.component-CFB6g5r6.mjs} +2 -2
  90. package/fesm2022/{acorex-modules-document-management-small-icons-view.component-ChSS7z9z.mjs.map → acorex-modules-document-management-small-icons-view.component-CFB6g5r6.mjs.map} +1 -1
  91. package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-Ci33qbBY.mjs → acorex-modules-document-management-small-tiles-view.component-Dp2Lnb3c.mjs} +2 -2
  92. package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-Ci33qbBY.mjs.map → acorex-modules-document-management-small-tiles-view.component-Dp2Lnb3c.mjs.map} +1 -1
  93. package/fesm2022/acorex-modules-document-management.mjs +1 -1
  94. package/fesm2022/{acorex-modules-form-template-management-acorex-modules-form-template-management-Cv92x_9Z.mjs → acorex-modules-form-template-management-acorex-modules-form-template-management-CJ2Qoott.mjs} +33 -15
  95. package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-CJ2Qoott.mjs.map +1 -0
  96. package/fesm2022/{acorex-modules-form-template-management-category.entity-DPVwQW4X.mjs → acorex-modules-form-template-management-category.entity-BjNsUAZq.mjs} +2 -2
  97. package/fesm2022/{acorex-modules-form-template-management-category.entity-DPVwQW4X.mjs.map → acorex-modules-form-template-management-category.entity-BjNsUAZq.mjs.map} +1 -1
  98. package/fesm2022/{acorex-modules-form-template-management-permission-definition.provider-BrWbwKTK.mjs → acorex-modules-form-template-management-permission-definition.provider-CqZ8ytjA.mjs} +2 -21
  99. package/fesm2022/acorex-modules-form-template-management-permission-definition.provider-CqZ8ytjA.mjs.map +1 -0
  100. package/fesm2022/{acorex-modules-form-template-management-settings.provider-iwOUp0iw.mjs → acorex-modules-form-template-management-settings.provider-LrzsYkiL.mjs} +2 -2
  101. package/fesm2022/{acorex-modules-form-template-management-settings.provider-iwOUp0iw.mjs.map → acorex-modules-form-template-management-settings.provider-LrzsYkiL.mjs.map} +1 -1
  102. package/fesm2022/{acorex-modules-form-template-management-template-widget-edit.component-BkR3x74p.mjs → acorex-modules-form-template-management-template-widget-edit.component-BP75i9zU.mjs} +2 -2
  103. package/fesm2022/{acorex-modules-form-template-management-template-widget-edit.component-BkR3x74p.mjs.map → acorex-modules-form-template-management-template-widget-edit.component-BP75i9zU.mjs.map} +1 -1
  104. package/fesm2022/{acorex-modules-form-template-management-template.entity-NgmH7r8R.mjs → acorex-modules-form-template-management-template.entity-CCaHPkWq.mjs} +2 -2
  105. package/fesm2022/{acorex-modules-form-template-management-template.entity-NgmH7r8R.mjs.map → acorex-modules-form-template-management-template.entity-CCaHPkWq.mjs.map} +1 -1
  106. package/fesm2022/{acorex-modules-form-template-management-viewer-popup.component-Cq33xA62.mjs → acorex-modules-form-template-management-viewer-popup.component-CUOsh6e5.mjs} +2 -2
  107. package/fesm2022/{acorex-modules-form-template-management-viewer-popup.component-Cq33xA62.mjs.map → acorex-modules-form-template-management-viewer-popup.component-CUOsh6e5.mjs.map} +1 -1
  108. package/fesm2022/acorex-modules-form-template-management.mjs +1 -1
  109. package/fesm2022/{acorex-modules-issue-management-acorex-modules-issue-management-Q47ZZSSE.mjs → acorex-modules-issue-management-acorex-modules-issue-management-DcmAnBue.mjs} +42 -43
  110. package/fesm2022/{acorex-modules-issue-management-acorex-modules-issue-management-Q47ZZSSE.mjs.map → acorex-modules-issue-management-acorex-modules-issue-management-DcmAnBue.mjs.map} +1 -1
  111. package/fesm2022/{acorex-modules-issue-management-capture-screen.component-Dns1Wrkd.mjs → acorex-modules-issue-management-capture-screen.component-BMpafdHr.mjs} +2 -2
  112. package/fesm2022/{acorex-modules-issue-management-capture-screen.component-Dns1Wrkd.mjs.map → acorex-modules-issue-management-capture-screen.component-BMpafdHr.mjs.map} +1 -1
  113. package/fesm2022/acorex-modules-issue-management.mjs +1 -1
  114. package/fesm2022/acorex-modules-log-management.mjs +3 -8
  115. package/fesm2022/acorex-modules-log-management.mjs.map +1 -1
  116. package/fesm2022/acorex-modules-notification-management.mjs +621 -52
  117. package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
  118. package/fesm2022/{acorex-modules-organization-management-add-item.component-DW0TneoX.mjs → acorex-modules-organization-management-add-item.component-DE0Ek0dk.mjs} +3 -3
  119. package/fesm2022/{acorex-modules-organization-management-add-item.component-DW0TneoX.mjs.map → acorex-modules-organization-management-add-item.component-DE0Ek0dk.mjs.map} +1 -1
  120. package/fesm2022/acorex-modules-organization-management-org-chart-configuration.page-RuvkSheN.mjs +124 -0
  121. package/fesm2022/acorex-modules-organization-management-org-chart-configuration.page-RuvkSheN.mjs.map +1 -0
  122. package/fesm2022/{acorex-modules-organization-management-org-chart.page-DnRbGIWN.mjs → acorex-modules-organization-management-org-chart.page-C2qYJxpY.mjs} +59 -19
  123. package/fesm2022/acorex-modules-organization-management-org-chart.page-C2qYJxpY.mjs.map +1 -0
  124. package/fesm2022/acorex-modules-organization-management.mjs +7 -7
  125. package/fesm2022/acorex-modules-organization-management.mjs.map +1 -1
  126. package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-DIsYLKbA.mjs → acorex-modules-platform-management-acorex-modules-platform-management-BaYlXX3M.mjs} +46 -53
  127. package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-BaYlXX3M.mjs.map +1 -0
  128. package/fesm2022/{acorex-modules-platform-management-list-version.component-D83yTFAm.mjs → acorex-modules-platform-management-list-version.component-DB8pe9so.mjs} +2 -2
  129. package/fesm2022/{acorex-modules-platform-management-list-version.component-D83yTFAm.mjs.map → acorex-modules-platform-management-list-version.component-DB8pe9so.mjs.map} +1 -1
  130. package/fesm2022/{acorex-modules-platform-management-settings.provider-DKkXCwrd.mjs → acorex-modules-platform-management-settings.provider-BQzM-lyt.mjs} +2 -2
  131. package/fesm2022/{acorex-modules-platform-management-settings.provider-DKkXCwrd.mjs.map → acorex-modules-platform-management-settings.provider-BQzM-lyt.mjs.map} +1 -1
  132. package/fesm2022/acorex-modules-platform-management.mjs +1 -1
  133. package/fesm2022/acorex-modules-project-management.mjs +218 -155
  134. package/fesm2022/acorex-modules-project-management.mjs.map +1 -1
  135. package/fesm2022/acorex-modules-security-management.mjs +472 -787
  136. package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
  137. package/fesm2022/acorex-modules-settings-management-setting-page.component-XDFtTqft.mjs +219 -0
  138. package/fesm2022/acorex-modules-settings-management-setting-page.component-XDFtTqft.mjs.map +1 -0
  139. package/fesm2022/acorex-modules-settings-management-setting-view.component-B_6RIU9e.mjs +103 -0
  140. package/fesm2022/acorex-modules-settings-management-setting-view.component-B_6RIU9e.mjs.map +1 -0
  141. package/fesm2022/acorex-modules-settings-management.mjs +442 -0
  142. package/fesm2022/acorex-modules-settings-management.mjs.map +1 -0
  143. package/fesm2022/acorex-modules-training-management.mjs +5572 -0
  144. package/fesm2022/acorex-modules-training-management.mjs.map +1 -0
  145. package/notification-management/index.d.ts +1 -0
  146. package/notification-management/lib/entities/notification/notification.service.d.ts +6 -6
  147. package/notification-management/lib/features/components/admin-notification-panel/admin-notification-panel.component.d.ts +13 -7
  148. package/{dashboard-management/lib/features/shared/widgets/notification → notification-management/lib/features/dashboard/widgets/my-notification}/index.d.ts +0 -1
  149. package/{dashboard-management/lib/features/shared/widgets/notification → notification-management/lib/features/dashboard/widgets/my-notification}/notification-widget.component.d.ts +37 -9
  150. package/notification-management/lib/features/dashboard/widgets/my-notification/notification-widget.config.d.ts +5 -0
  151. package/notification-management/lib/features/shared/notification-connector.service.d.ts +57 -0
  152. package/notification-management/lib/notification-management.module.d.ts +2 -1
  153. package/notification-management/lib/notification-management.type.d.ts +3 -0
  154. package/organization-management/lib/features/organization-chart/org-chart-configuration.page.d.ts +7 -61
  155. package/organization-management/lib/features/organization-chart/org-chart.page.d.ts +8 -61
  156. package/package.json +9 -1
  157. package/platform-management/lib/const.d.ts +2 -6
  158. package/platform-management/lib/features/app-terms/pages/list/list-terms.component.d.ts +11 -13
  159. package/security-management/lib/entities/index.d.ts +1 -2
  160. package/security-management/lib/entities/profile/index.d.ts +0 -1
  161. package/security-management/lib/entities/users/users.service.d.ts +2 -2
  162. package/security-management/lib/entities/users/users.types.d.ts +2 -2
  163. package/security-management/lib/user-avatar.provider.d.ts +5 -0
  164. package/settings-management/README.md +3 -0
  165. package/settings-management/index.d.ts +2 -0
  166. package/settings-management/lib/features/settings/convert-setting-data.d.ts +2 -0
  167. package/settings-management/lib/features/settings/search-definition.provider.d.ts +4 -0
  168. package/settings-management/lib/features/settings/search.provider.d.ts +9 -0
  169. package/settings-management/lib/features/settings/setting-page/setting-page.component.d.ts +65 -0
  170. package/settings-management/lib/features/settings/setting-view/setting-view.component.d.ts +135 -0
  171. package/settings-management/lib/features/settings/settings.viewmodel.d.ts +46 -0
  172. package/settings-management/lib/settings-management.module.d.ts +9 -0
  173. package/training-management/README.md +3 -0
  174. package/training-management/index.d.ts +7 -0
  175. package/training-management/lib/const.d.ts +85 -0
  176. package/training-management/lib/entities/certificate/certificate.entity.d.ts +3 -0
  177. package/training-management/lib/entities/certificate/certificate.service.d.ts +10 -0
  178. package/training-management/lib/entities/certificate/certificate.types.d.ts +12 -0
  179. package/training-management/lib/entities/certificate/index.d.ts +3 -0
  180. package/training-management/lib/entities/course/course.entity.d.ts +3 -0
  181. package/training-management/lib/entities/course/course.service.d.ts +10 -0
  182. package/training-management/lib/entities/course/course.types.d.ts +8 -0
  183. package/training-management/lib/entities/course/index.d.ts +3 -0
  184. package/training-management/lib/entities/course-location/course-location.entity.d.ts +3 -0
  185. package/training-management/lib/entities/course-location/course-location.service.d.ts +10 -0
  186. package/training-management/lib/entities/course-location/course-location.types.d.ts +6 -0
  187. package/training-management/lib/entities/course-location/index.d.ts +3 -0
  188. package/training-management/lib/entities/course-period/course-period.entity.d.ts +3 -0
  189. package/training-management/lib/entities/course-period/course-period.service.d.ts +10 -0
  190. package/training-management/lib/entities/course-period/course-period.types.d.ts +6 -0
  191. package/training-management/lib/entities/course-period/index.d.ts +3 -0
  192. package/training-management/lib/entities/course-type/course-type.entity.d.ts +3 -0
  193. package/training-management/lib/entities/course-type/course-type.service.d.ts +10 -0
  194. package/training-management/lib/entities/course-type/course-type.types.d.ts +5 -0
  195. package/training-management/lib/entities/course-type/index.d.ts +3 -0
  196. package/training-management/lib/entities/facilitator-type/facilitator-type.entity.d.ts +3 -0
  197. package/training-management/lib/entities/facilitator-type/facilitator-type.service.d.ts +10 -0
  198. package/training-management/lib/entities/facilitator-type/facilitator-type.types.d.ts +6 -0
  199. package/training-management/lib/entities/facilitator-type/index.d.ts +3 -0
  200. package/training-management/lib/entities/index.d.ts +12 -0
  201. package/training-management/lib/entities/location/index.d.ts +3 -0
  202. package/training-management/lib/entities/location/location.entity.d.ts +3 -0
  203. package/training-management/lib/entities/location/location.service.d.ts +10 -0
  204. package/training-management/lib/entities/location/location.types.d.ts +7 -0
  205. package/training-management/lib/entities/period/index.d.ts +3 -0
  206. package/training-management/lib/entities/period/period.entity.d.ts +3 -0
  207. package/training-management/lib/entities/period/period.service.d.ts +10 -0
  208. package/training-management/lib/entities/period/period.types.d.ts +6 -0
  209. package/training-management/lib/entities/training/index.d.ts +3 -0
  210. package/training-management/lib/entities/training/training.entity.d.ts +3 -0
  211. package/training-management/lib/entities/training/training.service.d.ts +10 -0
  212. package/training-management/lib/entities/training/training.types.d.ts +13 -0
  213. package/training-management/lib/entities/training-facilitator/index.d.ts +3 -0
  214. package/training-management/lib/entities/training-facilitator/training-facilitator.entity.d.ts +3 -0
  215. package/training-management/lib/entities/training-facilitator/training-facilitator.service.d.ts +10 -0
  216. package/training-management/lib/entities/training-facilitator/training-facilitator.types.d.ts +7 -0
  217. package/training-management/lib/entities/training-participant/index.d.ts +3 -0
  218. package/training-management/lib/entities/training-participant/training-participant.entity.d.ts +3 -0
  219. package/training-management/lib/entities/training-participant/training-participant.service.d.ts +10 -0
  220. package/training-management/lib/entities/training-participant/training-participant.types.d.ts +7 -0
  221. package/training-management/lib/entities/training-type/index.d.ts +3 -0
  222. package/training-management/lib/entities/training-type/training-type.entity.d.ts +3 -0
  223. package/training-management/lib/entities/training-type/training-type.service.d.ts +10 -0
  224. package/training-management/lib/entities/training-type/training-type.types.d.ts +7 -0
  225. package/training-management/lib/entity.provider.d.ts +10 -0
  226. package/training-management/lib/menu.provider.d.ts +5 -0
  227. package/training-management/lib/permission-definition.provider.d.ts +4 -0
  228. package/training-management/lib/search-command.provider.d.ts +4 -0
  229. package/training-management/lib/setting.provider.d.ts +4 -0
  230. package/training-management/lib/training-management.module.d.ts +6 -0
  231. package/auth/lib/pages/account/avatar/avatar.component.d.ts +0 -20
  232. package/dashboard-management/lib/features/shared/widgets/bar-chart/bar-chart.type.d.ts +0 -34
  233. package/dashboard-management/lib/features/shared/widgets/donut-chart/donut-chart.type.d.ts +0 -67
  234. package/dashboard-management/lib/features/shared/widgets/gauge-chart/gauge-chart.type.d.ts +0 -29
  235. package/dashboard-management/lib/features/shared/widgets/line-chart/line-chart.type.d.ts +0 -41
  236. package/dashboard-management/lib/features/shared/widgets/notification/notification-widget.config.d.ts +0 -10
  237. package/dashboard-management/lib/features/shared/widgets/notification/notification.type.d.ts +0 -47
  238. package/dashboard-management/lib/features/shared/widgets/shared/chart-base.component.d.ts +0 -44
  239. package/dashboard-management/lib/features/shared/widgets/shared/chart-base.type.d.ts +0 -37
  240. package/dashboard-management/lib/features/shared/widgets/shared/components/chart-tooltip/chart-tooltip.component.d.ts +0 -28
  241. package/dashboard-management/lib/features/shared/widgets/shared/components/chart-tooltip/index.d.ts +0 -1
  242. package/dashboard-management/lib/features/shared/widgets/shared/index.d.ts +0 -3
  243. package/fesm2022/acorex-modules-auth-acorex-modules-auth-B1HTJdsE.mjs.map +0 -1
  244. package/fesm2022/acorex-modules-auth-app-chooser.component-Ct-vco0y.mjs +0 -64
  245. package/fesm2022/acorex-modules-auth-app-chooser.component-Ct-vco0y.mjs.map +0 -1
  246. package/fesm2022/acorex-modules-auth-tenant-chooser.component-D9C6LCjn.mjs +0 -97
  247. package/fesm2022/acorex-modules-auth-tenant-chooser.component-D9C6LCjn.mjs.map +0 -1
  248. package/fesm2022/acorex-modules-dashboard-management-acorex-modules-dashboard-management-CReOsVhq.mjs.map +0 -1
  249. package/fesm2022/acorex-modules-dashboard-management-home-dashboard-CHXDeuSF.mjs.map +0 -1
  250. package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-vYaqbxKs.mjs.map +0 -1
  251. package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-Cv92x_9Z.mjs.map +0 -1
  252. package/fesm2022/acorex-modules-form-template-management-permission-definition.provider-BrWbwKTK.mjs.map +0 -1
  253. package/fesm2022/acorex-modules-organization-management-org-chart-configuration.page-DFqOS0So.mjs +0 -92
  254. package/fesm2022/acorex-modules-organization-management-org-chart-configuration.page-DFqOS0So.mjs.map +0 -1
  255. package/fesm2022/acorex-modules-organization-management-org-chart.page-DnRbGIWN.mjs.map +0 -1
  256. package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-DIsYLKbA.mjs.map +0 -1
  257. package/security-management/lib/entities/profile/profile.service.d.ts +0 -13
@@ -1 +0,0 @@
1
- {"version":3,"file":"acorex-modules-dashboard-management-acorex-modules-dashboard-management-CReOsVhq.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/menu.provider.ts","../../../../libs/modules/dashboard-management/src/lib/entities/dashboard/dashboard.service.ts","../../../../libs/modules/dashboard-management/src/lib/entities/dashboard/dashboard.entity.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/dashboard-shortcut/dashboard-shortcut-widget-view.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/chart.type.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/dashboard-shortcut/dashboard-shortcut-widget.config.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/shared/chart-base.type.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/shared/chart-base.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/shared/components/chart-tooltip/chart-tooltip.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/shared/components/chart-tooltip/chart-tooltip.component.html","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/bar-chart/bar-chart-widget.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/bar-chart/bar-chart-widget.component.html","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/bar-chart/bar-chart-widget.config.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/clock-calendar/clock-calendar-widget.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/clock-calendar/clock-calendar-widget.component.html","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/clock-calendar/clock-calendar.types.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/clock-calendar/clock-calendar-widget.config.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/donut-chart/donut-chart-widget.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/donut-chart/donut-chart-widget.component.html","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/donut-chart/donut-chart-widget.config.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/gauge-chart/gauge-chart-widget.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/gauge-chart/gauge-chart-widget.component.html","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/gauge-chart/gauge-chart-widget.config.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/line-chart/line-chart-widget.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/line-chart/line-chart-widget.component.html","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/line-chart/line-chart-widget.config.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/notification/notification-widget.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/notification/notification-widget.component.html","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/notification/notification-widget.config.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/sticky-note/sticky-note-widget.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/sticky-note/sticky-note-widget.component.html","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/sticky-note/sticky-note-widget.config.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/tasklist/tasklist-widget.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/tasklist/tasklist-widget.component.html","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/tasklist/tasklist-widget.config.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/weather/weather-services/weather-api.abstract.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/weather/weather-services/weather-api.mock.service.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/weather/weather-services/weather-api.key.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/weather/weather-services/weather-api.service.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/weather/weather-widget.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/weather/weather-widget.component.html","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/weather/weather-widget.config.ts","../../../../libs/modules/dashboard-management/src/lib/dashboard-management.module.ts","../../../../libs/modules/dashboard-management/src/acorex-modules-dashboard-management.ts"],"sourcesContent":["const config = {\n i18n: 'common',\n};\nexport const RootConfig = {\n config,\n module: {\n module: 'DashboardManagement',\n name: 'Dashboard Management',\n title: `t('module-name', {scope:\"${config.i18n}\"})`,\n icon: 'fa-regular fa-tachometer-alt',\n },\n entities: {\n dashboard: {\n name: 'Dashboard',\n title: `t(\"dashboard\", { scope: \"dashboard\" })`,\n titlePlural: `t(\"dashboardPlural\", { scope: \"dashboard\" })`,\n icon: 'fa-regular fa-tachometer-alt',\n },\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 Array.from(Object.values(RootConfig.entities)).map((entity: any) => ({\n module: module,\n entity: entity.name,\n }));\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","import { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPMenuProvider, AXPMenuProviderContext } from '@acorex/platform/common';\nimport { inject } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\nimport { RootConfig } from './const';\n\nexport class AXMMenuProvider implements AXPMenuProvider {\n private sessionService = inject(AXPSessionService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const scope = RootConfig.config.i18n;\n const module = RootConfig.module;\n const appName = this.sessionService.application?.name;\n\n const isAuthorized = await firstValueFrom(this.sessionService.isAuthorized$);\n if (!isAuthorized) {\n return;\n }\n }\n}\n","import { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport { AXMCommonDashboardEntityModel } from './dashboard.types';\n\nexport abstract class AXMDashboardService extends AXMEntityCrudServiceImpl<string, AXMCommonDashboardEntityModel> {}\n\n@Injectable()\nexport class AXMDashboardServiceImpl extends AXMDashboardService {\n constructor() {\n super(`${RootConfig.module.name}.${RootConfig.entities.dashboard.name}`);\n }\n}\n","import { AXPEntity, AXPEntityCommandScope, AXPEntityQueryType, createAllQueryView } from '@acorex/platform/common';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/builder';\nimport { Injector } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport { AXMDashboardService } from './dashboard.service';\n\nexport async function dashboardFactory(injector: Injector): Promise<AXPEntity | null> {\n const dataService = injector.get(AXMDashboardService);\n const i18n = RootConfig.config.i18n;\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.dashboard.name,\n source: '',\n title: RootConfig.entities.dashboard.title,\n formats: {\n individual: RootConfig.entities.dashboard.title,\n plural: RootConfig.entities.dashboard.titlePlural,\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 properties: [\n\n {\n name: 'name',\n title: `t(\"name\", { scope: \"common\" })`,\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: AXPWidgetsCatalog.text,\n },\n },\n },\n\n {\n name: 'title',\n title: `t(\"title\", { scope: \"common\" })`,\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: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n\n {\n name: 'description',\n title: `t(\"description\", { scope: \"${i18n}\" })`,\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: AXPWidgetsCatalog.text,\n },\n },\n }, ],\n columns: [{ name: 'name' }, { name: 'title' }, { name: 'description' }],\n commands: {\n create: {\n execute: async (data: any) => {\n const res = await dataService.insertOne(data);\n return { id: res };\n },\n },\n delete: {\n execute: async (id: any) => {\n return await dataService.deleteOne(id);\n },\n },\n update: {\n execute: async (data: any) => {\n return await dataService.updateOne(data.id, data);\n },\n },\n },\n queries: {\n byKey: {\n execute: async (id: string) => {\n return await dataService.getOne(id);\n },\n type: AXPEntityQueryType.Single,\n },\n list: {\n execute: async (e: any) => {\n return await dataService.query({ skip: e.skip, take: e.take, filter: e.filter });\n },\n type: AXPEntityQueryType.List,\n },\n },\n interfaces: {\n master: {\n create: {\n sections: [\n {\n id: 'section',\n },\n ],\n properties: [\n\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n\n {\n name: 'description',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 3,\n },\n },\n },\n }, ],\n },\n update: {\n sections: [\n {\n id: 'section',\n },\n ],\n properties: [\n\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n\n {\n name: 'description',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 3,\n },\n },\n },\n }, ],\n },\n single: {\n title: '{{title}}',\n sections: [\n {\n id: 'section',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n ],\n properties: [\n\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n\n {\n name: 'description',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 3,\n },\n },\n },\n }, ],\n actions: [],\n },\n list: {\n actions: [\n {\n title: `t(\"create\", { scope: \"common\" })`,\n command: 'create-entity',\n priority: 'primary',\n type: 'create',\n scope: AXPEntityCommandScope.TypeLevel,\n },\n {\n title: 't(\"deleteItems\", { scope: \"common\" })',\n command: 'delete-entity',\n priority: 'primary',\n type: 'delete',\n scope: AXPEntityCommandScope.Selected,\n },\n {\n title: 't(\"detail\", { scope: \"common\" })',\n command: 'open-entity',\n priority: 'secondary',\n type: 'view',\n scope: AXPEntityCommandScope.Individual,\n },\n {\n title: 't(\"delete\", { scope: \"common\" })',\n command: 'delete-entity',\n priority: 'secondary',\n type: 'delete',\n scope: AXPEntityCommandScope.Individual,\n },\n ],\n views: [\n createAllQueryView({ \n sorts: [{ name: 'name', dir: 'asc' }]\n }),\n ],\n },\n },\n },\n };\n\n return entityDef;\n}\n","import { AXPopupService } from '@acorex/components/popup';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPSearchDisplayResult } from '@acorex/platform/common';\nimport { AXPDataGenerator, AXPExecuteCommand } from '@acorex/platform/core';\nimport { AXPLayoutWidgetComponent } from '@acorex/platform/layout/builder';\nimport { AXP_GLOBAL_SEARCH_CONFIG_TOKEN } from '@acorex/platform/layout/search';\nimport { AXPWorkflowService } from '@acorex/platform/workflow';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, HostBinding, inject } from '@angular/core';\n\n\nexport interface AXPShortcutItem {\n name: string;\n title: string;\n description?: string;\n icon: string;\n command: AXPExecuteCommand;\n}\n\n\n@Component({\n template: `\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 <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 <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\">Add Shortcut</span>\n </div>\n }\n `,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXTranslationModule]\n})\nexport class AXPDashboardShortcutWidgetViewComponent extends AXPLayoutWidgetComponent {\n\n private popupService = inject(AXPopupService);\n private workflow = inject(AXPWorkflowService);\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 if (this.item()?.command) {\n await this.workflow.execute(this.item().command.name, this.item().command.options);\n }\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}","import { AXPWidgetCategory } from '@acorex/platform/layout/builder';\n\nexport const AXP_WIDGETS_CHART_CATEGORY: AXPWidgetCategory = {\n name: 'chart',\n order: 6,\n title: 'Charts',\n};\n\nexport const AXP_WIDGETS_UTILITY_CATEGORY: AXPWidgetCategory = {\n name: 'utility',\n order: 7,\n title: 'Utilities',\n};\n\n\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/builder';\nimport { AXP_COLOR_PROPERTY } from '@acorex/platform/widgets';\nimport { AXP_WIDGETS_UTILITY_CATEGORY } from '../chart.type';\n\nexport const AXPDashboardShortcutWidget: AXPWidgetConfig = {\n name: \"dashboard-shortcut\",\n title: \"Shortcut\",\n description: 'Quick access to your key features.',\n type: 'view',\n categories: [AXP_WIDGETS_UTILITY_CATEGORY],\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n icon: \"fa-light fa-link\",\n properties: [\n AXP_COLOR_PROPERTY\n ],\n meta: {\n dimensions: {\n width: 2,\n height: 2,\n minWidth: 1,\n minHeight: 1,\n maxWidth: 3,\n maxHeight: 2,\n },\n },\n components: {\n view: {\n component: () => import('./dashboard-shortcut-widget-view.component').then((c) => c.AXPDashboardShortcutWidgetViewComponent),\n },\n }\n}\n\n","/**\n * Common base types and utilities for all chart components\n */\n\n/**\n * Base chart data interface that all chart data types extend\n */\nexport interface AXPChartDataBase {\n id: string;\n color?: string;\n}\n\n/**\n * Base chart options interface with common properties\n */\nexport interface AXPChartOptionBase {\n // Size\n width?: number;\n height?: number;\n\n // Animation\n animationEnabled?: boolean;\n animationDuration?: number;\n\n // Tooltip\n showTooltip?: boolean;\n tooltipPosition?: 'auto' | 'fixed';\n\n // Legend\n showLegend?: boolean;\n legendPosition?: 'bottom' | 'right' | 'top' | 'left';\n\n // Theme\n theme?: 'light' | 'dark' | 'auto';\n colorScheme?: string | string[];\n}\n\n/**\n * Color utility functions for charts\n */\nexport const AXPChartColors = {\n // Modern color palette suitable for data visualization\n defaultColors: [\n '#4361ee', // Blue\n '#3a0ca3', // Purple\n '#7209b7', // Violet\n '#f72585', // Pink\n '#4cc9f0', // Light Blue\n '#4895ef', // Sky Blue\n '#560bad', // Deep Purple\n '#f15bb5', // Light Pink\n '#00bbf9', // Cyan\n '#00f5d4', // Teal\n ],\n\n // Get a color from the palette by index with wraparound\n getColor: (index: number, customPalette?: string[]): string => {\n const palette = customPalette || AXPChartColors.defaultColors;\n return palette[index % palette.length];\n },\n\n // Generate a continuous color palette from a base color\n generatePalette: (baseColor: string, count: number): string[] => {\n // Simple implementation - in real usage you might want a more sophisticated algorithm\n const colors: string[] = [];\n for (let i = 0; i < count; i++) {\n // This is simplistic - a real implementation would use HSL or other color manipulation\n const opacity = 0.4 + (0.6 * i) / count;\n colors.push(\n `${baseColor}${Math.floor(opacity * 255)\n .toString(16)\n .padStart(2, '0')}`\n );\n }\n return colors;\n },\n};\n\n/**\n * Shared utility for loading D3.js dynamically\n */\nexport async function loadD3(): Promise<any> {\n try {\n // Dynamic import of d3 without relying on d3 being imported at the top\n return await import('d3');\n } catch (error) {\n console.error('Failed to load D3.js:', error);\n throw error;\n }\n}\n","import { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n computed,\n Directive,\n effect,\n ElementRef,\n inject,\n Injector,\n OnDestroy,\n OnInit,\n runInInjectionContext,\n signal,\n} from '@angular/core';\nimport { loadD3 } from './chart-base.type';\n\n/**\n * Base component class for all chart components with common chart functionality\n */\n@Directive()\nexport abstract class AXPChartBaseComponent<TData>\n extends AXPValueWidgetComponent<TData>\n implements OnInit, AfterViewInit, OnDestroy {\n // D3 reference - loaded asynchronously\n protected d3!: typeof import('d3');\n\n // Get injector for running effects\n private injector = inject(Injector);\n\n // Track component lifecycle\n protected isInitialized = signal(false);\n protected isRendered = signal(false);\n\n // Internal chart data storage with fallback logic\n protected _internalData = signal<TData | null>(null);\n\n // Accessor for chart data with fallback to getValue() or defaultValue\n protected chartData = computed<TData>(() => {\n if (this._internalData()) {\n return this._internalData() as TData;\n }\n return this.getValue() || (this.defaultValue as TData);\n });\n\n // Options tracker for detecting changes\n protected _lastOptionsSnapshot = '';\n\n // Store the effect cleanup function\n private effectRef: ReturnType<typeof effect> | null = null;\n\n // Constructor with protected change detector\n constructor(protected cdr: ChangeDetectorRef) {\n super();\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n this.loadD3();\n }\n\n ngAfterViewInit(): void {\n this.isRendered.set(true);\n this.setupEffects();\n }\n\n ngOnDestroy(): void {\n // Clean up effect if it exists\n if (this.effectRef) {\n this.effectRef.destroy();\n }\n\n this.cleanupChart();\n }\n\n /**\n * Load D3.js library asynchronously\n */\n protected async loadD3(): Promise<void> {\n try {\n this.d3 = await loadD3();\n this.isInitialized.set(true);\n\n // Initialize chart data once D3 is loaded\n const initialData = this.getValue() || (this.defaultValue as TData);\n if (initialData) {\n this._internalData.set(initialData);\n }\n\n // Create chart once D3 is loaded and if we're already rendered\n if (this.isRendered()) {\n this.createChart();\n }\n } catch (error) {\n console.error('Error loading D3.js:', error);\n }\n }\n\n /**\n * Set up reactive effects to track data and option changes\n */\n protected setupEffects(): void {\n // Run effect in injection context to avoid NG0203 error\n this.effectRef = runInInjectionContext(this.injector, () => {\n return effect(() => {\n // Only update if D3 is loaded and component is rendered\n if (!this.isInitialized() || !this.isRendered()) return;\n\n // Track dependencies explicitly\n const data = this.getValue();\n const options = this.options();\n\n // Store current options snapshot for comparison\n const currentOptions = JSON.stringify(options);\n const optionsChanged = currentOptions !== this._lastOptionsSnapshot;\n this._lastOptionsSnapshot = currentOptions;\n\n // Check if data changed\n const dataChanged = data && JSON.stringify(data) !== JSON.stringify(this._internalData());\n\n // Update internal data if it changed\n if (dataChanged && data) {\n this._internalData.set(data);\n }\n\n // Update chart if either data or options changed\n if (dataChanged || optionsChanged) {\n this.updateChart();\n }\n });\n });\n }\n\n /**\n * Abstract methods that child classes must implement\n */\n protected abstract createChart(): void;\n protected abstract updateChart(): void;\n protected abstract cleanupChart(): void;\n\n /**\n * Get dimensions of the container element\n */\n protected getContainerDimensions(containerElement: ElementRef<HTMLElement>): { width: number; height: number } {\n if (!containerElement?.nativeElement) {\n return { width: 300, height: 300 }; // Default fallback\n }\n\n const { clientWidth, clientHeight } = containerElement.nativeElement;\n return {\n width: clientWidth || 300,\n height: clientHeight || 300,\n };\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nexport interface AXPChartTooltipData {\n title: string;\n value: number | string;\n percentage?: string;\n color?: string;\n [key: string]: any;\n}\n\n@Component({\n selector: 'ax-chart-tooltip',\n templateUrl: './chart-tooltip.component.html',\n styleUrls: ['./chart-tooltip.component.scss'],\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPChartTooltipComponent {\n data = input<AXPChartTooltipData | null>(null);\n position = input<{ x: number; y: number }>({ x: 0, y: 0 });\n visible = input<boolean>(false);\n\n /**\n * Whether to show the tooltip's percentage badge\n */\n showPercentage = input<boolean>(true);\n\n /**\n * Optional custom styling for the tooltip\n */\n style = input<{ [key: string]: string }>({});\n}\n","@if (visible() && data()) {\n<div class=\"chart-tooltip\" [style.left.px]=\"position().x\" [style.top.px]=\"position().y\" [ngStyle]=\"style()\">\n <div class=\"chart-tooltip-title\">{{ data()!.title }}</div>\n <div class=\"chart-tooltip-content\">\n @if (data()!.color) {\n <div class=\"chart-tooltip-color\" [style.background-color]=\"data()!.color\"></div>\n }\n <div class=\"chart-tooltip-value\">{{ data()!.value }}</div>\n @if (showPercentage() && data()!.percentage) {\n <div class=\"chart-tooltip-percentage\">{{ data()!.percentage }}</div>\n }\n </div>\n</div>\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, ElementRef, output, signal, viewChild } from '@angular/core';\nimport { AXPChartBaseComponent } from '../shared/chart-base.component';\nimport { AXPChartColors } from '../shared/chart-base.type';\nimport { AXPChartTooltipComponent, AXPChartTooltipData } from '../shared/components/chart-tooltip';\nimport { AXPBarChartData, AXPBarChartOption, AXPBarChartValue } from './bar-chart.type';\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 standalone: true,\n imports: [CommonModule, AXPChartTooltipComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPBarChartWidgetViewComponent extends AXPChartBaseComponent<AXPBarChartValue> {\n barClick = output<AXPBarChartData>();\n\n // Chart container reference\n private readonly chartContainerEl = viewChild.required<ElementRef<HTMLDivElement>>('chartContainer');\n\n // Chart elements\n private svg!: any;\n private chart!: any;\n private xScale!: any;\n private yScale!: any;\n private xAxis!: any;\n private yAxis!: any;\n\n // Chart dimensions\n private width!: number;\n private height!: number;\n private margin = { top: 20, right: 20, bottom: 30, left: 40 };\n\n // Tooltip state\n private _tooltipVisible = signal(false);\n private _tooltipPosition = signal({ x: 0, y: 0 });\n private _tooltipData = signal<AXPChartTooltipData>({\n title: '',\n value: '0',\n percentage: '0%',\n color: '',\n });\n\n // Tooltip accessors\n protected tooltipVisible = computed(() => this._tooltipVisible());\n protected tooltipPosition = computed(() => this._tooltipPosition());\n protected tooltipData = computed(() => this._tooltipData());\n\n // Bar appearance options\n protected barWidth = computed(() => this.options()['barWidth'] ?? 80);\n protected cornerRadius = computed(() => this.options()['cornerRadius'] ?? 4);\n\n // Chart lifecycle methods\n /**\n * Creates the bar chart SVG and renders all elements\n */\n protected override createChart(): void {\n if (!this.d3 || !this.chartContainerEl()?.nativeElement) return;\n\n const containerElement = this.chartContainerEl().nativeElement;\n const data = this.chartData() || [];\n\n // Clear existing chart\n this.d3.select(containerElement).selectAll('svg').remove();\n\n // Early return if no data\n if (!data.length) {\n this.showNoDataMessage(containerElement);\n return;\n }\n\n // Get options and setup dimensions\n const options = this.options() as AXPBarChartOption;\n this.setupDimensions(containerElement, options);\n\n // No need to create SVG here as it's now done in setupDimensions\n\n // Create scales and axes\n this.setupScales(data);\n this.createAxes(options);\n\n // Render the bars\n this.renderBars(data);\n }\n\n protected override updateChart(): void {\n this.createChart();\n }\n\n protected override cleanupChart(): void {\n if (this.svg) {\n this.d3.select(this.chartContainerEl()?.nativeElement).selectAll('svg').remove();\n this.svg = null;\n this.chart = null;\n }\n this._tooltipVisible.set(false);\n }\n\n // Private chart creation methods\n /**\n * Sets up chart dimensions and creates SVG with responsive attributes\n */\n private setupDimensions(containerElement: HTMLElement, options: AXPBarChartOption): void {\n // Get container dimensions\n const containerWidth = containerElement.clientWidth;\n const containerHeight = containerElement.clientHeight;\n\n // If options specify width and height, use those, otherwise default to container size\n const minDim = Math.min(200, containerWidth, containerHeight); // Ensure reasonable minimum\n\n if (options.width && options.height) {\n // Explicit dimensions provided\n this.width = options.width - this.margin.left - this.margin.right;\n this.height = options.height - this.margin.top - this.margin.bottom;\n } else {\n // Responsive dimensions\n this.width = Math.max(containerWidth, minDim) - this.margin.left - this.margin.right;\n this.height = Math.max(containerHeight, minDim) - this.margin.top - this.margin.bottom;\n }\n\n // Create responsive SVG that scales with its container\n const svg = this.d3\n .select(containerElement)\n .append('svg')\n .attr('width', '100%')\n .attr('height', '100%')\n .attr(\n 'viewBox',\n `0 0 ${this.width + this.margin.left + this.margin.right} ${this.height + this.margin.top + this.margin.bottom}`\n )\n .attr('preserveAspectRatio', 'xMidYMid meet');\n\n this.svg = svg;\n\n // Create chart group with margins\n this.chart = this.svg.append('g').attr('transform', `translate(${this.margin.left},${this.margin.top})`);\n }\n\n /**\n * Creates x and y scales for the chart\n */\n private setupScales(data: AXPBarChartData[]): void {\n // Get the bar width percentage (default 80%)\n const barWidthPercent = this.barWidth() / 100;\n // Calculate padding based on barWidth (inverse relationship)\n const padding = Math.max(0.1, 1 - barWidthPercent);\n\n // Create x scale (band scale for categorical data)\n this.xScale = this.d3\n .scaleBand()\n .domain(data.map((d) => d.label))\n .range([0, this.width])\n .padding(padding);\n\n // Create y scale (linear scale for values)\n this.yScale = this.d3\n .scaleLinear()\n .domain([0, this.d3.max(data, (d) => d.value) || 0])\n .nice()\n .range([this.height, 0]);\n }\n\n /**\n * Creates x and y axes with grid lines\n */\n private createAxes(options: AXPBarChartOption): void {\n // Only create axes if they are enabled in options\n const showXAxis = options.showXAxis !== false;\n const showYAxis = options.showYAxis !== false;\n const showGrid = options.showGrid !== false;\n\n if (showXAxis) {\n // Create X axis\n this.xAxis = this.chart\n .append('g')\n .attr('class', 'axp-bar-chart-axis-x')\n .attr('transform', `translate(0,${this.height})`)\n .call(this.d3.axisBottom(this.xScale));\n }\n\n if (showYAxis) {\n // Create Y axis\n this.yAxis = this.chart.append('g').attr('class', 'axp-bar-chart-axis-y').call(this.d3.axisLeft(this.yScale));\n }\n\n if (showGrid) {\n // Add horizontal grid lines\n this.chart\n .append('g')\n .attr('class', 'axp-bar-chart-grid')\n .call(\n this.d3\n .axisLeft(this.yScale)\n .tickSize(-this.width)\n .tickFormat(() => '')\n )\n .selectAll('.tick')\n .style('color', 'rgb(153 153 153 / 30%)'); // Add gray color to ticks\n }\n }\n\n /**\n * Renders the bars with animations\n */\n private renderBars(data: AXPBarChartData[]): void {\n // Get corner radius from options\n const radius = this.cornerRadius();\n\n // Add bars with modern colors\n const bars = this.chart\n .selectAll('.axp-bar-chart-bar')\n .data(data)\n .enter()\n .append('rect')\n .attr('class', 'axp-bar-chart-bar')\n .attr('x', (d: AXPBarChartData) => this.xScale(d.label))\n .attr('width', this.xScale.bandwidth())\n .attr('y', this.height) // Start from bottom for animation\n .attr('height', 0) // Start with height 0 for animation\n .attr('rx', radius) // Rounded corners\n .attr('ry', radius) // Rounded corners\n .attr('fill', (d: AXPBarChartData, i: number) => d.color || AXPChartColors.getColor(i))\n .on('mouseenter', (event: MouseEvent, d: AXPBarChartData) => this.handleBarHover(event, d))\n .on('mousemove', (event: MouseEvent) => this.updateTooltipPosition(event))\n .on('mouseleave', () => this._tooltipVisible.set(false))\n .on('click', (event: MouseEvent, d: AXPBarChartData) => this.handleBarClick(event, d));\n\n // Add animation\n bars\n .transition()\n .duration(800)\n .delay((d: AXPBarChartData, i: number) => i * 50) // Stagger each bar animation\n .attr('y', (d: AXPBarChartData) => this.yScale(d.value))\n .attr('height', (d: AXPBarChartData) => this.height - this.yScale(d.value))\n .ease(this.d3.easeQuadOut); // Simple quadratic ease-out animation\n }\n\n // Event handlers\n /**\n * Handles bar hover event and shows tooltip\n */\n private handleBarHover(event: MouseEvent, datum: AXPBarChartData): void {\n if (this.options().showTooltip !== false) {\n const index = this.chartData().findIndex((item) => item.id === datum.id);\n const color = datum.color || AXPChartColors.getColor(index);\n\n // Calculate percentage of total\n const total = this.chartData().reduce((sum, item) => sum + item.value, 0);\n const percentage = total > 0 ? ((datum.value / total) * 100).toFixed(1) : '0';\n\n this._tooltipData.set({\n title: datum.label,\n value: datum.value.toString(),\n percentage: `${percentage}%`,\n color: color,\n });\n\n this.updateTooltipPosition(event);\n this._tooltipVisible.set(true);\n }\n }\n\n /**\n * Updates tooltip position based on mouse coordinates\n */\n private updateTooltipPosition(event: MouseEvent): void {\n const container = this.chartContainerEl().nativeElement.getBoundingClientRect();\n const x = event.clientX - container.left;\n const y = event.clientY - container.top;\n\n this._tooltipPosition.set({\n x: x,\n y: y,\n });\n }\n\n /**\n * Handles bar click event\n */\n private handleBarClick(event: MouseEvent, datum: AXPBarChartData): void {\n this.barClick.emit(datum);\n }\n\n /**\n * Shows a message when no data is available\n */\n private showNoDataMessage(containerElement: HTMLElement): void {\n const messageContainer = this.d3\n .select(containerElement)\n .append('div')\n .attr('class', 'axp-bar-chart-no-data-message')\n .style('width', '100%')\n .style('height', '100%')\n .style('display', 'flex')\n .style('flex-direction', 'column')\n .style('align-items', 'center')\n .style('justify-content', 'center')\n .style('text-align', 'center');\n\n // Add an icon\n messageContainer\n .append('div')\n .attr('class', 'axp-bar-chart-no-data-icon')\n .style('margin-bottom', '10px')\n .style('color', 'var(--ax-text-muted, #999)')\n .html('<i class=\"fa-light fa-chart-bar fa-2x\"></i>');\n\n // Add text message\n messageContainer\n .append('div')\n .attr('class', 'axp-bar-chart-no-data-text')\n .style('font-size', '16px')\n .style('font-weight', '600')\n .style('color', 'var(--ax-text-color, #333)')\n .text('No data available');\n }\n}\n","<div class=\"axp-bar-chart\" #chartContainer>\n <!-- Shared tooltip component -->\n <ax-chart-tooltip\n [visible]=\"tooltipVisible()\"\n [position]=\"tooltipPosition()\"\n [data]=\"tooltipData()\"\n [showPercentage]=\"true\"\n ></ax-chart-tooltip>\n</div>\n","import { AXPWidgetConfig, AXPWidgetGroupEnum, AXPWidgetsCatalog } from '@acorex/platform/layout/builder';\nimport { AXP_APPEARANCE_PROPERTY_GROUP, AXP_STYLING_PROPERTY_GROUP } from '@acorex/platform/widgets';\nimport { AXP_WIDGETS_CHART_CATEGORY } from '../chart.type';\n\nexport const AXPBarChartWidget: AXPWidgetConfig = {\n name: 'bar-chart',\n title: 'Bar Chart Widget',\n categories: [AXP_WIDGETS_CHART_CATEGORY],\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n type: 'dashboard',\n icon: 'fa-light fa-chart-bar',\n properties: [\n // ====== Layout & Dimensions ======\n {\n name: 'height',\n title: '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 name: 'width',\n title: '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 // ====== Axis Settings ======\n {\n name: 'showXAxis',\n title: '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: '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: 'showGrid',\n title: 'Show Grid Lines',\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 // ====== Tooltip Settings ======\n {\n name: 'showTooltip',\n title: '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 // ====== Bar Appearance ======\n {\n name: 'barWidth',\n title: '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: '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 ],\n components: {\n view: {\n component: () => import('./bar-chart-widget.component').then((c) => c.AXPBarChartWidgetViewComponent),\n },\n },\n meta: {\n dimensions: {\n width: 5,\n height: 6,\n\n minWidth: 2,\n minHeight: 2,\n\n maxWidth: 6,\n maxHeight: 7,\n },\n },\n};\n\ndeclare module '@acorex/platform/layout/builder' {\n interface AXPWidgetTypesMap {\n barChart: 'bar-chart';\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 { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\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 AXPValueWidgetComponent 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 { AXPWidgetConfig, AXPWidgetGroupEnum, AXPWidgetsCatalog } from '@acorex/platform/layout/builder';\nimport { AXP_APPEARANCE_PROPERTY_GROUP, AXP_BEHAVIOR_PROPERTY_GROUP } from '@acorex/platform/widgets';\nimport { AXP_WIDGETS_UTILITY_CATEGORY } from '../chart.type';\nimport { AXP_DATE_FORMAT_OPTIONS, AXP_TIMEZONE_OPTIONS } from './clock-calendar.types';\n\nexport const AXPClockCalendarWidget: AXPWidgetConfig = {\n name: 'clock-calendar',\n title: 'Clock & Calendar',\n categories: [AXP_WIDGETS_UTILITY_CATEGORY],\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n type: 'dashboard',\n icon: 'fa-light fa-clock',\n properties: [\n // ====== Display Settings ======\n {\n name: 'displayLayout',\n title: '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: 'Digital & Analog' },\n { id: 'digital', title: 'Digital Only' },\n { id: 'analog', title: 'Analog Only' },\n ],\n },\n },\n },\n visible: true,\n },\n {\n name: 'showDate',\n title: '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: '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: 'Use 24 Hour Format',\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: '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: '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: '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 width: 2,\n height: 5,\n\n minWidth: 2,\n minHeight: 2,\n\n maxWidth: 3,\n maxHeight: 6,\n },\n },\n};\n\n// Add to the AXPWidgetTypesMap\ndeclare module '@acorex/platform/layout/builder' {\n interface AXPWidgetTypesMap {\n clockCalendar: 'clock-calendar';\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n ElementRef,\n inject,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { AXPChartBaseComponent } from '../shared/chart-base.component';\nimport { AXPChartColors } from '../shared/chart-base.type';\nimport { AXPChartTooltipComponent, AXPChartTooltipData } from '../shared/components/chart-tooltip';\nimport { AXPDonutChartData, AXPDonutChartValue } from './donut-chart.type';\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 standalone: true,\n imports: [CommonModule, AXPChartTooltipComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPDonutChartWidgetViewComponent extends AXPChartBaseComponent<AXPDonutChartValue> {\n segmentClick = output<AXPDonutChartData>();\n\n // Chart reference and D3 related properties\n protected override cdr: ChangeDetectorRef = inject(ChangeDetectorRef);\n private readonly chartContainerEl = viewChild.required<ElementRef<HTMLDivElement>>('chartContainer');\n private svg!: any;\n private pieData: any[] = [];\n\n // State management\n private hiddenSegments = new Set<string>();\n\n // Tooltip state\n private _tooltipVisible = signal(false);\n private _tooltipPosition = signal({ x: 0, y: 0 });\n private _tooltipData = signal<AXPChartTooltipData>({\n title: '',\n value: 0,\n percentage: '0%',\n color: '',\n });\n\n // Public computed properties for the template\n protected tooltipVisible = computed(() => this._tooltipVisible());\n protected tooltipPosition = computed(() => this._tooltipPosition());\n protected tooltipData = computed(() => this._tooltipData());\n\n // Computed configuration options\n protected showLegend = computed(() => this.options()['showLegend'] !== false);\n protected showTooltip = computed(() => this.options()['showTooltip'] !== false);\n protected legendPosition = computed(() => this.options()['legendPosition']?.id || 'right');\n protected donutWidth = computed(() => this.options()['donutWidth'] ?? 35);\n protected cornerRadius = computed(() => this.options()['cornerRadius'] ?? 4);\n\n // Data accessor for handling different incoming data formats\n protected chartDataArray = computed(() => {\n const data = this.chartData();\n\n if (data === null || data === undefined) {\n return [];\n }\n\n // Handle both array format and object format with data property\n return Array.isArray(data) ? data : data.data || [];\n });\n\n protected getColor(index: number): string {\n return AXPChartColors.getColor(index);\n }\n\n protected isSegmentHidden(id: string): boolean {\n return this.hiddenSegments.has(id);\n }\n\n // Event handlers\n protected onSegmentClick(item: AXPDonutChartData): void {\n this.toggleSegment(item);\n this.segmentClick.emit(item);\n }\n\n protected onLegendMouseEnter(item: AXPDonutChartData): void {\n if (!this.svg) return;\n\n // Highlight the target segment\n this.svg\n .selectAll('path')\n .filter((d: any) => d?.data?.id === item.id)\n .classed('axp-donut-chart-highlighted', true)\n .attr('transform', 'scale(1.02)');\n\n // Dim other segments\n this.svg\n .selectAll('path')\n .filter((d: any) => d?.data?.id !== item.id)\n .classed('axp-donut-chart-dimmed', true);\n }\n\n protected onLegendMouseLeave(): void {\n if (!this.svg) return;\n // Reset all segments\n this.svg\n .selectAll('path')\n .classed('axp-donut-chart-highlighted', false)\n .classed('axp-donut-chart-dimmed', false)\n .attr('transform', 'scale(1)');\n }\n\n // Chart lifecycle methods (implementation of base class abstract methods)\n protected override createChart(): void {\n if (!this.d3 || !this.chartContainerEl()?.nativeElement) return;\n\n try {\n const containerElement = this.chartContainerEl().nativeElement;\n const chartElement = containerElement.querySelector('div') as HTMLElement;\n this.clearChart(chartElement);\n\n const data = this.chartDataArray();\n\n if (!data || data.length === 0) {\n this.showNoDataMessage(chartElement);\n return;\n }\n\n const options = this.options();\n const { width, height } = this.setupDimensions(containerElement, options);\n this.renderDonutChart(chartElement, width, height);\n } catch (error) {\n console.error('Error creating donut chart:', error);\n this.handleChartError();\n }\n }\n\n protected override updateChart(): void {\n this.createChart();\n }\n\n protected override cleanupChart(): void {\n if (this.svg) {\n this.d3.select(this.chartContainerEl()?.nativeElement).selectAll('svg').remove();\n this.svg = null;\n this.pieData = [];\n }\n this.hiddenSegments.clear();\n this._tooltipVisible.set(false);\n }\n\n // Private helper methods\n private clearChart(element: HTMLElement): void {\n this.d3.select(element).selectAll('*').remove();\n }\n\n private handleChartError(): void {\n try {\n const containerElement = this.chartContainerEl()?.nativeElement;\n if (containerElement) {\n const chartElement = containerElement.querySelector('div') as HTMLElement;\n if (chartElement) {\n this.showNoDataMessage(chartElement);\n }\n }\n } catch (e) {\n console.error('Failed to show no data message:', e);\n }\n }\n\n private setupDimensions(containerElement: HTMLElement, options: any): { width: number; height: number } {\n const containerWidth = containerElement.clientWidth;\n const containerHeight = containerElement.clientHeight;\n\n // Ensure minimum dimensions for the chart\n const minDim = 200;\n const width = Math.max(options['width'] || containerWidth, minDim);\n const height = Math.max(options['height'] || containerHeight, minDim);\n\n return { width, height };\n }\n\n private renderDonutChart(chartElement: HTMLElement, width: number, height: number): void {\n const data = this.chartDataArray();\n\n // Filter out hidden segments\n const visibleData = data.filter((item) => !this.hiddenSegments.has(item.id));\n\n // If all segments are hidden, show no data message and return\n if (visibleData.length === 0) {\n this.showAllSegmentsHiddenMessage(chartElement);\n return;\n }\n\n const total = this.calculateTotal();\n\n // Calculate chart dimensions based on legend position\n const { chartWidth, chartHeight, translateX, translateY } = this.calculateChartLayout(width, height);\n\n // Create SVG container with filters\n const svg = this.createSvgWithFilters(chartElement, width, height);\n\n // Create main chart group\n this.svg = svg.append('g').attr('transform', `translate(${translateX}, ${translateY})`);\n\n // Create donut segments\n this.createDonutSegments(chartWidth, chartHeight, visibleData, total);\n\n // Add total in center\n this.addTotalDisplay(total);\n }\n\n private calculateChartLayout(\n width: number,\n height: number\n ): {\n chartWidth: number;\n chartHeight: number;\n translateX: number;\n translateY: number;\n } {\n const legendPosition = this.legendPosition();\n let chartWidth = width;\n let chartHeight = height;\n let translateX = width / 2;\n let translateY = height / 2;\n\n if (this.showLegend()) {\n if (legendPosition === 'right') {\n // Reserve space for right legend\n const legendWidth = Math.min(width * 0.3, 150);\n chartWidth = width - legendWidth - 20;\n translateX = (width - chartWidth) / 3 + chartWidth / 2;\n } else if (legendPosition === 'bottom') {\n // Reserve space for bottom legend\n const legendHeight = Math.min(height * 0.2, 80);\n chartHeight = height - legendHeight - 20;\n translateY = (height - chartHeight) / 3 + chartHeight / 2;\n }\n }\n\n return { chartWidth, chartHeight, translateX, translateY };\n }\n\n private createSvgWithFilters(chartElement: HTMLElement, width: number, height: number): any {\n const svg = this.d3\n .select(chartElement)\n .append('svg')\n .attr('width', width)\n .attr('height', height)\n .attr('viewBox', `0 0 ${width} ${height}`)\n .attr('preserveAspectRatio', 'xMidYMid meet');\n\n // Add drop shadow filter\n const defs = svg.append('defs');\n const filter = defs.append('filter').attr('id', 'axp-donut-chart-segment-shadow').attr('height', '130%');\n\n filter.append('feGaussianBlur').attr('in', 'SourceAlpha').attr('stdDeviation', 2).attr('result', 'blur');\n\n filter.append('feOffset').attr('in', 'blur').attr('dx', 1).attr('dy', 1).attr('result', 'offsetBlur');\n\n const feComponentTransfer = filter\n .append('feComponentTransfer')\n .attr('in', 'offsetBlur')\n .attr('result', 'offsetBlur');\n\n feComponentTransfer.append('feFuncA').attr('type', 'linear').attr('slope', 0.3);\n\n const feMerge = filter.append('feMerge');\n feMerge.append('feMergeNode').attr('in', 'offsetBlur');\n feMerge.append('feMergeNode').attr('in', 'SourceGraphic');\n\n return svg;\n }\n\n private createDonutSegments(chartWidth: number, chartHeight: number, data: AXPDonutChartData[], total: number): void {\n // Create pie layout\n const pie = this.d3\n .pie<AXPDonutChartData>()\n .value((d) => d.value)\n .sort(null)\n .padAngle(0.02);\n\n // Calculate the radius of the donut chart\n const radius = (Math.min(chartWidth, chartHeight) / 2) * 0.85;\n\n // Calculate inner radius based on donutWidth percentage\n const donutWidthPercent = this.donutWidth() / 100;\n const innerRadius = radius * (1 - donutWidthPercent);\n\n // Create arc generator with the configured radius and corner radius\n const arc = this.d3\n .arc()\n .innerRadius(innerRadius)\n .outerRadius(radius * 0.95)\n .cornerRadius(this.cornerRadius());\n\n // Generate pie data\n this.pieData = pie(data);\n\n // Create color scale\n const colorScale = this.setupColorScale(this.chartDataArray());\n\n // Add segments with animation\n this.addSegmentsWithAnimation(arc, colorScale, total);\n }\n\n private setupColorScale(data: AXPDonutChartData[]): d3.ScaleOrdinal<string, string> {\n return this.d3\n .scaleOrdinal<string>()\n .domain(data.map((_, i) => i.toString()))\n .range(data.map((_, i) => this.getColor(i)));\n }\n\n private addSegmentsWithAnimation(arc: any, colorScale: d3.ScaleOrdinal<string, string>, total: number): void {\n // Add segments\n const segments = this.svg\n .selectAll('path')\n .data(this.pieData)\n .enter()\n .append('path')\n .attr('class', 'axp-donut-chart-segment')\n .attr('fill', (d: any, i: number) => colorScale(i.toString()))\n .style('opacity', 0)\n .on('click', (event: MouseEvent, d: any) => this.onSegmentClick(d.data))\n .on('mousemove', (event: MouseEvent, d: any) => this.handleSegmentHover(event, d, total))\n .on('mouseleave', () => this._tooltipVisible.set(false));\n\n // Animate segments\n segments\n .transition()\n .duration(800)\n .ease(this.d3.easeCubicOut)\n .delay((d: any, i: number) => i * 50)\n .style('opacity', 1)\n .attrTween('d', (d: any) => {\n const interpolate = this.d3.interpolate({ startAngle: d.startAngle, endAngle: d.startAngle }, d);\n return (t: number) => arc(interpolate(t)) as string;\n });\n }\n\n private handleSegmentHover(event: MouseEvent, datum: d3.PieArcDatum<AXPDonutChartData>, total: number): void {\n if (!this.showTooltip()) return;\n\n const percentage = ((datum.data.value / total) * 100).toFixed(1);\n const segmentColor = this.getColor(this.chartDataArray().findIndex((item) => item.id === datum.data.id));\n\n this._tooltipData.set({\n title: datum.data.name,\n value: datum.data.value,\n percentage: `${percentage}%`,\n color: segmentColor,\n });\n\n this.updateTooltipPosition(event);\n this._tooltipVisible.set(true);\n }\n\n private updateTooltipPosition(event: MouseEvent): void {\n const container = this.chartContainerEl().nativeElement.getBoundingClientRect();\n const x = event.clientX - container.left;\n const y = event.clientY - container.top;\n\n this._tooltipPosition.set({\n x: x,\n y: y,\n });\n }\n\n private toggleSegment(item: AXPDonutChartData): void {\n if (this.hiddenSegments.has(item.id)) {\n this.hiddenSegments.delete(item.id);\n } else {\n this.hiddenSegments.add(item.id);\n }\n\n // Hide tooltip when toggling segments\n this._tooltipVisible.set(false);\n\n this.updateChart();\n }\n\n private calculateTotal(): number {\n return this.chartDataArray()\n .filter((item) => !this.hiddenSegments.has(item.id))\n .reduce((sum, item) => sum + item.value, 0);\n }\n\n private showNoDataMessage(containerElement: HTMLElement): void {\n const messageContainer = this.d3\n .select(containerElement)\n .append('div')\n .attr('class', 'axp-donut-chart-no-data-message')\n .style('width', 'auto')\n .style('text-align', 'center');\n\n // Add an icon\n messageContainer\n .append('div')\n .attr('class', 'axp-donut-chart-no-data-icon')\n .html('<i class=\"fa-light fa-chart-pie-simple fa-2x\"></i>');\n\n // Add text message and help text\n messageContainer.append('div').attr('class', 'axp-donut-chart-no-data-text').text('No data available');\n messageContainer\n .append('div')\n .attr('class', 'axp-donut-chart-no-data-help')\n .text('Please provide data in the correct format');\n\n // Position in center\n const container = containerElement.getBoundingClientRect();\n messageContainer.style('left', `${container.width / 2}px`).style('top', `${container.height / 2}px`);\n }\n\n // Add method to show message when all segments are hidden\n private showAllSegmentsHiddenMessage(containerElement: HTMLElement): void {\n this.clearChart(containerElement);\n\n // Add a simple div to ensure proper positioning\n const wrapper = this.d3\n .select(containerElement)\n .append('div')\n .style('position', 'relative')\n .style('width', '100%')\n .style('height', '100%');\n\n const messageContainer = wrapper\n .append('div')\n .attr('class', 'axp-donut-chart-no-data-message')\n .style('position', 'absolute')\n .style('left', '50%')\n .style('top', '50%')\n .style('transform', 'translate(-50%, -50%)')\n .style('text-align', 'center')\n .style('z-index', '10')\n .style('background-color', 'rgba(255, 255, 255, 0.95)')\n .style('padding', '1.5rem')\n .style('border-radius', '0.5rem')\n .style('box-shadow', '0 2px 12px rgba(0, 0, 0, 0.08)')\n .style('width', '80%')\n .style('max-width', '300px');\n\n // Add an icon\n messageContainer\n .append('div')\n .attr('class', 'axp-donut-chart-no-data-icon')\n .style('color', 'var(--ax-text-muted, #999)')\n .style('margin-bottom', '0.75rem')\n .html('<i class=\"fa-light fa-eye-slash fa-2x\"></i>');\n\n // Add text message and help text\n messageContainer\n .append('div')\n .attr('class', 'axp-donut-chart-no-data-text')\n .style('font-size', '1rem')\n .style('font-weight', '600')\n .style('color', 'var(--ax-text-color, #333)')\n .style('margin-bottom', '0.5rem')\n .text('All segments are hidden');\n\n messageContainer\n .append('div')\n .attr('class', 'axp-donut-chart-no-data-help')\n .style('font-size', '0.8rem')\n .style('color', 'var(--ax-text-muted, #999)')\n .text('Click on a legend item to show data');\n }\n\n private addTotalDisplay(total: number): void {\n if (!this.svg) return;\n\n // Remove any existing total display\n this.svg.selectAll('.axp-donut-chart-total-display').remove();\n\n // Create group for the total display\n const totalDisplay = this.svg\n .append('g')\n .attr('class', 'axp-donut-chart-total-display')\n .attr('text-anchor', 'middle');\n\n // Add total value\n totalDisplay\n .append('text')\n .attr('class', 'axp-donut-chart-total-value')\n .style('font-size', '1.8rem')\n .style('font-weight', '600')\n .style('fill', 'currentColor')\n .text(total.toLocaleString());\n\n // Add \"Total\" label\n totalDisplay\n .append('text')\n .attr('class', 'axp-donut-chart-total-label')\n .attr('dy', '1.4em')\n .style('font-size', '0.9rem')\n .style('fill', 'currentColor')\n .style('fill-opacity', '0.8')\n .text('Total');\n }\n}\n","<div class=\"axp-donut-chart-container\" #chartContainer>\n <!-- Chart visualization area -->\n <div class=\"axp-donut-chart-content\"></div>\n\n <!-- Legend with conditional positioning -->\n @if (showLegend()) {\n <div\n class=\"axp-donut-chart-legend-container\"\n [class.axp-donut-chart-legend-right]=\"legendPosition() === 'right'\"\n [class.axp-donut-chart-legend-bottom]=\"legendPosition() === 'bottom'\"\n >\n @for (item of chartDataArray(); track item.id) {\n <div\n class=\"axp-donut-chart-legend-item\"\n (mouseenter)=\"onLegendMouseEnter(item)\"\n (mouseleave)=\"onLegendMouseLeave()\"\n (click)=\"onSegmentClick(item)\"\n [class.axp-donut-chart-hidden]=\"isSegmentHidden(item.id)\"\n >\n <div class=\"axp-donut-chart-legend-color\" [style.background-color]=\"getColor($index)\"></div>\n <span class=\"axp-donut-chart-legend-name\">{{ item.name }}</span>\n <span class=\"axp-donut-chart-legend-value\">{{ item.value }}</span>\n </div>\n }\n </div>\n }\n\n <!-- Shared tooltip component -->\n <ax-chart-tooltip\n [visible]=\"tooltipVisible()\"\n [position]=\"tooltipPosition()\"\n [data]=\"tooltipData()\"\n [showPercentage]=\"true\"\n ></ax-chart-tooltip>\n</div>\n","import { AXPWidgetConfig, AXPWidgetGroupEnum, AXPWidgetsCatalog } from '@acorex/platform/layout/builder';\nimport { AXP_APPEARANCE_PROPERTY_GROUP, AXP_STYLING_PROPERTY_GROUP } from '@acorex/platform/widgets';\nimport { AXP_WIDGETS_CHART_CATEGORY } from '../chart.type';\n\nexport const AXPDonutChartWidget: AXPWidgetConfig = {\n name: 'donut-chart',\n title: 'Donut Chart Widget',\n categories: AXP_WIDGETS_CHART_CATEGORY,\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n type: 'dashboard',\n icon: 'fa-light fa-donut',\n properties: [\n // ====== Size & Layout ======\n {\n name: 'height',\n title: '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 {\n name: 'width',\n title: '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 // ====== 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\n // ====== Tooltip ======\n {\n name: 'showTooltip',\n title: '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 // ====== Donut Appearance ======\n {\n name: 'donutWidth',\n title: '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: '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 ],\n components: {\n view: {\n component: () => import('./donut-chart-widget.component').then((c) => c.AXPDonutChartWidgetViewComponent),\n },\n },\n meta: {\n dimensions: {\n width: 4,\n height: 4,\n\n minWidth: 2,\n minHeight: 2,\n\n maxWidth: 5,\n maxHeight: 6,\n },\n },\n};\n\ndeclare module '@acorex/platform/layout/builder' {\n interface AXPWidgetTypesMap {\n donutChart: 'donut-chart';\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n ElementRef,\n inject,\n viewChild,\n} from '@angular/core';\nimport { AXPChartBaseComponent } from '../shared/chart-base.component';\nimport { AXPGaugeChartValue } from './gauge-chart.type';\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 standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPGaugeChartWidgetViewComponent extends AXPChartBaseComponent<AXPGaugeChartValue> {\n protected override cdr: ChangeDetectorRef = inject(ChangeDetectorRef);\n private chartContainerEl = viewChild.required<ElementRef<HTMLDivElement>>('chartContainer');\n private chartEl = viewChild.required<ElementRef<SVGSVGElement>>('chart');\n\n // Default values\n protected backgroundColor = 'transparent';\n protected baseColor = '#e2e8f0';\n protected labelFontSize = 16;\n protected showValue = true;\n protected valueColor = '#6366f1';\n protected valueFontSize = 24;\n\n // Default values as computed properties\n protected minValue = computed(() => this.options()['minValue'] ?? 0);\n protected maxValue = computed(() => this.options()['maxValue'] ?? 100);\n protected thresholds = computed(() => this.options()['thresholds'] ?? []);\n protected label = computed(() => this.options()['label'] ?? '');\n protected width = computed(() => this.options()['width'] ?? 300);\n protected height = computed(() => this.options()['height'] ?? 300);\n protected gaugeWidth = computed(() => this.options()['gaugeWidth'] ?? 22);\n protected cornerRadius = computed(() => this.options()['cornerRadius'] ?? 5);\n\n /**\n * Creates the gauge chart with all elements\n */\n protected override createChart() {\n // Clear any existing chart\n this.d3.select(this.chartEl().nativeElement).selectAll('*').remove();\n\n // Calculate responsive dimensions\n const containerElement = this.chartContainerEl().nativeElement;\n const containerWidth = containerElement.clientWidth;\n const containerHeight = containerElement.clientHeight;\n\n // Determine size based on explicit dimensions or container size\n const options = this.options();\n let size: number;\n\n if (options.width && options.height) {\n // Use explicit dimensions if provided\n size = Math.min(options.width, options.height * 2);\n } else {\n // Use container dimensions with minimum constraints\n const minDim = Math.max(200, Math.min(containerWidth, containerHeight));\n size = Math.min(containerWidth, containerHeight * 2, minDim * 2);\n }\n\n const margin = size * 0.1;\n\n // Set up SVG with responsive viewBox\n const svg = this.d3\n .select(this.chartEl().nativeElement)\n .attr('width', '100%')\n .attr('height', '100%')\n .attr('viewBox', `0 0 ${size} ${size / 2}`)\n .attr('preserveAspectRatio', 'xMidYMid meet');\n\n // Create a group for the chart with margin and move it to show only the top half\n const chartGroup = svg.append('g').attr('transform', `translate(${size / 2}, ${size / 2 - margin})`);\n\n // Define gauge parameters\n const radius = size / 2 - margin;\n const innerRadius = radius - this.gaugeWidth();\n const outerRadius = radius;\n\n // Create gradient definitions\n this.createGradients(svg, this.thresholds());\n\n // Draw the background arc\n this.drawBackgroundArc(chartGroup, innerRadius, outerRadius, this.cornerRadius());\n\n // Draw the threshold arcs if thresholds exist\n if (this.thresholds().length > 0) {\n this.drawThresholds(\n chartGroup,\n innerRadius,\n outerRadius,\n this.minValue(),\n this.maxValue(),\n this.thresholds(),\n this.cornerRadius()\n );\n }\n\n // Draw tick marks\n this.drawTicks(chartGroup, outerRadius, this.minValue(), this.maxValue());\n\n // Draw the dial/needle with animation\n this.drawDial(chartGroup, radius, this.chartData() ?? 0, this.minValue(), this.maxValue());\n\n // Draw the value display (after the dial so it's on top)\n if (this.showValue) {\n this.drawValueDisplay(chartGroup, this.chartData() ?? 0, this.label(), radius);\n }\n }\n\n protected override updateChart(): void {\n this.createChart();\n }\n\n protected override cleanupChart(): void {\n if (this.chartEl()?.nativeElement) {\n this.d3.select(this.chartEl().nativeElement).selectAll('*').remove();\n }\n }\n\n /**\n * Creates gradient definitions for thresholds\n */\n private createGradients(\n svg: d3.Selection<SVGSVGElement, unknown, null, undefined>,\n thresholds: { value: number; color: string }[]\n ) {\n const defs = svg.append('defs');\n\n // Create a radial gradient for the background\n const bgGradient = defs\n .append('radialGradient')\n .attr('id', 'gauge-bg-gradient')\n .attr('cx', '50%')\n .attr('cy', '50%')\n .attr('r', '50%')\n .attr('gradientUnits', 'userSpaceOnUse');\n\n if (thresholds.length === 0) {\n // Default gradient when no thresholds are provided\n bgGradient\n .append('stop')\n .attr('offset', '0%')\n .attr('stop-color', this.d3.color(this.valueColor)?.brighter(0.5).toString() || this.valueColor);\n bgGradient.append('stop').attr('offset', '100%').attr('stop-color', this.valueColor);\n } else {\n bgGradient\n .append('stop')\n .attr('offset', '0%')\n .attr('stop-color', this.d3.color(this.baseColor)?.brighter(0.5).toString() || this.baseColor);\n bgGradient.append('stop').attr('offset', '100%').attr('stop-color', this.baseColor);\n\n // Create gradients for each threshold\n thresholds.forEach((threshold, i) => {\n const gradient = defs\n .append('linearGradient')\n .attr('id', `threshold-gradient-${i}`)\n .attr('gradientUnits', 'userSpaceOnUse')\n .attr('x1', '-1')\n .attr('y1', '0')\n .attr('x2', '1')\n .attr('y2', '0');\n\n gradient\n .append('stop')\n .attr('offset', '0%')\n .attr('stop-color', this.d3.color(threshold.color)?.brighter(0.5).toString() || threshold.color);\n\n gradient.append('stop').attr('offset', '100%').attr('stop-color', threshold.color);\n });\n }\n }\n\n /**\n * Draws the background arc\n */\n private drawBackgroundArc(\n chartGroup: d3.Selection<SVGGElement, unknown, null, undefined>,\n innerRadius: number,\n outerRadius: number,\n cornerRadius: number\n ) {\n const backgroundArc = this.d3\n .arc<d3.DefaultArcObject>()\n .innerRadius(innerRadius)\n .outerRadius(outerRadius)\n .startAngle(-Math.PI / 2) // Start from bottom (-90 degrees)\n .endAngle(Math.PI / 2) // End at top (90 degrees)\n .cornerRadius(cornerRadius);\n\n chartGroup\n .append('path')\n .attr(\n 'd',\n backgroundArc({\n innerRadius,\n outerRadius,\n startAngle: -Math.PI / 2,\n endAngle: Math.PI / 2,\n })\n )\n .attr('fill', this.backgroundColor === 'transparent' ? 'url(#gauge-bg-gradient)' : this.backgroundColor)\n .attr('filter', 'drop-shadow(0px 2px 3px rgba(0,0,0,0.1))');\n }\n\n /**\n * Draws the threshold arcs with colors\n */\n private drawThresholds(\n chartGroup: d3.Selection<SVGGElement, unknown, null, undefined>,\n innerRadius: number,\n outerRadius: number,\n minValue: number,\n maxValue: number,\n thresholds: { value: number; color: string }[],\n cornerRadius: number\n ) {\n const arc = this.d3\n .arc<d3.DefaultArcObject>()\n .innerRadius(innerRadius)\n .outerRadius(outerRadius * 0.98)\n .cornerRadius(cornerRadius);\n\n // Sort thresholds by value in ascending order\n const sortedThresholds = [...thresholds].sort((a, b) => a.value - b.value);\n\n // Calculate all angles first using the color angle calculation\n const angles = sortedThresholds.map((t) => this.scaleValueToColorAngle(t.value, minValue, maxValue));\n\n // Start from the minimum value angle\n let previousEndAngle = this.scaleValueToColorAngle(minValue, minValue, maxValue);\n\n sortedThresholds.forEach((threshold, i) => {\n const endAngle = angles[i];\n\n chartGroup\n .append('path')\n .attr(\n 'd',\n arc({\n innerRadius,\n outerRadius,\n startAngle: previousEndAngle,\n endAngle,\n })\n )\n .attr('fill', `url(#threshold-gradient-${i})`)\n .attr('stroke', 'rgba(255,255,255,0.3)')\n .attr('stroke-width', 1);\n\n previousEndAngle = endAngle;\n });\n\n // Fill the remaining space to maxValue if needed\n const lastEndAngle = this.scaleValueToColorAngle(maxValue, minValue, maxValue);\n if (previousEndAngle < lastEndAngle) {\n chartGroup\n .append('path')\n .attr(\n 'd',\n arc({\n innerRadius,\n outerRadius,\n startAngle: previousEndAngle,\n endAngle: lastEndAngle,\n })\n )\n .attr('fill', `url(#threshold-gradient-${sortedThresholds.length - 1})`)\n .attr('stroke', 'rgba(255,255,255,0.3)')\n .attr('stroke-width', 1);\n }\n }\n\n /**\n * Draws tick marks around the gauge\n */\n private drawTicks(\n chartGroup: d3.Selection<SVGGElement, unknown, null, undefined>,\n radius: number,\n minValue: number,\n maxValue: number\n ) {\n const tickCount = 10;\n const minorTickCount = 40;\n\n // Draw minor ticks\n for (let i = 0; i <= minorTickCount; i++) {\n const value = minValue + (i / minorTickCount) * (maxValue - minValue);\n const angle = this.scaleValueToAngle(value, minValue, maxValue);\n\n const outerPoint = {\n x: radius * 0.9 * Math.cos(angle),\n y: radius * 0.9 * Math.sin(angle),\n };\n\n const innerPoint = {\n x: radius * 0.87 * Math.cos(angle),\n y: radius * 0.87 * Math.sin(angle),\n };\n\n chartGroup\n .append('line')\n .attr('x1', innerPoint.x)\n .attr('y1', innerPoint.y)\n .attr('x2', outerPoint.x)\n .attr('y2', outerPoint.y)\n .attr('stroke', '#adb5bd')\n .attr('stroke-width', 0.5);\n }\n\n // Draw major ticks and labels\n for (let i = 0; i <= tickCount; i++) {\n const value = minValue + (i / tickCount) * (maxValue - minValue);\n const angle = this.scaleValueToAngle(value, minValue, maxValue);\n\n const outerPoint = {\n x: radius * 0.92 * Math.cos(angle),\n y: radius * 0.92 * Math.sin(angle),\n };\n\n const innerPoint = {\n x: radius * 0.85 * Math.cos(angle),\n y: radius * 0.85 * Math.sin(angle),\n };\n\n // Major tick line\n chartGroup\n .append('line')\n .attr('x1', innerPoint.x)\n .attr('y1', innerPoint.y)\n .attr('x2', outerPoint.x)\n .attr('y2', outerPoint.y)\n .attr('stroke', '#adb5bd')\n .attr('stroke-width', 2);\n\n // Label position with offset\n const labelRadius = radius * 1.15;\n const labelX = labelRadius * Math.cos(angle);\n const labelY = labelRadius * Math.sin(angle);\n\n // Add tick value label\n chartGroup\n .append('text')\n .attr('x', labelX)\n .attr('y', labelY)\n .attr('text-anchor', 'middle')\n .style('font-size', `${radius * 0.1}px`)\n .style('font-weight', '500')\n .style('fill', 'currentColor')\n .text(value.toFixed(0));\n }\n }\n\n /**\n * Draws the value display in the center\n */\n private drawValueDisplay(\n chartGroup: d3.Selection<SVGGElement, unknown, null, undefined>,\n value: number,\n label: string,\n radius: number\n ) {\n // Value text - positioned below the needle pivot\n chartGroup\n .append('text')\n .attr('class', 'gauge-value')\n .attr('x', 0)\n .attr('y', radius * 0.25) // Moved up from 0.3\n .attr('text-anchor', 'middle')\n .attr('dominant-baseline', 'central')\n .style('font-size', `${this.valueFontSize}px`)\n .style('font-weight', 'bold')\n .style('fill', 'currentColor')\n .text(value.toFixed(1));\n\n // Label text\n chartGroup\n .append('text')\n .attr('class', 'gauge-label')\n .attr('x', 0)\n .attr('y', radius * 0.45) // Keeping this position to create more space\n .attr('text-anchor', 'middle')\n .attr('dominant-baseline', 'central')\n .style('font-size', `${this.labelFontSize}px`)\n .style('fill', '#6c757d')\n .text(label);\n }\n\n /**\n * Draws the dial/needle with animation\n */\n private drawDial(\n chartGroup: d3.Selection<SVGGElement, unknown, null, undefined>,\n radius: number,\n value: number,\n minValue: number,\n maxValue: number\n ) {\n const needleGroup = chartGroup.append('g');\n const valueAngle = this.scaleValueToAngle(value, minValue, maxValue); // Use regular angle for needle\n\n // Draw needle base (circle)\n needleGroup\n .append('circle')\n .attr('cx', 0)\n .attr('cy', 0)\n .attr('r', radius * 0.08)\n .attr('fill', 'url(#gauge-bg-gradient)')\n .attr('stroke', '#6c757d')\n .attr('stroke-width', 1);\n\n // Inner circle\n needleGroup\n .append('circle')\n .attr('cx', 0)\n .attr('cy', 0)\n .attr('r', radius * 0.04)\n .attr('fill', '#495057');\n\n // Create needle\n const needlePath = needleGroup\n .append('path')\n .attr('d', this.createNeedlePath(radius))\n .attr('fill', '#dc3545')\n .attr('transform', `rotate(${this.radiansToDegrees(-Math.PI)})`) // Start at left (-180 degrees)\n .attr('filter', 'drop-shadow(0px 1px 2px rgba(0,0,0,0.3))');\n\n // Animate the needle\n needlePath\n .transition()\n .duration(800)\n .ease(this.d3.easeCubicOut)\n .attrTween('transform', () => {\n const interpolate = this.d3.interpolate(-Math.PI, valueAngle);\n return (t: number) => `rotate(${this.radiansToDegrees(interpolate(t))})`;\n });\n }\n\n /**\n * Creates a path for the needle\n */\n private createNeedlePath(radius: number): string {\n const needleLength = radius * 0.75;\n const needleBaseWidth = radius * 0.04;\n\n return `M 0 -${needleBaseWidth} L ${needleLength} 0 L 0 ${needleBaseWidth} Z`;\n }\n\n /**\n * Scales a value to an angle for needle positioning\n */\n private scaleValueToAngle(value: number, min: number, max: number): number {\n const scaledValue = (value - min) / (max - min);\n // Map from -180 to 0 degrees in radians, starting from the left\n return -Math.PI + scaledValue * Math.PI;\n }\n\n /**\n * Scales a value to an angle for threshold colors\n */\n private scaleValueToColorAngle(value: number, min: number, max: number): number {\n const scaledValue = (value - min) / (max - min);\n // Map from -90 to 90 degrees in radians (-π/2 to π/2), starting from the bottom\n return -Math.PI / 2 + scaledValue * Math.PI;\n }\n\n /**\n * Converts radians to degrees\n */\n private radiansToDegrees(radians: number): number {\n return radians * (180 / Math.PI);\n }\n}\n","<div class=\"ax-flex ax-justify-center ax-items-center ax-w-full ax-h-full\" #chartContainer>\n <svg #chart class=\"ax-w-full ax-h-full\"></svg>\n</div>\n","import { AXPWidgetConfig, AXPWidgetsCatalog } from '@acorex/platform/layout/builder';\nimport { AXP_APPEARANCE_PROPERTY_GROUP, AXP_STYLING_PROPERTY_GROUP } from '@acorex/platform/widgets';\nimport { AXP_WIDGETS_CHART_CATEGORY } from '../chart.type';\n\nexport const AXPGaugeChartWidget: AXPWidgetConfig = {\n name: 'gauge-chart',\n title: 'Gauge Chart Widget',\n categories: [AXP_WIDGETS_CHART_CATEGORY],\n type: 'dashboard',\n icon: 'fa-light fa-gauge',\n properties: [\n // ====== Layout & Dimensions ======\n {\n name: 'height',\n title: '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 {\n name: 'width',\n title: '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 // ====== Gauge Configuration ======\n\n {\n name: 'minValue',\n title: 'Minimum 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: 'Maximum 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\n // ====== Gauge Appearance ======\n {\n name: 'gaugeWidth',\n title: '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: '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\n // ====== Label Display ======\n {\n name: 'label',\n title: 'Label Text',\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 ],\n components: {\n view: {\n component: () => import('./gauge-chart-widget.component').then((c) => c.AXPGaugeChartWidgetViewComponent),\n },\n },\n meta: {\n dimensions: {\n width: 3,\n height: 4,\n\n minWidth: 2,\n minHeight: 2,\n\n maxWidth: 4,\n maxHeight: 5,\n },\n },\n};\n\ndeclare module '@acorex/platform/layout/builder' {\n interface AXPWidgetTypesMap {\n gaugeChart: 'gauge-chart';\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, ElementRef, output, signal, viewChild } from '@angular/core';\nimport { AXPChartBaseComponent } from '../shared/chart-base.component';\nimport { AXPChartColors } from '../shared/chart-base.type';\nimport { AXPChartTooltipComponent, AXPChartTooltipData } from '../shared/components/chart-tooltip';\nimport { AXPLineChartData, AXPLineChartOption, AXPLineChartValue } from './line-chart.type';\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: [CommonModule, AXPChartTooltipComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPLineChartWidgetViewComponent extends AXPChartBaseComponent<AXPLineChartValue> {\n pointClick = output<AXPLineChartData>();\n\n // Chart container reference\n private readonly chartContainerEl = viewChild.required<ElementRef<HTMLDivElement>>('chartContainer');\n\n // Chart elements\n private svg!: any;\n private chart!: any;\n private xScale!: any;\n private yScale!: any;\n private xAxis!: any;\n private yAxis!: any;\n\n // Chart dimensions\n private width!: number;\n private height!: number;\n private margin = { top: 20, right: 20, bottom: 30, left: 40 };\n\n // Tooltip state\n private _tooltipVisible = signal(false);\n private _tooltipPosition = signal({ x: 0, y: 0 });\n private _tooltipData = signal<AXPChartTooltipData>({\n title: '',\n value: '0',\n percentage: '0%',\n color: '',\n });\n\n // Tooltip accessors\n protected tooltipVisible = computed(() => this._tooltipVisible());\n protected tooltipPosition = computed(() => this._tooltipPosition());\n protected tooltipData = computed(() => this._tooltipData());\n\n // Line appearance options\n protected lineWidth = computed(() => this.options()['lineWidth'] ?? 2);\n protected showPoints = computed(() => this.options()['showPoints'] !== false);\n protected pointRadius = computed(() => this.options()['pointRadius'] ?? 4);\n protected smoothLine = computed(() => this.options()['smoothLine'] !== false);\n protected fillArea = computed(() => this.options()['fillArea'] === true);\n protected fillOpacity = computed(() => (this.options()['fillOpacity'] ?? 20) / 100);\n\n // Chart lifecycle methods\n /**\n * Creates the line chart SVG and renders all elements\n */\n protected override createChart(): void {\n if (!this.d3 || !this.chartContainerEl()?.nativeElement) return;\n\n const containerElement = this.chartContainerEl().nativeElement;\n let data = this.chartData() || [];\n\n // Clear existing chart\n this.d3.select(containerElement).selectAll('svg').remove();\n\n // Normalize data structure to array of arrays (multi-series format)\n let normalizedData: AXPLineChartData[][] = [];\n\n // Handle both flat array and array of arrays formats\n if (data.length > 0) {\n if (Array.isArray(data[0])) {\n // Already in multi-series format\n normalizedData = data as AXPLineChartData[][];\n } else {\n // Single series or flat array with seriesName\n const dataPoints = data as AXPLineChartData[];\n\n // Check if this is multi-series data (has seriesName property)\n const hasSeriesNames = dataPoints.some((d) => d.seriesName !== undefined);\n\n if (hasSeriesNames) {\n // Organize by series name\n const seriesMap = new Map<string, AXPLineChartData[]>();\n dataPoints.forEach((d) => {\n const seriesName = d.seriesName || 'default';\n if (!seriesMap.has(seriesName)) {\n seriesMap.set(seriesName, []);\n }\n seriesMap.get(seriesName)!.push(d);\n });\n\n // Convert to array of arrays\n normalizedData = Array.from(seriesMap.values());\n } else {\n // Single series, wrap it in an array\n normalizedData = [dataPoints];\n }\n }\n }\n\n // Early return if no data\n if (normalizedData.length === 0 || normalizedData.flat().length === 0) {\n this.showNoDataMessage(containerElement);\n return;\n }\n\n // Get options and setup dimensions\n const options = this.options() as AXPLineChartOption;\n this.setupDimensions(containerElement, options);\n\n // Flatten data for scale calculation\n const flatData = normalizedData.flat();\n\n // Create scales with the flattened data\n this.setupScales(flatData);\n this.createAxes(options);\n\n // Render the lines using the structured data (array of arrays)\n this.renderLines(normalizedData);\n }\n\n protected override updateChart(): void {\n this.createChart();\n }\n\n protected override cleanupChart(): void {\n if (this.svg) {\n this.d3.select(this.chartContainerEl()?.nativeElement).selectAll('svg').remove();\n this.svg = null;\n this.chart = null;\n }\n this._tooltipVisible.set(false);\n }\n\n // Private chart creation methods\n /**\n * Sets up chart dimensions and creates SVG with responsive attributes\n */\n private setupDimensions(containerElement: HTMLElement, options: AXPLineChartOption): void {\n // Get container dimensions\n const containerWidth = containerElement.clientWidth;\n const containerHeight = containerElement.clientHeight;\n\n // If options specify width and height, use those, otherwise default to container size\n const minDim = Math.min(200, containerWidth, containerHeight); // Ensure reasonable minimum\n\n if (options.width && options.height) {\n // Explicit dimensions provided\n this.width = options.width - this.margin.left - this.margin.right;\n this.height = options.height - this.margin.top - this.margin.bottom;\n } else {\n // Responsive dimensions\n this.width = Math.max(containerWidth, minDim) - this.margin.left - this.margin.right;\n this.height = Math.max(containerHeight, minDim) - this.margin.top - this.margin.bottom;\n }\n\n // Create responsive SVG that scales with its container\n const svg = this.d3\n .select(containerElement)\n .append('svg')\n .attr('width', '100%')\n .attr('height', '100%')\n .attr(\n 'viewBox',\n `0 0 ${this.width + this.margin.left + this.margin.right} ${this.height + this.margin.top + this.margin.bottom}`\n )\n .attr('preserveAspectRatio', 'xMidYMid meet');\n\n this.svg = svg;\n\n // Create chart group with margins\n this.chart = this.svg.append('g').attr('transform', `translate(${this.margin.left},${this.margin.top})`);\n }\n\n /**\n * Creates x and y scales for the chart\n */\n private setupScales(data: AXPLineChartData[]): void {\n // Determine x-axis type based on data\n const allNumericX = data.every((d) => typeof d.xValue === 'number');\n const allDates = data.every((d) => !isNaN(new Date(d.xValue).getTime()));\n\n // Create appropriate x scale based on data type\n if (allNumericX) {\n // Numeric x-axis\n this.xScale = this.d3\n .scaleLinear()\n .domain([\n this.d3.min(data, (d: AXPLineChartData) => d.xValue as number) || 0,\n this.d3.max(data, (d: AXPLineChartData) => d.xValue as number) || 0,\n ])\n .range([0, this.width]);\n } else if (allDates) {\n // Date x-axis\n this.xScale = this.d3\n .scaleTime()\n .domain([\n this.d3.min(data, (d: AXPLineChartData) => new Date(d.xValue)) || new Date(),\n this.d3.max(data, (d: AXPLineChartData) => new Date(d.xValue)) || new Date(),\n ])\n .range([0, this.width]);\n } else {\n // Categorical x-axis\n this.xScale = this.d3\n .scaleBand()\n .domain(data.map((d: AXPLineChartData) => d.xValue.toString()))\n .range([0, this.width])\n .padding(0.1);\n }\n\n // Create y scale (linear scale for values)\n this.yScale = this.d3\n .scaleLinear()\n .domain([0, this.d3.max(data, (d: AXPLineChartData) => d.value) || 0])\n .nice()\n .range([this.height, 0]);\n }\n\n /**\n * Creates x and y axes with grid lines\n */\n private createAxes(options: AXPLineChartOption): void {\n // Only create axes if they are enabled in options\n const showXAxis = options.showXAxis !== false;\n const showYAxis = options.showYAxis !== false;\n const showGrid = options.showGrid !== false;\n\n if (showXAxis) {\n // Create X axis\n this.xAxis = this.chart\n .append('g')\n .attr('class', 'axp-line-chart-axis-x')\n .attr('transform', `translate(0,${this.height})`)\n .call(this.d3.axisBottom(this.xScale));\n }\n\n if (showYAxis) {\n // Create Y axis\n this.yAxis = this.chart.append('g').attr('class', 'axp-line-chart-axis-y').call(this.d3.axisLeft(this.yScale));\n }\n\n if (showGrid) {\n // Add horizontal grid lines\n this.chart\n .append('g')\n .attr('class', 'axp-line-chart-grid')\n .call(\n this.d3\n .axisLeft(this.yScale)\n .tickSize(-this.width)\n .tickFormat(() => '')\n )\n .selectAll('.tick')\n .style('color', 'rgb(153 153 153 / 30%)'); // Add gray color to ticks\n }\n }\n\n /**\n * Renders the lines with animations\n */\n private renderLines(data: AXPLineChartData[][]): void {\n // Get line options\n const lineWidth = this.lineWidth();\n const useSmooth = this.smoothLine();\n const shouldFill = this.fillArea();\n const fillOpacity = this.fillOpacity();\n\n // Create line generator\n const getX = (d: AXPLineChartData) => {\n // Handle different x scale types\n if (this.xScale.bandwidth) {\n // band scale for categorical\n return this.xScale(d.xValue.toString()) + this.xScale.bandwidth() / 2;\n } else {\n // linear or time scale\n return this.xScale(d.xValue);\n }\n };\n\n // Define line generator function\n const lineGenerator = useSmooth\n ? this.d3\n .line<AXPLineChartData>()\n .x(getX)\n .y((d: AXPLineChartData) => this.yScale(d.value))\n .curve(this.d3.curveMonotoneX) // Smooth curve\n : this.d3\n .line<AXPLineChartData>()\n .x(getX)\n .y((d: AXPLineChartData) => this.yScale(d.value))\n .curve(this.d3.curveLinear); // Straight lines\n\n // Define area generator if we should fill\n const areaGenerator = useSmooth\n ? this.d3\n .area<AXPLineChartData>()\n .x(getX)\n .y0(this.height)\n .y1((d: AXPLineChartData) => this.yScale(d.value))\n .curve(this.d3.curveMonotoneX)\n : this.d3\n .area<AXPLineChartData>()\n .x(getX)\n .y0(this.height)\n .y1((d: AXPLineChartData) => this.yScale(d.value))\n .curve(this.d3.curveLinear);\n\n // Render each series\n data.forEach((seriesData, seriesIndex) => {\n // Skip empty series\n if (!seriesData.length) return;\n\n // Sort data within series by x value\n seriesData.sort((a, b) => {\n if (typeof a.xValue === 'number' && typeof b.xValue === 'number') {\n return a.xValue - b.xValue;\n } else {\n return a.xValue.toString().localeCompare(b.xValue.toString());\n }\n });\n\n // Get series name and color\n const seriesName = seriesData[0].seriesName || `Series ${seriesIndex + 1}`;\n // Get color for this series - prefer the color from data point, otherwise use palette\n const seriesColor = seriesData[0]?.color || AXPChartColors.getColor(seriesIndex);\n\n // Draw the area if fill is enabled\n if (shouldFill) {\n this.chart\n .append('path')\n .datum(seriesData)\n .attr('class', 'axp-line-chart-area')\n .attr('fill', seriesColor)\n .attr('fill-opacity', fillOpacity)\n .attr('d', areaGenerator);\n }\n\n // Draw the line with animation\n const path = this.chart\n .append('path')\n .datum(seriesData)\n .attr('class', 'axp-line-chart-line')\n .attr('stroke', seriesColor)\n .attr('stroke-width', lineWidth)\n .attr('fill', 'none') // Ensure no fill on the line\n .attr('d', lineGenerator);\n\n // Animate the line drawing\n const pathLength = path.node().getTotalLength();\n path\n .attr('stroke-dasharray', pathLength)\n .attr('stroke-dashoffset', pathLength)\n .transition()\n .duration(1000)\n .attr('stroke-dashoffset', 0)\n .ease(this.d3.easeQuadOut);\n\n // Add data points if enabled\n if (this.showPoints()) {\n this.chart\n .selectAll(`.axp-line-chart-point-${seriesIndex}`)\n .data(seriesData)\n .enter()\n .append('circle')\n .attr('class', `axp-line-chart-point axp-line-chart-point-${seriesIndex}`)\n .attr('cx', (d: AXPLineChartData) => getX(d))\n .attr('cy', (d: AXPLineChartData) => this.yScale(d.value))\n .attr('r', 0) // Start with radius 0 for animation\n .attr('fill', seriesColor)\n .attr('stroke', 'white')\n .attr('stroke-width', 1)\n .on('mouseenter', (event: MouseEvent, d: AXPLineChartData) => this.handlePointHover(event, d, seriesName))\n .on('mousemove', (event: MouseEvent) => this.updateTooltipPosition(event))\n .on('mouseleave', () => this._tooltipVisible.set(false))\n .on('click', (event: MouseEvent, d: AXPLineChartData) => this.handlePointClick(event, d))\n .transition()\n .delay((d: AXPLineChartData, i: number) => i * 50 + 300) // Stagger with delay after line animation\n .duration(300)\n .attr('r', this.pointRadius())\n .ease(this.d3.easeBackOut); // Bouncy animation\n }\n });\n }\n\n // Event handlers\n /**\n * Handles point hover event and shows tooltip\n */\n private handlePointHover(event: MouseEvent, datum: AXPLineChartData, seriesName: string): void {\n if (this.options().showTooltip !== false) {\n const data = this.chartData();\n let index = 0;\n\n // Find index based on data structure\n if (Array.isArray(data)) {\n if (Array.isArray(data[0])) {\n // Multi-series data (array of arrays)\n const flatData = (data as AXPLineChartData[][]).flat();\n index = flatData.findIndex((item) => item.id === datum.id);\n } else {\n // Single series (array of data points)\n index = (data as AXPLineChartData[]).findIndex((item) => item.id === datum.id);\n }\n }\n\n const color = datum.color || AXPChartColors.getColor(index);\n\n // Update tooltip data\n this._tooltipData.set({\n title: datum.label || seriesName,\n value: datum.value.toString(),\n percentage: '', // Not showing percentage for line charts\n color,\n });\n\n // Position tooltip near the point\n this.updateTooltipPosition(event);\n this._tooltipVisible.set(true);\n }\n }\n\n /**\n * Updates tooltip position based on mouse coordinates\n */\n private updateTooltipPosition(event: MouseEvent): void {\n const rect = (event.target as HTMLElement).getBoundingClientRect();\n const containerRect = this.chartContainerEl().nativeElement.getBoundingClientRect();\n\n // Position relative to the container\n const x = event.clientX - containerRect.left;\n const y = event.clientY - containerRect.top;\n\n this._tooltipPosition.set({ x, y });\n }\n\n /**\n * Handles point click event\n */\n private handlePointClick(event: MouseEvent, datum: AXPLineChartData): void {\n // Emit click event with the data point\n this.pointClick.emit(datum);\n }\n\n /**\n * Shows a message when no data is available\n */\n private showNoDataMessage(containerElement: HTMLElement): void {\n const noDataDiv = this.d3.select(containerElement).append('div').attr('class', 'axp-line-chart-no-data-message');\n\n noDataDiv\n .append('div')\n .attr('class', 'axp-line-chart-no-data-icon')\n .html('<i class=\"fa-light fa-chart-line fa-3x\"></i>');\n\n noDataDiv.append('div').attr('class', 'axp-line-chart-no-data-text').text('No data available');\n }\n}\n","<div class=\"axp-line-chart\" #chartContainer>\n <!-- Shared tooltip component -->\n <ax-chart-tooltip\n [visible]=\"tooltipVisible()\"\n [position]=\"tooltipPosition()\"\n [data]=\"tooltipData()\"\n [showPercentage]=\"false\"\n ></ax-chart-tooltip>\n</div>\n","import { AXPWidgetConfig, AXPWidgetGroupEnum, AXPWidgetsCatalog } from '@acorex/platform/layout/builder';\nimport { AXP_APPEARANCE_PROPERTY_GROUP, AXP_STYLING_PROPERTY_GROUP } from '@acorex/platform/widgets';\nimport { AXP_WIDGETS_CHART_CATEGORY } from '../chart.type';\n\nexport const AXPLineChartWidget: AXPWidgetConfig = {\n name: 'line-chart',\n title: 'Line Chart Widget',\n categories: [AXP_WIDGETS_CHART_CATEGORY],\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n type: 'dashboard',\n icon: 'fa-light fa-chart-line',\n properties: [\n // ====== Layout & Dimensions ======\n {\n name: 'height',\n title: '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 name: 'width',\n title: '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 // ====== Axis Settings ======\n {\n name: 'showXAxis',\n title: '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: '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: 'showGrid',\n title: 'Show Grid Lines',\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 // ====== Tooltip Settings ======\n {\n name: 'showTooltip',\n title: '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 // ====== Line Appearance ======\n {\n name: 'lineWidth',\n title: '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: 'showPoints',\n title: '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: 'Point Size',\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: 'smoothLine',\n title: '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: 'fillArea',\n title: '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 {\n name: 'fillOpacity',\n title: 'Fill Opacity',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 10,\n dataType: 'number',\n interface: {\n name: 'fillOpacity',\n path: 'options.fillOpacity',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '0-100',\n minValue: 0,\n maxValue: 100,\n },\n },\n },\n visible: true,\n },\n ],\n components: {\n view: {\n component: () => import('./line-chart-widget.component').then((c) => c.AXPLineChartWidgetViewComponent),\n },\n },\n meta: {\n dimensions: {\n width: 5,\n height: 6,\n\n minWidth: 2,\n minHeight: 2,\n\n maxWidth: 6,\n maxHeight: 7,\n },\n },\n};\n\ndeclare module '@acorex/platform/layout/builder' {\n interface AXPWidgetTypesMap {\n lineChart: 'line-chart';\n }\n}\n","import { AXAvatarModule } from '@acorex/components/avatar';\nimport { AXBadgeModule } from '@acorex/components/badge';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXImageModule } from '@acorex/components/image';\nimport { AXTabsModule, AXTabStripChangedEvent } from '@acorex/components/tabs';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, inject, output, signal } from '@angular/core';\nimport { AXPNotificationData, AXPNotificationValue } from './notification.type';\n\n/**\n * Notification Widget Component\n * Displays notifications in a card with tabs\n */\n@Component({\n templateUrl: './notification-widget.component.html',\n styleUrls: ['./notification-widget.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n AXTabsModule,\n AXDecoratorModule,\n AXButtonModule,\n AXBadgeModule,\n AXAvatarModule,\n AXImageModule,\n AXTranslationModule,\n ],\n providers: [DatePipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPNotificationWidgetViewComponent extends AXPValueWidgetComponent<AXPNotificationValue> {\n // Outputs\n notificationClick = output<AXPNotificationData>();\n markAsRead = output<AXPNotificationData>();\n\n // Dependencies\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly datePipe = inject(DatePipe);\n\n // State\n protected activeTab = signal<'new' | 'all'>('new');\n\n // Configuration\n protected readonly maxItems = computed(() => this.options()?.maxItems ?? 10);\n protected readonly showAvatar = computed(() => this.options()?.showAvatar ?? true);\n protected readonly showDate = computed(() => this.options()?.showDate ?? true);\n\n // Computed data\n protected readonly notificationItems = computed(() => {\n const value = this.getValue();\n if (!value?.data?.length) return [];\n\n // Filter by active tab\n const filtered = this.activeTab() === 'new' ? value.data.filter((n) => !n.readAt) : value.data;\n\n return filtered.slice(0, this.maxItems());\n });\n\n /**\n * Get the count of new messages for the badge\n */\n protected getNewMessageCount(): number {\n const value = this.getValue();\n if (!value?.data?.length) return 0;\n\n return value.data.filter((n) => !n.readAt).length;\n }\n\n /**\n * Handle tab change event from ax-tabs component\n * @param index The index of the tab that was activated\n */\n protected handleTabChange(data: AXTabStripChangedEvent): void {\n const index = data.index;\n // Map index to tab name: 0 = 'new', 1 = 'all'\n const tabName = index === 0 ? 'new' : 'all';\n this.onTabChange(tabName);\n }\n\n /**\n * Mark all notifications as read\n */\n protected markAllAsRead(): void {\n const value = this.getValue();\n if (!value?.data?.length) return;\n\n const now = new Date();\n const updatedNotifications = value.data.map((n) => {\n if (n.readAt) return n;\n return { ...n, readAt: now };\n });\n\n this.setValue({\n ...value,\n data: updatedNotifications,\n });\n\n this.cdr.detectChanges();\n }\n\n /**\n * Change the active tab\n */\n protected onTabChange(tabName: 'new' | 'all'): void {\n this.activeTab.set(tabName);\n this.cdr.detectChanges();\n }\n\n /**\n * Handle notification click event\n */\n protected onNotificationClick(notification: AXPNotificationData): void {\n this.markAsReadIfNeeded(notification);\n this.notificationClick.emit(notification);\n }\n\n /**\n * Format the timestamp in a user-friendly way\n */\n protected formatTime(date: Date | string | undefined): string {\n if (!date) return '';\n\n const dateObj = typeof date === 'string' ? new Date(date) : date;\n const diffDays = this.getDaysDifference(dateObj);\n\n // Format based on how recent the date is\n if (diffDays === 0) return this.datePipe.transform(dateObj, 'h:mm a') || ''; // Today\n if (diffDays === 1) return 'Yesterday';\n if (diffDays < 7) return this.datePipe.transform(dateObj, 'EEE') || ''; // Day of week\n return this.datePipe.transform(dateObj, 'MM/dd/yyyy') || ''; // Older date\n }\n\n /**\n * Mark notification as read if needed\n */\n private markAsReadIfNeeded(notification: AXPNotificationData): void {\n // Only mark as read if not already read\n if (notification.readAt) return;\n\n const updatedNotification = {\n ...notification,\n readAt: new Date(),\n };\n\n // Update the model\n const value = this.getValue();\n if (!value?.data) return;\n\n const updatedNotifications = value.data.map((n) => (n.id === notification.id ? updatedNotification : n));\n\n this.setValue({\n ...value,\n data: updatedNotifications,\n });\n\n // Notify about the change\n this.markAsRead.emit(updatedNotification);\n }\n\n /**\n * Calculate days difference from now\n */\n private getDaysDifference(date: Date): number {\n const now = new Date();\n const diffMs = now.getTime() - date.getTime();\n return Math.floor(diffMs / (1000 * 60 * 60 * 24));\n }\n}\n","<div class=\"ax-p-4 ax-size-full\">\n <ax-tabs\n class=\"ax-bg-light-start ax-border-b ax-border-default\"\n [fitParent]=\"true\"\n location=\"bottom\"\n (onActiveTabChanged)=\"handleTabChange($event)\"\n >\n <ax-tab-item [text]=\"('widget.notification.new' | translate | async) ?? 'New'\" class=\"ax-font-medium\">\n <ax-suffix>\n @if (getNewMessageCount() > 0) {\n <ax-badge color=\"primary\" [text]=\"getNewMessageCount().toString()\" size=\"sm\" class=\"ax-ml-1\"></ax-badge>\n }\n </ax-suffix>\n </ax-tab-item>\n <ax-tab-item [text]=\"('widget.notification.all' | translate | async) ?? 'All'\" class=\"ax-font-medium\"></ax-tab-item>\n </ax-tabs>\n <div class=\"ax-space-y-4 ax-mt-4 ax-px-2\">\n @for (item of notificationItems(); track item.id) {\n <ng-container [ngTemplateOutlet]=\"chatItemTemplateRef\" [ngTemplateOutletContext]=\"{ $implicit: item }\">\n </ng-container>\n } @empty {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-py-12 ax-px-4 ax-text-gray-400\">\n <ax-icon class=\"ax-text-4xl ax-mb-3 ax-text-gray-300\">\n <i class=\"fa-light fa-bell-slash\"></i>\n </ax-icon>\n <p class=\"ax-text-center\">{{ 'widget.notification.noNotifications' | translate | async }}</p>\n </div>\n }\n </div>\n</div>\n\n<ng-template #chatItemTemplateRef let-data>\n <div class=\"ax-flex ax-gap-3\">\n @if(showAvatar()){\n <div class=\"ax-rounded-full ax-size-10\">\n <ax-avatar shape=\"rounded\" class=\"ax-shrink-0\" [size]=\"40\">\n @if(data.user?.image){\n <ax-image\n [src]=\"data.user.image\"\n [alt]=\"data.user?.name || ('widget.notification.user' | translate | async)\"\n ></ax-image>\n } @else {\n <ax-icon>\n <i class=\"fa-light fa-user\"></i>\n </ax-icon>\n }\n </ax-avatar>\n </div>\n }\n <div class=\"ax-overflow-hidden ax-grow ax-text-start\">\n <h6 class=\"ax-pb-2 ax-font-semibold ax-truncate\">{{ data.user?.name || data.title }}</h6>\n <p class=\"ax-text-xs ax-truncate\">{{ data.body }}</p>\n </div>\n @if(showDate()){\n <div class=\"ax-text-xs ax-shrink-0\">\n <span>\n {{ formatTime(data.createdAt) }}\n </span>\n </div>\n }\n </div>\n</ng-template>\n","import { AXPWidgetConfig, AXPWidgetGroupEnum, AXPWidgetsCatalog, cloneProperty } from '@acorex/platform/layout/builder';\nimport { AXP_DATA_PATH_PROPERTY } from '@acorex/platform/widgets';\nimport { AXP_APPEARANCE_PROPERTY_GROUP, AXP_STYLING_PROPERTY_GROUP } from '@acorex/platform/widgets';\nimport { AXP_WIDGETS_UTILITY_CATEGORY } from '../chart.type';\n\n/**\n * Configuration for the Notification Widget\n */\nexport const AXPNotificationWidget: AXPWidgetConfig = {\n name: 'notification',\n title: 'Notification Widget',\n categories: [AXP_WIDGETS_UTILITY_CATEGORY],\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n type: 'dashboard',\n description: 'Displays notifications in a widget format',\n icon: 'fa-regular fa-bell',\n properties: [\n cloneProperty(AXP_DATA_PATH_PROPERTY, { visible: false }),\n {\n name: 'maxItems',\n title: 'Max Items',\n description: 'Maximum number of notification items to display',\n group: AXP_STYLING_PROPERTY_GROUP,\n schema: {\n defaultValue: 10,\n dataType: 'number',\n interface: {\n name: 'maxItems',\n path: 'options.maxItems',\n type: AXPWidgetsCatalog.number,\n options: {\n minValue: 1,\n maxValue: 100,\n },\n },\n },\n visible: true,\n },\n {\n name: 'showAvatar',\n title: 'Show Avatar',\n description: 'Whether to show avatars in notifications',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showAvatar',\n path: 'options.showAvatar',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'showDate',\n title: 'Show Date',\n description: 'Whether to show date in notifications',\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 components: {\n view: {\n component: () => import('./notification-widget.component').then((c) => c.AXPNotificationWidgetViewComponent),\n },\n },\n meta: {\n dimensions: {\n width: 3,\n height: 5,\n minWidth: 2,\n minHeight: 4,\n maxWidth: 4,\n maxHeight: 7,\n },\n },\n};\n\n// Add type to AXPWidgetTypesMap\ndeclare module '@acorex/platform/layout/builder' {\n interface AXPWidgetTypesMap {\n notification: 'notification';\n }\n}\n","import { AXColorBoxModule } from '@acorex/components/color-box';\nimport { AXValueChangedEvent } from '@acorex/components/common';\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 { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n OnInit,\n computed,\n inject,\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 FormsModule,\n AXColorBoxModule,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXGridLayoutWidgetComponent,\n useExisting: AXPStickyNoteWidgetViewComponent,\n },\n ],\n})\nexport class AXPStickyNoteWidgetViewComponent extends AXPValueWidgetComponent<string> implements OnInit {\n protected isEditing = signal(false);\n private wysiwyg = viewChild<AXWysiwygContainerComponent>('wysiwyg');\n protected value = computed(() => this.getValue());\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 // Modern color palette with pastel and vibrant options\n protected colorPresets: string[] = [\n '#FFF8B8', // Soft yellow\n '#FFD8E6', // Soft pink\n '#D1F0FF', // Soft blue\n '#E2FFD1', // Soft green\n '#FFE8D1', // Soft orange\n '#F0D1FF', // Soft purple\n '#FFCDD2', // Soft red\n '#D1FFF0', // Soft teal\n '#F5F5F5', // Light gray\n '#FFFFFF', // White\n ];\n\n // Handle clicks outside the component to cancel editing\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 // Handle double-click to activate editing\n protected activateEdit() {\n //TODO FOCUS WYSIWYG\n this.wysiwyg()?.focus();\n this.isEditing.set(true);\n }\n\n // Save changes and exit edit mode\n protected saveChanges() {\n this.isEditing.set(false);\n }\n\n protected setColor(color: string) {\n this.setOptions({ backgroundColor: color });\n }\n\n protected valueChange(event: AXValueChangedEvent<any>) {\n if (event.isUserInteraction) {\n this.setValue(event.value);\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' : 'dd MMM, YY HH:mm' | 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-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 { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/builder';\nimport { AXP_DATA_PATH_PROPERTY, plainTextDefaultProperty } from '@acorex/platform/widgets';\nimport { AXP_BG_COLOR_PROPERTY } from '@acorex/platform/widgets';\nimport { AXP_WIDGETS_UTILITY_CATEGORY } from '../chart.type';\nexport const AXPStickyNoteWidget: AXPWidgetConfig = {\n name: 'sticky-note',\n title: 'Sticky Note Widget',\n categories: AXP_WIDGETS_UTILITY_CATEGORY,\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n type: 'dashboard',\n icon: 'fa-light fa-sticky-note',\n properties: [AXP_DATA_PATH_PROPERTY, AXP_BG_COLOR_PROPERTY, plainTextDefaultProperty()],\n components: {\n view: {\n component: () => import('./sticky-note-widget.component').then((c) => c.AXPStickyNoteWidgetViewComponent),\n },\n },\n meta: {\n dimensions: {\n width: 2,\n height: 3,\n minWidth: 2,\n minHeight: 2,\n maxWidth: 4,\n maxHeight: 4,\n },\n },\n};\n\ndeclare module '@acorex/platform/layout/builder' {\n interface AXPWidgetTypesMap {\n stickyNote: 'sticky-note';\n }\n}\n","import { AXAvatarModule } from '@acorex/components/avatar';\nimport { AXBadgeModule } from '@acorex/components/badge';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXImageModule } from '@acorex/components/image';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXTabsModule } from '@acorex/components/tabs';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, inject, output } from '@angular/core';\nimport { AXPTaskData, AXPTaskListValue } from './tasklist.type';\n\n/**\n * Task List Widget Component\n * Displays a list of tasks with checkboxes and filtering options\n */\n@Component({\n templateUrl: './tasklist-widget.component.html',\n styleUrls: ['./tasklist-widget.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n AXTabsModule,\n AXDecoratorModule,\n AXButtonModule,\n AXBadgeModule,\n AXAvatarModule,\n AXImageModule,\n AXCheckBoxModule,\n AXLabelModule,\n AXTranslationModule,\n ],\n providers: [DatePipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPTaskListWidgetViewComponent extends AXPValueWidgetComponent<AXPTaskListValue> {\n // Outputs\n taskClick = output<AXPTaskData>();\n taskCompleted = output<AXPTaskData>();\n\n // Dependencies\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly datePipe = inject(DatePipe);\n\n // Configuration options\n protected readonly maxItems = computed(() => this.options()?.maxItems ?? 10);\n protected readonly showDate = computed(() => this.options()?.showDate ?? true);\n protected readonly showAssignee = computed(() => this.options()?.showAssignee ?? true);\n protected readonly showPriority = computed(() => this.options()?.showPriority ?? true);\n protected readonly allowMarkComplete = computed(() => this.options()?.allowMarkComplete ?? true);\n protected readonly showCategories = computed(() => this.options()?.groupByCategory ?? true);\n\n // Data computed properties\n protected readonly taskItems = computed(() => {\n const value = this.getValue();\n if (!value?.data?.length) return [];\n return value.data.slice(0, this.maxItems());\n });\n\n // Task counting methods\n protected getPendingTaskCount(): number {\n return this.getFilteredTasks((task) => !task.completed).length;\n }\n\n protected getCompletedTaskCount(): number {\n return this.getFilteredTasks((task) => task.completed).length;\n }\n\n // Category-related methods\n protected hasCategories(): boolean {\n return this.taskItems().some((task) => !!task.category);\n }\n\n protected getCategories(): string[] {\n const tasks = this.taskItems();\n const categories = new Set<string>();\n let hasUncategorized = false;\n\n tasks.forEach((task) => {\n if (task.category) {\n categories.add(task.category);\n } else {\n hasUncategorized = true;\n }\n });\n\n const result = Array.from(categories);\n if (hasUncategorized) {\n result.push('Uncategorized');\n }\n\n return result;\n }\n\n protected getTasksByCategory(category: string): AXPTaskData[] {\n const tasks = this.taskItems();\n\n if (category === 'Uncategorized') {\n return tasks.filter((task) => !task.category);\n }\n\n return tasks.filter((task) => task.category === category);\n }\n\n protected getCategoryTaskCount(category: string): number {\n return this.getTasksByCategory(category).filter((task) => !task.completed).length;\n }\n\n // Event handlers\n protected onTaskClick(task: AXPTaskData): void {\n this.taskClick.emit(task);\n }\n\n protected onTaskCompletionChange(task: AXPTaskData, isCompleted: boolean): void {\n const updatedTask = { ...task, completed: isCompleted };\n const value = this.getValue();\n\n if (!value?.data) return;\n\n const updatedTasks = value.data.map((t) => (t.id === task.id ? updatedTask : t));\n this.setValue({ ...value, data: updatedTasks });\n\n this.taskCompleted.emit(updatedTask);\n this.cdr.detectChanges();\n }\n\n // Formatting and utility methods\n protected formatDueDate(date: Date | string | undefined): string {\n if (!date) return '';\n\n const dateObj = typeof date === 'string' ? new Date(date) : date;\n const diffDays = this.getDaysDifference(dateObj);\n\n if (diffDays < 0) return 'Overdue!';\n if (diffDays === 0) return 'Today';\n if (diffDays === 1) return 'Tomorrow';\n if (diffDays < 7) return this.datePipe.transform(dateObj, 'EEE') || '';\n return this.datePipe.transform(dateObj, 'MM/dd/yyyy') || '';\n }\n\n protected getPriorityColor(priority: string | undefined): string {\n if (!priority) return '';\n\n const priorityColors: Record<string, string> = {\n high: 'danger',\n medium: 'warning',\n low: 'success',\n };\n\n return priorityColors[priority] || '';\n }\n\n // Helper methods\n private getFilteredTasks(filterFn: (task: AXPTaskData) => boolean): AXPTaskData[] {\n const value = this.getValue();\n if (!value?.data?.length) return [];\n return value.data.filter(filterFn);\n }\n\n protected getDaysDifference(date: Date): number {\n const now = new Date();\n now.setHours(0, 0, 0, 0);\n\n const targetDate = new Date(date);\n targetDate.setHours(0, 0, 0, 0);\n\n const diffMs = targetDate.getTime() - now.getTime();\n return Math.floor(diffMs / (1000 * 60 * 60 * 24));\n }\n}\n","<div class=\"ax-size-full ax-p-4\">\n <!-- Header -->\n <div class=\"ax-flex ax-justify-between ax-items-center ax-mb-3\">\n <h3 class=\"ax-text-lg ax-font-semibold\">{{ 'widget.tasklist.title' | translate | async }}</h3>\n <div class=\"ax-flex ax-gap-2\">\n @if(getPendingTaskCount() > 0){\n <ax-badge\n [text]=\"getPendingTaskCount() + ' ' + ('widget.tasklist.pending' | translate | async)\"\n [color]=\"'warning'\"\n size=\"sm\"\n class=\"ax-ml-1\"\n >\n </ax-badge>\n } @if(getCompletedTaskCount() > 0){\n <ax-badge\n [text]=\"getCompletedTaskCount() + ' ' + ('widget.tasklist.completed' | translate | async)\"\n [color]=\"'success'\"\n size=\"sm\"\n class=\"ax-ml-1\"\n >\n </ax-badge>\n }\n </div>\n </div>\n\n <!-- Task List -->\n <div class=\"ax-space-y-4 ax-my-4 ax-px-2\">\n @if (showCategories() && hasCategories()) {\n <!-- Categorized Tasks -->\n @for (category of getCategories(); track category) {\n <div class=\"ax-mb-3\">\n <!-- Category Header -->\n <div class=\"ax-flex ax-justify-between ax-items-center ax-mb-2 ax-h-5\">\n <h4 class=\"ax-font-medium ax-text-gray-700\">{{ category }}</h4>\n @if(getCategoryTaskCount(category)){\n <ax-badge [text]=\"getCategoryTaskCount(category).toString()\" [color]=\"'primary'\" size=\"sm\"></ax-badge>\n }\n </div>\n <!-- Tasks in Category -->\n @for (task of getTasksByCategory(category); track task.id) {\n <ng-container\n [ngTemplateOutlet]=\"taskItemTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: task }\"\n ></ng-container>\n }\n </div>\n } } @else {\n <!-- Uncategorized Tasks -->\n @for (task of taskItems(); track task.id) {\n <ng-container\n [ngTemplateOutlet]=\"taskItemTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: task }\"\n ></ng-container>\n } @empty {\n <!-- Empty State -->\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-py-12 ax-px-4 ax-text-gray-400\">\n <ax-icon class=\"ax-text-4xl ax-mb-3 ax-text-gray-300\">\n <i class=\"fa-light fa-clipboard-list-check\"></i>\n </ax-icon>\n <p class=\"ax-text-center\">{{ 'widget.tasklist.noTasks' | translate | async }}</p>\n </div>\n } }\n </div>\n</div>\n\n<!-- Task Item Template -->\n<ng-template #taskItemTemplateRef let-task>\n <div class=\"ax-flex ax-gap-3 ax-items-center ax-py-2 ax-border-b ax-border-gray-100 last:ax-border-0\">\n <!-- Checkbox -->\n <ax-check-box\n class=\"ax-flex-shrink-0\"\n [value]=\"task.completed\"\n [disabled]=\"!allowMarkComplete()\"\n (valueChange)=\"onTaskCompletionChange(task, $event)\"\n >\n </ax-check-box>\n\n <!-- Task Details -->\n <div class=\"ax-overflow-hidden ax-grow ax-text-start\" (click)=\"onTaskClick(task)\">\n <!-- Title and Priority -->\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <h6\n class=\"ax-font-semibold ax-truncate ax-pb-1\"\n [class.ax-line-through]=\"task.completed\"\n [class.ax-text-gray-400]=\"task.completed\"\n >\n {{ task.title }}\n </h6>\n @if(showPriority() && task.priority) {\n <ax-badge [color]=\"getPriorityColor(task.priority)\" [text]=\"task.priority\" size=\"sm\" class=\"ax-ml-1\"></ax-badge>\n }\n </div>\n\n <!-- Metadata -->\n <div class=\"ax-flex ax-flex-wrap ax-gap-x-3 ax-gap-y-1 ax-mt-1 ax-text-xs ax-text-gray-500\">\n @if(showDate() && task.dueDate) {\n <span class=\"ax-flex ax-items-center ax-gap-1\" [class.ax-text-danger-500]=\"getDaysDifference(task.dueDate) < 0\">\n <ax-icon><i class=\"fa-light fa-calendar\"></i></ax-icon>\n {{ formatDueDate(task.dueDate) }}\n </span>\n } @if(showAssignee() && task.assignedTo) {\n <span class=\"ax-flex ax-items-center ax-gap-1\">\n <ax-icon><i class=\"fa-light fa-user\"></i></ax-icon>\n {{ task.assignedTo.name }}\n </span>\n }\n </div>\n </div>\n </div>\n</ng-template>\n","import { AXPWidgetConfig, AXPWidgetGroupEnum, AXPWidgetsCatalog, cloneProperty } from '@acorex/platform/layout/builder';\nimport { AXP_DATA_PATH_PROPERTY } from '@acorex/platform/widgets';\nimport { AXP_WIDGETS_CHART_CATEGORY } from '../chart.type';\nimport { AXP_APPEARANCE_PROPERTY_GROUP } from '@acorex/platform/widgets';\n\nexport const AXPTaskListWidget: AXPWidgetConfig = {\n name: 'task-list',\n title: 'Task List Widget',\n categories: [AXP_WIDGETS_CHART_CATEGORY],\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n type: 'dashboard',\n icon: 'fa-light fa-clipboard-list-check',\n properties: [\n cloneProperty(AXP_DATA_PATH_PROPERTY, { visible: false }),\n // Display options\n {\n name: 'maxItems',\n title: 'Max Items',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 10,\n dataType: 'number',\n interface: {\n name: 'maxItems',\n path: 'options.maxItems',\n type: AXPWidgetsCatalog.number,\n options: {\n minValue: 1,\n maxValue: 50,\n },\n },\n },\n visible: true,\n },\n {\n name: 'showDate',\n title: '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: 'showAssignee',\n title: 'Show Assignee',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showAssignee',\n path: 'options.showAssignee',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'groupByCategory',\n title: 'Group by Category',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'groupByCategory',\n path: 'options.groupByCategory',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'showPriority',\n title: 'Show Priority',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showPriority',\n path: 'options.showPriority',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'allowMarkComplete',\n title: 'Allow Complete',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'allowMarkComplete',\n path: 'options.allowMarkComplete',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n ],\n components: {\n view: {\n component: () => import('./tasklist-widget.component').then((c) => c.AXPTaskListWidgetViewComponent),\n },\n },\n meta: {\n dimensions: {\n width: 5,\n height: 7,\n minWidth: 3,\n minHeight: 4,\n maxWidth: 6,\n maxHeight: 8,\n },\n },\n};\n\ndeclare module '@acorex/platform/layout/builder' {\n interface AXPWidgetTypesMap {\n taskList: 'task-list';\n }\n}\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}\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 /** 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 color: '#ff9d00',\n },\n clearNight: {\n id: 'clearNight',\n name: 'Clear Night',\n icon: 'fa-solid fa-moon',\n color: '#5d639e',\n },\n partlyCloudy: {\n id: 'partlyCloudy',\n name: 'Partly Cloudy',\n icon: 'fa-solid fa-cloud-sun',\n color: '#6ba4e8',\n },\n partlyCloudyNight: {\n id: 'partlyCloudyNight',\n name: 'Partly Cloudy Night',\n icon: 'fa-solid fa-cloud-moon',\n color: '#5d639e',\n },\n cloudy: {\n id: 'cloudy',\n name: 'Cloudy',\n icon: 'fa-solid fa-cloud',\n color: '#72869d',\n },\n rain: {\n id: 'rain',\n name: 'Rain',\n icon: 'fa-solid fa-cloud-rain',\n color: '#3a74ad',\n },\n showers: {\n id: 'showers',\n name: 'Showers',\n icon: 'fa-solid fa-cloud-showers-heavy',\n color: '#2c5d8c',\n },\n thunderstorm: {\n id: 'thunderstorm',\n name: 'Thunderstorm',\n icon: 'fa-solid fa-bolt-lightning',\n color: '#8834af',\n },\n snow: {\n id: 'snow',\n name: 'Snow',\n icon: 'fa-solid fa-snowflake',\n color: '#68a9cd',\n },\n mist: {\n id: 'mist',\n name: 'Mist',\n icon: 'fa-solid fa-smog',\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 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 };\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 };\n });\n\n return weatherData;\n }\n}\n","import { AXDateTimeModule } from '@acorex/core/date-time';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\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],\n providers: [\n {\n provide: AXPWeatherApiAbstract,\n useClass: AXPWeatherApiService,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPWeatherWidgetViewComponent extends AXPValueWidgetComponent {\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 const opts = this.options();\n this.loadWeatherData();\n this.setupRefreshTimer();\n });\n\n private valueEffect = effect(() => {\n this.city();\n this.loadWeatherData();\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.hasError.set(true);\n this.errorMessage.set(error.message || 'Failed to load weather data. Please try again.');\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.hasError.set(true);\n this.errorMessage.set(error.message || 'Failed to load weather data. Please try again.');\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 icon class for a weather condition\n * @param conditionId Weather condition ID\n * @returns Font Awesome icon class\n */\n protected getConditionIcon(conditionId: string): string {\n const condition = this.weatherService.getCondition(conditionId);\n return condition?.icon || 'fa-solid fa-question';\n }\n\n /**\n * Gets the display name for a weather condition\n * @param conditionId Weather condition ID\n * @returns Condition display name\n */\n protected getConditionName(conditionId: string): string {\n const condition = this.weatherService.getCondition(conditionId);\n return condition?.name || 'Unknown';\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","<!-- 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>Loading weather data...</span>\n </div>\n </div>\n }\n\n <!-- Error message -->\n @if (hasError()) {\n <div class=\"axp-weather-error-overlay\">\n <div class=\"axp-weather-error-message\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n <span>{{ errorMessage() }}</span>\n <button class=\"axp-weather-retry-button\" (click)=\"refreshWeather()\">\n <i class=\"fa-solid fa-sync-alt\"></i>\n <span>Retry</span>\n </button>\n </div>\n </div>\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 <i\n [class]=\"getConditionIcon(weatherData()?.current?.condition || '')\"\n [style.color]=\"getConditionColor(weatherData()?.current?.condition || '')\"\n ></i>\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\">{{ getCurrentCondition() }}</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\">{{ temperatureUnit() }}</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\">Humidity</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\">Wind</div>\n <div class=\"axp-weather-detail-value\">{{ getWindSpeed() }} {{ windSpeedUnit() }}</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>Forecast</span>\n </h3>\n <!-- <div class=\"axp-weather-scroll-indicator\">\n <i class=\"fa-solid fa-chevron-right\"></i>\n </div> -->\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>Loading forecast...</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\">{{ day.day }}</div>\n <div class=\"axp-weather-forecast-icon\" title=\"{{ getConditionName(day.condition) }}\">\n <i [class]=\"getConditionIcon(day.condition)\" [style.color]=\"getConditionColor(day.condition)\"></i>\n </div>\n <div class=\"axp-weather-forecast-temps\">\n <span class=\"axp-weather-forecast-low\">\n {{ temperatureUnit() === '°C' ? day.minTempC : day.minTempF }}°\n </span>\n <span class=\"axp-weather-forecast-high\">\n {{ temperatureUnit() === '°C' ? day.maxTempC : day.maxTempF }}°\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>Last updated: {{ 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]=\"'Refresh weather data'\"\n title=\"Refresh weather data\"\n >\n <i class=\"fa-solid fa-sync-alt\"></i>\n <span>Refresh</span>\n </button>\n </div>\n </div>\n } @else if (!isLoading() && !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>No weather data available</p>\n <button class=\"axp-weather-refresh-button\" (click)=\"refreshWeather()\">\n <i class=\"fa-solid fa-sync-alt\"></i>\n <span>Load Data</span>\n </button>\n </div>\n }\n</div>\n","import { AXPWidgetConfig, AXPWidgetGroupEnum, AXPWidgetsCatalog } from '@acorex/platform/layout/builder';\n\nimport { AXP_WIDGETS_UTILITY_CATEGORY } from '../chart.type';\nimport { AXP_APPEARANCE_PROPERTY_GROUP, AXP_BEHAVIOR_PROPERTY_GROUP, AXP_DATA_PROPERTY_GROUP } from '@acorex/platform/widgets';\n\n/**\n * Weather Widget Configuration\n * Provides customization options for displaying weather data and forecast\n */\nexport const AXPWeatherWidget: AXPWidgetConfig = {\n name: 'weather',\n title: 'Weather Widget',\n categories: [AXP_WIDGETS_UTILITY_CATEGORY],\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: '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: '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: 'Show Wind Speed',\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: '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: '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: '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: '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: '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: 'Refresh Interval (minutes)',\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 width: 3,\n height: 7,\n\n minWidth: 2,\n minHeight: 4,\n\n maxWidth: 4,\n maxHeight: 8,\n },\n },\n};\n\n/**\n * Type declaration to register the weather widget type\n */\ndeclare module '@acorex/platform/layout/builder' {\n interface AXPWidgetTypesMap {\n weather: 'weather';\n }\n}\n","import {\n AXP_HOME_PAGE_DEFAULT_KEY,\n AXP_HOME_PAGES,\n AXP_MENU_PROVIDER,\n} from '@acorex/platform/common';\nimport { AXP_ENTITY_CONFIG_TOKEN, AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';\nimport { inject, NgModule } from '@angular/core';\nimport { AXMEntityProvider } from './entity.provider';\nimport { AXMMenuProvider } from './menu.provider';\nimport { AXPWidgetsModule } from '@acorex/platform/widgets';\nimport { AXMDashboardService, AXMDashboardServiceImpl } from './entities';\nimport { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';\nimport { AXPDashboardShortcutWidget } from './features/shared/widgets/dashboard-shortcut';\nimport { AXPAuthGuard } from '@acorex/platform/auth';\nimport { Route } from '@angular/router';\nimport {\n AXPDonutChartWidget,\n AXPBarChartWidget,\n AXPLineChartWidget,\n AXPGaugeChartWidget,\n AXPStickyNoteWidget,\n AXPClockCalendarWidget,\n AXPWeatherWidget,\n AXPNotificationWidget,\n AXPTaskListWidget\n} from './features/shared/widgets';\n\n\nfunction routesFactory(): 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.AXPDashboardHomeComponent),\n },\n ],\n }\n}\n\n\n@NgModule({\n imports: [\n AXPLayoutBuilderModule.forChild({\n widgets: [\n AXPDashboardShortcutWidget,\n //charts\n AXPDonutChartWidget,\n AXPBarChartWidget,\n AXPLineChartWidget,\n AXPGaugeChartWidget,\n AXPStickyNoteWidget,\n AXPClockCalendarWidget,\n AXPWeatherWidget,\n AXPNotificationWidget,\n AXPTaskListWidget,\n ],\n }),\n ],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXMDashboardService,\n useClass: AXMDashboardServiceImpl,\n },\n {\n provide: AXP_HOME_PAGES,\n multi: true,\n useFactory: () => [\n {\n key: 'dashboard',\n title: 'Dashboard',\n route: routesFactory()\n }\n ],\n },\n AXPWidgetsModule,\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 {\n provide: AXMDashboardService,\n useClass: AXMDashboardServiceImpl,\n },\n {\n provide: AXP_HOME_PAGE_DEFAULT_KEY,\n useValue: 'dashboard',\n },\n ],\n})\nexport class AXMDashboardManagementModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i3","i7","i4","i5","rxjsInterval","i1"],"mappings":"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"}