@acorex/modules 21.0.0-next.57 → 21.0.0-next.63
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/assessment-management/README.md +4 -4
- package/fesm2022/{acorex-modules-assessment-management-acorex-modules-assessment-management-DcPnI9fZ.mjs → acorex-modules-assessment-management-acorex-modules-assessment-management-DlhSQ0cB.mjs} +3657 -422
- package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-DlhSQ0cB.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-D880d_qz.mjs → acorex-modules-assessment-management-assessment-case.entity-B6C2PRZw.mjs} +93 -82
- package/fesm2022/acorex-modules-assessment-management-assessment-case.entity-B6C2PRZw.mjs.map +1 -0
- package/fesm2022/acorex-modules-assessment-management-assessment-session-answers-view.util-BRdwcIvw.mjs +47 -0
- package/fesm2022/acorex-modules-assessment-management-assessment-session-answers-view.util-BRdwcIvw.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-DvbocIN1.mjs → acorex-modules-assessment-management-assessment-session.entity-DquzZNaQ.mjs} +22 -42
- package/fesm2022/acorex-modules-assessment-management-assessment-session.entity-DquzZNaQ.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-BMJ54EPO.mjs → acorex-modules-assessment-management-fill-assessment-session.command-CRE8SxzC.mjs} +32 -7
- package/fesm2022/acorex-modules-assessment-management-fill-assessment-session.command-CRE8SxzC.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-preview-question.command-CO8NfjEb.mjs → acorex-modules-assessment-management-preview-question.command-Ce7yOnJY.mjs} +2 -2
- package/fesm2022/acorex-modules-assessment-management-preview-question.command-Ce7yOnJY.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-DSzbtU0e.mjs → acorex-modules-assessment-management-preview-questionnaire.command-S-8MDeB7.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-DSzbtU0e.mjs.map → acorex-modules-assessment-management-preview-questionnaire.command-S-8MDeB7.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-DbvxAUgb.mjs → acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-wdHMGBxi.mjs} +2 -2
- package/fesm2022/acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-wdHMGBxi.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-DBfQhSKR.mjs → acorex-modules-assessment-management-question-bank-item.entity-1Pm9O0kv.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-DBfQhSKR.mjs.map → acorex-modules-assessment-management-question-bank-item.entity-1Pm9O0kv.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-CH_cJlSf.mjs → acorex-modules-assessment-management-questionnaire-viewer-popup.component-Dwx0y7WY.mjs} +36 -65
- package/fesm2022/acorex-modules-assessment-management-questionnaire-viewer-popup.component-Dwx0y7WY.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-CrryBMC2.mjs → acorex-modules-assessment-management-questionnaire.entity-BI_jc4C6.mjs} +12 -36
- package/fesm2022/acorex-modules-assessment-management-questionnaire.entity-BI_jc4C6.mjs.map +1 -0
- package/fesm2022/acorex-modules-assessment-management-view-case-last-session-answers.command-Ds-QGMPy.mjs +157 -0
- package/fesm2022/acorex-modules-assessment-management-view-case-last-session-answers.command-Ds-QGMPy.mjs.map +1 -0
- package/fesm2022/acorex-modules-assessment-management-view-session-answers.command-COTVoRRG.mjs +172 -0
- package/fesm2022/acorex-modules-assessment-management-view-session-answers.command-COTVoRRG.mjs.map +1 -0
- package/fesm2022/acorex-modules-assessment-management-view-session-outcomes.command-2buH7ydV.mjs +239 -0
- package/fesm2022/acorex-modules-assessment-management-view-session-outcomes.command-2buH7ydV.mjs.map +1 -0
- package/fesm2022/acorex-modules-assessment-management.mjs +1 -1
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-wfCSNwXC.mjs → acorex-modules-auth-acorex-modules-auth-D4IBi_VD.mjs} +39 -30
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-D4IBi_VD.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-app-chooser.component-BY281-Cl.mjs → acorex-modules-auth-app-chooser.component-BEktaBWD.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-app-chooser.component-BY281-Cl.mjs.map → acorex-modules-auth-app-chooser.component-BEktaBWD.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-login.module-CjgYlyOv.mjs → acorex-modules-auth-login.module-aAwHzXPj.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-login.module-CjgYlyOv.mjs.map → acorex-modules-auth-login.module-aAwHzXPj.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-master.layout-Clx8QDYW.mjs → acorex-modules-auth-master.layout-BapDYFZ_.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-master.layout-Clx8QDYW.mjs.map → acorex-modules-auth-master.layout-BapDYFZ_.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-oauth-callback.component-CGnGAPJ2.mjs → acorex-modules-auth-oauth-callback.component-Cyu2vqyK.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-oauth-callback.component-CGnGAPJ2.mjs.map → acorex-modules-auth-oauth-callback.component-Cyu2vqyK.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-8eEX0lRP.mjs → acorex-modules-auth-password.component-DB-ac0Rn.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-password.component-8eEX0lRP.mjs.map → acorex-modules-auth-password.component-DB-ac0Rn.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-CUxwThnN.mjs → acorex-modules-auth-password.component-cPmwNpuq.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-password.component-CUxwThnN.mjs.map → acorex-modules-auth-password.component-cPmwNpuq.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-routes-CYLKJm9g.mjs → acorex-modules-auth-routes-r72zIRTa.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-routes-CYLKJm9g.mjs.map → acorex-modules-auth-routes-r72zIRTa.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-tenant-chooser.component-DDK1KW-8.mjs → acorex-modules-auth-tenant-chooser.component-AQA2o6Ty.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-tenant-chooser.component-DDK1KW-8.mjs.map → acorex-modules-auth-tenant-chooser.component-AQA2o6Ty.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-two-factor.module-Iw2U7Cy5.mjs → acorex-modules-auth-two-factor.module-Dx0CC5ic.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-two-factor.module-Iw2U7Cy5.mjs.map → acorex-modules-auth-two-factor.module-Dx0CC5ic.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-user-sessions.component-sKDANprs.mjs → acorex-modules-auth-user-sessions.component-3Wr7DUDQ.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-user-sessions.component-sKDANprs.mjs.map → acorex-modules-auth-user-sessions.component-3Wr7DUDQ.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth.mjs +1 -1
- package/fesm2022/acorex-modules-common.mjs +8 -3
- package/fesm2022/acorex-modules-common.mjs.map +1 -1
- package/fesm2022/{acorex-modules-conversation-acorex-modules-conversation-DlteA_jC.mjs → acorex-modules-conversation-acorex-modules-conversation-DkdNLMKa.mjs} +8 -7
- package/fesm2022/acorex-modules-conversation-acorex-modules-conversation-DkdNLMKa.mjs.map +1 -0
- package/fesm2022/{acorex-modules-conversation-assist-delegated-agent-detail-popup.component-BAgBuxlz.mjs → acorex-modules-conversation-assist-delegated-agent-detail-popup.component-VKPbkRqI.mjs} +2 -2
- package/fesm2022/{acorex-modules-conversation-assist-delegated-agent-detail-popup.component-BAgBuxlz.mjs.map → acorex-modules-conversation-assist-delegated-agent-detail-popup.component-VKPbkRqI.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-conversation-comments-page.component-BrwP9l7M.mjs → acorex-modules-conversation-comments-page.component-ehUCjoFD.mjs} +2 -2
- package/fesm2022/{acorex-modules-conversation-comments-page.component-BrwP9l7M.mjs.map → acorex-modules-conversation-comments-page.component-ehUCjoFD.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-conversation-send-assist-chat-message.command-BzKawEoN.mjs → acorex-modules-conversation-send-assist-chat-message.command-ZNcVi54N.mjs} +2 -2
- package/fesm2022/{acorex-modules-conversation-send-assist-chat-message.command-BzKawEoN.mjs.map → acorex-modules-conversation-send-assist-chat-message.command-ZNcVi54N.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-conversation-start-assist-chat.command-BUOGUMl0.mjs → acorex-modules-conversation-start-assist-chat.command-CX6lm1lG.mjs} +2 -2
- package/fesm2022/{acorex-modules-conversation-start-assist-chat.command-BUOGUMl0.mjs.map → acorex-modules-conversation-start-assist-chat.command-CX6lm1lG.mjs.map} +1 -1
- package/fesm2022/acorex-modules-conversation.mjs +1 -1
- package/fesm2022/acorex-modules-customer-management.mjs +2 -0
- package/fesm2022/acorex-modules-customer-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-data-management.mjs +6 -5
- package/fesm2022/acorex-modules-data-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-help-desk-acorex-modules-help-desk-Bfjo-ENr.mjs → acorex-modules-help-desk-acorex-modules-help-desk-DVlO9JZw.mjs} +3 -2
- package/fesm2022/acorex-modules-help-desk-acorex-modules-help-desk-DVlO9JZw.mjs.map +1 -0
- package/fesm2022/{acorex-modules-help-desk-capture-screen.component-CsACFkPq.mjs → acorex-modules-help-desk-capture-screen.component-rNPehEf8.mjs} +2 -2
- package/fesm2022/{acorex-modules-help-desk-capture-screen.component-CsACFkPq.mjs.map → acorex-modules-help-desk-capture-screen.component-rNPehEf8.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-XhV2JQXs.mjs → acorex-modules-human-capital-management-acorex-modules-human-capital-management-BWezAea1.mjs} +131 -112
- package/fesm2022/acorex-modules-human-capital-management-acorex-modules-human-capital-management-BWezAea1.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-approve-leave-request.command-Cre30Kp7.mjs → acorex-modules-human-capital-management-approve-leave-request.command-Bh_Bbq5-.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-approve-leave-request.command-Cre30Kp7.mjs.map → acorex-modules-human-capital-management-approve-leave-request.command-Bh_Bbq5-.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-assign-position-assignment.command-NYgddiaD.mjs → acorex-modules-human-capital-management-assign-position-assignment.command-BpDdDG9i.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-assign-position-assignment.command-NYgddiaD.mjs.map → acorex-modules-human-capital-management-assign-position-assignment.command-BpDdDG9i.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-cancel-leave-request.command-DPh-KQgN.mjs → acorex-modules-human-capital-management-cancel-leave-request.command-CjtKaKFw.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-cancel-leave-request.command-DPh-KQgN.mjs.map → acorex-modules-human-capital-management-cancel-leave-request.command-CjtKaKFw.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-employee.entity-znCbbQUd.mjs → acorex-modules-human-capital-management-employee.entity-Cx_oY2aK.mjs} +8 -8
- package/fesm2022/acorex-modules-human-capital-management-employee.entity-Cx_oY2aK.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-employment-type.entity-DUNB3zAB.mjs → acorex-modules-human-capital-management-employment-type.entity-B20Taa5x.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-employment-type.entity-DUNB3zAB.mjs.map → acorex-modules-human-capital-management-employment-type.entity-B20Taa5x.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity-JyFrrCGE.mjs → acorex-modules-human-capital-management-leave-request.entity-BO8QXpZE.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity-JyFrrCGE.mjs.map → acorex-modules-human-capital-management-leave-request.entity-BO8QXpZE.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-leave-type.entity-B61MiEPu.mjs → acorex-modules-human-capital-management-leave-type.entity-CQwSWqSh.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-leave-type.entity-B61MiEPu.mjs.map → acorex-modules-human-capital-management-leave-type.entity-CQwSWqSh.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-lifecycle-process-type.entity-DJqo2kTG.mjs → acorex-modules-human-capital-management-lifecycle-event-type.entity-BPWJrvbN.mjs} +13 -13
- package/fesm2022/acorex-modules-human-capital-management-lifecycle-event-type.entity-BPWJrvbN.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-employee-lifecycle-process.entity-LX68KORg.mjs → acorex-modules-human-capital-management-lifecycle-event.entity-ZZuPu9KQ.mjs} +45 -56
- package/fesm2022/acorex-modules-human-capital-management-lifecycle-event.entity-ZZuPu9KQ.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-position-assignment.entity-CKCC6bKg.mjs → acorex-modules-human-capital-management-position-assignment.entity-BN1y0qhi.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-position-assignment.entity-CKCC6bKg.mjs.map → acorex-modules-human-capital-management-position-assignment.entity-BN1y0qhi.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-reject-leave-request.command-Blv08UQZ.mjs → acorex-modules-human-capital-management-reject-leave-request.command-LczqOHP-.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-reject-leave-request.command-Blv08UQZ.mjs.map → acorex-modules-human-capital-management-reject-leave-request.command-LczqOHP-.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-revoke-position-assignment.command-lgEAbxYH.mjs → acorex-modules-human-capital-management-revoke-position-assignment.command-Dm8YacDI.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-revoke-position-assignment.command-lgEAbxYH.mjs.map → acorex-modules-human-capital-management-revoke-position-assignment.command-Dm8YacDI.mjs.map} +1 -1
- package/fesm2022/acorex-modules-human-capital-management-start-lifecycle-event-flow.command-DPwuyFz2.mjs +237 -0
- package/fesm2022/acorex-modules-human-capital-management-start-lifecycle-event-flow.command-DPwuyFz2.mjs.map +1 -0
- package/fesm2022/acorex-modules-human-capital-management.mjs +1 -1
- package/fesm2022/{acorex-modules-learning-management-enrollment.entity-B53AQq_9.mjs → acorex-modules-learning-management-enrollment.entity-CdJafrUh.mjs} +4 -22
- package/fesm2022/acorex-modules-learning-management-enrollment.entity-CdJafrUh.mjs.map +1 -0
- package/fesm2022/acorex-modules-learning-management.mjs +1 -1
- package/fesm2022/acorex-modules-learning-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-location-management.mjs +1 -0
- package/fesm2022/acorex-modules-location-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-5DJoQkx2.mjs → acorex-modules-platform-management-acorex-modules-platform-management-Cbf1rlEK.mjs} +4 -4
- package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-5DJoQkx2.mjs.map → acorex-modules-platform-management-acorex-modules-platform-management-Cbf1rlEK.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-platform-management-menu-list.component-C3WBYbOt.mjs → acorex-modules-platform-management-menu-list.component-DIf_-oaM.mjs} +2 -2
- package/fesm2022/{acorex-modules-platform-management-menu-list.component-C3WBYbOt.mjs.map → acorex-modules-platform-management-menu-list.component-DIf_-oaM.mjs.map} +1 -1
- package/fesm2022/acorex-modules-platform-management.mjs +1 -1
- package/fesm2022/acorex-modules-security-management.mjs +3 -0
- package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-supplier-management.mjs +1 -0
- package/fesm2022/acorex-modules-supplier-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-task-management-acorex-modules-task-management-CrybKNgo.mjs → acorex-modules-task-management-acorex-modules-task-management--mdNdYIs.mjs} +32 -2
- package/fesm2022/acorex-modules-task-management-acorex-modules-task-management--mdNdYIs.mjs.map +1 -0
- package/fesm2022/{acorex-modules-task-management-task-board.page-B2xxXscG.mjs → acorex-modules-task-management-task-board.page-BIZ1qH7m.mjs} +33 -3
- package/fesm2022/acorex-modules-task-management-task-board.page-BIZ1qH7m.mjs.map +1 -0
- package/fesm2022/acorex-modules-task-management.mjs +1 -1
- package/fesm2022/{acorex-modules-workflow-management-activity-command-configurator-widget-edit.component-OLbCD-7P.mjs → acorex-modules-workflow-management-activity-command-configurator-widget-edit.component-B4DLmioy.mjs} +3 -3
- package/fesm2022/{acorex-modules-workflow-management-activity-command-configurator-widget-edit.component-OLbCD-7P.mjs.map → acorex-modules-workflow-management-activity-command-configurator-widget-edit.component-B4DLmioy.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-workflow-management-index-RRzkvrNM.mjs → acorex-modules-workflow-management-index-BhVZ1Bcw.mjs} +3 -3
- package/fesm2022/{acorex-modules-workflow-management-index-RRzkvrNM.mjs.map → acorex-modules-workflow-management-index-BhVZ1Bcw.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-workflow-management-index-Eh5DDK-V.mjs → acorex-modules-workflow-management-index-DC_9M9dk.mjs} +3 -3
- package/fesm2022/{acorex-modules-workflow-management-index-Eh5DDK-V.mjs.map → acorex-modules-workflow-management-index-DC_9M9dk.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-workflow-management-workflow-instance.entity-B_V3uMSI.mjs → acorex-modules-workflow-management-workflow-instance.entity-BnKT3Wgh.mjs} +2 -2
- package/fesm2022/{acorex-modules-workflow-management-workflow-instance.entity-B_V3uMSI.mjs.map → acorex-modules-workflow-management-workflow-instance.entity-BnKT3Wgh.mjs.map} +1 -1
- package/fesm2022/acorex-modules-workflow-management-workflow-task-popover.component-DjYDwHWU.mjs +255 -0
- package/fesm2022/acorex-modules-workflow-management-workflow-task-popover.component-DjYDwHWU.mjs.map +1 -0
- package/fesm2022/acorex-modules-workflow-management.mjs +1819 -745
- package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
- package/package.json +2 -2
- package/types/acorex-modules-assessment-management.d.ts +387 -278
- package/types/acorex-modules-common.d.ts +2 -0
- package/types/acorex-modules-human-capital-management.d.ts +31 -30
- package/types/acorex-modules-learning-management.d.ts +0 -1
- package/types/acorex-modules-task-management.d.ts +41 -2
- package/types/acorex-modules-workflow-management.d.ts +280 -34
- package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-DcPnI9fZ.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-assessment-case.entity-D880d_qz.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-assessment-session.entity-DvbocIN1.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-fill-assessment-session.command-BMJ54EPO.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-index-XdJCIYG3.mjs +0 -1509
- package/fesm2022/acorex-modules-assessment-management-index-XdJCIYG3.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-preview-question.command-CO8NfjEb.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-DbvxAUgb.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-questionnaire-calculation.entity-CL9s20qR.mjs +0 -236
- package/fesm2022/acorex-modules-assessment-management-questionnaire-calculation.entity-CL9s20qR.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-questionnaire-viewer-popup.component-CH_cJlSf.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-questionnaire.entity-CrryBMC2.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-save-questionnaire-questions.command-Dq5VComh.mjs +0 -61
- package/fesm2022/acorex-modules-assessment-management-save-questionnaire-questions.command-Dq5VComh.mjs.map +0 -1
- package/fesm2022/acorex-modules-assessment-management-view-session-answers.command-DpppXekm.mjs +0 -112
- package/fesm2022/acorex-modules-assessment-management-view-session-answers.command-DpppXekm.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-wfCSNwXC.mjs.map +0 -1
- package/fesm2022/acorex-modules-conversation-acorex-modules-conversation-DlteA_jC.mjs.map +0 -1
- package/fesm2022/acorex-modules-help-desk-acorex-modules-help-desk-Bfjo-ENr.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-acorex-modules-human-capital-management-XhV2JQXs.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-employee-lifecycle-process.entity-LX68KORg.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-employee.entity-znCbbQUd.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-lifecycle-process-type.entity-DJqo2kTG.mjs.map +0 -1
- package/fesm2022/acorex-modules-learning-management-enrollment.entity-B53AQq_9.mjs.map +0 -1
- package/fesm2022/acorex-modules-task-management-acorex-modules-task-management-CrybKNgo.mjs.map +0 -1
- package/fesm2022/acorex-modules-task-management-task-board.page-B2xxXscG.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-workflow-task-popover.component-DMszilef.mjs +0 -356
- package/fesm2022/acorex-modules-workflow-management-workflow-task-popover.component-DMszilef.mjs.map +0 -1
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { AXTranslationService } from '@acorex/core/translation';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { inject, Injectable } from '@angular/core';
|
|
4
|
+
import { AXPEntityService } from '@acorex/platform/layout/entity';
|
|
5
|
+
import { isString, isEmpty, toString, get, first, defaultTo } from 'lodash-es';
|
|
6
|
+
import { A as AXMQuestionnaireViewerService, R as RootConfig } from './acorex-modules-assessment-management-acorex-modules-assessment-management-DlhSQ0cB.mjs';
|
|
7
|
+
import { o as openAssessmentSessionAnswersView } from './acorex-modules-assessment-management-assessment-session-answers-view.util-BRdwcIvw.mjs';
|
|
8
|
+
|
|
9
|
+
//#endregion
|
|
10
|
+
//#region ---- View Case Last Session Answers Command ----
|
|
11
|
+
/**
|
|
12
|
+
* Opens a readonly view of the most recent assessment session answers for a case.
|
|
13
|
+
*/
|
|
14
|
+
class ViewCaseLastSessionAnswersCommand {
|
|
15
|
+
constructor() {
|
|
16
|
+
//#region ---- Services & Dependencies ----
|
|
17
|
+
this.entityService = inject(AXPEntityService);
|
|
18
|
+
this.questionnaireViewerService = inject(AXMQuestionnaireViewerService);
|
|
19
|
+
this.translationService = inject(AXTranslationService);
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
|
22
|
+
//#region ---- Command Implementation ----
|
|
23
|
+
/**
|
|
24
|
+
* Returns a non-empty string or undefined.
|
|
25
|
+
*/
|
|
26
|
+
asNonEmptyString(value) {
|
|
27
|
+
if (isString(value) && !isEmpty(value)) {
|
|
28
|
+
return value;
|
|
29
|
+
}
|
|
30
|
+
if (value != null && !isString(value)) {
|
|
31
|
+
const normalized = toString(value).trim();
|
|
32
|
+
return isEmpty(normalized) ? undefined : normalized;
|
|
33
|
+
}
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Resolves case id from root input, action options, or list row data.
|
|
38
|
+
*/
|
|
39
|
+
resolveCaseId(input) {
|
|
40
|
+
const candidates = [
|
|
41
|
+
get(input, 'caseId'),
|
|
42
|
+
get(input, 'options.caseId'),
|
|
43
|
+
get(input, '__context__.options.caseId'),
|
|
44
|
+
get(input, '__context__.data.id'),
|
|
45
|
+
];
|
|
46
|
+
for (const candidate of candidates) {
|
|
47
|
+
const resolved = this.asNonEmptyString(candidate);
|
|
48
|
+
if (resolved) {
|
|
49
|
+
return resolved;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Loads case by id using query first, then byKey.
|
|
56
|
+
*/
|
|
57
|
+
async loadCase(caseId) {
|
|
58
|
+
const caseAccessor = this.entityService
|
|
59
|
+
.withEntity(RootConfig.module.name, RootConfig.entities.assessmentCase.name)
|
|
60
|
+
.data();
|
|
61
|
+
const listMatch = await caseAccessor.query({
|
|
62
|
+
skip: 0,
|
|
63
|
+
take: 1,
|
|
64
|
+
filter: {
|
|
65
|
+
field: 'id',
|
|
66
|
+
operator: { type: 'equal' },
|
|
67
|
+
value: caseId,
|
|
68
|
+
},
|
|
69
|
+
});
|
|
70
|
+
const fromQuery = first(listMatch.items);
|
|
71
|
+
if (fromQuery) {
|
|
72
|
+
return fromQuery;
|
|
73
|
+
}
|
|
74
|
+
return defaultTo(await caseAccessor.byKey(caseId), null);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Finds the latest session record for a case (by lastSavedAt, then createdAt).
|
|
78
|
+
*/
|
|
79
|
+
async findLatestSession(caseId) {
|
|
80
|
+
const sessionAccessor = this.entityService
|
|
81
|
+
.withEntity(RootConfig.module.name, RootConfig.entities.assessmentSession.name)
|
|
82
|
+
.data();
|
|
83
|
+
const listMatch = await sessionAccessor.query({
|
|
84
|
+
skip: 0,
|
|
85
|
+
take: 1,
|
|
86
|
+
sort: [
|
|
87
|
+
{ field: 'lastSavedAt', dir: 'desc' },
|
|
88
|
+
{ field: 'createdAt', dir: 'desc' },
|
|
89
|
+
],
|
|
90
|
+
filter: {
|
|
91
|
+
field: 'caseId',
|
|
92
|
+
operator: { type: 'equal' },
|
|
93
|
+
value: caseId,
|
|
94
|
+
},
|
|
95
|
+
});
|
|
96
|
+
return first(listMatch.items) ?? null;
|
|
97
|
+
}
|
|
98
|
+
async execute(input) {
|
|
99
|
+
try {
|
|
100
|
+
const caseId = this.resolveCaseId(input);
|
|
101
|
+
if (!caseId) {
|
|
102
|
+
return {
|
|
103
|
+
success: false,
|
|
104
|
+
message: {
|
|
105
|
+
text: 'Assessment case ID is required',
|
|
106
|
+
},
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
const assessmentCase = await this.loadCase(caseId);
|
|
110
|
+
if (!assessmentCase) {
|
|
111
|
+
return {
|
|
112
|
+
success: false,
|
|
113
|
+
message: {
|
|
114
|
+
text: `Assessment case with ID ${caseId} not found`,
|
|
115
|
+
},
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
const session = await this.findLatestSession(caseId);
|
|
119
|
+
if (!session) {
|
|
120
|
+
const messageKey = '@assessment-management:cases.actions.view-last-session-answers.no-session';
|
|
121
|
+
const messageText = (await this.translationService.translateAsync(messageKey)) ||
|
|
122
|
+
'No assessment session found for this case';
|
|
123
|
+
return {
|
|
124
|
+
success: false,
|
|
125
|
+
message: {
|
|
126
|
+
text: messageText,
|
|
127
|
+
},
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
await openAssessmentSessionAnswersView({
|
|
131
|
+
entityService: this.entityService,
|
|
132
|
+
questionnaireViewerService: this.questionnaireViewerService,
|
|
133
|
+
translationService: this.translationService,
|
|
134
|
+
}, session, assessmentCase);
|
|
135
|
+
return {
|
|
136
|
+
success: true,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
141
|
+
return {
|
|
142
|
+
success: false,
|
|
143
|
+
message: {
|
|
144
|
+
text: `Error viewing last session answers: ${message}`,
|
|
145
|
+
},
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ViewCaseLastSessionAnswersCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
150
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ViewCaseLastSessionAnswersCommand }); }
|
|
151
|
+
}
|
|
152
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ViewCaseLastSessionAnswersCommand, decorators: [{
|
|
153
|
+
type: Injectable
|
|
154
|
+
}] });
|
|
155
|
+
|
|
156
|
+
export { ViewCaseLastSessionAnswersCommand };
|
|
157
|
+
//# sourceMappingURL=acorex-modules-assessment-management-view-case-last-session-answers.command-Ds-QGMPy.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-modules-assessment-management-view-case-last-session-answers.command-Ds-QGMPy.mjs","sources":["../../../../libs/modules/assessment-management/src/lib/features/questionnaire-viewer/commands/view-case-last-session-answers.command.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPExecuteCommandResult } from '@acorex/platform/core';\nimport { AXPCommand } from '@acorex/platform/runtime';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { Injectable, inject } from '@angular/core';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { defaultTo, first, get, isEmpty, isString, toString } from 'lodash-es';\nimport { AXMQuestionnaireViewerService } from '../questionnaire-viewer.service';\nimport type { AXMAssessmentManagementAssessmentCaseEntityModel } from '../../../entities/assessment-case/assessment-case.types';\nimport type { AXMAssessmentManagementAssessmentSessionEntityModel } from '../../../entities/assessment-session/assessment-session.types';\nimport { RootConfig } from '../../../const';\nimport { openAssessmentSessionAnswersView } from '../utils/assessment-session-answers-view.util';\n\n//#endregion\n\n//#region ---- Command Input/Output Types ----\n\n/**\n * Input for ViewCaseLastSessionAnswers command.\n */\nexport interface ViewCaseLastSessionAnswersCommandInput {\n /** Assessment Case ID to resolve the latest session for. */\n caseId: string;\n}\n\n/** Entity list passes evaluated action options on `__context__.options` / row `data`. */\ntype ViewCaseLastSessionAnswersCommandInvocation = ViewCaseLastSessionAnswersCommandInput & {\n options?: Partial<ViewCaseLastSessionAnswersCommandInput>;\n __context__?: {\n options?: Partial<ViewCaseLastSessionAnswersCommandInput>;\n data?: Record<string, unknown>;\n };\n};\n\n//#endregion\n\n//#region ---- View Case Last Session Answers Command ----\n\n/**\n * Opens a readonly view of the most recent assessment session answers for a case.\n */\n@Injectable()\nexport class ViewCaseLastSessionAnswersCommand implements AXPCommand<ViewCaseLastSessionAnswersCommandInput, void> {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly questionnaireViewerService = inject(AXMQuestionnaireViewerService);\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Command Implementation ----\n\n /**\n * Returns a non-empty string or undefined.\n */\n private asNonEmptyString(value: unknown): string | undefined {\n if (isString(value) && !isEmpty(value)) {\n return value;\n }\n if (value != null && !isString(value)) {\n const normalized = toString(value).trim();\n return isEmpty(normalized) ? undefined : normalized;\n }\n return undefined;\n }\n\n /**\n * Resolves case id from root input, action options, or list row data.\n */\n private resolveCaseId(input: ViewCaseLastSessionAnswersCommandInvocation): string | null {\n const candidates = [\n get(input, 'caseId'),\n get(input, 'options.caseId'),\n get(input, '__context__.options.caseId'),\n get(input, '__context__.data.id'),\n ];\n\n for (const candidate of candidates) {\n const resolved = this.asNonEmptyString(candidate);\n if (resolved) {\n return resolved;\n }\n }\n\n return null;\n }\n\n /**\n * Loads case by id using query first, then byKey.\n */\n private async loadCase(caseId: string): Promise<AXMAssessmentManagementAssessmentCaseEntityModel | null> {\n const caseAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.assessmentCase.name)\n .data<string, AXMAssessmentManagementAssessmentCaseEntityModel>();\n\n const listMatch = await caseAccessor.query({\n skip: 0,\n take: 1,\n filter: {\n field: 'id',\n operator: { type: 'equal' },\n value: caseId,\n },\n });\n\n const fromQuery = first(listMatch.items);\n if (fromQuery) {\n return fromQuery;\n }\n\n return defaultTo(await caseAccessor.byKey(caseId), null);\n }\n\n /**\n * Finds the latest session record for a case (by lastSavedAt, then createdAt).\n */\n private async findLatestSession(\n caseId: string,\n ): Promise<AXMAssessmentManagementAssessmentSessionEntityModel | null> {\n const sessionAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.assessmentSession.name)\n .data<string, AXMAssessmentManagementAssessmentSessionEntityModel>();\n\n const listMatch = await sessionAccessor.query({\n skip: 0,\n take: 1,\n sort: [\n { field: 'lastSavedAt', dir: 'desc' },\n { field: 'createdAt', dir: 'desc' },\n ],\n filter: {\n field: 'caseId',\n operator: { type: 'equal' },\n value: caseId,\n },\n });\n\n return first(listMatch.items) ?? null;\n }\n\n async execute(input: ViewCaseLastSessionAnswersCommandInvocation): Promise<AXPExecuteCommandResult<void>> {\n try {\n const caseId = this.resolveCaseId(input);\n if (!caseId) {\n return {\n success: false,\n message: {\n text: 'Assessment case ID is required',\n },\n };\n }\n\n const assessmentCase = await this.loadCase(caseId);\n if (!assessmentCase) {\n return {\n success: false,\n message: {\n text: `Assessment case with ID ${caseId} not found`,\n },\n };\n }\n\n const session = await this.findLatestSession(caseId);\n if (!session) {\n const messageKey = '@assessment-management:cases.actions.view-last-session-answers.no-session';\n const messageText =\n (await this.translationService.translateAsync(messageKey)) ||\n 'No assessment session found for this case';\n return {\n success: false,\n message: {\n text: messageText,\n },\n };\n }\n\n await openAssessmentSessionAnswersView(\n {\n entityService: this.entityService,\n questionnaireViewerService: this.questionnaireViewerService,\n translationService: this.translationService,\n },\n session,\n assessmentCase,\n );\n\n return {\n success: true,\n };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Unknown error';\n return {\n success: false,\n message: {\n text: `Error viewing last session answers: ${message}`,\n },\n };\n }\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
|
package/fesm2022/acorex-modules-assessment-management-view-session-answers.command-COTVoRRG.mjs
ADDED
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { AXTranslationService } from '@acorex/core/translation';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { inject, Injectable } from '@angular/core';
|
|
4
|
+
import { AXPEntityService } from '@acorex/platform/layout/entity';
|
|
5
|
+
import { isString, isEmpty, toString, get, defaultTo, first } from 'lodash-es';
|
|
6
|
+
import { A as AXMQuestionnaireViewerService, R as RootConfig } from './acorex-modules-assessment-management-acorex-modules-assessment-management-DlhSQ0cB.mjs';
|
|
7
|
+
import { o as openAssessmentSessionAnswersView } from './acorex-modules-assessment-management-assessment-session-answers-view.util-BRdwcIvw.mjs';
|
|
8
|
+
|
|
9
|
+
//#endregion
|
|
10
|
+
//#region ---- View Session Answers Command ----
|
|
11
|
+
/**
|
|
12
|
+
* Command that opens a readonly view of assessment session answers in a dialog.
|
|
13
|
+
*/
|
|
14
|
+
class ViewSessionAnswersCommand {
|
|
15
|
+
constructor() {
|
|
16
|
+
//#region ---- Services & Dependencies ----
|
|
17
|
+
this.entityService = inject(AXPEntityService);
|
|
18
|
+
this.questionnaireViewerService = inject(AXMQuestionnaireViewerService);
|
|
19
|
+
this.translationService = inject(AXTranslationService);
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
|
22
|
+
//#region ---- Command Implementation ----
|
|
23
|
+
/**
|
|
24
|
+
* Returns a non-empty string or undefined.
|
|
25
|
+
*/
|
|
26
|
+
asNonEmptyString(value) {
|
|
27
|
+
if (isString(value) && !isEmpty(value)) {
|
|
28
|
+
return value;
|
|
29
|
+
}
|
|
30
|
+
if (value != null && !isString(value)) {
|
|
31
|
+
const normalized = toString(value).trim();
|
|
32
|
+
return isEmpty(normalized) ? undefined : normalized;
|
|
33
|
+
}
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Resolves session id from root input, action options, or related-list row data.
|
|
38
|
+
*/
|
|
39
|
+
resolveSessionId(input) {
|
|
40
|
+
const candidates = [
|
|
41
|
+
get(input, 'sessionId'),
|
|
42
|
+
get(input, 'options.sessionId'),
|
|
43
|
+
get(input, '__context__.options.sessionId'),
|
|
44
|
+
get(input, '__context__.data.id'),
|
|
45
|
+
];
|
|
46
|
+
for (const candidate of candidates) {
|
|
47
|
+
const resolved = this.asNonEmptyString(candidate);
|
|
48
|
+
if (resolved) {
|
|
49
|
+
return resolved;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Loads session from related-list row data, list query, or byKey (in that order).
|
|
56
|
+
*/
|
|
57
|
+
async loadSession(sessionId, input) {
|
|
58
|
+
const row = get(input, '__context__.data');
|
|
59
|
+
const rowCaseId = this.asNonEmptyString(get(row, 'caseId'));
|
|
60
|
+
if (row && rowCaseId) {
|
|
61
|
+
return {
|
|
62
|
+
...row,
|
|
63
|
+
id: sessionId,
|
|
64
|
+
answers: defaultTo(get(row, 'answers'), {}),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
const sessionAccessor = this.entityService
|
|
68
|
+
.withEntity(RootConfig.module.name, RootConfig.entities.assessmentSession.name)
|
|
69
|
+
.data();
|
|
70
|
+
const listMatch = await sessionAccessor.query({
|
|
71
|
+
skip: 0,
|
|
72
|
+
take: 1,
|
|
73
|
+
filter: {
|
|
74
|
+
field: 'id',
|
|
75
|
+
operator: { type: 'equal' },
|
|
76
|
+
value: sessionId,
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
const fromQuery = first(listMatch.items);
|
|
80
|
+
if (fromQuery) {
|
|
81
|
+
return fromQuery;
|
|
82
|
+
}
|
|
83
|
+
return defaultTo(await sessionAccessor.byKey(sessionId), null);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Loads case by id using query first, then byKey.
|
|
87
|
+
*/
|
|
88
|
+
async loadCase(caseId) {
|
|
89
|
+
const caseAccessor = this.entityService
|
|
90
|
+
.withEntity(RootConfig.module.name, RootConfig.entities.assessmentCase.name)
|
|
91
|
+
.data();
|
|
92
|
+
const listMatch = await caseAccessor.query({
|
|
93
|
+
skip: 0,
|
|
94
|
+
take: 1,
|
|
95
|
+
filter: {
|
|
96
|
+
field: 'id',
|
|
97
|
+
operator: { type: 'equal' },
|
|
98
|
+
value: caseId,
|
|
99
|
+
},
|
|
100
|
+
});
|
|
101
|
+
const fromQuery = first(listMatch.items);
|
|
102
|
+
if (fromQuery) {
|
|
103
|
+
return fromQuery;
|
|
104
|
+
}
|
|
105
|
+
return defaultTo(await caseAccessor.byKey(caseId), null);
|
|
106
|
+
}
|
|
107
|
+
async execute(input) {
|
|
108
|
+
try {
|
|
109
|
+
const sessionId = this.resolveSessionId(input);
|
|
110
|
+
if (!sessionId) {
|
|
111
|
+
return {
|
|
112
|
+
success: false,
|
|
113
|
+
message: {
|
|
114
|
+
text: 'Assessment session ID is required',
|
|
115
|
+
},
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
const session = await this.loadSession(sessionId, input);
|
|
119
|
+
if (!session) {
|
|
120
|
+
return {
|
|
121
|
+
success: false,
|
|
122
|
+
message: {
|
|
123
|
+
text: `Assessment session with ID ${sessionId} not found`,
|
|
124
|
+
},
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
const caseId = this.asNonEmptyString(get(session, 'caseId'));
|
|
128
|
+
if (!caseId) {
|
|
129
|
+
return {
|
|
130
|
+
success: false,
|
|
131
|
+
message: {
|
|
132
|
+
text: 'Assessment session is missing caseId',
|
|
133
|
+
},
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
const assessmentCase = await this.loadCase(caseId);
|
|
137
|
+
if (!assessmentCase) {
|
|
138
|
+
return {
|
|
139
|
+
success: false,
|
|
140
|
+
message: {
|
|
141
|
+
text: `Assessment case with ID ${caseId} not found`,
|
|
142
|
+
},
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
await openAssessmentSessionAnswersView({
|
|
146
|
+
entityService: this.entityService,
|
|
147
|
+
questionnaireViewerService: this.questionnaireViewerService,
|
|
148
|
+
translationService: this.translationService,
|
|
149
|
+
}, session, assessmentCase);
|
|
150
|
+
return {
|
|
151
|
+
success: true,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
156
|
+
return {
|
|
157
|
+
success: false,
|
|
158
|
+
message: {
|
|
159
|
+
text: `Error viewing session answers: ${message}`,
|
|
160
|
+
},
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ViewSessionAnswersCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
165
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ViewSessionAnswersCommand }); }
|
|
166
|
+
}
|
|
167
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ViewSessionAnswersCommand, decorators: [{
|
|
168
|
+
type: Injectable
|
|
169
|
+
}] });
|
|
170
|
+
|
|
171
|
+
export { ViewSessionAnswersCommand };
|
|
172
|
+
//# sourceMappingURL=acorex-modules-assessment-management-view-session-answers.command-COTVoRRG.mjs.map
|
package/fesm2022/acorex-modules-assessment-management-view-session-answers.command-COTVoRRG.mjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-modules-assessment-management-view-session-answers.command-COTVoRRG.mjs","sources":["../../../../libs/modules/assessment-management/src/lib/features/questionnaire-viewer/commands/view-session-answers.command.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPExecuteCommandResult } from '@acorex/platform/core';\nimport { AXPCommand } from '@acorex/platform/runtime';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { Injectable, inject } from '@angular/core';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { defaultTo, first, get, isEmpty, isString, toString } from 'lodash-es';\nimport { AXMQuestionnaireViewerService } from '../questionnaire-viewer.service';\nimport type { AXMAssessmentManagementAssessmentCaseEntityModel } from '../../../entities/assessment-case/assessment-case.types';\nimport type { AXMAssessmentManagementAssessmentSessionEntityModel } from '../../../entities/assessment-session/assessment-session.types';\nimport { RootConfig } from '../../../const';\nimport { openAssessmentSessionAnswersView } from '../utils/assessment-session-answers-view.util';\n\n//#endregion\n\n//#region ---- Command Input/Output Types ----\n\n/**\n * Input for ViewSessionAnswers command.\n */\nexport interface ViewSessionAnswersCommandInput {\n /**\n * Assessment Session ID to view answers for.\n */\n sessionId: string;\n}\n\n/** Entity list passes evaluated action options on `__context__.options` / row `data`. */\ntype ViewSessionAnswersCommandInvocation = ViewSessionAnswersCommandInput & {\n options?: Partial<ViewSessionAnswersCommandInput>;\n __context__?: {\n options?: Partial<ViewSessionAnswersCommandInput>;\n data?: Record<string, unknown>;\n };\n};\n\n//#endregion\n\n//#region ---- View Session Answers Command ----\n\n/**\n * Command that opens a readonly view of assessment session answers in a dialog.\n */\n@Injectable()\nexport class ViewSessionAnswersCommand implements AXPCommand<ViewSessionAnswersCommandInput, void> {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly questionnaireViewerService = inject(AXMQuestionnaireViewerService);\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Command Implementation ----\n\n /**\n * Returns a non-empty string or undefined.\n */\n private asNonEmptyString(value: unknown): string | undefined {\n if (isString(value) && !isEmpty(value)) {\n return value;\n }\n if (value != null && !isString(value)) {\n const normalized = toString(value).trim();\n return isEmpty(normalized) ? undefined : normalized;\n }\n return undefined;\n }\n\n /**\n * Resolves session id from root input, action options, or related-list row data.\n */\n private resolveSessionId(input: ViewSessionAnswersCommandInvocation): string | null {\n const candidates = [\n get(input, 'sessionId'),\n get(input, 'options.sessionId'),\n get(input, '__context__.options.sessionId'),\n get(input, '__context__.data.id'),\n ];\n\n for (const candidate of candidates) {\n const resolved = this.asNonEmptyString(candidate);\n if (resolved) {\n return resolved;\n }\n }\n\n return null;\n }\n\n /**\n * Loads session from related-list row data, list query, or byKey (in that order).\n */\n private async loadSession(\n sessionId: string,\n input: ViewSessionAnswersCommandInvocation,\n ): Promise<AXMAssessmentManagementAssessmentSessionEntityModel | null> {\n const row = get(input, '__context__.data') as Record<string, unknown> | undefined;\n const rowCaseId = this.asNonEmptyString(get(row, 'caseId'));\n\n if (row && rowCaseId) {\n return {\n ...(row as unknown as AXMAssessmentManagementAssessmentSessionEntityModel),\n id: sessionId,\n answers: defaultTo(get(row, 'answers') as Record<string, unknown> | undefined, {}),\n };\n }\n\n const sessionAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.assessmentSession.name)\n .data<string, AXMAssessmentManagementAssessmentSessionEntityModel>();\n\n const listMatch = await sessionAccessor.query({\n skip: 0,\n take: 1,\n filter: {\n field: 'id',\n operator: { type: 'equal' },\n value: sessionId,\n },\n });\n\n const fromQuery = first(listMatch.items);\n if (fromQuery) {\n return fromQuery;\n }\n\n return defaultTo(await sessionAccessor.byKey(sessionId), null);\n }\n\n /**\n * Loads case by id using query first, then byKey.\n */\n private async loadCase(caseId: string): Promise<AXMAssessmentManagementAssessmentCaseEntityModel | null> {\n const caseAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.assessmentCase.name)\n .data<string, AXMAssessmentManagementAssessmentCaseEntityModel>();\n\n const listMatch = await caseAccessor.query({\n skip: 0,\n take: 1,\n filter: {\n field: 'id',\n operator: { type: 'equal' },\n value: caseId,\n },\n });\n\n const fromQuery = first(listMatch.items);\n if (fromQuery) {\n return fromQuery;\n }\n\n return defaultTo(await caseAccessor.byKey(caseId), null);\n }\n\n async execute(input: ViewSessionAnswersCommandInvocation): Promise<AXPExecuteCommandResult<void>> {\n try {\n const sessionId = this.resolveSessionId(input);\n if (!sessionId) {\n return {\n success: false,\n message: {\n text: 'Assessment session ID is required',\n },\n };\n }\n\n const session = await this.loadSession(sessionId, input);\n if (!session) {\n return {\n success: false,\n message: {\n text: `Assessment session with ID ${sessionId} not found`,\n },\n };\n }\n\n const caseId = this.asNonEmptyString(get(session, 'caseId'));\n if (!caseId) {\n return {\n success: false,\n message: {\n text: 'Assessment session is missing caseId',\n },\n };\n }\n\n const assessmentCase = await this.loadCase(caseId);\n if (!assessmentCase) {\n return {\n success: false,\n message: {\n text: `Assessment case with ID ${caseId} not found`,\n },\n };\n }\n\n await openAssessmentSessionAnswersView(\n {\n entityService: this.entityService,\n questionnaireViewerService: this.questionnaireViewerService,\n translationService: this.translationService,\n },\n session,\n assessmentCase,\n );\n\n return {\n success: true,\n };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Unknown error';\n return {\n success: false,\n message: {\n text: `Error viewing session answers: ${message}`,\n },\n };\n }\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
|
package/fesm2022/acorex-modules-assessment-management-view-session-outcomes.command-2buH7ydV.mjs
ADDED
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import { AXTranslationService } from '@acorex/core/translation';
|
|
2
|
+
import { AXPLayoutBuilderService } from '@acorex/platform/layout/builder';
|
|
3
|
+
import { AXPEntityService } from '@acorex/platform/layout/entity';
|
|
4
|
+
import * as i0 from '@angular/core';
|
|
5
|
+
import { inject, Injectable } from '@angular/core';
|
|
6
|
+
import { defaultTo, get, isEmpty, isString, toString, first } from 'lodash-es';
|
|
7
|
+
import { m as mapToOutcomeResultsViewModel, A as AXMQuestionnaireViewerService, R as RootConfig } from './acorex-modules-assessment-management-acorex-modules-assessment-management-DlhSQ0cB.mjs';
|
|
8
|
+
|
|
9
|
+
//#region ---- Imports ----
|
|
10
|
+
//#endregion
|
|
11
|
+
//#region ---- Viewer ----
|
|
12
|
+
/**
|
|
13
|
+
* Opens a dialog that shows stored session outcome snapshots (no re-evaluation).
|
|
14
|
+
*/
|
|
15
|
+
async function openAssessmentSessionOutcomesView(deps, session, assessmentCase) {
|
|
16
|
+
const questionnaireId = assessmentCase.questionnaireId;
|
|
17
|
+
if (!questionnaireId) {
|
|
18
|
+
throw new Error('Assessment case is missing questionnaireId');
|
|
19
|
+
}
|
|
20
|
+
const storedOutcomes = defaultTo(get(session, 'outcomes'), {});
|
|
21
|
+
if (isEmpty(storedOutcomes)) {
|
|
22
|
+
throw new Error('Assessment session has no stored outcome results');
|
|
23
|
+
}
|
|
24
|
+
const snapshot = await deps.questionnaireViewerService.buildOutcomeResultsFromStoredValues(storedOutcomes, {
|
|
25
|
+
questionnaireId,
|
|
26
|
+
});
|
|
27
|
+
const locale = deps.translationService.getActiveLang?.() ?? 'en-US';
|
|
28
|
+
const sectionTitle = await deps.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-viewer.flow.outcomes-section-title');
|
|
29
|
+
const emptyMessage = await deps.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-viewer.flow.no-outcomes');
|
|
30
|
+
const viewModel = {
|
|
31
|
+
...mapToOutcomeResultsViewModel(snapshot, { locale }),
|
|
32
|
+
title: sectionTitle,
|
|
33
|
+
emptyMessage,
|
|
34
|
+
};
|
|
35
|
+
const viewTitleKey = '@assessment-management:sessions.actions.view-outcomes.title';
|
|
36
|
+
const viewTitleBase = (await deps.translationService.translateAsync(viewTitleKey)) || 'View outcome results';
|
|
37
|
+
const responderName = defaultTo(get(session, 'responder.displayName'), get(session, 'responderId'));
|
|
38
|
+
const viewTitle = !isEmpty(responderName) ? `${viewTitleBase}: ${responderName}` : viewTitleBase;
|
|
39
|
+
const dialogRef = await deps.layoutBuilder
|
|
40
|
+
.create()
|
|
41
|
+
.dialog((dialog) => {
|
|
42
|
+
dialog
|
|
43
|
+
.setTitle(viewTitle)
|
|
44
|
+
.setSize('lg')
|
|
45
|
+
.content((content) => {
|
|
46
|
+
content.customWidget('outcome-results-viewer', (widget) => {
|
|
47
|
+
widget.path('outcomeResults');
|
|
48
|
+
});
|
|
49
|
+
})
|
|
50
|
+
.setContext({
|
|
51
|
+
outcomeResults: viewModel,
|
|
52
|
+
})
|
|
53
|
+
.setActions((actions) => {
|
|
54
|
+
actions.cancel('@general:actions.close.title');
|
|
55
|
+
});
|
|
56
|
+
})
|
|
57
|
+
.show();
|
|
58
|
+
if (dialogRef.action() === 'cancel') {
|
|
59
|
+
dialogRef.close();
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//#endregion
|
|
63
|
+
|
|
64
|
+
//#region ---- Imports ----
|
|
65
|
+
//#endregion
|
|
66
|
+
//#region ---- View Session Outcomes Command ----
|
|
67
|
+
/**
|
|
68
|
+
* Command that opens a dialog showing stored outcome snapshots for an assessment session.
|
|
69
|
+
*/
|
|
70
|
+
class ViewSessionOutcomesCommand {
|
|
71
|
+
constructor() {
|
|
72
|
+
//#region ---- Services & Dependencies ----
|
|
73
|
+
this.entityService = inject(AXPEntityService);
|
|
74
|
+
this.questionnaireViewerService = inject(AXMQuestionnaireViewerService);
|
|
75
|
+
this.translationService = inject(AXTranslationService);
|
|
76
|
+
this.layoutBuilder = inject(AXPLayoutBuilderService);
|
|
77
|
+
}
|
|
78
|
+
//#endregion
|
|
79
|
+
//#region ---- Command Implementation ----
|
|
80
|
+
/**
|
|
81
|
+
* Returns a non-empty string or undefined.
|
|
82
|
+
*/
|
|
83
|
+
asNonEmptyString(value) {
|
|
84
|
+
if (isString(value) && !isEmpty(value)) {
|
|
85
|
+
return value;
|
|
86
|
+
}
|
|
87
|
+
if (value != null && !isString(value)) {
|
|
88
|
+
const normalized = toString(value).trim();
|
|
89
|
+
return isEmpty(normalized) ? undefined : normalized;
|
|
90
|
+
}
|
|
91
|
+
return undefined;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Resolves session id from root input, action options, or related-list row data.
|
|
95
|
+
*/
|
|
96
|
+
resolveSessionId(input) {
|
|
97
|
+
const candidates = [
|
|
98
|
+
get(input, 'sessionId'),
|
|
99
|
+
get(input, 'options.sessionId'),
|
|
100
|
+
get(input, '__context__.options.sessionId'),
|
|
101
|
+
get(input, '__context__.data.id'),
|
|
102
|
+
];
|
|
103
|
+
for (const candidate of candidates) {
|
|
104
|
+
const resolved = this.asNonEmptyString(candidate);
|
|
105
|
+
if (resolved) {
|
|
106
|
+
return resolved;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Loads session from related-list row data, list query, or byKey (in that order).
|
|
113
|
+
*/
|
|
114
|
+
async loadSession(sessionId, input) {
|
|
115
|
+
const row = get(input, '__context__.data');
|
|
116
|
+
const rowCaseId = this.asNonEmptyString(get(row, 'caseId'));
|
|
117
|
+
if (row && rowCaseId) {
|
|
118
|
+
return {
|
|
119
|
+
...row,
|
|
120
|
+
id: sessionId,
|
|
121
|
+
outcomes: defaultTo(get(row, 'outcomes'), {}),
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
const sessionAccessor = this.entityService
|
|
125
|
+
.withEntity(RootConfig.module.name, RootConfig.entities.assessmentSession.name)
|
|
126
|
+
.data();
|
|
127
|
+
const listMatch = await sessionAccessor.query({
|
|
128
|
+
skip: 0,
|
|
129
|
+
take: 1,
|
|
130
|
+
filter: {
|
|
131
|
+
field: 'id',
|
|
132
|
+
operator: { type: 'equal' },
|
|
133
|
+
value: sessionId,
|
|
134
|
+
},
|
|
135
|
+
});
|
|
136
|
+
const fromQuery = first(listMatch.items);
|
|
137
|
+
if (fromQuery) {
|
|
138
|
+
return fromQuery;
|
|
139
|
+
}
|
|
140
|
+
return defaultTo(await sessionAccessor.byKey(sessionId), null);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Loads case by id using query first, then byKey.
|
|
144
|
+
*/
|
|
145
|
+
async loadCase(caseId) {
|
|
146
|
+
const caseAccessor = this.entityService
|
|
147
|
+
.withEntity(RootConfig.module.name, RootConfig.entities.assessmentCase.name)
|
|
148
|
+
.data();
|
|
149
|
+
const listMatch = await caseAccessor.query({
|
|
150
|
+
skip: 0,
|
|
151
|
+
take: 1,
|
|
152
|
+
filter: {
|
|
153
|
+
field: 'id',
|
|
154
|
+
operator: { type: 'equal' },
|
|
155
|
+
value: caseId,
|
|
156
|
+
},
|
|
157
|
+
});
|
|
158
|
+
const fromQuery = first(listMatch.items);
|
|
159
|
+
if (fromQuery) {
|
|
160
|
+
return fromQuery;
|
|
161
|
+
}
|
|
162
|
+
return defaultTo(await caseAccessor.byKey(caseId), null);
|
|
163
|
+
}
|
|
164
|
+
async execute(input) {
|
|
165
|
+
try {
|
|
166
|
+
const sessionId = this.resolveSessionId(input);
|
|
167
|
+
if (!sessionId) {
|
|
168
|
+
return {
|
|
169
|
+
success: false,
|
|
170
|
+
message: {
|
|
171
|
+
text: 'Assessment session ID is required',
|
|
172
|
+
},
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
const session = await this.loadSession(sessionId, input);
|
|
176
|
+
if (!session) {
|
|
177
|
+
return {
|
|
178
|
+
success: false,
|
|
179
|
+
message: {
|
|
180
|
+
text: `Assessment session with ID ${sessionId} not found`,
|
|
181
|
+
},
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
const storedOutcomes = get(session, 'outcomes');
|
|
185
|
+
if (isEmpty(storedOutcomes)) {
|
|
186
|
+
return {
|
|
187
|
+
success: false,
|
|
188
|
+
message: {
|
|
189
|
+
text: await this.translationService.translateAsync('@assessment-management:sessions.actions.view-outcomes.empty'),
|
|
190
|
+
},
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
const caseId = this.asNonEmptyString(get(session, 'caseId'));
|
|
194
|
+
if (!caseId) {
|
|
195
|
+
return {
|
|
196
|
+
success: false,
|
|
197
|
+
message: {
|
|
198
|
+
text: 'Assessment session is missing caseId',
|
|
199
|
+
},
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
const assessmentCase = await this.loadCase(caseId);
|
|
203
|
+
if (!assessmentCase) {
|
|
204
|
+
return {
|
|
205
|
+
success: false,
|
|
206
|
+
message: {
|
|
207
|
+
text: `Assessment case with ID ${caseId} not found`,
|
|
208
|
+
},
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
await openAssessmentSessionOutcomesView({
|
|
212
|
+
entityService: this.entityService,
|
|
213
|
+
questionnaireViewerService: this.questionnaireViewerService,
|
|
214
|
+
translationService: this.translationService,
|
|
215
|
+
layoutBuilder: this.layoutBuilder,
|
|
216
|
+
}, session, assessmentCase);
|
|
217
|
+
return {
|
|
218
|
+
success: true,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
catch (error) {
|
|
222
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
223
|
+
return {
|
|
224
|
+
success: false,
|
|
225
|
+
message: {
|
|
226
|
+
text: `Error viewing session outcomes: ${message}`,
|
|
227
|
+
},
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ViewSessionOutcomesCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
232
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ViewSessionOutcomesCommand }); }
|
|
233
|
+
}
|
|
234
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ViewSessionOutcomesCommand, decorators: [{
|
|
235
|
+
type: Injectable
|
|
236
|
+
}] });
|
|
237
|
+
|
|
238
|
+
export { ViewSessionOutcomesCommand };
|
|
239
|
+
//# sourceMappingURL=acorex-modules-assessment-management-view-session-outcomes.command-2buH7ydV.mjs.map
|
package/fesm2022/acorex-modules-assessment-management-view-session-outcomes.command-2buH7ydV.mjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-modules-assessment-management-view-session-outcomes.command-2buH7ydV.mjs","sources":["../../../../libs/modules/assessment-management/src/lib/features/questionnaire-viewer/utils/assessment-session-outcomes-view.util.ts","../../../../libs/modules/assessment-management/src/lib/features/questionnaire-viewer/commands/view-session-outcomes.command.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXTranslationService } from '@acorex/core/translation';\nimport type { AXPOutcomeResultsViewModel } from '@acorex/platform/layout/components';\nimport { AXPLayoutBuilderService, type IWidgetBuilder } from '@acorex/platform/layout/builder';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { defaultTo, get, isEmpty } from 'lodash-es';\nimport type { AXMAssessmentManagementAssessmentCaseEntityModel } from '../../../entities/assessment-case/assessment-case.types';\nimport type { AXMAssessmentManagementAssessmentSessionEntityModel } from '../../../entities/assessment-session/assessment-session.types';\nimport { RootConfig } from '../../../const';\nimport { AXMQuestionnaireViewerService } from '../questionnaire-viewer.service';\nimport { mapToOutcomeResultsViewModel } from './outcome-results-view.mapper';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport interface OpenAssessmentSessionOutcomesViewDeps {\n entityService: AXPEntityService;\n questionnaireViewerService: AXMQuestionnaireViewerService;\n translationService: AXTranslationService;\n layoutBuilder: AXPLayoutBuilderService;\n}\n\n//#endregion\n\n//#region ---- Viewer ----\n\n/**\n * Opens a dialog that shows stored session outcome snapshots (no re-evaluation).\n */\nexport async function openAssessmentSessionOutcomesView(\n deps: OpenAssessmentSessionOutcomesViewDeps,\n session: AXMAssessmentManagementAssessmentSessionEntityModel,\n assessmentCase: AXMAssessmentManagementAssessmentCaseEntityModel,\n): Promise<void> {\n const questionnaireId = assessmentCase.questionnaireId;\n if (!questionnaireId) {\n throw new Error('Assessment case is missing questionnaireId');\n }\n\n const storedOutcomes = defaultTo(get(session, 'outcomes') as Record<string, unknown> | undefined, {});\n if (isEmpty(storedOutcomes)) {\n throw new Error('Assessment session has no stored outcome results');\n }\n\n const snapshot = await deps.questionnaireViewerService.buildOutcomeResultsFromStoredValues(storedOutcomes, {\n questionnaireId,\n });\n\n const locale = deps.translationService.getActiveLang?.() ?? 'en-US';\n const sectionTitle = await deps.translationService.translateAsync(\n '@assessment-management:questionnaires.components.questionnaire-viewer.flow.outcomes-section-title',\n );\n const emptyMessage = await deps.translationService.translateAsync(\n '@assessment-management:questionnaires.components.questionnaire-viewer.flow.no-outcomes',\n );\n\n const viewModel: AXPOutcomeResultsViewModel = {\n ...mapToOutcomeResultsViewModel(snapshot, { locale }),\n title: sectionTitle,\n emptyMessage,\n };\n\n const viewTitleKey = '@assessment-management:sessions.actions.view-outcomes.title';\n const viewTitleBase = (await deps.translationService.translateAsync(viewTitleKey)) || 'View outcome results';\n const responderName = defaultTo(get(session, 'responder.displayName'), get(session, 'responderId'));\n const viewTitle = !isEmpty(responderName) ? `${viewTitleBase}: ${responderName}` : viewTitleBase;\n\n const dialogRef = await deps.layoutBuilder\n .create()\n .dialog((dialog) => {\n dialog\n .setTitle(viewTitle)\n .setSize('lg')\n .content((content) => {\n content.customWidget('outcome-results-viewer', (widget: IWidgetBuilder) => {\n widget.path('outcomeResults');\n });\n })\n .setContext({\n outcomeResults: viewModel,\n })\n .setActions((actions) => {\n actions.cancel('@general:actions.close.title');\n });\n })\n .show();\n\n if (dialogRef.action() === 'cancel') {\n dialogRef.close();\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPExecuteCommandResult } from '@acorex/platform/core';\nimport { AXPLayoutBuilderService } from '@acorex/platform/layout/builder';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { AXPCommand } from '@acorex/platform/runtime';\nimport { Injectable, inject } from '@angular/core';\nimport { defaultTo, first, get, isEmpty, isString, toString } from 'lodash-es';\nimport type { AXMAssessmentManagementAssessmentCaseEntityModel } from '../../../entities/assessment-case/assessment-case.types';\nimport type { AXMAssessmentManagementAssessmentSessionEntityModel } from '../../../entities/assessment-session/assessment-session.types';\nimport { RootConfig } from '../../../const';\nimport { AXMQuestionnaireViewerService } from '../questionnaire-viewer.service';\nimport { openAssessmentSessionOutcomesView } from '../utils/assessment-session-outcomes-view.util';\n\n//#endregion\n\n//#region ---- Command Input/Output Types ----\n\n/**\n * Input for ViewSessionOutcomes command.\n */\nexport interface ViewSessionOutcomesCommandInput {\n /**\n * Assessment Session ID to view stored outcome results for.\n */\n sessionId: string;\n}\n\n/** Entity list passes evaluated action options on `__context__.options` / row `data`. */\ntype ViewSessionOutcomesCommandInvocation = ViewSessionOutcomesCommandInput & {\n options?: Partial<ViewSessionOutcomesCommandInput>;\n __context__?: {\n options?: Partial<ViewSessionOutcomesCommandInput>;\n data?: Record<string, unknown>;\n };\n};\n\n//#endregion\n\n//#region ---- View Session Outcomes Command ----\n\n/**\n * Command that opens a dialog showing stored outcome snapshots for an assessment session.\n */\n@Injectable()\nexport class ViewSessionOutcomesCommand implements AXPCommand<ViewSessionOutcomesCommandInput, void> {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly questionnaireViewerService = inject(AXMQuestionnaireViewerService);\n private readonly translationService = inject(AXTranslationService);\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n\n //#endregion\n\n //#region ---- Command Implementation ----\n\n /**\n * Returns a non-empty string or undefined.\n */\n private asNonEmptyString(value: unknown): string | undefined {\n if (isString(value) && !isEmpty(value)) {\n return value;\n }\n if (value != null && !isString(value)) {\n const normalized = toString(value).trim();\n return isEmpty(normalized) ? undefined : normalized;\n }\n return undefined;\n }\n\n /**\n * Resolves session id from root input, action options, or related-list row data.\n */\n private resolveSessionId(input: ViewSessionOutcomesCommandInvocation): string | null {\n const candidates = [\n get(input, 'sessionId'),\n get(input, 'options.sessionId'),\n get(input, '__context__.options.sessionId'),\n get(input, '__context__.data.id'),\n ];\n\n for (const candidate of candidates) {\n const resolved = this.asNonEmptyString(candidate);\n if (resolved) {\n return resolved;\n }\n }\n\n return null;\n }\n\n /**\n * Loads session from related-list row data, list query, or byKey (in that order).\n */\n private async loadSession(\n sessionId: string,\n input: ViewSessionOutcomesCommandInvocation,\n ): Promise<AXMAssessmentManagementAssessmentSessionEntityModel | null> {\n const row = get(input, '__context__.data') as Record<string, unknown> | undefined;\n const rowCaseId = this.asNonEmptyString(get(row, 'caseId'));\n\n if (row && rowCaseId) {\n return {\n ...(row as unknown as AXMAssessmentManagementAssessmentSessionEntityModel),\n id: sessionId,\n outcomes: defaultTo(get(row, 'outcomes') as Record<string, unknown> | undefined, {}),\n };\n }\n\n const sessionAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.assessmentSession.name)\n .data<string, AXMAssessmentManagementAssessmentSessionEntityModel>();\n\n const listMatch = await sessionAccessor.query({\n skip: 0,\n take: 1,\n filter: {\n field: 'id',\n operator: { type: 'equal' },\n value: sessionId,\n },\n });\n\n const fromQuery = first(listMatch.items);\n if (fromQuery) {\n return fromQuery;\n }\n\n return defaultTo(await sessionAccessor.byKey(sessionId), null);\n }\n\n /**\n * Loads case by id using query first, then byKey.\n */\n private async loadCase(caseId: string): Promise<AXMAssessmentManagementAssessmentCaseEntityModel | null> {\n const caseAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.assessmentCase.name)\n .data<string, AXMAssessmentManagementAssessmentCaseEntityModel>();\n\n const listMatch = await caseAccessor.query({\n skip: 0,\n take: 1,\n filter: {\n field: 'id',\n operator: { type: 'equal' },\n value: caseId,\n },\n });\n\n const fromQuery = first(listMatch.items);\n if (fromQuery) {\n return fromQuery;\n }\n\n return defaultTo(await caseAccessor.byKey(caseId), null);\n }\n\n async execute(input: ViewSessionOutcomesCommandInvocation): Promise<AXPExecuteCommandResult<void>> {\n try {\n const sessionId = this.resolveSessionId(input);\n if (!sessionId) {\n return {\n success: false,\n message: {\n text: 'Assessment session ID is required',\n },\n };\n }\n\n const session = await this.loadSession(sessionId, input);\n if (!session) {\n return {\n success: false,\n message: {\n text: `Assessment session with ID ${sessionId} not found`,\n },\n };\n }\n\n const storedOutcomes = get(session, 'outcomes') as Record<string, unknown> | undefined;\n if (isEmpty(storedOutcomes)) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync(\n '@assessment-management:sessions.actions.view-outcomes.empty',\n ),\n },\n };\n }\n\n const caseId = this.asNonEmptyString(get(session, 'caseId'));\n if (!caseId) {\n return {\n success: false,\n message: {\n text: 'Assessment session is missing caseId',\n },\n };\n }\n\n const assessmentCase = await this.loadCase(caseId);\n if (!assessmentCase) {\n return {\n success: false,\n message: {\n text: `Assessment case with ID ${caseId} not found`,\n },\n };\n }\n\n await openAssessmentSessionOutcomesView(\n {\n entityService: this.entityService,\n questionnaireViewerService: this.questionnaireViewerService,\n translationService: this.translationService,\n layoutBuilder: this.layoutBuilder,\n },\n session,\n assessmentCase,\n );\n\n return {\n success: true,\n };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Unknown error';\n return {\n success: false,\n message: {\n text: `Error viewing session outcomes: ${message}`,\n },\n };\n }\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
|