@acorex/modules 20.2.4-next.2 → 20.2.4-next.5
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/common/index.d.ts +19 -1
- package/conversation/index.d.ts +1 -0
- package/customer-management/index.d.ts +167 -0
- package/document-management/index.d.ts +99 -13
- package/fesm2022/acorex-modules-application-management.mjs +24 -214
- package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-common.mjs +2695 -1288
- package/fesm2022/acorex-modules-common.mjs.map +1 -1
- package/fesm2022/acorex-modules-conversation.mjs +46 -29
- package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
- package/fesm2022/acorex-modules-customer-management-acorex-modules-customer-management-DZBixdOT.mjs +700 -0
- package/fesm2022/acorex-modules-customer-management-acorex-modules-customer-management-DZBixdOT.mjs.map +1 -0
- package/fesm2022/acorex-modules-customer-management-activity.entity-By32mnXN.mjs +98 -0
- package/fesm2022/acorex-modules-customer-management-activity.entity-By32mnXN.mjs.map +1 -0
- package/fesm2022/acorex-modules-customer-management-customer-segment.entity-CjFYqTMc.mjs +83 -0
- package/fesm2022/acorex-modules-customer-management-customer-segment.entity-CjFYqTMc.mjs.map +1 -0
- package/fesm2022/acorex-modules-customer-management-customer-type.entity-Bk_Ng_DS.mjs +95 -0
- package/fesm2022/acorex-modules-customer-management-customer-type.entity-Bk_Ng_DS.mjs.map +1 -0
- package/fesm2022/acorex-modules-customer-management-customer.entity-rUNC9glL.mjs +338 -0
- package/fesm2022/acorex-modules-customer-management-customer.entity-rUNC9glL.mjs.map +1 -0
- package/fesm2022/acorex-modules-customer-management-deal-contact-role.entity-BWX44lzi.mjs +147 -0
- package/fesm2022/acorex-modules-customer-management-deal-contact-role.entity-BWX44lzi.mjs.map +1 -0
- package/fesm2022/acorex-modules-customer-management-lead.entity-B3gv0YnT.mjs +97 -0
- package/fesm2022/acorex-modules-customer-management-lead.entity-B3gv0YnT.mjs.map +1 -0
- package/fesm2022/acorex-modules-customer-management-lifecycle-stage.entity-cs1hb_Ro.mjs +72 -0
- package/fesm2022/acorex-modules-customer-management-lifecycle-stage.entity-cs1hb_Ro.mjs.map +1 -0
- package/fesm2022/acorex-modules-customer-management-opportunity-stage.entity-C-opdmDW.mjs +72 -0
- package/fesm2022/acorex-modules-customer-management-opportunity-stage.entity-C-opdmDW.mjs.map +1 -0
- package/fesm2022/acorex-modules-customer-management-opportunity.entity-D5n_4xgK.mjs +188 -0
- package/fesm2022/acorex-modules-customer-management-opportunity.entity-D5n_4xgK.mjs.map +1 -0
- package/fesm2022/acorex-modules-customer-management-sales-pipeline.entity-AeLhcil2.mjs +72 -0
- package/fesm2022/acorex-modules-customer-management-sales-pipeline.entity-AeLhcil2.mjs.map +1 -0
- package/fesm2022/acorex-modules-customer-management-sales-territory.entity-uK9N7p_k.mjs +72 -0
- package/fesm2022/acorex-modules-customer-management-sales-territory.entity-uK9N7p_k.mjs.map +1 -0
- package/fesm2022/acorex-modules-customer-management.mjs +2 -0
- package/fesm2022/acorex-modules-customer-management.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-DG7QxbqI.mjs → acorex-modules-document-management-acorex-modules-document-management-BraIQGrY.mjs} +1439 -429
- package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-BraIQGrY.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-tk2f6GPy.mjs → acorex-modules-document-management-attachment-widget.component-Dp1ioMjR.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-tk2f6GPy.mjs.map → acorex-modules-document-management-attachment-widget.component-Dp1ioMjR.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-DJ-BBmR2.mjs → acorex-modules-document-management-create-folder-dialog.component-C1Lvxwwf.mjs} +4 -4
- package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-DJ-BBmR2.mjs.map → acorex-modules-document-management-create-folder-dialog.component-C1Lvxwwf.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-details-view.component-CX10ubfL.mjs → acorex-modules-document-management-details-view.component-C7x2n-uL.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-details-view.component-CX10ubfL.mjs.map → acorex-modules-document-management-details-view.component-C7x2n-uL.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-document-distribution-popup.component-DB4JJ3w7.mjs → acorex-modules-document-management-document-distribution-popup.component-BFL8zeml.mjs} +4 -4
- package/fesm2022/acorex-modules-document-management-document-distribution-popup.component-BFL8zeml.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-document-send-to-review-popup.component-CtpLvPIr.mjs → acorex-modules-document-management-document-send-to-review-popup.component-CoymgoD7.mjs} +4 -4
- package/fesm2022/acorex-modules-document-management-document-send-to-review-popup.component-CoymgoD7.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-document-signature-popup.component-CMUZSL2S.mjs → acorex-modules-document-management-document-signature-popup.component-DJMLGeBo.mjs} +4 -4
- package/fesm2022/{acorex-modules-document-management-document-signature-popup.component-CMUZSL2S.mjs.map → acorex-modules-document-management-document-signature-popup.component-DJMLGeBo.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-DOxdrJh-.mjs → acorex-modules-document-management-drive-choose.component-BiApSZ5Z.mjs} +4 -4
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-DOxdrJh-.mjs.map → acorex-modules-document-management-drive-choose.component-BiApSZ5Z.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-drive.component-Crt-i9Xe.mjs → acorex-modules-document-management-drive.component-C3LZf1EE.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-drive.component-Crt-i9Xe.mjs.map → acorex-modules-document-management-drive.component-C3LZf1EE.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-DLds0iA6.mjs → acorex-modules-document-management-large-icons-view.component-CUox2dHw.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-DLds0iA6.mjs.map → acorex-modules-document-management-large-icons-view.component-CUox2dHw.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-DELo5m5s.mjs → acorex-modules-document-management-large-tiles-view.component-CPaqX_Gj.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-DELo5m5s.mjs.map → acorex-modules-document-management-large-tiles-view.component-CPaqX_Gj.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-list-view.component-DsR96OWz.mjs → acorex-modules-document-management-list-view.component-DHR1nZii.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-list-view.component-DsR96OWz.mjs.map → acorex-modules-document-management-list-view.component-DHR1nZii.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-meta-choose-popup.component-BbPbZmkc.mjs → acorex-modules-document-management-meta-choose-popup.component-DXTdVhrh.mjs} +3 -3
- package/fesm2022/{acorex-modules-document-management-meta-choose-popup.component-BbPbZmkc.mjs.map → acorex-modules-document-management-meta-choose-popup.component-DXTdVhrh.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-permission-definition.provider-DiXt_BzX.mjs → acorex-modules-document-management-permission-definition.provider-SLETM1r-.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-permission-definition.provider-DiXt_BzX.mjs.map → acorex-modules-document-management-permission-definition.provider-SLETM1r-.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-CNeHhc0E.mjs → acorex-modules-document-management-rename-node-dialog.component-CLkMT7A9.mjs} +4 -4
- package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-CNeHhc0E.mjs.map → acorex-modules-document-management-rename-node-dialog.component-CLkMT7A9.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-D9AIIBMz.mjs → acorex-modules-document-management-small-icons-view.component-DFxM61cD.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-D9AIIBMz.mjs.map → acorex-modules-document-management-small-icons-view.component-DFxM61cD.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-HpEgcH1F.mjs → acorex-modules-document-management-small-tiles-view.component-DhzxwNEY.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-HpEgcH1F.mjs.map → acorex-modules-document-management-small-tiles-view.component-DhzxwNEY.mjs.map} +1 -1
- package/fesm2022/acorex-modules-document-management.mjs +1 -1
- package/fesm2022/{acorex-modules-form-template-management-acorex-modules-form-template-management-COVNekIY.mjs → acorex-modules-form-template-management-acorex-modules-form-template-management-BhU14Qou.mjs} +9 -9
- package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-BhU14Qou.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-permission-definition.provider-BEkbbQH2.mjs → acorex-modules-form-template-management-permission-definition.provider-D4lGFRCA.mjs} +2 -2
- package/fesm2022/{acorex-modules-form-template-management-permission-definition.provider-BEkbbQH2.mjs.map → acorex-modules-form-template-management-permission-definition.provider-D4lGFRCA.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-settings.provider-DSI7cmrW.mjs → acorex-modules-form-template-management-settings.provider-499Y4rLb.mjs} +2 -2
- package/fesm2022/{acorex-modules-form-template-management-settings.provider-DSI7cmrW.mjs.map → acorex-modules-form-template-management-settings.provider-499Y4rLb.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-template-picker.component-5n_kQMuQ.mjs → acorex-modules-form-template-management-template-picker.component-2EkzMuIy.mjs} +2 -2
- package/fesm2022/acorex-modules-form-template-management-template-picker.component-2EkzMuIy.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-template-widget-edit.component-BtCYeGB-.mjs → acorex-modules-form-template-management-template-widget-edit.component-DwgbgFrf.mjs} +2 -2
- package/fesm2022/acorex-modules-form-template-management-template-widget-edit.component-DwgbgFrf.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-template.entity-Cm-AVAF_.mjs → acorex-modules-form-template-management-template.entity-D_14HgMr.mjs} +85 -87
- package/fesm2022/acorex-modules-form-template-management-template.entity-D_14HgMr.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-viewer-popup.component-C8TC42DL.mjs → acorex-modules-form-template-management-viewer-popup.component-BLgx_xby.mjs} +2 -2
- package/fesm2022/{acorex-modules-form-template-management-viewer-popup.component-C8TC42DL.mjs.map → acorex-modules-form-template-management-viewer-popup.component-BLgx_xby.mjs.map} +1 -1
- package/fesm2022/acorex-modules-form-template-management.mjs +1 -1
- package/fesm2022/{acorex-modules-help-desk-acorex-modules-help-desk-hH3VgxdE.mjs → acorex-modules-help-desk-acorex-modules-help-desk-BvDYd3fI.mjs} +19 -79
- package/fesm2022/acorex-modules-help-desk-acorex-modules-help-desk-BvDYd3fI.mjs.map +1 -0
- package/fesm2022/{acorex-modules-help-desk-capture-screen.component-ae64BzbL.mjs → acorex-modules-help-desk-capture-screen.component-DH_FG8iE.mjs} +4 -4
- package/fesm2022/{acorex-modules-help-desk-capture-screen.component-ae64BzbL.mjs.map → acorex-modules-help-desk-capture-screen.component-DH_FG8iE.mjs.map} +1 -1
- package/fesm2022/acorex-modules-help-desk.mjs +1 -1
- package/fesm2022/acorex-modules-human-capital-management-acorex-modules-human-capital-management-1PmjMC7i.mjs +444 -0
- package/fesm2022/acorex-modules-human-capital-management-acorex-modules-human-capital-management-1PmjMC7i.mjs.map +1 -0
- package/fesm2022/acorex-modules-human-capital-management-employee-skill.entity-DyOHJWW_.mjs +153 -0
- package/fesm2022/acorex-modules-human-capital-management-employee-skill.entity-DyOHJWW_.mjs.map +1 -0
- package/fesm2022/acorex-modules-human-capital-management-employee.entity-5J-FoLiT.mjs +160 -0
- package/fesm2022/acorex-modules-human-capital-management-employee.entity-5J-FoLiT.mjs.map +1 -0
- package/fesm2022/acorex-modules-human-capital-management-employment-type.entity-DFpRtSOh.mjs +97 -0
- package/fesm2022/acorex-modules-human-capital-management-employment-type.entity-DFpRtSOh.mjs.map +1 -0
- package/fesm2022/acorex-modules-human-capital-management-position-assignment.entity-DuNvJq-k.mjs +196 -0
- package/fesm2022/acorex-modules-human-capital-management-position-assignment.entity-DuNvJq-k.mjs.map +1 -0
- package/fesm2022/acorex-modules-human-capital-management-settings.provider-rRaBaVeh.mjs +17 -0
- package/fesm2022/acorex-modules-human-capital-management-settings.provider-rRaBaVeh.mjs.map +1 -0
- package/fesm2022/acorex-modules-human-capital-management-skill-level.entity-0ZzRent7.mjs +52 -0
- package/fesm2022/acorex-modules-human-capital-management-skill-level.entity-0ZzRent7.mjs.map +1 -0
- package/fesm2022/acorex-modules-human-capital-management-skill.entity-Dd7p11vj.mjs +82 -0
- package/fesm2022/acorex-modules-human-capital-management-skill.entity-Dd7p11vj.mjs.map +1 -0
- package/fesm2022/acorex-modules-human-capital-management.mjs +2 -0
- package/fesm2022/acorex-modules-human-capital-management.mjs.map +1 -0
- package/fesm2022/acorex-modules-identifier-management.mjs +2 -1
- package/fesm2022/acorex-modules-identifier-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-log-management.mjs +282 -31
- package/fesm2022/acorex-modules-log-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-meeting-management-meeting-publish-popup.component-PcBFprq3.mjs → acorex-modules-meeting-management-meeting-publish-popup.component-BKZy7M-X.mjs} +2 -2
- package/fesm2022/acorex-modules-meeting-management-meeting-publish-popup.component-BKZy7M-X.mjs.map +1 -0
- package/fesm2022/acorex-modules-meeting-management.mjs +33 -7
- package/fesm2022/acorex-modules-meeting-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-organization-management-role.entity-BdjgFsgo.mjs → acorex-modules-organization-management-branch.entity-bajoE99c.mjs} +106 -43
- package/fesm2022/acorex-modules-organization-management-branch.entity-bajoE99c.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-skill.entity-O1453j6I.mjs → acorex-modules-organization-management-department.entity-BkEbajpN.mjs} +94 -41
- package/fesm2022/acorex-modules-organization-management-department.entity-BkEbajpN.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-division.entity-DdX7LcCU.mjs → acorex-modules-organization-management-division.entity-Cds8jkR5.mjs} +165 -128
- package/fesm2022/acorex-modules-organization-management-division.entity-Cds8jkR5.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-org-chart.page-DxVm1V4w.mjs → acorex-modules-organization-management-org-chart.page-5fHaWyGW.mjs} +5 -3
- package/fesm2022/acorex-modules-organization-management-org-chart.page-5fHaWyGW.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-employment-type.entity-Dw3TLMtD.mjs → acorex-modules-organization-management-position.entity-DK-i78ck.mjs} +18 -7
- package/fesm2022/acorex-modules-organization-management-position.entity-DK-i78ck.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-position.entity-DT7EyvrR.mjs → acorex-modules-organization-management-role.entity-Cz8VrdMl.mjs} +11 -26
- package/fesm2022/acorex-modules-organization-management-role.entity-Cz8VrdMl.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-team.entity-DkRLWl0u.mjs → acorex-modules-organization-management-team.entity-CNYXXHM7.mjs} +16 -14
- package/fesm2022/acorex-modules-organization-management-team.entity-CNYXXHM7.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management.mjs +90 -425
- package/fesm2022/acorex-modules-organization-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-party-management-acorex-modules-party-management-BFyD7IcC.mjs → acorex-modules-party-management-acorex-modules-party-management-DJNXviBH.mjs} +43 -7
- package/fesm2022/acorex-modules-party-management-acorex-modules-party-management-DJNXviBH.mjs.map +1 -0
- package/fesm2022/acorex-modules-party-management-industry.entity-D01GclFe.mjs +91 -0
- package/fesm2022/acorex-modules-party-management-industry.entity-D01GclFe.mjs.map +1 -0
- package/fesm2022/{acorex-modules-party-management-party-identifier-type.entity-BYsWpup7.mjs → acorex-modules-party-management-party-identifier-type.entity-DoXx0nyF.mjs} +2 -2
- package/fesm2022/{acorex-modules-party-management-party-identifier-type.entity-BYsWpup7.mjs.map → acorex-modules-party-management-party-identifier-type.entity-DoXx0nyF.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-party-management-party-identifier.entity-DSn4lsX-.mjs → acorex-modules-party-management-party-identifier.entity-_tLoTcUC.mjs} +2 -2
- package/fesm2022/{acorex-modules-party-management-party-identifier.entity-DSn4lsX-.mjs.map → acorex-modules-party-management-party-identifier.entity-_tLoTcUC.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-party-management-party-relationship.entity-BG5zuKPH.mjs → acorex-modules-party-management-party-relationship.entity-B-hI_r6b.mjs} +2 -2
- package/fesm2022/{acorex-modules-party-management-party-relationship.entity-BG5zuKPH.mjs.map → acorex-modules-party-management-party-relationship.entity-B-hI_r6b.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-party-management-party-role.entity-jCTZL0mT.mjs → acorex-modules-party-management-party-role.entity-Dxs6yXKd.mjs} +7 -3
- package/fesm2022/acorex-modules-party-management-party-role.entity-Dxs6yXKd.mjs.map +1 -0
- package/fesm2022/{acorex-modules-party-management-party.entity-BwAAZRJc.mjs → acorex-modules-party-management-party.entity-BFEy4rXT.mjs} +88 -25
- package/fesm2022/acorex-modules-party-management-party.entity-BFEy4rXT.mjs.map +1 -0
- package/fesm2022/acorex-modules-party-management.mjs +1 -1
- package/fesm2022/acorex-modules-project-management.mjs +1 -1
- package/fesm2022/acorex-modules-project-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-report-management.mjs +293 -160
- package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-security-management.mjs +32 -77
- package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-task-management-task-board.page-BBbHu2jz.mjs → acorex-modules-task-management-task-board.page-zbl3g-sI.mjs} +67 -59
- package/fesm2022/acorex-modules-task-management-task-board.page-zbl3g-sI.mjs.map +1 -0
- package/fesm2022/acorex-modules-task-management.mjs +284 -152
- package/fesm2022/acorex-modules-task-management.mjs.map +1 -1
- package/form-template-management/index.d.ts +1 -1
- package/human-capital-management/index.d.ts +97 -0
- package/identifier-management/index.d.ts +1 -1
- package/organization-management/index.d.ts +81 -159
- package/package.json +9 -1
- package/party-management/index.d.ts +7 -0
- package/report-management/index.d.ts +234 -231
- package/task-management/index.d.ts +3 -1
- package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-DG7QxbqI.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-document-distribution-popup.component-DB4JJ3w7.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-document-send-to-review-popup.component-CtpLvPIr.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-COVNekIY.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-template-picker.component-5n_kQMuQ.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-template-widget-edit.component-BtCYeGB-.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-template.entity-Cm-AVAF_.mjs.map +0 -1
- package/fesm2022/acorex-modules-help-desk-acorex-modules-help-desk-hH3VgxdE.mjs.map +0 -1
- package/fesm2022/acorex-modules-meeting-management-meeting-publish-popup.component-PcBFprq3.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-branch.entity-B_CYwiX9.mjs +0 -537
- package/fesm2022/acorex-modules-organization-management-branch.entity-B_CYwiX9.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-department.entity-BbBrK4BN.mjs +0 -481
- package/fesm2022/acorex-modules-organization-management-department.entity-BbBrK4BN.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-division.entity-DdX7LcCU.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-employee.entity-DJH02MJJ.mjs +0 -670
- package/fesm2022/acorex-modules-organization-management-employee.entity-DJH02MJJ.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-employment-type.entity-Dw3TLMtD.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-org-chart.page-DxVm1V4w.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-position.entity-DT7EyvrR.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-role.entity-BdjgFsgo.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-skill.entity-O1453j6I.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-team.entity-DkRLWl0u.mjs.map +0 -1
- package/fesm2022/acorex-modules-party-management-acorex-modules-party-management-BFyD7IcC.mjs.map +0 -1
- package/fesm2022/acorex-modules-party-management-party-role.entity-jCTZL0mT.mjs.map +0 -1
- package/fesm2022/acorex-modules-party-management-party.entity-BwAAZRJc.mjs.map +0 -1
- package/fesm2022/acorex-modules-task-management-task-board.page-BBbHu2jz.mjs.map +0 -1
|
@@ -3,26 +3,27 @@ import { createAllQueryView, AXPEntityCommandScope, AXPEntityQueryType, AXPLockS
|
|
|
3
3
|
import { AXPDomainModule, provideEntity } from '@acorex/platform/domain';
|
|
4
4
|
import { AXPRootLayoutComponent } from '@acorex/platform/themes/default';
|
|
5
5
|
import * as i0 from '@angular/core';
|
|
6
|
-
import { InjectionToken, inject, Injectable, NgModule, computed,
|
|
6
|
+
import { InjectionToken, inject, Injectable, NgModule, computed, effect, signal, ChangeDetectionStrategy, Component, viewChild, ViewEncapsulation, input } from '@angular/core';
|
|
7
7
|
import { ROUTES, ActivatedRoute, Router } from '@angular/router';
|
|
8
8
|
import { AXPQueryService, AXPCommandService } from '@acorex/platform/runtime';
|
|
9
9
|
import { AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER, getSystemActions, applySystemActionDefault } from '@acorex/platform/core';
|
|
10
10
|
import * as i1 from '@acorex/platform/workflow';
|
|
11
11
|
import { AXPWorkflowAction, AXPWorkflowModule } from '@acorex/platform/workflow';
|
|
12
12
|
import { AXDataSource } from '@acorex/cdk/common';
|
|
13
|
-
import * as i1$
|
|
13
|
+
import * as i1$1 from '@acorex/core/translation';
|
|
14
14
|
import { AXTranslationService, AXTranslationModule } from '@acorex/core/translation';
|
|
15
15
|
import { AXMDataSourceService } from '@acorex/modules/data-management';
|
|
16
16
|
import * as i2 from '@acorex/platform/layout/builder';
|
|
17
17
|
import { AXPWidgetsCatalog, AXPPageStatus, AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';
|
|
18
18
|
import { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';
|
|
19
19
|
import { AXPopupService } from '@acorex/components/popup';
|
|
20
|
-
import { signalStore, withState, withComputed, withMethods, patchState, withHooks } from '@ngrx/signals';
|
|
21
|
-
import { AXLocaleService } from '@acorex/core/locale';
|
|
22
20
|
import * as i2$1 from '@acorex/components/button';
|
|
23
21
|
import { AXButtonModule } from '@acorex/components/button';
|
|
24
22
|
import * as i3 from '@acorex/components/decorators';
|
|
25
23
|
import { AXDecoratorModule } from '@acorex/components/decorators';
|
|
24
|
+
import * as i5 from '@acorex/components/dropdown';
|
|
25
|
+
import { AXDropdownModule } from '@acorex/components/dropdown';
|
|
26
|
+
import { AXDropdownButtonModule } from '@acorex/components/dropdown-button';
|
|
26
27
|
import { AXLoadingModule } from '@acorex/components/loading';
|
|
27
28
|
import { AXUnsubscriber } from '@acorex/core/utils';
|
|
28
29
|
import { AXPDynamicFormComponent, AXPThemeLayoutStartSideComponent, AXPThemeLayoutHeaderComponent, AXPThemeLayoutBlockComponent, AXPThemeLayoutFooterComponent } from '@acorex/platform/layout/components';
|
|
@@ -30,13 +31,14 @@ import { AXPPageLayoutBaseComponent, AXPPageLayoutComponent, AXPPageLayoutBase }
|
|
|
30
31
|
import { AXPLayoutThemeService } from '@acorex/platform/themes/shared';
|
|
31
32
|
import * as i1$2 from '@angular/common';
|
|
32
33
|
import { CommonModule } from '@angular/common';
|
|
33
|
-
import
|
|
34
|
-
import {
|
|
35
|
-
import {
|
|
34
|
+
import { signalStore, withState, withComputed, withMethods, patchState, withHooks } from '@ngrx/signals';
|
|
35
|
+
import { AXLocaleService } from '@acorex/core/locale';
|
|
36
|
+
import { AXBarChartComponent } from '@acorex/charts/bar-chart';
|
|
36
37
|
import { AXChartLegendComponent } from '@acorex/charts/chart-legend';
|
|
37
|
-
import {
|
|
38
|
-
import
|
|
39
|
-
import
|
|
38
|
+
import { AXDonutChartComponent } from '@acorex/charts/donut-chart';
|
|
39
|
+
import { AXLineChartComponent } from '@acorex/charts/line-chart';
|
|
40
|
+
import * as i1$3 from '@acorex/components/data-table';
|
|
41
|
+
import { AXDataTableModule } from '@acorex/components/data-table';
|
|
40
42
|
|
|
41
43
|
const config = {
|
|
42
44
|
i18n: 'report-management',
|
|
@@ -302,22 +304,40 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
|
|
|
302
304
|
}]
|
|
303
305
|
}] });
|
|
304
306
|
|
|
305
|
-
function AXPBarChartReportMapper(data, options) {
|
|
306
|
-
return data.map((item) => {
|
|
307
|
-
return {
|
|
308
|
-
id: item.id,
|
|
309
|
-
label: item[options.xField],
|
|
310
|
-
value: Array.isArray(options.yFields) ? item[options.yFields[0]] : item[options.yFields]
|
|
311
|
-
};
|
|
312
|
-
});
|
|
313
|
-
}
|
|
314
307
|
function AXPieChartReportMapper(data) {
|
|
315
308
|
return Object.entries(data).map(([key, value]) => ({
|
|
316
309
|
id: key,
|
|
317
310
|
label: key,
|
|
318
|
-
value: value
|
|
311
|
+
value: value,
|
|
319
312
|
}));
|
|
320
313
|
}
|
|
314
|
+
function AXBarChartReportMapper(data) {
|
|
315
|
+
return Object.entries(data).map(([key, value]) => ({
|
|
316
|
+
id: key,
|
|
317
|
+
label: key,
|
|
318
|
+
value: value,
|
|
319
|
+
}));
|
|
320
|
+
}
|
|
321
|
+
function AXLineChartReportMapper(data) {
|
|
322
|
+
const entries = Object.entries(data);
|
|
323
|
+
if (entries.length === 0) {
|
|
324
|
+
return [];
|
|
325
|
+
}
|
|
326
|
+
const dataPoints = entries.map(([key, value]) => ({
|
|
327
|
+
x: key,
|
|
328
|
+
y: value,
|
|
329
|
+
}));
|
|
330
|
+
return [
|
|
331
|
+
{
|
|
332
|
+
id: 'series-1',
|
|
333
|
+
label: 'Data Series',
|
|
334
|
+
tooltipLabel: 'Countries Info',
|
|
335
|
+
lineColor: '#d81159',
|
|
336
|
+
fillColor: '#d8115920',
|
|
337
|
+
data: dataPoints,
|
|
338
|
+
},
|
|
339
|
+
];
|
|
340
|
+
}
|
|
321
341
|
|
|
322
342
|
class AXMReportDefinitionProvider {
|
|
323
343
|
constructor() {
|
|
@@ -1498,8 +1518,12 @@ const AXPReportViewerViewModel = signalStore(withState(() => ({
|
|
|
1498
1518
|
const executeReport = async () => {
|
|
1499
1519
|
const report = store.reportDefinition();
|
|
1500
1520
|
const layout = store.currentLayout();
|
|
1501
|
-
if (!report || !layout)
|
|
1521
|
+
if (!report || !layout) {
|
|
1522
|
+
patchState(store, {
|
|
1523
|
+
error: 'Report or layout not found',
|
|
1524
|
+
});
|
|
1502
1525
|
return;
|
|
1526
|
+
}
|
|
1503
1527
|
patchState(store, {
|
|
1504
1528
|
status: AXPPageStatus.Submitting,
|
|
1505
1529
|
error: null
|
|
@@ -1684,6 +1708,120 @@ const AXPReportViewerViewModel = signalStore(withState(() => ({
|
|
|
1684
1708
|
}
|
|
1685
1709
|
})));
|
|
1686
1710
|
|
|
1711
|
+
class AXPReportChartViewComponent {
|
|
1712
|
+
constructor() {
|
|
1713
|
+
//#region ---- Dependencies ----
|
|
1714
|
+
this.vm = inject(AXPReportViewerViewModel);
|
|
1715
|
+
this.AXPPageStatus = AXPPageStatus;
|
|
1716
|
+
//#endregion
|
|
1717
|
+
//#region ---- Computed Properties ----
|
|
1718
|
+
/**
|
|
1719
|
+
* Current chart layout configuration
|
|
1720
|
+
*/
|
|
1721
|
+
this.chartLayout = computed(() => {
|
|
1722
|
+
const layout = this.vm.currentLayout();
|
|
1723
|
+
return layout?.layout.type === 'chart' ? layout.layout : null;
|
|
1724
|
+
}, ...(ngDevMode ? [{ debugName: "chartLayout" }] : []));
|
|
1725
|
+
/**
|
|
1726
|
+
* Chart configuration options
|
|
1727
|
+
*/
|
|
1728
|
+
this.chartOptions = computed(() => {
|
|
1729
|
+
const chartLayout = this.chartLayout();
|
|
1730
|
+
return chartLayout?.options || null;
|
|
1731
|
+
}, ...(ngDevMode ? [{ debugName: "chartOptions" }] : []));
|
|
1732
|
+
/**
|
|
1733
|
+
* Chart type for rendering
|
|
1734
|
+
*/
|
|
1735
|
+
this.chartType = computed(() => {
|
|
1736
|
+
const options = this.chartOptions();
|
|
1737
|
+
return options?.chartType || 'bar';
|
|
1738
|
+
}, ...(ngDevMode ? [{ debugName: "chartType" }] : []));
|
|
1739
|
+
/**
|
|
1740
|
+
* Data mapping configuration
|
|
1741
|
+
*/
|
|
1742
|
+
this.dataMapping = computed(() => {
|
|
1743
|
+
const options = this.chartOptions();
|
|
1744
|
+
return options?.dataMapping || null;
|
|
1745
|
+
}, ...(ngDevMode ? [{ debugName: "dataMapping" }] : []));
|
|
1746
|
+
//#endregion
|
|
1747
|
+
//#region ---- Effects ----
|
|
1748
|
+
/**
|
|
1749
|
+
* Effect to fetch chart data when conditions are met
|
|
1750
|
+
*/
|
|
1751
|
+
this.#fetchData = effect(() => {
|
|
1752
|
+
if (this.vm.allowFetchData() && this.chartOptions()) {
|
|
1753
|
+
this.vm.fetchData().then((data) => {
|
|
1754
|
+
const raw = ((data?.data).data ?? {});
|
|
1755
|
+
switch (this.chartType()) {
|
|
1756
|
+
case 'bar': {
|
|
1757
|
+
const v = AXBarChartReportMapper(raw);
|
|
1758
|
+
this.barChartData.set(v);
|
|
1759
|
+
break;
|
|
1760
|
+
}
|
|
1761
|
+
case 'doughnut': {
|
|
1762
|
+
const v = AXPieChartReportMapper(raw);
|
|
1763
|
+
this.donutChartData.set(v);
|
|
1764
|
+
break;
|
|
1765
|
+
}
|
|
1766
|
+
case 'line':
|
|
1767
|
+
default: {
|
|
1768
|
+
const v = AXLineChartReportMapper(raw);
|
|
1769
|
+
this.lineChartData.set(v);
|
|
1770
|
+
break;
|
|
1771
|
+
}
|
|
1772
|
+
}
|
|
1773
|
+
});
|
|
1774
|
+
}
|
|
1775
|
+
}, ...(ngDevMode ? [{ debugName: "#fetchData" }] : []));
|
|
1776
|
+
this.legendOptions = signal({
|
|
1777
|
+
mode: 'vertical',
|
|
1778
|
+
className: 'ax-h-72',
|
|
1779
|
+
}, ...(ngDevMode ? [{ debugName: "legendOptions" }] : []));
|
|
1780
|
+
this.barChartData = signal([], ...(ngDevMode ? [{ debugName: "barChartData" }] : []));
|
|
1781
|
+
this.barChartOptions = signal({}, ...(ngDevMode ? [{ debugName: "barChartOptions" }] : []));
|
|
1782
|
+
this.donutChartData = signal([], ...(ngDevMode ? [{ debugName: "donutChartData" }] : []));
|
|
1783
|
+
this.donutChartOptions = computed(() => {
|
|
1784
|
+
return {
|
|
1785
|
+
totalLabel: 'Total',
|
|
1786
|
+
showTooltip: true,
|
|
1787
|
+
showDataLabels: this.donutChartData().length <= 10,
|
|
1788
|
+
};
|
|
1789
|
+
}, ...(ngDevMode ? [{ debugName: "donutChartOptions" }] : []));
|
|
1790
|
+
this.lineChartData = signal([], ...(ngDevMode ? [{ debugName: "lineChartData" }] : []));
|
|
1791
|
+
this.lineChartOptions = signal({}, ...(ngDevMode ? [{ debugName: "lineChartOptions" }] : []));
|
|
1792
|
+
}
|
|
1793
|
+
//#endregion
|
|
1794
|
+
//#region ---- Effects ----
|
|
1795
|
+
/**
|
|
1796
|
+
* Effect to fetch chart data when conditions are met
|
|
1797
|
+
*/
|
|
1798
|
+
#fetchData;
|
|
1799
|
+
//#endregion
|
|
1800
|
+
//#region ---- Helper Methods ----
|
|
1801
|
+
/**
|
|
1802
|
+
* Check if chart is ready to render
|
|
1803
|
+
*/
|
|
1804
|
+
isChartReady() {
|
|
1805
|
+
return !!(this.chartOptions() && this.dataMapping());
|
|
1806
|
+
}
|
|
1807
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPReportChartViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1808
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: AXPReportChartViewComponent, isStandalone: true, selector: "axp-report-chart-view", host: { classAttribute: "axp-report-chart-view ax-w-full ax-h-full ax-flex ax-flex-col" }, ngImport: i0, template: "<ng-container *translate=\"let t\">\n @if (vm.status() === AXPPageStatus.Processing) {\n <!-- Loading State -->\n <div class=\"__loading ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-gap-6 ax-p-8\">\n <div class=\"ax-spinner ax-spin ax-w-10 ax-h-10\"></div>\n <div class=\"__loading-text ax-text-sm ax-opacity-70\">\n {{ t('@report-management:features.report-viewer.loading.chart') | async }}\n </div>\n </div>\n } @else if (vm.status() === AXPPageStatus.Error) {\n <!-- Error State -->\n <div class=\"__error ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-gap-6 ax-p-8\">\n <div class=\"__error-icon ax-text-5xl ax-text-danger\">\n <i class=\"fa-light fa-exclamation-triangle\"></i>\n </div>\n <div class=\"__error-content ax-max-w-lg ax-text-center\">\n <h4 class=\"__error-title ax-text-xl ax-font-semibold ax-mb-3\">\n {{ t('@report-management:features.report-viewer.error.title') | async }}\n </h4>\n <p class=\"__error-description ax-opacity-70 ax-leading-relaxed\">\n {{ vm.error() || (t('@report-management:features.report-viewer.error.generic') | async) }}\n </p>\n </div>\n </div>\n } @else if (isChartReady()) {\n <!-- Chart Content -->\n <section\n class=\"__chart-container ax-overflow-auto md:ax-overflow-hidden ax-rounded-2xl ax-border ax-h-full ax-flex ax-flex-col\">\n @if (chartLayout()?.header) {\n <header\n class=\"__chart-header ax-p-4 md:ax-p-6 ax-border-b ax-flex ax-flex-col sm:ax-flex-row ax-gap-2 sm:ax-items-center sm:ax-justify-between\">\n <h3 class=\"__chart-title ax-text-base md:ax-text-lg ax-font-semibold ax-truncate\">\n {{ chartLayout()?.header?.title }}\n </h3>\n @if (chartLayout()?.header?.showDate) {\n <div class=\"__chart-date ax-text-xs md:ax-text-sm ax-opacity-70 ax-font-medium ax-flex-shrink-0\">\n {{ 'common.date.today' | translate | async }}\n </div>\n }\n </header>\n }\n\n <div class=\"__chart-body ax-flex-1 ax-p-3 md:ax-p-6\">\n <div class=\"__chart-wrapper ax-h-full ax-items-center ax-flex ax-flex-col ax-gap-4 lg:ax-gap-6\" [class]=\"\n legendOptions().mode === 'horizontal'\n ? 'ax-flex-col ax-gap-4'\n : 'ax-flex-col lg:ax-flex-row ax-gap-4 lg:ax-gap-6'\n \">\n @switch (chartType()) {\n @case ('bar') {\n <div\n class=\"__chart-content ax-flex-1 ax-h-full ax-min-h-[250px] md:ax-min-h-[300px] ax-flex ax-items-center ax-justify-center ax-w-full ax-overflow-hidden\">\n <ax-bar-chart #barChart [data]=\"barChartData()\" [options]=\"barChartOptions()\"></ax-bar-chart>\n </div>\n <div class=\"__chart-legend ax-w-fit ax-flex-shrink-0\">\n <ax-chart-legend [options]=\"legendOptions()\" [chart]=\"barChart\"></ax-chart-legend>\n </div>\n }\n @case ('doughnut') {\n <div\n class=\"__chart-content ax-flex-1 ax-h-full ax-min-h-[250px] md:ax-min-h-[300px] ax-flex ax-items-center ax-justify-center ax-w-full ax-overflow-hidden\">\n <ax-donut-chart #donutChart [data]=\"donutChartData()\" [options]=\"donutChartOptions()\"></ax-donut-chart>\n </div>\n <div class=\"__chart-legend ax-w-fit ax-flex-shrink-0\">\n <ax-chart-legend [options]=\"legendOptions()\" [chart]=\"donutChart\"></ax-chart-legend>\n </div>\n }\n @default {\n <div\n class=\"__chart-content ax-flex-1 ax-h-full ax-min-h-[250px] md:ax-min-h-[300px] ax-flex ax-items-center ax-justify-center ax-w-full ax-overflow-hidden\">\n <ax-line-chart #lineChart [data]=\"lineChartData()\" [options]=\"lineChartOptions()\"></ax-line-chart>\n </div>\n <div class=\"__chart-legend ax-w-fit ax-flex-shrink-0\">\n <ax-chart-legend [options]=\"legendOptions()\" [chart]=\"lineChart\"></ax-chart-legend>\n </div>\n }\n }\n </div>\n </div>\n\n @if (chartLayout()?.footer) {\n <footer class=\"__chart-footer ax-p-4 md:ax-p-6 ax-border-t\">\n @if (chartLayout()?.footer?.customHtml) {\n <div [innerHTML]=\"chartLayout()?.footer?.customHtml\"></div>\n }\n </footer>\n }\n </section>\n } @else {\n <!-- No Configuration State -->\n <div class=\"__no-config ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-gap-6 ax-p-8\">\n <div class=\"__no-config-icon ax-w-16 ax-h-16 ax-rounded-full ax-flex ax-items-center ax-justify-center\">\n <i class=\"fa-light fa-chart-line ax-text-2xl ax-opacity-60\"></i>\n </div>\n <div class=\"__no-config-content ax-max-w-lg ax-text-center\">\n <h4 class=\"__no-config-title ax-text-xl ax-font-semibold ax-mb-3\">\n {{ t('@report-management:features.report-viewer.chart.no-config.title') | async }}\n </h4>\n <p class=\"__no-config-description ax-opacity-70 ax-leading-relaxed\">\n {{ t('@report-management:features.report-viewer.chart.no-config.description') | async }}\n </p>\n </div>\n </div>\n }\n</ng-container>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i1$1.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "component", type: AXBarChartComponent, selector: "ax-bar-chart", inputs: ["data", "options"], outputs: ["barClick"] }, { kind: "component", type: AXDonutChartComponent, selector: "ax-donut-chart", inputs: ["data", "options"], outputs: ["segmentClick", "segmentHover"] }, { kind: "component", type: AXLineChartComponent, selector: "ax-line-chart", inputs: ["data", "options"], outputs: ["pointClick"] }, { kind: "component", type: AXChartLegendComponent, selector: "ax-chart-legend", inputs: ["chart", "options"], outputs: ["itemClick", "itemMouseEnter", "itemMouseLeave"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1809
|
+
}
|
|
1810
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPReportChartViewComponent, decorators: [{
|
|
1811
|
+
type: Component,
|
|
1812
|
+
args: [{ selector: 'axp-report-chart-view', imports: [
|
|
1813
|
+
CommonModule,
|
|
1814
|
+
AXTranslationModule,
|
|
1815
|
+
AXPLayoutBuilderModule,
|
|
1816
|
+
AXBarChartComponent,
|
|
1817
|
+
AXDonutChartComponent,
|
|
1818
|
+
AXLineChartComponent,
|
|
1819
|
+
AXChartLegendComponent,
|
|
1820
|
+
], host: {
|
|
1821
|
+
class: 'axp-report-chart-view ax-w-full ax-h-full ax-flex ax-flex-col',
|
|
1822
|
+
}, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *translate=\"let t\">\n @if (vm.status() === AXPPageStatus.Processing) {\n <!-- Loading State -->\n <div class=\"__loading ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-gap-6 ax-p-8\">\n <div class=\"ax-spinner ax-spin ax-w-10 ax-h-10\"></div>\n <div class=\"__loading-text ax-text-sm ax-opacity-70\">\n {{ t('@report-management:features.report-viewer.loading.chart') | async }}\n </div>\n </div>\n } @else if (vm.status() === AXPPageStatus.Error) {\n <!-- Error State -->\n <div class=\"__error ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-gap-6 ax-p-8\">\n <div class=\"__error-icon ax-text-5xl ax-text-danger\">\n <i class=\"fa-light fa-exclamation-triangle\"></i>\n </div>\n <div class=\"__error-content ax-max-w-lg ax-text-center\">\n <h4 class=\"__error-title ax-text-xl ax-font-semibold ax-mb-3\">\n {{ t('@report-management:features.report-viewer.error.title') | async }}\n </h4>\n <p class=\"__error-description ax-opacity-70 ax-leading-relaxed\">\n {{ vm.error() || (t('@report-management:features.report-viewer.error.generic') | async) }}\n </p>\n </div>\n </div>\n } @else if (isChartReady()) {\n <!-- Chart Content -->\n <section\n class=\"__chart-container ax-overflow-auto md:ax-overflow-hidden ax-rounded-2xl ax-border ax-h-full ax-flex ax-flex-col\">\n @if (chartLayout()?.header) {\n <header\n class=\"__chart-header ax-p-4 md:ax-p-6 ax-border-b ax-flex ax-flex-col sm:ax-flex-row ax-gap-2 sm:ax-items-center sm:ax-justify-between\">\n <h3 class=\"__chart-title ax-text-base md:ax-text-lg ax-font-semibold ax-truncate\">\n {{ chartLayout()?.header?.title }}\n </h3>\n @if (chartLayout()?.header?.showDate) {\n <div class=\"__chart-date ax-text-xs md:ax-text-sm ax-opacity-70 ax-font-medium ax-flex-shrink-0\">\n {{ 'common.date.today' | translate | async }}\n </div>\n }\n </header>\n }\n\n <div class=\"__chart-body ax-flex-1 ax-p-3 md:ax-p-6\">\n <div class=\"__chart-wrapper ax-h-full ax-items-center ax-flex ax-flex-col ax-gap-4 lg:ax-gap-6\" [class]=\"\n legendOptions().mode === 'horizontal'\n ? 'ax-flex-col ax-gap-4'\n : 'ax-flex-col lg:ax-flex-row ax-gap-4 lg:ax-gap-6'\n \">\n @switch (chartType()) {\n @case ('bar') {\n <div\n class=\"__chart-content ax-flex-1 ax-h-full ax-min-h-[250px] md:ax-min-h-[300px] ax-flex ax-items-center ax-justify-center ax-w-full ax-overflow-hidden\">\n <ax-bar-chart #barChart [data]=\"barChartData()\" [options]=\"barChartOptions()\"></ax-bar-chart>\n </div>\n <div class=\"__chart-legend ax-w-fit ax-flex-shrink-0\">\n <ax-chart-legend [options]=\"legendOptions()\" [chart]=\"barChart\"></ax-chart-legend>\n </div>\n }\n @case ('doughnut') {\n <div\n class=\"__chart-content ax-flex-1 ax-h-full ax-min-h-[250px] md:ax-min-h-[300px] ax-flex ax-items-center ax-justify-center ax-w-full ax-overflow-hidden\">\n <ax-donut-chart #donutChart [data]=\"donutChartData()\" [options]=\"donutChartOptions()\"></ax-donut-chart>\n </div>\n <div class=\"__chart-legend ax-w-fit ax-flex-shrink-0\">\n <ax-chart-legend [options]=\"legendOptions()\" [chart]=\"donutChart\"></ax-chart-legend>\n </div>\n }\n @default {\n <div\n class=\"__chart-content ax-flex-1 ax-h-full ax-min-h-[250px] md:ax-min-h-[300px] ax-flex ax-items-center ax-justify-center ax-w-full ax-overflow-hidden\">\n <ax-line-chart #lineChart [data]=\"lineChartData()\" [options]=\"lineChartOptions()\"></ax-line-chart>\n </div>\n <div class=\"__chart-legend ax-w-fit ax-flex-shrink-0\">\n <ax-chart-legend [options]=\"legendOptions()\" [chart]=\"lineChart\"></ax-chart-legend>\n </div>\n }\n }\n </div>\n </div>\n\n @if (chartLayout()?.footer) {\n <footer class=\"__chart-footer ax-p-4 md:ax-p-6 ax-border-t\">\n @if (chartLayout()?.footer?.customHtml) {\n <div [innerHTML]=\"chartLayout()?.footer?.customHtml\"></div>\n }\n </footer>\n }\n </section>\n } @else {\n <!-- No Configuration State -->\n <div class=\"__no-config ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-gap-6 ax-p-8\">\n <div class=\"__no-config-icon ax-w-16 ax-h-16 ax-rounded-full ax-flex ax-items-center ax-justify-center\">\n <i class=\"fa-light fa-chart-line ax-text-2xl ax-opacity-60\"></i>\n </div>\n <div class=\"__no-config-content ax-max-w-lg ax-text-center\">\n <h4 class=\"__no-config-title ax-text-xl ax-font-semibold ax-mb-3\">\n {{ t('@report-management:features.report-viewer.chart.no-config.title') | async }}\n </h4>\n <p class=\"__no-config-description ax-opacity-70 ax-leading-relaxed\">\n {{ t('@report-management:features.report-viewer.chart.no-config.description') | async }}\n </p>\n </div>\n </div>\n }\n</ng-container>" }]
|
|
1823
|
+
}] });
|
|
1824
|
+
|
|
1687
1825
|
class AXPReportTableViewComponent {
|
|
1688
1826
|
constructor() {
|
|
1689
1827
|
//#region ---- Dependencies ----
|
|
@@ -1788,7 +1926,7 @@ class AXPReportTableViewComponent {
|
|
|
1788
1926
|
};
|
|
1789
1927
|
}
|
|
1790
1928
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPReportTableViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1791
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: AXPReportTableViewComponent, isStandalone: true, selector: "axp-report-table-view", viewQueries: [{ propertyName: "grid", first: true, predicate: ["grid"], descendants: true, isSignal: true }], ngImport: i0, template: "<ax-data-table\n #grid\n [dataSource]=\"dataSource\"\n [paging]=\"true\"\n (onRowDbClick)=\"handleDbRowClick($event)\"\n class=\"ax-flex-1\"\n>\n <!-- Dynamic columns based on configuration -->\n <ax-index-column fixed=\"start\" [width]=\"'80px'\" [padZero]=\"true\"></ax-index-column>\n @if (vm.canSelectRows()) {\n <ax-select-column fixed=\"start\" [width]=\"'50px'\"></ax-select-column>\n }\n @for (column of columns(); track column.field) {\n @if (column.visible) {\n <axp-widget-column-renderer\n [customWidth]=\"column.width + 'px'\"\n [caption]=\"(column.title | translate | async)!\"\n [node]=\"column.widget!\"\n ></axp-widget-column-renderer>\n }\n }\n @if (hasPrimaryRowAction()) {\n <ax-command-column\n fixed=\"end\"\n [width]=\"'100px'\"\n [items]=\"primaryRowAction()\"\n (onItemClick)=\"handleRowClick($event)\"\n ></ax-command-column>\n }\n @if (hasSecondaryRowAction()) {\n <ax-dropdown-command-column\n fixed=\"end\"\n [width]=\"'60px'\"\n [items]=\"secondaryRowAction()\"\n (onItemClick)=\"handleRowClick($event)\"\n ></ax-dropdown-command-column>\n }\n</ax-data-table>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXDataTableModule }, { kind: "component", type: i1$
|
|
1929
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: AXPReportTableViewComponent, isStandalone: true, selector: "axp-report-table-view", viewQueries: [{ propertyName: "grid", first: true, predicate: ["grid"], descendants: true, isSignal: true }], ngImport: i0, template: "<ax-data-table\n #grid\n [dataSource]=\"dataSource\"\n [paging]=\"true\"\n (onRowDbClick)=\"handleDbRowClick($event)\"\n class=\"ax-flex-1\"\n>\n <!-- Dynamic columns based on configuration -->\n <ax-index-column fixed=\"start\" [width]=\"'80px'\" [padZero]=\"true\"></ax-index-column>\n @if (vm.canSelectRows()) {\n <ax-select-column fixed=\"start\" [width]=\"'50px'\"></ax-select-column>\n }\n @for (column of columns(); track column.field) {\n @if (column.visible) {\n <axp-widget-column-renderer\n [customWidth]=\"column.width + 'px'\"\n [caption]=\"(column.title | translate | async)!\"\n [node]=\"column.widget!\"\n ></axp-widget-column-renderer>\n }\n }\n @if (hasPrimaryRowAction()) {\n <ax-command-column\n fixed=\"end\"\n [width]=\"'100px'\"\n [items]=\"primaryRowAction()\"\n (onItemClick)=\"handleRowClick($event)\"\n ></ax-command-column>\n }\n @if (hasSecondaryRowAction()) {\n <ax-dropdown-command-column\n fixed=\"end\"\n [width]=\"'60px'\"\n [items]=\"secondaryRowAction()\"\n (onItemClick)=\"handleRowClick($event)\"\n ></ax-dropdown-command-column>\n }\n</ax-data-table>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXDataTableModule }, { kind: "component", type: i1$3.AXDataTableComponent, selector: "ax-data-table", inputs: ["dataSource", "selectedRows", "parentField", "rowTemplate", "emptyTemplate", "noDataTemplate", "alternative", "showHeader", "fixedHeader", "showFooter", "fixedFooter", "itemHeight", "allowReordering", "paging", "fetchDataMode", "loading", "focusedRow"], outputs: ["selectedRowsChange", "focusedRowChange", "onRowClick", "onRowDbClick", "onColumnsOrderChanged", "onColumnSizeChanged", "onPageChanged"] }, { kind: "component", type: i1$3.AXRowIndexColumnComponent, selector: "ax-index-column", inputs: ["width", "caption", "fixed", "footerTemplate", "padZero"] }, { kind: "component", type: i1$3.AXRowSelectColumnComponent, selector: "ax-select-column", inputs: ["width", "caption", "fixed"] }, { kind: "component", type: i1$3.AXRowCommandColumnComponent, selector: "ax-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "items"], outputs: ["onItemClick"] }, { kind: "component", type: i1$3.AXRowDropdownCommandColumnComponent, selector: "ax-dropdown-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "component", type: i2.AXPWidgetColumnRendererComponent, selector: "axp-widget-column-renderer", inputs: ["caption", "customExpandIcon", "customCollapseIcon", "customWidth", "node", "footerTemplate", "expandHandler", "cellTemplate", "headerTemplate"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1792
1930
|
}
|
|
1793
1931
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPReportTableViewComponent, decorators: [{
|
|
1794
1932
|
type: Component,
|
|
@@ -1802,127 +1940,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
|
|
|
1802
1940
|
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<ax-data-table\n #grid\n [dataSource]=\"dataSource\"\n [paging]=\"true\"\n (onRowDbClick)=\"handleDbRowClick($event)\"\n class=\"ax-flex-1\"\n>\n <!-- Dynamic columns based on configuration -->\n <ax-index-column fixed=\"start\" [width]=\"'80px'\" [padZero]=\"true\"></ax-index-column>\n @if (vm.canSelectRows()) {\n <ax-select-column fixed=\"start\" [width]=\"'50px'\"></ax-select-column>\n }\n @for (column of columns(); track column.field) {\n @if (column.visible) {\n <axp-widget-column-renderer\n [customWidth]=\"column.width + 'px'\"\n [caption]=\"(column.title | translate | async)!\"\n [node]=\"column.widget!\"\n ></axp-widget-column-renderer>\n }\n }\n @if (hasPrimaryRowAction()) {\n <ax-command-column\n fixed=\"end\"\n [width]=\"'100px'\"\n [items]=\"primaryRowAction()\"\n (onItemClick)=\"handleRowClick($event)\"\n ></ax-command-column>\n }\n @if (hasSecondaryRowAction()) {\n <ax-dropdown-command-column\n fixed=\"end\"\n [width]=\"'60px'\"\n [items]=\"secondaryRowAction()\"\n (onItemClick)=\"handleRowClick($event)\"\n ></ax-dropdown-command-column>\n }\n</ax-data-table>\n" }]
|
|
1803
1941
|
}] });
|
|
1804
1942
|
|
|
1805
|
-
class AXPReportChartViewComponent {
|
|
1806
|
-
constructor() {
|
|
1807
|
-
//#region ---- Dependencies ----
|
|
1808
|
-
this.vm = inject(AXPReportViewerViewModel);
|
|
1809
|
-
this.AXPPageStatus = AXPPageStatus;
|
|
1810
|
-
//#endregion
|
|
1811
|
-
//#region ---- Computed Properties ----
|
|
1812
|
-
/**
|
|
1813
|
-
* Current chart layout configuration
|
|
1814
|
-
*/
|
|
1815
|
-
this.chartLayout = computed(() => {
|
|
1816
|
-
const layout = this.vm.currentLayout();
|
|
1817
|
-
return layout?.layout.type === 'chart'
|
|
1818
|
-
? layout.layout
|
|
1819
|
-
: null;
|
|
1820
|
-
}, ...(ngDevMode ? [{ debugName: "chartLayout" }] : []));
|
|
1821
|
-
/**
|
|
1822
|
-
* Chart configuration options
|
|
1823
|
-
*/
|
|
1824
|
-
this.chartOptions = computed(() => {
|
|
1825
|
-
const chartLayout = this.chartLayout();
|
|
1826
|
-
return chartLayout?.options || null;
|
|
1827
|
-
}, ...(ngDevMode ? [{ debugName: "chartOptions" }] : []));
|
|
1828
|
-
/**
|
|
1829
|
-
* Chart type for rendering
|
|
1830
|
-
*/
|
|
1831
|
-
this.chartType = computed(() => {
|
|
1832
|
-
const options = this.chartOptions();
|
|
1833
|
-
return options?.chartType || 'bar';
|
|
1834
|
-
}, ...(ngDevMode ? [{ debugName: "chartType" }] : []));
|
|
1835
|
-
/**
|
|
1836
|
-
* Data mapping configuration
|
|
1837
|
-
*/
|
|
1838
|
-
this.dataMapping = computed(() => {
|
|
1839
|
-
const options = this.chartOptions();
|
|
1840
|
-
return options?.dataMapping || null;
|
|
1841
|
-
}, ...(ngDevMode ? [{ debugName: "dataMapping" }] : []));
|
|
1842
|
-
//#endregion
|
|
1843
|
-
//#region ---- Effects ----
|
|
1844
|
-
/**
|
|
1845
|
-
* Effect to handle data fetching when chart configuration changes
|
|
1846
|
-
*/
|
|
1847
|
-
this.#fetchData = effect(() => {
|
|
1848
|
-
if (this.vm.allowFetchData() && this.chartOptions()) {
|
|
1849
|
-
// TODO: Implement chart data fetching
|
|
1850
|
-
console.log('Chart data fetch triggered', {
|
|
1851
|
-
chartType: this.chartType(),
|
|
1852
|
-
dataMapping: this.dataMapping()
|
|
1853
|
-
});
|
|
1854
|
-
this.vm.fetchData().then((data) => {
|
|
1855
|
-
const donutChartData = AXPieChartReportMapper((data?.data).data ?? {});
|
|
1856
|
-
this.donutChartData.set(donutChartData);
|
|
1857
|
-
console.log('donutChartData', donutChartData);
|
|
1858
|
-
});
|
|
1859
|
-
}
|
|
1860
|
-
}, ...(ngDevMode ? [{ debugName: "#fetchData" }] : []));
|
|
1861
|
-
this.donutChartData = signal([], ...(ngDevMode ? [{ debugName: "donutChartData" }] : []));
|
|
1862
|
-
this.donutChartOptions = signal({
|
|
1863
|
-
totalLabel: 'Total',
|
|
1864
|
-
showTooltip: true
|
|
1865
|
-
}, ...(ngDevMode ? [{ debugName: "donutChartOptions" }] : []));
|
|
1866
|
-
this.legendOptions = signal({
|
|
1867
|
-
mode: 'horizontal',
|
|
1868
|
-
}, ...(ngDevMode ? [{ debugName: "legendOptions" }] : []));
|
|
1869
|
-
}
|
|
1870
|
-
//#endregion
|
|
1871
|
-
//#region ---- Effects ----
|
|
1872
|
-
/**
|
|
1873
|
-
* Effect to handle data fetching when chart configuration changes
|
|
1874
|
-
*/
|
|
1875
|
-
#fetchData;
|
|
1876
|
-
//#endregion
|
|
1877
|
-
//#region ---- Event Handlers ----
|
|
1878
|
-
/**
|
|
1879
|
-
* Handle chart click events
|
|
1880
|
-
*/
|
|
1881
|
-
handleChartClick(event) {
|
|
1882
|
-
// TODO: Implement chart click handling
|
|
1883
|
-
console.log('Chart clicked:', event);
|
|
1884
|
-
}
|
|
1885
|
-
/**
|
|
1886
|
-
* Handle chart data point selection
|
|
1887
|
-
*/
|
|
1888
|
-
handleDataPointSelect(event) {
|
|
1889
|
-
// TODO: Implement data point selection
|
|
1890
|
-
console.log('Data point selected:', event);
|
|
1891
|
-
}
|
|
1892
|
-
//#endregion
|
|
1893
|
-
//#region ---- Helper Methods ----
|
|
1894
|
-
/**
|
|
1895
|
-
* Check if chart is ready to render
|
|
1896
|
-
*/
|
|
1897
|
-
isChartReady() {
|
|
1898
|
-
return !!(this.chartOptions() && this.dataMapping());
|
|
1899
|
-
}
|
|
1900
|
-
/**
|
|
1901
|
-
* Get chart configuration for rendering
|
|
1902
|
-
*/
|
|
1903
|
-
getChartConfig() {
|
|
1904
|
-
// TODO: Transform AXPReportChartOptions to chart library format
|
|
1905
|
-
return {
|
|
1906
|
-
type: this.chartType(),
|
|
1907
|
-
options: this.chartOptions(),
|
|
1908
|
-
dataMapping: this.dataMapping()
|
|
1909
|
-
};
|
|
1910
|
-
}
|
|
1911
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPReportChartViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1912
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: AXPReportChartViewComponent, isStandalone: true, selector: "axp-report-chart-view", ngImport: i0, template: "<div class=\"axp-report-chart-view\" *translate=\"let t\">\n @if (vm.status() === AXPPageStatus.Processing) {\n <!-- Loading State -->\n <div class=\"__loading\">\n <div\n class=\"ax-spinner ax-spin ax-border-4 ax-border-gray-200 ax-border-t-primary ax-rounded-full ax-w-12 ax-h-12\"\n ></div>\n <div class=\"__loading-text\">\n {{ t('@report-management:features.report-viewer.loading.chart') | async }}\n </div>\n </div>\n } @else if (vm.status() === AXPPageStatus.Error) {\n <!-- Error State -->\n <div class=\"__error\">\n <div class=\"__error-icon\">\n <i class=\"fa-light fa-exclamation-triangle\"></i>\n </div>\n <div class=\"__error-content\">\n <h4 class=\"__error-title\">\n {{ t('@report-management:features.report-viewer.error.title') | async }}\n </h4>\n <p class=\"__error-description\">\n {{ vm.error() || t('@report-management:features.report-viewer.error.generic') | async }}\n </p>\n </div>\n </div>\n } @else if (isChartReady()) {\n <!-- Chart Content -->\n <div class=\"__chart-container\">\n @if (chartLayout()?.header) {\n <div class=\"__chart-header\">\n <h3 class=\"__chart-title\">{{ chartLayout()?.header?.title }}</h3>\n @if (chartLayout()?.header?.showDate) {\n <div class=\"__chart-date\">{{ 'common.date.today' | translate | async }}</div>\n }\n </div>\n }\n\n <div class=\"__chart-body\">\n <!-- Chart component will be rendered here -->\n <div class=\"__chart-placeholder\">\n <div class=\"__placeholder-content\">\n <div\n class=\"ax-flex ax-flex-wrap ax-items-center ax-justify-center ax-gap-10\"\n [class]=\"legendOptions().mode === 'horizontal' ? 'ax-flex-col' : 'ax-flex-row'\"\n >\n <!-- Chart Area -->\n <div class=\"ax-flex-0 ax-size-96\">\n <ax-donut-chart #chart [data]=\"donutChartData()\" [options]=\"donutChartOptions()\"></ax-donut-chart>\n </div>\n <!-- Legend Area -->\n @if (donutChartData().length > 0) {\n <div>\n <ax-chart-legend [options]=\"legendOptions()\" [chart]=\"chart\"></ax-chart-legend>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n\n @if (chartLayout()?.footer) {\n <div class=\"__chart-footer\">\n @if (chartLayout()?.footer?.customHtml) {\n <div [innerHTML]=\"chartLayout()?.footer?.customHtml\"></div>\n }\n </div>\n }\n </div>\n } @else {\n <!-- No Configuration State -->\n <div class=\"__no-config\">\n <div class=\"__no-config-icon\">\n <i class=\"fa-light fa-chart-line\"></i>\n </div>\n <div class=\"__no-config-content\">\n <h4 class=\"__no-config-title\">\n {{ t('@report-management:features.report-viewer.chart.no-config.title') | async }}\n </h4>\n <p class=\"__no-config-description\">\n {{ t('@report-management:features.report-viewer.chart.no-config.description') | async }}\n </p>\n </div>\n </div>\n }\n</div>\n", styles: [".axp-report-chart-view{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-chart-view .__loading{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:2rem}.axp-report-chart-view .__loading .__loading-text{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-chart-view .__chart-container .__chart-header{border-bottom-width:1px;--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem}.axp-report-chart-view .__chart-container .__chart-header .__chart-title{margin:0;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__chart-container .__chart-header .__chart-date{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container .__chart-body{flex:1 1 0%;overflow:hidden}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1.5rem;text-align:center}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-icon{font-size:3.75rem;line-height:1;color:rgba(var(--ax-sys-color-primary-500),.2)}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content{max-width:28rem}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content .__placeholder-title{margin-bottom:.5rem;font-size:1.25rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content .__placeholder-description{margin-bottom:1rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container .__chart-body .__chart-content{height:100%;width:100%}.axp-report-chart-view .__chart-container .__chart-footer{border-top-width:1px;--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__error{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1rem;text-align:center}.axp-report-chart-view .__error .__error-icon{font-size:2.25rem;line-height:2.5rem;--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__error .__error-content{max-width:28rem}.axp-report-chart-view .__error .__error-content .__error-title{margin-bottom:.5rem;font-size:1.125rem;line-height:1.75rem;font-weight:600;--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__error .__error-content .__error-description{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__no-config{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1rem;text-align:center}.axp-report-chart-view .__no-config .__no-config-icon{font-size:2.25rem;line-height:2.5rem;--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__no-config .__no-config-content{max-width:28rem}.axp-report-chart-view .__no-config .__no-config-content .__no-config-title{margin-bottom:.5rem;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__no-config .__no-config-content .__no-config-description{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i1$3.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "component", type: AXDonutChartComponent, selector: "ax-donut-chart", inputs: ["data", "options"], outputs: ["segmentClick", "segmentHover"] }, { kind: "component", type: AXChartLegendComponent, selector: "ax-chart-legend", inputs: ["chart", "options"], outputs: ["itemClick", "itemMouseEnter", "itemMouseLeave"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$3.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1913
|
-
}
|
|
1914
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPReportChartViewComponent, decorators: [{
|
|
1915
|
-
type: Component,
|
|
1916
|
-
args: [{ selector: 'axp-report-chart-view', standalone: true, imports: [
|
|
1917
|
-
CommonModule,
|
|
1918
|
-
AXDecoratorModule,
|
|
1919
|
-
AXTranslationModule,
|
|
1920
|
-
AXPLayoutBuilderModule,
|
|
1921
|
-
AXDonutChartComponent,
|
|
1922
|
-
AXChartLegendComponent
|
|
1923
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"axp-report-chart-view\" *translate=\"let t\">\n @if (vm.status() === AXPPageStatus.Processing) {\n <!-- Loading State -->\n <div class=\"__loading\">\n <div\n class=\"ax-spinner ax-spin ax-border-4 ax-border-gray-200 ax-border-t-primary ax-rounded-full ax-w-12 ax-h-12\"\n ></div>\n <div class=\"__loading-text\">\n {{ t('@report-management:features.report-viewer.loading.chart') | async }}\n </div>\n </div>\n } @else if (vm.status() === AXPPageStatus.Error) {\n <!-- Error State -->\n <div class=\"__error\">\n <div class=\"__error-icon\">\n <i class=\"fa-light fa-exclamation-triangle\"></i>\n </div>\n <div class=\"__error-content\">\n <h4 class=\"__error-title\">\n {{ t('@report-management:features.report-viewer.error.title') | async }}\n </h4>\n <p class=\"__error-description\">\n {{ vm.error() || t('@report-management:features.report-viewer.error.generic') | async }}\n </p>\n </div>\n </div>\n } @else if (isChartReady()) {\n <!-- Chart Content -->\n <div class=\"__chart-container\">\n @if (chartLayout()?.header) {\n <div class=\"__chart-header\">\n <h3 class=\"__chart-title\">{{ chartLayout()?.header?.title }}</h3>\n @if (chartLayout()?.header?.showDate) {\n <div class=\"__chart-date\">{{ 'common.date.today' | translate | async }}</div>\n }\n </div>\n }\n\n <div class=\"__chart-body\">\n <!-- Chart component will be rendered here -->\n <div class=\"__chart-placeholder\">\n <div class=\"__placeholder-content\">\n <div\n class=\"ax-flex ax-flex-wrap ax-items-center ax-justify-center ax-gap-10\"\n [class]=\"legendOptions().mode === 'horizontal' ? 'ax-flex-col' : 'ax-flex-row'\"\n >\n <!-- Chart Area -->\n <div class=\"ax-flex-0 ax-size-96\">\n <ax-donut-chart #chart [data]=\"donutChartData()\" [options]=\"donutChartOptions()\"></ax-donut-chart>\n </div>\n <!-- Legend Area -->\n @if (donutChartData().length > 0) {\n <div>\n <ax-chart-legend [options]=\"legendOptions()\" [chart]=\"chart\"></ax-chart-legend>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n\n @if (chartLayout()?.footer) {\n <div class=\"__chart-footer\">\n @if (chartLayout()?.footer?.customHtml) {\n <div [innerHTML]=\"chartLayout()?.footer?.customHtml\"></div>\n }\n </div>\n }\n </div>\n } @else {\n <!-- No Configuration State -->\n <div class=\"__no-config\">\n <div class=\"__no-config-icon\">\n <i class=\"fa-light fa-chart-line\"></i>\n </div>\n <div class=\"__no-config-content\">\n <h4 class=\"__no-config-title\">\n {{ t('@report-management:features.report-viewer.chart.no-config.title') | async }}\n </h4>\n <p class=\"__no-config-description\">\n {{ t('@report-management:features.report-viewer.chart.no-config.description') | async }}\n </p>\n </div>\n </div>\n }\n</div>\n", styles: [".axp-report-chart-view{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-chart-view .__loading{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:2rem}.axp-report-chart-view .__loading .__loading-text{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-chart-view .__chart-container .__chart-header{border-bottom-width:1px;--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem}.axp-report-chart-view .__chart-container .__chart-header .__chart-title{margin:0;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__chart-container .__chart-header .__chart-date{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container .__chart-body{flex:1 1 0%;overflow:hidden}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1.5rem;text-align:center}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-icon{font-size:3.75rem;line-height:1;color:rgba(var(--ax-sys-color-primary-500),.2)}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content{max-width:28rem}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content .__placeholder-title{margin-bottom:.5rem;font-size:1.25rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content .__placeholder-description{margin-bottom:1rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container .__chart-body .__chart-content{height:100%;width:100%}.axp-report-chart-view .__chart-container .__chart-footer{border-top-width:1px;--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__error{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1rem;text-align:center}.axp-report-chart-view .__error .__error-icon{font-size:2.25rem;line-height:2.5rem;--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__error .__error-content{max-width:28rem}.axp-report-chart-view .__error .__error-content .__error-title{margin-bottom:.5rem;font-size:1.125rem;line-height:1.75rem;font-weight:600;--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__error .__error-content .__error-description{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__no-config{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1rem;text-align:center}.axp-report-chart-view .__no-config .__no-config-icon{font-size:2.25rem;line-height:2.5rem;--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__no-config .__no-config-content{max-width:28rem}.axp-report-chart-view .__no-config .__no-config-content .__no-config-title{margin-bottom:.5rem;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__no-config .__no-config-content .__no-config-description{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}\n"] }]
|
|
1924
|
-
}] });
|
|
1925
|
-
|
|
1926
1943
|
class AXPReportViewerPageComponent extends AXPPageLayoutBaseComponent {
|
|
1927
1944
|
constructor() {
|
|
1928
1945
|
super(...arguments);
|
|
@@ -1930,7 +1947,6 @@ class AXPReportViewerPageComponent extends AXPPageLayoutBaseComponent {
|
|
|
1930
1947
|
this.layoutService = inject(AXPLayoutThemeService);
|
|
1931
1948
|
this.route = inject(ActivatedRoute);
|
|
1932
1949
|
this.router = inject(Router);
|
|
1933
|
-
this.reportDefinitionService = inject(AXPReportDefinitionService);
|
|
1934
1950
|
this.unsubscriber = inject(AXUnsubscriber);
|
|
1935
1951
|
//#endregion
|
|
1936
1952
|
//#region ---- Inputs ----
|
|
@@ -1952,16 +1968,16 @@ class AXPReportViewerPageComponent extends AXPPageLayoutBaseComponent {
|
|
|
1952
1968
|
positions: {
|
|
1953
1969
|
default: { colSpan: 12 },
|
|
1954
1970
|
md: { colSpan: 6 },
|
|
1955
|
-
lg: { colSpan: 12 }
|
|
1956
|
-
}
|
|
1971
|
+
lg: { colSpan: 12 },
|
|
1972
|
+
},
|
|
1957
1973
|
});
|
|
1958
1974
|
this.compactLayout = () => ({
|
|
1959
1975
|
positions: {
|
|
1960
1976
|
default: { colSpan: 12 },
|
|
1961
1977
|
sm: { colSpan: 6 },
|
|
1962
1978
|
md: { colSpan: 4 },
|
|
1963
|
-
lg: { colSpan: 3 }
|
|
1964
|
-
}
|
|
1979
|
+
lg: { colSpan: 3 },
|
|
1980
|
+
},
|
|
1965
1981
|
});
|
|
1966
1982
|
}
|
|
1967
1983
|
//#endregion
|
|
@@ -1970,14 +1986,15 @@ class AXPReportViewerPageComponent extends AXPPageLayoutBaseComponent {
|
|
|
1970
1986
|
await super.ngOnInit();
|
|
1971
1987
|
// Subscribe to route parameter changes for dynamic report loading
|
|
1972
1988
|
this.unsubscriber.takeUntilDestroy(this.route.paramMap).subscribe(async (params) => {
|
|
1973
|
-
const reportId = params.get('reportId') ||
|
|
1974
|
-
this.route.snapshot.queryParamMap.get('reportId') ||
|
|
1975
|
-
this.reportId();
|
|
1989
|
+
const reportId = params.get('reportId') || this.route.snapshot.queryParamMap.get('reportId') || this.reportId();
|
|
1976
1990
|
if (reportId) {
|
|
1977
1991
|
await this.loadReportAndRefresh(reportId);
|
|
1978
1992
|
}
|
|
1979
1993
|
});
|
|
1980
1994
|
}
|
|
1995
|
+
/**
|
|
1996
|
+
* Effect to handle data fetching when chart configuration changes
|
|
1997
|
+
*/
|
|
1981
1998
|
//#endregion
|
|
1982
1999
|
//#region ---- Helper Methods ----
|
|
1983
2000
|
async loadReportAndRefresh(reportId) {
|
|
@@ -2035,7 +2052,7 @@ class AXPReportViewerPageComponent extends AXPPageLayoutBaseComponent {
|
|
|
2035
2052
|
command: {
|
|
2036
2053
|
name: 'navigate-to-reports',
|
|
2037
2054
|
},
|
|
2038
|
-
}
|
|
2055
|
+
},
|
|
2039
2056
|
];
|
|
2040
2057
|
// Add categories path
|
|
2041
2058
|
const categoriesPath = this.vm.categoriesPath();
|
|
@@ -2049,7 +2066,7 @@ class AXPReportViewerPageComponent extends AXPPageLayoutBaseComponent {
|
|
|
2049
2066
|
command: {
|
|
2050
2067
|
name: 'navigate-to-category',
|
|
2051
2068
|
options: {
|
|
2052
|
-
path: [...urlParts]
|
|
2069
|
+
path: [...urlParts],
|
|
2053
2070
|
},
|
|
2054
2071
|
},
|
|
2055
2072
|
});
|
|
@@ -2173,9 +2190,9 @@ class AXPReportViewerPageComponent extends AXPPageLayoutBaseComponent {
|
|
|
2173
2190
|
provide: AXPPageLayoutBase,
|
|
2174
2191
|
useExisting: AXPReportViewerPageComponent,
|
|
2175
2192
|
},
|
|
2176
|
-
], viewQueries: [{ propertyName: "filtersForm", first: true, predicate: ["filtersForm"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<axp-page-layout *translate=\"let t\">\n <!-- Left Panel: Filters (Always visible for desktop) -->\n @if (showFiltersPanel()) {\n
|
|
2177
|
-
//
|
|
2178
|
-
AXPDynamicFormComponent, selector: "axp-dynamic-form", inputs: ["formDefinition", "context", "layoutStyle", "layoutConfig"], outputs: ["contextChange", "contextInitiated", "validityChange"] }, { kind: "component", type: AXPPageLayoutComponent, selector: "axp-page-layout" }, { kind: "component", type: AXPThemeLayoutStartSideComponent, selector: "axp-layout-page-start-side, axp-layout-start-side" }, { kind: "component", type: AXPThemeLayoutHeaderComponent, selector: "axp-layout-header" }, { kind: "component", type: AXPThemeLayoutBlockComponent, selector: " axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, " }, { kind: "component", type: AXPReportTableViewComponent, selector: "axp-report-table-view" }, { kind: "component", type:
|
|
2193
|
+
], viewQueries: [{ propertyName: "filtersForm", first: true, predicate: ["filtersForm"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<axp-page-layout *translate=\"let t\">\n <!-- Left Panel: Filters (Always visible for desktop) -->\n @if (showFiltersPanel()) {\n <axp-layout-start-side>\n <axp-layout-header>\n <axp-layout-title>\n {{ t('@report-management:features.report-viewer.filters.title') | async }}\n </axp-layout-title>\n </axp-layout-header>\n <axp-layout-content>\n <div class=\"__filters-container\">\n <axp-dynamic-form\n #filtersForm\n [formDefinition]=\"vm.formDefinition()\"\n [context]=\"vm.filterContext()\"\n [layoutConfig]=\"defaultLayout()\"\n [layoutStyle]=\"'compact'\"\n (contextChange)=\"handleFiltersChange($event)\"\n (contextInitiated)=\"handleFiltersInitiated($event)\"\n >\n </axp-dynamic-form>\n </div>\n </axp-layout-content>\n <axp-layout-footer class=\"ax-p-4 ax-border-t\">\n <ax-button\n [class.ax-sm]=\"layoutService.isSmall()\"\n class=\"ax-w-full\"\n [text]=\"t('@report-management:features.report-viewer.actions.execute') | async\"\n [color]=\"'primary'\"\n (onClick)=\"execute({ name: 'execute-report' })\"\n >\n <ax-prefix>\n <ax-icon class=\"fa-light fa-play\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </axp-layout-footer>\n </axp-layout-start-side>\n }\n\n <axp-page-toolbar>\n <axp-layout-prefix>\n @if (vm.hasMultipleLayouts()) {\n <ax-button [text]=\"vm.currentLayout()?.title\">\n <ax-icon icon=\"fa-light {{ vm.currentLayout()?.icon }}\"></ax-icon>\n <ax-dropdown-panel>\n @for (layout of vm.availableLayouts(); track layout.id) {\n <ax-button-item-list>\n <ax-button-item\n [text]=\"layout.title\"\n [selected]=\"vm.currentLayout()?.id === layout.id\"\n (onClick)=\"vm.switchLayout(layout.id)\"\n >\n <ax-icon icon=\"fa-light {{ layout.icon }}\"></ax-icon>\n </ax-button-item>\n </ax-button-item-list>\n }\n </ax-dropdown-panel>\n </ax-button>\n }\n </axp-layout-prefix>\n <axp-layout-suffix> </axp-layout-suffix>\n </axp-page-toolbar>\n\n <!-- Main Content: Report Display -->\n <axp-page-content class=\"ax-overflow-auto\">\n @if (!vm.reportDefinition()) {\n <ng-container *ngTemplateOutlet=\"noReport\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"reportDisplay\"></ng-container>\n }\n </axp-page-content>\n</axp-page-layout>\n\n<!-- Report Display Area -->\n<ng-template #reportDisplay>\n @if (vm.isTableLayout()) {\n <axp-report-table-view> </axp-report-table-view>\n } @else if (vm.isChartLayout()) {\n <axp-report-chart-view> </axp-report-chart-view>\n }\n</ng-template>\n\n<!-- No Report Selected State -->\n<ng-template #noReport>\n <div class=\"__no-report\" *translate=\"let t\">\n <div class=\"__no-report-icon\">\n <ax-icon class=\"fa-light fa-chart-line\"></ax-icon>\n </div>\n <div class=\"__no-report-content\">\n <h3 class=\"__no-report-title\">\n {{ t('@report-management:features.report-viewer.no-report.title') | async }}\n </h3>\n <p class=\"__no-report-description\">\n {{ t('@report-management:features.report-viewer.no-report.description') | async }}\n </p>\n <div class=\"__no-report-actions\">\n <ax-button\n look=\"outline\"\n color=\"primary\"\n [text]=\"t('@report-management:features.report-viewer.no-report.browse-reports') | async\"\n >\n <ax-prefix>\n <ax-icon class=\"fa-light fa-folder-open\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [".axp-report-viewer-page{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-viewer-page axp-layout-start-side{height:100%;width:20rem;border-inline-end-width:1px;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}@media (min-width: 1920px){.axp-report-viewer-page axp-layout-start-side{width:24rem}}.axp-report-viewer-page axp-layout-start-side>axp-layout-header{height:73px;border-bottom-width:1px}.axp-report-viewer-page axp-layout-start-side axp-layout-content{overflow-x:auto;padding:.5rem}.axp-report-viewer-page axp-layout-start-side axp-layout-content .__filters-container axp-layout-sections{gap:0px!important}.axp-report-viewer-page axp-layout-start-side axp-layout-content .__filters-container axp-layout-sections axp-layout-section{border-style:none!important;padding:0!important;--tw-shadow: 0 0 #0000 !important;--tw-shadow-colored: 0 0 #0000 !important;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)!important}.axp-report-viewer-page .__mobile-filters{flex-shrink:0;border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-lightest-surface),var(--tw-border-opacity, 1));padding:1rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.axp-report-viewer-page axp-page-content{display:flex;height:100%;flex-direction:column}.axp-report-viewer-page .__no-report{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;padding:2rem;text-align:center}.axp-report-viewer-page .__no-report .__no-report-icon{margin-bottom:1rem;font-size:3.75rem;line-height:1;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-500),var(--tw-text-opacity, 1));opacity:.5}.axp-report-viewer-page .__no-report .__no-report-content{max-width:28rem}.axp-report-viewer-page .__no-report .__no-report-content .__no-report-title{margin-bottom:.5rem;font-size:1.25rem;line-height:1.75rem;font-weight:600}.axp-report-viewer-page .__no-report .__no-report-content .__no-report-description{margin-bottom:1.5rem;font-size:.875rem;line-height:1.25rem;opacity:.75}.axp-report-viewer-page .__no-report .__no-report-content .__no-report-actions{display:flex;justify-content:center}.axp-report-viewer-page axp-report-table-view{flex:1 1 0%;overflow:hidden}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: i2$1.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i2$1.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3.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: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i1$1.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i5.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "placement", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "component", type:
|
|
2194
|
+
//
|
|
2195
|
+
AXPDynamicFormComponent, selector: "axp-dynamic-form", inputs: ["formDefinition", "context", "layoutStyle", "layoutConfig"], outputs: ["contextChange", "contextInitiated", "validityChange"] }, { kind: "component", type: AXPPageLayoutComponent, selector: "axp-page-layout" }, { kind: "component", type: AXPThemeLayoutStartSideComponent, selector: "axp-layout-page-start-side, axp-layout-start-side" }, { kind: "component", type: AXPThemeLayoutHeaderComponent, selector: "axp-layout-header" }, { kind: "component", type: AXPThemeLayoutBlockComponent, selector: " axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, " }, { kind: "component", type: AXPReportTableViewComponent, selector: "axp-report-table-view" }, { kind: "component", type: AXPThemeLayoutFooterComponent, selector: "axp-layout-footer, axp-layout-page-footer" }, { kind: "component", type: AXPReportChartViewComponent, selector: "axp-report-chart-view" }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
2179
2196
|
}
|
|
2180
2197
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPReportViewerPageComponent, decorators: [{
|
|
2181
2198
|
type: Component,
|
|
@@ -2187,15 +2204,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
|
|
|
2187
2204
|
AXTranslationModule,
|
|
2188
2205
|
AXDropdownButtonModule,
|
|
2189
2206
|
AXDropdownModule,
|
|
2190
|
-
//
|
|
2207
|
+
//
|
|
2191
2208
|
AXPDynamicFormComponent,
|
|
2192
2209
|
AXPPageLayoutComponent,
|
|
2193
2210
|
AXPThemeLayoutStartSideComponent,
|
|
2194
2211
|
AXPThemeLayoutHeaderComponent,
|
|
2195
2212
|
AXPThemeLayoutBlockComponent,
|
|
2196
2213
|
AXPReportTableViewComponent,
|
|
2214
|
+
AXPThemeLayoutFooterComponent,
|
|
2197
2215
|
AXPReportChartViewComponent,
|
|
2198
|
-
AXPThemeLayoutFooterComponent
|
|
2199
2216
|
], providers: [
|
|
2200
2217
|
AXUnsubscriber,
|
|
2201
2218
|
AXPReportViewerViewModel,
|
|
@@ -2203,7 +2220,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
|
|
|
2203
2220
|
provide: AXPPageLayoutBase,
|
|
2204
2221
|
useExisting: AXPReportViewerPageComponent,
|
|
2205
2222
|
},
|
|
2206
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'axp-report-viewer-page' }, template: "<axp-page-layout *translate=\"let t\">\n <!-- Left Panel: Filters (Always visible for desktop) -->\n @if (showFiltersPanel()) {\n
|
|
2223
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'axp-report-viewer-page' }, template: "<axp-page-layout *translate=\"let t\">\n <!-- Left Panel: Filters (Always visible for desktop) -->\n @if (showFiltersPanel()) {\n <axp-layout-start-side>\n <axp-layout-header>\n <axp-layout-title>\n {{ t('@report-management:features.report-viewer.filters.title') | async }}\n </axp-layout-title>\n </axp-layout-header>\n <axp-layout-content>\n <div class=\"__filters-container\">\n <axp-dynamic-form\n #filtersForm\n [formDefinition]=\"vm.formDefinition()\"\n [context]=\"vm.filterContext()\"\n [layoutConfig]=\"defaultLayout()\"\n [layoutStyle]=\"'compact'\"\n (contextChange)=\"handleFiltersChange($event)\"\n (contextInitiated)=\"handleFiltersInitiated($event)\"\n >\n </axp-dynamic-form>\n </div>\n </axp-layout-content>\n <axp-layout-footer class=\"ax-p-4 ax-border-t\">\n <ax-button\n [class.ax-sm]=\"layoutService.isSmall()\"\n class=\"ax-w-full\"\n [text]=\"t('@report-management:features.report-viewer.actions.execute') | async\"\n [color]=\"'primary'\"\n (onClick)=\"execute({ name: 'execute-report' })\"\n >\n <ax-prefix>\n <ax-icon class=\"fa-light fa-play\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </axp-layout-footer>\n </axp-layout-start-side>\n }\n\n <axp-page-toolbar>\n <axp-layout-prefix>\n @if (vm.hasMultipleLayouts()) {\n <ax-button [text]=\"vm.currentLayout()?.title\">\n <ax-icon icon=\"fa-light {{ vm.currentLayout()?.icon }}\"></ax-icon>\n <ax-dropdown-panel>\n @for (layout of vm.availableLayouts(); track layout.id) {\n <ax-button-item-list>\n <ax-button-item\n [text]=\"layout.title\"\n [selected]=\"vm.currentLayout()?.id === layout.id\"\n (onClick)=\"vm.switchLayout(layout.id)\"\n >\n <ax-icon icon=\"fa-light {{ layout.icon }}\"></ax-icon>\n </ax-button-item>\n </ax-button-item-list>\n }\n </ax-dropdown-panel>\n </ax-button>\n }\n </axp-layout-prefix>\n <axp-layout-suffix> </axp-layout-suffix>\n </axp-page-toolbar>\n\n <!-- Main Content: Report Display -->\n <axp-page-content class=\"ax-overflow-auto\">\n @if (!vm.reportDefinition()) {\n <ng-container *ngTemplateOutlet=\"noReport\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"reportDisplay\"></ng-container>\n }\n </axp-page-content>\n</axp-page-layout>\n\n<!-- Report Display Area -->\n<ng-template #reportDisplay>\n @if (vm.isTableLayout()) {\n <axp-report-table-view> </axp-report-table-view>\n } @else if (vm.isChartLayout()) {\n <axp-report-chart-view> </axp-report-chart-view>\n }\n</ng-template>\n\n<!-- No Report Selected State -->\n<ng-template #noReport>\n <div class=\"__no-report\" *translate=\"let t\">\n <div class=\"__no-report-icon\">\n <ax-icon class=\"fa-light fa-chart-line\"></ax-icon>\n </div>\n <div class=\"__no-report-content\">\n <h3 class=\"__no-report-title\">\n {{ t('@report-management:features.report-viewer.no-report.title') | async }}\n </h3>\n <p class=\"__no-report-description\">\n {{ t('@report-management:features.report-viewer.no-report.description') | async }}\n </p>\n <div class=\"__no-report-actions\">\n <ax-button\n look=\"outline\"\n color=\"primary\"\n [text]=\"t('@report-management:features.report-viewer.no-report.browse-reports') | async\"\n >\n <ax-prefix>\n <ax-icon class=\"fa-light fa-folder-open\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [".axp-report-viewer-page{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-viewer-page axp-layout-start-side{height:100%;width:20rem;border-inline-end-width:1px;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}@media (min-width: 1920px){.axp-report-viewer-page axp-layout-start-side{width:24rem}}.axp-report-viewer-page axp-layout-start-side>axp-layout-header{height:73px;border-bottom-width:1px}.axp-report-viewer-page axp-layout-start-side axp-layout-content{overflow-x:auto;padding:.5rem}.axp-report-viewer-page axp-layout-start-side axp-layout-content .__filters-container axp-layout-sections{gap:0px!important}.axp-report-viewer-page axp-layout-start-side axp-layout-content .__filters-container axp-layout-sections axp-layout-section{border-style:none!important;padding:0!important;--tw-shadow: 0 0 #0000 !important;--tw-shadow-colored: 0 0 #0000 !important;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)!important}.axp-report-viewer-page .__mobile-filters{flex-shrink:0;border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-lightest-surface),var(--tw-border-opacity, 1));padding:1rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.axp-report-viewer-page axp-page-content{display:flex;height:100%;flex-direction:column}.axp-report-viewer-page .__no-report{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;padding:2rem;text-align:center}.axp-report-viewer-page .__no-report .__no-report-icon{margin-bottom:1rem;font-size:3.75rem;line-height:1;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-500),var(--tw-text-opacity, 1));opacity:.5}.axp-report-viewer-page .__no-report .__no-report-content{max-width:28rem}.axp-report-viewer-page .__no-report .__no-report-content .__no-report-title{margin-bottom:.5rem;font-size:1.25rem;line-height:1.75rem;font-weight:600}.axp-report-viewer-page .__no-report .__no-report-content .__no-report-description{margin-bottom:1.5rem;font-size:.875rem;line-height:1.25rem;opacity:.75}.axp-report-viewer-page .__no-report .__no-report-content .__no-report-actions{display:flex;justify-content:center}.axp-report-viewer-page axp-report-table-view{flex:1 1 0%;overflow:hidden}\n"] }]
|
|
2207
2224
|
}] });
|
|
2208
2225
|
|
|
2209
2226
|
var reportViewerPage_component = /*#__PURE__*/Object.freeze({
|
|
@@ -2211,9 +2228,125 @@ var reportViewerPage_component = /*#__PURE__*/Object.freeze({
|
|
|
2211
2228
|
AXPReportViewerPageComponent: AXPReportViewerPageComponent
|
|
2212
2229
|
});
|
|
2213
2230
|
|
|
2231
|
+
class AXPReportBarChartViewComponent {
|
|
2232
|
+
constructor() {
|
|
2233
|
+
//#region ---- Dependencies ----
|
|
2234
|
+
this.vm = inject(AXPReportViewerViewModel);
|
|
2235
|
+
this.AXPPageStatus = AXPPageStatus;
|
|
2236
|
+
//#endregion
|
|
2237
|
+
//#region ---- Computed Properties ----
|
|
2238
|
+
/**
|
|
2239
|
+
* Current chart layout configuration
|
|
2240
|
+
*/
|
|
2241
|
+
this.chartLayout = computed(() => {
|
|
2242
|
+
const layout = this.vm.currentLayout();
|
|
2243
|
+
return layout?.layout.type === 'chart' ? layout.layout : null;
|
|
2244
|
+
}, ...(ngDevMode ? [{ debugName: "chartLayout" }] : []));
|
|
2245
|
+
/**
|
|
2246
|
+
* Chart configuration options
|
|
2247
|
+
*/
|
|
2248
|
+
this.chartOptions = computed(() => {
|
|
2249
|
+
const chartLayout = this.chartLayout();
|
|
2250
|
+
return chartLayout?.options || null;
|
|
2251
|
+
}, ...(ngDevMode ? [{ debugName: "chartOptions" }] : []));
|
|
2252
|
+
/**
|
|
2253
|
+
* Chart type for rendering
|
|
2254
|
+
*/
|
|
2255
|
+
this.chartType = computed(() => {
|
|
2256
|
+
const options = this.chartOptions();
|
|
2257
|
+
return options?.chartType || 'bar';
|
|
2258
|
+
}, ...(ngDevMode ? [{ debugName: "chartType" }] : []));
|
|
2259
|
+
/**
|
|
2260
|
+
* Data mapping configuration
|
|
2261
|
+
*/
|
|
2262
|
+
this.dataMapping = computed(() => {
|
|
2263
|
+
const options = this.chartOptions();
|
|
2264
|
+
return options?.dataMapping || null;
|
|
2265
|
+
}, ...(ngDevMode ? [{ debugName: "dataMapping" }] : []));
|
|
2266
|
+
//#endregion
|
|
2267
|
+
//#region ---- Effects ----
|
|
2268
|
+
/**
|
|
2269
|
+
* Effect to handle data fetching when chart configuration changes
|
|
2270
|
+
*/
|
|
2271
|
+
this.#fetchData = effect(() => {
|
|
2272
|
+
if (this.vm.allowFetchData() && this.chartOptions()) {
|
|
2273
|
+
// TODO: Implement chart data fetching
|
|
2274
|
+
console.log('Chart data fetch triggered', {
|
|
2275
|
+
chartType: this.chartType(),
|
|
2276
|
+
dataMapping: this.dataMapping(),
|
|
2277
|
+
});
|
|
2278
|
+
this.vm.fetchData().then((data) => {
|
|
2279
|
+
const barChartData = AXBarChartReportMapper((data?.data).data ?? {});
|
|
2280
|
+
this.barChartData.set(barChartData);
|
|
2281
|
+
console.log('barChartData', barChartData);
|
|
2282
|
+
});
|
|
2283
|
+
}
|
|
2284
|
+
}, ...(ngDevMode ? [{ debugName: "#fetchData" }] : []));
|
|
2285
|
+
this.barChartData = signal([], ...(ngDevMode ? [{ debugName: "barChartData" }] : []));
|
|
2286
|
+
this.barChartOptions = signal({}, ...(ngDevMode ? [{ debugName: "barChartOptions" }] : []));
|
|
2287
|
+
this.legendOptions = signal({
|
|
2288
|
+
mode: 'horizontal',
|
|
2289
|
+
}, ...(ngDevMode ? [{ debugName: "legendOptions" }] : []));
|
|
2290
|
+
}
|
|
2291
|
+
//#endregion
|
|
2292
|
+
//#region ---- Effects ----
|
|
2293
|
+
/**
|
|
2294
|
+
* Effect to handle data fetching when chart configuration changes
|
|
2295
|
+
*/
|
|
2296
|
+
#fetchData;
|
|
2297
|
+
//#endregion
|
|
2298
|
+
//#region ---- Event Handlers ----
|
|
2299
|
+
/**
|
|
2300
|
+
* Handle chart click events
|
|
2301
|
+
*/
|
|
2302
|
+
handleChartClick(event) {
|
|
2303
|
+
// TODO: Implement chart click handling
|
|
2304
|
+
console.log('Chart clicked:', event);
|
|
2305
|
+
}
|
|
2306
|
+
/**
|
|
2307
|
+
* Handle chart data point selection
|
|
2308
|
+
*/
|
|
2309
|
+
handleDataPointSelect(event) {
|
|
2310
|
+
// TODO: Implement data point selection
|
|
2311
|
+
console.log('Data point selected:', event);
|
|
2312
|
+
}
|
|
2313
|
+
//#endregion
|
|
2314
|
+
//#region ---- Helper Methods ----
|
|
2315
|
+
/**
|
|
2316
|
+
* Check if chart is ready to render
|
|
2317
|
+
*/
|
|
2318
|
+
isChartReady() {
|
|
2319
|
+
return !!(this.chartOptions() && this.dataMapping());
|
|
2320
|
+
}
|
|
2321
|
+
/**
|
|
2322
|
+
* Get chart configuration for rendering
|
|
2323
|
+
*/
|
|
2324
|
+
getChartConfig() {
|
|
2325
|
+
// TODO: Transform AXPReportChartOptions to chart library format
|
|
2326
|
+
return {
|
|
2327
|
+
type: this.chartType(),
|
|
2328
|
+
options: this.chartOptions(),
|
|
2329
|
+
dataMapping: this.dataMapping(),
|
|
2330
|
+
};
|
|
2331
|
+
}
|
|
2332
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPReportBarChartViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2333
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: AXPReportBarChartViewComponent, isStandalone: true, selector: "axp-report-bar-chart-view", ngImport: i0, template: "<div class=\"axp-report-chart-view\" *translate=\"let t\">\n @if (vm.status() === AXPPageStatus.Processing) {\n <!-- Loading State -->\n <div class=\"__loading\">\n <div\n class=\"ax-spinner ax-spin ax-border-4 ax-border-gray-200 ax-border-t-primary ax-rounded-full ax-w-12 ax-h-12\"\n ></div>\n <div class=\"__loading-text\">\n {{ t('@report-management:features.report-viewer.loading.chart') | async }}\n </div>\n </div>\n } @else if (vm.status() === AXPPageStatus.Error) {\n <!-- Error State -->\n <div class=\"__error\">\n <div class=\"__error-icon\">\n <i class=\"fa-light fa-exclamation-triangle\"></i>\n </div>\n <div class=\"__error-content\">\n <h4 class=\"__error-title\">\n {{ t('@report-management:features.report-viewer.error.title') | async }}\n </h4>\n <p class=\"__error-description\">\n {{ vm.error() || t('@report-management:features.report-viewer.error.generic') | async }}\n </p>\n </div>\n </div>\n } @else if (isChartReady()) {\n <!-- Chart Content -->\n <div class=\"__chart-container\">\n @if (chartLayout()?.header) {\n <div class=\"__chart-header\">\n <h3 class=\"__chart-title\">{{ chartLayout()?.header?.title }}</h3>\n @if (chartLayout()?.header?.showDate) {\n <div class=\"__chart-date\">{{ 'common.date.today' | translate | async }}</div>\n }\n </div>\n }\n\n <div class=\"__chart-body\">\n <!-- Chart component will be rendered here -->\n <div class=\"__chart-placeholder\">\n <div class=\"__placeholder-content\">\n <div\n class=\"ax-flex ax-flex-wrap ax-items-center ax-justify-center ax-gap-10\"\n [class]=\"legendOptions().mode === 'horizontal' ? 'ax-flex-col' : 'ax-flex-row'\"\n >\n <!-- Chart Area -->\n <div class=\"ax-flex-0 ax-size-96\">\n <ax-bar-chart #chart [data]=\"barChartData()\" [options]=\"barChartOptions()\"></ax-bar-chart>\n </div>\n <!-- Legend Area -->\n @if (barChartData().length > 0) {\n <div>\n <ax-chart-legend [options]=\"legendOptions()\" [chart]=\"chart\"></ax-chart-legend>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n\n @if (chartLayout()?.footer) {\n <div class=\"__chart-footer\">\n @if (chartLayout()?.footer?.customHtml) {\n <div [innerHTML]=\"chartLayout()?.footer?.customHtml\"></div>\n }\n </div>\n }\n </div>\n } @else {\n <!-- No Configuration State -->\n <div class=\"__no-config\">\n <div class=\"__no-config-icon\">\n <i class=\"fa-light fa-chart-line\"></i>\n </div>\n <div class=\"__no-config-content\">\n <h4 class=\"__no-config-title\">\n {{ t('@report-management:features.report-viewer.chart.no-config.title') | async }}\n </h4>\n <p class=\"__no-config-description\">\n {{ t('@report-management:features.report-viewer.chart.no-config.description') | async }}\n </p>\n </div>\n </div>\n }\n</div>\n", styles: [".axp-report-chart-view{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-chart-view .__loading{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:2rem}.axp-report-chart-view .__loading .__loading-text{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-chart-view .__chart-container .__chart-header{border-bottom-width:1px;--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem}.axp-report-chart-view .__chart-container .__chart-header .__chart-title{margin:0;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__chart-container .__chart-header .__chart-date{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container .__chart-body{flex:1 1 0%;overflow:hidden}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1.5rem;text-align:center}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-icon{font-size:3.75rem;line-height:1;color:rgba(var(--ax-sys-color-primary-500),.2)}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content{max-width:28rem}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content .__placeholder-title{margin-bottom:.5rem;font-size:1.25rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content .__placeholder-description{margin-bottom:1rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container .__chart-body .__chart-content{height:100%;width:100%}.axp-report-chart-view .__chart-container .__chart-footer{border-top-width:1px;--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__error{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1rem;text-align:center}.axp-report-chart-view .__error .__error-icon{font-size:2.25rem;line-height:2.5rem;--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__error .__error-content{max-width:28rem}.axp-report-chart-view .__error .__error-content .__error-title{margin-bottom:.5rem;font-size:1.125rem;line-height:1.75rem;font-weight:600;--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__error .__error-content .__error-description{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__no-config{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1rem;text-align:center}.axp-report-chart-view .__no-config .__no-config-icon{font-size:2.25rem;line-height:2.5rem;--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__no-config .__no-config-content{max-width:28rem}.axp-report-chart-view .__no-config .__no-config-content .__no-config-title{margin-bottom:.5rem;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__no-config .__no-config-content .__no-config-description{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i1$1.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "component", type: AXBarChartComponent, selector: "ax-bar-chart", inputs: ["data", "options"], outputs: ["barClick"] }, { kind: "component", type: AXChartLegendComponent, selector: "ax-chart-legend", inputs: ["chart", "options"], outputs: ["itemClick", "itemMouseEnter", "itemMouseLeave"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
2334
|
+
}
|
|
2335
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPReportBarChartViewComponent, decorators: [{
|
|
2336
|
+
type: Component,
|
|
2337
|
+
args: [{ selector: 'axp-report-bar-chart-view', standalone: true, imports: [
|
|
2338
|
+
CommonModule,
|
|
2339
|
+
AXDecoratorModule,
|
|
2340
|
+
AXTranslationModule,
|
|
2341
|
+
AXPLayoutBuilderModule,
|
|
2342
|
+
AXBarChartComponent,
|
|
2343
|
+
AXChartLegendComponent,
|
|
2344
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"axp-report-chart-view\" *translate=\"let t\">\n @if (vm.status() === AXPPageStatus.Processing) {\n <!-- Loading State -->\n <div class=\"__loading\">\n <div\n class=\"ax-spinner ax-spin ax-border-4 ax-border-gray-200 ax-border-t-primary ax-rounded-full ax-w-12 ax-h-12\"\n ></div>\n <div class=\"__loading-text\">\n {{ t('@report-management:features.report-viewer.loading.chart') | async }}\n </div>\n </div>\n } @else if (vm.status() === AXPPageStatus.Error) {\n <!-- Error State -->\n <div class=\"__error\">\n <div class=\"__error-icon\">\n <i class=\"fa-light fa-exclamation-triangle\"></i>\n </div>\n <div class=\"__error-content\">\n <h4 class=\"__error-title\">\n {{ t('@report-management:features.report-viewer.error.title') | async }}\n </h4>\n <p class=\"__error-description\">\n {{ vm.error() || t('@report-management:features.report-viewer.error.generic') | async }}\n </p>\n </div>\n </div>\n } @else if (isChartReady()) {\n <!-- Chart Content -->\n <div class=\"__chart-container\">\n @if (chartLayout()?.header) {\n <div class=\"__chart-header\">\n <h3 class=\"__chart-title\">{{ chartLayout()?.header?.title }}</h3>\n @if (chartLayout()?.header?.showDate) {\n <div class=\"__chart-date\">{{ 'common.date.today' | translate | async }}</div>\n }\n </div>\n }\n\n <div class=\"__chart-body\">\n <!-- Chart component will be rendered here -->\n <div class=\"__chart-placeholder\">\n <div class=\"__placeholder-content\">\n <div\n class=\"ax-flex ax-flex-wrap ax-items-center ax-justify-center ax-gap-10\"\n [class]=\"legendOptions().mode === 'horizontal' ? 'ax-flex-col' : 'ax-flex-row'\"\n >\n <!-- Chart Area -->\n <div class=\"ax-flex-0 ax-size-96\">\n <ax-bar-chart #chart [data]=\"barChartData()\" [options]=\"barChartOptions()\"></ax-bar-chart>\n </div>\n <!-- Legend Area -->\n @if (barChartData().length > 0) {\n <div>\n <ax-chart-legend [options]=\"legendOptions()\" [chart]=\"chart\"></ax-chart-legend>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n\n @if (chartLayout()?.footer) {\n <div class=\"__chart-footer\">\n @if (chartLayout()?.footer?.customHtml) {\n <div [innerHTML]=\"chartLayout()?.footer?.customHtml\"></div>\n }\n </div>\n }\n </div>\n } @else {\n <!-- No Configuration State -->\n <div class=\"__no-config\">\n <div class=\"__no-config-icon\">\n <i class=\"fa-light fa-chart-line\"></i>\n </div>\n <div class=\"__no-config-content\">\n <h4 class=\"__no-config-title\">\n {{ t('@report-management:features.report-viewer.chart.no-config.title') | async }}\n </h4>\n <p class=\"__no-config-description\">\n {{ t('@report-management:features.report-viewer.chart.no-config.description') | async }}\n </p>\n </div>\n </div>\n }\n</div>\n", styles: [".axp-report-chart-view{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-chart-view .__loading{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:2rem}.axp-report-chart-view .__loading .__loading-text{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-chart-view .__chart-container .__chart-header{border-bottom-width:1px;--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem}.axp-report-chart-view .__chart-container .__chart-header .__chart-title{margin:0;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__chart-container .__chart-header .__chart-date{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container .__chart-body{flex:1 1 0%;overflow:hidden}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1.5rem;text-align:center}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-icon{font-size:3.75rem;line-height:1;color:rgba(var(--ax-sys-color-primary-500),.2)}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content{max-width:28rem}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content .__placeholder-title{margin-bottom:.5rem;font-size:1.25rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content .__placeholder-description{margin-bottom:1rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container .__chart-body .__chart-content{height:100%;width:100%}.axp-report-chart-view .__chart-container .__chart-footer{border-top-width:1px;--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__error{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1rem;text-align:center}.axp-report-chart-view .__error .__error-icon{font-size:2.25rem;line-height:2.5rem;--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__error .__error-content{max-width:28rem}.axp-report-chart-view .__error .__error-content .__error-title{margin-bottom:.5rem;font-size:1.125rem;line-height:1.75rem;font-weight:600;--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__error .__error-content .__error-description{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__no-config{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1rem;text-align:center}.axp-report-chart-view .__no-config .__no-config-icon{font-size:2.25rem;line-height:2.5rem;--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__no-config .__no-config-content{max-width:28rem}.axp-report-chart-view .__no-config .__no-config-content .__no-config-title{margin-bottom:.5rem;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__no-config .__no-config-content .__no-config-description{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}\n"] }]
|
|
2345
|
+
}] });
|
|
2346
|
+
|
|
2214
2347
|
/**
|
|
2215
2348
|
* Generated bundle index. Do not edit.
|
|
2216
2349
|
*/
|
|
2217
2350
|
|
|
2218
|
-
export {
|
|
2351
|
+
export { AXBarChartReportMapper, AXLineChartReportMapper, AXMReportManagementModule, AXPReportBarChartViewComponent, AXPReportDefinitionService, AXPReportTableViewComponent, AXPReportViewerPageComponent, AXPReportViewerViewModel, AXP_REPORT_CATEGORY_PROVIDER, AXP_REPORT_DEFINITION_PROVIDER, AXPieChartReportMapper, RootConfig };
|
|
2219
2352
|
//# sourceMappingURL=acorex-modules-report-management.mjs.map
|