@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.
- package/application-management/lib/layouts/module-entity-detail-view/module-entity-detail-view.component.d.ts +2 -2
- package/auth/lib/store/auth.effects.d.ts +2 -2
- package/fesm2022/{acorex-modules-application-management-module-designer.component-kMtkkid-.mjs → acorex-modules-application-management-module-designer.component-DPJ4qpK3.mjs} +4 -4
- package/fesm2022/acorex-modules-application-management-module-designer.component-DPJ4qpK3.mjs.map +1 -0
- package/fesm2022/acorex-modules-application-management.mjs +3 -3
- package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-CcRRSTGN.mjs → acorex-modules-auth-acorex-modules-auth-HwJJs-3A.mjs} +24 -24
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-HwJJs-3A.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-app-chooser.component-BvxMkXPp.mjs +64 -0
- package/fesm2022/acorex-modules-auth-app-chooser.component-BvxMkXPp.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-login.module-ua9uEgUG.mjs → acorex-modules-auth-login.module-CDvLUxls.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-login.module-ua9uEgUG.mjs.map → acorex-modules-auth-login.module-CDvLUxls.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth-master.layout-CnKBnl8W.mjs +23 -0
- package/fesm2022/acorex-modules-auth-master.layout-CnKBnl8W.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-password.component-BVoPZUG9.mjs → acorex-modules-auth-password.component-1FnIjiZ8.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-password.component-BVoPZUG9.mjs.map → acorex-modules-auth-password.component-1FnIjiZ8.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-CIwOjQRh.mjs → acorex-modules-auth-password.component-C16jeHuJ.mjs} +4 -4
- package/fesm2022/acorex-modules-auth-password.component-C16jeHuJ.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-routes-hR3jePok.mjs → acorex-modules-auth-routes-ZDDUhAWd.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-routes-hR3jePok.mjs.map → acorex-modules-auth-routes-ZDDUhAWd.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-setting.provider-GJeEbIRd.mjs → acorex-modules-auth-setting.provider-DDl3OHw6.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-setting.provider-GJeEbIRd.mjs.map → acorex-modules-auth-setting.provider-DDl3OHw6.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth-tenant-chooser.component-CKsbiOUX.mjs +83 -0
- package/fesm2022/acorex-modules-auth-tenant-chooser.component-CKsbiOUX.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-two-factor.module-CKe_H_-u.mjs → acorex-modules-auth-two-factor.module-C32MVGby.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-two-factor.module-CKe_H_-u.mjs.map → acorex-modules-auth-two-factor.module-C32MVGby.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth.mjs +1 -1
- package/fesm2022/acorex-modules-conversation.mjs +4 -4
- package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
- package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-DGGKoVbL.mjs +908 -0
- package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-DGGKoVbL.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-category.entity-BcfMw_wb.mjs → acorex-modules-form-template-management-category.entity-B1X2QyYV.mjs} +2 -2
- 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
- package/fesm2022/acorex-modules-form-template-management-designer.page-BLbPLLdP.mjs.map +1 -1
- package/fesm2022/{acorex-modules-form-template-management-setting.provider-ceq0ZtxA.mjs → acorex-modules-form-template-management-setting.provider-D-HyCbH7.mjs} +2 -2
- 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
- package/fesm2022/acorex-modules-form-template-management-template-picker.component-xiRKc4FF.mjs +126 -0
- package/fesm2022/acorex-modules-form-template-management-template-picker.component-xiRKc4FF.mjs.map +1 -0
- 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
- package/fesm2022/acorex-modules-form-template-management-template-widget-edit.component-CyZLM6M9.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-template.entity-BpApQcvG.mjs → acorex-modules-form-template-management-template.entity-DXIhxJeU.mjs} +2 -2
- package/fesm2022/{acorex-modules-form-template-management-template.entity-BpApQcvG.mjs.map → acorex-modules-form-template-management-template.entity-DXIhxJeU.mjs.map} +1 -1
- package/fesm2022/acorex-modules-form-template-management.mjs +1 -907
- package/fesm2022/acorex-modules-form-template-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-notification-management.mjs +263 -9
- package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-add-item.component-D0tN7Se4.mjs +83 -0
- package/fesm2022/acorex-modules-organization-management-add-item.component-D0tN7Se4.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-managment-branch.entity-kuZxLStS.mjs → acorex-modules-organization-management-branch.entity-CbmnpHl2.mjs} +2 -2
- package/fesm2022/acorex-modules-organization-management-branch.entity-CbmnpHl2.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-managment-chart.entity-BqUE8fbV.mjs → acorex-modules-organization-management-chart.entity-Bk4WgsYr.mjs} +2 -2
- package/fesm2022/acorex-modules-organization-management-chart.entity-Bk4WgsYr.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-managment-company.entity-DJt8tCqO.mjs → acorex-modules-organization-management-company.entity-d7GaCVei.mjs} +2 -2
- package/fesm2022/acorex-modules-organization-management-company.entity-d7GaCVei.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-managment-department.entity-C1PxLx6p.mjs → acorex-modules-organization-management-department.entity-Dl7y4Rva.mjs} +2 -2
- package/fesm2022/acorex-modules-organization-management-department.entity-Dl7y4Rva.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-managment-division.entity-DHVnrP38.mjs → acorex-modules-organization-management-division.entity-Ckmu2Tj9.mjs} +2 -2
- package/fesm2022/acorex-modules-organization-management-division.entity-Ckmu2Tj9.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-managment-employee.entity-D4BSxGAW.mjs → acorex-modules-organization-management-employee.entity-PwlBjkYo.mjs} +2 -2
- package/fesm2022/acorex-modules-organization-management-employee.entity-PwlBjkYo.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-managment-employment-type.entity-Cgbezwio.mjs → acorex-modules-organization-management-employment-type.entity-9aOaYT_-.mjs} +2 -2
- package/fesm2022/acorex-modules-organization-management-employment-type.entity-9aOaYT_-.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management-org-chart-configuration.page-BzjTyYyS.mjs +92 -0
- package/fesm2022/acorex-modules-organization-management-org-chart-configuration.page-BzjTyYyS.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management-org-chart-configuration.service-DObuNZKQ.mjs +145 -0
- package/fesm2022/acorex-modules-organization-management-org-chart-configuration.service-DObuNZKQ.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management-org-chart.page-Cz4ENQRa.mjs +868 -0
- package/fesm2022/acorex-modules-organization-management-org-chart.page-Cz4ENQRa.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-managment-position.entity-Bbb5KAkm.mjs → acorex-modules-organization-management-position.entity-DDkiBefn.mjs} +2 -2
- package/fesm2022/acorex-modules-organization-management-position.entity-DDkiBefn.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-managment-setting.keys-CF6Giykz.mjs → acorex-modules-organization-management-setting.keys-CF6Giykz.mjs} +1 -1
- package/fesm2022/acorex-modules-organization-management-setting.keys-CF6Giykz.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-managment-setting.provider-nKs53GcA.mjs → acorex-modules-organization-management-setting.provider-eLv_qnmE.mjs} +3 -3
- package/fesm2022/acorex-modules-organization-management-setting.provider-eLv_qnmE.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-managment.mjs → acorex-modules-organization-management.mjs} +66 -22
- package/fesm2022/acorex-modules-organization-management.mjs.map +1 -0
- package/fesm2022/acorex-modules-platform-management.mjs +1455 -155
- package/fesm2022/acorex-modules-platform-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-security-management.mjs +12 -1
- package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
- package/form-template-management/index.d.ts +0 -1
- package/form-template-management/lib/features/designer/index.d.ts +5 -0
- package/form-template-management/lib/{services → features/designer}/template.provider.d.ts +1 -1
- package/form-template-management/lib/features/index.d.ts +1 -0
- package/notification-management/lib/entities/channel/channel.types.d.ts +14 -2
- package/organization-management/README.md +3 -0
- package/organization-management/index.d.ts +4 -0
- package/{organization-managment → organization-management}/lib/entities/chart/chart.types.d.ts +10 -5
- package/organization-management/lib/features/index.d.ts +1 -0
- package/organization-management/lib/features/organization-chart/add-item/add-item.component.d.ts +21 -0
- package/organization-management/lib/features/organization-chart/index.d.ts +1 -0
- package/{organization-managment → organization-management}/lib/features/organization-chart/org-chart-configuration.page.d.ts +4 -4
- package/organization-management/lib/features/organization-chart/org-chart-configuration.service.d.ts +25 -0
- package/organization-management/lib/features/organization-chart/org-chart-print.service.d.ts +45 -0
- package/{organization-managment → organization-management}/lib/features/organization-chart/org-chart.page.d.ts +79 -8
- package/organization-management/lib/features/organization-chart/org-chart.service.d.ts +63 -0
- package/organization-management/lib/features/organization-chart/org-chart.type.d.ts +46 -0
- package/{organization-managment/lib/organization-managment.module.d.ts → organization-management/lib/organization-management.module.d.ts} +4 -4
- package/package.json +8 -8
- package/platform-management/lib/const.d.ts +12 -0
- package/platform-management/lib/entities/app-term/components/notify-app/notify-app.component.d.ts +1 -2
- package/platform-management/lib/entities/data-source/coulmn-def.widget.d.ts +56 -0
- package/platform-management/lib/entities/data-source/data-source.entity.d.ts +3 -0
- package/platform-management/lib/entities/data-source/data-source.service.d.ts +10 -0
- package/platform-management/lib/entities/data-source/data-source.types.d.ts +7 -0
- package/platform-management/lib/entities/data-source/datasource-provider.dynamic.d.ts +6 -0
- package/platform-management/lib/entities/data-source/index.d.ts +3 -0
- package/platform-management/lib/entities/index.d.ts +2 -0
- package/platform-management/lib/entities/promotion/components/index.d.ts +1 -0
- package/platform-management/lib/entities/promotion/components/promotion-slot/promotion-slot.component.d.ts +13 -0
- package/platform-management/lib/entities/promotion/index.d.ts +4 -0
- package/platform-management/lib/entities/promotion/promotion.entity.d.ts +3 -0
- package/platform-management/lib/entities/promotion/promotion.service.d.ts +10 -0
- package/platform-management/lib/entities/promotion/promotion.types.d.ts +15 -0
- package/platform-management/lib/platform-management.module.d.ts +2 -1
- package/security-management/index.d.ts +1 -0
- package/security-management/lib/menu.keys.d.ts +5 -0
- package/fesm2022/acorex-modules-application-management-module-designer.component-kMtkkid-.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-CcRRSTGN.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-app-chooser.component-DuRnQda8.mjs +0 -64
- package/fesm2022/acorex-modules-auth-app-chooser.component-DuRnQda8.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-master.layout-KNzdjwP6.mjs +0 -23
- package/fesm2022/acorex-modules-auth-master.layout-KNzdjwP6.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-password.component-CIwOjQRh.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-tenant-chooser.component-Cx3fK__H.mjs +0 -83
- package/fesm2022/acorex-modules-auth-tenant-chooser.component-Cx3fK__H.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-template-picker.component-CG-_1tWi.mjs +0 -126
- package/fesm2022/acorex-modules-form-template-management-template-picker.component-CG-_1tWi.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-template-widget-edit.component-CVyFN7D9.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-managment-branch.entity-kuZxLStS.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-managment-chart.entity-BqUE8fbV.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-managment-company.entity-DJt8tCqO.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-managment-department.entity-C1PxLx6p.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-managment-division.entity-DHVnrP38.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-managment-employee.entity-D4BSxGAW.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-managment-employment-type.entity-Cgbezwio.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-managment-org-chart-configuration.page-Dc6c7GmB.mjs +0 -310
- package/fesm2022/acorex-modules-organization-managment-org-chart-configuration.page-Dc6c7GmB.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-managment-org-chart.page-CTHNSn2n.mjs +0 -505
- package/fesm2022/acorex-modules-organization-managment-org-chart.page-CTHNSn2n.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-managment-position.entity-Bbb5KAkm.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-managment-setting.keys-CF6Giykz.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-managment-setting.provider-nKs53GcA.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-managment.mjs.map +0 -1
- package/organization-managment/README.md +0 -3
- package/organization-managment/index.d.ts +0 -3
- package/organization-managment/lib/features/organization-chart/org-chart-print.service.d.ts +0 -22
- package/organization-managment/lib/features/organization-chart/org-chart.service.d.ts +0 -35
- package/organization-managment/lib/features/organization-chart/org-chart.type.d.ts +0 -25
- /package/form-template-management/lib/{services → features/designer}/designer-connector.service.d.ts +0 -0
- /package/form-template-management/lib/{pages → features}/designer/designer.page.d.ts +0 -0
- /package/form-template-management/lib/{components → features/designer}/widgets/template/index.d.ts +0 -0
- /package/form-template-management/lib/{components → features/designer}/widgets/template/template-widget-designer.component.d.ts +0 -0
- /package/form-template-management/lib/{components → features/designer}/widgets/template/template-widget-edit.component.d.ts +0 -0
- /package/form-template-management/lib/{components → features/designer}/widgets/template/template-widget-view.component.d.ts +0 -0
- /package/form-template-management/lib/{components → features/designer}/widgets/template/template-widget.config.d.ts +0 -0
- /package/form-template-management/lib/{components → features/designer}/widgets/template-designer/index.d.ts +0 -0
- /package/form-template-management/lib/{components → features/designer}/widgets/template-designer/template-designer-widget-view.component.d.ts +0 -0
- /package/form-template-management/lib/{components → features/designer}/widgets/template-designer/template-designer-widget.config.d.ts +0 -0
- /package/form-template-management/lib/{components → features/designer}/widgets/template-picker/template-picker.component.d.ts +0 -0
- /package/form-template-management/lib/{components → features/designer}/widgets/template-picker/template.provider.d.ts +0 -0
- /package/form-template-management/lib/{workflows → features/designer/workflows}/create-template.workflow.d.ts +0 -0
- /package/form-template-management/lib/{workflows → features/designer/workflows}/design-template.workflow.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/const.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/branch/branch.entity.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/branch/branch.module.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/branch/branch.service.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/branch/branch.types.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/branch/index.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/chart/chart.entity.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/chart/chart.module.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/chart/chart.service.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/chart/index.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/company/company.entity.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/company/company.module.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/company/company.service.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/company/company.types.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/company/index.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/department/department.entity.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/department/department.module.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/department/department.service.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/department/department.types.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/department/index.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/division/division.entity.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/division/division.module.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/division/division.service.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/division/division.types.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/division/index.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/employee/employee.entity.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/employee/employee.module.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/employee/employee.service.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/employee/employee.types.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/employee/index.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/employment-type/employment-type.entity.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/employment-type/employment-type.module.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/employment-type/employment-type.service.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/employment-type/employment-type.types.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/employment-type/index.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/index.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/position/index.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/position/position.entity.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/position/position.module.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/position/position.service.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entities/position/position.types.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/entity.provider.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/menu.provider.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/setting.keys.d.ts +0 -0
- /package/{organization-managment → organization-management}/lib/setting.provider.d.ts +0 -0
package/fesm2022/acorex-modules-organization-managment-org-chart-configuration.page-Dc6c7GmB.mjs
DELETED
@@ -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
|
package/fesm2022/acorex-modules-organization-managment-org-chart-configuration.page-Dc6c7GmB.mjs.map
DELETED
@@ -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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"}
|