@acorex-platform/module-assessment-management-client 2.0.0-next.0 → 2.0.0-next.2
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/fesm2022/{acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-kwOuHx62.mjs → acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-Dr56BtSo.mjs} +73 -67
- package/fesm2022/acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-Dr56BtSo.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-assessment-management-client-assessment-voice.commands-CtcvGNf-.mjs → acorex-platform-module-assessment-management-client-assessment-voice.commands-Zv4Q1ASd.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-assessment-management-client-assessment-voice.commands-CtcvGNf-.mjs.map → acorex-platform-module-assessment-management-client-assessment-voice.commands-Zv4Q1ASd.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entities-assessment-case.mjs +10 -0
- package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entities-assessment-case.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entities-questionnaire.mjs +12 -2
- package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entities-questionnaire.mjs.map +1 -1
- package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-acorex-platform-module-assessment-management-client-contracts-entity-catalog-DDCy1T4t.mjs → acorex-platform-module-assessment-management-client-contracts-entity-catalog-acorex-platform-module-assessment-management-client-contracts-entity-catalog-Buqp2FnP.mjs} +6 -6
- package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-acorex-platform-module-assessment-management-client-contracts-entity-catalog-DDCy1T4t.mjs.map → acorex-platform-module-assessment-management-client-contracts-entity-catalog-acorex-platform-module-assessment-management-client-contracts-entity-catalog-Buqp2FnP.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-case.entity-DXJp2k3o.mjs → acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-case.entity-IAO_eHLl.mjs} +6 -2
- package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-case.entity-IAO_eHLl.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-session.entity-Q7-5toSQ.mjs → acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-session.entity-BVVzsiLh.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-session.entity-Q7-5toSQ.mjs.map → acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-session.entity-BVVzsiLh.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-features.keys-BVOMWggD.mjs +9 -0
- package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-features.keys-BVOMWggD.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-question-bank-item.entity-CPEpSSlP.mjs → acorex-platform-module-assessment-management-client-contracts-entity-catalog-question-bank-item.entity-WON7pvW1.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-question-bank-item.entity-CPEpSSlP.mjs.map → acorex-platform-module-assessment-management-client-contracts-entity-catalog-question-bank-item.entity-WON7pvW1.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-questionnaire.entity-DOG7yHv-.mjs → acorex-platform-module-assessment-management-client-contracts-entity-catalog-questionnaire.entity-BZ5FdPuP.mjs} +8 -4
- package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-questionnaire.entity-BZ5FdPuP.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-template.entity-BeYGYRb7.mjs → acorex-platform-module-assessment-management-client-contracts-entity-catalog-template.entity-L_p7_kL1.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-template.entity-BeYGYRb7.mjs.map → acorex-platform-module-assessment-management-client-contracts-entity-catalog-template.entity-L_p7_kL1.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog.mjs +1 -1
- package/fesm2022/acorex-platform-module-assessment-management-client-contracts.mjs +2 -0
- package/fesm2022/acorex-platform-module-assessment-management-client-contracts.mjs.map +1 -1
- package/fesm2022/{acorex-platform-module-assessment-management-client-fill-assessment-session.command-CimjqylS.mjs → acorex-platform-module-assessment-management-client-fill-assessment-session.command-B88LFQGF.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-assessment-management-client-fill-assessment-session.command-CimjqylS.mjs.map → acorex-platform-module-assessment-management-client-fill-assessment-session.command-B88LFQGF.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-assessment-management-client-form-template-viewer-popup.component-CotFW7s2.mjs → acorex-platform-module-assessment-management-client-form-template-viewer-popup.component-BnSOK29v.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-assessment-management-client-form-template-viewer-popup.component-CotFW7s2.mjs.map → acorex-platform-module-assessment-management-client-form-template-viewer-popup.component-BnSOK29v.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-assessment-management-client-form-template-viewer.service-D8fZ47sd.mjs → acorex-platform-module-assessment-management-client-form-template-viewer.service-FsoP5GoC.mjs} +3 -3
- package/fesm2022/{acorex-platform-module-assessment-management-client-form-template-viewer.service-D8fZ47sd.mjs.map → acorex-platform-module-assessment-management-client-form-template-viewer.service-FsoP5GoC.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-assessment-management-client-index-Bl0lyOlF.mjs → acorex-platform-module-assessment-management-client-index-CY7Rj5LR.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-assessment-management-client-index-Bl0lyOlF.mjs.map → acorex-platform-module-assessment-management-client-index-CY7Rj5LR.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-assessment-management-client-open-form-template.command-C3tCVcd7.mjs → acorex-platform-module-assessment-management-client-open-form-template.command-A-TnX3P_.mjs} +3 -3
- package/fesm2022/{acorex-platform-module-assessment-management-client-open-form-template.command-C3tCVcd7.mjs.map → acorex-platform-module-assessment-management-client-open-form-template.command-A-TnX3P_.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-assessment-management-client-preview-form-template.command-CsRk-3Q9.mjs → acorex-platform-module-assessment-management-client-preview-form-template.command-C2oXajyi.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-assessment-management-client-preview-form-template.command-CsRk-3Q9.mjs.map → acorex-platform-module-assessment-management-client-preview-form-template.command-C2oXajyi.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-assessment-management-client-preview-question.command-BgY1J9Xh.mjs → acorex-platform-module-assessment-management-client-preview-question.command-CMInpf_N.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-assessment-management-client-preview-question.command-BgY1J9Xh.mjs.map → acorex-platform-module-assessment-management-client-preview-question.command-CMInpf_N.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-assessment-management-client-preview-questionnaire.command-WD8wW-bw.mjs → acorex-platform-module-assessment-management-client-preview-questionnaire.command-BCl7mxLu.mjs} +3 -2
- package/fesm2022/acorex-platform-module-assessment-management-client-preview-questionnaire.command-BCl7mxLu.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-assessment-management-client-question-bank-interface-editor-widget-edit.component-DY8Fk3fM.mjs → acorex-platform-module-assessment-management-client-question-bank-interface-editor-widget-edit.component-SUpzNllw.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-assessment-management-client-question-bank-interface-editor-widget-edit.component-DY8Fk3fM.mjs.map → acorex-platform-module-assessment-management-client-question-bank-interface-editor-widget-edit.component-SUpzNllw.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-assessment-management-client-questionnaire-questions-editor-edit.component-H2USWjbM.mjs → acorex-platform-module-assessment-management-client-questionnaire-questions-editor-edit.component-DNNHMsa1.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-assessment-management-client-questionnaire-questions-editor-edit.component-H2USWjbM.mjs.map → acorex-platform-module-assessment-management-client-questionnaire-questions-editor-edit.component-DNNHMsa1.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-assessment-management-client-questionnaire-viewer-edit.component-DQzu4IOs.mjs → acorex-platform-module-assessment-management-client-questionnaire-viewer-edit.component-CFsLdcCd.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-assessment-management-client-questionnaire-viewer-edit.component-DQzu4IOs.mjs.map → acorex-platform-module-assessment-management-client-questionnaire-viewer-edit.component-CFsLdcCd.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-assessment-management-client-questionnaire-viewer-popup.component-DkwPx-gd.mjs → acorex-platform-module-assessment-management-client-questionnaire-viewer-popup.component-_VaiHN2w.mjs} +8 -5
- package/fesm2022/acorex-platform-module-assessment-management-client-questionnaire-viewer-popup.component-_VaiHN2w.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-assessment-management-client-related-content-viewer-page-component.provider-CC-BCqXP.mjs → acorex-platform-module-assessment-management-client-related-content-viewer-page-component.provider-tSXHNIPe.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-assessment-management-client-related-content-viewer-page-component.provider-CC-BCqXP.mjs.map → acorex-platform-module-assessment-management-client-related-content-viewer-page-component.provider-tSXHNIPe.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-assessment-management-client-review-assessment-session.command-CiP6lJ7H.mjs → acorex-platform-module-assessment-management-client-review-assessment-session.command-ei5Yuxft.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-assessment-management-client-review-assessment-session.command-CiP6lJ7H.mjs.map → acorex-platform-module-assessment-management-client-review-assessment-session.command-ei5Yuxft.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-assessment-management-client-show-form-template-viewer-popup.command-B6VYZDv5.mjs → acorex-platform-module-assessment-management-client-show-form-template-viewer-popup.command-CC_MiEhE.mjs} +3 -3
- package/fesm2022/{acorex-platform-module-assessment-management-client-show-form-template-viewer-popup.command-B6VYZDv5.mjs.map → acorex-platform-module-assessment-management-client-show-form-template-viewer-popup.command-CC_MiEhE.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-assessment-management-client-show-questionnaire-questions-popup.command-DdRW1b8S.mjs → acorex-platform-module-assessment-management-client-show-questionnaire-questions-popup.command-6yO3hkNQ.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-assessment-management-client-show-questionnaire-questions-popup.command-DdRW1b8S.mjs.map → acorex-platform-module-assessment-management-client-show-questionnaire-questions-popup.command-6yO3hkNQ.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-assessment-management-client-show-questionnaire-viewer-popup.command-CM78H7mA.mjs → acorex-platform-module-assessment-management-client-show-questionnaire-viewer-popup.command-BgiXwWzD.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-assessment-management-client-show-questionnaire-viewer-popup.command-CM78H7mA.mjs.map → acorex-platform-module-assessment-management-client-show-questionnaire-viewer-popup.command-BgiXwWzD.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-assessment-management-client-template-widget-edit.component-wKfBtWT5.mjs → acorex-platform-module-assessment-management-client-template-widget-edit.component-Bw4pp8op.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-assessment-management-client-template-widget-edit.component-wKfBtWT5.mjs.map → acorex-platform-module-assessment-management-client-template-widget-edit.component-Bw4pp8op.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-assessment-management-client-test-sheet-cell-type-widget-edit.component-CzIEAF5x.mjs → acorex-platform-module-assessment-management-client-test-sheet-cell-type-widget-edit.component-DIug50SN.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-assessment-management-client-test-sheet-cell-type-widget-edit.component-CzIEAF5x.mjs.map → acorex-platform-module-assessment-management-client-test-sheet-cell-type-widget-edit.component-DIug50SN.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-assessment-management-client-test-sheet-grid.component-Bnk3D-XP.mjs → acorex-platform-module-assessment-management-client-test-sheet-grid.component-BgFhyqrK.mjs} +3 -3
- package/fesm2022/{acorex-platform-module-assessment-management-client-test-sheet-grid.component-Bnk3D-XP.mjs.map → acorex-platform-module-assessment-management-client-test-sheet-grid.component-BgFhyqrK.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-assessment-management-client-test-sheet-schema-widget-edit.component-CcW25ca0.mjs → acorex-platform-module-assessment-management-client-test-sheet-schema-widget-edit.component-D320BoBB.mjs} +3 -3
- package/fesm2022/{acorex-platform-module-assessment-management-client-test-sheet-schema-widget-edit.component-CcW25ca0.mjs.map → acorex-platform-module-assessment-management-client-test-sheet-schema-widget-edit.component-D320BoBB.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-assessment-management-client-test-sheet-widget-edit.component-aNeP4b0V.mjs → acorex-platform-module-assessment-management-client-test-sheet-widget-edit.component-DCuQsJUO.mjs} +3 -3
- package/fesm2022/{acorex-platform-module-assessment-management-client-test-sheet-widget-edit.component-aNeP4b0V.mjs.map → acorex-platform-module-assessment-management-client-test-sheet-widget-edit.component-DCuQsJUO.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-assessment-management-client-test-sheet-widget-view.component-zCAaOqjf.mjs → acorex-platform-module-assessment-management-client-test-sheet-widget-view.component-DT0jt6Cd.mjs} +3 -3
- package/fesm2022/{acorex-platform-module-assessment-management-client-test-sheet-widget-view.component-zCAaOqjf.mjs.map → acorex-platform-module-assessment-management-client-test-sheet-widget-view.component-DT0jt6Cd.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-assessment-management-client-test-sheet.util-ycKdHd3Z.mjs → acorex-platform-module-assessment-management-client-test-sheet.util-CxWsnTvd.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-assessment-management-client-test-sheet.util-ycKdHd3Z.mjs.map → acorex-platform-module-assessment-management-client-test-sheet.util-CxWsnTvd.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-assessment-management-client-view-session-answers.command-Bi-Dwlld.mjs → acorex-platform-module-assessment-management-client-view-session-answers.command-rsDFSIgz.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-assessment-management-client-view-session-answers.command-Bi-Dwlld.mjs.map → acorex-platform-module-assessment-management-client-view-session-answers.command-rsDFSIgz.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-assessment-management-client.mjs +1 -1
- package/i18n/en-AU/assessment-management.json +5 -1
- package/i18n/en-US/assessment-management.json +5 -1
- package/i18n/fa-IR/assessment-management.json +4 -0
- package/package.json +4 -4
- package/types/acorex-platform-module-assessment-management-client-contracts.d.ts +2 -0
- package/types/acorex-platform-module-assessment-management-client.d.ts +4 -0
- package/fesm2022/acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-kwOuHx62.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-case.entity-DXJp2k3o.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-questionnaire.entity-DOG7yHv-.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-assessment-management-client-preview-questionnaire.command-WD8wW-bw.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-assessment-management-client-questionnaire-viewer-popup.component-DkwPx-gd.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-assessment-management-client-preview-questionnaire.command-BCl7mxLu.mjs","sources":["../../../../libs/modules/assessment-management/client/src/lib/features/questionnaire-viewer/commands/preview-questionnaire.command.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\n\nimport { AXTranslationService, resolveMultiLanguageString } from '@acorex/core/translation';\nimport { Injectable, inject } from '@angular/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXMQuestionnaireViewerService } from '../../../features/questionnaire-viewer/questionnaire-viewer.service';\nimport {\n type AXMAssessmentManagementQuestionnaireEntityModel,\n toDisplaySettings,\n toPrePostConfig,\n toPrintSettings,\n} from '@acorex-platform/module-assessment-management-client/contracts';\nimport { RootConfig } from '@acorex-platform/module-assessment-management-client/contracts';\nimport { formatQuestionnairePreviewDialogTitle } from '../utils/questionnaire-preview-title.util';\n\n//#endregion\n\n//#region ---- Command Input/Output Types ----\n\n/**\n * Input for PreviewQuestionnaire command.\n */\nexport interface AXPPreviewQuestionnaireCommandInput {\n /**\n * Questionnaire ID to preview.\n */\n questionnaireId: string;\n\n /**\n * Questionnaire title (for display).\n */\n questionnaireTitle?: string;\n}\n\n/** Entity list passes evaluated action options on `options` (see entity-master-list view model). */\ntype AXPPreviewQuestionnaireCommandInvocation = AXPPreviewQuestionnaireCommandInput & {\n data?: Record<string, unknown>;\n options?: Partial<AXPPreviewQuestionnaireCommandInput> & Record<string, unknown>;\n};\n\n//#endregion\n\n//#region ---- Preview Questionnaire Command ----\n\n/**\n * Command that opens a preview of a questionnaire in a dialog.\n */\n@Injectable()\nexport class AXPPreviewQuestionnaireCommand implements AXPCommand<AXPPreviewQuestionnaireCommandInput, 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 * Resolves questionnaire id/title from root input or from entity action payload (`options` / row `data`).\n */\n private resolvePayload(input: AXPPreviewQuestionnaireCommandInvocation): AXPPreviewQuestionnaireCommandInput | null {\n const ctxOpts = input.options;\n const ctxData = input.data;\n\n const asNonEmptyString = (v: unknown): string | undefined =>\n typeof v === 'string' && v.length > 0 ? v : undefined;\n\n const asDisplayTitle = (v: unknown): string | undefined => {\n const s = asNonEmptyString(v);\n if (s) return s;\n if (v && typeof v === 'object') {\n const o = v as Record<string, unknown>;\n const fromTitle = o['title'];\n if (typeof fromTitle === 'string' && fromTitle.trim()) return fromTitle.trim();\n const fromName = o['name'];\n if (typeof fromName === 'string' && fromName.trim()) return fromName.trim();\n }\n return undefined;\n };\n\n const questionnaireId =\n asNonEmptyString(input.questionnaireId) ??\n asNonEmptyString(ctxOpts?.questionnaireId) ??\n (ctxData?.['id'] != null ? String(ctxData['id']) : undefined);\n\n if (!questionnaireId) {\n return null;\n }\n\n const questionnaireTitle =\n asDisplayTitle(input.questionnaireTitle) ??\n asDisplayTitle(ctxOpts?.questionnaireTitle) ??\n asDisplayTitle(ctxData?.['title']) ??\n asDisplayTitle(ctxData?.['name']);\n\n return { questionnaireId, questionnaireTitle };\n }\n\n async execute(input: AXPPreviewQuestionnaireCommandInvocation): AXPCommandExecuteResultPromise<void> {\n try {\n const resolved = this.resolvePayload(input);\n if (!resolved) {\n return {\n success: false,\n message: { text: '@assessment-management:commands.preview-questionnaire.errors.missing-id' },\n };\n }\n\n const { questionnaireId, questionnaireTitle } = resolved;\n\n // Get questionnaire data\n const questionnaire = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.questionnaire.name)\n .data<string, AXMAssessmentManagementQuestionnaireEntityModel>()\n .byKey(questionnaireId);\n\n if (!questionnaire) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync(\n '@assessment-management:commands.preview-questionnaire.errors.not-found',\n { params: { questionnaireId } },\n ),\n },\n };\n }\n\n // Check if questionnaire has questions\n if (!questionnaire.questions || !questionnaire.questions.sections || questionnaire.questions.sections.length === 0) {\n return {\n success: false,\n message: { text: '@assessment-management:commands.preview-questionnaire.errors.no-questions' },\n };\n }\n\n // Get preview title\n const previewTitleKey = '@assessment-management:questionnaires.entities.questionnaire.actions.preview.title';\n const previewTitleBase = (await this.translationService.translateAsync(previewTitleKey)) || 'Preview';\n const locale = this.translationService.getActiveLang?.() ?? 'en-US';\n const entityTitle = resolveMultiLanguageString(questionnaire.title, locale).trim();\n const displayTitle = questionnaireTitle?.trim() || entityTitle || undefined;\n const previewTitle = formatQuestionnairePreviewDialogTitle(previewTitleBase, displayTitle);\n\n const cfg = toPrePostConfig(questionnaire);\n const displaySettings = toDisplaySettings(questionnaire);\n const questions = questionnaire.questions;\n const structure = {\n sections: questions?.sections ?? [],\n displaySettings: displaySettings ?? undefined,\n printSettings: toPrintSettings(questionnaire) ?? undefined,\n };\n const result = await this.questionnaireViewerService.open({\n title: previewTitle,\n structure,\n prePostConfig: cfg,\n config: {\n previewMode: true,\n pdfPreview: true,\n completionMode: 'submit-only',\n viewMode: displaySettings?.viewMode,\n showProgressBar: displaySettings?.showProgressBar,\n timer: { showTimer: displaySettings?.showTimer ?? false },\n showQuestionNumbers: displaySettings?.showQuestionNumbers,\n validationStrategy: displaySettings?.validationStrategy,\n },\n questionnaireId,\n printTemplateId: asEntityId(questionnaire.printTemplateId),\n submitHandler: async (answers: Record<string, any>) =>\n this.questionnaireViewerService.buildSummaryPlaceholderValues(structure, answers, {\n questionnaireId,\n }),\n });\n\n if (result?.submitted && result.answers) {\n return {\n success: true,\n kind: 'object',\n data: undefined,\n metadata: { outcome: 'Previewed', refresh: false },\n };\n }\n return {\n success: true,\n kind: 'object',\n data: undefined,\n metadata: { outcome: 'Cancelled', refresh: false },\n };\n } catch (error: unknown) {\n const fallback = await this.translationService.translateAsync(\n '@general:messages.generic.error.description',\n );\n const message = error instanceof Error ? error.message : fallback;\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync(\n '@assessment-management:commands.preview-questionnaire.errors.failed',\n { params: { message } },\n ),\n },\n };\n }\n }\n\n //#endregion\n}\n\nfunction asEntityId(value: unknown): string | undefined {\n if (typeof value === 'string' && value.trim()) {\n return value.trim();\n }\n if (value && typeof value === 'object' && 'id' in value) {\n return asEntityId((value as { id: unknown }).id);\n }\n return undefined;\n}\n\n//#endregion\n\n"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,7 @@ import { AsyncPipe } from '@angular/common';
|
|
|
12
12
|
import * as i0 from '@angular/core';
|
|
13
13
|
import { inject, computed, signal, model, effect, untracked, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
14
14
|
import { isEqual } from 'lodash';
|
|
15
|
-
import { v as stripQuestionBankInterfaceMetadata, w as resolveWidgetNodeFromMetaDataDefinitionInterface } from './acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-
|
|
15
|
+
import { v as stripQuestionBankInterfaceMetadata, w as resolveWidgetNodeFromMetaDataDefinitionInterface } from './acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-Dr56BtSo.mjs';
|
|
16
16
|
import * as i2 from '@acorex/components/decorators';
|
|
17
17
|
import { AXDecoratorModule } from '@acorex/components/decorators';
|
|
18
18
|
|
|
@@ -486,4 +486,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
486
486
|
}], propDecorators: { definitionIdModel: [{ type: i0.Input, args: [{ isSignal: true, alias: "definitionIdModel", required: false }] }, { type: i0.Output, args: ["definitionIdModelChange"] }], widgetConfigModel: [{ type: i0.Input, args: [{ isSignal: true, alias: "widgetConfigModel", required: false }] }, { type: i0.Output, args: ["widgetConfigModelChange"] }] } });
|
|
487
487
|
|
|
488
488
|
export { AXMQuestionBankInterfaceEditorWidgetEditComponent };
|
|
489
|
-
//# sourceMappingURL=acorex-platform-module-assessment-management-client-question-bank-interface-editor-widget-edit.component-
|
|
489
|
+
//# sourceMappingURL=acorex-platform-module-assessment-management-client-question-bank-interface-editor-widget-edit.component-SUpzNllw.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-assessment-management-client-question-bank-interface-editor-widget-edit.component-DY8Fk3fM.mjs","sources":["../../../../libs/modules/assessment-management/client/src/lib/features/questionnaire-builder/questions/widgets/question-bank-interface-editor-widget/question-bank-interface-editor-widget-edit.component.ts"],"sourcesContent":["import { RootConfig as DataManagementRootConfig } from '@acorex-platform/module-data-management-client/contracts';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\n//#region ---- Imports ----\n\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXButtonModule } from '@acorex/components/button';\nimport {\n AXTranslationModule,\n AXTranslationService,\n} from '@acorex/core/translation';\nimport { AXMetaDataConfiguratorComponent } from '@acorex-platform/module-data-management-client';\nimport { type AXMMetaDataDefinitionEntityModel } from '@acorex-platform/module-data-management-client/contracts';\nimport {\n AXPMultiLanguageString,\n type AXPWidgetNode,\n} from '@acorex-platform/framework-shared/core';\nimport { AXPWidgetFieldConfiguratorComponent } from '@acorex-platform/framework-client/layout/components';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n model,\n signal,\n untracked,\n} from '@angular/core';\nimport { isEqual } from 'lodash';\nimport {\n resolveWidgetNodeFromMetaDataDefinitionInterface,\n stripQuestionBankInterfaceMetadata,\n} from '../../../../entities/question-bank-item/question-bank-interface.utils';\nimport type {\n AXMQuestionBankItemInterfaceMetadata,\n AXMQuestionBankItemInterfaceValue,\n} from '@acorex-platform/module-assessment-management-client/contracts';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\n//#endregion\n\n//#region ---- Helpers ----\n\nfunction hasMetadataProvenance(\n v: AXMQuestionBankItemInterfaceValue | null | undefined,\n): boolean {\n const id = v?.metadata?.id;\n return id != null && String(id).trim() !== '';\n}\n\nfunction hasConfiguredWidget(\n v: AXMQuestionBankItemInterfaceValue | null | undefined,\n): boolean {\n const w = stripQuestionBankInterfaceMetadata(v ?? undefined);\n const t = w?.type;\n return typeof t === 'string' && t.trim() !== '';\n}\n\n//#endregion\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axm-question-bank-interface-editor-widget-edit',\n template: `\n <div class=\"flex flex-col gap-1\">\n @if (isInitialized()) {\n @if (showSourceChoice()) {\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm text-neutral-700\">\n {{\n '@assessment-management:question-bank.entities.question-bank-item.fields.interface.empty-source.prompt'\n | translate\n | async\n }}\n </p>\n <div class=\"flex w-full gap-2\">\n <ax-button\n class=\"flex-1\"\n type=\"button\"\n look=\"twotone\"\n color=\"primary\"\n [disabled]=\"readonly()\"\n [text]=\"\n ('@assessment-management:question-bank.entities.question-bank-item.fields.interface.editor-mode-widget'\n | translate\n | async)!\n \"\n (onClick)=\"chooseWidgetSource()\"\n >\n <ax-icon icon=\"fa-solid fa-puzzle-piece\"></ax-icon>\n </ax-button>\n <ax-button\n class=\"flex-1\"\n type=\"button\"\n look=\"twotone\"\n color=\"secondary\"\n [disabled]=\"readonly()\"\n [text]=\"\n ('@assessment-management:question-bank.entities.question-bank-item.fields.interface.editor-mode-meta-data'\n | translate\n | async)!\n \"\n (onClick)=\"chooseMetadataSource()\"\n >\n <ax-icon icon=\"fa-light fa-database\"></ax-icon>\n </ax-button>\n </div>\n </div>\n } @else if (showReadonlyEmpty()) {\n <p class=\"text-sm text-neutral-600\">\n {{\n '@assessment-management:question-bank.entities.question-bank-item.fields.interface.empty-source.readonly'\n | translate\n | async\n }}\n </p>\n }\n @if (showWidgetEditor() || showMetaDataEditor()) {\n @if (showMetaDataEditor()) {\n <axm-meta-data-configurator\n [(definitionId)]=\"definitionIdModel\"\n [fieldName]=\"fieldName()\"\n [fieldTitle]=\"fieldTitle()\"\n [label]=\"metaDataConfiguratorLabel()\"\n [readonly]=\"readonly()\"\n ></axm-meta-data-configurator>\n } @else if (showWidgetEditor()) {\n <axp-widget-field-configurator\n [(widget)]=\"widgetConfigModel\"\n [fieldName]=\"fieldName()\"\n [fieldTitle]=\"fieldTitle()\"\n [label]=\"label()\"\n [readonly]=\"readonly()\"\n ></axp-widget-field-configurator>\n }\n <div class=\"flex justify-end ax-sm\">\n <ax-button\n look=\"twotone\"\n color=\"danger\"\n [disabled]=\"readonly()\"\n [text]=\"\n ('@assessment-management:question-bank.entities.question-bank-item.fields.interface.switch-source'\n | translate\n | async)!\n \"\n (onClick)=\"clearInterfaceConfiguration()\"\n >\n <ax-icon icon=\"fa-light fa-link-slash\"></ax-icon>\n </ax-button>\n </div>\n }\n }\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AXButtonModule,\n AXPWidgetFieldConfiguratorComponent,\n AXMetaDataConfiguratorComponent,\n AXDecoratorModule,\n AXTranslationModule,\n AsyncPipe,\n ],\n})\nexport class AXMQuestionBankInterfaceEditorWidgetEditComponent extends AXPValueWidgetComponent<AXMQuestionBankItemInterfaceValue | null> {\n private readonly entityService = inject(AXPEntityService);\n //#region ---- Services ----\n\n private readonly translate = inject(AXTranslationService);\n private readonly toast = inject(AXToastService);\n private readonly metaDataDefinitionService = this.entityService\n .withEntity(\n DataManagementRootConfig.module.name,\n DataManagementRootConfig.entities.metaDataDefinition.name,\n )\n .data<any, any>();\n\n //#endregion\n\n //#region ---- Computed ----\n\n protected readonly = computed<boolean>(\n () => this.options()['readonly'] as boolean,\n );\n protected fieldName = computed<string>(() => {\n const fieldNameValue = this.options()['fieldName'];\n if (fieldNameValue !== undefined && fieldNameValue !== null) {\n const stringValue = String(fieldNameValue).trim();\n return stringValue || 'field';\n }\n return 'field';\n });\n protected fieldTitle = computed<AXPMultiLanguageString>(() => {\n const fieldTitleValue = this.options()['fieldTitle'];\n if (fieldTitleValue === undefined || fieldTitleValue === null) {\n return '';\n }\n if (\n typeof fieldTitleValue === 'object' &&\n !Array.isArray(fieldTitleValue)\n ) {\n return fieldTitleValue as Record<string, string>;\n }\n const stringValue = String(fieldTitleValue).trim();\n return stringValue;\n });\n protected label = computed<string>(\n () => (this.options()['label'] as string) || 'Widget Type',\n );\n protected metaDataConfiguratorLabel = computed(\n () =>\n (this.options()['metaDataConfiguratorLabel'] as string) ||\n '@assessment-management:question-bank.entities.question-bank-item.fields.interface.meta-data-configurator-label',\n );\n\n /** No widget type and no metadata definition binding — user must pick a configuration path. */\n protected interfaceIsUnset = computed<boolean>(() => {\n const v = this.getValue() as\n | AXMQuestionBankItemInterfaceValue\n | null\n | undefined;\n return !hasMetadataProvenance(v) && !hasConfiguredWidget(v);\n });\n\n /** Widget-only path after save, or after the user chose “Widget” on an empty interface. */\n protected showWidgetEditor = computed<boolean>(() => {\n const v = this.getValue() as\n | AXMQuestionBankItemInterfaceValue\n | null\n | undefined;\n if (hasMetadataProvenance(v)) {\n return false;\n }\n if (hasConfiguredWidget(v)) {\n return true;\n }\n return this.emptyFlowChoice() === 'widget';\n });\n\n /** Meta-data definition path after save, or after the user chose “MetaData definition” on an empty interface. */\n protected showMetaDataEditor = computed<boolean>(() => {\n const v = this.getValue() as\n | AXMQuestionBankItemInterfaceValue\n | null\n | undefined;\n if (hasMetadataProvenance(v)) {\n return true;\n }\n if (!this.interfaceIsUnset()) {\n return false;\n }\n return this.emptyFlowChoice() === 'metadata';\n });\n\n protected showSourceChoice = computed<boolean>(\n () =>\n this.interfaceIsUnset() &&\n this.emptyFlowChoice() === null &&\n !this.readonly(),\n );\n\n protected showReadonlyEmpty = computed<boolean>(\n () =>\n this.interfaceIsUnset() &&\n this.emptyFlowChoice() === null &&\n this.readonly(),\n );\n\n //#endregion\n\n //#region ---- State ----\n\n protected isInitialized = signal(false);\n /** Set only while {@link interfaceIsUnset}; cleared once the value has a widget or metadata. */\n protected emptyFlowChoice = signal<'widget' | 'metadata' | null>(null);\n protected definitionIdModel = model<string>('');\n protected widgetConfigModel = model<AXPWidgetNode>({ type: '', options: {} });\n\n //#endregion\n\n //#region ---- Empty flow ----\n\n protected chooseWidgetSource(): void {\n if (this.readonly()) {\n return;\n }\n this.emptyFlowChoice.set('widget');\n }\n\n protected chooseMetadataSource(): void {\n if (this.readonly()) {\n return;\n }\n this.emptyFlowChoice.set('metadata');\n }\n\n /** Clears both widget config and metadata provenance, then returns to source chooser. */\n protected clearInterfaceConfiguration(): void {\n if (this.readonly()) {\n return;\n }\n untracked(() => {\n this.widgetConfigModel.set({ type: '', options: {} });\n this.definitionIdModel.set('');\n this.emptyFlowChoice.set(null);\n this.setValue(null);\n });\n }\n\n //#endregion\n\n //#region ---- Sync value ↔ configurator (preserve sibling metadata) ----\n\n private syncValueToConfigurator = effect(() => {\n const value = this.getValue();\n const widgetOnly = stripQuestionBankInterfaceMetadata(value ?? undefined);\n\n if (widgetOnly && widgetOnly.type) {\n const currentModel = untracked(() => this.widgetConfigModel());\n if (!isEqual(widgetOnly, currentModel)) {\n untracked(() => {\n this.widgetConfigModel.set(widgetOnly);\n this.isInitialized.set(true);\n });\n }\n } else {\n untracked(() => {\n if (!this.isInitialized()) {\n this.isInitialized.set(true);\n }\n });\n }\n });\n\n private clearEmptyFlowWhenConfigured = effect(() => {\n if (untracked(() => this.interfaceIsUnset())) {\n return;\n }\n untracked(() => {\n if (this.emptyFlowChoice() !== null) {\n this.emptyFlowChoice.set(null);\n }\n });\n });\n\n private syncConfiguratorToValue = effect(() => {\n const modelValue = this.widgetConfigModel();\n\n if (!untracked(() => this.isInitialized())) {\n return;\n }\n\n if (!modelValue || !modelValue.type) {\n return;\n }\n\n const full = untracked(() => this.getValue());\n const metadata =\n (full &&\n typeof full === 'object' &&\n (full as AXMQuestionBankItemInterfaceValue).metadata) ||\n undefined;\n\n const next: AXMQuestionBankItemInterfaceValue = metadata\n ? { ...modelValue, metadata }\n : (modelValue as AXMQuestionBankItemInterfaceValue);\n\n const currentFlat = untracked(() => this.getValue());\n if (!isEqual(next, currentFlat)) {\n untracked(() => {\n this.setValue(next);\n });\n }\n });\n\n private syncDefinitionIdFromValue = effect(() => {\n const value = this.getValue();\n const metaId = value?.metadata?.id;\n if (metaId != null && String(metaId) !== '') {\n const sid = String(metaId);\n if (untracked(() => this.definitionIdModel()) !== sid) {\n untracked(() => this.definitionIdModel.set(sid));\n }\n }\n });\n\n //#endregion\n\n //#region ---- Meta-data definition selection ----\n\n /** True while the meta-data configurator should be active (saved provenance or empty-flow metadata path). */\n private metadataFlowActive = computed<boolean>(() => {\n const v = this.getValue() as\n | AXMQuestionBankItemInterfaceValue\n | null\n | undefined;\n if (hasMetadataProvenance(v)) {\n return true;\n }\n if (!this.interfaceIsUnset()) {\n return false;\n }\n return this.emptyFlowChoice() === 'metadata';\n });\n\n private applyMetadataDefinitionSelection = effect(() => {\n if (!this.metadataFlowActive()) {\n return;\n }\n if (!untracked(() => this.isInitialized())) {\n return;\n }\n const id = this.definitionIdModel();\n if (!id?.trim()) {\n return;\n }\n\n const current = untracked(() => this.getValue());\n if (current?.metadata?.id === id) {\n const stripped = stripQuestionBankInterfaceMetadata(current);\n if (stripped?.type) {\n return;\n }\n }\n\n if (this.readonly()) {\n return;\n }\n\n void this.loadAndApplyMetadataDefinition(id);\n });\n\n private async loadAndApplyMetadataDefinition(id: string): Promise<void> {\n try {\n const row = await this.metaDataDefinitionService.byKey(id);\n const resolved = await resolveWidgetNodeFromMetaDataDefinitionInterface(\n row.interface as AXMMetaDataDefinitionEntityModel['interface'],\n );\n if (!resolved?.type) {\n this.toast.danger(\n (await this.translate.translateAsync(\n '@assessment-management:question-bank.entities.question-bank-item.fields.interface.load-from-metadata-invalid',\n )) ??\n 'The selected metadata definition has no valid widget interface.',\n );\n return;\n }\n\n const titleRaw = row.title;\n const metadata: AXMQuestionBankItemInterfaceMetadata = {\n id: String(row.id ?? ''),\n name: String(row.name ?? ''),\n title: (typeof titleRaw === 'object' && titleRaw !== null\n ? titleRaw\n : String(titleRaw ?? '')) as AXPMultiLanguageString | string,\n version: 0,\n };\n\n const next: AXMQuestionBankItemInterfaceValue = {\n ...resolved,\n metadata,\n };\n\n untracked(() => {\n this.setValue(next);\n this.widgetConfigModel.set(resolved);\n });\n } catch (err) {\n console.error(\n '[QuestionBankInterfaceEditor] metadata definition load failed',\n err,\n );\n this.toast.danger(\n (await this.translate.translateAsync(\n '@assessment-management:question-bank.entities.question-bank-item.fields.interface.load-from-metadata-failed',\n )) ?? 'Could not load metadata definitions.',\n );\n }\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":["DataManagementRootConfig"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-assessment-management-client-question-bank-interface-editor-widget-edit.component-SUpzNllw.mjs","sources":["../../../../libs/modules/assessment-management/client/src/lib/features/questionnaire-builder/questions/widgets/question-bank-interface-editor-widget/question-bank-interface-editor-widget-edit.component.ts"],"sourcesContent":["import { RootConfig as DataManagementRootConfig } from '@acorex-platform/module-data-management-client/contracts';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\n//#region ---- Imports ----\n\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXButtonModule } from '@acorex/components/button';\nimport {\n AXTranslationModule,\n AXTranslationService,\n} from '@acorex/core/translation';\nimport { AXMetaDataConfiguratorComponent } from '@acorex-platform/module-data-management-client';\nimport { type AXMMetaDataDefinitionEntityModel } from '@acorex-platform/module-data-management-client/contracts';\nimport {\n AXPMultiLanguageString,\n type AXPWidgetNode,\n} from '@acorex-platform/framework-shared/core';\nimport { AXPWidgetFieldConfiguratorComponent } from '@acorex-platform/framework-client/layout/components';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n model,\n signal,\n untracked,\n} from '@angular/core';\nimport { isEqual } from 'lodash';\nimport {\n resolveWidgetNodeFromMetaDataDefinitionInterface,\n stripQuestionBankInterfaceMetadata,\n} from '../../../../entities/question-bank-item/question-bank-interface.utils';\nimport type {\n AXMQuestionBankItemInterfaceMetadata,\n AXMQuestionBankItemInterfaceValue,\n} from '@acorex-platform/module-assessment-management-client/contracts';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\n//#endregion\n\n//#region ---- Helpers ----\n\nfunction hasMetadataProvenance(\n v: AXMQuestionBankItemInterfaceValue | null | undefined,\n): boolean {\n const id = v?.metadata?.id;\n return id != null && String(id).trim() !== '';\n}\n\nfunction hasConfiguredWidget(\n v: AXMQuestionBankItemInterfaceValue | null | undefined,\n): boolean {\n const w = stripQuestionBankInterfaceMetadata(v ?? undefined);\n const t = w?.type;\n return typeof t === 'string' && t.trim() !== '';\n}\n\n//#endregion\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axm-question-bank-interface-editor-widget-edit',\n template: `\n <div class=\"flex flex-col gap-1\">\n @if (isInitialized()) {\n @if (showSourceChoice()) {\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm text-neutral-700\">\n {{\n '@assessment-management:question-bank.entities.question-bank-item.fields.interface.empty-source.prompt'\n | translate\n | async\n }}\n </p>\n <div class=\"flex w-full gap-2\">\n <ax-button\n class=\"flex-1\"\n type=\"button\"\n look=\"twotone\"\n color=\"primary\"\n [disabled]=\"readonly()\"\n [text]=\"\n ('@assessment-management:question-bank.entities.question-bank-item.fields.interface.editor-mode-widget'\n | translate\n | async)!\n \"\n (onClick)=\"chooseWidgetSource()\"\n >\n <ax-icon icon=\"fa-solid fa-puzzle-piece\"></ax-icon>\n </ax-button>\n <ax-button\n class=\"flex-1\"\n type=\"button\"\n look=\"twotone\"\n color=\"secondary\"\n [disabled]=\"readonly()\"\n [text]=\"\n ('@assessment-management:question-bank.entities.question-bank-item.fields.interface.editor-mode-meta-data'\n | translate\n | async)!\n \"\n (onClick)=\"chooseMetadataSource()\"\n >\n <ax-icon icon=\"fa-light fa-database\"></ax-icon>\n </ax-button>\n </div>\n </div>\n } @else if (showReadonlyEmpty()) {\n <p class=\"text-sm text-neutral-600\">\n {{\n '@assessment-management:question-bank.entities.question-bank-item.fields.interface.empty-source.readonly'\n | translate\n | async\n }}\n </p>\n }\n @if (showWidgetEditor() || showMetaDataEditor()) {\n @if (showMetaDataEditor()) {\n <axm-meta-data-configurator\n [(definitionId)]=\"definitionIdModel\"\n [fieldName]=\"fieldName()\"\n [fieldTitle]=\"fieldTitle()\"\n [label]=\"metaDataConfiguratorLabel()\"\n [readonly]=\"readonly()\"\n ></axm-meta-data-configurator>\n } @else if (showWidgetEditor()) {\n <axp-widget-field-configurator\n [(widget)]=\"widgetConfigModel\"\n [fieldName]=\"fieldName()\"\n [fieldTitle]=\"fieldTitle()\"\n [label]=\"label()\"\n [readonly]=\"readonly()\"\n ></axp-widget-field-configurator>\n }\n <div class=\"flex justify-end ax-sm\">\n <ax-button\n look=\"twotone\"\n color=\"danger\"\n [disabled]=\"readonly()\"\n [text]=\"\n ('@assessment-management:question-bank.entities.question-bank-item.fields.interface.switch-source'\n | translate\n | async)!\n \"\n (onClick)=\"clearInterfaceConfiguration()\"\n >\n <ax-icon icon=\"fa-light fa-link-slash\"></ax-icon>\n </ax-button>\n </div>\n }\n }\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AXButtonModule,\n AXPWidgetFieldConfiguratorComponent,\n AXMetaDataConfiguratorComponent,\n AXDecoratorModule,\n AXTranslationModule,\n AsyncPipe,\n ],\n})\nexport class AXMQuestionBankInterfaceEditorWidgetEditComponent extends AXPValueWidgetComponent<AXMQuestionBankItemInterfaceValue | null> {\n private readonly entityService = inject(AXPEntityService);\n //#region ---- Services ----\n\n private readonly translate = inject(AXTranslationService);\n private readonly toast = inject(AXToastService);\n private readonly metaDataDefinitionService = this.entityService\n .withEntity(\n DataManagementRootConfig.module.name,\n DataManagementRootConfig.entities.metaDataDefinition.name,\n )\n .data<any, any>();\n\n //#endregion\n\n //#region ---- Computed ----\n\n protected readonly = computed<boolean>(\n () => this.options()['readonly'] as boolean,\n );\n protected fieldName = computed<string>(() => {\n const fieldNameValue = this.options()['fieldName'];\n if (fieldNameValue !== undefined && fieldNameValue !== null) {\n const stringValue = String(fieldNameValue).trim();\n return stringValue || 'field';\n }\n return 'field';\n });\n protected fieldTitle = computed<AXPMultiLanguageString>(() => {\n const fieldTitleValue = this.options()['fieldTitle'];\n if (fieldTitleValue === undefined || fieldTitleValue === null) {\n return '';\n }\n if (\n typeof fieldTitleValue === 'object' &&\n !Array.isArray(fieldTitleValue)\n ) {\n return fieldTitleValue as Record<string, string>;\n }\n const stringValue = String(fieldTitleValue).trim();\n return stringValue;\n });\n protected label = computed<string>(\n () => (this.options()['label'] as string) || 'Widget Type',\n );\n protected metaDataConfiguratorLabel = computed(\n () =>\n (this.options()['metaDataConfiguratorLabel'] as string) ||\n '@assessment-management:question-bank.entities.question-bank-item.fields.interface.meta-data-configurator-label',\n );\n\n /** No widget type and no metadata definition binding — user must pick a configuration path. */\n protected interfaceIsUnset = computed<boolean>(() => {\n const v = this.getValue() as\n | AXMQuestionBankItemInterfaceValue\n | null\n | undefined;\n return !hasMetadataProvenance(v) && !hasConfiguredWidget(v);\n });\n\n /** Widget-only path after save, or after the user chose “Widget” on an empty interface. */\n protected showWidgetEditor = computed<boolean>(() => {\n const v = this.getValue() as\n | AXMQuestionBankItemInterfaceValue\n | null\n | undefined;\n if (hasMetadataProvenance(v)) {\n return false;\n }\n if (hasConfiguredWidget(v)) {\n return true;\n }\n return this.emptyFlowChoice() === 'widget';\n });\n\n /** Meta-data definition path after save, or after the user chose “MetaData definition” on an empty interface. */\n protected showMetaDataEditor = computed<boolean>(() => {\n const v = this.getValue() as\n | AXMQuestionBankItemInterfaceValue\n | null\n | undefined;\n if (hasMetadataProvenance(v)) {\n return true;\n }\n if (!this.interfaceIsUnset()) {\n return false;\n }\n return this.emptyFlowChoice() === 'metadata';\n });\n\n protected showSourceChoice = computed<boolean>(\n () =>\n this.interfaceIsUnset() &&\n this.emptyFlowChoice() === null &&\n !this.readonly(),\n );\n\n protected showReadonlyEmpty = computed<boolean>(\n () =>\n this.interfaceIsUnset() &&\n this.emptyFlowChoice() === null &&\n this.readonly(),\n );\n\n //#endregion\n\n //#region ---- State ----\n\n protected isInitialized = signal(false);\n /** Set only while {@link interfaceIsUnset}; cleared once the value has a widget or metadata. */\n protected emptyFlowChoice = signal<'widget' | 'metadata' | null>(null);\n protected definitionIdModel = model<string>('');\n protected widgetConfigModel = model<AXPWidgetNode>({ type: '', options: {} });\n\n //#endregion\n\n //#region ---- Empty flow ----\n\n protected chooseWidgetSource(): void {\n if (this.readonly()) {\n return;\n }\n this.emptyFlowChoice.set('widget');\n }\n\n protected chooseMetadataSource(): void {\n if (this.readonly()) {\n return;\n }\n this.emptyFlowChoice.set('metadata');\n }\n\n /** Clears both widget config and metadata provenance, then returns to source chooser. */\n protected clearInterfaceConfiguration(): void {\n if (this.readonly()) {\n return;\n }\n untracked(() => {\n this.widgetConfigModel.set({ type: '', options: {} });\n this.definitionIdModel.set('');\n this.emptyFlowChoice.set(null);\n this.setValue(null);\n });\n }\n\n //#endregion\n\n //#region ---- Sync value ↔ configurator (preserve sibling metadata) ----\n\n private syncValueToConfigurator = effect(() => {\n const value = this.getValue();\n const widgetOnly = stripQuestionBankInterfaceMetadata(value ?? undefined);\n\n if (widgetOnly && widgetOnly.type) {\n const currentModel = untracked(() => this.widgetConfigModel());\n if (!isEqual(widgetOnly, currentModel)) {\n untracked(() => {\n this.widgetConfigModel.set(widgetOnly);\n this.isInitialized.set(true);\n });\n }\n } else {\n untracked(() => {\n if (!this.isInitialized()) {\n this.isInitialized.set(true);\n }\n });\n }\n });\n\n private clearEmptyFlowWhenConfigured = effect(() => {\n if (untracked(() => this.interfaceIsUnset())) {\n return;\n }\n untracked(() => {\n if (this.emptyFlowChoice() !== null) {\n this.emptyFlowChoice.set(null);\n }\n });\n });\n\n private syncConfiguratorToValue = effect(() => {\n const modelValue = this.widgetConfigModel();\n\n if (!untracked(() => this.isInitialized())) {\n return;\n }\n\n if (!modelValue || !modelValue.type) {\n return;\n }\n\n const full = untracked(() => this.getValue());\n const metadata =\n (full &&\n typeof full === 'object' &&\n (full as AXMQuestionBankItemInterfaceValue).metadata) ||\n undefined;\n\n const next: AXMQuestionBankItemInterfaceValue = metadata\n ? { ...modelValue, metadata }\n : (modelValue as AXMQuestionBankItemInterfaceValue);\n\n const currentFlat = untracked(() => this.getValue());\n if (!isEqual(next, currentFlat)) {\n untracked(() => {\n this.setValue(next);\n });\n }\n });\n\n private syncDefinitionIdFromValue = effect(() => {\n const value = this.getValue();\n const metaId = value?.metadata?.id;\n if (metaId != null && String(metaId) !== '') {\n const sid = String(metaId);\n if (untracked(() => this.definitionIdModel()) !== sid) {\n untracked(() => this.definitionIdModel.set(sid));\n }\n }\n });\n\n //#endregion\n\n //#region ---- Meta-data definition selection ----\n\n /** True while the meta-data configurator should be active (saved provenance or empty-flow metadata path). */\n private metadataFlowActive = computed<boolean>(() => {\n const v = this.getValue() as\n | AXMQuestionBankItemInterfaceValue\n | null\n | undefined;\n if (hasMetadataProvenance(v)) {\n return true;\n }\n if (!this.interfaceIsUnset()) {\n return false;\n }\n return this.emptyFlowChoice() === 'metadata';\n });\n\n private applyMetadataDefinitionSelection = effect(() => {\n if (!this.metadataFlowActive()) {\n return;\n }\n if (!untracked(() => this.isInitialized())) {\n return;\n }\n const id = this.definitionIdModel();\n if (!id?.trim()) {\n return;\n }\n\n const current = untracked(() => this.getValue());\n if (current?.metadata?.id === id) {\n const stripped = stripQuestionBankInterfaceMetadata(current);\n if (stripped?.type) {\n return;\n }\n }\n\n if (this.readonly()) {\n return;\n }\n\n void this.loadAndApplyMetadataDefinition(id);\n });\n\n private async loadAndApplyMetadataDefinition(id: string): Promise<void> {\n try {\n const row = await this.metaDataDefinitionService.byKey(id);\n const resolved = await resolveWidgetNodeFromMetaDataDefinitionInterface(\n row.interface as AXMMetaDataDefinitionEntityModel['interface'],\n );\n if (!resolved?.type) {\n this.toast.danger(\n (await this.translate.translateAsync(\n '@assessment-management:question-bank.entities.question-bank-item.fields.interface.load-from-metadata-invalid',\n )) ??\n 'The selected metadata definition has no valid widget interface.',\n );\n return;\n }\n\n const titleRaw = row.title;\n const metadata: AXMQuestionBankItemInterfaceMetadata = {\n id: String(row.id ?? ''),\n name: String(row.name ?? ''),\n title: (typeof titleRaw === 'object' && titleRaw !== null\n ? titleRaw\n : String(titleRaw ?? '')) as AXPMultiLanguageString | string,\n version: 0,\n };\n\n const next: AXMQuestionBankItemInterfaceValue = {\n ...resolved,\n metadata,\n };\n\n untracked(() => {\n this.setValue(next);\n this.widgetConfigModel.set(resolved);\n });\n } catch (err) {\n console.error(\n '[QuestionBankInterfaceEditor] metadata definition load failed',\n err,\n );\n this.toast.danger(\n (await this.translate.translateAsync(\n '@assessment-management:question-bank.entities.question-bank-item.fields.interface.load-from-metadata-failed',\n )) ?? 'Could not load metadata definitions.',\n );\n }\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":["DataManagementRootConfig"],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { toPrePostConfig, toDisplaySettings, toPrintSettings } from '@acorex-pla
|
|
|
4
4
|
import * as i0 from '@angular/core';
|
|
5
5
|
import { inject, signal, computed, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
6
6
|
import { isEqual } from 'lodash';
|
|
7
|
-
import { r as resolvePersistedEntityId, t as AXMQuestionnaireQuestionsBuilderComponent } from './acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-
|
|
7
|
+
import { r as resolvePersistedEntityId, t as AXMQuestionnaireQuestionsBuilderComponent } from './acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-Dr56BtSo.mjs';
|
|
8
8
|
|
|
9
9
|
//#region ----- Component -----
|
|
10
10
|
class AXMQuestionnaireQuestionsEditorEditComponent extends AXPValueWidgetComponent {
|
|
@@ -66,4 +66,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
66
66
|
}] });
|
|
67
67
|
|
|
68
68
|
export { AXMQuestionnaireQuestionsEditorEditComponent };
|
|
69
|
-
//# sourceMappingURL=acorex-platform-module-assessment-management-client-questionnaire-questions-editor-edit.component-
|
|
69
|
+
//# sourceMappingURL=acorex-platform-module-assessment-management-client-questionnaire-questions-editor-edit.component-DNNHMsa1.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-assessment-management-client-questionnaire-questions-editor-edit.component-
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-assessment-management-client-questionnaire-questions-editor-edit.component-DNNHMsa1.mjs","sources":["../../../../libs/modules/assessment-management/client/src/lib/features/content-display/questionnaire/questionnaire-questions-editor-edit.component.ts","../../../../libs/modules/assessment-management/client/src/lib/features/content-display/questionnaire/questionnaire-questions-editor-edit.component.html"],"sourcesContent":["import { resolveMultiLanguageString, AXTranslationService } from '@acorex/core/translation';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport type { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport {\n toDisplaySettings,\n toPrePostConfig,\n toPrintSettings,\n type AXMAssessmentManagementQuestionnaireEntityModel,\n type QuestionnaireBuilderValue,\n} from '@acorex-platform/module-assessment-management-client/contracts';\nimport { ChangeDetectionStrategy, Component, computed, inject, signal } from '@angular/core';\nimport { isEqual } from 'lodash';\nimport { AXMQuestionnaireQuestionsBuilderComponent } from '../../questionnaire-builder/questions/builder/questionnaire-questions-builder.component';\nimport { resolvePersistedEntityId } from '../../questionnaire-builder/resolve-persisted-entity-id.util';\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-questionnaire-questions-editor',\n templateUrl: './questionnaire-questions-editor-edit.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXMQuestionnaireQuestionsBuilderComponent],\n})\nexport class AXMQuestionnaireQuestionsEditorEditComponent extends AXPValueWidgetComponent<QuestionnaireBuilderValue | null> {\n //#region ----- Services & Dependencies -----\n\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ----- State Signals -----\n\n /** The builder emits a normalized value on init; that emission is not a user edit. */\n private readonly skipInitialEmit = signal(true);\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n protected readonly hostRecord = computed(\n () => this.contextService.snapshot() as Partial<AXMAssessmentManagementQuestionnaireEntityModel>,\n );\n\n protected readonly builderValue = computed<QuestionnaireBuilderValue | null>(() => {\n const value = this.getValue();\n return value != null && typeof value === 'object' ? value : null;\n });\n\n protected isReadonly(): boolean {\n return this.mode === 'view';\n }\n\n protected readonly prePostConfig = computed(() => toPrePostConfig(this.hostRecord()));\n\n protected readonly displaySettings = computed(() => toDisplaySettings(this.hostRecord()));\n\n protected readonly printSettings = computed(() => toPrintSettings(this.hostRecord()));\n\n protected readonly questionnaireEntityId = computed(() =>\n resolvePersistedEntityId(this.hostRecord() as Record<string, unknown>),\n );\n\n protected readonly questionnaireTitle = computed(() => {\n const title = this.hostRecord()['title'] as AXPMultiLanguageString | string | undefined;\n const locale = this.translationService.getActiveLang?.() ?? 'en-US';\n const resolved = resolveMultiLanguageString(title, locale).trim();\n return resolved || undefined;\n });\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n protected onValueChange(value: QuestionnaireBuilderValue): void {\n if (this.skipInitialEmit()) {\n this.skipInitialEmit.set(false);\n return;\n }\n if (isEqual(this.getValue() ?? null, value ?? null)) {\n return;\n }\n this.setValue(value);\n }\n\n //#endregion\n}\n\n//#endregion\n","<!-- ----- Questions builder bound to the host record field ----- -->\n<axm-questionnaire-questions-builder\n [value]=\"builderValue()\"\n [readonly]=\"isReadonly()\"\n [prePostConfig]=\"prePostConfig()\"\n [displaySettingsInput]=\"displaySettings()\"\n [printSettingsInput]=\"printSettings()\"\n [questionnaireEntityId]=\"questionnaireEntityId()\"\n [questionnaireTitle]=\"questionnaireTitle()\"\n [showHeader]=\"true\"\n (valueChange)=\"onValueChange($event)\"\n>\n</axm-questionnaire-questions-builder>\n"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layou
|
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
4
|
import { signal, effect, untracked, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
5
5
|
import { isEqual, isPlainObject } from 'lodash-es';
|
|
6
|
-
import { m as AXMQuestionnaireViewerComponent } from './acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-
|
|
6
|
+
import { m as AXMQuestionnaireViewerComponent } from './acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-Dr56BtSo.mjs';
|
|
7
7
|
|
|
8
8
|
//#region ----- Component -----
|
|
9
9
|
class AXMQuestionnaireViewerEditComponent extends AXPValueWidgetComponent {
|
|
@@ -75,4 +75,4 @@ function parseQuestionnaireStructure(value) {
|
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
export { AXMQuestionnaireViewerEditComponent };
|
|
78
|
-
//# sourceMappingURL=acorex-platform-module-assessment-management-client-questionnaire-viewer-edit.component-
|
|
78
|
+
//# sourceMappingURL=acorex-platform-module-assessment-management-client-questionnaire-viewer-edit.component-CFsLdcCd.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-assessment-management-client-questionnaire-viewer-edit.component-
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-assessment-management-client-questionnaire-viewer-edit.component-CFsLdcCd.mjs","sources":["../../../../libs/modules/assessment-management/client/src/lib/features/content-display/questionnaire-viewer/questionnaire-viewer-edit.component.ts","../../../../libs/modules/assessment-management/client/src/lib/features/content-display/questionnaire-viewer/questionnaire-viewer-edit.component.html"],"sourcesContent":["import { AXPStateMessageComponent } from '@acorex-platform/framework-client/layout/components';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport type { QuestionnaireBuilderValue } from '@acorex-platform/module-assessment-management-client/contracts';\nimport { ChangeDetectionStrategy, Component, effect, OnInit, signal, untracked } from '@angular/core';\nimport { isEqual, isPlainObject } from 'lodash-es';\nimport { AXMQuestionnaireViewerComponent } from '../../questionnaire-viewer/components/viewer-container';\nimport type { QuestionnaireViewerConfig } from '../../questionnaire-viewer/questionnaire-viewer.types';\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-related-questionnaire-viewer',\n templateUrl: './questionnaire-viewer-edit.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXMQuestionnaireViewerComponent, AXPStateMessageComponent],\n})\nexport class AXMQuestionnaireViewerEditComponent\n extends AXPValueWidgetComponent<Record<string, unknown> | null>\n implements OnInit\n{\n //#region ----- State Signals -----\n\n protected readonly structure = signal<QuestionnaireBuilderValue | null>(null);\n protected readonly initialAnswers = signal<Record<string, any>>({});\n protected readonly viewerConfig = signal<QuestionnaireViewerConfig>({ readonly: false });\n private readonly userEdited = signal(false);\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n constructor() {\n super();\n effect(() => {\n const next = parseQuestionnaireStructure(this.options()['structure']);\n const value = this.getValue();\n untracked(() => {\n const structureChanged = !isEqual(next, this.structure());\n if (structureChanged) {\n this.structure.set(next);\n this.userEdited.set(false);\n }\n if (!this.userEdited() && next) {\n const answers = isPlainObject(value) ? { ...value } : {};\n if (!isEqual(answers, this.initialAnswers())) {\n this.initialAnswers.set(answers);\n }\n }\n });\n });\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n this.viewerConfig.set({ readonly: this.mode === 'view' });\n }\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n protected handleAnswers(answers: Record<string, any>): void {\n if (this.mode === 'view') {\n return;\n }\n if (isEqual(answers, this.initialAnswers()) || isEqual(answers, this.getValue())) {\n return;\n }\n this.userEdited.set(true);\n this.setValue(answers);\n }\n\n //#endregion\n}\n\n//#endregion\n\n//#region ----- Helpers -----\n\nfunction parseQuestionnaireStructure(value: unknown): QuestionnaireBuilderValue | null {\n if (!value || typeof value !== 'object') {\n return null;\n }\n const sections = (value as QuestionnaireBuilderValue).sections;\n if (!Array.isArray(sections) || sections.length === 0) {\n return null;\n }\n return value as QuestionnaireBuilderValue;\n}\n\n//#endregion\n","@if (structure(); as structure) {\n <!-- ----- Related questionnaire, answers stored on this record ----- -->\n <axm-questionnaire-viewer\n [structure]=\"structure\"\n [config]=\"viewerConfig()\"\n [initialAnswers]=\"initialAnswers()\"\n (answersChanged)=\"handleAnswers($event)\"\n ></axm-questionnaire-viewer>\n}\n<!-- ----- Empty state when the related record has no questions ----- -->\n@else {\n <axp-state-message\n icon=\"fa-light fa-list-check\"\n [title]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.empty.title'\"\n [description]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.empty.description'\"\n ></axp-state-message>\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ import { AXTranslationService, AXTranslationModule } from '@acorex/core/translat
|
|
|
5
5
|
import * as i1 from '@acorex/components/button';
|
|
6
6
|
import { AXButtonModule } from '@acorex/components/button';
|
|
7
7
|
import { AXToastService } from '@acorex/components/toast';
|
|
8
|
+
import { AXPSessionService } from '@acorex-platform/framework-client/auth';
|
|
8
9
|
import { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';
|
|
9
10
|
import { AXPCommandService } from '@acorex-platform/framework-client/runtime';
|
|
10
11
|
import * as i2 from '@acorex/components/decorators';
|
|
@@ -14,8 +15,8 @@ import { CommonModule } from '@angular/common';
|
|
|
14
15
|
import * as i0 from '@angular/core';
|
|
15
16
|
import { inject, input, computed, signal, viewChild, effect, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
16
17
|
import { first } from 'lodash';
|
|
17
|
-
import { RootConfig, resolvePrintSettings, AXM_ASSESSMENT_SESSION_PREVIEW_PDF_CLIENT_COMMAND_KEY } from '@acorex-platform/module-assessment-management-client/contracts';
|
|
18
|
-
import { h as AXMQuestionnaireViewerService, k as AXMQuestionnairePrintSnapshotService, l as AXMQuestionnairePrintHostComponent, p as persistAssessmentSession, m as AXMQuestionnaireViewerComponent, n as AXMQuestionnaireViewerQuestionnaireAttachmentsFooterComponent, o as AXMPreQuestionnaireContentComponent, q as AXMPostQuestionnaireContentComponent } from './acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-
|
|
18
|
+
import { AXMAssessmentManagementFeatureKeys, RootConfig, resolvePrintSettings, AXM_ASSESSMENT_SESSION_PREVIEW_PDF_CLIENT_COMMAND_KEY } from '@acorex-platform/module-assessment-management-client/contracts';
|
|
19
|
+
import { h as AXMQuestionnaireViewerService, k as AXMQuestionnairePrintSnapshotService, l as AXMQuestionnairePrintHostComponent, p as persistAssessmentSession, m as AXMQuestionnaireViewerComponent, n as AXMQuestionnaireViewerQuestionnaireAttachmentsFooterComponent, o as AXMPreQuestionnaireContentComponent, q as AXMPostQuestionnaireContentComponent } from './acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-Dr56BtSo.mjs';
|
|
19
20
|
|
|
20
21
|
//#region ---- Imports ----
|
|
21
22
|
//#endregion
|
|
@@ -58,6 +59,7 @@ class AXMQuestionnaireViewerPopupComponent extends AXBasePageComponent {
|
|
|
58
59
|
this.translationService = inject(AXTranslationService);
|
|
59
60
|
this.printSnapshot = inject(AXMQuestionnairePrintSnapshotService);
|
|
60
61
|
this.commandService = inject(AXPCommandService);
|
|
62
|
+
this.sessionService = inject(AXPSessionService);
|
|
61
63
|
//#endregion
|
|
62
64
|
//#region ---- Inputs ----
|
|
63
65
|
this.structure = input.required(/* @ts-ignore */
|
|
@@ -251,8 +253,9 @@ class AXMQuestionnaireViewerPopupComponent extends AXBasePageComponent {
|
|
|
251
253
|
...(ngDevMode ? [{ debugName: "showReviewDecisionButtons" }] : /* istanbul ignore next */ []));
|
|
252
254
|
this.showFooter = computed(() => ['pre', 'questions', 'review', 'summary', 'results'].includes(this.flowStep()), /* @ts-ignore */
|
|
253
255
|
...(ngDevMode ? [{ debugName: "showFooter" }] : /* istanbul ignore next */ []));
|
|
254
|
-
/**
|
|
255
|
-
this.showPreviewPdfButton = computed(() => this.
|
|
256
|
+
/** Off unless the edition enables questionnaire print and the opener opts in. */
|
|
257
|
+
this.showPreviewPdfButton = computed(() => this.sessionService.isFeatureEnabled(AXMAssessmentManagementFeatureKeys.QuestionnairePrint) &&
|
|
258
|
+
this.configValue()?.pdfPreview === true &&
|
|
256
259
|
(this.flowStep() === 'questions' || this.flowStep() === 'review'), /* @ts-ignore */
|
|
257
260
|
...(ngDevMode ? [{ debugName: "showPreviewPdfButton" }] : /* istanbul ignore next */ []));
|
|
258
261
|
effect(() => {
|
|
@@ -608,4 +611,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
608
611
|
}], ctorParameters: () => [], propDecorators: { structure: [{ type: i0.Input, args: [{ isSignal: true, alias: "structure", required: true }] }], prePostConfig: [{ type: i0.Input, args: [{ isSignal: true, alias: "prePostConfig", required: false }] }], config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: false }] }], initialAnswers: [{ type: i0.Input, args: [{ isSignal: true, alias: "initialAnswers", required: false }] }], submitHandler: [{ type: i0.Input, args: [{ isSignal: true, alias: "submitHandler", required: false }] }], saveHandler: [{ type: i0.Input, args: [{ isSignal: true, alias: "saveHandler", required: false }] }], assessmentFillContext: [{ type: i0.Input, args: [{ isSignal: true, alias: "assessmentFillContext", required: false }] }], questionnaireId: [{ type: i0.Input, args: [{ isSignal: true, alias: "questionnaireId", required: false }] }], printTemplateId: [{ type: i0.Input, args: [{ isSignal: true, alias: "printTemplateId", required: false }] }], outcomeRules: [{ type: i0.Input, args: [{ isSignal: true, alias: "outcomeRules", required: false }] }], storedOutcomeResults: [{ type: i0.Input, args: [{ isSignal: true, alias: "storedOutcomeResults", required: false }] }], printTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "printTitle", required: false }] }], viewer: [{ type: i0.ViewChild, args: ['viewer', { isSignal: true }] }], printHost: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXMQuestionnairePrintHostComponent), { isSignal: true }] }] } });
|
|
609
612
|
|
|
610
613
|
export { AXMQuestionnaireViewerPopupComponent };
|
|
611
|
-
//# sourceMappingURL=acorex-platform-module-assessment-management-client-questionnaire-viewer-popup.component-
|
|
614
|
+
//# sourceMappingURL=acorex-platform-module-assessment-management-client-questionnaire-viewer-popup.component-_VaiHN2w.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-assessment-management-client-questionnaire-viewer-popup.component-_VaiHN2w.mjs","sources":["../../../../libs/modules/assessment-management/client/src/lib/features/questionnaire-viewer/pages/viewer-popup/questionnaire-viewer-popup.component.ts","../../../../libs/modules/assessment-management/client/src/lib/features/questionnaire-viewer/pages/viewer-popup/questionnaire-viewer-popup.component.html"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXAlertModule } from '@acorex/components/alert';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPCommandService } from '@acorex-platform/framework-client/runtime';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { first } from 'lodash';\nimport {\n QuestionnaireBuilderValue,\n resolvePrintSettings,\n} from '@acorex-platform/module-assessment-management-client/contracts';\nimport {\n QuestionnaireAssessmentFillContext,\n QuestionnaireViewerConfig,\n} from '../../questionnaire-viewer.types';\nimport type { AXMAssessmentManagementAssessmentSessionEntityModel } from '@acorex-platform/module-assessment-management-client/contracts';\nimport {\n AXM_ASSESSMENT_SESSION_PREVIEW_PDF_CLIENT_COMMAND_KEY,\n AXMAssessmentManagementFeatureKeys,\n RootConfig,\n} from '@acorex-platform/module-assessment-management-client/contracts';\nimport { persistAssessmentSession } from '../../utils/assessment-session-persistence.util';\nimport type { PrePostConfig, QuestionnaireOutcomeItem } from '@acorex-platform/module-assessment-management-client/contracts';\nimport type { SummaryPlaceholderValues } from '../../utils/pre-post-content.utils';\nimport { AXMQuestionnaireViewerService } from '../../questionnaire-viewer.service';\nimport { AXMQuestionnairePrintSnapshotService } from '../../print/questionnaire-print-snapshot.service';\nimport { AXMQuestionnairePrintHostComponent } from '../../print/questionnaire-print-host.component';\nimport { AXMQuestionnaireViewerComponent } from '../../components/viewer-container';\nimport { AXMQuestionnaireViewerQuestionnaireAttachmentsFooterComponent } from '../../components/attachments-footer';\nimport type { QuestionnaireViewerAttachment } from '../../questionnaire-viewer.types';\nimport { AXMPreQuestionnaireContentComponent } from '../../components/pre-questionnaire-content';\nimport {\n AXMPostQuestionnaireContentComponent,\n type QuestionWithAnswer,\n} from '../../components/post-questionnaire-content';\n\n//#endregion\n\n//#region ---- Types ----\n\ntype FlowStep = 'pre' | 'questions' | 'review' | 'summary' | 'results';\n\n//#endregion\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axm-questionnaire-viewer-popup',\n templateUrl: './questionnaire-viewer-popup.component.html',\n styleUrl: './questionnaire-viewer-popup.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n\n imports: [\n CommonModule,\n AXTranslationModule,\n AXAlertModule,\n AXButtonModule,\n AXDecoratorModule,\n //AXPStopwatchComponent,\n AXMQuestionnaireViewerComponent,\n AXMQuestionnaireViewerQuestionnaireAttachmentsFooterComponent,\n AXMPreQuestionnaireContentComponent,\n AXMPostQuestionnaireContentComponent,\n AXMQuestionnairePrintHostComponent,\n ],\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXMQuestionnaireViewerPopupComponent extends AXBasePageComponent {\n //#region ---- Services & Dependencies ----\n\n private readonly questionnaireViewerService = inject(AXMQuestionnaireViewerService);\n private readonly entityService = inject(AXPEntityService);\n private readonly toastService = inject(AXToastService);\n private readonly translationService = inject(AXTranslationService);\n private readonly printSnapshot = inject(AXMQuestionnairePrintSnapshotService);\n private readonly commandService = inject(AXPCommandService);\n private readonly sessionService = inject(AXPSessionService);\n\n //#endregion\n\n //#region ---- Inputs ----\n\n structure = input.required<QuestionnaireBuilderValue>();\n prePostConfig = input<PrePostConfig | null>(null);\n config = input<QuestionnaireViewerConfig | undefined>(undefined);\n initialAnswers = input<Record<string, any>>({});\n submitHandler = input<\n ((answers: Record<string, any>) => Promise<SummaryPlaceholderValues | null | void>) | undefined\n >();\n saveHandler = input<((answers: Record<string, any>) => Promise<void>) | undefined>();\n assessmentFillContext = input<QuestionnaireAssessmentFillContext | undefined>(undefined);\n questionnaireId = input<string | undefined>(undefined);\n printTemplateId = input<string | undefined>(undefined);\n outcomeRules = input<QuestionnaireOutcomeItem[] | undefined>(undefined);\n storedOutcomeResults = input<SummaryPlaceholderValues | null>(null);\n printTitle = input<string | undefined>(undefined);\n\n /** Safe accessors: popup framework may overwrite inputs with plain values. */\n protected readonly prePostConfigValue = computed(() => this.safeInputValue(this.prePostConfig));\n protected readonly structureValue = computed(() => this.safeInputValue(this.structure));\n protected readonly configValue = computed(() => this.safeInputValue(this.config));\n protected readonly initialAnswersValue = computed(() => this.safeInputValue(this.initialAnswers));\n protected readonly questionnaireIdValue = computed(() => this.safeInputValue(this.questionnaireId));\n protected readonly printTemplateIdValue = computed(() => this.safeInputValue(this.printTemplateId));\n protected readonly outcomeRulesValue = computed(() => this.safeInputValue(this.outcomeRules));\n protected readonly storedOutcomeResultsValue = computed(() => this.safeInputValue(this.storedOutcomeResults));\n protected readonly printTitleValue = computed(() => this.safeInputValue(this.printTitle));\n\n /** Readonly entry step from viewer config (popup assigns plain object on `config`). */\n protected readonly readonlyInitialFlowStep = computed((): 'questions' | 'results' => {\n const step = this.configValue()?.initialFlowStep;\n return step === 'results' ? 'results' : 'questions';\n });\n protected readonly assessmentFillContextValue = computed((): QuestionnaireAssessmentFillContext | null => {\n const raw = this.safeInputValue(this.assessmentFillContext);\n if (raw && typeof raw === 'object' && typeof (raw as QuestionnaireAssessmentFillContext).caseId === 'string') {\n return raw as QuestionnaireAssessmentFillContext;\n }\n return null;\n });\n\n protected readonly submitHandlerValue = computed(() => {\n const handler = this.safeInputValue(this.submitHandler);\n if (typeof handler === 'function') return handler;\n if (this.assessmentFillContextValue()) {\n return (answers: Record<string, unknown>) => this.persistAssessmentAnswers(answers, true);\n }\n return this.getDefaultSubmitHandler();\n });\n\n protected readonly explicitSaveHandler = computed(() => {\n const handler = this.safeInputValue(this.saveHandler);\n return typeof handler === 'function' ? handler : undefined;\n });\n\n protected readonly isReadonly = computed(() => this.configValue()?.readonly === true);\n protected readonly isPreviewMode = computed(() => this.configValue()?.previewMode === true);\n protected readonly isReviewDecisionMode = computed(() => this.configValue()?.reviewDecisionMode === true);\n protected readonly completionMode = computed(() => {\n const fromConfig = this.configValue()?.completionMode;\n if (fromConfig) {\n return fromConfig;\n }\n return this.structureValue()?.displaySettings?.completionMode ?? 'submit-only';\n });\n protected readonly showSaveButton = computed(() => {\n if (this.isReadonly() || this.completionMode() !== 'save-and-continue') {\n return false;\n }\n return !!this.assessmentFillContextValue() || !!this.explicitSaveHandler();\n });\n protected readonly showSubmitButton = computed(() => !this.isReadonly());\n\n /** Submit on questions/review; \"Finish preview\" when `previewMode` is enabled. */\n protected readonly primarySubmitActionLabel = computed(() =>\n this.isPreviewMode()\n ? '@assessment-management:questionnaires.components.questionnaire-viewer.preview.finish.title'\n : '@general:actions.submit.title',\n );\n\n /** Session row loaded for fill persistence (popup cannot use command closures). */\n protected readonly existingSession = signal<AXMAssessmentManagementAssessmentSessionEntityModel | null>(null);\n protected readonly activeSessionId = signal<string | null>(null);\n\n /** Use answers from review context when returning from review; otherwise use initial input. */\n protected readonly effectiveInitialAnswers = computed(() => {\n const ctx = this.reviewContext();\n if (!ctx) return this.initialAnswersValue();\n return (ctx as { answers?: Record<string, any> }).answers ?? ctx;\n });\n\n private safeInputValue<T>(inputOrValue: T | (() => T)): T {\n return typeof inputOrValue === 'function' ? (inputOrValue as () => T)() : (inputOrValue as T);\n }\n\n /** Fallback when submitHandler is not passed (e.g. popup framework does not pass functions). */\n private getDefaultSubmitHandler(): (answers: Record<string, any>) => Promise<SummaryPlaceholderValues | null> {\n return async (answers: Record<string, any>) => {\n return this.questionnaireViewerService.buildSummaryPlaceholderValues(this.structureValue(), answers, {\n questionnaireId: this.questionnaireIdValue(),\n outcomeRules: this.outcomeRulesValue(),\n elapsedSeconds: this.timerElapsed(),\n });\n };\n }\n\n /**\n * First step after submit: outcomes (if enabled), else summary (if enabled), else close. Summary is always last when both are on.\n */\n protected resolvePostSubmitFirstStep(summary: SummaryPlaceholderValues | null): 'summary' | 'results' | null {\n if (!summary) return null;\n const cfg = this.prePostConfigValue();\n if (cfg?.post.showOutcomeResults === true) return 'results';\n if (cfg?.post.summaryEnabled === true) return 'summary';\n return null;\n }\n\n //#endregion\n\n //#region ---- State ----\n\n protected readonly flowStep = signal<FlowStep>('questions');\n protected readonly initialFlowApplied = signal(false);\n protected readonly reviewSnapshot = signal<QuestionWithAnswer[]>([]);\n protected readonly reviewContext = signal<Record<string, any> | null>(null);\n protected readonly submitResult = signal<SummaryPlaceholderValues | null>(null);\n protected readonly lastSubmittedAnswers = signal<Record<string, any>>({});\n protected readonly lastSubmittedQuestions = signal<Array<{ name: string; title: string; answer: any }>>([]);\n protected readonly isSubmitting = signal(false);\n protected readonly canNavigatePrevious = signal(false);\n protected readonly canNavigateNext = signal(false);\n protected readonly showNavigationButtons = signal(false);\n protected readonly isLastStep = signal(false);\n protected readonly areAllRequiredQuestionsAnswered = signal(false);\n protected readonly isPreviewingPdf = signal(false);\n\n //#endregion\n\n //#region ---- View References ----\n\n protected readonly viewer = viewChild<AXMQuestionnaireViewerComponent>('viewer');\n protected readonly printHost = viewChild(AXMQuestionnairePrintHostComponent);\n protected readonly printAnswers = signal<Record<string, unknown>>({});\n\n //#endregion\n\n //#region ---- Computed ----\n\n protected readonly viewerViewModel = computed(() => this.viewer()?.viewmodel);\n protected readonly totalQuestionsCount = computed(() => this.viewerViewModel()?.totalQuestionsCount() ?? 0);\n protected readonly showTimer = computed(() => this.viewerViewModel()?.showTimer() ?? false);\n protected readonly timerTimeLimit = computed(() => this.viewerViewModel()?.timerTimeLimit());\n protected readonly timerElapsed = computed(() => this.viewerViewModel()?.timerElapsed() ?? 0);\n protected readonly answeredQuestionsCount = computed(() => this.viewerViewModel()?.answeredQuestionsCount() ?? 0);\n protected readonly questionnaireAttachments = computed(\n (): QuestionnaireViewerAttachment[] => this.viewerViewModel()?.questionnaireAttachments() ?? [],\n );\n\n protected readonly showReviewButton = computed(\n () => this.isLastStep() && (this.prePostConfigValue()?.post?.reviewEnabled ?? false) && this.flowStep() === 'questions'\n );\n\n /** True when readonly view has stored outcome results to display. */\n protected readonly hasStoredOutcomeResults = computed(() => {\n const result = this.storedOutcomeResultsValue() ?? this.submitResult();\n if (!result) {\n return false;\n }\n if ((result.outcomeSections?.length ?? 0) > 0) {\n return true;\n }\n return Object.keys(result.outcomes ?? {}).length > 0;\n });\n\n /** Results navigation on any questions step (readonly session review only). */\n protected readonly showViewResultsButton = computed(\n () => this.isReadonly() && this.flowStep() === 'questions' && this.hasStoredOutcomeResults(),\n );\n\n /** Sign off / Reject on readonly manager review (questions or outcome results step). */\n protected readonly showReviewDecisionButtons = computed(\n () =>\n this.isReviewDecisionMode() &&\n this.isReadonly() &&\n (this.flowStep() === 'questions' || this.flowStep() === 'results'),\n );\n\n protected readonly showFooter = computed(() =>\n ['pre', 'questions', 'review', 'summary', 'results'].includes(this.flowStep())\n );\n\n /** Off unless the edition enables questionnaire print and the opener opts in. */\n protected readonly showPreviewPdfButton = computed(\n () =>\n this.sessionService.isFeatureEnabled(AXMAssessmentManagementFeatureKeys.QuestionnairePrint) &&\n this.configValue()?.pdfPreview === true &&\n (this.flowStep() === 'questions' || this.flowStep() === 'review'),\n );\n\n //#endregion\n\n //#region ---- Lifecycle ----\n\n constructor() {\n super();\n effect(() => {\n const cfg = this.prePostConfigValue();\n const initial = this.readonlyInitialFlowStep();\n const stored = this.storedOutcomeResultsValue();\n\n if (stored) {\n this.submitResult.set(stored);\n }\n\n if (this.initialFlowApplied()) {\n return;\n }\n\n if (initial === 'results') {\n if (!stored) {\n return;\n }\n this.flowStep.set('results');\n this.initialFlowApplied.set(true);\n return;\n }\n\n this.flowStep.set(cfg?.pre.enabled === true ? 'pre' : 'questions');\n this.initialFlowApplied.set(true);\n });\n effect(() => {\n const ctx = this.assessmentFillContextValue();\n const sessionId = ctx?.sessionId;\n if (sessionId) {\n this.activeSessionId.set(sessionId);\n void this.loadExistingSession(sessionId);\n }\n });\n effect(() => {\n const v = this.viewer();\n if (v) {\n const vm = v.viewmodel;\n this.canNavigatePrevious.set(vm.canNavigatePrevious());\n this.canNavigateNext.set(vm.canNavigateNext());\n const viewMode = v.viewMode;\n this.showNavigationButtons.set(viewMode === 'page-per-group' || viewMode === 'page-per-question' || viewMode === 'side-menu');\n this.isLastStep.set(v.isLastStep);\n this.areAllRequiredQuestionsAnswered.set(v.areAllRequiredQuestionsAnswered);\n }\n });\n }\n\n //#endregion\n\n //#region ---- Assessment persistence ----\n\n private async loadExistingSession(sessionId: string): Promise<void> {\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 this.existingSession.set(fromQuery);\n return;\n }\n\n const session = await sessionAccessor.byKey(sessionId);\n if (session) {\n this.existingSession.set(session);\n }\n }\n\n private async persistAssessmentAnswers(\n answers: Record<string, unknown>,\n finalize: boolean,\n ): Promise<SummaryPlaceholderValues | null> {\n const ctx = this.assessmentFillContextValue();\n const questionnaireId = this.questionnaireIdValue();\n if (!ctx || !questionnaireId) {\n return null;\n }\n\n const vm = this.viewerViewModel();\n const progressMetrics =\n vm != null\n ? {\n answeredQuestionsCount: vm.answeredQuestionsCount(),\n progressPercentage: vm.progressPercentage(),\n }\n : undefined;\n\n const result = await persistAssessmentSession({\n entityService: this.entityService,\n questionnaireViewerService: this.questionnaireViewerService,\n caseId: ctx.caseId,\n sessionId: this.activeSessionId() ?? ctx.sessionId ?? null,\n existingSession: this.existingSession(),\n responderId: ctx.responderId,\n role: ctx.role,\n structure: this.structureValue(),\n questionnaireId,\n answers,\n finalize,\n progressMetrics,\n timeSpentSeconds: vm?.timerElapsed(),\n });\n this.activeSessionId.set(result.sessionId);\n await this.loadExistingSession(result.sessionId);\n if (finalize) {\n this.schedulePrintSnapshot(result.sessionId);\n }\n if (!finalize) {\n this.toastService.show({\n color: 'success',\n title: await this.translationService.translateAsync('@general:messages.form.saved.success.title'),\n content: await this.translationService.translateAsync(\n '@assessment-management:questionnaires.components.questionnaire-viewer.actions.save-as-draft.success',\n ),\n });\n return null;\n }\n return this.questionnaireViewerService.buildSummaryPlaceholderValues(this.structureValue(), answers, {\n questionnaireId,\n elapsedSeconds: this.timerElapsed(),\n });\n }\n\n private schedulePrintSnapshot(sessionId: string): void {\n this.printAnswers.set(this.viewer()?.getAllAnswers() ?? this.effectiveInitialAnswers() ?? {});\n this.printSnapshot.scheduleStore({\n entityService: this.entityService,\n sessionId,\n title: this.printTitleValue()?.trim() || undefined,\n host: this.printHost(),\n answers: this.printAnswers(),\n });\n }\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n protected async handlePreviewPdfClick(): Promise<void> {\n if (this.isPreviewingPdf()) {\n return;\n }\n this.isPreviewingPdf.set(true);\n const previewWindow = typeof window !== 'undefined' ? window.open('about:blank', '_blank') : null;\n if (previewWindow) {\n try {\n previewWindow.document.title = 'Preview PDF';\n previewWindow.document.body.innerHTML =\n '<p style=\"font-family:sans-serif;padding:24px;color:#64748b\">Generating PDF…</p>';\n } catch {\n // about:blank can be briefly cross-origin in some browsers\n }\n }\n // Keep this tab visible so print widgets can paint and timers are not throttled.\n window.focus();\n try {\n const answers = this.viewer()?.getAllAnswers() ?? this.effectiveInitialAnswers() ?? {};\n this.printAnswers.set(answers);\n const title = this.printTitleValue()?.trim() || 'Questionnaire';\n const printHtmlGzip = await this.printSnapshot.captureHtmlGzipFromHost(this.printHost(), title, answers);\n if (!printHtmlGzip) {\n previewWindow?.close();\n this.toastService.show({\n color: 'danger',\n title: await this.translationService.translateAsync(\n '@assessment-management:sessions.actions.preview-pdf.failed',\n ),\n });\n return;\n }\n const print = resolvePrintSettings(this.structureValue()?.printSettings);\n const fill = this.assessmentFillContextValue();\n const result = await this.commandService.execute(AXM_ASSESSMENT_SESSION_PREVIEW_PDF_CLIENT_COMMAND_KEY, {\n printHtmlGzip,\n title,\n locale: this.translationService.getActiveLang?.() ?? 'en-US',\n paperSize: print.paperSize,\n orientation: print.orientation,\n watermark: print.watermark,\n sessionId: this.activeSessionId() ?? fill?.sessionId,\n caseId: fill?.caseId,\n questionnaireId: this.questionnaireIdValue(),\n printTemplateId: this.printTemplateIdValue(),\n previewWindow,\n });\n if (result?.success === false) {\n previewWindow?.close();\n this.toastService.show({\n color: 'danger',\n title:\n (typeof result.message?.text === 'string' && result.message.text.trim()) ||\n (await this.translationService.translateAsync(\n '@assessment-management:sessions.actions.preview-pdf.failed',\n )),\n });\n }\n } catch (error: unknown) {\n previewWindow?.close();\n this.toastService.show({\n color: 'danger',\n title: error instanceof Error ? error.message : 'Failed to preview assessment session PDF.',\n });\n } finally {\n this.isPreviewingPdf.set(false);\n }\n }\n\n protected handleReviewClick(): void {\n const viewer = this.viewer();\n const items = viewer?.getQuestionsWithAnswers() ?? [];\n const context = viewer?.getReviewContext() ?? null;\n this.reviewSnapshot.set(\n items.map((q) => ({\n name: q.name,\n title: q.title,\n answer: q.answer,\n question: q.question,\n sectionName: q.sectionName,\n sectionOrder: q.sectionOrder,\n sectionTitle: q.sectionTitle,\n sectionDescription: q.sectionDescription,\n })),\n );\n this.reviewContext.set(context);\n this.flowStep.set('review');\n }\n\n protected async handleSaveClick(): Promise<void> {\n const viewer = this.viewer();\n if (!viewer || !this.showSaveButton()) {\n return;\n }\n this.isSubmitting.set(true);\n try {\n const result = viewer.saveDraft();\n if (result.success && result.answers) {\n const explicit = this.explicitSaveHandler();\n if (explicit) {\n await explicit(result.answers);\n } else {\n await this.persistAssessmentAnswers(result.answers, false);\n }\n this.close({\n answers: result.answers,\n questions: viewer.getQuestionsWithAnswers(),\n submitted: false,\n saved: true,\n });\n }\n } finally {\n this.isSubmitting.set(false);\n }\n }\n\n protected async handleReviewSubmit(): Promise<void> {\n const viewer = this.viewer();\n const handler = this.submitHandlerValue();\n if (!viewer || !handler) return;\n this.isSubmitting.set(true);\n try {\n const result = await viewer.submit();\n if (result.success && result.answers) {\n const summary = await handler(result.answers);\n const questions = viewer.getQuestionsWithAnswers();\n this.submitResult.set(summary ?? null);\n this.lastSubmittedAnswers.set(result.answers);\n this.lastSubmittedQuestions.set(questions);\n const step = this.resolvePostSubmitFirstStep(summary ?? null);\n if (step) {\n this.flowStep.set(step);\n } else {\n this.close({ answers: result.answers, questions, submitted: true });\n }\n }\n } finally {\n this.isSubmitting.set(false);\n }\n }\n\n protected async handlePreviousClick(): Promise<void> {\n await this.viewer()?.navigatePrevious();\n }\n\n protected async handleNextClick(): Promise<void> {\n await this.viewer()?.navigateNext();\n }\n\n protected async handleSubmitClick(): Promise<void> {\n const viewer = this.viewer();\n const handler = this.submitHandlerValue();\n if (!viewer || !handler) return;\n this.isSubmitting.set(true);\n try {\n const result = await viewer.submit();\n if (result.success && result.answers) {\n const summary = await handler(result.answers);\n const questions = viewer.getQuestionsWithAnswers();\n this.submitResult.set(summary ?? null);\n this.lastSubmittedAnswers.set(result.answers);\n this.lastSubmittedQuestions.set(questions);\n const step = this.resolvePostSubmitFirstStep(summary ?? null);\n if (step) {\n this.flowStep.set(step);\n } else {\n this.close({ answers: result.answers, questions, submitted: true });\n }\n }\n } finally {\n this.isSubmitting.set(false);\n }\n }\n\n protected handleViewResultsClick(): void {\n const stored = this.storedOutcomeResultsValue();\n if (stored) {\n this.submitResult.set(stored);\n }\n this.flowStep.set('results');\n }\n\n protected handleDone(): void {\n if (this.isReadonly() && !this.isReviewDecisionMode()) {\n this.close({\n answers: this.effectiveInitialAnswers(),\n questions: this.viewer()?.getQuestionsWithAnswers() ?? [],\n submitted: false,\n });\n return;\n }\n\n const answers = this.lastSubmittedAnswers();\n const questions = this.lastSubmittedQuestions();\n this.close({ answers, questions, submitted: true });\n }\n\n protected handleReviewSignOff(): void {\n this.closeWithReviewDecision('signed-off');\n }\n\n protected handleReviewReject(): void {\n this.closeWithReviewDecision('rejected');\n }\n\n private closeWithReviewDecision(decision: 'signed-off' | 'rejected'): void {\n this.close({\n answers: this.effectiveInitialAnswers(),\n questions: this.viewer()?.getQuestionsWithAnswers() ?? [],\n submitted: false,\n decision,\n });\n }\n\n //#endregion\n}\n\n//#endregion\n","<!-- Main content area: flow-step driven body -->\n<div class=\"__content-area flex flex-1 min-h-0 flex-col\"\n [class.overflow-hidden]=\"flowStep() === 'questions'\" [class.overflow-y-auto]=\"flowStep() !== 'questions'\">\n <!-- Pre-questionnaire introduction content -->\n @if (flowStep() === 'pre') {\n <axm-pre-questionnaire-content [content]=\"$safeNavigationMigration(prePostConfigValue()?.pre?.content)\"></axm-pre-questionnaire-content>\n }\n <!-- Post-submit outcome results -->\n @else if (flowStep() === 'results') {\n <axm-post-questionnaire-content mode=\"results\" [placeholderValues]=\"submitResult()\"></axm-post-questionnaire-content>\n }\n <!-- Post-submit summary content -->\n @else if (flowStep() === 'summary') {\n <axm-post-questionnaire-content mode=\"summary\" [summaryContent]=\"$safeNavigationMigration(prePostConfigValue()?.post?.summaryContent)\"\n [placeholderValues]=\"submitResult()\"></axm-post-questionnaire-content>\n }\n <!-- Questionnaire and review flow -->\n @else {\n <!-- Review mode content (answers snapshot before submit) -->\n @if (flowStep() === 'review') {\n <axm-post-questionnaire-content mode=\"review\" [questionsWithAnswers]=\"reviewSnapshot()\"\n [reviewContext]=\"reviewContext()\"\n [showQuestionNumbers]=\"configValue()?.showQuestionNumbers ?? true\"></axm-post-questionnaire-content>\n }\n\n <!-- Questionnaire workspace (hidden off-screen while in review mode) -->\n <div class=\"__questions flex flex-col flex-1 min-h-0 overflow-hidden\"\n [class.invisible]=\"flowStep() === 'review'\" [style.position]=\"flowStep() === 'review' ? 'fixed' : null\"\n [style.left]=\"flowStep() === 'review' ? '-9999px' : null\" [class.size-0]=\"flowStep() === 'review'\"\n [class.overflow-hidden]=\"flowStep() === 'review'\">\n <!-- @if (showTimer()) {\n <div class=\"__header flex-shrink-0 p-4 border-b border-surface\">\n <div class=\"flex justify-between items-center\">\n <div class=\"__toolbar-meta flex items-center gap-4 text-sm\">\n @if (totalQuestionsCount() > 0) {\n <span><i class=\"fa-light fa-list-check\"></i> {{ totalQuestionsCount() }} {{ totalQuestionsCount() === 1 ? 'Question' : 'Questions' }}</span>\n }\n @if (showTimer()) {\n <axp-stopwatch\n [mode]=\"'count-down'\"\n [timeLimit]=\"timerTimeLimit()\"\n [format]=\"timerTimeLimit() && timerTimeLimit()! >= 3600 ? 'hh:mm:ss' : 'mm:ss'\"\n [autoStart]=\"true\"\n [showControls]=\"false\"\n [value]=\"timerElapsed()\"\n (valueChange)=\"viewerViewModel()!.updateTimerElapsed($event)\"\n ></axp-stopwatch>\n }\n </div>\n </div>\n </div>\n } -->\n\n <!-- Questionnaire rendering container -->\n <div class=\"__content flex flex-1 min-h-0 flex-col overflow-y-auto overflow-x-hidden\">\n <axm-questionnaire-viewer #viewer [questionnaireId]=\"questionnaireIdValue()\" [structure]=\"structureValue()\"\n [config]=\"configValue()\" [initialAnswers]=\"effectiveInitialAnswers()\"></axm-questionnaire-viewer>\n </div>\n </div>\n }\n</div>\n\n<!-- Popup footer: flow action buttons -->\n@if (showFooter()) {\n<ax-footer class=\"__popup-footer flex-shrink-0 border-t px-4 py-3\">\n <!-- Footer prefix: attachments and progress -->\n <ax-prefix>\n <div class=\"flex items-center gap-4 min-w-0\">\n @if (flowStep() === 'questions') {\n <axm-questionnaire-viewer-questionnaire-attachments-footer [attachments]=\"questionnaireAttachments()\" />\n <div class=\"__footer-progress text-sm font-mono tabular-nums\" dir=\"ltr\">\n {{ answeredQuestionsCount() }} / {{ totalQuestionsCount() }}\n </div>\n }\n @if (showPreviewPdfButton()) {\n <ax-button look=\"outline\" color=\"primary\"\n [text]=\"'@assessment-management:sessions.actions.preview-pdf.title' | translate | async\"\n [disabled]=\"isPreviewingPdf()\" (onClick)=\"handlePreviewPdfClick()\"></ax-button>\n }\n </div>\n </ax-prefix>\n\n <!-- Footer suffix: flow action buttons -->\n <ax-suffix>\n <!-- Pre-questionnaire welcome step -->\n @if (flowStep() === 'pre') {\n <ax-button look=\"solid\" color=\"primary\"\n [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.start' | translate | async\"\n (onClick)=\"flowStep.set('questions')\"></ax-button>\n }\n <!-- Question step actions -->\n @else if (flowStep() === 'questions') {\n <!-- Draft save (fill mode with save-and-continue) -->\n @if (showSaveButton()) {\n <ax-button look=\"outline\" color=\"primary\"\n [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.actions.save-as-draft.title' | translate | async\"\n [disabled]=\"isSubmitting() || isReadonly()\" (onClick)=\"handleSaveClick()\"></ax-button>\n }\n <!-- Section / page navigation (paginated view modes) -->\n @if (showNavigationButtons()) {\n <ax-button look=\"solid\" [disabled]=\"!canNavigatePrevious()\"\n [text]=\"'@general:actions.previous.title' | translate | async\" (onClick)=\"handlePreviousClick()\"></ax-button>\n @if (!isLastStep()) {\n <ax-button look=\"solid\" color=\"primary\" [disabled]=\"!canNavigateNext()\"\n [text]=\"'@general:actions.next.title' | translate | async\" (onClick)=\"handleNextClick()\"></ax-button>\n }\n }\n <!-- Last step: optional review before submit -->\n @if (isLastStep() && showReviewButton()) {\n <ax-button look=\"solid\" color=\"primary\"\n [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.review' | translate | async\"\n [disabled]=\"isReadonly() || !areAllRequiredQuestionsAnswered()\" (onClick)=\"handleReviewClick()\"></ax-button>\n }\n <!-- Last step: submit when review is disabled -->\n @if (isLastStep() && !showReviewButton() && showSubmitButton()) {\n <ax-button look=\"solid\" color=\"primary\" [text]=\"primarySubmitActionLabel() | translate | async\"\n [disabled]=\"isSubmitting() || isReadonly() || !areAllRequiredQuestionsAnswered()\"\n (onClick)=\"handleSubmitClick()\"></ax-button>\n }\n <!-- Readonly session review: jump to stored outcome results -->\n @if (showViewResultsButton()) {\n <ax-button look=\"outline\" color=\"success\"\n [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.results' | translate | async\"\n (onClick)=\"handleViewResultsClick()\">\n <ax-icon class=\"fa-light fa-chart-simple\"></ax-icon>\n </ax-button>\n }\n <!-- Manager review decision (readonly workflow review) -->\n @if (showReviewDecisionButtons()) {\n <ax-button look=\"solid\" color=\"success\"\n [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.sign-off' | translate | async\"\n (onClick)=\"handleReviewSignOff()\">\n <ax-icon class=\"fa-light fa-check\"></ax-icon>\n </ax-button>\n <ax-button look=\"solid\" color=\"danger\" [text]=\"'@general:actions.reject.title' | translate | async\"\n (onClick)=\"handleReviewReject()\">\n <ax-icon class=\"fa-light fa-times\"></ax-icon>\n </ax-button>\n }\n }\n <!-- Review step actions -->\n @else if (flowStep() === 'review') {\n <ax-button look=\"outline\"\n [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.edit' | translate | async\"\n (onClick)=\"flowStep.set('questions')\"></ax-button>\n <ax-button look=\"solid\" color=\"primary\" [text]=\"primarySubmitActionLabel() | translate | async\"\n [disabled]=\"isSubmitting()\" (onClick)=\"handleReviewSubmit()\"></ax-button>\n }\n <!-- Results step actions -->\n @else if (flowStep() === 'results') {\n <!-- Readonly session review: return to answers -->\n @if (isReadonly() && hasStoredOutcomeResults()) {\n <ax-button look=\"outline\" [color]=\"'primary'\"\n [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.answers' | translate | async\"\n (onClick)=\"flowStep.set('questions')\">\n <ax-icon class=\"fa-light fa-clipboard-list-check\"></ax-icon>\n </ax-button>\n }\n @if (showReviewDecisionButtons()) {\n <ax-button look=\"solid\" color=\"success\"\n [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.sign-off' | translate | async\"\n (onClick)=\"handleReviewSignOff()\">\n <ax-icon class=\"fa-light fa-check\"></ax-icon>\n </ax-button>\n <ax-button look=\"solid\" color=\"danger\" [text]=\"'@general:actions.reject.title' | translate | async\"\n (onClick)=\"handleReviewReject()\">\n <ax-icon class=\"fa-light fa-times\"></ax-icon>\n </ax-button>\n } @else if (prePostConfigValue()?.post?.summaryEnabled && !isReadonly()) {\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'@general:actions.next.title' | translate | async\"\n (onClick)=\"flowStep.set('summary')\"></ax-button>\n } @else {\n <ax-button look=\"solid\" color=\"primary\"\n [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.done' | translate | async\"\n (onClick)=\"handleDone()\"></ax-button>\n }\n }\n <!-- Summary step action -->\n @else if (flowStep() === 'summary') {\n <ax-button look=\"solid\" color=\"primary\"\n [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.done' | translate | async\"\n (onClick)=\"handleDone()\"></ax-button>\n }\n </ax-suffix>\n</ax-footer>\n}\n\n<axm-questionnaire-print-host\n [structure]=\"structureValue()\"\n [questionnaireId]=\"questionnaireIdValue()\"\n [answers]=\"printAnswers()\"\n [prePostConfig]=\"prePostConfigValue()\"\n [placeholderValues]=\"storedOutcomeResultsValue() ?? submitResult()\"\n/>"],"names":["i4"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Injectable } from '@angular/core';
|
|
3
|
-
import { a as FORM_TEMPLATE_VIEWER_PAGE_COMPONENT_KEY, Q as QUESTIONNAIRE_VIEWER_PAGE_COMPONENT_KEY } from './acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-
|
|
3
|
+
import { a as FORM_TEMPLATE_VIEWER_PAGE_COMPONENT_KEY, Q as QUESTIONNAIRE_VIEWER_PAGE_COMPONENT_KEY } from './acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-Dr56BtSo.mjs';
|
|
4
4
|
|
|
5
5
|
class AXMRelatedContentViewerPageComponentProvider {
|
|
6
6
|
async components() {
|
|
@@ -23,4 +23,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
23
23
|
}] });
|
|
24
24
|
|
|
25
25
|
export { AXMRelatedContentViewerPageComponentProvider };
|
|
26
|
-
//# sourceMappingURL=acorex-platform-module-assessment-management-client-related-content-viewer-page-component.provider-
|
|
26
|
+
//# sourceMappingURL=acorex-platform-module-assessment-management-client-related-content-viewer-page-component.provider-tSXHNIPe.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-assessment-management-client-related-content-viewer-page-component.provider-
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-assessment-management-client-related-content-viewer-page-component.provider-tSXHNIPe.mjs","sources":["../../../../libs/modules/assessment-management/client/src/lib/features/content-display/related-content-viewer-page/related-content-viewer-page-component.provider.ts"],"sourcesContent":["import {\n AXPPageComponentDefinition,\n AXPPageComponentProvider,\n} from '@acorex-platform/framework-client/layout/components';\nimport { Injectable } from '@angular/core';\nimport {\n FORM_TEMPLATE_VIEWER_PAGE_COMPONENT_KEY,\n QUESTIONNAIRE_VIEWER_PAGE_COMPONENT_KEY,\n} from '../content-display.constants';\n\n@Injectable()\nexport class AXMRelatedContentViewerPageComponentProvider implements AXPPageComponentProvider {\n async components(): Promise<AXPPageComponentDefinition[]> {\n return [\n {\n key: FORM_TEMPLATE_VIEWER_PAGE_COMPONENT_KEY,\n loader: () =>\n import('./related-content-viewer-page.component').then(\n (module) => module.AXMRelatedContentViewerPageComponent,\n ),\n },\n {\n key: QUESTIONNAIRE_VIEWER_PAGE_COMPONENT_KEY,\n loader: () =>\n import('./related-content-viewer-page.component').then(\n (module) => module.AXMRelatedContentViewerPageComponent,\n ),\n },\n ];\n }\n}\n"],"names":[],"mappings":";;;;MAWa,4CAA4C,CAAA;AACvD,IAAA,MAAM,UAAU,GAAA;QACd,OAAO;AACL,YAAA;AACE,gBAAA,GAAG,EAAE,uCAAuC;AAC5C,gBAAA,MAAM,EAAE,MACN,OAAO,0GAAyC,CAAC,CAAC,IAAI,CACpD,CAAC,MAAM,KAAK,MAAM,CAAC,oCAAoC,CACxD;AACJ,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,uCAAuC;AAC5C,gBAAA,MAAM,EAAE,MACN,OAAO,0GAAyC,CAAC,CAAC,IAAI,CACpD,CAAC,MAAM,KAAK,MAAM,CAAC,oCAAoC,CACxD;AACJ,aAAA;SACF;IACH;8GAlBW,4CAA4C,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAA5C,4CAA4C,EAAA,CAAA,CAAA;;2FAA5C,4CAA4C,EAAA,UAAA,EAAA,CAAA;kBADxD;;;"}
|
|
@@ -3,7 +3,7 @@ import * as i0 from '@angular/core';
|
|
|
3
3
|
import { inject, Injectable } from '@angular/core';
|
|
4
4
|
import { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';
|
|
5
5
|
import { defaultTo, get, isString, isEmpty, toString, first } from 'lodash';
|
|
6
|
-
import { h as AXMQuestionnaireViewerService } from './acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-
|
|
6
|
+
import { h as AXMQuestionnaireViewerService } from './acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-Dr56BtSo.mjs';
|
|
7
7
|
import { RootConfig } from '@acorex-platform/module-assessment-management-client/contracts';
|
|
8
8
|
import { a as openAssessmentSessionAnswersReviewDecision } from './acorex-platform-module-assessment-management-client-assessment-session-answers-view.util-42ZcOY2C.mjs';
|
|
9
9
|
|
|
@@ -230,4 +230,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
230
230
|
}] });
|
|
231
231
|
|
|
232
232
|
export { ReviewAssessmentSessionCommand };
|
|
233
|
-
//# sourceMappingURL=acorex-platform-module-assessment-management-client-review-assessment-session.command-
|
|
233
|
+
//# sourceMappingURL=acorex-platform-module-assessment-management-client-review-assessment-session.command-ei5Yuxft.mjs.map
|