@acorex/modules 19.2.5 → 19.2.7

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 (208) hide show
  1. package/application-management/lib/layouts/module-entity-detail-view/module-entity-detail-view.component.d.ts +2 -2
  2. package/auth/lib/store/auth.effects.d.ts +2 -2
  3. package/fesm2022/{acorex-modules-application-management-module-designer.component-kMtkkid-.mjs → acorex-modules-application-management-module-designer.component-DPJ4qpK3.mjs} +4 -4
  4. package/fesm2022/acorex-modules-application-management-module-designer.component-DPJ4qpK3.mjs.map +1 -0
  5. package/fesm2022/acorex-modules-application-management.mjs +3 -3
  6. package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
  7. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-CcRRSTGN.mjs → acorex-modules-auth-acorex-modules-auth-HwJJs-3A.mjs} +24 -24
  8. package/fesm2022/acorex-modules-auth-acorex-modules-auth-HwJJs-3A.mjs.map +1 -0
  9. package/fesm2022/acorex-modules-auth-app-chooser.component-BvxMkXPp.mjs +64 -0
  10. package/fesm2022/acorex-modules-auth-app-chooser.component-BvxMkXPp.mjs.map +1 -0
  11. package/fesm2022/{acorex-modules-auth-login.module-ua9uEgUG.mjs → acorex-modules-auth-login.module-CDvLUxls.mjs} +4 -4
  12. package/fesm2022/{acorex-modules-auth-login.module-ua9uEgUG.mjs.map → acorex-modules-auth-login.module-CDvLUxls.mjs.map} +1 -1
  13. package/fesm2022/acorex-modules-auth-master.layout-CnKBnl8W.mjs +23 -0
  14. package/fesm2022/acorex-modules-auth-master.layout-CnKBnl8W.mjs.map +1 -0
  15. package/fesm2022/{acorex-modules-auth-password.component-BVoPZUG9.mjs → acorex-modules-auth-password.component-1FnIjiZ8.mjs} +2 -2
  16. package/fesm2022/{acorex-modules-auth-password.component-BVoPZUG9.mjs.map → acorex-modules-auth-password.component-1FnIjiZ8.mjs.map} +1 -1
  17. package/fesm2022/{acorex-modules-auth-password.component-CIwOjQRh.mjs → acorex-modules-auth-password.component-C16jeHuJ.mjs} +4 -4
  18. package/fesm2022/acorex-modules-auth-password.component-C16jeHuJ.mjs.map +1 -0
  19. package/fesm2022/{acorex-modules-auth-routes-hR3jePok.mjs → acorex-modules-auth-routes-ZDDUhAWd.mjs} +2 -2
  20. package/fesm2022/{acorex-modules-auth-routes-hR3jePok.mjs.map → acorex-modules-auth-routes-ZDDUhAWd.mjs.map} +1 -1
  21. package/fesm2022/{acorex-modules-auth-setting.provider-GJeEbIRd.mjs → acorex-modules-auth-setting.provider-DDl3OHw6.mjs} +2 -2
  22. package/fesm2022/{acorex-modules-auth-setting.provider-GJeEbIRd.mjs.map → acorex-modules-auth-setting.provider-DDl3OHw6.mjs.map} +1 -1
  23. package/fesm2022/acorex-modules-auth-tenant-chooser.component-CKsbiOUX.mjs +83 -0
  24. package/fesm2022/acorex-modules-auth-tenant-chooser.component-CKsbiOUX.mjs.map +1 -0
  25. package/fesm2022/{acorex-modules-auth-two-factor.module-CKe_H_-u.mjs → acorex-modules-auth-two-factor.module-C32MVGby.mjs} +2 -2
  26. package/fesm2022/{acorex-modules-auth-two-factor.module-CKe_H_-u.mjs.map → acorex-modules-auth-two-factor.module-C32MVGby.mjs.map} +1 -1
  27. package/fesm2022/acorex-modules-auth.mjs +1 -1
  28. package/fesm2022/acorex-modules-conversation.mjs +4 -4
  29. package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
  30. package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-DGGKoVbL.mjs +908 -0
  31. package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-DGGKoVbL.mjs.map +1 -0
  32. package/fesm2022/{acorex-modules-form-template-management-category.entity-BcfMw_wb.mjs → acorex-modules-form-template-management-category.entity-B1X2QyYV.mjs} +2 -2
  33. package/fesm2022/{acorex-modules-form-template-management-category.entity-BcfMw_wb.mjs.map → acorex-modules-form-template-management-category.entity-B1X2QyYV.mjs.map} +1 -1
  34. package/fesm2022/acorex-modules-form-template-management-designer.page-BLbPLLdP.mjs.map +1 -1
  35. package/fesm2022/{acorex-modules-form-template-management-setting.provider-ceq0ZtxA.mjs → acorex-modules-form-template-management-setting.provider-D-HyCbH7.mjs} +2 -2
  36. package/fesm2022/{acorex-modules-form-template-management-setting.provider-ceq0ZtxA.mjs.map → acorex-modules-form-template-management-setting.provider-D-HyCbH7.mjs.map} +1 -1
  37. package/fesm2022/acorex-modules-form-template-management-template-picker.component-xiRKc4FF.mjs +126 -0
  38. package/fesm2022/acorex-modules-form-template-management-template-picker.component-xiRKc4FF.mjs.map +1 -0
  39. package/fesm2022/{acorex-modules-form-template-management-template-widget-edit.component-CVyFN7D9.mjs → acorex-modules-form-template-management-template-widget-edit.component-CyZLM6M9.mjs} +2 -2
  40. package/fesm2022/acorex-modules-form-template-management-template-widget-edit.component-CyZLM6M9.mjs.map +1 -0
  41. package/fesm2022/{acorex-modules-form-template-management-template.entity-BpApQcvG.mjs → acorex-modules-form-template-management-template.entity-DXIhxJeU.mjs} +2 -2
  42. package/fesm2022/{acorex-modules-form-template-management-template.entity-BpApQcvG.mjs.map → acorex-modules-form-template-management-template.entity-DXIhxJeU.mjs.map} +1 -1
  43. package/fesm2022/acorex-modules-form-template-management.mjs +1 -907
  44. package/fesm2022/acorex-modules-form-template-management.mjs.map +1 -1
  45. package/fesm2022/acorex-modules-notification-management.mjs +263 -9
  46. package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
  47. package/fesm2022/acorex-modules-organization-management-add-item.component-D0tN7Se4.mjs +83 -0
  48. package/fesm2022/acorex-modules-organization-management-add-item.component-D0tN7Se4.mjs.map +1 -0
  49. package/fesm2022/{acorex-modules-organization-managment-branch.entity-kuZxLStS.mjs → acorex-modules-organization-management-branch.entity-CbmnpHl2.mjs} +2 -2
  50. package/fesm2022/acorex-modules-organization-management-branch.entity-CbmnpHl2.mjs.map +1 -0
  51. package/fesm2022/{acorex-modules-organization-managment-chart.entity-BqUE8fbV.mjs → acorex-modules-organization-management-chart.entity-Bk4WgsYr.mjs} +2 -2
  52. package/fesm2022/acorex-modules-organization-management-chart.entity-Bk4WgsYr.mjs.map +1 -0
  53. package/fesm2022/{acorex-modules-organization-managment-company.entity-DJt8tCqO.mjs → acorex-modules-organization-management-company.entity-d7GaCVei.mjs} +2 -2
  54. package/fesm2022/acorex-modules-organization-management-company.entity-d7GaCVei.mjs.map +1 -0
  55. package/fesm2022/{acorex-modules-organization-managment-department.entity-C1PxLx6p.mjs → acorex-modules-organization-management-department.entity-Dl7y4Rva.mjs} +2 -2
  56. package/fesm2022/acorex-modules-organization-management-department.entity-Dl7y4Rva.mjs.map +1 -0
  57. package/fesm2022/{acorex-modules-organization-managment-division.entity-DHVnrP38.mjs → acorex-modules-organization-management-division.entity-Ckmu2Tj9.mjs} +2 -2
  58. package/fesm2022/acorex-modules-organization-management-division.entity-Ckmu2Tj9.mjs.map +1 -0
  59. package/fesm2022/{acorex-modules-organization-managment-employee.entity-D4BSxGAW.mjs → acorex-modules-organization-management-employee.entity-PwlBjkYo.mjs} +2 -2
  60. package/fesm2022/acorex-modules-organization-management-employee.entity-PwlBjkYo.mjs.map +1 -0
  61. package/fesm2022/{acorex-modules-organization-managment-employment-type.entity-Cgbezwio.mjs → acorex-modules-organization-management-employment-type.entity-9aOaYT_-.mjs} +2 -2
  62. package/fesm2022/acorex-modules-organization-management-employment-type.entity-9aOaYT_-.mjs.map +1 -0
  63. package/fesm2022/acorex-modules-organization-management-org-chart-configuration.page-BzjTyYyS.mjs +92 -0
  64. package/fesm2022/acorex-modules-organization-management-org-chart-configuration.page-BzjTyYyS.mjs.map +1 -0
  65. package/fesm2022/acorex-modules-organization-management-org-chart-configuration.service-DObuNZKQ.mjs +145 -0
  66. package/fesm2022/acorex-modules-organization-management-org-chart-configuration.service-DObuNZKQ.mjs.map +1 -0
  67. package/fesm2022/acorex-modules-organization-management-org-chart.page-Cz4ENQRa.mjs +868 -0
  68. package/fesm2022/acorex-modules-organization-management-org-chart.page-Cz4ENQRa.mjs.map +1 -0
  69. package/fesm2022/{acorex-modules-organization-managment-position.entity-Bbb5KAkm.mjs → acorex-modules-organization-management-position.entity-DDkiBefn.mjs} +2 -2
  70. package/fesm2022/acorex-modules-organization-management-position.entity-DDkiBefn.mjs.map +1 -0
  71. package/fesm2022/{acorex-modules-organization-managment-setting.keys-CF6Giykz.mjs → acorex-modules-organization-management-setting.keys-CF6Giykz.mjs} +1 -1
  72. package/fesm2022/acorex-modules-organization-management-setting.keys-CF6Giykz.mjs.map +1 -0
  73. package/fesm2022/{acorex-modules-organization-managment-setting.provider-nKs53GcA.mjs → acorex-modules-organization-management-setting.provider-eLv_qnmE.mjs} +3 -3
  74. package/fesm2022/acorex-modules-organization-management-setting.provider-eLv_qnmE.mjs.map +1 -0
  75. package/fesm2022/{acorex-modules-organization-managment.mjs → acorex-modules-organization-management.mjs} +66 -22
  76. package/fesm2022/acorex-modules-organization-management.mjs.map +1 -0
  77. package/fesm2022/acorex-modules-platform-management.mjs +1455 -155
  78. package/fesm2022/acorex-modules-platform-management.mjs.map +1 -1
  79. package/fesm2022/acorex-modules-security-management.mjs +12 -1
  80. package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
  81. package/form-template-management/index.d.ts +0 -1
  82. package/form-template-management/lib/features/designer/index.d.ts +5 -0
  83. package/form-template-management/lib/{services → features/designer}/template.provider.d.ts +1 -1
  84. package/form-template-management/lib/features/index.d.ts +1 -0
  85. package/notification-management/lib/entities/channel/channel.types.d.ts +14 -2
  86. package/organization-management/README.md +3 -0
  87. package/organization-management/index.d.ts +4 -0
  88. package/{organization-managment → organization-management}/lib/entities/chart/chart.types.d.ts +10 -5
  89. package/organization-management/lib/features/index.d.ts +1 -0
  90. package/organization-management/lib/features/organization-chart/add-item/add-item.component.d.ts +21 -0
  91. package/organization-management/lib/features/organization-chart/index.d.ts +1 -0
  92. package/{organization-managment → organization-management}/lib/features/organization-chart/org-chart-configuration.page.d.ts +4 -4
  93. package/organization-management/lib/features/organization-chart/org-chart-configuration.service.d.ts +25 -0
  94. package/organization-management/lib/features/organization-chart/org-chart-print.service.d.ts +45 -0
  95. package/{organization-managment → organization-management}/lib/features/organization-chart/org-chart.page.d.ts +79 -8
  96. package/organization-management/lib/features/organization-chart/org-chart.service.d.ts +63 -0
  97. package/organization-management/lib/features/organization-chart/org-chart.type.d.ts +46 -0
  98. package/{organization-managment/lib/organization-managment.module.d.ts → organization-management/lib/organization-management.module.d.ts} +4 -4
  99. package/package.json +8 -8
  100. package/platform-management/lib/const.d.ts +12 -0
  101. package/platform-management/lib/entities/app-term/components/notify-app/notify-app.component.d.ts +1 -2
  102. package/platform-management/lib/entities/data-source/coulmn-def.widget.d.ts +56 -0
  103. package/platform-management/lib/entities/data-source/data-source.entity.d.ts +3 -0
  104. package/platform-management/lib/entities/data-source/data-source.service.d.ts +10 -0
  105. package/platform-management/lib/entities/data-source/data-source.types.d.ts +7 -0
  106. package/platform-management/lib/entities/data-source/datasource-provider.dynamic.d.ts +6 -0
  107. package/platform-management/lib/entities/data-source/index.d.ts +3 -0
  108. package/platform-management/lib/entities/index.d.ts +2 -0
  109. package/platform-management/lib/entities/promotion/components/index.d.ts +1 -0
  110. package/platform-management/lib/entities/promotion/components/promotion-slot/promotion-slot.component.d.ts +13 -0
  111. package/platform-management/lib/entities/promotion/index.d.ts +4 -0
  112. package/platform-management/lib/entities/promotion/promotion.entity.d.ts +3 -0
  113. package/platform-management/lib/entities/promotion/promotion.service.d.ts +10 -0
  114. package/platform-management/lib/entities/promotion/promotion.types.d.ts +15 -0
  115. package/platform-management/lib/platform-management.module.d.ts +2 -1
  116. package/security-management/index.d.ts +1 -0
  117. package/security-management/lib/menu.keys.d.ts +5 -0
  118. package/fesm2022/acorex-modules-application-management-module-designer.component-kMtkkid-.mjs.map +0 -1
  119. package/fesm2022/acorex-modules-auth-acorex-modules-auth-CcRRSTGN.mjs.map +0 -1
  120. package/fesm2022/acorex-modules-auth-app-chooser.component-DuRnQda8.mjs +0 -64
  121. package/fesm2022/acorex-modules-auth-app-chooser.component-DuRnQda8.mjs.map +0 -1
  122. package/fesm2022/acorex-modules-auth-master.layout-KNzdjwP6.mjs +0 -23
  123. package/fesm2022/acorex-modules-auth-master.layout-KNzdjwP6.mjs.map +0 -1
  124. package/fesm2022/acorex-modules-auth-password.component-CIwOjQRh.mjs.map +0 -1
  125. package/fesm2022/acorex-modules-auth-tenant-chooser.component-Cx3fK__H.mjs +0 -83
  126. package/fesm2022/acorex-modules-auth-tenant-chooser.component-Cx3fK__H.mjs.map +0 -1
  127. package/fesm2022/acorex-modules-form-template-management-template-picker.component-CG-_1tWi.mjs +0 -126
  128. package/fesm2022/acorex-modules-form-template-management-template-picker.component-CG-_1tWi.mjs.map +0 -1
  129. package/fesm2022/acorex-modules-form-template-management-template-widget-edit.component-CVyFN7D9.mjs.map +0 -1
  130. package/fesm2022/acorex-modules-organization-managment-branch.entity-kuZxLStS.mjs.map +0 -1
  131. package/fesm2022/acorex-modules-organization-managment-chart.entity-BqUE8fbV.mjs.map +0 -1
  132. package/fesm2022/acorex-modules-organization-managment-company.entity-DJt8tCqO.mjs.map +0 -1
  133. package/fesm2022/acorex-modules-organization-managment-department.entity-C1PxLx6p.mjs.map +0 -1
  134. package/fesm2022/acorex-modules-organization-managment-division.entity-DHVnrP38.mjs.map +0 -1
  135. package/fesm2022/acorex-modules-organization-managment-employee.entity-D4BSxGAW.mjs.map +0 -1
  136. package/fesm2022/acorex-modules-organization-managment-employment-type.entity-Cgbezwio.mjs.map +0 -1
  137. package/fesm2022/acorex-modules-organization-managment-org-chart-configuration.page-Dc6c7GmB.mjs +0 -310
  138. package/fesm2022/acorex-modules-organization-managment-org-chart-configuration.page-Dc6c7GmB.mjs.map +0 -1
  139. package/fesm2022/acorex-modules-organization-managment-org-chart.page-CTHNSn2n.mjs +0 -505
  140. package/fesm2022/acorex-modules-organization-managment-org-chart.page-CTHNSn2n.mjs.map +0 -1
  141. package/fesm2022/acorex-modules-organization-managment-position.entity-Bbb5KAkm.mjs.map +0 -1
  142. package/fesm2022/acorex-modules-organization-managment-setting.keys-CF6Giykz.mjs.map +0 -1
  143. package/fesm2022/acorex-modules-organization-managment-setting.provider-nKs53GcA.mjs.map +0 -1
  144. package/fesm2022/acorex-modules-organization-managment.mjs.map +0 -1
  145. package/organization-managment/README.md +0 -3
  146. package/organization-managment/index.d.ts +0 -3
  147. package/organization-managment/lib/features/organization-chart/org-chart-print.service.d.ts +0 -22
  148. package/organization-managment/lib/features/organization-chart/org-chart.service.d.ts +0 -35
  149. package/organization-managment/lib/features/organization-chart/org-chart.type.d.ts +0 -25
  150. /package/form-template-management/lib/{services → features/designer}/designer-connector.service.d.ts +0 -0
  151. /package/form-template-management/lib/{pages → features}/designer/designer.page.d.ts +0 -0
  152. /package/form-template-management/lib/{components → features/designer}/widgets/template/index.d.ts +0 -0
  153. /package/form-template-management/lib/{components → features/designer}/widgets/template/template-widget-designer.component.d.ts +0 -0
  154. /package/form-template-management/lib/{components → features/designer}/widgets/template/template-widget-edit.component.d.ts +0 -0
  155. /package/form-template-management/lib/{components → features/designer}/widgets/template/template-widget-view.component.d.ts +0 -0
  156. /package/form-template-management/lib/{components → features/designer}/widgets/template/template-widget.config.d.ts +0 -0
  157. /package/form-template-management/lib/{components → features/designer}/widgets/template-designer/index.d.ts +0 -0
  158. /package/form-template-management/lib/{components → features/designer}/widgets/template-designer/template-designer-widget-view.component.d.ts +0 -0
  159. /package/form-template-management/lib/{components → features/designer}/widgets/template-designer/template-designer-widget.config.d.ts +0 -0
  160. /package/form-template-management/lib/{components → features/designer}/widgets/template-picker/template-picker.component.d.ts +0 -0
  161. /package/form-template-management/lib/{components → features/designer}/widgets/template-picker/template.provider.d.ts +0 -0
  162. /package/form-template-management/lib/{workflows → features/designer/workflows}/create-template.workflow.d.ts +0 -0
  163. /package/form-template-management/lib/{workflows → features/designer/workflows}/design-template.workflow.d.ts +0 -0
  164. /package/{organization-managment → organization-management}/lib/const.d.ts +0 -0
  165. /package/{organization-managment → organization-management}/lib/entities/branch/branch.entity.d.ts +0 -0
  166. /package/{organization-managment → organization-management}/lib/entities/branch/branch.module.d.ts +0 -0
  167. /package/{organization-managment → organization-management}/lib/entities/branch/branch.service.d.ts +0 -0
  168. /package/{organization-managment → organization-management}/lib/entities/branch/branch.types.d.ts +0 -0
  169. /package/{organization-managment → organization-management}/lib/entities/branch/index.d.ts +0 -0
  170. /package/{organization-managment → organization-management}/lib/entities/chart/chart.entity.d.ts +0 -0
  171. /package/{organization-managment → organization-management}/lib/entities/chart/chart.module.d.ts +0 -0
  172. /package/{organization-managment → organization-management}/lib/entities/chart/chart.service.d.ts +0 -0
  173. /package/{organization-managment → organization-management}/lib/entities/chart/index.d.ts +0 -0
  174. /package/{organization-managment → organization-management}/lib/entities/company/company.entity.d.ts +0 -0
  175. /package/{organization-managment → organization-management}/lib/entities/company/company.module.d.ts +0 -0
  176. /package/{organization-managment → organization-management}/lib/entities/company/company.service.d.ts +0 -0
  177. /package/{organization-managment → organization-management}/lib/entities/company/company.types.d.ts +0 -0
  178. /package/{organization-managment → organization-management}/lib/entities/company/index.d.ts +0 -0
  179. /package/{organization-managment → organization-management}/lib/entities/department/department.entity.d.ts +0 -0
  180. /package/{organization-managment → organization-management}/lib/entities/department/department.module.d.ts +0 -0
  181. /package/{organization-managment → organization-management}/lib/entities/department/department.service.d.ts +0 -0
  182. /package/{organization-managment → organization-management}/lib/entities/department/department.types.d.ts +0 -0
  183. /package/{organization-managment → organization-management}/lib/entities/department/index.d.ts +0 -0
  184. /package/{organization-managment → organization-management}/lib/entities/division/division.entity.d.ts +0 -0
  185. /package/{organization-managment → organization-management}/lib/entities/division/division.module.d.ts +0 -0
  186. /package/{organization-managment → organization-management}/lib/entities/division/division.service.d.ts +0 -0
  187. /package/{organization-managment → organization-management}/lib/entities/division/division.types.d.ts +0 -0
  188. /package/{organization-managment → organization-management}/lib/entities/division/index.d.ts +0 -0
  189. /package/{organization-managment → organization-management}/lib/entities/employee/employee.entity.d.ts +0 -0
  190. /package/{organization-managment → organization-management}/lib/entities/employee/employee.module.d.ts +0 -0
  191. /package/{organization-managment → organization-management}/lib/entities/employee/employee.service.d.ts +0 -0
  192. /package/{organization-managment → organization-management}/lib/entities/employee/employee.types.d.ts +0 -0
  193. /package/{organization-managment → organization-management}/lib/entities/employee/index.d.ts +0 -0
  194. /package/{organization-managment → organization-management}/lib/entities/employment-type/employment-type.entity.d.ts +0 -0
  195. /package/{organization-managment → organization-management}/lib/entities/employment-type/employment-type.module.d.ts +0 -0
  196. /package/{organization-managment → organization-management}/lib/entities/employment-type/employment-type.service.d.ts +0 -0
  197. /package/{organization-managment → organization-management}/lib/entities/employment-type/employment-type.types.d.ts +0 -0
  198. /package/{organization-managment → organization-management}/lib/entities/employment-type/index.d.ts +0 -0
  199. /package/{organization-managment → organization-management}/lib/entities/index.d.ts +0 -0
  200. /package/{organization-managment → organization-management}/lib/entities/position/index.d.ts +0 -0
  201. /package/{organization-managment → organization-management}/lib/entities/position/position.entity.d.ts +0 -0
  202. /package/{organization-managment → organization-management}/lib/entities/position/position.module.d.ts +0 -0
  203. /package/{organization-managment → organization-management}/lib/entities/position/position.service.d.ts +0 -0
  204. /package/{organization-managment → organization-management}/lib/entities/position/position.types.d.ts +0 -0
  205. /package/{organization-managment → organization-management}/lib/entity.provider.d.ts +0 -0
  206. /package/{organization-managment → organization-management}/lib/menu.provider.d.ts +0 -0
  207. /package/{organization-managment → organization-management}/lib/setting.keys.d.ts +0 -0
  208. /package/{organization-managment → organization-management}/lib/setting.provider.d.ts +0 -0
@@ -1,310 +0,0 @@
1
- import * as i3 from '@acorex/components/button';
2
- import { AXButtonModule } from '@acorex/components/button';
3
- import * as i5 from '@acorex/components/decorators';
4
- import { AXDecoratorModule } from '@acorex/components/decorators';
5
- import { AXDropdownButtonModule } from '@acorex/components/dropdown-button';
6
- import * as i5$1 from '@acorex/components/loading';
7
- import { AXLoadingModule } from '@acorex/components/loading';
8
- import { AXMenuModule } from '@acorex/components/menu';
9
- import * as i4 from '@acorex/core/translation';
10
- import { AXTranslationModule } from '@acorex/core/translation';
11
- import { AXPSimplePageLayout } from '@acorex/platform/themes/default';
12
- import { AXPLayoutThemeService, AXPThemeLayoutBlockComponent, AXPThemeLayoutHeaderTemplateComponent, AXPThemeLayoutActionsComponent, AXPThemeLayoutPageSecondaryActionsComponent, AXPThemeLayoutPagePrimaryActionsComponent } from '@acorex/platform/themes/shared';
13
- import * as i1 from '@angular/common';
14
- import { CommonModule } from '@angular/common';
15
- import * as i0 from '@angular/core';
16
- import { inject, signal, Injectable, Component, ChangeDetectionStrategy } from '@angular/core';
17
- import { RouterModule } from '@angular/router';
18
- import { AXMOrganizationManagementCompanyEntityService, AXMOrganizationManagementDepartmentEntityService, AXMOrganizationManagementEmployeeEntityService, AXMOrganizationManagementPositionEntityService, AXMOrganizationManagementChartEntityService, RootConfig } from './acorex-modules-organization-managment.mjs';
19
- import { AXCheckBoxModule } from '@acorex/components/check-box';
20
- import { FormsModule } from '@angular/forms';
21
- import * as i6 from '@acorex/components/breadcrumbs';
22
- import { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';
23
- import * as i7 from '@acorex/components/alert';
24
- import { AXAlertModule } from '@acorex/components/alert';
25
- import { AXPSettingService, AXPDataGenerator, AXPSettingScope } from '@acorex/platform/common';
26
- import { AXPSessionService } from '@acorex/platform/auth';
27
- import { A as AXPOrganizationSetting } from './acorex-modules-organization-managment-setting.keys-CF6Giykz.mjs';
28
-
29
- class AXMOrgChartService {
30
- constructor() {
31
- this.companyService = inject(AXMOrganizationManagementCompanyEntityService);
32
- this.departmentService = inject(AXMOrganizationManagementDepartmentEntityService);
33
- this.employmentService = inject(AXMOrganizationManagementEmployeeEntityService);
34
- this.positionService = inject(AXMOrganizationManagementPositionEntityService);
35
- this.chartService = inject(AXMOrganizationManagementChartEntityService);
36
- this.settingService = inject(AXPSettingService);
37
- //
38
- this.sessionService = inject(AXPSessionService);
39
- this._types = ['Company', 'Location', 'BusinessUnit', 'Role', 'Employee'];
40
- this._defaultPermissioEncoded = '0111001110001100001100001';
41
- this.permissions = signal(this.defaultPermissions());
42
- }
43
- get types() {
44
- return this._types;
45
- }
46
- //#region Load And Save
47
- async load(id) {
48
- if (id) {
49
- const item = await this.chartService.getOne(id);
50
- return item;
51
- }
52
- else {
53
- return await this.createNew();
54
- }
55
- }
56
- async createNew() {
57
- const tenant = this.sessionService.tenant;
58
- return {
59
- //createAt: new Date(),
60
- //updateAt: new Date(),
61
- version: '0.0.0',
62
- nodes: [{
63
- id: AXPDataGenerator.uuid(),
64
- title: tenant.name,
65
- entity: {
66
- id: tenant.id,
67
- source: 'tenant',
68
- },
69
- }],
70
- };
71
- }
72
- async save(chart) {
73
- if (chart.id) {
74
- await this.chartService.updateOne(chart.id, { version: chart.version, nodes: chart.nodes, updateAt: new Date() });
75
- }
76
- else {
77
- await this.chartService.insertOne(chart);
78
- }
79
- } //save Chart Data
80
- async listItemType(type, event) {
81
- switch (type.text.toLowerCase()) {
82
- case 'company':
83
- return await this.companyService.query({
84
- skip: event.skip,
85
- take: event.take,
86
- filter: event.filter,
87
- sort: event.sort,
88
- });
89
- case 'country':
90
- break;
91
- case 'city':
92
- break;
93
- case 'department':
94
- return (await this.departmentService.query({
95
- skip: event.skip,
96
- take: event.take,
97
- filter: event.filter,
98
- sort: event.sort,
99
- }));
100
- case 'position':
101
- return (await this.positionService.query({
102
- skip: event.skip,
103
- take: event.take,
104
- filter: event.filter,
105
- sort: event.sort,
106
- }));
107
- case 'employment':
108
- return (await this.employmentService.query({
109
- skip: event.skip,
110
- take: event.take,
111
- filter: event.filter,
112
- sort: event.sort,
113
- }));
114
- }
115
- }
116
- //#endregion
117
- //#region Configuration Methods
118
- defaultPermissions() {
119
- return this.decodePermissionsString(this._defaultPermissioEncoded);
120
- }
121
- encodePermissionsString(permissions) {
122
- let str = '';
123
- for (const parent of this.types) {
124
- for (const child of this.types) {
125
- str += (permissions[parent]?.[child] ?? 0).toString();
126
- }
127
- }
128
- return str;
129
- }
130
- decodePermissionsString(encoded) {
131
- const result = {};
132
- const expectedLength = this.types.length * this.types.length;
133
- if (encoded.length !== expectedLength) {
134
- throw new Error(`Invalid permissions string length. Expected ${expectedLength} but got ${encoded.length}`);
135
- }
136
- let index = 0;
137
- for (const parent of this.types) {
138
- result[parent] = {};
139
- for (const child of this.types) {
140
- const char = encoded.charAt(index);
141
- result[parent][child] = parseInt(char, 10);
142
- index++;
143
- }
144
- }
145
- return result;
146
- }
147
- decodePermissionsMatrix(matrix) {
148
- const newPermissions = {};
149
- this.types.forEach((parent, rowIndex) => {
150
- newPermissions[parent] = {};
151
- this.types.forEach((child, colIndex) => {
152
- newPermissions[parent][child] = matrix[rowIndex][colIndex];
153
- });
154
- });
155
- return newPermissions;
156
- }
157
- validateStoredPermissions(storedValue) {
158
- try {
159
- if (typeof storedValue === 'string') {
160
- const expectedLength = this.types.length * this.types.length;
161
- // Check that the string is the correct length and only contains 0s and 1s.
162
- if (storedValue.length === expectedLength && /^[01]+$/.test(storedValue)) {
163
- return this.decodePermissionsString(storedValue);
164
- }
165
- }
166
- else if (Array.isArray(storedValue)) {
167
- // Validate the 2D array dimensions and values.
168
- if (storedValue.length === this.types.length &&
169
- storedValue.every(row => Array.isArray(row) &&
170
- row.length === this.types.length &&
171
- row.every(val => val === 0 || val === 1))) {
172
- return this.decodePermissionsMatrix(storedValue);
173
- }
174
- }
175
- else if (typeof storedValue === 'object' && storedValue !== null) {
176
- // Validate that the object has all the required keys and that their values are 0 or 1.
177
- let valid = true;
178
- for (const parent of this.types) {
179
- if (!(parent in storedValue)) {
180
- valid = false;
181
- break;
182
- }
183
- const childPermissions = storedValue[parent];
184
- for (const child of this.types) {
185
- if (!(child in childPermissions) || (childPermissions[child] !== 0 && childPermissions[child] !== 1)) {
186
- valid = false;
187
- break;
188
- }
189
- }
190
- if (!valid)
191
- break;
192
- }
193
- if (valid) {
194
- return storedValue;
195
- }
196
- }
197
- }
198
- catch (error) {
199
- // In case of any errors during validation, fall back to default permissions.
200
- }
201
- // Return the default permissions if validation fails.
202
- return this.defaultPermissions();
203
- }
204
- isAllowed(parent, child) {
205
- return (this.permissions()[parent]?.[child] ?? 0) === 1;
206
- }
207
- setPermission(parent, child, value) {
208
- this.permissions.update((p) => {
209
- if (!p[parent]) {
210
- p[parent] = {};
211
- }
212
- p[parent][child] = value ? 1 : 0;
213
- return p;
214
- });
215
- }
216
- getPermission(parent, child) {
217
- return this.permissions()[parent]?.[child] === 1;
218
- }
219
- async loadSettings() {
220
- const storedValue = await this.settingService
221
- .scope(AXPSettingScope.Tenant)
222
- .get(AXPOrganizationSetting.Relations);
223
- // Use the validation method to ensure the stored value is correct.
224
- if (storedValue) {
225
- const validatedPermissions = this.validateStoredPermissions(storedValue);
226
- this.permissions.set(validatedPermissions);
227
- }
228
- else {
229
- this.permissions.set(this.defaultPermissions());
230
- }
231
- }
232
- async updateSettings() {
233
- const matrix = this.encodePermissionsString(this.permissions());
234
- await this.settingService
235
- .scope(AXPSettingScope.Tenant)
236
- .set(AXPOrganizationSetting.Relations, matrix);
237
- }
238
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMOrgChartService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
239
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMOrgChartService }); }
240
- }
241
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMOrgChartService, decorators: [{
242
- type: Injectable
243
- }] });
244
-
245
- class AXMOrgChartConfigurationPage {
246
- constructor() {
247
- this.layout = inject(AXPLayoutThemeService);
248
- this.chartService = inject(AXMOrgChartService);
249
- this.loadingStates = signal({});
250
- this.rootConfig = RootConfig;
251
- }
252
- async ngOnInit() {
253
- await this.chartService.loadSettings();
254
- }
255
- async togglePermission(parent, child) {
256
- //TODO: Check the async and loading
257
- // Set the loading state for this cell to true.
258
- this.loadingStates.update((states) => {
259
- if (!states[parent]) {
260
- states[parent] = {};
261
- }
262
- states[parent][child] = true;
263
- return states;
264
- });
265
- this.chartService.setPermission(parent, child, !this.chartService.getPermission(parent, child));
266
- await this.chartService.updateSettings();
267
- // Turn off the loading state.
268
- this.loadingStates.update((states) => {
269
- if (!states[parent]) {
270
- states[parent] = {};
271
- }
272
- states[parent][child] = false;
273
- return states;
274
- });
275
- }
276
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMOrgChartConfigurationPage, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
277
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXMOrgChartConfigurationPage, isStandalone: true, selector: "ng-component", providers: [AXMOrgChartService], ngImport: i0, template: "<axp-layout-simple-page *translate=\"let t\">\n <axp-layout-header>\n <axp-layout-title> {{t(rootConfig.entities.structure.title) | async}} </axp-layout-title>\n\n <axp-layout-description>Customize your organization's hierarchical relationships</axp-layout-description>\n\n <axp-layout-actions>\n <axp-layout-actions-primary> </axp-layout-actions-primary>\n <axp-layout-actions-secondary>\n <ax-button-item [text]=\"(t('reset') | async)!\">\n <ax-prefix>\n <ax-icon [icon]=\"'fa-solid fa-print'\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n </axp-layout-actions-secondary>\n </axp-layout-actions>\n\n\n <axp-layout-breadcrumbs>\n <ax-breadcrumbs [class.ax-hidden]=\"layout.isSmall()\">\n <ng-template #divider>\n <i class=\"fa-regular fa-slash-forward\"></i>\n </ng-template>\n <ax-breadcrumbs-item>\n Home\n </ax-breadcrumbs-item>\n <ax-breadcrumbs-item>\n Organization\n </ax-breadcrumbs-item>\n </ax-breadcrumbs>\n </axp-layout-breadcrumbs>\n </axp-layout-header>\n\n <axp-layout-content>\n <div class=\"ax-flex ax-flex-col ax-gap-6 ax-w-full 2xl:ax-w-3/4 3xl:ax-w-1/2\">\n <div>\n <h3 class=\"ax-font-semibold ax-text-xl\">Relations Permissions</h3>\n <p class=\"ax-text-sm ax-opacity-85\">\n This matrix sets the relationships between nodes in your organization chart. Click a cell to toggle the\n relation between <span class=\"ax-text-danger-500\">Allowed</span> and <span\n class=\"ax-text-success-500\">Denied</span>.\n </p>\n </div>\n <div class=\"ax-rounded-md ax-overflow-hidden ax-w-full\">\n <table class=\" ax-table-auto ax-border-collapse ax-w-full ax-border-primary-900 ax-rounded-md\">\n <thead>\n <tr class=\"ax-bg-primary-400 ax-text-on-primary\">\n <!-- Top-left empty cell -->\n <th class=\"ax-border ax-border-primary-900 ax-p-4 ax-min-w-44 ax-font-semibold ax-text-start\">Parent\n \\\n Child</th>\n <!-- Horizontal headers -->\n @for ( type of chartService.types; track $index) {\n <th class=\"ax-border ax-border-primary-900 ax-p-4 ax-min-w-44 ax-text-center ax-font-semibold\">\n {{ type }}\n </th>\n }\n </tr>\n </thead>\n <tbody>\n <!-- For each parent type, render a row with alternating backgrounds -->\n @for ( parent of chartService.types; track $index) {\n <tr>\n <!-- Vertical header cell with custom header colors -->\n <td\n class=\"ax-border ax-border-primary-900 ax-p-4 ax-font-semibold ax-bg-primary-400 ax-text-on-primary ax-text-start\">\n {{ parent }}\n </td>\n <!-- Render a cell for each potential child type -->\n @for ( child of chartService.types; track $index) {\n <td class=\"ax-border ax-border-primary-900 ax-p-2 \">\n <div class=\"ax-flex ax-justify-center ax-cursor-pointer ax-sm\">\n @let isLoading = loadingStates()[parent]?.[child];\n <ax-button look=\"twotone\" [color]=\"chartService.isAllowed(parent, child) ? 'success' : 'danger'\"\n [text]=\"chartService.isAllowed(parent, child) ? 'Allowed' : 'Denied'\" [disabled]=\"isLoading\"\n (onClick)=\"togglePermission(parent, child)\">\n @if(isLoading)\n {\n <ax-loading></ax-loading>\n }\n </ax-button>\n </div>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n <div>\n <ax-alert [color]=\"'warning'\">\n <ax-icon></ax-icon>\n <ax-title>Attention</ax-title>\n <ax-content>\n Changes made here will not update your current organization chart. They will only affect future charts or\n updates.\n </ax-content>\n </ax-alert>\n </div>\n </div>\n\n </axp-layout-content>\n</axp-layout-simple-page>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type:
278
- //
279
- AXPSimplePageLayout, selector: "axp-layout-simple-page" }, { kind: "component", type: AXPThemeLayoutBlockComponent, selector: " axp-layout-content, axp-layout-header-container, axp-layout-footer-container, axp-layout-side-container, axp-layout-sections, axp-layout-section-container, axp-layout-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title, axp-layout-nav-button, axp-layout-description, axp-layout-toolbar, axp-layout-title-bar, axp-layout-breadcrumbs, axp-layout-list-action, " }, { kind: "component", type: AXPThemeLayoutHeaderTemplateComponent, selector: "axp-layout-header" }, { kind: "component", type: AXPThemeLayoutActionsComponent, selector: "axp-layout-actions" }, { kind: "component", type: AXPThemeLayoutPageSecondaryActionsComponent, selector: "axp-layout-actions-secondary" }, { kind: "component", type: AXPThemeLayoutPagePrimaryActionsComponent, selector: "axp-layout-actions-primary" }, { kind: "ngmodule", type:
280
- //
281
- AXMenuModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i3.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: i3.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i4.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i5.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i5.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i5$1.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXCheckBoxModule }, { kind: "ngmodule", type: AXBreadcrumbsModule }, { kind: "component", type: i6.AXBreadCrumbsComponent, selector: "ax-breadcrumbs" }, { kind: "component", type: i6.AXBreadCrumbsItemComponent, selector: "ax-breadcrumbs-item", inputs: ["disabled", "active"] }, { kind: "ngmodule", type: AXAlertModule }, { kind: "component", type: i7.AXAlertComponent, selector: "ax-alert", inputs: ["color", "timeOut"], outputs: ["colorChange", "onClosed", "timeOutChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
282
- }
283
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMOrgChartConfigurationPage, decorators: [{
284
- type: Component,
285
- args: [{ imports: [
286
- CommonModule,
287
- RouterModule,
288
- FormsModule,
289
- //
290
- AXPSimplePageLayout,
291
- AXPThemeLayoutBlockComponent,
292
- AXPThemeLayoutHeaderTemplateComponent,
293
- AXPThemeLayoutActionsComponent,
294
- AXPThemeLayoutPageSecondaryActionsComponent,
295
- AXPThemeLayoutPagePrimaryActionsComponent,
296
- //
297
- AXMenuModule,
298
- AXButtonModule,
299
- AXDropdownButtonModule,
300
- AXTranslationModule,
301
- AXDecoratorModule,
302
- AXLoadingModule,
303
- AXCheckBoxModule,
304
- AXBreadcrumbsModule,
305
- AXAlertModule
306
- ], changeDetection: ChangeDetectionStrategy.OnPush, providers: [AXMOrgChartService], template: "<axp-layout-simple-page *translate=\"let t\">\n <axp-layout-header>\n <axp-layout-title> {{t(rootConfig.entities.structure.title) | async}} </axp-layout-title>\n\n <axp-layout-description>Customize your organization's hierarchical relationships</axp-layout-description>\n\n <axp-layout-actions>\n <axp-layout-actions-primary> </axp-layout-actions-primary>\n <axp-layout-actions-secondary>\n <ax-button-item [text]=\"(t('reset') | async)!\">\n <ax-prefix>\n <ax-icon [icon]=\"'fa-solid fa-print'\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n </axp-layout-actions-secondary>\n </axp-layout-actions>\n\n\n <axp-layout-breadcrumbs>\n <ax-breadcrumbs [class.ax-hidden]=\"layout.isSmall()\">\n <ng-template #divider>\n <i class=\"fa-regular fa-slash-forward\"></i>\n </ng-template>\n <ax-breadcrumbs-item>\n Home\n </ax-breadcrumbs-item>\n <ax-breadcrumbs-item>\n Organization\n </ax-breadcrumbs-item>\n </ax-breadcrumbs>\n </axp-layout-breadcrumbs>\n </axp-layout-header>\n\n <axp-layout-content>\n <div class=\"ax-flex ax-flex-col ax-gap-6 ax-w-full 2xl:ax-w-3/4 3xl:ax-w-1/2\">\n <div>\n <h3 class=\"ax-font-semibold ax-text-xl\">Relations Permissions</h3>\n <p class=\"ax-text-sm ax-opacity-85\">\n This matrix sets the relationships between nodes in your organization chart. Click a cell to toggle the\n relation between <span class=\"ax-text-danger-500\">Allowed</span> and <span\n class=\"ax-text-success-500\">Denied</span>.\n </p>\n </div>\n <div class=\"ax-rounded-md ax-overflow-hidden ax-w-full\">\n <table class=\" ax-table-auto ax-border-collapse ax-w-full ax-border-primary-900 ax-rounded-md\">\n <thead>\n <tr class=\"ax-bg-primary-400 ax-text-on-primary\">\n <!-- Top-left empty cell -->\n <th class=\"ax-border ax-border-primary-900 ax-p-4 ax-min-w-44 ax-font-semibold ax-text-start\">Parent\n \\\n Child</th>\n <!-- Horizontal headers -->\n @for ( type of chartService.types; track $index) {\n <th class=\"ax-border ax-border-primary-900 ax-p-4 ax-min-w-44 ax-text-center ax-font-semibold\">\n {{ type }}\n </th>\n }\n </tr>\n </thead>\n <tbody>\n <!-- For each parent type, render a row with alternating backgrounds -->\n @for ( parent of chartService.types; track $index) {\n <tr>\n <!-- Vertical header cell with custom header colors -->\n <td\n class=\"ax-border ax-border-primary-900 ax-p-4 ax-font-semibold ax-bg-primary-400 ax-text-on-primary ax-text-start\">\n {{ parent }}\n </td>\n <!-- Render a cell for each potential child type -->\n @for ( child of chartService.types; track $index) {\n <td class=\"ax-border ax-border-primary-900 ax-p-2 \">\n <div class=\"ax-flex ax-justify-center ax-cursor-pointer ax-sm\">\n @let isLoading = loadingStates()[parent]?.[child];\n <ax-button look=\"twotone\" [color]=\"chartService.isAllowed(parent, child) ? 'success' : 'danger'\"\n [text]=\"chartService.isAllowed(parent, child) ? 'Allowed' : 'Denied'\" [disabled]=\"isLoading\"\n (onClick)=\"togglePermission(parent, child)\">\n @if(isLoading)\n {\n <ax-loading></ax-loading>\n }\n </ax-button>\n </div>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n <div>\n <ax-alert [color]=\"'warning'\">\n <ax-icon></ax-icon>\n <ax-title>Attention</ax-title>\n <ax-content>\n Changes made here will not update your current organization chart. They will only affect future charts or\n updates.\n </ax-content>\n </ax-alert>\n </div>\n </div>\n\n </axp-layout-content>\n</axp-layout-simple-page>" }]
307
- }] });
308
-
309
- export { AXMOrgChartConfigurationPage };
310
- //# sourceMappingURL=acorex-modules-organization-managment-org-chart-configuration.page-Dc6c7GmB.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"acorex-modules-organization-managment-org-chart-configuration.page-Dc6c7GmB.mjs","sources":["../../../../libs/modules/organization-managment/src/lib/features/organization-chart/org-chart.service.ts","../../../../libs/modules/organization-managment/src/lib/features/organization-chart/org-chart-configuration.page.ts","../../../../libs/modules/organization-managment/src/lib/features/organization-chart/org-chart-configuration.page.html"],"sourcesContent":["import { inject, Injectable, signal } from '@angular/core';\nimport { AXMOrganizationManagementChartEntityService } from '../../entities/chart/chart.service';\nimport { AXMOrganizationManagementChartEntityModel } from '../../entities/chart/chart.types';\nimport { AXMOrganizationManagementCompanyEntityService } from '../../entities/company/company.service';\nimport { AXMOrganizationManagementDepartmentEntityService } from '../../entities/department/department.service';\nimport { AXMOrganizationManagementEmployeeEntityService } from '../../entities/employee/employee.service';\nimport { AXMOrganizationManagementPositionEntityService } from '../../entities/position/position.service';\nimport { AXPDataGenerator, AXPSettingScope, AXPSettingService } from '@acorex/platform/common';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPOrganizationSetting } from '../../setting.keys';\n\n\n@Injectable()\nexport class AXMOrgChartService {\n\n private companyService = inject(AXMOrganizationManagementCompanyEntityService);\n private departmentService = inject(AXMOrganizationManagementDepartmentEntityService);\n private employmentService = inject(AXMOrganizationManagementEmployeeEntityService);\n private positionService = inject(AXMOrganizationManagementPositionEntityService);\n private chartService = inject(AXMOrganizationManagementChartEntityService);\n\n private readonly settingService = inject(AXPSettingService);\n //\n private sessionService = inject(AXPSessionService);\n\n\n protected _types = ['Company', 'Location', 'BusinessUnit', 'Role', 'Employee'];\n\n public get types(): string[] {\n return this._types;\n }\n\n private _defaultPermissioEncoded = '0111001110001100001100001';\n\n protected permissions = signal<{ [parent: string]: { [child: string]: number } }>(this.defaultPermissions());\n\n\n\n\n\n //#region Load And Save\n\n public async load(id?: string): Promise<AXMOrganizationManagementChartEntityModel> {\n if (id) {\n const item = await this.chartService.getOne(id);\n return item;\n } else {\n return await this.createNew();\n }\n }\n\n private async createNew(): Promise<AXMOrganizationManagementChartEntityModel> {\n const tenant = this.sessionService.tenant!;\n return {\n //createAt: new Date(),\n //updateAt: new Date(),\n version: '0.0.0',\n nodes: [{\n id: AXPDataGenerator.uuid(),\n title: tenant.name,\n entity: {\n id: tenant.id,\n source: 'tenant',\n },\n }],\n };\n }\n\n public async save(chart: AXMOrganizationManagementChartEntityModel): Promise<void> {\n if (chart.id) {\n await this.chartService.updateOne(chart.id, { version: chart.version, nodes: chart.nodes, updateAt: new Date() });\n } else {\n await this.chartService.insertOne(chart);\n }\n } //save Chart Data\n\n public async listItemType(type: any, event: any): Promise<any> {\n switch (type.text.toLowerCase()) {\n case 'company':\n return await this.companyService.query({\n skip: event.skip,\n take: event.take,\n filter: event.filter,\n sort: event.sort,\n });\n case 'country':\n break;\n case 'city':\n break;\n case 'department':\n return (await this.departmentService.query({\n skip: event.skip,\n take: event.take,\n filter: event.filter,\n sort: event.sort,\n })) as any;\n case 'position':\n return (await this.positionService.query({\n skip: event.skip,\n take: event.take,\n filter: event.filter,\n sort: event.sort,\n })) as any;\n case 'employment':\n return (await this.employmentService.query({\n skip: event.skip,\n take: event.take,\n filter: event.filter,\n sort: event.sort,\n })) as any;\n }\n }\n\n //#endregion\n\n\n\n //#region Configuration Methods\n\n\n private defaultPermissions() {\n return this.decodePermissionsString(this._defaultPermissioEncoded);\n }\n\n\n private encodePermissionsString(\n permissions: { [parent: string]: { [child: string]: number } }\n ): string {\n let str = '';\n for (const parent of this.types) {\n for (const child of this.types) {\n str += (permissions[parent]?.[child] ?? 0).toString();\n }\n }\n return str;\n }\n\n\n private decodePermissionsString(encoded: string): { [parent: string]: { [child: string]: number } } {\n const result: { [parent: string]: { [child: string]: number } } = {};\n const expectedLength = this.types.length * this.types.length;\n if (encoded.length !== expectedLength) {\n throw new Error(`Invalid permissions string length. Expected ${expectedLength} but got ${encoded.length}`);\n }\n let index = 0;\n for (const parent of this.types) {\n result[parent] = {};\n for (const child of this.types) {\n const char = encoded.charAt(index);\n result[parent][child] = parseInt(char, 10);\n index++;\n }\n }\n return result;\n }\n\n\n private decodePermissionsMatrix(matrix: number[][]): { [parent: string]: { [child: string]: number } } {\n const newPermissions: { [parent: string]: { [child: string]: number } } = {};\n this.types.forEach((parent, rowIndex) => {\n newPermissions[parent] = {};\n this.types.forEach((child, colIndex) => {\n newPermissions[parent][child] = matrix[rowIndex][colIndex];\n });\n });\n return newPermissions;\n }\n\n private validateStoredPermissions(storedValue: unknown): { [parent: string]: { [child: string]: number } } {\n try {\n if (typeof storedValue === 'string') {\n const expectedLength = this.types.length * this.types.length;\n // Check that the string is the correct length and only contains 0s and 1s.\n if (storedValue.length === expectedLength && /^[01]+$/.test(storedValue)) {\n return this.decodePermissionsString(storedValue);\n }\n } else if (Array.isArray(storedValue)) {\n // Validate the 2D array dimensions and values.\n if (\n storedValue.length === this.types.length &&\n storedValue.every(\n row =>\n Array.isArray(row) &&\n row.length === this.types.length &&\n row.every(val => val === 0 || val === 1)\n )\n ) {\n return this.decodePermissionsMatrix(storedValue);\n }\n } else if (typeof storedValue === 'object' && storedValue !== null) {\n // Validate that the object has all the required keys and that their values are 0 or 1.\n let valid = true;\n for (const parent of this.types) {\n if (!(parent in storedValue)) {\n valid = false;\n break;\n }\n const childPermissions = (storedValue as any)[parent];\n for (const child of this.types) {\n if (!(child in childPermissions) || (childPermissions[child] !== 0 && childPermissions[child] !== 1)) {\n valid = false;\n break;\n }\n }\n if (!valid) break;\n }\n if (valid) {\n return storedValue as { [parent: string]: { [child: string]: number } };\n }\n }\n } catch (error) {\n // In case of any errors during validation, fall back to default permissions.\n }\n // Return the default permissions if validation fails.\n return this.defaultPermissions();\n }\n\n\n public isAllowed(parent: string, child: string): boolean {\n return (this.permissions()[parent]?.[child] ?? 0) === 1;\n }\n\n\n public setPermission(parent: string, child: string, value: boolean) {\n this.permissions.update((p) => {\n if (!p[parent]) {\n p[parent] = {};\n }\n p[parent][child] = value ? 1 : 0;\n return p;\n });\n }\n\n public getPermission(parent: string, child: string): boolean {\n return this.permissions()[parent]?.[child] === 1;\n }\n\n\n public async loadSettings() {\n const storedValue = await this.settingService\n .scope(AXPSettingScope.Tenant)\n .get(AXPOrganizationSetting.Relations);\n\n // Use the validation method to ensure the stored value is correct.\n if (storedValue) {\n const validatedPermissions = this.validateStoredPermissions(storedValue);\n this.permissions.set(validatedPermissions);\n } else {\n this.permissions.set(this.defaultPermissions());\n }\n }\n\n public async updateSettings() {\n const matrix = this.encodePermissionsString(this.permissions());\n await this.settingService\n .scope(AXPSettingScope.Tenant)\n .set(AXPOrganizationSetting.Relations, matrix);\n }\n\n //#endregion\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXMenuModule } from '@acorex/components/menu';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPSimplePageLayout } from '@acorex/platform/themes/default';\nimport {\n AXPLayoutThemeService,\n AXPThemeLayoutActionsComponent,\n AXPThemeLayoutBlockComponent,\n AXPThemeLayoutHeaderTemplateComponent,\n AXPThemeLayoutPagePrimaryActionsComponent,\n AXPThemeLayoutPageSecondaryActionsComponent,\n} from '@acorex/platform/themes/shared';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n signal,\n} from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { RootConfig } from '../../const';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { FormsModule } from '@angular/forms';\nimport { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';\nimport { AXAlertModule } from '@acorex/components/alert';\nimport { AXMOrgChartService } from './org-chart.service';\n\n@Component({\n templateUrl: './org-chart-configuration.page.html',\n styleUrls: ['./org-chart-configuration.page.scss'],\n imports: [\n CommonModule,\n RouterModule,\n FormsModule,\n //\n AXPSimplePageLayout,\n AXPThemeLayoutBlockComponent,\n AXPThemeLayoutHeaderTemplateComponent,\n AXPThemeLayoutActionsComponent,\n AXPThemeLayoutPageSecondaryActionsComponent,\n AXPThemeLayoutPagePrimaryActionsComponent,\n //\n AXMenuModule,\n AXButtonModule,\n AXDropdownButtonModule,\n AXTranslationModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXCheckBoxModule,\n AXBreadcrumbsModule,\n AXAlertModule\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [AXMOrgChartService],\n})\nexport class AXMOrgChartConfigurationPage {\n\n protected readonly layout = inject(AXPLayoutThemeService);\n protected readonly chartService = inject(AXMOrgChartService);\n\n protected loadingStates = signal<{ [parent: string]: { [child: string]: boolean } | undefined }>({});\n\n protected readonly rootConfig = RootConfig;\n\n\n async ngOnInit() {\n await this.chartService.loadSettings();\n }\n\n\n protected async togglePermission(parent: string, child: string) {\n //TODO: Check the async and loading\n\n // Set the loading state for this cell to true.\n this.loadingStates.update((states) => {\n if (!states[parent]) {\n states[parent] = {};\n }\n states[parent][child] = true;\n return states;\n });\n\n\n\n this.chartService.setPermission(parent, child, !this.chartService.getPermission(parent, child));\n\n await this.chartService.updateSettings();\n\n // Turn off the loading state.\n this.loadingStates.update((states) => {\n if (!states[parent]) {\n states[parent] = {};\n }\n states[parent][child] = false;\n return states;\n });\n }\n\n\n}\n","<axp-layout-simple-page *translate=\"let t\">\n <axp-layout-header>\n <axp-layout-title> {{t(rootConfig.entities.structure.title) | async}} </axp-layout-title>\n\n <axp-layout-description>Customize your organization's hierarchical relationships</axp-layout-description>\n\n <axp-layout-actions>\n <axp-layout-actions-primary> </axp-layout-actions-primary>\n <axp-layout-actions-secondary>\n <ax-button-item [text]=\"(t('reset') | async)!\">\n <ax-prefix>\n <ax-icon [icon]=\"'fa-solid fa-print'\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n </axp-layout-actions-secondary>\n </axp-layout-actions>\n\n\n <axp-layout-breadcrumbs>\n <ax-breadcrumbs [class.ax-hidden]=\"layout.isSmall()\">\n <ng-template #divider>\n <i class=\"fa-regular fa-slash-forward\"></i>\n </ng-template>\n <ax-breadcrumbs-item>\n Home\n </ax-breadcrumbs-item>\n <ax-breadcrumbs-item>\n Organization\n </ax-breadcrumbs-item>\n </ax-breadcrumbs>\n </axp-layout-breadcrumbs>\n </axp-layout-header>\n\n <axp-layout-content>\n <div class=\"ax-flex ax-flex-col ax-gap-6 ax-w-full 2xl:ax-w-3/4 3xl:ax-w-1/2\">\n <div>\n <h3 class=\"ax-font-semibold ax-text-xl\">Relations Permissions</h3>\n <p class=\"ax-text-sm ax-opacity-85\">\n This matrix sets the relationships between nodes in your organization chart. Click a cell to toggle the\n relation between <span class=\"ax-text-danger-500\">Allowed</span> and <span\n class=\"ax-text-success-500\">Denied</span>.\n </p>\n </div>\n <div class=\"ax-rounded-md ax-overflow-hidden ax-w-full\">\n <table class=\" ax-table-auto ax-border-collapse ax-w-full ax-border-primary-900 ax-rounded-md\">\n <thead>\n <tr class=\"ax-bg-primary-400 ax-text-on-primary\">\n <!-- Top-left empty cell -->\n <th class=\"ax-border ax-border-primary-900 ax-p-4 ax-min-w-44 ax-font-semibold ax-text-start\">Parent\n \\\n Child</th>\n <!-- Horizontal headers -->\n @for ( type of chartService.types; track $index) {\n <th class=\"ax-border ax-border-primary-900 ax-p-4 ax-min-w-44 ax-text-center ax-font-semibold\">\n {{ type }}\n </th>\n }\n </tr>\n </thead>\n <tbody>\n <!-- For each parent type, render a row with alternating backgrounds -->\n @for ( parent of chartService.types; track $index) {\n <tr>\n <!-- Vertical header cell with custom header colors -->\n <td\n class=\"ax-border ax-border-primary-900 ax-p-4 ax-font-semibold ax-bg-primary-400 ax-text-on-primary ax-text-start\">\n {{ parent }}\n </td>\n <!-- Render a cell for each potential child type -->\n @for ( child of chartService.types; track $index) {\n <td class=\"ax-border ax-border-primary-900 ax-p-2 \">\n <div class=\"ax-flex ax-justify-center ax-cursor-pointer ax-sm\">\n @let isLoading = loadingStates()[parent]?.[child];\n <ax-button look=\"twotone\" [color]=\"chartService.isAllowed(parent, child) ? 'success' : 'danger'\"\n [text]=\"chartService.isAllowed(parent, child) ? 'Allowed' : 'Denied'\" [disabled]=\"isLoading\"\n (onClick)=\"togglePermission(parent, child)\">\n @if(isLoading)\n {\n <ax-loading></ax-loading>\n }\n </ax-button>\n </div>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n <div>\n <ax-alert [color]=\"'warning'\">\n <ax-icon></ax-icon>\n <ax-title>Attention</ax-title>\n <ax-content>\n Changes made here will not update your current organization chart. They will only affect future charts or\n updates.\n </ax-content>\n </ax-alert>\n </div>\n </div>\n\n </axp-layout-content>\n</axp-layout-simple-page>"],"names":["i2","i3","i4","i5"],"mappings":"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"}