{"version":3,"file":"app-9024fe65.xxxxxxxx.bundle.js","mappings":"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","sources":["webpack://iadviser/./src/components/qce/qce.html","webpack://iadviser/./src/components/qce/qce.ts"],"sourcesContent":["// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","import styles from '../../styles/qce.css';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { log } from 'resources/services/log-service';\r\nimport { customElement, autoinject, TaskQueue, bindable, DOM, getContextFor } from 'aurelia-framework';\r\nimport type { IQceResponse, IQceQuestion, IQceAnswerOption, IQceResponseGroup } from './qce-typings';\r\nimport { generateGuidString } from 'resources/utilities/insecure-guid';\r\nimport { FeatureFlagService } from 'resources/plugins/feature-flags/feature-flags-service';\r\nimport { FeatureFlag } from 'feature-flags';\r\n\r\n@customElement('qce')\r\n@autoinject()\r\nexport class Qce {\r\n public styles = styles;\r\n\r\n @bindable() model: IQceResponse = {\r\n groups: [],\r\n guid: null,\r\n validationErrors: []\r\n };\r\n\r\n @bindable additional: any = {};\r\n\r\n @bindable() viewMode = false;\r\n @bindable() autofocus = false;\r\n @bindable() debug = false;\r\n\r\n private context = this;\r\n private step;\r\n private selectedQuestion;\r\n private showAlertTextModal;\r\n\r\n constructor(private taskQueue: TaskQueue, private element: Element, private ff: FeatureFlagService) {\r\n\r\n }\r\n\r\n attached() {\r\n this.element.classList.add('qce-rendered');\r\n }\r\n\r\n bind(bindingContext, overrideContext) {\r\n\r\n this.step = getContextFor('isDirty', { bindingContext, overrideContext }, 0);\r\n\r\n if (this.step) {\r\n this.step.isDirty = false;\r\n }\r\n\r\n this.generateGuids();\r\n\r\n if (this.autofocus) {\r\n this.focusFirstEditableInput();\r\n }\r\n\r\n if (this.ff.enabled(FeatureFlag.qceDebug)) {\r\n this.debug = true;\r\n }\r\n\r\n this.modelChanged();\r\n\r\n log.info(`QCE component bound: `, this.model);\r\n }\r\n\r\n generateGuids() {\r\n if (this.model && this.model.groups && this.model.groups.length) {\r\n this.model.groups = this.model.groups.map(group => {\r\n if (group.guid === '00000000-0000-0000-0000-000000000000') {\r\n group.guid = generateGuidString();\r\n }\r\n\r\n group.questions = group.questions.map(question => {\r\n if (question.guid === '00000000-0000-0000-0000-000000000000') {\r\n question.guid = generateGuidString();\r\n }\r\n\r\n if (question.currentResponse && question.currentResponse.guid === '00000000-0000-0000-0000-000000000000') {\r\n question.currentResponse.guid = generateGuidString();\r\n }\r\n\r\n if (question.currentResponse && question.currentResponse.gridResponses) {\r\n question.currentResponse.gridResponses = question.currentResponse.gridResponses.map(response => {\r\n if (response.Guid === '00000000-0000-0000-0000-000000000000') {\r\n response.Guid = generateGuidString();\r\n }\r\n\r\n return response;\r\n });\r\n }\r\n\r\n return question;\r\n });\r\n return group;\r\n });\r\n }\r\n }\r\n\r\n modelChanged() {\r\n if (this.model) {\r\n log.info(`QCE: modelChanged`, this.model);\r\n\r\n this.generateGuids();\r\n\r\n for (const group of this.model.groups) {\r\n this.recalculateWorkflows(group.sequenceNo);\r\n }\r\n }\r\n }\r\n\r\n fieldChanged(question: IQceQuestion, group: IQceResponseGroup) {\r\n this.taskQueue.queueTask(() => {\r\n const currentResponse = question.currentResponse;\r\n const selectedValue = (question as any)._selectedValue as IQceAnswerOption;\r\n\r\n if (selectedValue) {\r\n currentResponse.answerId = selectedValue.answerId;\r\n } else {\r\n currentResponse.answerId = null;\r\n }\r\n\r\n if (question.hasError) {\r\n question.hasError = false;\r\n }\r\n\r\n log.info(`QCE: fieldChanged`, question);\r\n\r\n this.recalculateWorkflowsOnChange(question);\r\n\r\n // No response present, set the flag to false\r\n if (currentResponse.responseTypeId === -1) {\r\n currentResponse.responseValue = null;\r\n currentResponse.responsePresent = false;\r\n currentResponse.answerId = null;\r\n } else {\r\n question.currentResponse.responsePresent = true;\r\n }\r\n\r\n if (this.step) {\r\n this.step.isDirty = true;\r\n }\r\n\r\n const changeEvent = DOM.createCustomEvent('change', {\r\n bubbles: true,\r\n cancelable: true,\r\n detail: { question }\r\n });\r\n\r\n this.element.dispatchEvent(changeEvent);\r\n });\r\n }\r\n\r\n recalculateWorkflows(groupSequenceNo: number) {\r\n const group = this.model.groups.find(g => g.sequenceNo === groupSequenceNo);\r\n const questions = group.questions;\r\n\r\n if (questions) {\r\n for (const question of questions) {\r\n\r\n if (!question.currentResponse.responseTypeId) {\r\n question.currentResponse.responseTypeId = -1;\r\n }\r\n\r\n if (question.disabledByQuestionFlowFlag) {\r\n continue;\r\n }\r\n\r\n let currentWorkflowItem;\r\n\r\n if (question.currentResponse.responseTypeId === 600000000) {\r\n currentWorkflowItem = question.questionFlow.find(q => q.answerId === question.currentResponse.answerId);\r\n } else {\r\n currentWorkflowItem = question.questionFlow.find(q => q.responseTypeId === question.currentResponse.responseTypeId);\r\n }\r\n\r\n if (currentWorkflowItem) {\r\n for (const disabledQuestion of currentWorkflowItem.disabledQuestions) {\r\n const questionToDisable = this.findQuestionByIdInModel(disabledQuestion.disabledQuestionId);\r\n\r\n if (questionToDisable) {\r\n questionToDisable.disabledByQuestionFlowFlag = true;\r\n }\r\n }\r\n\r\n if (currentWorkflowItem.nextQuestionId !== null) {\r\n const nextQuestion = this.findQuestionByIdInModel(currentWorkflowItem.nextQuestionId);\r\n\r\n if (nextQuestion) {\r\n nextQuestion.disabledByQuestionFlowFlag = false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (this.autofocus) {\r\n this.focusFirstEditableInput();\r\n }\r\n }\r\n\r\n /**\r\n * Traverses all groups and questions looking for that magic ID\r\n * is it out there? Let's find it together. You and I, on a journey\r\n * to the center of the collection model.\r\n *\r\n * @param questionId\r\n */\r\n findQuestionByIdInModel(questionId: number): IQceQuestion | null {\r\n let finalQuestion: IQceQuestion = null;\r\n\r\n this.model.groups.forEach((group) => {\r\n if (group && group.questions) {\r\n group.questions.forEach((question) => {\r\n if (question.questionId === questionId) {\r\n finalQuestion = question;\r\n }\r\n });\r\n }\r\n });\r\n\r\n return finalQuestion;\r\n }\r\n\r\n recalculateWorkflowsOnChange(changedQuestion: IQceQuestion) {\r\n if (this.model) {\r\n for (const group of this.model.groups) {\r\n const questions = group.questions.slice(group.questions.findIndex(q => q.questionId === changedQuestion.questionId));\r\n\r\n for (const question of questions) {\r\n if (question.disabledByQuestionFlowFlag) {\r\n continue;\r\n }\r\n\r\n if (!question.currentResponse.responseTypeId) {\r\n question.currentResponse.responseTypeId = -1;\r\n }\r\n\r\n let currentWorkflowItem;\r\n\r\n if (question.currentResponse.responseTypeId === 600000000) {\r\n currentWorkflowItem = question.questionFlow.find(q => q.answerId === question.currentResponse.answerId);\r\n } else {\r\n currentWorkflowItem = question.questionFlow.find(q => q.responseTypeId === question.currentResponse.responseTypeId);\r\n }\r\n\r\n if (currentWorkflowItem) {\r\n for (const disabledQuestion of currentWorkflowItem.disabledQuestions) {\r\n const questionToDisable = this.findQuestionByIdInModel(disabledQuestion.disabledQuestionId);\r\n\r\n if (questionToDisable) {\r\n questionToDisable.disabledByQuestionFlowFlag = true;\r\n }\r\n }\r\n\r\n if (currentWorkflowItem.nextQuestionId !== null) {\r\n const nextQuestion = this.findQuestionByIdInModel(currentWorkflowItem.nextQuestionId);\r\n\r\n if (nextQuestion) {\r\n nextQuestion.disabledByQuestionFlowFlag = false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (this.autofocus) {\r\n this.focusFirstEditableInput();\r\n }\r\n }\r\n\r\n focusFirstEditableInput() {\r\n for (const group of this.model.groups) {\r\n let breakGroupLoop = false;\r\n\r\n if (group) {\r\n for (const question of group.questions) {\r\n // Question is editable\r\n if (!question.readOnlyFlag && !question.disabledByQuestionFlowFlag) {\r\n question.$focused = true;\r\n breakGroupLoop = true;\r\n break;\r\n }\r\n }\r\n\r\n if (breakGroupLoop) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n showAlertText(question) {\r\n this.selectedQuestion = question;\r\n this.showAlertTextModal = true;\r\n }\r\n}\r\n"],"names":["__webpack_exports__","Qce","taskQueue","element","ff","this","styles","_styles_qce_css__WEBPACK_IMPORTED_MODULE_0__","A","model","groups","guid","validationErrors","additional","viewMode","autofocus","debug","context","prototype","attached","classList","add","bind","bindingContext","overrideContext","step","aurelia_framework__WEBPACK_IMPORTED_MODULE_2__","getContextFor","isDirty","generateGuids","focusFirstEditableInput","enabled","feature_flags__WEBPACK_IMPORTED_MODULE_5__","T","qceDebug","modelChanged","resources_services_log_service__WEBPACK_IMPORTED_MODULE_1__","R","info","length","map","group","resources_utilities_insecure_guid__WEBPACK_IMPORTED_MODULE_3__","cy","questions","question","currentResponse","gridResponses","response","Guid","_b","__values","_c","next","done","value","recalculateWorkflows","sequenceNo","fieldChanged","_this","queueTask","selectedValue","_selectedValue","answerId","hasError","recalculateWorkflowsOnChange","responseTypeId","responseValue","responsePresent","changeEvent","DOM","createCustomEvent","bubbles","cancelable","detail","dispatchEvent","groupSequenceNo","find","g","disabledByQuestionFlowFlag","currentWorkflowItem","questionFlow","q","e_3","disabledQuestions","_d","disabledQuestion","questionToDisable","this_1","findQuestionByIdInModel","disabledQuestionId","nextQuestionId","nextQuestion","questions_1","questions_1_1","questionId","finalQuestion","forEach","changedQuestion","slice","findIndex","_f","e_6","_g","this_2","questions_2","e_5","questions_2_1","breakGroupLoop","_e","e_8","readOnlyFlag","$focused","showAlertText","selectedQuestion","showAlertTextModal","__decorate","bindable","customElement","autoinject","TaskQueue","_a","Object","Element","resources_plugins_feature_flags_feature_flags_service__WEBPACK_IMPORTED_MODULE_4__","y"],"sourceRoot":""}