commons-assessment 12.0.0
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/README.md +191 -0
- package/bundles/commons-assessment.umd.js +3968 -0
- package/bundles/commons-assessment.umd.js.map +1 -0
- package/commons-assessment.d.ts +5 -0
- package/esm2015/commons-assessment.js +5 -0
- package/esm2015/lib/commons-assessment.module.js +28 -0
- package/esm2015/lib/configuration.js +4 -0
- package/esm2015/lib/modules/assessment-maker/assessment-maker.component.js +409 -0
- package/esm2015/lib/modules/assessment-maker/assessment-maker.module.js +52 -0
- package/esm2015/lib/modules/assessment-maker/components/add-edit-section-introduction/add-edit-section-introduction.component.js +55 -0
- package/esm2015/lib/modules/assessment-maker/components/assessment-builder/assessment-builder.component.js +551 -0
- package/esm2015/lib/modules/assessment-maker/components/question-details/question-details.component.js +75 -0
- package/esm2015/lib/modules/assessment-maker/services/assessment-builder.service.js +150 -0
- package/esm2015/lib/modules/assessment-maker/services/assessment-maker.service.js +55 -0
- package/esm2015/lib/modules/assessment-taker/assessment-taker.component.js +618 -0
- package/esm2015/lib/modules/assessment-taker/assessment-taker.module.js +70 -0
- package/esm2015/lib/modules/assessment-taker/components/question-type-editor/question-type-editor.component.js +70 -0
- package/esm2015/lib/modules/assessment-taker/components/question-type-file-upload/question-type-file-upload.component.js +153 -0
- package/esm2015/lib/modules/assessment-taker/components/question-type-long/question-type-long.component.js +74 -0
- package/esm2015/lib/modules/assessment-taker/components/question-type-multiselect/question-type-multiselect.component.js +105 -0
- package/esm2015/lib/modules/assessment-taker/components/question-type-number/question-type-number.component.js +47 -0
- package/esm2015/lib/modules/assessment-taker/components/question-type-objective/question-type-objective.component.js +91 -0
- package/esm2015/lib/modules/assessment-taker/components/question-type-preference/question-type-preference.component.js +105 -0
- package/esm2015/lib/modules/assessment-taker/components/question-type-short/question-type-short.component.js +98 -0
- package/esm2015/lib/modules/assessment-taker/components/section-instructions/section-instructions.component.js +61 -0
- package/esm2015/lib/modules/assessment-taker/services/assessment-taker.service.js +58 -0
- package/esm2015/lib/modules/assessment-taker/services/response-builder.service.js +202 -0
- package/esm2015/lib/shared/components/text-editor/text-editor.component.js +119 -0
- package/esm2015/lib/shared/controllers.js +21 -0
- package/esm2015/lib/shared/interfaces/assessment.interface.js +2 -0
- package/esm2015/lib/shared/interfaces/question-paper.interface.js +2 -0
- package/esm2015/lib/shared/interfaces/question.interface.js +2 -0
- package/esm2015/lib/shared/material-modules.js +74 -0
- package/esm2015/lib/shared/pipes/order-by.pipe.js +25 -0
- package/esm2015/lib/shared/shared.module.js +48 -0
- package/esm2015/lib/shared/utils.js +16 -0
- package/esm2015/public-api.js +13 -0
- package/fesm2015/commons-assessment.js +3278 -0
- package/fesm2015/commons-assessment.js.map +1 -0
- package/lib/commons-assessment.module.d.ts +10 -0
- package/lib/configuration.d.ts +5 -0
- package/lib/modules/assessment-maker/assessment-maker.component.d.ts +64 -0
- package/lib/modules/assessment-maker/assessment-maker.module.d.ts +14 -0
- package/lib/modules/assessment-maker/components/add-edit-section-introduction/add-edit-section-introduction.component.d.ts +24 -0
- package/lib/modules/assessment-maker/components/assessment-builder/assessment-builder.component.d.ts +70 -0
- package/lib/modules/assessment-maker/components/question-details/question-details.component.d.ts +36 -0
- package/lib/modules/assessment-maker/services/assessment-builder.service.d.ts +43 -0
- package/lib/modules/assessment-maker/services/assessment-maker.service.d.ts +22 -0
- package/lib/modules/assessment-taker/assessment-taker.component.d.ts +81 -0
- package/lib/modules/assessment-taker/assessment-taker.module.d.ts +20 -0
- package/lib/modules/assessment-taker/components/question-type-editor/question-type-editor.component.d.ts +22 -0
- package/lib/modules/assessment-taker/components/question-type-file-upload/question-type-file-upload.component.d.ts +38 -0
- package/lib/modules/assessment-taker/components/question-type-long/question-type-long.component.d.ts +23 -0
- package/lib/modules/assessment-taker/components/question-type-multiselect/question-type-multiselect.component.d.ts +25 -0
- package/lib/modules/assessment-taker/components/question-type-number/question-type-number.component.d.ts +13 -0
- package/lib/modules/assessment-taker/components/question-type-objective/question-type-objective.component.d.ts +23 -0
- package/lib/modules/assessment-taker/components/question-type-preference/question-type-preference.component.d.ts +25 -0
- package/lib/modules/assessment-taker/components/question-type-short/question-type-short.component.d.ts +25 -0
- package/lib/modules/assessment-taker/components/section-instructions/section-instructions.component.d.ts +24 -0
- package/lib/modules/assessment-taker/services/assessment-taker.service.d.ts +20 -0
- package/lib/modules/assessment-taker/services/response-builder.service.d.ts +16 -0
- package/lib/shared/components/text-editor/text-editor.component.d.ts +24 -0
- package/lib/shared/controllers.d.ts +19 -0
- package/lib/shared/interfaces/assessment.interface.d.ts +133 -0
- package/lib/shared/interfaces/question-paper.interface.d.ts +73 -0
- package/lib/shared/interfaces/question.interface.d.ts +82 -0
- package/lib/shared/material-modules.d.ts +18 -0
- package/lib/shared/pipes/order-by.pipe.d.ts +7 -0
- package/lib/shared/shared.module.d.ts +12 -0
- package/lib/shared/utils.d.ts +2 -0
- package/package.json +22 -0
- package/public-api.d.ts +9 -0
- package/src/lib/assets/images/action-dots.svg +5 -0
- package/src/lib/assets/images/add-section.svg +4 -0
- package/src/lib/assets/images/arrow-down-black.svg +3 -0
- package/src/lib/assets/images/arrow-ramp-left.svg +3 -0
- package/src/lib/assets/images/close.svg +3 -0
- package/src/lib/assets/images/copy.svg +3 -0
- package/src/lib/assets/images/delete.svg +1 -0
- package/src/lib/assets/images/drag-drop.svg +8 -0
- package/src/lib/assets/images/file.svg +5 -0
- package/src/lib/assets/images/go-back.svg +3 -0
- package/src/lib/assets/images/info.svg +3 -0
- package/src/lib/assets/images/jpeg.svg +5 -0
- package/src/lib/assets/images/jpg.svg +5 -0
- package/src/lib/assets/images/keyboard.svg +3 -0
- package/src/lib/assets/images/no-questions.svg +14 -0
- package/src/lib/assets/images/pdf.svg +5 -0
- package/src/lib/assets/images/pencil.svg +3 -0
- package/src/lib/assets/images/plus-primary.svg +3 -0
- package/src/lib/assets/images/png.svg +5 -0
- package/src/lib/assets/images/svg.svg +5 -0
- package/src/lib/assets/json/imageConfig.json +22 -0
- package/src/lib/assets/json/labelConfig.json +96 -0
- package/src/lib/assets/json/question-builder-rules.json +97 -0
- package/src/lib/assets/json/questionTypes.json +50 -0
- package/src/lib/assets/theme/_theme.global.scss +63 -0
- package/src/lib/assets/theme/_theme.scss +568 -0
- package/src/lib/assets/theme/styles.global.scss +191 -0
- package/src/lib/assets/theme/styles.scss +63 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commons-assessment.js","sources":["../../../projects/commons-assessment/src/lib/shared/utils.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/section-instructions/section-instructions.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/section-instructions/section-instructions.component.html","../../../projects/commons-assessment/src/lib/configuration.ts","../../../projects/commons-assessment/src/lib/shared/controllers.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/services/assessment-taker.service.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/services/response-builder.service.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-short/question-type-short.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-short/question-type-short.component.html","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-long/question-type-long.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-long/question-type-long.component.html","../../../projects/commons-assessment/src/lib/shared/components/text-editor/text-editor.component.ts","../../../projects/commons-assessment/src/lib/shared/components/text-editor/text-editor.component.html","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-editor/question-type-editor.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-editor/question-type-editor.component.html","../../../projects/commons-assessment/src/lib/shared/pipes/order-by.pipe.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-objective/question-type-objective.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-objective/question-type-objective.component.html","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-multiselect/question-type-multiselect.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-multiselect/question-type-multiselect.component.html","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-preference/question-type-preference.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-preference/question-type-preference.component.html","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-file-upload/question-type-file-upload.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-file-upload/question-type-file-upload.component.html","../../../projects/commons-assessment/src/lib/modules/assessment-taker/assessment-taker.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/assessment-taker.component.html","../../../projects/commons-assessment/src/lib/shared/material-modules.ts","../../../projects/commons-assessment/src/lib/shared/shared.module.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-number/question-type-number.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-taker/components/question-type-number/question-type-number.component.html","../../../projects/commons-assessment/src/lib/modules/assessment-taker/assessment-taker.module.ts","../../../projects/commons-assessment/src/lib/modules/assessment-maker/components/add-edit-section-introduction/add-edit-section-introduction.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-maker/components/add-edit-section-introduction/add-edit-section-introduction.component.html","../../../projects/commons-assessment/src/lib/modules/assessment-maker/services/assessment-builder.service.ts","../../../projects/commons-assessment/src/lib/modules/assessment-maker/services/assessment-maker.service.ts","../../../projects/commons-assessment/src/lib/modules/assessment-maker/components/assessment-builder/assessment-builder.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-maker/components/assessment-builder/assessment-builder.component.html","../../../projects/commons-assessment/src/lib/modules/assessment-maker/components/question-details/question-details.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-maker/components/question-details/question-details.component.html","../../../projects/commons-assessment/src/lib/modules/assessment-maker/assessment-maker.component.ts","../../../projects/commons-assessment/src/lib/modules/assessment-maker/assessment-maker.component.html","../../../projects/commons-assessment/src/lib/modules/assessment-maker/assessment-maker.module.ts","../../../projects/commons-assessment/src/lib/commons-assessment.module.ts","../../../projects/commons-assessment/src/public-api.ts","../../../projects/commons-assessment/src/commons-assessment.ts"],"sourcesContent":["export function deepClone<T>(data: T): T {\r\n return JSON.parse(JSON.stringify(data));\r\n}\r\n\r\nexport function generateUuid(): string {\r\n const cryptoObj = window.crypto as any;\r\n\r\n if (cryptoObj?.randomUUID) {\r\n return cryptoObj.randomUUID();\r\n }\r\n\r\n // fallback\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\r\n const r = Math.random() * 16 | 0;\r\n const v = c === 'x' ? r : (r & 0x3 | 0x8);\r\n return v.toString(16);\r\n });\r\n}","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { deepClone } from '../../../../shared/utils';\r\nimport { QuestionPaperSection } from '../../../../shared/interfaces/question-paper.interface';\r\n\r\n@Component({\r\n selector: 'lib-section-instructions',\r\n templateUrl: './section-instructions.component.html',\r\n styleUrls: ['./section-instructions.component.scss']\r\n})\r\nexport class SectionInstructionsComponent implements OnInit {\r\n imageConfig: { [key: string]: string } = {};\r\n labelConfig: { [key: string]: string } = {};\r\n sectionDetails: QuestionPaperSection | null = null;\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<SectionInstructionsComponent>,\r\n @Inject(MAT_DIALOG_DATA) public dialogData: any,\r\n private sanitizer: DomSanitizer\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.imageConfig = this.dialogData?.imageConfig || {};\r\n this.labelConfig = this.dialogData?.labelConfig || {};\r\n this.sectionDetails = deepClone(this.dialogData?.sectionDetails);\r\n }\r\n\r\n addYoutubeIframeSrc(videoUrl: string) {\r\n const videoId = this.getVideoId(videoUrl);\r\n const youtubeUrl = `https://www.youtube.com/embed/${videoId}`;\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(youtubeUrl);\r\n }\r\n\r\n getVideoId(videoUrl: string) {\r\n let pattern = null;\r\n if (videoUrl.includes('youtube.com')) {\r\n pattern = /(?:\\?v=|&v=|youtu\\.be\\/|\\/embed\\/|\\/\\d\\/|\\/vi\\/|\\/v\\/|https?:\\/\\/(?:www\\.)?youtube\\.com\\/(?:v\\/|embed\\/|watch\\?(?:\\S+&)?v=|watch\\?(?:\\S+&)?vi=|\\S+\\/))([a-zA-Z0-9_-]{11})/;\r\n } else if (videoUrl.includes('youtu.be')) {\r\n pattern = /youtu\\.be\\/([a-zA-Z0-9_-]{11})/;\r\n }\r\n if (pattern) {\r\n const match = videoUrl.match(pattern);\r\n if (match && match[1]) {\r\n return match[1];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n imageErrorHandler(event: any, filePath: string) {\r\n event.target.src = filePath;\r\n }\r\n}\r\n","<div class=\"col-12\">\r\n <header class=\"p-3 d-flex align-items-center justify-content-between col-12 assessment-bg-grey-one\">\r\n <p class=\"mb-0 assessment-text-semibold-18\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.INSTRUCTIONS']}}\r\n </p>\r\n <img mat-dialog-close [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.CLOSE']\" class=\"cursor-pointer\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/close.svg')\" />\r\n </header>\r\n\r\n <div class=\"col-12 px-md-4 px-3 my-4\">\r\n <p *ngIf=\"sectionDetails?.qpsDesc?.[0]?.text\" class=\"assessment-text-medium-14 assessment-grey-ten mb-0\"\r\n [innerHtml]=\"sectionDetails?.qpsDesc?.[0]?.text\"></p>\r\n <div class=\"mt-3 col-12\" *ngIf=\"sectionDetails?.mediaUrl\">\r\n <ng-container *ngTemplateOutlet=\"VideoTemplate; context:{videoUrl:sectionDetails?.mediaUrl}\"></ng-container>\r\n </div>\r\n </div>\r\n\r\n <footer class=\"mt-auto p-3 d-flex align-items-center justify-content-end gap-3 col-12 border-top\">\r\n <button mat-dialog-close\r\n class=\"assessment-text-white assessment-bg-grey-ten assessment-border-radius-two border-0 assessment-zoom-animation assessment-button-padding-large assessment-text-medium-13\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.GOT_IT']}}\r\n </button>\r\n </footer>\r\n</div>\r\n\r\n<!-- video preview -->\r\n<ng-template let-videoUrl=\"videoUrl\" #VideoTemplate>\r\n <div class=\"assessment-border-radius-two overflow-hidden col-md-10 col-12 mx-auto\">\r\n <video *ngIf=\"videoUrl?.includes('.mp4') else youtubeVideo\" width=\"400\" controls class=\"mw-100 d-block mx-auto\">\r\n <source [src]=\"videoUrl\" type=\"video/mp4\">\r\n </video>\r\n <ng-template #youtubeVideo>\r\n <div class=\"youtube-video position-relative h-100\">\r\n <iframe [src]=\"addYoutubeIframeSrc(videoUrl)\" title=\"YouTube video player\" frameborder=\"0\"\r\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\r\n allowfullscreen class=\"position-absolute top-0 start-0 w-100 h-100 d-block\">\r\n </iframe>\r\n </div>\r\n </ng-template>\r\n </div>\r\n</ng-template>","// configuration.ts\r\nimport { InjectionToken } from '@angular/core';\r\n\r\nexport interface LibraryConfig {\r\n baseURL: string;\r\n}\r\n\r\nexport const LIBRARY_CONFIG = new InjectionToken<LibraryConfig>('LIBRARY_CONFIG');\r\n","const COMMONS_ASSESSMENT_SERVICE = '/gateway/commons-assessment-service';\r\n\r\n\r\nexport const assessmentMakerController = {\r\n assessmentAndQuestionPaper: COMMONS_ASSESSMENT_SERVICE + '/api/v1/assessments/bundled',\r\n createQuestion: COMMONS_ASSESSMENT_SERVICE + '/api/v2/questions',\r\n patchQuestion: COMMONS_ASSESSMENT_SERVICE + '/api/v2/questions',\r\n getAssessmentContext: COMMONS_ASSESSMENT_SERVICE + '/api/v2/assessments/context/$AssessmentId',\r\n getQuestionsByIds: COMMONS_ASSESSMENT_SERVICE + '/api/v2/questions/questionids',\r\n duplicateQuestion: COMMONS_ASSESSMENT_SERVICE + '/api/v1/assessmentQuestionPapers/questionPaperSection/$SectionId/sectionQuestions/$SectionQuestionId/duplicate',\r\n duplicateSection: COMMONS_ASSESSMENT_SERVICE + '/api/v1/assessmentQuestionPapers/$AssessmentQuestionPaperId/questionPaperSection/$SectionId/duplicate',\r\n createAssessmentInstance: COMMONS_ASSESSMENT_SERVICE + '/api/v1/assessmentinstances'\r\n}\r\n\r\nexport const assessmentTakerController = {\r\n getAssessmentContextById: COMMONS_ASSESSMENT_SERVICE + '/api/v1/assessments/context/$AssessmentId',\r\n getAssessmentQuestionPaper: COMMONS_ASSESSMENT_SERVICE + '/api/v2/assessmentQuestionPapers?',\r\n getAssessmentQuestions: COMMONS_ASSESSMENT_SERVICE + '/api/v3/questions/questions/instance?',\r\n getChildQuestionsWithIdList: COMMONS_ASSESSMENT_SERVICE + '/api/v3/questions/childquestion/instance?',\r\n uploadAttachment: COMMONS_ASSESSMENT_SERVICE + '/api/v1/attachments?',\r\n submitAssessment: COMMONS_ASSESSMENT_SERVICE + '/api/v2/assessmentInstanceAssesses',\r\n getAnswersByAiaId: COMMONS_ASSESSMENT_SERVICE + '/api/v2/assessmentInstanceAssesses/',\r\n}","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { LIBRARY_CONFIG, LibraryConfig } from '../../../configuration';\r\nimport * as controllers from '../../../shared/controllers';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AssessmentTakerService {\r\n\r\n constructor(\r\n @Inject(LIBRARY_CONFIG) private config: LibraryConfig,\r\n private http: HttpClient\r\n ) { }\r\n\r\n createParams(params: any): HttpParams {\r\n let param = new HttpParams();\r\n for (const key of Object.keys(params)) {\r\n param = param.set(key, params[key]);\r\n }\r\n return param;\r\n }\r\n\r\n getConfigJSON(fileName: string) {\r\n return this.http.get(`/assets/commons-assessment/${fileName}.json`);\r\n }\r\n\r\n getAssessmentContextById(assessmentId: number) {\r\n return this.http.get(this.config.baseURL + controllers.assessmentTakerController.getAssessmentContextById.replace('$AssessmentId', assessmentId.toString()));\r\n }\r\n\r\n getAssessmentQuestionPaper(instanceId: number) {\r\n return this.http.get(this.config.baseURL + controllers.assessmentTakerController.getAssessmentQuestionPaper + this.createParams({ instanceId }));\r\n }\r\n\r\n getAssessmentQuestions(instanceId: any, questionIds: any) {\r\n return this.http.get(this.config.baseURL + controllers.assessmentTakerController.getAssessmentQuestions + this.createParams({ instanceId, questionIds }));\r\n }\r\n\r\n getChildQuestionsWithIdList(instanceId: any, questionIds: any) {\r\n return this.http.get(this.config.baseURL + controllers.assessmentTakerController.getChildQuestionsWithIdList + this.createParams({ instanceId, questionIds }));\r\n }\r\n\r\n uploadAttachment(fileUploadPayload: FormData, params: any) {\r\n return this.http.post(this.config.baseURL + controllers.assessmentTakerController.uploadAttachment + this.createParams(params), fileUploadPayload);\r\n }\r\n\r\n submitAssessment(payload: any) {\r\n return this.http.post(this.config.baseURL + controllers.assessmentTakerController.submitAssessment, payload);\r\n }\r\n\r\n patchAssessment(payload: any) {\r\n return this.http.patch(this.config.baseURL + controllers.assessmentTakerController.submitAssessment, payload);\r\n }\r\n\r\n getAnswersByAiaId(aiaId: any) {\r\n return this.http.get(this.config.baseURL + controllers.assessmentTakerController.getAnswersByAiaId + aiaId)\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { deepClone } from '../../../shared/utils';\r\nimport { AssessmentQuestionPaper, SectionQuestion } from '../../../shared/interfaces/question-paper.interface';\r\nimport { AssessmentInstanceAssesseDTO } from '../../../shared/interfaces/assessment.interface';\r\nimport { AssessmentQuestion } from '../../../shared/interfaces/question.interface';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ResponseBuilderService {\r\n\r\n constructor() { }\r\n\r\n buildResponsePayload(\r\n assesseeResponse: AssessmentInstanceAssesseDTO,\r\n assessmentData: AssessmentQuestionPaper,\r\n sectionFormGroups: { sectionId: number; formGroup: FormGroup }[],\r\n questionBank: Record<number, AssessmentQuestion>,\r\n tenant: number\r\n ) {\r\n const requestPayload = deepClone(assesseeResponse);\r\n requestPayload.aiadefaultResponseList = [];\r\n\r\n assessmentData?.questionPaperSectionList?.forEach((section: any) => {\r\n const sectionFormGroupWrapper = sectionFormGroups.find((s: any) => s.sectionId === section.id);\r\n if (sectionFormGroupWrapper) {\r\n const formGroup = sectionFormGroupWrapper.formGroup;\r\n\r\n section.sectionQuestionsList?.forEach((sectionQuestion: SectionQuestion) => {\r\n const ques = questionBank[sectionQuestion?.questionId || -1];\r\n if (!ques) return;\r\n\r\n const quesResObj = this.getQuestionResponseObj(formGroup, ques?.id, questionBank);\r\n const questionResponseObj = quesResObj.questionResponseObj;\r\n\r\n if (questionResponseObj) {\r\n let reqObj = Object.assign({}, questionResponseObj);\r\n delete reqObj.defaultOption;\r\n\r\n const existingAns = assesseeResponse.aiadefaultResponseList?.find((a: any) =>\r\n a.sectionQuestion?.questionId === sectionQuestion.questionId && !a.childQuestionId\r\n );\r\n\r\n this.mergeExistingIds(reqObj, existingAns);\r\n\r\n requestPayload.aiadefaultResponseList?.push({\r\n ...reqObj,\r\n id: existingAns?.id || 0,\r\n isActive: true,\r\n sectionQuestion,\r\n tenant,\r\n marks: formGroup.get(`${ques.id}_marks`)?.value != null ? Number(formGroup.get(`${ques.id}_marks`)?.value) : null\r\n });\r\n\r\n if (quesResObj.childQuesResObj?.length) {\r\n quesResObj.childQuesResObj.forEach((childData: any) => {\r\n const childObj = childData?.questionResponseObj;\r\n const childDetails = childData?.childQuestionDetails;\r\n if (!childObj || !childDetails) return;\r\n\r\n let specificChildReqObj = Object.assign({}, childObj);\r\n delete specificChildReqObj.defaultOption;\r\n\r\n const existingChildAns = assesseeResponse.aiadefaultResponseList?.find((a: any) =>\r\n a.childQuestionId === childDetails.id &&\r\n a.childQuestionParentQuestionId === sectionQuestion.questionId\r\n );\r\n\r\n this.mergeExistingIds(specificChildReqObj, existingChildAns);\r\n\r\n requestPayload.aiadefaultResponseList?.push({\r\n childQuestionId: childDetails.id,\r\n childQuestionParentQuestionId: sectionQuestion.questionId,\r\n childDefaultOptionId: childData.parentOptionId,\r\n ...specificChildReqObj,\r\n id: existingChildAns?.id || 0,\r\n isActive: true,\r\n sectionQuestion,\r\n tenant,\r\n marks: formGroup.get(`${childDetails.id}_marks`)?.value != null ? Number(formGroup.get(`${childDetails.id}_marks`)?.value) : null\r\n });\r\n });\r\n }\r\n }\r\n });\r\n }\r\n });\r\n\r\n return requestPayload;\r\n }\r\n\r\n private mergeExistingIds(newAns: any, existingAns: any) {\r\n if (!existingAns) return;\r\n\r\n if (newAns.drsubjectiveresponseList && existingAns.drsubjectiveresponseList) {\r\n newAns.drsubjectiveresponseList.forEach((nItem: any, idx: number) => {\r\n if (existingAns.drsubjectiveresponseList[idx]) {\r\n nItem.id = existingAns.drsubjectiveresponseList[idx].id;\r\n }\r\n });\r\n }\r\n if (newAns.drobjectiveresponseList && existingAns.drobjectiveresponseList) {\r\n newAns.drobjectiveresponseList.forEach((nItem: any, idx: number) => {\r\n const existingItem = existingAns.drobjectiveresponseList.find((eItem: any) =>\r\n eItem.defaultOption?.options?.id === nItem.defaultOption?.options?.id\r\n );\r\n if (existingItem) {\r\n nItem.id = existingItem.id;\r\n } else if (existingAns.drobjectiveresponseList[idx]) {\r\n nItem.id = existingAns.drobjectiveresponseList[idx].id;\r\n }\r\n });\r\n }\r\n }\r\n\r\n private getQuestionResponseObj(formGroup: any, quesId: number = -1, questionBank: any): any {\r\n const questionDetails = questionBank[quesId];\r\n if (!questionDetails) return { questionResponseObj: null, childQuesResObj: [] };\r\n\r\n let questionResponseObj: any = {};\r\n let childQuesResObj: any = [];\r\n const rawValues = formGroup?.getRawValue ? formGroup.getRawValue() : (formGroup?.value || {});\r\n const val = rawValues[quesId];\r\n\r\n if (!val) {\r\n return { questionResponseObj: null, childQuesResObj: [] };\r\n }\r\n\r\n const qType = questionDetails.questionType?.code;\r\n\r\n if (qType === 'QUESTION_TYPE.OBJECTIVE') {\r\n const defaultOptions = questionDetails.defaultOptionsList || [];\r\n const selectedOption = defaultOptions.find((i: any) => i.options.id === val.id);\r\n\r\n if (selectedOption) {\r\n questionResponseObj = {\r\n optionId: selectedOption.options,\r\n defaultOption: selectedOption\r\n };\r\n\r\n if (selectedOption.remarksRequired) {\r\n const remarksVal = rawValues[`${quesId}_remarks_${selectedOption.id}`];\r\n if (remarksVal) {\r\n questionResponseObj.remarks = remarksVal;\r\n }\r\n }\r\n\r\n const childQuesIds = selectedOption.childQuestionList || [];\r\n childQuesIds.forEach((childId: number) => {\r\n const childResponse = this.getQuestionResponseObj(formGroup, childId, questionBank);\r\n if (childResponse?.questionResponseObj) {\r\n childQuesResObj.push({\r\n questionResponseObj: childResponse.questionResponseObj,\r\n childQuestionDetails: questionBank[childId],\r\n parentOptionId: selectedOption.options.id\r\n });\r\n if (childResponse.childQuesResObj?.length) {\r\n childQuesResObj = childQuesResObj.concat(childResponse.childQuesResObj);\r\n }\r\n }\r\n });\r\n } else {\r\n questionResponseObj = null;\r\n }\r\n } else if (qType === 'QUESTION_TYPE.MULTI_SELECT' || qType === 'QUESTION_TYPE.PREFERENCE') {\r\n const defaultOptions = questionDetails.defaultOptionsList || [];\r\n const drobjectiveresponseList: any[] = [];\r\n\r\n let valArray = Array.isArray(val) ? val : [val];\r\n\r\n valArray.forEach((opt: any, index: number) => {\r\n const selectedOption = defaultOptions.find((i: any) => i.options?.id === opt.id);\r\n if (selectedOption) {\r\n const obj: any = {\r\n id: 0,\r\n defaultOption: selectedOption\r\n };\r\n\r\n if (qType === 'QUESTION_TYPE.PREFERENCE') {\r\n obj.orderNo = index + 1;\r\n }\r\n\r\n if (selectedOption.remarksRequired) {\r\n const remarksVal = rawValues[`${quesId}_remarks_${selectedOption.id}`];\r\n if (remarksVal) {\r\n obj.remarks = remarksVal;\r\n }\r\n }\r\n\r\n drobjectiveresponseList.push(obj);\r\n\r\n const childQuesIds = selectedOption.childQuestionList || [];\r\n childQuesIds.forEach((childId: number) => {\r\n const childResponse = this.getQuestionResponseObj(formGroup, childId, questionBank);\r\n if (childResponse?.questionResponseObj) {\r\n childQuesResObj.push({\r\n questionResponseObj: childResponse.questionResponseObj,\r\n childQuestionDetails: questionBank[childId],\r\n parentOptionId: selectedOption.options.id\r\n });\r\n if (childResponse.childQuesResObj?.length) {\r\n childQuesResObj = childQuesResObj.concat(childResponse.childQuesResObj);\r\n }\r\n }\r\n });\r\n }\r\n });\r\n\r\n if (drobjectiveresponseList.length > 0) {\r\n questionResponseObj = { drobjectiveresponseList };\r\n } else {\r\n questionResponseObj = null;\r\n }\r\n } else if (qType === 'QUESTION_TYPE.FILE_UPLOAD') {\r\n const drsubjectiveresponseList: any[] = [];\r\n\r\n let valArray = Array.isArray(val) ? val : [val];\r\n valArray.forEach((opt: any) => {\r\n drsubjectiveresponseList.push({\r\n id: 0,\r\n responseText: opt?.id\r\n });\r\n });\r\n\r\n if (drsubjectiveresponseList.length > 0) {\r\n questionResponseObj = { drsubjectiveresponseList };\r\n } else {\r\n questionResponseObj = null;\r\n }\r\n } else {\r\n questionResponseObj = {\r\n drsubjectiveresponseList: [\r\n {\r\n id: 0,\r\n responseText: val\r\n }\r\n ]\r\n };\r\n }\r\n\r\n return { questionResponseObj, childQuesResObj };\r\n }\r\n}\r\n","import { Component, Optional, Self, Input } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\r\nimport { AssessmentQuestion } from '../../../../shared/interfaces/question.interface';\r\n\r\n@Component({\r\n selector: 'lib-question-type-short',\r\n templateUrl: './question-type-short.component.html',\r\n styleUrls: ['./question-type-short.component.scss']\r\n})\r\nexport class QuestionTypeShortComponent implements ControlValueAccessor {\r\n @Input() required: any;\r\n @Input() question!: AssessmentQuestion;\r\n @Input() previewMode: boolean = false;\r\n @Input() labelConfig: { [key: string]: string } = {};\r\n public formControl: FormControl = new FormControl('');\r\n\r\n onTouched = () => { };\r\n\r\n constructor(@Optional() @Self() public ngControl: NgControl) {\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n checkFormControlValid() {\r\n if (this.ngControl?.control?.touched && this.ngControl?.control?.invalid) {\r\n return 'assessment-input-border-invalid';\r\n }\r\n return '';\r\n }\r\n\r\n writeValue(value: any) {\r\n if (value !== undefined && value !== null) {\r\n this.formControl.setValue(value, { emitEvent: false });\r\n } else {\r\n this.formControl.setValue('', { emitEvent: false });\r\n }\r\n }\r\n\r\n registerOnChange(fn: Function) {\r\n this.formControl.valueChanges.subscribe((val) => fn(val));\r\n }\r\n\r\n registerOnTouched(fn: Function) {\r\n this.onTouched = fn as any;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n if (isDisabled) {\r\n this.formControl.disable({ emitEvent: false });\r\n } else {\r\n this.formControl.enable({ emitEvent: false });\r\n }\r\n }\r\n\r\n get maxCharCount(): number {\r\n const config = this.question?.questionConfigs?.find(c => c.configKey === 'maxCharacterCount');\r\n return config ? Number(config.configValue) : 0;\r\n }\r\n\r\n get inputType(): string {\r\n switch (this.question?.questionType?.code) {\r\n case 'QUESTION_TYPE.NUMBER':\r\n return 'number';\r\n case 'QUESTION_TYPE.EMAIL':\r\n return 'email';\r\n case 'QUESTION_TYPE.CONTACT_NUMBER':\r\n return 'tel';\r\n case 'QUESTION_TYPE.URL':\r\n return 'url';\r\n default:\r\n return 'text';\r\n }\r\n }\r\n\r\n restrictNumberOnly(event: KeyboardEvent) {\r\n if (this.question?.questionType?.code === 'QUESTION_TYPE.NUMBER' || this.question?.questionType?.code === 'QUESTION_TYPE.CONTACT_NUMBER') {\r\n const allowedKeys = ['Backspace', 'ArrowLeft', 'ArrowRight', 'Tab', 'Delete'];\r\n if (!/^[0-9]$/.test(event.key) && !allowedKeys.includes(event.key)) {\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n}\r\n","<input *ngIf=\"!previewMode else previewModeTemplate\" [type]=\"inputType\" [ngClass]=\"checkFormControlValid()\"\r\n [id]=\"question.id\" [formControl]=\"formControl\"\r\n class=\"col-12 assessment-text-regular-13 assessment-input-border-one assessment-border-radius-two assessment-input-padding outline-0 assessment-bg-grey-one\"\r\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.ANSWER']\" [required]=\"required\" (blur)=\"onTouched()\"\r\n [attr.maxlength]=\"maxCharCount || null\" (keydown)=\"restrictNumberOnly($event)\">\r\n\r\n<ng-template #previewModeTemplate>\r\n <span class=\"assessment-text-regular-13 assessment-text-grey-nine\">{{ formControl.value }}</span>\r\n</ng-template>","import { Component, Optional, Self, Input } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\r\nimport { AssessmentQuestion } from '../../../../shared/interfaces/question.interface';\r\n\r\n@Component({\r\n selector: 'lib-question-type-long',\r\n templateUrl: './question-type-long.component.html',\r\n styleUrls: ['./question-type-long.component.scss']\r\n})\r\nexport class QuestionTypeLongComponent implements ControlValueAccessor {\r\n @Input() required: any;\r\n @Input() question!: AssessmentQuestion;\r\n @Input() previewMode: boolean = false;\r\n @Input() labelConfig: { [key: string]: string } = {};\r\n public formControl: FormControl = new FormControl('');\r\n\r\n onTouched = () => { };\r\n\r\n constructor(@Optional() @Self() public ngControl: NgControl) {\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n checkFormControlValid() {\r\n if (this.ngControl?.control?.touched && this.ngControl?.control?.invalid) {\r\n return 'assessment-input-border-invalid';\r\n }\r\n return '';\r\n }\r\n\r\n writeValue(value: any) {\r\n if (value !== undefined && value !== null) {\r\n this.formControl.setValue(value, { emitEvent: false });\r\n } else {\r\n this.formControl.setValue('', { emitEvent: false });\r\n }\r\n }\r\n\r\n registerOnChange(fn: Function) {\r\n this.formControl.valueChanges.subscribe((val) => fn(val));\r\n }\r\n\r\n registerOnTouched(fn: Function) {\r\n this.onTouched = fn as any;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n if (isDisabled) {\r\n this.formControl.disable({ emitEvent: false });\r\n } else {\r\n this.formControl.enable({ emitEvent: false });\r\n }\r\n }\r\n\r\n get maxCharCount(): number {\r\n const config = this.question?.questionConfigs?.find(c => c.configKey === 'maxCharacterCount');\r\n return config ? Number(config.configValue) : 0;\r\n }\r\n}\r\n","<textarea *ngIf=\"!previewMode else previewModeTemplate\" [ngClass]=\"checkFormControlValid()\" [id]=\"question.id\"\r\n [formControl]=\"formControl\"\r\n class=\"col-12 assessment-text-regular-13 assessment-input-border-one assessment-border-radius-two assessment-input-padding outline-0 assessment-bg-grey-one\"\r\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.ANSWER']\" [required]=\"required\" (blur)=\"onTouched()\" rows=\"4\"\r\n [attr.maxlength]=\"maxCharCount || null\"></textarea>\r\n\r\n<ng-template #previewModeTemplate>\r\n <span class=\"assessment-text-regular-13 assessment-text-grey-nine\">{{ formControl.value }}</span>\r\n</ng-template>","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport { AngularEditorConfig } from '@kolkov/angular-editor';\r\n\r\n@Component({\r\n selector: 'app-text-editor',\r\n templateUrl: './text-editor.component.html',\r\n styleUrls: ['./text-editor.component.scss']\r\n})\r\nexport class TextEditorComponent implements OnInit, OnChanges {\r\n @Input() height: string = 'auto';\r\n @Input() placeholder: string = '';\r\n @Input() subject: string = '';\r\n @Input() preText: string = '';\r\n @Input() maxLength: number = 100;\r\n @Input() disabled: boolean = false;\r\n @Input() showToolbar = true;\r\n @Output() inputChange: EventEmitter<any> = new EventEmitter<any>();\r\n @Input() editorConfig: AngularEditorConfig = {\r\n editable: true,\r\n spellcheck: true,\r\n height: 'auto',\r\n translate: 'yes',\r\n enableToolbar: true,\r\n showToolbar: true,\r\n placeholder: this.placeholder,\r\n defaultParagraphSeparator: '',\r\n sanitize: false,\r\n toolbarPosition: 'top',\r\n toolbarHiddenButtons: [\r\n [\r\n 'undo',\r\n 'redo',\r\n 'strikeThrough',\r\n 'subscript',\r\n 'superscript',\r\n 'indent',\r\n 'outdent',\r\n 'insertOrderedList',\r\n 'heading',\r\n 'fontName',\r\n 'textColor',\r\n 'backgroundColor',\r\n ],\r\n [\r\n 'fontSize',\r\n 'insertImage',\r\n 'insertVideo',\r\n 'customClasses',\r\n 'toggleEditorMode',\r\n ],\r\n ],\r\n };\r\n inputLength = 0;\r\n constructor() { }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.disabled && !changes.disabled.firstChange) {\r\n this.updateDisabledState();\r\n }\r\n if (changes?.preText?.currentValue) {\r\n this.onValueChange(changes.preText.currentValue);\r\n }\r\n this.editorConfig.showToolbar = this.showToolbar;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.editorConfig.height = this.height;\r\n this.updateDisabledState();\r\n }\r\n updateDisabledState() {\r\n this.editorConfig.editable = !this.disabled;\r\n }\r\n\r\n onValueChange(event: any) {\r\n if (event) {\r\n let textAfterRemovingTags = event;\r\n textAfterRemovingTags = textAfterRemovingTags.replace(/<\\/?[^>]+(>|$)/g, '');\r\n textAfterRemovingTags = textAfterRemovingTags.replace(/\\ /g, ' ');\r\n this.inputLength = textAfterRemovingTags.length;\r\n }\r\n this.inputChange.emit(event);\r\n }\r\n onPaste(event: ClipboardEvent) {\r\n event.preventDefault();\r\n const clipboardData = event.clipboardData;\r\n if (!clipboardData) return;\r\n let pastedText = clipboardData.getData('text/plain');\r\n pastedText = this.sanitizeText(pastedText);\r\n document.execCommand('insertText', false, pastedText);\r\n }\r\n\r\n sanitizeText(text: string): string {\r\n return text;\r\n }\r\n}\r\n","<div class=\"assessment-custom-scrollbar-thumb\">\r\n <angular-editor [placeholder]=\"placeholder\" [(ngModel)]=\"preText\" [disabled]=\"disabled\"\r\n (ngModelChange)=\"onValueChange($event)\" [config]=\"editorConfig\" (paste)=\"onPaste($event)\">\r\n </angular-editor>\r\n</div>","import { Component, Optional, Self, Input } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\r\nimport { AssessmentQuestion } from '../../../../shared/interfaces/question.interface';\r\n\r\n@Component({\r\n selector: 'lib-question-type-editor',\r\n templateUrl: './question-type-editor.component.html',\r\n styleUrls: ['./question-type-editor.component.scss']\r\n})\r\nexport class QuestionTypeEditorComponent implements ControlValueAccessor {\r\n @Input() required: any;\r\n @Input() question!: AssessmentQuestion;\r\n @Input() previewMode: boolean = false;\r\n @Input() labelConfig: { [key: string]: string } = {};\r\n public formControl: FormControl = new FormControl('');\r\n\r\n onTouched = () => { };\r\n\r\n constructor(@Optional() @Self() public ngControl: NgControl) {\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n checkFormControlValid() {\r\n if (this.ngControl?.control?.touched && this.ngControl?.control?.invalid) {\r\n return 'assessment-input-border-invalid';\r\n }\r\n return '';\r\n }\r\n\r\n writeValue(value: any) {\r\n if (value !== undefined && value !== null) {\r\n this.formControl.setValue(value, { emitEvent: false });\r\n } else {\r\n this.formControl.setValue('', { emitEvent: false });\r\n }\r\n }\r\n\r\n registerOnChange(fn: Function) {\r\n this.formControl.valueChanges.subscribe((val) => fn(val));\r\n }\r\n\r\n registerOnTouched(fn: Function) {\r\n this.onTouched = fn as any;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n if (isDisabled) {\r\n this.formControl.disable({ emitEvent: false });\r\n } else {\r\n this.formControl.enable({ emitEvent: false });\r\n }\r\n }\r\n}\r\n","<div *ngIf=\"!previewMode else previewModeTemplate\" [ngClass]=\"checkFormControlValid() ? checkFormControlValid() : 'assessment-input-border-one'\" class=\"col-12 assessment-border-radius-two overflow-hidden mb-1\" (focusout)=\"onTouched()\">\r\n <app-text-editor [preText]=\"formControl.value\"\r\n (inputChange)=\"formControl.setValue($event); formControl.markAsTouched()\" [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.ANSWER']\"\r\n class=\"assessment-custom-angular-editor-white assessment-text-regular-13 assessment-text-grey-ten\" [height]=\"'10rem'\">\r\n </app-text-editor>\r\n</div>\r\n\r\n<ng-template #previewModeTemplate>\r\n <span class=\"assessment-text-regular-13 assessment-text-grey-nine\" [innerHTML]=\"formControl.value\"></span>\r\n</ng-template>","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'orderBy',\r\n pure: true\r\n})\r\nexport class OrderByPipe implements PipeTransform {\r\n transform(array: any[] | null | undefined, field: string = 'orderNo'): any[] {\r\n if (!Array.isArray(array)) {\r\n return array || [];\r\n }\r\n\r\n return [...array].sort((a: any, b: any) => {\r\n const valA = a?.[field] ?? 0;\r\n const valB = b?.[field] ?? 0;\r\n return valA - valB;\r\n });\r\n }\r\n}\r\n","import { Component, EventEmitter, Optional, Self, Input, Output } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\r\nimport { AssessmentQuestion } from '../../../../shared/interfaces/question.interface';\r\n\r\n@Component({\r\n selector: 'lib-question-type-objective',\r\n templateUrl: './question-type-objective.component.html',\r\n styleUrls: ['./question-type-objective.component.scss']\r\n})\r\nexport class QuestionTypeObjectiveComponent implements ControlValueAccessor {\r\n @Input() required: any;\r\n @Input() question!: AssessmentQuestion;\r\n @Output() viewChild = new EventEmitter();\r\n public formControl: FormControl = new FormControl();\r\n \r\n onTouchedFn = () => {};\r\n\r\n constructor(@Optional() @Self() public ngControl: NgControl) {\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n writeValue(value: any) {\r\n if (value) {\r\n let selectedOption = this.question?.defaultOptionsList?.find((o: any) => o.options.id === value)?.options;\r\n let option = this.question?.defaultOptionsList?.find((o: any) => o.options.id === value);\r\n if (selectedOption) {\r\n setTimeout(() => {\r\n this.formControl.patchValue(selectedOption);\r\n this.optionDetection(option, true);\r\n }, 1000);\r\n }\r\n } else {\r\n this.formControl.setValue(value);\r\n }\r\n }\r\n\r\n registerOnChange(fn: Function) {\r\n this.formControl.valueChanges.subscribe((val) => fn(val));\r\n }\r\n\r\n registerOnTouched(fn: Function) {\r\n this.onTouchedFn = fn as any;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n if (isDisabled) {\r\n this.formControl.disable({ emitEvent: false });\r\n } else {\r\n this.formControl.enable({ emitEvent: false });\r\n }\r\n }\r\n\r\n onChildDataChanged(data: any) {\r\n this.viewChild.emit(data);\r\n }\r\n\r\n optionDetection(obj: any, detectFromEdit: boolean) {\r\n let data = {\r\n question: this.question,\r\n list: obj['childQuestionList'],\r\n detectFrom: detectFromEdit\r\n }\r\n this.viewChild.emit(data);\r\n return;\r\n }\r\n\r\n onTouched() {\r\n this.onTouchedFn();\r\n }\r\n\r\n checkFormControlValid() {\r\n if (this.ngControl?.control?.touched && this.ngControl?.control?.invalid) {\r\n return 'assessment-error-text assessment-text-danger';\r\n }\r\n return '';\r\n }\r\n}\r\n","<mat-radio-group [formControl]=\"formControl\" class=\"d-flex flex-column gap-3 assessment-radio-buttons mt-3\" (blur)=\"onTouched()\">\r\n <ng-container *ngFor=\"let option of question.defaultOptionsList | orderBy\">\r\n <mat-radio-button class=\"assessment-text-medium-13\" (change)=\"optionDetection(option, false)\"\r\n (viewChild)=\"onChildDataChanged($event)\" [value]=\"option.options\" [required]=\"required\">\r\n <span class=\"text-wrap assessment-text-grey-ten\" [innerHtml]=\"option.options.optionName[0]?.text\"></span>\r\n </mat-radio-button>\r\n </ng-container>\r\n</mat-radio-group>","import { Component, EventEmitter, Optional, Self, Input, Output } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\r\nimport { AssessmentQuestion } from '../../../../shared/interfaces/question.interface';\r\n\r\n@Component({\r\n selector: 'lib-question-type-multiselect',\r\n templateUrl: './question-type-multiselect.component.html',\r\n styleUrls: ['./question-type-multiselect.component.scss']\r\n})\r\nexport class QuestionTypeMultiselectComponent implements ControlValueAccessor {\r\n @Input() required: any;\r\n @Input() question!: AssessmentQuestion;\r\n @Output() viewChild = new EventEmitter();\r\n selectData: Array<any> = [];\r\n public formControl: FormControl = new FormControl();\r\n\r\n onTouchedFn = () => {};\r\n\r\n constructor(@Optional() @Self() public ngControl: NgControl) {\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n toggleSelection(event: any, data: any) {\r\n if (event.checked) {\r\n this.selectData.push(data);\r\n } else {\r\n const i = this.selectData.findIndex(value => value.id == data.id);\r\n if (i > -1) {\r\n this.selectData.splice(i, 1);\r\n }\r\n }\r\n this.formControl.patchValue(this.selectData.length ? [...this.selectData] : null);\r\n this.optionDetection(data, false);\r\n }\r\n\r\n writeValue(value: any) {\r\n if(value && Array.isArray(value)) { \r\n this.selectData = [...value]; \r\n this.formControl.setValue(this.selectData, { emitEvent: false });\r\n } else {\r\n this.selectData = [];\r\n this.formControl.setValue(null, { emitEvent: false });\r\n }\r\n }\r\n\r\n getSelection(option:any) {\r\n if(this.selectData){\r\n return this.selectData?.findIndex((s: any) => s.id && s.id === option.id) !== -1;\r\n }else return false\r\n }\r\n\r\n registerOnChange(fn: Function) {\r\n this.formControl.valueChanges.subscribe((val) => fn(val));\r\n }\r\n\r\n registerOnTouched(fn: Function) {\r\n this.onTouchedFn = fn as any;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n if (isDisabled) {\r\n this.formControl.disable({ emitEvent: false });\r\n } else {\r\n this.formControl.enable({ emitEvent: false });\r\n }\r\n }\r\n\r\n onTouched() {\r\n this.onTouchedFn();\r\n }\r\n\r\n checkFormControlValid() {\r\n if (this.ngControl?.control?.touched && this.ngControl?.control?.invalid) {\r\n return 'assessment-error-text assessment-text-danger';\r\n }\r\n return '';\r\n }\r\n\r\n optionDetection(obj: any, detectFromEdit: boolean) {\r\n let option = this.question?.defaultOptionsList?.find((o: any) => o.options.id === obj.id);\r\n let data = {\r\n question: this.question,\r\n list: option?.childQuestionList,\r\n detectFrom: detectFromEdit\r\n }\r\n this.viewChild.emit(data);\r\n }\r\n}\r\n","<div class=\"d-flex flex-column gap-3 assessment-checkboxes mt-3\" (focusout)=\"onTouched()\">\r\n <ng-container *ngFor=\"let option of question.defaultOptionsList | orderBy\">\r\n <mat-checkbox class=\"assessment-text-medium-13\" [checked]=\"getSelection(option.options)\" [disabled]=\"formControl.disabled\"\r\n (change)=\"toggleSelection($event, option.options)\" [value]=\"option.options\" [required]=\"required\">\r\n <span class=\"text-wrap assessment-text-grey-ten\" [innerHtml]=\"option.options.optionName[0]?.text\"></span>\r\n </mat-checkbox>\r\n </ng-container>\r\n</div>","import { Component, EventEmitter, Optional, Self, Input, Output } from '@angular/core';\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\nimport { AssessmentQuestion } from '../../../../shared/interfaces/question.interface';\n\n@Component({\n selector: 'lib-question-type-preference',\n templateUrl: './question-type-preference.component.html',\n styleUrls: ['./question-type-preference.component.scss']\n})\nexport class QuestionTypePreferenceComponent implements ControlValueAccessor {\n @Input() required: any;\n @Input() question!: AssessmentQuestion;\n @Output() viewChild = new EventEmitter();\n selectData: Array<any> = [];\n public formControl: FormControl = new FormControl();\n\n onTouchedFn = () => {};\n\n constructor(@Optional() @Self() public ngControl: NgControl) {\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n toggleSelection(data: any) {\n if (this.formControl.disabled) return;\n \n const index = this.getSelectionIndex(data);\n if (index === -1) {\n this.selectData.push(data);\n } else {\n this.selectData.splice(index, 1);\n }\n \n this.formControl.patchValue(this.selectData.length ? [...this.selectData] : null);\n this.optionDetection(data, false);\n this.onTouched();\n }\n\n writeValue(value: any) {\n if(value && Array.isArray(value)) { \n this.selectData = [...value]; \n this.formControl.setValue(this.selectData, { emitEvent: false });\n } else {\n this.selectData = [];\n this.formControl.setValue(null, { emitEvent: false });\n }\n }\n\n getSelectionIndex(option: any): number {\n if (this.selectData) {\n return this.selectData.findIndex((s: any) => s.id && s.id === option.id);\n } else {\n return -1;\n }\n }\n\n registerOnChange(fn: Function) {\n this.formControl.valueChanges.subscribe((val) => fn(val));\n }\n\n registerOnTouched(fn: Function) {\n this.onTouchedFn = fn as any;\n }\n\n setDisabledState(isDisabled: boolean) {\n if (isDisabled) {\n this.formControl.disable({ emitEvent: false });\n } else {\n this.formControl.enable({ emitEvent: false });\n }\n }\n\n onTouched() {\n this.onTouchedFn();\n }\n\n checkFormControlValid() {\n if (this.ngControl?.control?.touched && this.ngControl?.control?.invalid) {\n return 'assessment-error-text assessment-text-danger';\n }\n return '';\n }\n\n optionDetection(obj: any, detectFromEdit: boolean) {\n let option = this.question?.defaultOptionsList?.find((o: any) => o.options.id === obj.id);\n let data = {\n question: this.question,\n list: option?.childQuestionList,\n detectFrom: detectFromEdit\n }\n this.viewChild.emit(data);\n }\n}\n","<div class=\"d-flex flex-column gap-3 assessment-checkboxes mt-3\" (focusout)=\"onTouched()\">\n <ng-container *ngFor=\"let option of question.defaultOptionsList | orderBy\">\n <div class=\"d-flex align-items-center gap-3 cursor-pointer\" [class.assessment-text-grey]=\"formControl.disabled\"\n (click)=\"toggleSelection(option.options)\">\n\n <div class=\"preference-box assessment-bg-white flex-shrink-0 assessment-input-border-one assessment-border-radius-two d-flex align-items-center justify-content-center p-1\"\n [ngClass]=\"{\n 'selected assessment-bg-primary-one assessment-text-white': getSelectionIndex(option.options) > -1,\n 'disabled': formControl.disabled\n }\">\n <span class=\"assessment-text-semibold-12\" *ngIf=\"getSelectionIndex(option.options) > -1\">\n {{getSelectionIndex(option.options) + 1}}\n </span>\n </div>\n\n <span class=\"text-wrap assessment-text-medium-14\" [innerHtml]=\"option.options.optionName[0]?.text\"></span>\n </div>\n </ng-container>\n</div>","import { Component, Optional, Self, Input, ElementRef, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\nimport { AssessmentTakerService } from '../../services/assessment-taker.service';\nimport { AssessmentQuestion } from '../../../../shared/interfaces/question.interface';\nimport { Attachment } from '../../../../shared/interfaces/assessment.interface';\n\n@Component({\n selector: 'lib-question-type-file-upload',\n templateUrl: './question-type-file-upload.component.html',\n styleUrls: ['./question-type-file-upload.component.scss']\n})\nexport class QuestionTypeFileUploadComponent implements ControlValueAccessor {\n @Input() required: any;\n @Input() question!: AssessmentQuestion;\n @Input() labelConfig: { [key: string]: string } = {};\n @Input() imageConfig: { [key: string]: string } = {};\n @ViewChild('fileInput') fileInput!: ElementRef;\n\n public files: Attachment[] = [];\n public formControl: FormControl = new FormControl([]);\n\n onTouched = () => { };\n\n constructor(\n @Optional() @Self() public ngControl: NgControl,\n private assessmentService: AssessmentTakerService,\n ) {\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n writeValue(value: any) {\n if (value && Array.isArray(value)) {\n this.files = value;\n this.formControl.setValue(value, { emitEvent: false });\n } else {\n this.files = [];\n this.formControl.setValue([], { emitEvent: false });\n }\n }\n\n registerOnChange(fn: Function) {\n this.formControl.valueChanges.subscribe((val) => fn(val));\n }\n\n registerOnTouched(fn: Function) {\n this.onTouched = fn as any;\n }\n\n setDisabledState(isDisabled: boolean) {\n if (isDisabled) {\n this.formControl.disable({ emitEvent: false });\n } else {\n this.formControl.enable({ emitEvent: false });\n }\n }\n\n get maxFiles(): number {\n const config = this.question?.questionConfigs?.find(c => c.configKey === 'maxNoOfFiles');\n return config ? Number(config.configValue) : 1;\n }\n\n get maxFileSize(): number {\n const config = this.question?.questionConfigs?.find(c => c.configKey === 'maxFileSize');\n // maxFileSize config is in MB, convert to bytes for comparison\n return config ? Number(config.configValue) * 1024 * 1024 : 0;\n }\n\n get allowMultiple(): boolean {\n return this.maxFiles > 1;\n }\n\n onFileChange(event: any) {\n const inputFiles: FileList = event.target.files;\n if (inputFiles && inputFiles.length > 0) {\n const newFiles = Array.from(inputFiles);\n const limit = this.maxFileSize;\n const validFiles = newFiles.filter(f => limit === 0 || f.size <= limit);\n\n if (validFiles.length < newFiles.length) {\n // this.matSnackBar.open('One or more selected files exceed the maximum allowed size.', 'OK', { duration: 4000 });\n }\n\n validFiles.forEach(file => {\n this.uploadFile(file);\n });\n }\n\n if (this.fileInput) {\n this.fileInput.nativeElement.value = '';\n }\n }\n\n uploadFile(file: File) {\n const formData = new FormData();\n formData.append('file', file);\n this.assessmentService.uploadAttachment(formData, { entityType: 'ENTITY_TYPE.ASSESSMENT_QUESTION' }).subscribe({\n next: (data: any) => {\n // this.matSnackBar.open('File uploaded successfully!', 'OK', { duration: 4000 });\n\n if (this.allowMultiple) {\n this.files = [...this.files, data];\n } else {\n this.files = [data];\n }\n\n this.formControl.setValue(this.files);\n this.onTouched();\n },\n error: (error: any) => {\n // this.matSnackBar.open('Failed to upload the file!', 'OK', { duration: 4000 });\n }\n });\n }\n\n removeFile(index: number) {\n this.files.splice(index, 1);\n this.formControl.setValue([...this.files]);\n this.onTouched();\n }\n\n imageErrorHandler(event: any, filePath: string) {\n event.target.src = filePath;\n }\n\n getFileIcon(attachment: Attachment): string {\n const mimeTypeMap: { [key: string]: string } = {\n 'pdf': 'COMMONS_ASSESSMENT.ICON.PDF',\n 'image/jpeg': 'COMMONS_ASSESSMENT.ICON.JPEG',\n 'image/jpg': 'COMMONS_ASSESSMENT.ICON.JPG',\n 'image/png': 'COMMONS_ASSESSMENT.ICON.PNG',\n 'image/svg': 'COMMONS_ASSESSMENT.ICON.SVG'\n };\n const mimeType = attachment.mimeType;\n if (mimeType) {\n const mimeTypeLower = mimeType.toLowerCase();\n for (const key in mimeTypeMap) {\n if (mimeTypeLower.includes(key)) {\n return this.imageConfig[mimeTypeMap[key]] || this.imageConfig['COMMONS_ASSESSMENT.ICON.DEFAULT_FILE'];\n }\n }\n }\n\n return this.imageConfig['COMMONS_ASSESSMENT.ICON.DEFAULT_FILE'];\n }\n\n viewFile(url: string) {\n if (url) {\n window.open(url, '_blank');\n }\n }\n}\n","<div class=\"file-upload-container col-12\">\n <input type=\"file\" #fileInput (change)=\"onFileChange($event)\" [multiple]=\"allowMultiple\" class=\"d-none\"\n [id]=\"question.id + '_file'\" [disabled]=\"formControl.disabled\" (blur)=\"onTouched()\">\n\n <div class=\"my-3 row mx-0 row-gap-3\" *ngIf=\"files.length > 0\">\n <div *ngFor=\"let file of files; let i = index\" class=\"col-lg-4 col-md-6 col-12\">\n <div\n class=\"col-12 d-flex align-items-center gap-3 assessment-border-radius-two assessment-bg-grey-one p-3 assessment-card-border cursor-pointer\">\n <img [src]=\"getFileIcon(file)\"\n (error)=\"imageErrorHandler($event, imageConfig['COMMONS_ASSESSMENT.ICON.DEFAULT_FILE'])\" class=\"file-icon\"\n alt=\"file icon\">\n <div class=\"flex-grow-1 cursor-pointer\" (click)=\"viewFile(file.completeURL)\">\n <p class=\"assessment-text-medium-15 mb-0 assessment-text-grey-ten\">\n {{ file.name }}</p>\n <p class=\"mb-0 assessment-text-medium-12 assessment-text-grey-eight\">\n {{file.fileSizeInBytes < 1024 ? (file.fileSizeInBytes | number: '1.1-1' ) + ' Kb' : file.fileSizeInBytes <\n 1000000 ? (file.fileSizeInBytes / 1024 | number: '1.1-1' ) + ' Kb' : (file.fileSizeInBytes / 1000000 |\n number: '1.1-1' ) + ' Mb' }} </p>\n </div>\n <img *ngIf=\"!formControl.disabled\" (click)=\"removeFile(i)\" [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.DELETE']\"\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/delete.svg')\"\n class=\"icon cursor-pointer\" alt=\"delete\">\n </div>\n </div>\n </div>\n\n <button *ngIf=\"!formControl.disabled\" type=\"button\"\n class=\"assessment-zoom-animation assessment-border-radius-two assessment-button-padding-large assessment-btn-primary-transparent assessment-text-semibold-13 mt-2\"\n (click)=\"fileInput.click()\">\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.UPLOAD']}}\n </button>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { forkJoin } from 'rxjs';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { AssessmentTakerService } from './services/assessment-taker.service';\r\nimport { ResponseBuilderService } from './services/response-builder.service';\r\nimport { SectionInstructionsComponent } from './components/section-instructions/section-instructions.component';\r\nimport { AssesseeDTO, AssessorDTO, Assessment, AssessmentInstanceAssesseDTO } from '../../shared/interfaces/assessment.interface';\r\nimport { AssessmentQuestion } from '../../shared/interfaces/question.interface';\r\nimport { AssessmentQuestionPaper, QuestionPaperSection } from '../../shared/interfaces/question-paper.interface';\r\n\r\n@Component({\r\n selector: 'lib-assessment-taker',\r\n templateUrl: './assessment-taker.component.html',\r\n styleUrls: ['./assessment-taker.component.scss']\r\n})\r\n\r\nexport class AssessmentTakerComponent implements OnInit {\r\n @Input() labelConfig: { [key: string]: string } = {};\r\n @Input() imageConfig: { [key: string]: string } = {};\r\n @Input() showFooter: boolean = false;\r\n @Input() assessmentId!: number;\r\n @Input() assessmentInstanceId!: number;\r\n @Input() assesseeData: AssesseeDTO = { id: 0, actorId: 0, actorType: 'ACTOR_TYPE.BRIDGE_USER' };\r\n @Input() assessorData: AssessorDTO = { id: 0, actorId: 0, actorType: 'TENANT' };\r\n @Input() disabled: boolean = false;\r\n @Input() previewMode: boolean = false;\r\n @Input() verticalView: boolean = false;\r\n @Input() enableMarks: boolean = false;\r\n\r\n @Output() snackbarMessage = new EventEmitter<{ message: string, type: 'success' | 'error' | 'info' }>();\r\n @Output() submitAssessment = new EventEmitter<any>();\r\n\r\n showLoader: boolean = false;\r\n questionBank: Record<number, AssessmentQuestion> = {};\r\n assessmentQuestionPaperData: AssessmentQuestionPaper = {};\r\n assessmentData: Assessment = {};\r\n assesseeResponse: AssessmentInstanceAssesseDTO = {};\r\n configsLoaded: boolean = false;\r\n isSubmitting: boolean = false;\r\n\r\n sectionFormGroups: { sectionId: number; formGroup: FormGroup }[] = [];\r\n selectedTabIndex: number = 0;\r\n sectionErrors: boolean[] = [];\r\n tenantId: number = 0;\r\n tooltipState: Record<number, boolean> = {};\r\n\r\n constructor(\r\n private assessmentTakerService: AssessmentTakerService,\r\n private fb: FormBuilder,\r\n private responseBuilderService: ResponseBuilderService,\r\n private sanitizer: DomSanitizer,\r\n private dialog: MatDialog\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.getConfigsFromJSON();\r\n\r\n if (this.previewMode) {\r\n this.disabled = true;\r\n }\r\n\r\n if (this.assessmentInstanceId) {\r\n this.showLoader = true;\r\n this.loadAssessmentData();\r\n }\r\n }\r\n\r\n getConfigsFromJSON() {\r\n forkJoin({\r\n labelConfig: this.assessmentTakerService.getConfigJSON('json/labelConfig'),\r\n imageConfig: this.assessmentTakerService.getConfigJSON('json/imageConfig')\r\n }).subscribe((res: any) => {\r\n this.labelConfig = Object.assign({}, res?.labelConfig, this.labelConfig);\r\n this.imageConfig = Object.assign({}, res?.imageConfig, this.imageConfig);\r\n\r\n this.configsLoaded = true;\r\n })\r\n }\r\n\r\n loadAssessmentData() {\r\n const apiCalls = {\r\n assessmentData: this.assessmentTakerService.getAssessmentContextById(this.assessmentId),\r\n ...(this.assesseeData?.id && {\r\n assesseeResponse: this.assessmentTakerService.getAnswersByAiaId(this.assesseeData.id)\r\n })\r\n }\r\n forkJoin(apiCalls).subscribe({\r\n next: (data: any) => {\r\n this.assessmentQuestionPaperData = data?.assessmentData?.assessmentQuestionPaperDTO;\r\n this.assessmentData = data?.assessmentData?.assessment;\r\n this.questionBank = data?.assessmentData?.questionDTOMap;\r\n this.tenantId = data?.assessmentData?.assessment?.tenantId;\r\n if (data?.assesseeResponse) {\r\n this.assesseeResponse = data?.assesseeResponse;\r\n } else {\r\n this.assesseeResponse = {\r\n id: 0,\r\n assessmentInstance: { id: this.assessmentInstanceId },\r\n assessee: this.assesseeData,\r\n assessor: this.assessorData,\r\n aiadefaultResponseList: [],\r\n tenant: this.tenantId\r\n };\r\n }\r\n this.formSetup();\r\n this.showLoader = false;\r\n },\r\n error: error => {\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.ERROR_DEFAULT'], type: 'error' });\r\n throw { error, method: 'GET' }\r\n }\r\n });\r\n }\r\n\r\n formSetup() {\r\n this.sectionFormGroups = [];\r\n\r\n this.assessmentQuestionPaperData?.questionPaperSectionList?.forEach(section => {\r\n const group: any = {};\r\n\r\n section?.sectionQuestionsList?.forEach(sq => {\r\n const qId = sq.questionId;\r\n if (!qId || !this.questionBank[qId]) return;\r\n\r\n const question = this.questionBank[qId];\r\n this.addControlForQuestion(group, question, question?.isMandatory);\r\n\r\n if (question.defaultOptionsList?.length) {\r\n question.defaultOptionsList.forEach((option: any) => {\r\n if (option.remarksRequired) {\r\n // Pre-populate remarks if we have answers matching this option.\r\n let remarkVal = null;\r\n const prefilledOptions = this.getPrefilledAnswer(qId);\r\n if (prefilledOptions) {\r\n const ansObj = this.assesseeResponse?.aiadefaultResponseList?.find((a: any) =>\r\n a.sectionQuestion?.questionId === qId && (!a.childQuestionId || a.childQuestionId === 0)\r\n );\r\n if (ansObj) {\r\n if (question.questionType?.code === 'QUESTION_TYPE.OBJECTIVE' && prefilledOptions.id === (option.options?.id ?? option.id)) {\r\n remarkVal = ansObj.remarks || null;\r\n } else if (Array.isArray(prefilledOptions)) {\r\n const matchingObj = ansObj.drobjectiveresponseList?.find((r: any) => r.defaultOption?.options?.id === (option.options?.id ?? option.id));\r\n if (matchingObj) {\r\n remarkVal = matchingObj.remarks || null;\r\n }\r\n }\r\n }\r\n }\r\n\r\n const remarkCtrl = new FormControl(remarkVal);\r\n if (this.assesseeResponse?.assessmentTaken?.code === 'ASSESSMENT_TAKEN.COMPLETED' || this.disabled) remarkCtrl.disable();\r\n group[`${qId}_remarks_${option.id}`] = remarkCtrl;\r\n }\r\n\r\n option.childQuestionList?.forEach((childId: number) => {\r\n const childQues = this.questionBank[childId];\r\n if (childQues) {\r\n this.addControlForQuestion(group, childQues, false, true, qId, option.options?.id ?? option.id);\r\n }\r\n });\r\n });\r\n }\r\n });\r\n\r\n const fg = this.fb.group(group);\r\n\r\n section?.sectionQuestionsList?.forEach(sq => {\r\n const qId = sq.questionId;\r\n if (!qId || !this.questionBank[qId]) return;\r\n const question = this.questionBank[qId];\r\n\r\n if (question.defaultOptionsList?.length) {\r\n fg.get(qId.toString())?.valueChanges.subscribe(val => {\r\n question.defaultOptionsList?.forEach((option: any) => {\r\n const isSelected = this.isOptionSelected(fg, question, option.options?.id);\r\n\r\n if (option.remarksRequired) {\r\n const remarkCtrl = fg.get(`${qId}_remarks_${option.id}`);\r\n if (isSelected) {\r\n remarkCtrl?.setValidators([Validators.required]);\r\n } else {\r\n remarkCtrl?.clearValidators();\r\n remarkCtrl?.setValue(null);\r\n }\r\n remarkCtrl?.updateValueAndValidity();\r\n }\r\n\r\n if (option.childQuestionList?.length) {\r\n option.childQuestionList.forEach((childId: number) => {\r\n const childQues = this.questionBank[childId];\r\n if (childQues?.id) {\r\n const childCtrl = fg.get(childQues.id.toString());\r\n if (isSelected) {\r\n const validators = this.getValidatorsForQuestion(childQues, childQues.isMandatory || false);\r\n childCtrl?.setValidators(validators);\r\n } else {\r\n childCtrl?.clearValidators();\r\n childCtrl?.setValue(null);\r\n }\r\n childCtrl?.updateValueAndValidity();\r\n }\r\n });\r\n }\r\n\r\n });\r\n });\r\n }\r\n });\r\n\r\n this.sectionFormGroups.push({\r\n sectionId: section.id,\r\n formGroup: fg\r\n });\r\n this.sectionErrors.push(false);\r\n });\r\n }\r\n\r\n addControlForQuestion(group: any, question: AssessmentQuestion, isMandatory: boolean = false, isChild: boolean = false, parentId?: number, parentOptionId?: number) {\r\n const qId = question.id;\r\n if (!qId) return;\r\n\r\n const validators = this.getValidatorsForQuestion(question, isMandatory);\r\n let prefilledValue = this.getPrefilledAnswer(qId, isChild, parentId, parentOptionId);\r\n\r\n const control = new FormControl(prefilledValue, validators);\r\n\r\n // Disable if assessment is completed\r\n if (this.assesseeResponse?.assessmentTaken?.code === 'ASSESSMENT_TAKEN.COMPLETED' || this.disabled) {\r\n control.disable();\r\n }\r\n\r\n group[qId] = control;\r\n\r\n // Attach mark assignment control if required\r\n if (this.enableMarks && this.shouldShowMarksDropdown(question)) {\r\n let markValue = this.getPrefilledMark(qId, isChild, parentId, parentOptionId);\r\n group[`${qId}_marks`] = new FormControl(markValue);\r\n }\r\n }\r\n\r\n getPrefilledMark(qId: number, isChild: boolean = false, parentId?: number, parentOptionId?: number): any {\r\n if (!this.assesseeResponse?.aiadefaultResponseList) return null;\r\n const answerObj = this.assesseeResponse.aiadefaultResponseList.find((a: any) => {\r\n if (isChild) {\r\n return a.childQuestionId === qId && a.childQuestionParentQuestionId === parentId && a.childDefaultOptionId === parentOptionId;\r\n } else {\r\n return a.sectionQuestion?.questionId === qId && (!a.childQuestionId || a.childQuestionId === 0);\r\n }\r\n });\r\n return answerObj?.marks ?? null;\r\n }\r\n\r\n getQuestionWeight(qId: number): number {\r\n return this.questionBank[qId]?.weight || 0;\r\n }\r\n\r\n getMarksRange(qId: number): number[] {\r\n const max = this.getQuestionWeight(qId);\r\n if (max === 0) return [];\r\n return Array.from({ length: Math.floor(max) + 1 }, (_, i) => i);\r\n }\r\n\r\n shouldShowMarksDropdown(question: AssessmentQuestion): boolean {\r\n const autoAssignedTypes = [\r\n 'QUESTION_TYPE.OBJECTIVE',\r\n 'QUESTION_TYPE.MULTI_SELECT',\r\n 'QUESTION_TYPE.SCALE_RATING',\r\n 'QUESTION_TYPE.CONSENT',\r\n 'QUESTION_TYPE.MULTISELECT_HIERARCHY',\r\n 'QUESTION_TYPE.MULTISELECT_OPTION_RICHTEXT_REMARKS',\r\n 'QUESTION_TYPE.PREFERENCE'\r\n ];\r\n const hasWeight = this.getQuestionWeight(question.id || 0) > 0;\r\n return !autoAssignedTypes.includes(question.questionType?.code || '') && hasWeight;\r\n }\r\n\r\n getPrefilledAnswer(qId: number, isChild: boolean = false, parentId?: number, parentOptionId?: number): any {\r\n if (!this.assesseeResponse?.aiadefaultResponseList) return null;\r\n\r\n const answerObj = this.assesseeResponse.aiadefaultResponseList.find((a: any) => {\r\n if (isChild) {\r\n return a.childQuestionId === qId && a.childQuestionParentQuestionId === parentId && a.childDefaultOptionId === parentOptionId;\r\n } else {\r\n return a.sectionQuestion?.questionId === qId && (!a.childQuestionId || a.childQuestionId === 0);\r\n }\r\n });\r\n\r\n if (!answerObj) return null;\r\n\r\n const question = this.questionBank[qId];\r\n if (!question) return null;\r\n\r\n const qType = question.questionType?.code;\r\n\r\n if (qType === 'QUESTION_TYPE.OBJECTIVE') {\r\n return answerObj.optionId?.id;\r\n } else if (qType === 'QUESTION_TYPE.MULTI_SELECT' || qType === 'QUESTION_TYPE.PREFERENCE') {\r\n let sortedList = [...(answerObj.drobjectiveresponseList || [])];\r\n if (qType === 'QUESTION_TYPE.PREFERENCE') {\r\n sortedList.sort((a: any, b: any) => (a.orderNo || 0) - (b.orderNo || 0));\r\n }\r\n return sortedList.map((r: any) => r.defaultOption?.options) || [];\r\n } else if (qType === 'QUESTION_TYPE.FILE_UPLOAD') {\r\n // Fallback parsing if we only have responseText\r\n return answerObj.drsubjectiveresponseList?.map((r: any) => {\r\n try {\r\n return JSON.parse(r.responseText);\r\n } catch (e) {\r\n return { id: r.responseText }; // basic fallback\r\n }\r\n }) || [];\r\n } else {\r\n return answerObj.drsubjectiveresponseList?.[0]?.responseText ?? null;\r\n }\r\n }\r\n\r\n getValidatorsForQuestion(question: AssessmentQuestion, isMandatory: boolean): any[] {\r\n const validators: any[] = [];\r\n if (isMandatory) {\r\n validators.push(Validators.required);\r\n }\r\n\r\n if (question.responseValidation) {\r\n validators.push(Validators.pattern(question.responseValidation));\r\n } else {\r\n if (question.questionType?.code === 'QUESTION_TYPE.EMAIL') {\r\n validators.push(Validators.pattern(/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/));\r\n } else if (question.questionType?.code === 'QUESTION_TYPE.URL') {\r\n validators.push(Validators.pattern(/^(https?:\\/\\/)?([\\w\\-]+(\\.[\\w\\-]+)+)([\\/?#].*)?$/i));\r\n } else if (question.questionType?.code === 'QUESTION_TYPE.CONTACT_NUMBER') {\r\n validators.push(Validators.pattern(/^[0-9]{10}$/));\r\n } else if (question.questionType?.code === 'QUESTION_TYPE.NUMBER') {\r\n validators.push(Validators.pattern(/^[0-9]+$/));\r\n }\r\n }\r\n\r\n if (question.questionConfigs && question.questionConfigs.length > 0) {\r\n const minChar = question.questionConfigs.find(c => c.configKey === 'minCharacterCount')?.configValue;\r\n if (minChar) validators.push(Validators.minLength(Number(minChar)));\r\n\r\n const maxChar = question.questionConfigs.find(c => c.configKey === 'maxCharacterCount')?.configValue;\r\n if (maxChar) validators.push(Validators.maxLength(Number(maxChar)));\r\n\r\n const minOpt = question.questionConfigs.find(c => c.configKey === 'minimumNumberOfOption')?.configValue;\r\n if (minOpt) {\r\n validators.push((control: FormControl) => {\r\n if (!control.value || control.value.length < Number(minOpt)) {\r\n return { minOptions: { required: Number(minOpt), actual: control.value?.length || 0 } };\r\n }\r\n return null;\r\n });\r\n }\r\n\r\n const maxOpt = question.questionConfigs.find(c => c.configKey === 'maximumNumberOfOption')?.configValue;\r\n if (maxOpt) {\r\n validators.push((control: FormControl) => {\r\n if (control.value && control.value.length > Number(maxOpt)) {\r\n return { maxOptions: { required: Number(maxOpt), actual: control.value?.length || 0 } };\r\n }\r\n return null;\r\n });\r\n }\r\n\r\n const maxFiles = question.questionConfigs.find(c => c.configKey === 'maxNoOfFiles')?.configValue;\r\n if (maxFiles) {\r\n validators.push((control: FormControl) => {\r\n if (control.value && control.value.length > Number(maxFiles)) {\r\n return { maxFiles: { required: Number(maxFiles), actual: control.value?.length || 0 } };\r\n }\r\n return null;\r\n });\r\n }\r\n\r\n const maxFileSize = question.questionConfigs.find(c => c.configKey === 'maxFileSize')?.configValue;\r\n if (maxFileSize) {\r\n validators.push((control: FormControl) => {\r\n if (control.value && Array.isArray(control.value)) {\r\n const hasLargeFile = control.value.some((file: any) => file?.size && file.size > (Number(maxFileSize) * 1024 * 1024));\r\n if (hasLargeFile) {\r\n return { maxFileSize: { requiredSize: Number(maxFileSize) } };\r\n }\r\n }\r\n return null;\r\n });\r\n }\r\n }\r\n return validators;\r\n }\r\n\r\n imageErrorHandler(event: any, filePath: string) {\r\n event.target.src = filePath;\r\n }\r\n\r\n isOptionSelected(formGroup: FormGroup, question: AssessmentQuestion, optionId: number | undefined): boolean {\r\n if (!optionId) return false;\r\n\r\n let controlName = question.id?.toString();\r\n\r\n if (!controlName) return false;\r\n\r\n const control = formGroup.get(controlName);\r\n if (!control || control.value == null) return false;\r\n\r\n // Multi-select deals with an array of values\r\n if (Array.isArray(control.value)) {\r\n return control.value.includes(optionId) || control.value.some((val: any) => val?.id === optionId);\r\n }\r\n\r\n // Objective / Single select deals with a single value (could be integer ID or object)\r\n if (typeof control.value === 'object' && control.value.id) {\r\n return control.value.id === optionId;\r\n }\r\n\r\n return control.value === optionId;\r\n }\r\n\r\n getMaxCharCount(question: AssessmentQuestion): number {\r\n const config = question?.questionConfigs?.find(c => c.configKey === 'maxCharacterCount');\r\n return config ? Number(config.configValue) : 0;\r\n }\r\n\r\n getRemainingChars(question: AssessmentQuestion, control: any): number {\r\n const max = this.getMaxCharCount(question);\r\n const currentLength = control.value ? control.value.length : 0;\r\n return max - currentLength;\r\n }\r\n\r\n goBack() {\r\n if (this.selectedTabIndex > 0) {\r\n this.selectedTabIndex--;\r\n }\r\n }\r\n\r\n shouldDisableTab(index: number): boolean {\r\n for (let j = 0; j < index; j++) {\r\n if (this.sectionFormGroups[j]?.formGroup?.invalid) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n goNext(markAsCompleted: boolean = true) {\r\n const save = this.assessmentData?.assessmentConfigs?.find(c => c.configKey == 'assesment.config.allowed-partial-response')?.configValue == '1';\r\n const currentSection = this.sectionFormGroups[this.selectedTabIndex];\r\n if (!currentSection) return;\r\n\r\n currentSection.formGroup.markAllAsTouched();\r\n\r\n if (currentSection.formGroup.invalid) {\r\n this.sectionErrors[this.selectedTabIndex] = true;\r\n return;\r\n }\r\n\r\n this.sectionErrors[this.selectedTabIndex] = false;\r\n\r\n if (this.selectedTabIndex < this.sectionFormGroups.length - 1) {\r\n save ? this.save() : this.selectedTabIndex++;\r\n } else {\r\n this.processSubmit(markAsCompleted);\r\n }\r\n }\r\n\r\n expandedState: boolean[] = [];\r\n\r\n processSubmit(markAsCompleted: boolean = true) {\r\n let firstInvalidIndex = -1;\r\n this.sectionFormGroups.forEach((group, index) => {\r\n group.formGroup.markAllAsTouched();\r\n if (group.formGroup.invalid) {\r\n this.sectionErrors[index] = true;\r\n if (firstInvalidIndex === -1) firstInvalidIndex = index;\r\n } else {\r\n this.sectionErrors[index] = false;\r\n }\r\n });\r\n\r\n if (firstInvalidIndex !== -1) {\r\n if (!this.verticalView) {\r\n this.selectedTabIndex = firstInvalidIndex;\r\n } else {\r\n this.expandedState[firstInvalidIndex] = true;\r\n }\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.FIX_ERRORS'], type: 'error' });\r\n this.scrollToFirstInvalidField(firstInvalidIndex);\r\n return;\r\n }\r\n\r\n this.save(true, markAsCompleted);\r\n }\r\n\r\n scrollToFirstInvalidField(sectionIndex: number) {\r\n setTimeout(() => {\r\n const formGroup = this.sectionFormGroups[sectionIndex].formGroup;\r\n for (const controlName in formGroup.controls) {\r\n if (formGroup.controls[controlName].invalid) {\r\n let qId = controlName;\r\n if (controlName.includes('_remarks_') || controlName.includes('_marks')) {\r\n qId = controlName.split('_')[0];\r\n }\r\n const element = document.getElementById(`question-container-${qId}`);\r\n if (element) {\r\n element.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n break;\r\n }\r\n }\r\n }\r\n }, 100);\r\n }\r\n\r\n save(goNext: boolean = true, markAsCompleted: boolean = true) {\r\n this.isSubmitting = true;\r\n\r\n if (markAsCompleted && this.selectedTabIndex == this.sectionFormGroups.length - 1) {\r\n this.assesseeResponse.assessmentTaken = { code: 'ASSESSMENT_TAKEN.COMPLETED' };\r\n } else {\r\n this.assesseeResponse.assessmentTaken = { code: 'ASSESSMENT_TAKEN.INCOMPLETE' };\r\n }\r\n\r\n const payload = this.responseBuilderService.buildResponsePayload(\r\n this.assesseeResponse,\r\n this.assessmentQuestionPaperData,\r\n this.sectionFormGroups,\r\n this.questionBank,\r\n this.tenantId\r\n );\r\n const apiCall = this.assesseeResponse?.id ? this.assessmentTakerService.patchAssessment(payload) : this.assessmentTakerService.submitAssessment(payload);\r\n apiCall.subscribe({\r\n next: (res: any) => {\r\n if (!this.assesseeResponse?.id) {\r\n this.getAnswersByAiaId(res);\r\n } else {\r\n this.assesseeResponse = res;\r\n }\r\n this.isSubmitting = false;\r\n this.submitAssessment.emit({ assesseeId: res?.assessee?.id || res, completed: goNext && (this.selectedTabIndex == this.sectionFormGroups.length - 1 || this.verticalView) });\r\n if (goNext && this.selectedTabIndex < this.sectionFormGroups.length - 1) {\r\n this.selectedTabIndex++;\r\n }\r\n },\r\n error: error => {\r\n this.isSubmitting = false;\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.SAVE_FAILED'], type: 'error' });\r\n throw { error, method: this.assesseeResponse?.id ? 'PATCH' : 'POST', payload }\r\n }\r\n });\r\n }\r\n\r\n getAnswersByAiaId(assesseeId: number) {\r\n this.assessmentTakerService.getAnswersByAiaId(assesseeId).subscribe({\r\n next: (res: any) => {\r\n this.assesseeResponse = res;\r\n },\r\n error: error => {\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.GET_FAILED'], type: 'error' });\r\n throw { error, method: 'GET' }\r\n }\r\n });\r\n }\r\n\r\n addYoutubeIframeSrc(videoUrl: string) {\r\n const videoId = this.getVideoId(videoUrl);\r\n const youtubeUrl = `https://www.youtube.com/embed/${videoId}`;\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(youtubeUrl);\r\n }\r\n\r\n getVideoId(videoUrl: string) {\r\n let pattern = null;\r\n if (videoUrl.includes('youtube.com')) {\r\n pattern = /(?:\\?v=|&v=|youtu\\.be\\/|\\/embed\\/|\\/\\d\\/|\\/vi\\/|\\/v\\/|https?:\\/\\/(?:www\\.)?youtube\\.com\\/(?:v\\/|embed\\/|watch\\?(?:\\S+&)?v=|watch\\?(?:\\S+&)?vi=|\\S+\\/))([a-zA-Z0-9_-]{11})/;\r\n } else if (videoUrl.includes('youtu.be')) {\r\n pattern = /youtu\\.be\\/([a-zA-Z0-9_-]{11})/;\r\n }\r\n if (pattern) {\r\n const match = videoUrl.match(pattern);\r\n if (match && match[1]) {\r\n return match[1];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n openInstructionsDialog(section: QuestionPaperSection) {\r\n this.dialog.open(SectionInstructionsComponent, {\r\n autoFocus: false,\r\n maxWidth: '95%',\r\n width: 'calc(20rem + 500px)',\r\n maxHeight: '95dvh',\r\n panelClass: ['assessment-dialog'],\r\n data: {\r\n imageConfig: this.imageConfig,\r\n labelConfig: this.labelConfig,\r\n sectionDetails: section\r\n },\r\n });\r\n }\r\n}\r\n","<div *ngIf=\"configsLoaded && !showLoader; else loader\" class=\"col-12 h-100\">\r\n <div class=\"col-12 h-100 py-4\" [class.height-without-footer]=\"showFooter\">\r\n <ng-container *ngIf=\"assessmentQuestionPaperData?.questionPaperSectionList?.length\">\r\n <mat-tab-group *ngIf=\"!verticalView\" animationDuration=\"0ms\" class=\"assessment-mat-custom-tabs\"\r\n [(selectedIndex)]=\"selectedTabIndex\">\r\n <mat-tab\r\n *ngFor=\"let section of assessmentQuestionPaperData.questionPaperSectionList | orderBy; let i = index\"\r\n [disabled]=\"shouldDisableTab(i)\">\r\n <ng-template mat-tab-label>\r\n <span class=\"assessment-text-semibold-16\"\r\n [ngClass]=\"sectionErrors[i] ? 'assessment-text-danger' : ''\">{{section.qpsName?.[0]?.text}}</span>\r\n </ng-template>\r\n <div class=\"mt-4\">\r\n <ng-container\r\n *ngTemplateOutlet=\"sectionContent; context: { section: section, i: i }\"></ng-container>\r\n </div>\r\n </mat-tab>\r\n </mat-tab-group>\r\n\r\n <mat-accordion *ngIf=\"verticalView\" multi=\"true\" class=\"d-flex flex-column gap-4 mb-4\">\r\n <mat-expansion-panel\r\n *ngFor=\"let section of assessmentQuestionPaperData.questionPaperSectionList | orderBy; let i = index\"\r\n [expanded]=\"expandedState[i] !== false\" (opened)=\"expandedState[i] = true\"\r\n (closed)=\"expandedState[i] = false\"\r\n class=\"assessment-border-radius-two shadow-none m-0 assessment-panel\">\r\n <mat-expansion-panel-header class=\"assessment-bg-grey-two h-auto py-3 bg-transparent\">\r\n <mat-panel-title>\r\n <span class=\"assessment-text-semibold-16\"\r\n [ngClass]=\"sectionErrors[i] ? 'assessment-text-danger' : ''\">{{section.qpsName?.[0]?.text}}</span>\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div class=\"mt-4 px-md-3\">\r\n <ng-container\r\n *ngTemplateOutlet=\"sectionContent; context: { section: section, i: i }\"></ng-container>\r\n </div>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n </ng-container>\r\n\r\n <div *ngIf=\"!assessmentQuestionPaperData?.questionPaperSectionList?.length\"\r\n class=\"h-100 d-flex flex-column align-items-center justify-content-center gap-3\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.NO_QUESTIONS']\" class=\"col-sm-auto col-6\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/no-questions.svg')\" />\r\n <div class=\"text-center\">\r\n <p class=\"mb-1 assessment-text-medium-18\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.NO_QUESTIONS']}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"showFooter\"\r\n class=\"bg-white p-3 position-sticky bottom-0 d-flex align-items-center justify-content-end border-top gap-3 z-index-1\">\r\n <button\r\n class=\"assessment-zoom-animation assessment-border-radius-two assessment-button-padding-large assessment-btn-primary-transparent assessment-text-semibold-13\"\r\n (click)=\"goBack()\" *ngIf=\"selectedTabIndex > 0 && !verticalView\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.GO_BACK']}}</button>\r\n <button [disabled]=\"isSubmitting\" (click)=\"verticalView ? processSubmit(true) : goNext()\"\r\n class=\"assessment-zoom-animation assessment-border-radius-two assessment-button-padding-large assessment-btn-primary assessment-text-semibold-13 position-relative\">\r\n <span [ngClass]=\"{'opacity-0': isSubmitting}\">\r\n {{ (verticalView || selectedTabIndex === sectionFormGroups.length - 1) ?\r\n labelConfig['COMMONS_ASSESSMENT.LABEL.SUBMIT'] : labelConfig['COMMONS_ASSESSMENT.LABEL.NEXT'] }}\r\n </span>\r\n <mat-spinner *ngIf=\"isSubmitting\" [diameter]=\"20\"\r\n class=\"position-absolute top-50 start-50 translate-middle assessment-spinner-white\"></mat-spinner>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<ng-template #loader>\r\n <div class=\"h-100 col-12 d-flex align-items-center justify-content-center py-5\">\r\n <mat-spinner diameter=\"60\" class=\"assessment-spinner-primary\"></mat-spinner>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Recursive Template for Questions & Child Questions -->\r\n<ng-template #questionTemplate let-questionId=\"questionId\" let-isMandatory=\"isMandatory\" let-groupIndex=\"groupIndex\"\r\n let-parentOptionId=\"parentOptionId\" let-questionIndex=\"questionIndex\">\r\n <div [formGroup]=\"sectionFormGroups[groupIndex].formGroup\" [id]=\"'question-container-' + questionId\">\r\n <div class=\"assessment-border-radius-two mb-3\" [ngClass]=\"parentOptionId? '' : 'p-3 assessment-card-border'\"\r\n *ngIf=\"questionBank[questionId] as question\">\r\n <div\r\n class=\"d-flex flex-column flex-md-row justify-content-between gap-2 gap-md-3 align-items-md-start mb-3\">\r\n <div class=\"d-flex gap-md-3 gap-2 align-items-start flex-grow-1\">\r\n <div class=\"flex-grow-1\">\r\n <p class=\"assessment-text-medium-15 mb-0 d-flex gap-1 gap-md-2\">\r\n {{questionIndex + 1}}.\r\n <span [innerHtml]=\"question.questionText?.[0]?.text\"></span>\r\n </p>\r\n <div class=\"mt-3 col-12\" *ngIf=\"question?.mediaUrl\">\r\n <ng-container\r\n *ngTemplateOutlet=\"VideoTemplate; context:{videoUrl:question?.mediaUrl}\"></ng-container>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"question.hintText && !previewMode\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.INFO']\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/info.svg')\"\r\n cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\"\r\n (mouseenter)=\"tooltipState[question.id!] = true\"\r\n (mouseleave)=\"tooltipState[question.id!] = false\" class=\"cursor-pointer\" />\r\n <ng-template cdkConnectedOverlay [cdkConnectedOverlayOrigin]=\"trigger\"\r\n [cdkConnectedOverlayOpen]=\"tooltipState[question.id!] || false\"\r\n [cdkConnectedOverlayPositions]=\"[{ originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center', offsetX: -8, offsetY: 0 }, { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center', offsetX: 8, offsetY: 0 }]\">\r\n <div class=\"assessment-bg-grey-two assessment-tooltip-border p-3 assessment-border-radius-two assessment-box-shadow-tooltip question-info assessment-text-regular-13\"\r\n (mouseenter)=\"tooltipState[question.id!] = true\"\r\n (mouseleave)=\"tooltipState[question.id!] = false\" [innerHTML]=\"question.hintText\">\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- Assessor Marks Dropdown Logic -->\r\n <ng-container\r\n *ngIf=\"enableMarks && shouldShowMarksDropdown(question) && sectionFormGroups[groupIndex].formGroup.get(question.id + '_marks')\">\r\n <mat-form-field appearance=\"outline\"\r\n class=\"mb-0 assessment-marks-dropdown assessment-text-medium-12\">\r\n <mat-label\r\n class=\"assessment-text-medium-12\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.MARKS']}}</mat-label>\r\n <mat-select [formControlName]=\"question.id + '_marks'\">\r\n <mat-option class=\"assessment-text-medium-12\"\r\n *ngFor=\"let mark of getMarksRange(question.id!)\" [value]=\"mark\">\r\n {{mark}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </ng-container>\r\n </div>\r\n\r\n <ng-container [ngSwitch]=\"question.questionType?.code\">\r\n\r\n <div class=\"col-12\" *ngSwitchCase=\"'QUESTION_TYPE.SUBJECTIVE_SHORT'\">\r\n <lib-question-type-short [question]=\"question\" [formControlName]=\"question.id!\"\r\n [required]=\"isMandatory\" [previewMode]=\"previewMode\"\r\n [labelConfig]=\"labelConfig\"></lib-question-type-short>\r\n </div>\r\n\r\n <div class=\"col-12\" *ngSwitchCase=\"'QUESTION_TYPE.SUBJECTIVE_LONG'\">\r\n <lib-question-type-long [question]=\"question\" [formControlName]=\"question.id!\"\r\n [required]=\"isMandatory\" [previewMode]=\"previewMode\"\r\n [labelConfig]=\"labelConfig\"></lib-question-type-long>\r\n </div>\r\n\r\n <div class=\"col-12\" *ngSwitchCase=\"'QUESTION_TYPE.SUBJECTIVE_RICH_TEXT'\">\r\n <lib-question-type-editor [question]=\"question\" [formControlName]=\"question.id!\"\r\n [required]=\"isMandatory\" [previewMode]=\"previewMode\"\r\n [labelConfig]=\"labelConfig\"></lib-question-type-editor>\r\n </div>\r\n\r\n <div class=\"col-12\" *ngSwitchCase=\"'QUESTION_TYPE.OBJECTIVE'\">\r\n <lib-question-type-objective [question]=\"question\" [formControlName]=\"question.id!\"\r\n [required]=\"isMandatory\"></lib-question-type-objective>\r\n </div>\r\n\r\n <div class=\"col-12\" *ngSwitchCase=\"'QUESTION_TYPE.MULTI_SELECT'\">\r\n <lib-question-type-multiselect [question]=\"question\" [formControlName]=\"question.id!\"\r\n [required]=\"isMandatory\"></lib-question-type-multiselect>\r\n </div>\r\n\r\n <div class=\"col-12\" *ngSwitchCase=\"'QUESTION_TYPE.PREFERENCE'\">\r\n <lib-question-type-preference [question]=\"question\" [formControlName]=\"question.id!\"\r\n [required]=\"isMandatory\"></lib-question-type-preference>\r\n </div>\r\n\r\n <div class=\"col-12\" *ngSwitchCase=\"'QUESTION_TYPE.NUMBER'\">\r\n <lib-question-type-short [question]=\"question\" [formControlName]=\"question.id!\"\r\n [required]=\"isMandatory\" [previewMode]=\"previewMode\"\r\n [labelConfig]=\"labelConfig\"></lib-question-type-short>\r\n </div>\r\n\r\n <div class=\"col-12\" *ngSwitchCase=\"'QUESTION_TYPE.EMAIL'\">\r\n <lib-question-type-short [question]=\"question\" [formControlName]=\"question.id!\"\r\n [required]=\"isMandatory\" [previewMode]=\"previewMode\"\r\n [labelConfig]=\"labelConfig\"></lib-question-type-short>\r\n </div>\r\n\r\n <div class=\"col-12\" *ngSwitchCase=\"'QUESTION_TYPE.CONTACT_NUMBER'\">\r\n <lib-question-type-short [question]=\"question\" [formControlName]=\"question.id!\"\r\n [required]=\"isMandatory\" [previewMode]=\"previewMode\"\r\n [labelConfig]=\"labelConfig\"></lib-question-type-short>\r\n </div>\r\n\r\n <div class=\"col-12\" *ngSwitchCase=\"'QUESTION_TYPE.URL'\">\r\n <lib-question-type-short [question]=\"question\" [formControlName]=\"question.id!\"\r\n [required]=\"isMandatory\" [previewMode]=\"previewMode\"\r\n [labelConfig]=\"labelConfig\"></lib-question-type-short>\r\n </div>\r\n\r\n <div class=\"col-12\" *ngSwitchCase=\"'QUESTION_TYPE.FILE_UPLOAD'\">\r\n <lib-question-type-file-upload [question]=\"question\" [formControlName]=\"question.id!\"\r\n [required]=\"isMandatory\" [labelConfig]=\"labelConfig\"\r\n [imageConfig]=\"imageConfig\"></lib-question-type-file-upload>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Error Messages and Character Count Container -->\r\n <ng-container *ngIf=\"sectionFormGroups[groupIndex].formGroup.get(question.id?.toString() || '') as control\">\r\n <div class=\"d-flex justify-content-between align-items-start mt-1\">\r\n <span>\r\n <mat-error class=\"assessment-text-regular-12 assessment-text-danger\"\r\n *ngIf=\"control.touched && control.errors?.['required']\">\r\n {{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED_RESPONSE']}}\r\n </mat-error>\r\n\r\n <mat-error class=\"assessment-text-regular-12 assessment-text-danger mt-1\"\r\n *ngIf=\"control.touched && control.errors?.['pattern']\">\r\n {{question?.validationMessage || labelConfig['COMMONS_ASSESSMENT.ERROR.INVALID_FORMAT']}}\r\n </mat-error>\r\n\r\n <mat-error class=\"assessment-text-regular-12 assessment-text-danger mt-1\"\r\n *ngIf=\"control.touched && control.errors?.['minlength']\">\r\n {{labelConfig['COMMONS_ASSESSMENT.ERROR.MIN_CHARS']?.replace('{{length}}',\r\n control.errors?.['minlength'].requiredLength + '')}}\r\n </mat-error>\r\n\r\n <mat-error class=\"assessment-text-regular-12 assessment-text-danger mt-1\"\r\n *ngIf=\"control.touched && control.errors?.['maxlength']\">\r\n {{labelConfig['COMMONS_ASSESSMENT.ERROR.MAX_CHARS']?.replace('{{length}}',\r\n control.errors?.['maxlength'].requiredLength + '')}}\r\n </mat-error>\r\n\r\n <mat-error class=\"assessment-text-regular-12 assessment-text-danger mt-1\"\r\n *ngIf=\"control.touched && control.errors?.['minOptions']\">\r\n {{labelConfig['COMMONS_ASSESSMENT.ERROR.MIN_OPTIONS']?.replace('{{count}}',\r\n control.errors?.['minOptions'].required + '')}}\r\n </mat-error>\r\n\r\n <mat-error class=\"assessment-text-regular-12 assessment-text-danger mt-1\"\r\n *ngIf=\"control.touched && control.errors?.['maxOptions']\">\r\n {{labelConfig['COMMONS_ASSESSMENT.ERROR.MAX_OPTIONS']?.replace('{{count}}',\r\n control.errors?.['maxOptions'].required + '')}}\r\n </mat-error>\r\n\r\n <mat-error class=\"assessment-text-regular-12 assessment-text-danger mt-1\"\r\n *ngIf=\"control.touched && control.errors?.['maxFiles']\">\r\n {{labelConfig['COMMONS_ASSESSMENT.ERROR.MAX_FILES']?.replace('{{count}}',\r\n control.errors?.['maxFiles'].required + '')}}\r\n </mat-error>\r\n\r\n <mat-error class=\"assessment-text-regular-12 assessment-text-danger mt-1\"\r\n *ngIf=\"control.touched && control.errors?.['maxFileSize']\">\r\n {{labelConfig['COMMONS_ASSESSMENT.ERROR.MAX_FILE_SIZE']?.replace('{{size}}',\r\n control.errors?.['maxFileSize'].requiredSize + '')}}\r\n </mat-error>\r\n </span>\r\n\r\n <div class=\"assessment-text-regular-12 assessment-text-grey-seven white-space-nowrap ms-2\"\r\n *ngIf=\"getMaxCharCount(question) > 0\">\r\n {{ getRemainingChars(question, control) }}\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.CHARACTER']}}{{getRemainingChars(question, control) !==\r\n 1\r\n ? 's' : ''}} {{labelConfig['COMMONS_ASSESSMENT.LABEL.REMAINING']}}\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n\r\n <!-- Child Questions and Remarks Rendering Logic based on checked form state -->\r\n <ng-container *ngIf=\"question.defaultOptionsList?.length\">\r\n <ng-container *ngFor=\"let option of question.defaultOptionsList\">\r\n\r\n <ng-container\r\n *ngIf=\"isOptionSelected(sectionFormGroups[groupIndex].formGroup, question, option.options?.id)\">\r\n\r\n <!-- REMARKS FIELD -->\r\n <div class=\"mt-3\"\r\n *ngIf=\"option.remarksRequired && sectionFormGroups[groupIndex].formGroup.get(question.id + '_remarks_' + option.id) as remarksControl\">\r\n <p class=\"assessment-text-regular-15 mb-2\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.REMARKS']}}</p>\r\n <textarea formControlName=\"{{question.id}}_remarks_{{option.id}}\" rows=\"2\"\r\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.REMARKS']\"\r\n [ngClass]=\"remarksControl.invalid && remarksControl.touched ? 'assessment-input-border-invalid' : ''\"\r\n class=\"col-12 assessment-text-regular-13 assessment-input-border-one assessment-border-radius-two assessment-input-padding outline-0 assessment-bg-grey-one\"></textarea>\r\n <mat-error class=\"assessment-text-regular-12 assessment-text-danger mt-1\"\r\n *ngIf=\"remarksControl.invalid && remarksControl.touched\">\r\n {{labelConfig['COMMONS_ASSESSMENT.ERROR.FIELD_REQUIRED']}}\r\n </mat-error>\r\n </div>\r\n\r\n <!-- CHILD QUESTIONS RECURSION -->\r\n <div class=\"col-12 mt-3\" *ngIf=\"option.childQuestionList?.length\">\r\n <ng-container *ngFor=\"let childId of option.childQuestionList; let childIndex = index\">\r\n <ng-container *ngTemplateOutlet=\"questionTemplate; context: {\r\n questionId: childId,\r\n isMandatory: questionBank[childId]?.isMandatory,\r\n groupIndex: groupIndex,\r\n parentOptionId: option.id,\r\n questionIndex: childIndex\r\n }\">\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n </ng-container>\r\n\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Reusable Section Form Template -->\r\n<ng-template #sectionContent let-section=\"section\" let-i=\"i\">\r\n <form class=\"w-100\" [formGroup]=\"sectionFormGroups[i].formGroup\" [name]=\"'sectionfrm-' + i\" novalidate>\r\n <div class=\"d-flex justify-content-between align-items-center mb-4\">\r\n <span class=\"assessment-text-semibold-14 assessment-text-grey-ten\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.TOTAL_QUESTIONS']}}{{ section?.totalQuestions || 0 }}\r\n </span>\r\n <button (click)=\"openInstructionsDialog(section)\"\r\n *ngIf=\"!previewMode && (section?.qpsDesc?.[0]?.text || section?.mediaUrl)\"\r\n class=\"assessment-zoom-animation assessment-button-padding assessment-text-medium-13 assessment-btn-primary-transparent\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.VIEW_INSTRUCTIONS']}}\r\n </button>\r\n </div>\r\n\r\n <ng-container *ngFor=\"let sq of section.sectionQuestionsList | orderBy; let j = index\">\r\n <ng-container *ngTemplateOutlet=\"questionTemplate; context: {\r\n questionId: sq.questionId,\r\n isMandatory: questionBank[sq.questionId]?.isMandatory,\r\n groupIndex: i,\r\n parentOptionId: null,\r\n questionIndex: j\r\n }\">\r\n </ng-container>\r\n </ng-container>\r\n </form>\r\n</ng-template>\r\n\r\n<!-- video preview -->\r\n<ng-template let-videoUrl=\"videoUrl\" #VideoTemplate>\r\n <div class=\"assessment-border-radius-two overflow-hidden col-md-10 col-12\">\r\n <video *ngIf=\"videoUrl?.includes('.mp4') else youtubeVideo\" width=\"400\" controls class=\"mw-100 d-block mx-auto\">\r\n <source [src]=\"videoUrl\" type=\"video/mp4\">\r\n </video>\r\n <ng-template #youtubeVideo>\r\n <div class=\"youtube-video position-relative h-100\">\r\n <iframe [src]=\"addYoutubeIframeSrc(videoUrl)\" title=\"YouTube video player\" frameborder=\"0\"\r\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\r\n allowfullscreen class=\"position-absolute top-0 start-0 w-100 h-100 d-block\">\r\n </iframe>\r\n </div>\r\n </ng-template>\r\n </div>\r\n</ng-template>","import { NgModule } from \"@angular/core\";\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { DragDropModule } from \"@angular/cdk/drag-drop\";\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatDialogModule } from \"@angular/material/dialog\";\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\n\r\nconst MATERIAL_MODULES = [\r\n MatProgressSpinnerModule,\r\n MatExpansionModule,\r\n MatSelectModule,\r\n DragDropModule,\r\n MatMenuModule,\r\n MatDialogModule,\r\n MatTooltipModule,\r\n MatFormFieldModule,\r\n MatTabsModule,\r\n MatRadioModule,\r\n MatCheckboxModule,\r\n OverlayModule,\r\n];\r\n\r\n@NgModule({\r\n imports: MATERIAL_MODULES,\r\n exports: MATERIAL_MODULES\r\n})\r\nexport class MaterialModules { }\r\n","import { NgModule } from \"@angular/core\";\r\nimport { MaterialModules } from \"./material-modules\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { AngularEditorModule } from \"@kolkov/angular-editor\";\r\nimport { TextEditorComponent } from \"./components/text-editor/text-editor.component\";\r\nimport { OrderByPipe } from \"./pipes/order-by.pipe\";\r\n\r\n@NgModule({\r\n declarations: [\r\n TextEditorComponent,\r\n OrderByPipe\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MaterialModules,\r\n AngularEditorModule\r\n ],\r\n exports: [\r\n TextEditorComponent,\r\n MaterialModules,\r\n OrderByPipe\r\n ]\r\n})\r\nexport class SharedModule { }","import { Component, forwardRef, Input, OnInit } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'lib-question-type-number',\r\n templateUrl: './question-type-number.component.html',\r\n styleUrls: ['./question-type-number.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => QuestionTypeNumberComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class QuestionTypeNumberComponent implements ControlValueAccessor {\r\n @Input() required:any;\r\n @Input() optionsList:any;\r\n\r\n public formControl: FormControl = new FormControl();\r\n\r\n constructor() { }\r\n\r\n writeValue(value: any) {\r\n this.formControl.setValue(value);\r\n }\r\n\r\n registerOnChange(fn: Function) {\r\n this.formControl.valueChanges.subscribe((val) => fn(val));\r\n }\r\n\r\n registerOnTouched(fn: Function) {\r\n this.formControl.valueChanges.subscribe((val) => fn(val));\r\n }\r\n\r\n}\r\n","<mat-form-field class=\"example-full-width\">\r\n <!-- <input matInput type=\"number\" [formControl]=\"formControl\" class=\"form-check-input\" placeholder=\"Enter number\" value=\"\" min=\"1\" oninput=\"validity.valid||(value='');\" [required]=\"required\"> -->\r\n <input matInput [formControl]=\"formControl\" class=\"form-check-input\" placeholder=\"Enter number\" value=\"\" [required]=\"required\">\r\n </mat-form-field>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { AssessmentTakerComponent } from './assessment-taker.component';\r\nimport { MaterialModules } from '../../shared/material-modules';\r\nimport { SharedModule } from '../../shared/shared.module';\r\nimport { AssessmentTakerService } from './services/assessment-taker.service';\r\nimport { QuestionTypeEditorComponent } from './components/question-type-editor/question-type-editor.component';\r\nimport { QuestionTypeFileUploadComponent } from './components/question-type-file-upload/question-type-file-upload.component';\r\nimport { QuestionTypeLongComponent } from './components/question-type-long/question-type-long.component';\r\nimport { QuestionTypeMultiselectComponent } from './components/question-type-multiselect/question-type-multiselect.component';\r\nimport { QuestionTypeNumberComponent } from './components/question-type-number/question-type-number.component';\r\nimport { QuestionTypeObjectiveComponent } from './components/question-type-objective/question-type-objective.component';\r\nimport { QuestionTypePreferenceComponent } from './components/question-type-preference/question-type-preference.component';\r\nimport { QuestionTypeShortComponent } from './components/question-type-short/question-type-short.component';\r\nimport { SectionInstructionsComponent } from './components/section-instructions/section-instructions.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n AssessmentTakerComponent,\r\n QuestionTypeEditorComponent,\r\n QuestionTypeFileUploadComponent,\r\n QuestionTypeLongComponent,\r\n QuestionTypeMultiselectComponent,\r\n QuestionTypeNumberComponent,\r\n QuestionTypeObjectiveComponent,\r\n QuestionTypePreferenceComponent,\r\n QuestionTypeShortComponent,\r\n SectionInstructionsComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n MaterialModules,\r\n FormsModule,\r\n ReactiveFormsModule\r\n ],\r\n exports: [\r\n AssessmentTakerComponent\r\n ],\r\n providers: [AssessmentTakerService]\r\n})\r\nexport class AssessmentTakerModule { }\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { QuestionPaperSection } from '../../../../shared/interfaces/question-paper.interface';\r\nimport { deepClone } from '../../../../shared/utils';\r\n\r\n@Component({\r\n selector: 'lib-add-edit-section-introduction',\r\n templateUrl: './add-edit-section-introduction.component.html',\r\n styleUrls: ['./add-edit-section-introduction.component.scss']\r\n})\r\nexport class AddEditSectionIntroductionComponent implements OnInit {\r\n imageConfig: { [key: string]: string } = {};\r\n labelConfig: { [key: string]: string } = {};\r\n sectionDescription: string = '';\r\n sectionDetails: QuestionPaperSection | null = null;\r\n videoUrl: string = '';\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<AddEditSectionIntroductionComponent>,\r\n @Inject(MAT_DIALOG_DATA) public dialogData: any\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.imageConfig = this.dialogData?.imageConfig || {};\r\n this.labelConfig = this.dialogData?.labelConfig || {};\r\n this.sectionDetails = deepClone(this.dialogData?.sectionDetails);\r\n if (this.sectionDetails && this.sectionDetails.qpsDesc && this.sectionDetails.qpsDesc.length > 0) {\r\n this.sectionDescription = this.sectionDetails.qpsDesc[0].text || '';\r\n }\r\n this.videoUrl = this.sectionDetails?.mediaUrl || '';\r\n }\r\n\r\n imageErrorHandler(event: any, filePath: string) {\r\n event.target.src = filePath;\r\n }\r\n\r\n get isVideoUrlValid(): boolean {\r\n if (!this.videoUrl) return true;\r\n const urlPattern = /^(https?:\\/\\/)?([\\da-z\\.-]+)\\.([a-z\\.]{2,6})([\\/\\w \\.-]*)*\\/?(\\?[^\\s]*)?$/i;\r\n return urlPattern.test(this.videoUrl);\r\n }\r\n\r\n onSubmit() {\r\n this.dialogRef.close({ update: true, description: this.sectionDescription, mediaUrl: this.videoUrl });\r\n }\r\n}\r\n","<div class=\"col-12\">\r\n <header class=\"p-3 d-flex align-items-center justify-content-between col-12 assessment-bg-grey-one pb-4\">\r\n <p class=\"mb-0 assessment-text-semibold-18\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.ADD_INSTRUCTIONS_HEADER']}}\r\n </p>\r\n <img mat-dialog-close [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.CLOSE']\" class=\"cursor-pointer\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/close.svg')\" />\r\n </header>\r\n\r\n <div class=\"col-12 px-md-4 px-3\">\r\n <div class=\"col-12 my-4\">\r\n <app-text-editor [preText]=\"sectionDescription\" (inputChange)=\"sectionDescription = $event\"\r\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.ENTER_INSTRUCTIONS']\"\r\n class=\"assessment-custom-angular-editor-white assessment-text-regular-13 assessment-text-grey-ten\"\r\n [height]=\"'15rem'\">\r\n </app-text-editor>\r\n </div>\r\n <div class=\"col-12 my-4\">\r\n <input [(ngModel)]=\"videoUrl\"\r\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.ENTER_INSTRUCTIONS_MEDIA']\"\r\n class=\"col-12 assessment-input-padding assessment-border-radius-two outline-0 assessment-input-border-one assessment-text-medium-13 assessment-bg-grey-one\"\r\n [ngClass]=\"{'border-danger': !isVideoUrlValid}\">\r\n <div *ngIf=\"!isVideoUrlValid\" class=\"text-danger assessment-text-regular-12 mt-1\">\r\n {{labelConfig['COMMONS_ASSESSMENT.ERROR.INVALID_URL']}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <footer class=\"mt-auto p-3 pb-4 d-flex align-items-center justify-content-end gap-3 col-12\">\r\n <button mat-dialog-close\r\n class=\"assessment-btn-primary-transparent assessment-zoom-animation p-2 px-3 assessment-text-medium-13\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.DISCARD']}}\r\n </button>\r\n <button (click)=\"onSubmit()\" [disabled]=\"!isVideoUrlValid\"\r\n class=\"assessment-btn-primary assessment-zoom-animation p-2 px-3 assessment-text-medium-13\"\r\n [ngClass]=\"{'opacity-50': !isVideoUrlValid, 'cursor-not-allowed': !isVideoUrlValid}\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.SAVE_DETAILS']}}\r\n </button>\r\n </footer>\r\n</div>","import { Injectable } from '@angular/core';\r\nimport { Assessment, AssessmentInstance } from '../../../shared/interfaces/assessment.interface';\r\nimport { QuestionPaperSection, SectionQuestion, AssessmentQuestionPaper } from '../../../shared/interfaces/question-paper.interface';\r\nimport { AssessmentQuestion } from '../../../shared/interfaces/question.interface';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AssessmentBuilderService {\r\n\r\n private defaultAssessmentDTO: Assessment = {};\r\n\r\n setDefaultAssessmentDTO(value: Assessment) {\r\n this.defaultAssessmentDTO = value;\r\n }\r\n\r\n constructor() { }\r\n\r\n setQuestionDTO(formData: any, existingQuestion: AssessmentQuestion | null = {}): AssessmentQuestion {\r\n\r\n const existingConfigsMap = (existingQuestion?.questionConfigs || [])\r\n .reduce((acc: any, config: any) => {\r\n acc[config.configKey] = config;\r\n return acc;\r\n }, {});\r\n\r\n const questionConfigs = [\r\n { configKey: 'minCharacterCount', configValue: formData.minCharacterCount ? String(formData.minCharacterCount) : null },\r\n { configKey: 'maxCharacterCount', configValue: formData.maxCharacterCount ? String(formData.maxCharacterCount) : null },\r\n { configKey: 'minimumNumberOfOption', configValue: formData.minimumNumberOfOption ? String(formData.minimumNumberOfOption) : null },\r\n { configKey: 'maximumNumberOfOption', configValue: formData.maximumNumberOfOption ? String(formData.maximumNumberOfOption) : null },\r\n { configKey: 'maxFileSize', configValue: formData.maxFileSize ? String(formData.maxFileSize) : null },\r\n { configKey: 'maxNoOfFiles', configValue: formData.maxNoOfFiles ? String(formData.maxNoOfFiles) : null },\r\n // { configKey: 'visibility', configValue: formData.visibility ? 'true' : 'false' }\r\n ].map(config => ({\r\n id: existingConfigsMap[config.configKey]?.id || 0,\r\n ...config,\r\n })).filter(Boolean);\r\n\r\n return {\r\n ...existingQuestion,\r\n questionText: [{\r\n id: existingQuestion?.questionText?.[0]?.id || 0,\r\n language: { code: 'ENG' },\r\n text: formData.questionText || ''\r\n }],\r\n questionType: { code: formData.questionType || '' },\r\n questionSubtype: { code: formData.questionSubtype || formData.questionType?.replace('QUESTION_TYPE', 'QUESTION_SUB_TYPE') || '' },\r\n isMandatory: formData.isMandatory || false,\r\n weight: Number(formData.totalMarks || 0),\r\n hintText: formData.hintText || null,\r\n mediaUrl: formData.questionMedia || null,\r\n responseValidation: formData.customRegex || null,\r\n questionConfigs,\r\n defaultOptionsList: (() => {\r\n const existingOptions = existingQuestion?.defaultOptionsList || [];\r\n const formOptions = formData.options || [];\r\n\r\n // 1. Process items from formData (new and updated)\r\n const processedOptions = formOptions.map((opt: any, index: number) => {\r\n const existingOpt = existingOptions.find(eo => eo.id === opt.id && eo.id !== 0) || {};\r\n\r\n return {\r\n ...existingOpt,\r\n id: opt.id || 0,\r\n uuid: existingOpt.uuid || opt.uuid,\r\n orderNo: index + 1,\r\n weight: Number(opt.weight || 0),\r\n remarksRequired: opt.remarksRequired || false,\r\n isActive: opt.isActive !== false,\r\n options: {\r\n ...(existingOpt.options || {}),\r\n id: opt?.options?.id || existingOpt.options?.id || 0,\r\n optionName: [{\r\n id: existingOpt.options?.optionName?.[0]?.id || 0,\r\n language: { code: 'ENG' },\r\n text: opt.optionLabel || ''\r\n }],\r\n ...(this.defaultAssessmentDTO?.tenant && { tenant: this.defaultAssessmentDTO?.tenant }),\r\n },\r\n childQuestionList: opt.childQuestionList || existingOpt.childQuestionList || [],\r\n ...(this.defaultAssessmentDTO?.tenant && { tenant: this.defaultAssessmentDTO?.tenant }),\r\n };\r\n });\r\n\r\n // 2. Identify existing options that are NOT in formData (removed by user) and mark them inactive\r\n const formOptionIds = new Set(processedOptions.map((o: any) => o.id).filter((id: number) => id !== 0));\r\n const removedOptions = existingOptions.filter(eo => eo.id && !formOptionIds.has(eo.id)).map(eo => ({ ...eo, isActive: false }));\r\n\r\n return [...processedOptions, ...removedOptions];\r\n })(),\r\n ...(!existingQuestion?.id && {\r\n id: 0,\r\n ...(this.defaultAssessmentDTO?.domain && { domain: this.defaultAssessmentDTO?.domain }),\r\n ...(this.defaultAssessmentDTO?.tenant && { tenant: this.defaultAssessmentDTO?.tenant }),\r\n })\r\n };\r\n }\r\n\r\n getQuestionDTO(questionData: AssessmentQuestion) {\r\n const getConfig = (key: string) => questionData.questionConfigs?.find(c => c.configKey === key)?.configValue;\r\n\r\n return {\r\n id: questionData.id,\r\n questionText: questionData.questionText?.[0]?.text || '',\r\n questionType: questionData.questionType?.code || '',\r\n isMandatory: questionData.isMandatory || false,\r\n totalMarks: questionData.weight || 0,\r\n hintText: questionData.hintText || '',\r\n questionMedia: questionData.mediaUrl || '',\r\n minCharacterCount: getConfig('minCharacterCount') ? Number(getConfig('minCharacterCount')) : null,\r\n maxCharacterCount: getConfig('maxCharacterCount') ? Number(getConfig('maxCharacterCount')) : null,\r\n minimumNumberOfOption: getConfig('minimumNumberOfOption') ? Number(getConfig('minimumNumberOfOption')) : null,\r\n maximumNumberOfOption: getConfig('maximumNumberOfOption') ? Number(getConfig('maximumNumberOfOption')) : null,\r\n maxFileSize: getConfig('maxFileSize') ? Number(getConfig('maxFileSize')) : null,\r\n maxNoOfFiles: getConfig('maxNoOfFiles') ? Number(getConfig('maxNoOfFiles')) : null,\r\n // visibility: getConfig('visibility') === 'true',\r\n customRegex: questionData?.responseValidation,\r\n options: questionData.defaultOptionsList?.map(opt => ({\r\n id: opt.id,\r\n uuid: opt.uuid,\r\n optionLabel: opt.options?.optionName?.[0]?.text || '',\r\n weight: opt.weight || 0,\r\n remarksRequired: opt.remarksRequired || false,\r\n isActive: opt.isActive !== false,\r\n childQuestionList: opt.childQuestionList || [],\r\n })) || [],\r\n childQuestions: questionData?.childQuestions || []\r\n }\r\n }\r\n\r\n createNewSection(sequence: number): QuestionPaperSection {\r\n return {\r\n id: 0,\r\n qpsName: [{\r\n id: 0,\r\n language: { code: 'ENG' },\r\n text: `Section ${sequence}`\r\n }],\r\n orderNo: sequence,\r\n sectionQuestionsList: [],\r\n totalMarks: 0,\r\n totalQuestions: 0,\r\n ...(this.defaultAssessmentDTO?.tenant && { tenant: this.defaultAssessmentDTO?.tenant }),\r\n }\r\n }\r\n\r\n generateSectionQuestion(question: AssessmentQuestion, sectionQuestion: SectionQuestion = {}): SectionQuestion {\r\n return {\r\n id: sectionQuestion?.id || 0,\r\n question,\r\n isMandatory: question?.isMandatory,\r\n ...(!sectionQuestion?.id && this.defaultAssessmentDTO?.tenant && { tenant: this.defaultAssessmentDTO?.tenant })\r\n }\r\n }\r\n\r\n generateQuestionPaperDTO(questionPaper: AssessmentQuestionPaper, questionBank: Record<number, AssessmentQuestion>): AssessmentQuestionPaper {\r\n if (!questionPaper) return questionPaper;\r\n\r\n if (!questionPaper?.id && this.defaultAssessmentDTO?.tenant) {\r\n questionPaper.tenant = this.defaultAssessmentDTO?.tenant;\r\n }\r\n\r\n\r\n questionPaper.questionPaperSectionList?.forEach((section: any, sIndex: number) => {\r\n section.orderNo = sIndex + 1;\r\n\r\n let sectionMarks = 0;\r\n let sectionQuestionsCount = 0;\r\n\r\n section.sectionQuestionsList?.forEach((q: SectionQuestion, qIndex: number) => {\r\n q.orderNo = qIndex + 1;\r\n const question = q?.question || questionBank[q?.questionId || -1];\r\n if (question && q.isActive !== false) {\r\n sectionMarks += Number(question.weight) || 0;\r\n sectionQuestionsCount++;\r\n }\r\n });\r\n\r\n section.totalMarks = sectionMarks;\r\n section.totalQuestions = sectionQuestionsCount;\r\n });\r\n\r\n return questionPaper;\r\n }\r\n\r\n generateAssessmentDTO(assessmentId: number, questionPaper: AssessmentQuestionPaper): Assessment {\r\n return {\r\n id: assessmentId,\r\n totallMarks: questionPaper?.questionPaperSectionList?.filter((section: any) => section.isActive !== false).reduce((acc: number, section: any) => acc + (section.totalMarks || 0), 0) || 0,\r\n ...(!assessmentId && {\r\n ...this.defaultAssessmentDTO\r\n })\r\n };\r\n }\r\n\r\n generateAssessmentInstanceDTO(assessmentId: number): AssessmentInstance {\r\n let d = new Date();\r\n let year = d.getFullYear();\r\n let month = d.getMonth();\r\n let day = d.getDate();\r\n let endDate = new Date(year + 20, month, day);\r\n return {\r\n id: 0,\r\n endDate: endDate,\r\n startDate: new Date(),\r\n assessment: {\r\n id: assessmentId,\r\n ...(this.defaultAssessmentDTO?.tenant && { tenant: this.defaultAssessmentDTO?.tenant })\r\n }\r\n }\r\n }\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { LIBRARY_CONFIG, LibraryConfig } from '../../../configuration';\r\nimport * as controllers from '../../../shared/controllers';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AssessmentMakerService {\r\n\r\n constructor(\r\n @Inject(LIBRARY_CONFIG) private config: LibraryConfig,\r\n private http: HttpClient\r\n ) { }\r\n\r\n getConfigJSON(fileName: string) {\r\n return this.http.get(`/assets/commons-assessment/${fileName}.json`);\r\n }\r\n\r\n createAssessmentAndQuestionPaper(payload: any) {\r\n return this.http.post(this.config.baseURL + controllers.assessmentMakerController.assessmentAndQuestionPaper, payload);\r\n }\r\n\r\n patchAssessmentAndQuestionPaper(payload: any) {\r\n return this.http.patch(this.config.baseURL + controllers.assessmentMakerController.assessmentAndQuestionPaper, payload);\r\n }\r\n\r\n createQuestion(payload: any) {\r\n return this.http.post(this.config.baseURL + controllers.assessmentMakerController.createQuestion, payload);\r\n }\r\n\r\n patchQuestion(payload: any) {\r\n return this.http.patch(this.config.baseURL + controllers.assessmentMakerController.patchQuestion, payload);\r\n }\r\n\r\n getQuestionsByIds(params: { questionIds: number[] }) {\r\n return this.http.get(this.config.baseURL + controllers.assessmentMakerController.getQuestionsByIds, { params });\r\n }\r\n\r\n getAssessmentContext(assessmentId: number) {\r\n return this.http.get(this.config.baseURL + controllers.assessmentMakerController.getAssessmentContext.replace('$AssessmentId', assessmentId.toString()));\r\n }\r\n\r\n duplicateSection(questionPaperId: number, sectionId: number) {\r\n return this.http.patch(this.config.baseURL + controllers.assessmentMakerController.duplicateSection?.replace('$AssessmentQuestionPaperId', questionPaperId?.toString())?.replace('$SectionId', sectionId?.toString()), {});\r\n }\r\n\r\n duplicateQuestion(sectionId: number, sectionQuestionId: number) {\r\n return this.http.patch(this.config.baseURL + controllers.assessmentMakerController.duplicateQuestion?.replace('$SectionId', sectionId?.toString())?.replace('$SectionQuestionId', sectionQuestionId?.toString()), {});\r\n }\r\n\r\n createAssessmentInstance(payload: any) {\r\n return this.http.post(this.config.baseURL + controllers.assessmentMakerController.createAssessmentInstance, payload);\r\n }\r\n}\r\n","import { Component, ElementRef, Inject, OnInit, ViewChild } from '@angular/core';\r\nimport { FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { QuestionType } from '../../../../shared/interfaces/assessment.interface';\r\nimport { AssessmentQuestion } from '../../../../shared/interfaces/question.interface';\r\nimport { AssessmentMakerService } from '../../services/assessment-maker.service';\r\nimport { QuestionPaperSection } from '../../../../shared/interfaces/question-paper.interface';\r\nimport { AssessmentBuilderService } from '../../services/assessment-builder.service';\r\nimport { deepClone, generateUuid } from '../../../../shared/utils';\r\n\r\n@Component({\r\n selector: 'lib-app-assessment-builder',\r\n templateUrl: './assessment-builder.component.html',\r\n styleUrls: ['./assessment-builder.component.scss']\r\n})\r\n\r\nexport class AssessmentBuilderComponent implements OnInit {\r\n labelConfig: { [key: string]: string } = {};\r\n imageConfig: { [key: string]: string } = {};\r\n questionTypes: QuestionType[] = [];\r\n questionDetails: AssessmentQuestion | null = null;\r\n rules: any = {};\r\n questionStack: { parentFormValue: AssessmentQuestion, editingQuestionIndex?: number, addingToGroupId?: string }[] = [];\r\n @ViewChild('scrollContainer') scrollContainer!: ElementRef;\r\n\r\n childQuestionGroups: { id: string, optionId: string | number | null, questionIds: (string | number)[] }[] = [];\r\n\r\n questionsFormGroup!: FormGroup;\r\n questionBank: Record<number, AssessmentQuestion> = {};\r\n isChild: boolean = false;\r\n // parentQuestion: AssessmentQuestion | null = null;\r\n\r\n assessmentId: number = 0;\r\n\r\n isSubmitting: boolean = false;\r\n\r\n constructor(\r\n private formBuilder: FormBuilder,\r\n private assessmentBuilderService: AssessmentBuilderService,\r\n private assessmentMakerService: AssessmentMakerService,\r\n public dialogRef: MatDialogRef<AssessmentBuilderComponent>,\r\n @Inject(MAT_DIALOG_DATA) public dialogData: any,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.labelConfig = this.dialogData?.labelConfig;\r\n this.imageConfig = this.dialogData?.imageConfig;\r\n this.rules = this.dialogData?.rules;\r\n this.questionTypes = this.dialogData?.questionTypes;\r\n this.questionBank = this.dialogData?.questionBank;\r\n this.isChild = this.dialogData?.isChild;\r\n\r\n this.assessmentId = this.dialogData?.assessmentId;\r\n\r\n if (this.dialogData.questionDetails) {\r\n this.questionDetails = deepClone(this.dialogData?.questionDetails);\r\n }\r\n this.setupFormGroup();\r\n this.applyDynamicValidators();\r\n }\r\n\r\n generateChildQuestionList() {\r\n if (this.isChild) {\r\n return [];\r\n }\r\n const uniqueIds = new Set<number>();\r\n\r\n this.questionDetails?.defaultOptionsList?.forEach(option => {\r\n option.childQuestionList?.forEach(id => uniqueIds.add(id));\r\n });\r\n\r\n return Array.from(uniqueIds)?.map(id => {\r\n return this.questionBank[id] ? deepClone(this.questionBank[id]) : null;\r\n })?.filter(Boolean) as AssessmentQuestion[];\r\n }\r\n\r\n setupFormGroup() {\r\n this.questionsFormGroup = this.formBuilder.group({\r\n questionType: ['', Validators.required],\r\n questionText: ['', Validators.required],\r\n isMandatory: [false],\r\n // visibility: [true],\r\n totalMarks: [null],\r\n minCharacterCount: [null],\r\n maxCharacterCount: [null],\r\n maximumNumberOfOption: [null],\r\n minimumNumberOfOption: [null],\r\n maxFileSize: [null],\r\n maxNoOfFiles: [null],\r\n customRegex: [''],\r\n hintText: [''],\r\n questionMedia: [''],\r\n options: this.formBuilder.array([]),\r\n childQuestions: [[]]\r\n });\r\n\r\n this.questionsFormGroup.get('questionType')?.valueChanges.subscribe(() => {\r\n this.applyDynamicValidators();\r\n });\r\n if (this.questionDetails) {\r\n this.populateForm(this.questionDetails, true);\r\n } else {\r\n this.buildChildQuestionGroups([]);\r\n }\r\n }\r\n\r\n populateForm(questionDetails: AssessmentQuestion, buildChildGroups: boolean = false) {\r\n if (!questionDetails) return;\r\n const childQuestions = questionDetails?.childQuestions || this.generateChildQuestionList();\r\n const formData = this.assessmentBuilderService.getQuestionDTO({ ...questionDetails, childQuestions });\r\n this.questionsFormGroup.patchValue(formData);\r\n if (formData.options?.length) {\r\n formData.options.forEach((opt: any) => {\r\n const optGroup = this.createOption();\r\n optGroup.patchValue(opt);\r\n this.options.push(optGroup);\r\n });\r\n }\r\n if (buildChildGroups) {\r\n this.buildChildQuestionGroups(childQuestions);\r\n }\r\n }\r\n\r\n async onSubmit() {\r\n if (this.questionsFormGroup.invalid) {\r\n this.questionsFormGroup.markAllAsTouched();\r\n return;\r\n }\r\n\r\n this.isSubmitting = true;\r\n\r\n if (this.questionStack.length > 0) {\r\n // child question logic\r\n const state = this.questionStack[this.questionStack.length - 1];\r\n\r\n if (state?.editingQuestionIndex !== undefined) {\r\n if (!state.parentFormValue.childQuestions) {\r\n state.parentFormValue.childQuestions = [];\r\n }\r\n // Update existing child\r\n const childQuestion = state.parentFormValue.childQuestions[state.editingQuestionIndex];\r\n const payload = this.assessmentBuilderService.setQuestionDTO(this.questionsFormGroup.value, childQuestion);\r\n try {\r\n const question = await this.updateQuestion(payload);\r\n state.parentFormValue.childQuestions[state.editingQuestionIndex] = question;\r\n if (question?.id) {\r\n this.questionBank[question.id] = question;\r\n }\r\n this.isSubmitting = false;\r\n } catch (error) {\r\n this.isSubmitting = false;\r\n console.error(error);\r\n this.dialogData?.snackbarMessageEmitter?.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.ERROR_DEFAULT'], type: 'error' });\r\n throw { error, method: 'PATCH', payload }\r\n }\r\n } else {\r\n // Add new child \r\n const payload = this.assessmentBuilderService.setQuestionDTO(this.questionsFormGroup.value);\r\n try {\r\n const question = await this.createQuestion(payload);\r\n state?.parentFormValue?.childQuestions?.push(question);\r\n if (question?.id) {\r\n this.questionBank[question.id] = question;\r\n\r\n const grp = this.childQuestionGroups.find((g: any) => g.id === state.addingToGroupId);\r\n if (grp) {\r\n grp.questionIds?.push(question?.id);\r\n if (grp.optionId) {\r\n const opt = state.parentFormValue?.defaultOptionsList?.find((o: any) => (o.id || o.uuid) == grp.optionId);\r\n if (opt) {\r\n opt.childQuestionList = opt.childQuestionList || [];\r\n opt.childQuestionList.push(question.id);\r\n }\r\n }\r\n } else {\r\n this.childQuestionGroups.push({\r\n id: generateUuid(),\r\n optionId: null,\r\n questionIds: [question?.id]\r\n });\r\n }\r\n }\r\n\r\n this.isSubmitting = false;\r\n } catch (error) {\r\n this.isSubmitting = false;\r\n console.error(error);\r\n this.dialogData?.snackbarMessageEmitter?.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.ERROR_DEFAULT'], type: 'error' });\r\n throw { error, method: 'POST', payload }\r\n }\r\n }\r\n this.questionStack.pop();\r\n\r\n // Re-populate parent form\r\n this.resetAndPopulate(state?.parentFormValue);\r\n } else {\r\n let questionDTO = this.assessmentBuilderService.setQuestionDTO(this.questionsFormGroup.value, this.questionDetails);\r\n\r\n // Update local template tree representation\r\n if (this.questionDetails?.id) {\r\n try {\r\n questionDTO = await this.updateQuestion(questionDTO);\r\n if (questionDTO?.id) {\r\n this.questionBank[questionDTO.id] = questionDTO\r\n }\r\n this.dialogData?.snackbarMessageEmitter?.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.QUESTION_UPDATED_SUCCESS'], type: 'success' });\r\n this.dialogRef.close({ success: true });\r\n this.isSubmitting = false;\r\n } catch (error) {\r\n this.isSubmitting = false;\r\n console.error(error);\r\n this.dialogData?.snackbarMessageEmitter?.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.ERROR_DEFAULT'], type: 'error' });\r\n throw { error, method: 'PATCH', payload: questionDTO }\r\n }\r\n } else {\r\n this.createOrEditAssessmentAndQuestionPaper(questionDTO);\r\n }\r\n }\r\n }\r\n\r\n createQuestion(payload: any): Promise<AssessmentQuestion> {\r\n return new Promise((resolve, reject) => {\r\n this.assessmentMakerService.createQuestion(payload).subscribe({\r\n next: (res) => resolve(res as AssessmentQuestion),\r\n error: (err) => reject(err)\r\n });\r\n });\r\n }\r\n\r\n updateQuestion(payload: any): Promise<AssessmentQuestion> {\r\n return new Promise((resolve, reject) => {\r\n this.assessmentMakerService.patchQuestion(payload).subscribe({\r\n next: (res) => resolve(res as AssessmentQuestion),\r\n error: (err) => reject(err)\r\n });\r\n });\r\n }\r\n\r\n createOrEditAssessmentAndQuestionPaper(question: AssessmentQuestion) {\r\n const questionPaper = deepClone(this.dialogData?.assessmentQuestionPaperData);\r\n const sectionQuestion = this.assessmentBuilderService.generateSectionQuestion(question);\r\n if (!this.dialogData?.sectionDetails) {\r\n const list = questionPaper?.questionPaperSectionList;\r\n const lastSequence = list?.length ? list[list.length - 1].orderNo || 0 : 0;\r\n const newSection = this.assessmentBuilderService.createNewSection(lastSequence + 1);\r\n\r\n newSection?.sectionQuestionsList?.push(sectionQuestion);\r\n\r\n questionPaper?.questionPaperSectionList?.push(newSection);\r\n } else {\r\n const sectionRef = questionPaper?.questionPaperSectionList?.find((section: QuestionPaperSection) => section?.id == this.dialogData?.sectionDetails?.id);\r\n sectionRef?.sectionQuestionsList?.push(sectionQuestion);\r\n }\r\n\r\n const questionPaperDTO = this.assessmentBuilderService.generateQuestionPaperDTO(questionPaper, this.questionBank);\r\n const assessmentDTO = this.assessmentBuilderService.generateAssessmentDTO(this.assessmentId, questionPaperDTO);\r\n\r\n const payload = {\r\n assessment: assessmentDTO,\r\n questionPaper: questionPaperDTO\r\n }\r\n\r\n const apiCall = this.assessmentId\r\n ? this.assessmentMakerService.patchAssessmentAndQuestionPaper(payload)\r\n : this.assessmentMakerService.createAssessmentAndQuestionPaper(payload);\r\n\r\n apiCall.subscribe({\r\n next: (res: any) => {\r\n this.isSubmitting = false;\r\n this.dialogRef.close({\r\n success: true,\r\n assessmentId: res?.assessment?.id,\r\n questionPaper: res?.questionPaper,\r\n questionMap: res?.questionMap\r\n });\r\n },\r\n error: (error: any) => {\r\n console.error(error);\r\n this.isSubmitting = false;\r\n this.dialogData?.snackbarMessageEmitter?.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.ERROR_DEFAULT'], type: 'error' });\r\n throw { error, method: this.assessmentId ? 'PATCH' : 'POST', payload }\r\n }\r\n });\r\n }\r\n\r\n applyDynamicValidators() {\r\n if (!this.rules || Object.keys(this.rules).length === 0) return;\r\n\r\n const form = this.questionsFormGroup;\r\n const qType = form.get('questionType')?.value;\r\n const currentRules = this.rules[qType] || {};\r\n\r\n const excludedControls = new Set(['questionType', 'questionText', 'options', 'visibility', 'isMandatory']);\r\n\r\n // Handle normal controls\r\n Object.entries(form.controls).forEach(([key, control]) => {\r\n if (excludedControls.has(key)) return;\r\n\r\n const rule = currentRules[key];\r\n\r\n if (rule?.visible) {\r\n const validators = rule?.required ? [Validators.required] : [];\r\n if (key === 'questionMedia') {\r\n validators.push(Validators.pattern(/^(https?:\\/\\/)?([\\da-z\\.-]+)\\.([a-z\\.]{2,6})([\\/\\w \\.-]*)*\\/?(\\?[^\\s]*)?$/i));\r\n }\r\n control.setValidators(validators.length > 0 ? validators : null);\r\n } else {\r\n control.clearValidators();\r\n control.setValue(key === 'childQuestions' ? [] : null, { emitEvent: false });\r\n }\r\n\r\n control.updateValueAndValidity({ emitEvent: false });\r\n });\r\n\r\n // Handle options FormArray\r\n const optionsControl = form.get('options') as FormArray;\r\n const optionsRule = currentRules['options'];\r\n\r\n if (!optionsRule?.visible) {\r\n optionsControl.clearValidators();\r\n optionsControl.clear();\r\n optionsControl.updateValueAndValidity({ emitEvent: false });\r\n return;\r\n }\r\n\r\n const optionsValidator = optionsRule?.required ? (control: any) => {\r\n const activeOptions = (control.value || []).filter((opt: any) => opt.isActive !== false);\r\n return activeOptions.length > 0 ? null : { required: true };\r\n } : null;\r\n\r\n optionsControl.setValidators(optionsValidator);\r\n\r\n const showWeightage = optionsRule?.showWeightage;\r\n const showRemarks = optionsRule?.showRemarks;\r\n\r\n optionsControl.controls.forEach(optGroup => {\r\n const weightCtrl = optGroup.get('weight');\r\n const remarksCtrl = optGroup.get('remarksRequired');\r\n\r\n if (!showWeightage) weightCtrl?.setValue(0, { emitEvent: false });\r\n if (!showRemarks) remarksCtrl?.setValue(false, { emitEvent: false });\r\n\r\n weightCtrl?.updateValueAndValidity({ emitEvent: false });\r\n remarksCtrl?.updateValueAndValidity({ emitEvent: false });\r\n });\r\n\r\n optionsControl.updateValueAndValidity({ emitEvent: false });\r\n }\r\n\r\n showField(fieldName: string, nestedProp?: string): boolean {\r\n const questionType = this.questionsFormGroup?.get('questionType')?.value;\r\n if (!questionType || !this.rules[questionType] || !this.rules[questionType][fieldName]) {\r\n return false;\r\n }\r\n if (nestedProp) {\r\n return !!this.rules[questionType][fieldName][nestedProp];\r\n }\r\n return !!this.rules[questionType][fieldName]?.visible;\r\n }\r\n\r\n get options(): FormArray {\r\n return this.questionsFormGroup.get('options') as FormArray;\r\n }\r\n\r\n addOption() {\r\n this.options.push(this.createOption());\r\n }\r\n\r\n removeOption(index: number) {\r\n const removedOption = this.options.at(index);\r\n const removedOptionId = removedOption.get('id')?.value;\r\n const removedOptionUuid = removedOption.get('uuid')?.value;\r\n const uniqueId = removedOptionId || removedOptionUuid;\r\n\r\n if (removedOptionId) {\r\n removedOption.get('isActive')?.setValue(false);\r\n } else {\r\n this.options.removeAt(index);\r\n }\r\n\r\n this.childQuestionGroups.forEach(g => {\r\n if (g.optionId === uniqueId) {\r\n g.optionId = null;\r\n }\r\n });\r\n }\r\n\r\n createOption(): FormGroup {\r\n return this.formBuilder.group({\r\n id: [0],\r\n uuid: [generateUuid()],\r\n optionLabel: ['', Validators.required],\r\n weight: [0],\r\n remarksRequired: [false],\r\n isActive: [true],\r\n childQuestionList: [[]]\r\n });\r\n }\r\n\r\n allowOnlyNumbers(event: any) {\r\n event.target.value = event.target.value.replace(/\\D/g, '');\r\n }\r\n\r\n imageErrorHandler(event: any, filePath: string) {\r\n event.target.src = filePath;\r\n }\r\n\r\n addEditChildQuestion(childQuestion?: AssessmentQuestion, index?: number, groupId?: string) {\r\n // Save current parent state\r\n const questionData = this.assessmentBuilderService.setQuestionDTO(this.questionsFormGroup.value, this.questionDetails);\r\n\r\n this.questionStack.push({\r\n parentFormValue: { ...questionData, childQuestions: this.questionsFormGroup.get('childQuestions')?.value },\r\n editingQuestionIndex: index,\r\n addingToGroupId: groupId\r\n });\r\n\r\n // Reset form for child\r\n this.questionsFormGroup.reset({\r\n questionType: '',\r\n questionText: '',\r\n isMandatory: false,\r\n // visibility: true,\r\n totalMarks: null,\r\n minCharacterCount: null,\r\n maxCharacterCount: null,\r\n maximumNumberOfOption: null,\r\n minimumNumberOfOption: null,\r\n maxFileSize: null,\r\n maxNoOfFiles: null,\r\n customRegex: '',\r\n hintText: '',\r\n questionMedia: '',\r\n childQuestions: [[]]\r\n });\r\n const optionsControl = this.questionsFormGroup.get('options') as FormArray;\r\n while (optionsControl.length !== 0) {\r\n optionsControl.removeAt(0);\r\n }\r\n\r\n this.applyDynamicValidators();\r\n if (childQuestion) {\r\n this.populateForm(childQuestion);\r\n }\r\n this.scrollToTop();\r\n }\r\n\r\n deleteChildQuestion(index: number, event: Event) {\r\n event.stopPropagation();\r\n const deletedChild = this.questionsFormGroup.get('childQuestions')?.value[index];\r\n\r\n this.options.controls.forEach(opt => {\r\n let childList = [...(opt.get('childQuestionList')?.value || [])];\r\n childList = childList.filter((id: string | number) => id !== deletedChild.id);\r\n opt.get('childQuestionList')?.setValue(childList);\r\n });\r\n\r\n this.questionsFormGroup.get('childQuestions')?.value.splice(index, 1);\r\n\r\n this.childQuestionGroups.forEach(g => {\r\n g.questionIds = g.questionIds.filter(qid => qid !== deletedChild.id);\r\n });\r\n this.childQuestionGroups = this.childQuestionGroups.filter(g => g.questionIds.length > 0);\r\n }\r\n\r\n getOptionId(opt: any): string | number {\r\n return opt.get('id')?.value ? opt.get('id')?.value : opt.get('uuid')?.value;\r\n }\r\n\r\n getChildQuestionById(id: string | number): AssessmentQuestion | undefined {\r\n return this.questionsFormGroup.get('childQuestions')?.value?.find((q: AssessmentQuestion) => q.id === id);\r\n }\r\n\r\n getChildQuestionIndex(id: number | undefined): number {\r\n return this.questionsFormGroup.get('childQuestions')?.value?.findIndex((q: AssessmentQuestion) => q.id === id);\r\n }\r\n\r\n deleteChildQuestionById(id: number | undefined, event: Event) {\r\n event.stopPropagation();\r\n const index = this.getChildQuestionIndex(id);\r\n if (index > -1) {\r\n this.deleteChildQuestion(index, event);\r\n }\r\n }\r\n\r\n buildChildQuestionGroups(childQuestions: AssessmentQuestion[]) {\r\n this.childQuestionGroups = [];\r\n const processedQuestionIds = new Set();\r\n\r\n this.options.controls.forEach(opt => {\r\n const optionId = this.getOptionId(opt);\r\n const childList = opt.get('childQuestionList')?.value || [];\r\n\r\n if (childList.length > 0) {\r\n this.childQuestionGroups.push({\r\n id: generateUuid(),\r\n optionId: optionId,\r\n questionIds: [...childList]\r\n });\r\n childList.forEach((id: any) => processedQuestionIds.add(id));\r\n }\r\n });\r\n\r\n childQuestions.forEach(cq => {\r\n if (cq.id && !processedQuestionIds.has(cq.id)) {\r\n this.childQuestionGroups.push({\r\n id: generateUuid(),\r\n optionId: null,\r\n questionIds: [cq.id]\r\n });\r\n }\r\n });\r\n }\r\n\r\n onGroupOptionChange(groupId: string, newOptionId: string | number | null) {\r\n const groupIndex = this.childQuestionGroups.findIndex(g => g.id === groupId);\r\n if (groupIndex === -1) return;\r\n const group = this.childQuestionGroups[groupIndex];\r\n\r\n const oldOptionId = group.optionId;\r\n\r\n if (oldOptionId) {\r\n const oldOpt = this.options.controls.find(opt => this.getOptionId(opt) === oldOptionId);\r\n if (oldOpt) {\r\n let childList = [...(oldOpt.get('childQuestionList')?.value || [])];\r\n childList = childList.filter(id => !group.questionIds.includes(id as any));\r\n oldOpt.get('childQuestionList')?.setValue(childList);\r\n }\r\n }\r\n\r\n const existingGroup = this.childQuestionGroups.find(g => g.id !== groupId && g.optionId === newOptionId);\r\n\r\n if (existingGroup && newOptionId) {\r\n existingGroup.questionIds.push(...group.questionIds);\r\n this.childQuestionGroups.splice(groupIndex, 1);\r\n } else {\r\n group.optionId = newOptionId;\r\n }\r\n\r\n if (newOptionId) {\r\n const newOpt = this.options.controls.find(opt => this.getOptionId(opt) === newOptionId);\r\n if (newOpt) {\r\n let childList = [...(newOpt.get('childQuestionList')?.value || [])];\r\n const set = new Set([...childList, ...group.questionIds]);\r\n newOpt.get('childQuestionList')?.setValue(Array.from(set));\r\n }\r\n }\r\n }\r\n\r\n goBack() {\r\n if (this.questionStack.length === 0) {\r\n this.dialogRef.close();\r\n return;\r\n }\r\n const state = this.questionStack.pop();\r\n\r\n this.resetAndPopulate(state?.parentFormValue);\r\n this.scrollToTop();\r\n }\r\n\r\n private resetAndPopulate(parentValue: any) {\r\n this.questionsFormGroup.reset();\r\n\r\n const optionsControl = this.questionsFormGroup.get('options') as FormArray;\r\n while (optionsControl.length !== 0) {\r\n optionsControl.removeAt(0);\r\n }\r\n\r\n this.populateForm(parentValue);\r\n }\r\n\r\n private scrollToTop() {\r\n if (this.scrollContainer && this.scrollContainer.nativeElement) {\r\n setTimeout(() => {\r\n this.scrollContainer.nativeElement.scrollTop = 0;\r\n }, 0);\r\n }\r\n }\r\n}\r\n","<div class=\"d-flex vh-100 position-relative overflow-hidden\">\r\n <div *ngIf=\"questionStack.length > 0 || isChild\"\r\n class=\"p-3 px-2 col-auto assessment-bg-palette-C8DAF9 flex-column align-items-center justify-content-end d-md-flex d-none\">\r\n <p class=\"m-0 assessment-text-semibold-18 vertical-text\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.CHILD_QUESTION']}}\r\n </p>\r\n </div>\r\n <div class=\"flex-grow-1 h-100 d-flex flex-column position-relative\">\r\n <header\r\n class=\"p-3 d-flex align-items-center justify-content-between position-sticky top-0 col-12 border-bottom\">\r\n <p *ngIf=\"questionStack.length == 0\" class=\"mb-0 assessment-text-semibold-18 d-md-inline d-none\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.INPUT_FIELD_SETTINGS']}}\r\n </p>\r\n <button *ngIf=\"questionStack.length > 0\" (click)=\"goBack()\"\r\n class=\"d-flex align-items-center gap-2 assessment-text-grey-ten border-0 outline-0 assessment-text-medium-14 bg-transparent\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.GO_BACK']\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/go-back.svg')\" />\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.GO_BACK']}}\r\n </button>\r\n <div class=\"d-flex align-items-center justify-content-md-end justify-content-between gap-3 flex-grow-1\">\r\n <button (click)=\"onSubmit()\" [disabled]=\"isSubmitting\"\r\n class=\"assessment-btn-primary assessment-button-padding assessment-text-medium-13 assessment-zoom-animation assessment-button-padding position-relative\">\r\n <span [ngClass]=\"{'opacity-0': isSubmitting}\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.SAVE_QUESTION']}}\r\n </span>\r\n <mat-spinner *ngIf=\"isSubmitting\" [diameter]=\"20\"\r\n class=\"position-absolute top-50 start-50 translate-middle assessment-spinner-white\"></mat-spinner>\r\n </button>\r\n <img class=\"d-md-none\" *ngIf=\"questionStack.length == 0\" mat-dialog-close\r\n [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.CLOSE']\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/close.svg')\" />\r\n </div>\r\n </header>\r\n <div #scrollContainer class=\"col-12 py-4 px-md-4 px-3 flex-grow-1 overflow-y-auto form-container\"\r\n [formGroup]=\"questionsFormGroup\">\r\n <div class=\"pb-4 col-12\">\r\n <label\r\n class=\"mb-2 assessment-text-medium-16 assessment-text-grey-ten col-12\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.TYPE']}}</label>\r\n <mat-select formControlName=\"questionType\"\r\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.SELECT_QUESTION_TYPE']\"\r\n class=\"assessment-mat-select col-12 assessment-border-radius-two outline-0 assessment-input-border-one assessment-text-medium-13 assessment-bg-grey-one\">\r\n <mat-option class=\"assessment-text-medium-13\" *ngFor=\"let type of questionTypes\" [value]=\"type?.code\">\r\n {{type?.label}}\r\n </mat-option>\r\n </mat-select>\r\n <mat-error\r\n *ngIf=\"questionsFormGroup.get('questionType')?.errors && questionsFormGroup.get('questionType')?.touched\"\r\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</mat-error>\r\n </div>\r\n <div class=\"pb-4 col-12\">\r\n <label class=\"mb-2 assessment-text-medium-16 assessment-text-grey-ten\">Question</label>\r\n <app-text-editor [preText]=\"questionsFormGroup?.get('questionText')?.value\"\r\n (inputChange)=\"questionsFormGroup?.get('questionText')?.patchValue($event)\"\r\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.ENTER_QUESTION']\"\r\n class=\"assessment-custom-angular-editor-white assessment-text-regular-13 assessment-text-grey-ten\"\r\n [height]=\"'8rem'\">\r\n </app-text-editor>\r\n <mat-error\r\n *ngIf=\"questionsFormGroup.get('questionText')?.errors && questionsFormGroup.get('questionText')?.touched\"\r\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</mat-error>\r\n <div class=\"col-12 position-relative mt-3\" *ngIf=\"showField('questionMedia')\">\r\n <input formControlName=\"questionMedia\"\r\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.ENTER_QUESTION_MEDIA']\"\r\n class=\"col-12 assessment-input-padding assessment-border-radius-two outline-0 assessment-input-border-one assessment-text-medium-13 assessment-bg-grey-one\"\r\n [ngClass]=\"{'border-danger': questionsFormGroup.get('questionMedia')?.invalid && questionsFormGroup.get('questionMedia')?.touched}\">\r\n <mat-error\r\n *ngIf=\"questionsFormGroup.get('questionMedia')?.hasError('pattern') && questionsFormGroup.get('questionMedia')?.touched\"\r\n class=\"assessment-text-regular-12 assessment-text-danger mt-1\">\r\n {{labelConfig['COMMONS_ASSESSMENT.ERROR.INVALID_URL']}}\r\n </mat-error>\r\n <mat-error\r\n *ngIf=\"questionsFormGroup.get('questionMedia')?.hasError('required') && questionsFormGroup.get('questionMedia')?.touched\"\r\n class=\"assessment-text-regular-12 assessment-text-danger mt-1\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</mat-error>\r\n </div>\r\n </div>\r\n <div class=\"row mx-0 col-12 pb-4\" *ngIf=\"showField('minCharacterCount') || showField('maxCharacterCount')\">\r\n <div class=\"col-6 ps-0\" *ngIf=\"showField('minCharacterCount')\">\r\n <label\r\n class=\"mb-1 assessment-text-medium-13 assessment-text-grey-ten\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.MIN_CHARACTER_LIMIT']}}</label>\r\n <div class=\"col-12 d-flex align-items-center gap-2 position-relative\">\r\n <input formControlName=\"minCharacterCount\"\r\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.NOT_SET']\"\r\n (input)=\"allowOnlyNumbers($event)\"\r\n (blur)=\"questionsFormGroup.get('minCharacterCount')?.markAsTouched()\"\r\n class=\"col-12 assessment-input-padding assessment-border-radius-two outline-0 assessment-input-border-one assessment-text-medium-13 assessment-bg-grey-one\">\r\n <span\r\n class=\"assessment-text-regular-12 assessment-text-grey-seven position-absolute end-0 me-3\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.CHARACTERS']}}</span>\r\n </div>\r\n <mat-error\r\n *ngIf=\"questionsFormGroup.get('minCharacterCount')?.errors && questionsFormGroup.get('minCharacterCount')?.touched\"\r\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</mat-error>\r\n </div>\r\n <div class=\"col-6 pe-0\" *ngIf=\"showField('maxCharacterCount')\">\r\n <label\r\n class=\"mb-1 assessment-text-medium-13 assessment-text-grey-ten\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.MAX_CHARACTER_LIMIT']}}</label>\r\n <div class=\"col-12 d-flex align-items-center gap-2 position-relative\">\r\n <input formControlName=\"maxCharacterCount\"\r\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.NOT_SET']\"\r\n (input)=\"allowOnlyNumbers($event)\"\r\n (blur)=\"questionsFormGroup.get('maxCharacterCount')?.markAsTouched()\"\r\n class=\"col-12 assessment-input-padding assessment-border-radius-two outline-0 assessment-input-border-one assessment-text-medium-13 assessment-bg-grey-one\">\r\n <span\r\n class=\"assessment-text-regular-12 assessment-text-grey-seven position-absolute end-0 me-3\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.CHARACTERS']}}</span>\r\n </div>\r\n <mat-error\r\n *ngIf=\"questionsFormGroup.get('maxCharacterCount')?.errors && questionsFormGroup.get('maxCharacterCount')?.touched\"\r\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</mat-error>\r\n </div>\r\n </div>\r\n <div class=\"row mx-0 col-12 pb-4\" *ngIf=\"showField('maxFileSize') || showField('maxNoOfFiles')\">\r\n <div class=\"col-6 ps-0\" *ngIf=\"showField('maxFileSize')\">\r\n <label\r\n class=\"mb-1 assessment-text-medium-13 assessment-text-grey-ten\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.MAX_FILE_SIZE']}}</label>\r\n <div class=\"col-12 d-flex align-items-center gap-2 position-relative\">\r\n <input formControlName=\"maxFileSize\"\r\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.NOT_SET']\"\r\n (input)=\"allowOnlyNumbers($event)\"\r\n (blur)=\"questionsFormGroup.get('maxFileSize')?.markAsTouched()\"\r\n class=\"col-12 assessment-input-padding assessment-border-radius-two outline-0 assessment-input-border-one assessment-text-medium-13 assessment-bg-grey-one\">\r\n <span\r\n class=\"assessment-text-regular-12 assessment-text-grey-seven position-absolute end-0 me-3\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.MB']}}</span>\r\n </div>\r\n <mat-error\r\n *ngIf=\"questionsFormGroup.get('maxFileSize')?.errors && questionsFormGroup.get('maxFileSize')?.touched\"\r\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</mat-error>\r\n </div>\r\n <div class=\"col-6 pe-0\" *ngIf=\"showField('maxNoOfFiles')\">\r\n <label\r\n class=\"mb-1 assessment-text-medium-13 assessment-text-grey-ten\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.MAX_NO_OF_FILES']}}</label>\r\n <div class=\"col-12 d-flex align-items-center gap-2 position-relative\">\r\n <input formControlName=\"maxNoOfFiles\"\r\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.NOT_SET']\"\r\n (input)=\"allowOnlyNumbers($event)\"\r\n (blur)=\"questionsFormGroup.get('maxNoOfFiles')?.markAsTouched()\"\r\n class=\"col-12 assessment-input-padding assessment-border-radius-two outline-0 assessment-input-border-one assessment-text-medium-13 assessment-bg-grey-one\">\r\n <span\r\n class=\"assessment-text-regular-12 assessment-text-grey-seven position-absolute end-0 me-3\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.FILES']}}</span>\r\n </div>\r\n <mat-error\r\n *ngIf=\"questionsFormGroup.get('maxNoOfFiles')?.errors && questionsFormGroup.get('maxNoOfFiles')?.touched\"\r\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</mat-error>\r\n </div>\r\n </div>\r\n <div class=\"pb-4 col-12\" *ngIf=\"showField('customRegex')\">\r\n <label\r\n class=\"mb-1 assessment-text-medium-13 assessment-text-grey-ten\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.CUSTOM_REGEX']}}</label>\r\n <div class=\"col-12 d-flex align-items-center gap-2 position-relative\">\r\n <input formControlName=\"customRegex\"\r\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.ENTER_CUSTOM_REGEX']\"\r\n (blur)=\"questionsFormGroup.get('customRegex')?.markAsTouched()\"\r\n class=\"col-12 assessment-input-padding assessment-border-radius-two outline-0 assessment-input-border-one assessment-text-medium-13 assessment-bg-grey-one\">\r\n </div>\r\n <mat-error\r\n *ngIf=\"questionsFormGroup.get('customRegex')?.errors && questionsFormGroup.get('customRegex')?.touched\"\r\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</mat-error>\r\n </div>\r\n <div class=\"pb-4 col-12\" *ngIf=\"showField('totalMarks') && !isChild && questionStack.length == 0\">\r\n <label\r\n class=\"mb-1 assessment-text-medium-13 assessment-text-grey-ten\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.TOTAL_MARKS']}}</label>\r\n <div class=\"col-12 d-flex align-items-center gap-2 position-relative\">\r\n <input formControlName=\"totalMarks\" placeholder=\"0\" (input)=\"allowOnlyNumbers($event)\"\r\n (blur)=\"questionsFormGroup.get('totalMarks')?.markAsTouched()\"\r\n class=\"col-12 assessment-input-padding assessment-border-radius-two outline-0 assessment-input-border-one assessment-text-medium-13 assessment-bg-grey-one\">\r\n <span\r\n class=\"assessment-text-regular-12 assessment-text-grey-seven position-absolute end-0 me-3\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.MARKS']}}</span>\r\n </div>\r\n <mat-error\r\n *ngIf=\"questionsFormGroup.get('totalMarks')?.errors && questionsFormGroup.get('totalMarks')?.touched\"\r\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</mat-error>\r\n </div>\r\n\r\n <div class=\"row mx-0 col-12 pb-4\"\r\n *ngIf=\"showField('minimumNumberOfOption') || showField('maximumNumberOfOption')\">\r\n <div class=\"col-6 ps-0\" *ngIf=\"showField('minimumNumberOfOption')\">\r\n <label\r\n class=\"mb-1 assessment-text-medium-13 assessment-text-grey-ten\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.MIN_OPTION_SELECT_LIMIT']}}</label>\r\n <div class=\"col-12 d-flex align-items-center gap-2 position-relative\">\r\n <input formControlName=\"minimumNumberOfOption\" placeholder=\"0\"\r\n (input)=\"allowOnlyNumbers($event)\"\r\n (blur)=\"questionsFormGroup.get('minimumNumberOfOption')?.markAsTouched()\"\r\n class=\"col-12 assessment-input-padding assessment-border-radius-two outline-0 assessment-input-border-one assessment-text-medium-13 assessment-bg-grey-one\">\r\n <span\r\n class=\"assessment-text-regular-12 assessment-text-grey-seven position-absolute end-0 me-3\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.OPTIONS']}}</span>\r\n </div>\r\n <mat-error\r\n *ngIf=\"questionsFormGroup.get('minimumNumberOfOption')?.errors && questionsFormGroup.get('minimumNumberOfOption')?.touched\"\r\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</mat-error>\r\n </div>\r\n <div class=\"col-6 pe-0\" *ngIf=\"showField('maximumNumberOfOption')\">\r\n <label\r\n class=\"mb-1 assessment-text-medium-13 assessment-text-grey-ten\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.MAX_OPTION_SELECT_LIMIT']}}</label>\r\n <div class=\"col-12 d-flex align-items-center gap-2 position-relative\">\r\n <input formControlName=\"maximumNumberOfOption\" [placeholder]=\"options.length || 0\"\r\n (input)=\"allowOnlyNumbers($event)\"\r\n (blur)=\"questionsFormGroup.get('maximumNumberOfOption')?.markAsTouched()\"\r\n class=\"col-12 assessment-input-padding assessment-border-radius-two outline-0 assessment-input-border-one assessment-text-medium-13 assessment-bg-grey-one\">\r\n <span\r\n class=\"assessment-text-regular-12 assessment-text-grey-seven position-absolute end-0 me-3\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.OPTIONS']}}</span>\r\n </div>\r\n <mat-error\r\n *ngIf=\"questionsFormGroup.get('maximumNumberOfOption')?.errors && questionsFormGroup.get('maximumNumberOfOption')?.touched\"\r\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</mat-error>\r\n </div>\r\n </div>\r\n\r\n <div class=\"pb-4 col-12 mt-md-3\" *ngIf=\"showField('options')\">\r\n <div formArrayName=\"options\">\r\n <ng-container *ngFor=\"let option of options.controls; let i = index\">\r\n <div [formGroupName]=\"i\" *ngIf=\"option.get('isActive')?.value !== false\"\r\n class=\"py-md-0 py-3 border-bottom border-md-0 col-12 d-flex flex-wrap flex-md-nowrap align-items-md-start align-items-center justify-content-between gap-md-4 gap-3\">\r\n\r\n <div class=\"col-12 col-md flex-md-grow-1 d-flex flex-column justify-content-center mt-md-3\"\r\n [class.pt-md-3]=\"i == 0\">\r\n <div class=\"col-12 d-flex align-items-center justify-content-between gap-3\">\r\n <div class=\"flex-grow-1 d-flex align-items-center gap-2\">\r\n <div class=\"rounded-circle p-2 border-grey-ten-2 mt-1\"></div>\r\n <input formControlName=\"optionLabel\"\r\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.ENTER_OPTION']\"\r\n class=\"flex-grow-1 assessment-text-medium-13 border-0 outline-0 bg-transparent input-focus py-1\">\r\n </div>\r\n <img class=\"cursor-pointer d-md-none\"\r\n [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.CLOSE']\" (click)=\"removeOption(i)\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/close.svg')\" />\r\n </div>\r\n <mat-error\r\n *ngIf=\"option.get('optionLabel')?.invalid && option.get('optionLabel')?.touched\"\r\n class=\"assessment-text-regular-12 mt-1\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</mat-error>\r\n </div>\r\n\r\n <div *ngIf=\"showField('options', 'showWeightage') && !isChild && questionStack.length == 0\"\r\n class=\"col-auto\">\r\n <p class=\"assessment-text-medium-12 assessment-text-grey-six mb-2 mb-md-3\"\r\n [ngClass]=\"{'hidden-label': i > 0}\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.WEIGHTAGE']}}\r\n </p>\r\n <input (input)=\"allowOnlyNumbers($event)\" formControlName=\"weight\"\r\n class=\"px-3 py-md-1 py-2 assessment-border-radius-two assessment-input-border-one outline-0 assessment-text-regular-12 assessment-marks-input assessment-bg-grey-one\"\r\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.LABEL.WEIGHTAGE']\">\r\n </div>\r\n\r\n <div *ngIf=\"showField('options', 'showRemarks')\" class=\"col-auto\">\r\n <p class=\"assessment-text-medium-12 assessment-text-grey-six mb-2 mb-md-3 pb-md-1\"\r\n [ngClass]=\"{'hidden-label': i > 0}\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.REMARKS']}}\r\n </p>\r\n <div class=\"form-check form-switch\">\r\n <input type=\"checkbox\" class=\"form-check-input cursor-pointer\"\r\n name=\"remarksRequired\" formControlName=\"remarksRequired\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"d-none d-md-block pt-3\" [class.custom-margin]=\"i == 0\">\r\n <img class=\"cursor-pointer\" [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.CLOSE']\"\r\n (click)=\"removeOption(i)\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/close.svg')\" />\r\n </div>\r\n\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <button type=\"button\" (click)=\"addOption()\"\r\n class=\"assessment-border-radius-two d-flex align-items-center gap-2 bg-transparent assessment-text-primary-one assessment-text-medium-12 border-0 assessment-zoom-animation mt-4\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.PLUS_PRIMARY']\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/plus-primary.svg')\" />\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.ADD_OPTION']}}\r\n </button>\r\n <mat-error\r\n *ngIf=\"questionsFormGroup.get('options')?.errors && questionsFormGroup.get('options')?.touched\"\r\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</mat-error>\r\n </div>\r\n <div class=\"py-4 col-12 border-top\"\r\n *ngIf=\"showField('childQuestions') && questionStack.length == 0 && !isChild\">\r\n <div class=\"d-flex align-items-center justify-content-between mb-2\">\r\n <label\r\n class=\"assessment-text-medium-16 assessment-text-grey-ten\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.CHILD_QUESTIONS']}}</label>\r\n <img matTooltip=\"{{labelConfig['COMMONS_ASSESSMENT.LABEL.CHILD_QUESTIONS_INFO']}}\"\r\n matTooltipPosition=\"above\" matTooltipClass=\"assessment-tooltip\"\r\n [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.INFO']\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/info.svg')\" />\r\n </div>\r\n\r\n <div *ngFor=\"let group of childQuestionGroups; let groupIndex = index\"\r\n class=\"col-12 p-3 my-3 assessment-bg-grey-one assessment-border-radius-three assessment-input-border-one\">\r\n <div class=\"col-12 mb-3\" *ngIf=\"options.length > 0\">\r\n <label\r\n class=\"mb-1 assessment-text-medium-13 assessment-text-grey-ten\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.ASSIGNED_OPTION']}}</label>\r\n <mat-select [value]=\"group.optionId\"\r\n (selectionChange)=\"onGroupOptionChange(group.id, $event.value)\"\r\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.SELECT_OPTION_TO_LINK']\"\r\n class=\"col-12 assessment-mat-select assessment-border-radius-two assessment-bg-white outline-0 assessment-input-border-one assessment-text-medium-13\">\r\n <mat-option class=\"assessment-text-medium-13\" [value]=\"null\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.NONE']}}\r\n </mat-option>\r\n <ng-container *ngFor=\"let opt of options.controls; let opIndex = index\">\r\n <mat-option *ngIf=\"opt.get('isActive')?.value !== false\" class=\"assessment-text-medium-13\"\r\n [value]=\"getOptionId(opt)\">\r\n {{ opt.get('optionLabel')?.value || ('Option ' + (opIndex + 1)) }}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </div>\r\n\r\n <ng-container *ngFor=\"let questionId of group.questionIds; let i = index\">\r\n <ng-container *ngIf=\"getChildQuestionById(questionId) as child\">\r\n <div class=\"d-flex align-items-center justify-content-between mb-1 mt-3\">\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <p class=\"mb-0 assessment-text-medium-14\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.QUESTION']}} {{i + 1}}</p>\r\n </div>\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.DELETE']\"\r\n class=\"action-icon cursor-pointer\"\r\n (click)=\"deleteChildQuestionById(child.id, $event)\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/delete.svg')\" />\r\n </div>\r\n </div>\r\n <div [innerHTML]=\"child?.questionText?.[0]?.text\"\r\n (click)=\"addEditChildQuestion(child, getChildQuestionIndex(child.id))\"\r\n class=\"col-12 assessment-button-padding assessment-border-radius-two assessment-bg-white assessment-input-border-one assessment-text-medium-12 cursor-pointer\">\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <button (click)=\"addEditChildQuestion(undefined, undefined, group.id)\"\r\n class=\"assessment-zoom-animation border-0 d-flex align-items-center justify-content-center gap-2 assessment-text-primary-one bg-transparent assessment-text-semibold-12 outline-0 mt-3\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.PLUS_PRIMARY']\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/plus-primary.svg')\" />\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.ADD_MORE']}}\r\n </button>\r\n </div>\r\n\r\n <button (click)=\"addEditChildQuestion()\"\r\n class=\"assessment-zoom-animation assessment-button-padding d-flex align-items-center justify-content-center gap-3 assessment-text-primary-one assessment-bg-palette-EDF3FD assessment-text-semibold-12 outline-0 col-12 assessment-border-radius-two mt-3 border-ADC9F6\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.PLUS_PRIMARY']\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/plus-primary.svg')\" />\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.ADD_CHILD_QUESTION']}}\r\n </button>\r\n </div>\r\n <div class=\"py-4 col-12 border-top\" *ngIf=\"showField('hintText')\">\r\n <label\r\n class=\"mb-2 assessment-text-medium-16 assessment-text-grey-ten\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.ADD_HINT']}}</label>\r\n <app-text-editor [preText]=\"questionsFormGroup?.get('hintText')?.value\"\r\n (inputChange)=\"questionsFormGroup?.get('hintText')?.patchValue($event)\"\r\n [placeholder]=\"labelConfig['COMMONS_ASSESSMENT.PLACEHOLDER.ENTER_HINT']\"\r\n class=\"assessment-custom-angular-editor-white assessment-text-regular-13 assessment-text-grey-ten\"\r\n [height]=\"'8rem'\">\r\n </app-text-editor>\r\n <mat-error\r\n *ngIf=\"questionsFormGroup.get('hintText')?.errors && questionsFormGroup.get('hintText')?.touched\"\r\n class=\"assessment-text-regular-12 assessment-text-danger\">{{labelConfig['COMMONS_ASSESSMENT.ERROR.REQUIRED']}}</mat-error>\r\n </div>\r\n <div class=\"py-4 col-12 border-top\">\r\n <label class=\"mb-2 assessment-text-semibold-18 assessment-text-grey-ten col-12\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.FIELDS_SETTINGS']}}</label>\r\n <!-- <div class=\"my-3 d-flex align-items-center justify-content-between gap-2\">\r\n <div>\r\n <p class=\"mb-0 assessment-text-medium-13 assessment-text-grey-ten\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.SHOW_THIS_FIELD']}}</p>\r\n <p class=\"mb-0 assessment-text-regular-11 assessment-text-grey-eight\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.SHOW_THIS_FIELD_DESC']}}</p>\r\n </div>\r\n <div class=\"form-check form-switch\">\r\n <input type=\"checkbox\" class=\"form-check-input cursor-pointer\" name=\"visibility\"\r\n formControlName=\"visibility\">\r\n </div>\r\n </div> -->\r\n <div class=\"my-3 d-flex align-items-center justify-content-between gap-2\">\r\n <div>\r\n <p class=\"mb-0 assessment-text-medium-13 assessment-text-grey-ten\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.MANDATORY']}}</p>\r\n <p class=\"mb-0 assessment-text-regular-11 assessment-text-grey-eight\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.MANDATORY_DESC']}}</p>\r\n </div>\r\n <div class=\"form-check form-switch\">\r\n <input type=\"checkbox\" class=\"form-check-input cursor-pointer\" name=\"isMandatory\"\r\n formControlName=\"isMandatory\">\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { AfterViewInit, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\r\nimport { AssessmentQuestion } from '../../../../shared/interfaces/question.interface';\r\nimport { SectionQuestion } from '../../../../shared/interfaces/question-paper.interface';\r\n\r\n@Component({\r\n selector: 'lib-question-details',\r\n templateUrl: './question-details.component.html',\r\n styleUrls: ['./question-details.component.scss']\r\n})\r\nexport class QuestionDetailsComponent implements AfterViewInit {\r\n @Input() sectionQuestion!: SectionQuestion;\r\n @Input() question!: AssessmentQuestion;\r\n @Input() questionBank!: Record<number, AssessmentQuestion>;\r\n @Input() labelConfig: { [key: string]: string } = {};\r\n @Input() imageConfig: { [key: string]: string } = {};\r\n\r\n @Output() editQuestion = new EventEmitter<{ questionId: any, isChildQuestion: boolean }>();\r\n @Output() duplicateQuestion = new EventEmitter<SectionQuestion>();\r\n @Output() deleteParentQuestion = new EventEmitter<SectionQuestion>();\r\n @Output() deleteChildQuestion = new EventEmitter<{ option: any, childQuestionId: number }>();\r\n\r\n expanded = false;\r\n showToggle = false;\r\n @ViewChild('questionText') questionText!: ElementRef;\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => this.checkOverflow());\r\n }\r\n\r\n toggleText() {\r\n this.expanded = !this.expanded;\r\n\r\n if (!this.expanded) {\r\n setTimeout(() => this.checkOverflow());\r\n }\r\n }\r\n\r\n checkOverflow() {\r\n const el = this.questionText.nativeElement;\r\n this.showToggle = el.scrollHeight > el.clientHeight;\r\n }\r\n\r\n capitalizeFirst(text: string | undefined): string {\r\n if (!text) return '';\r\n return text.toLowerCase().split(' ').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join(' ');\r\n }\r\n\r\n imageErrorHandler(event: any, filePath: string) {\r\n event.target.src = filePath;\r\n }\r\n\r\n childQuestionPresent(question: AssessmentQuestion) {\r\n return question?.defaultOptionsList?.some(\r\n option => option?.childQuestionList && option.childQuestionList.length > 0\r\n );\r\n }\r\n}\r\n","<div class=\"d-flex align-items-center justify-content-between mb-3\">\r\n <div class=\"d-flex flex-wrap gap-2\">\r\n <span\r\n class=\"assessment-border-radius-two p-2 assessment-bg-palette-FEF9F1 assessment-text-medium-12 border-palette-F9DAA6\">\r\n {{capitalizeFirst(question?.questionType?.labels?.[0]?.text)}}\r\n </span>\r\n <span *ngIf=\"question?.weight\"\r\n class=\"assessment-border-radius-two p-2 assessment-bg-palette-EDF3FD assessment-text-medium-12 border-palette-C8DAF9\">\r\n {{question?.weight}} {{labelConfig['COMMONS_ASSESSMENT.LABEL.MARKS']}}\r\n </span>\r\n <span *ngIf=\"question?.isMandatory\"\r\n class=\"assessment-border-radius-two p-2 assessment-bg-palette-E8F7F0 assessment-text-medium-12 border-palette-B7E7CF\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.MANDATORY']}}\r\n </span>\r\n </div>\r\n <button [matMenuTriggerFor]=\"questionsMenu\" (click)=\"$event.stopPropagation()\" class=\"border-0 bg-transparent py-2\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.ACTION_DOTS']\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/action-dots.svg')\" />\r\n </button>\r\n <mat-menu #questionsMenu=\"matMenu\" class=\"mat-menu assessment-border-radius-two assessment-border-grey-four-1\">\r\n <button (click)=\"duplicateQuestion.emit(sectionQuestion)\" mat-menu-item class=\"py-2 assessment-text-semibold-12\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.DUPLICATE']}}\r\n </button>\r\n <button (click)=\"deleteParentQuestion.emit(sectionQuestion)\" mat-menu-item\r\n class=\"py-2 assessment-text-semibold-12 assessment-text-danger\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.DELETE']}}\r\n </button>\r\n </mat-menu>\r\n</div>\r\n<div class=\"col-12\">\r\n <div #questionText class=\"assessment-text-medium-15 question-text cursor-pointer\" [class.collapsed]=\"!expanded\"\r\n (click)=\"$event.stopPropagation(); editQuestion.emit({questionId: sectionQuestion?.questionId, isChildQuestion: false})\"\r\n [innerHTML]=\"question?.questionText?.[0]?.text\">\r\n </div>\r\n\r\n <span *ngIf=\"showToggle\" class=\"assessment-text-semibold-15 assessment-text-primary-one cursor-pointer\"\r\n (click)=\"$event.stopPropagation(); expanded = !expanded\">\r\n {{ labelConfig[expanded ? 'COMMONS_ASSESSMENT.LABEL.READ_LESS' : 'COMMONS_ASSESSMENT.LABEL.READ_MORE'] }}\r\n </span>\r\n</div>\r\n\r\n<!-- Child Questions -->\r\n<ng-container *ngIf=\"question?.defaultOptionsList?.length\">\r\n <div class=\"mt-4 col-12\">\r\n <div *ngFor=\"let option of question?.defaultOptionsList | orderBy\" class=\"my-3 d-flex align-items-start gap-2\">\r\n <div class=\"rounded-circle custom-padding border-grey-ten-2\"></div>\r\n <span class=\"assessment-text-medium-13\">{{option.options?.optionName?.[0]?.text}}</span>\r\n </div>\r\n </div>\r\n\r\n <mat-accordion *ngIf=\"childQuestionPresent(question)\">\r\n <mat-expansion-panel (click)=\"$event.stopPropagation()\" class=\"bg-transparent mt-4 col-12\">\r\n <mat-expansion-panel-header class=\"p-0 bg-transparent pe-1\">\r\n <div class=\"d-flex align-items-center gap-2 flex-grow-1 pe-2\">\r\n <span class=\"assessment-text-semibold-12 assessment-text-grey-eight\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.CHILD_QUESTIONS']}}</span>\r\n <div class=\"flex-grow-1 border-bottom\"></div>\r\n </div>\r\n </mat-expansion-panel-header>\r\n <ng-container *ngFor=\"let option of question?.defaultOptionsList | orderBy\">\r\n <div *ngIf=\"option.childQuestionList?.length\" class=\"mt-3\">\r\n <p class=\"assessment-text-primary-one assessment-text-semibold-14 mb-0\">\r\n {{option.options?.optionName?.[0]?.text}}</p>\r\n <div class=\"position-relative overflow-hidden\">\r\n <div *ngFor=\"let childQuestionId of option.childQuestionList\"\r\n class=\"assessment-child-node position-relative mt-3 ms-md-4 ms-3\">\r\n <div *ngIf=\"questionBank[childQuestionId] as childQuestion\"\r\n class=\"d-flex align-items-start justify-content-between gap-3 ps-1\">\r\n <div (click)=\"$event.stopPropagation(); editQuestion.emit({questionId: childQuestionId, isChildQuestion: true})\"\r\n [innerHTML]=\"childQuestion?.questionText?.[0]?.text\"\r\n class=\"flex-grow-1 assessment-text-regular-13 question-text collapsed cursor-pointer\">\r\n </div>\r\n <span\r\n class=\"assessment-text-medium-12 assessment-text-grey-eight d-md-inline d-none text-nowrap\">\r\n {{capitalizeFirst(childQuestion?.questionType?.labels?.[0]?.text)}}\r\n </span>\r\n <img (click)=\"$event.stopPropagation(); deleteChildQuestion.emit({option: option, childQuestionId: childQuestionId})\"\r\n [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.DELETE']\"\r\n class=\"action-icon d-md-inline d-none cursor-pointer\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n</ng-container>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { forkJoin } from 'rxjs';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { AddEditSectionIntroductionComponent } from './components/add-edit-section-introduction/add-edit-section-introduction.component';\r\nimport { AssessmentBuilderComponent } from './components/assessment-builder/assessment-builder.component';\r\nimport { QuestionType, Assessment } from '../../shared/interfaces/assessment.interface';\r\nimport { AssessmentQuestionPaper, SectionQuestion, QuestionPaperSection } from '../../shared/interfaces/question-paper.interface';\r\nimport { AssessmentQuestion } from '../../shared/interfaces/question.interface';\r\nimport { AssessmentBuilderService } from './services/assessment-builder.service';\r\nimport { AssessmentMakerService } from './services/assessment-maker.service';\r\n\r\n@Component({\r\n selector: 'lib-assessment-maker',\r\n templateUrl: './assessment-maker.component.html',\r\n styleUrls: ['./assessment-maker.component.scss']\r\n})\r\n\r\nexport class AssessmentMakerComponent implements OnInit {\r\n @Input() labelConfig: { [key: string]: string } = {};\r\n @Input() imageConfig: { [key: string]: string } = {};\r\n @Input() questionTypes: QuestionType[] = [];\r\n @Input() showFooter: boolean = false;\r\n @Input() customRules?: any;\r\n @Input() assessmentId: number = 0;\r\n @Input() assessmentInstanceId: number = 0;\r\n @Input() defaultAssessmentDTO: Assessment = {};\r\n\r\n @Output() assessmentIdChange = new EventEmitter<number>();\r\n @Output() assessmentInstanceIdChange = new EventEmitter<number>();\r\n @Output() snackbarMessage = new EventEmitter<{ message: string, type: 'success' | 'error' | 'info' }>();\r\n\r\n showLoader: boolean = false;\r\n questionBank: Record<number, AssessmentQuestion> = {};\r\n assessmentQuestionPaperData: AssessmentQuestionPaper = { id: 0, questionPaperSectionList: [] };\r\n configsLoaded: boolean = false;\r\n rules: any;\r\n isSubmitting: boolean = false;\r\n\r\n constructor(\r\n private assessmentMakerService: AssessmentMakerService,\r\n private assessmentBuilderService: AssessmentBuilderService,\r\n private dialog: MatDialog\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.assessmentBuilderService.setDefaultAssessmentDTO(this.defaultAssessmentDTO);\r\n this.getConfigsFromJSON();\r\n\r\n if (this.assessmentId) {\r\n this.showLoader = true;\r\n this.loadAssessmentData();\r\n }\r\n }\r\n\r\n getConfigsFromJSON() {\r\n forkJoin({\r\n labelConfig: this.assessmentMakerService.getConfigJSON('json/labelConfig'),\r\n imageConfig: this.assessmentMakerService.getConfigJSON('json/imageConfig'),\r\n rules: this.assessmentMakerService.getConfigJSON('json/question-builder-rules'),\r\n ...(!this.questionTypes?.length && {\r\n questionTypes: this.assessmentMakerService.getConfigJSON('json/questionTypes')\r\n })\r\n }).subscribe((res: any) => {\r\n this.labelConfig = Object.assign({}, res?.labelConfig, this.labelConfig);\r\n this.imageConfig = Object.assign({}, res?.imageConfig, this.imageConfig);\r\n if (res?.questionTypes) {\r\n this.questionTypes = res?.questionTypes;\r\n }\r\n // Merge customRules per questionType over default rules\r\n this.rules = { ...res?.rules };\r\n if (this.customRules) {\r\n Object.keys(this.customRules).forEach(qType => {\r\n if (!this.rules[qType]) {\r\n this.rules[qType] = { ...this.customRules[qType] };\r\n } else {\r\n this.rules[qType] = { ...this.rules[qType], ...this.customRules[qType] };\r\n }\r\n });\r\n }\r\n\r\n this.configsLoaded = true;\r\n })\r\n }\r\n\r\n loadAssessmentData() {\r\n this.assessmentMakerService.getAssessmentContext(this.assessmentId).subscribe({\r\n next: (res: any) => {\r\n this.questionBank = {\r\n ...this.questionBank,\r\n ...(res?.questionDTOMap || {})\r\n };\r\n this.updateAssessmentQuestionPaperData(res?.assessmentQuestionPaperDTO);\r\n this.showLoader = false;\r\n },\r\n error: (error: any) => {\r\n console.error(error);\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.ERROR_DEFAULT'], type: 'error' });\r\n throw { error, method: 'GET', payload: this.assessmentId }\r\n }\r\n })\r\n }\r\n\r\n generateQuestionBank() {\r\n let childQuestionIds: number[] = [];\r\n\r\n this.assessmentQuestionPaperData?.questionPaperSectionList?.forEach((section: any) => {\r\n section?.sectionQuestionsList?.forEach((q: any) => {\r\n if (this.questionBank?.[q?.questionId]?.defaultOptionsList?.length) {\r\n this.questionBank?.[q?.questionId]?.defaultOptionsList?.forEach((option: any) => {\r\n if (option?.childQuestionList?.length) {\r\n option?.childQuestionList?.forEach((ccq: any) => {\r\n childQuestionIds.push(ccq);\r\n });\r\n }\r\n });\r\n }\r\n });\r\n });\r\n\r\n // Remove duplicates and filter out ones we already have in the bank\r\n childQuestionIds = [...new Set(childQuestionIds)].filter(id => !this.questionBank[id]);\r\n\r\n if (childQuestionIds?.length > 0) {\r\n const params = { questionIds: childQuestionIds };\r\n this.assessmentMakerService.getQuestionsByIds(params).subscribe({\r\n next: (res: any) => {\r\n res?.forEach((question: any) => {\r\n this.questionBank[question.id] = question;\r\n });\r\n },\r\n error: (error: any) => {\r\n console.error(error);\r\n throw { error, method: 'GET', payload: params }\r\n }\r\n })\r\n }\r\n }\r\n\r\n imageErrorHandler(event: any, filePath: string) {\r\n event.target.src = filePath;\r\n }\r\n\r\n focusSectionInput(sectionIndex: number, event: Event) {\r\n event.stopPropagation();\r\n const input = document.getElementById(`sectionNameInput_${sectionIndex}`) as HTMLInputElement;\r\n if (input) {\r\n input.focus();\r\n }\r\n }\r\n\r\n dropSection(event: CdkDragDrop<any[]>) {\r\n if (this.assessmentQuestionPaperData.questionPaperSectionList) {\r\n moveItemInArray(\r\n this.assessmentQuestionPaperData.questionPaperSectionList,\r\n event.previousIndex,\r\n event.currentIndex\r\n );\r\n }\r\n }\r\n\r\n dropQuestion(event: CdkDragDrop<any[]>) {\r\n moveItemInArray(\r\n event.container.data,\r\n event.previousIndex,\r\n event.currentIndex\r\n );\r\n }\r\n\r\n addInstruction(section: any) {\r\n const dialogRef = this.dialog.open(AddEditSectionIntroductionComponent, {\r\n autoFocus: false,\r\n maxWidth: '95%',\r\n width: '40rem',\r\n maxHeight: '100dvh',\r\n panelClass: ['assessment-dialog'],\r\n data: {\r\n imageConfig: this.imageConfig,\r\n labelConfig: this.labelConfig,\r\n sectionDetails: section\r\n },\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result) => {\r\n if (result?.update) {\r\n if (!section.qpsDesc) section.qpsDesc = [];\r\n if (!section.qpsDesc[0]) section.qpsDesc[0] = { id: 0, language: { code: 'ENG' }, text: '' };\r\n section.qpsDesc[0].text = result?.description;\r\n section.mediaUrl = result?.mediaUrl || null;\r\n this.patchAssessmentAndQuestionPaper(this.labelConfig['COMMONS_ASSESSMENT.TOAST.SECTION_INSTRUCTIONS_UPDATED_SUCCESS']);\r\n }\r\n });\r\n }\r\n\r\n deleteChildQuestion(option: any, childIdToRemove: number | any) {\r\n if (option.childQuestionList) {\r\n const idToRemove = typeof childIdToRemove === 'object' ? childIdToRemove?.id : childIdToRemove;\r\n option.childQuestionList = option.childQuestionList.filter((ccq: any) => {\r\n const id = typeof ccq === 'object' ? ccq?.id : ccq;\r\n return id !== idToRemove;\r\n });\r\n }\r\n }\r\n\r\n deleteParentQuestion(sectionQuestion: SectionQuestion) {\r\n sectionQuestion.isActive = false;\r\n this.patchAssessmentAndQuestionPaper(this.labelConfig['COMMONS_ASSESSMENT.TOAST.QUESTION_DELETED_SUCCESS']);\r\n }\r\n\r\n deleteSection(section: QuestionPaperSection) {\r\n section.isActive = false;\r\n this.patchAssessmentAndQuestionPaper(this.labelConfig['COMMONS_ASSESSMENT.TOAST.SECTION_DELETED_SUCCESS']);\r\n }\r\n\r\n createEditQuestion(sectionDetails?: any, sectionQuestionId?: number, isChild?: boolean): void {\r\n const questionDetails = this.getQuestionFromBank(sectionQuestionId);\r\n const dialogRef = this.dialog.open(AssessmentBuilderComponent, {\r\n autoFocus: false,\r\n position: { right: '0' },\r\n maxWidth: '100%',\r\n width: '55rem',\r\n height: '100vh',\r\n panelClass: ['assessment-dialog', 'assessment-dialog-slider-animation'],\r\n hasBackdrop: true,\r\n data: {\r\n labelConfig: this.labelConfig,\r\n imageConfig: this.imageConfig,\r\n questionTypes: this.questionTypes,\r\n rules: this.rules,\r\n questionBank: this.questionBank,\r\n isChild: isChild,\r\n questionDetails,\r\n sectionDetails,\r\n assessmentQuestionPaperData: this.assessmentQuestionPaperData,\r\n assessmentId: this.assessmentId,\r\n snackbarMessageEmitter: this.snackbarMessage\r\n },\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((res: any) => {\r\n if (res?.success) {\r\n if (res?.assessmentId) {\r\n if (!this.assessmentId) {\r\n this.assessmentId = res.assessmentId;\r\n this.assessmentIdChange.emit(this.assessmentId);\r\n }\r\n this.questionBank = {\r\n ...this.questionBank,\r\n ...(res?.questionMap || {})\r\n };\r\n this.updateAssessmentQuestionPaperData(res.questionPaper);\r\n } else {\r\n this.patchAssessmentAndQuestionPaper();\r\n }\r\n }\r\n });\r\n }\r\n\r\n duplicateSection(sectionId: number) {\r\n if (!this.assessmentQuestionPaperData?.id) return;\r\n this.assessmentMakerService.duplicateSection(this.assessmentQuestionPaperData.id, sectionId).subscribe({\r\n next: (res: any) => {\r\n this.questionBank = {\r\n ...this.questionBank,\r\n ...(res?.questionMap || {})\r\n };\r\n this.updateAssessmentQuestionPaperData(res?.questionPaper);\r\n this.generateQuestionBank();\r\n this.patchAssessmentAndQuestionPaper();\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.SECTION_DUPLICATED_SUCCESS'], type: 'success' });\r\n },\r\n error: (error: any) => {\r\n this.showLoader = false;\r\n console.error(error);\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.ERROR_DEFAULT'], type: 'error' });\r\n throw { error, method: 'PATCH' }\r\n }\r\n });\r\n }\r\n\r\n duplicateQuestion(section: QuestionPaperSection, sectionQuestion: SectionQuestion) {\r\n if (!sectionQuestion.id) return;\r\n this.assessmentMakerService.duplicateQuestion(section.id, sectionQuestion.id).subscribe({\r\n next: (res: any) => {\r\n this.questionBank = {\r\n ...this.questionBank,\r\n ...(res?.questionMap || {})\r\n };\r\n this.updateAssessmentQuestionPaperData(res?.questionPaper);\r\n this.generateQuestionBank();\r\n this.patchAssessmentAndQuestionPaper();\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.QUESTION_DUPLICATED_SUCCESS'], type: 'success' });\r\n },\r\n error: (error: any) => {\r\n this.showLoader = false;\r\n console.error(error);\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.ERROR_DEFAULT'], type: 'error' });\r\n throw { error, method: 'PATCH' }\r\n }\r\n });\r\n }\r\n\r\n patchAssessmentAndQuestionPaper(successMessage?: string) {\r\n const payload = {\r\n questionPaper: this.assessmentBuilderService.generateQuestionPaperDTO(this.assessmentQuestionPaperData, this.questionBank),\r\n assessment: this.assessmentBuilderService.generateAssessmentDTO(this.assessmentId, this.assessmentQuestionPaperData)\r\n }\r\n this.assessmentMakerService.patchAssessmentAndQuestionPaper(payload).subscribe({\r\n next: (res: any) => {\r\n this.updateAssessmentQuestionPaperData(res?.questionPaper);\r\n this.generateQuestionBank();\r\n if (successMessage) {\r\n this.snackbarMessage.emit({ message: successMessage, type: 'success' });\r\n }\r\n },\r\n error: error => {\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.ERROR_DEFAULT'], type: 'error' });\r\n throw { error, method: 'PATCH', payload }\r\n }\r\n })\r\n }\r\n\r\n finalSubmit() {\r\n this.isSubmitting = true;\r\n const payload = {\r\n questionPaper: this.assessmentBuilderService.generateQuestionPaperDTO(this.assessmentQuestionPaperData, this.questionBank),\r\n assessment: this.assessmentBuilderService.generateAssessmentDTO(this.assessmentId, this.assessmentQuestionPaperData)\r\n }\r\n if (!this.assessmentId) {\r\n // returns null or 0 as assessment is not created yet. Handle the response in consumer app\r\n this.assessmentInstanceIdChange.emit(this.assessmentInstanceId);\r\n this.isSubmitting = false;\r\n return;\r\n }\r\n this.assessmentMakerService.patchAssessmentAndQuestionPaper(payload).subscribe({\r\n next: (res: any) => {\r\n this.updateAssessmentQuestionPaperData(res?.questionPaper);\r\n if (!this.assessmentInstanceId) {\r\n this.createAssessmentInstance();\r\n } else {\r\n this.assessmentInstanceIdChange.emit(this.assessmentInstanceId);\r\n this.isSubmitting = false;\r\n }\r\n },\r\n error: error => {\r\n this.isSubmitting = false;\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.ERROR_DEFAULT'], type: 'error' });\r\n throw { error, method: 'PATCH', payload }\r\n }\r\n })\r\n }\r\n\r\n createAssessmentInstance() {\r\n const payload = this.assessmentBuilderService.generateAssessmentInstanceDTO(this.assessmentId);\r\n this.assessmentMakerService.createAssessmentInstance(payload).subscribe({\r\n next: (res: any) => {\r\n this.assessmentInstanceId = res;\r\n this.assessmentInstanceIdChange.emit(res);\r\n this.isSubmitting = false;\r\n // this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.ASSESSMENT_PUBLISHED_SUCCESS'], type: 'success' });\r\n },\r\n error: error => {\r\n this.isSubmitting = false;\r\n this.snackbarMessage.emit({ message: this.labelConfig['COMMONS_ASSESSMENT.TOAST.ERROR_DEFAULT'], type: 'error' });\r\n throw { error, method: 'POST', payload }\r\n }\r\n })\r\n }\r\n\r\n discardChanges() {\r\n if (this.assessmentId) {\r\n this.showLoader = true;\r\n this.loadAssessmentData();\r\n } else {\r\n // Reset fully to empty if no assessment existed yet\r\n this.assessmentQuestionPaperData = { id: 0, questionPaperSectionList: [] };\r\n }\r\n }\r\n\r\n getQuestionFromBank(questionId?: number) {\r\n return this.questionBank?.[questionId || -1];\r\n }\r\n\r\n updateAssessmentQuestionPaperData(newData: any) {\r\n const expandedList = this.assessmentQuestionPaperData?.questionPaperSectionList\r\n ?.filter((s: any) => s.isExpanded)\r\n ?.map((s: any, idx: number) => s.id ? s.id.toString() : `${idx}_${s.qpsName?.[0]?.text}`);\r\n\r\n this.assessmentQuestionPaperData = newData || { id: 0, questionPaperSectionList: [] };\r\n this.filterInactiveSectionsAndQuestions();\r\n\r\n if (expandedList?.length) {\r\n this.assessmentQuestionPaperData?.questionPaperSectionList?.forEach((s: any, idx: number) => {\r\n const key = s.id ? s.id.toString() : `${idx}_${s.qpsName?.[0]?.text}`;\r\n if (expandedList.includes(key)) {\r\n s.isExpanded = true;\r\n }\r\n });\r\n }\r\n }\r\n\r\n filterInactiveSectionsAndQuestions() {\r\n this.assessmentQuestionPaperData.questionPaperSectionList = this.assessmentQuestionPaperData?.questionPaperSectionList?.filter((section: any) => section.isActive !== false)\r\n\r\n this.assessmentQuestionPaperData?.questionPaperSectionList?.forEach((section: any) => {\r\n section.sectionQuestionsList = section.sectionQuestionsList?.filter((question: any) => question.isActive !== false);\r\n });\r\n\r\n if (this.questionBank) {\r\n Object.keys(this.questionBank).forEach(key => {\r\n const question = this.questionBank[key as any];\r\n if (question?.defaultOptionsList) {\r\n question.defaultOptionsList = question.defaultOptionsList.filter((opt: any) => opt.isActive !== false);\r\n }\r\n });\r\n }\r\n }\r\n\r\n capitalizeFirst(text: string | undefined): string {\r\n if (!text) return '';\r\n return text.toLowerCase().split(' ').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join(' ');\r\n }\r\n}\r\n","<div *ngIf=\"configsLoaded && !showLoader; else loader\" class=\"col-12 h-100\">\r\n <div class=\"col-12 h-100 py-4\" [class.height-without-footer]=\"showFooter\">\r\n <ng-container *ngIf=\"assessmentQuestionPaperData?.questionPaperSectionList?.length\">\r\n <mat-accordion multi=\"true\" cdkDropList (cdkDropListDropped)=\"dropSection($event)\">\r\n <mat-expansion-panel [hideToggle]=\"true\" #panel=\"matExpansionPanel\" [expanded]=\"section.isExpanded\"\r\n (opened)=\"section.isExpanded = true\" (closed)=\"section.isExpanded = false\"\r\n class=\"mb-4 border-0 overflow-hidden assessment-panel shadow-none\" cdkDrag\r\n *ngFor=\"let section of assessmentQuestionPaperData?.questionPaperSectionList | orderBy; let sectionIndex = index\">\r\n <!-- Section Header -->\r\n <mat-expansion-panel-header class=\"col-12 p-0 h-auto bg-transparent\">\r\n <div class=\"d-flex col-12 align-items-center gap-md-3 gap-2\">\r\n <img cdkDragHandle [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.DRAG_DROP']\"\r\n class=\"cursor-grab\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/drag-drop.svg')\" />\r\n <div class=\"d-flex align-items-center gap-2 flex-grow-1 justify-content-between p-3 assessment-border-radius-two assessment-border-two\"\r\n [class.no-border]=\"section.isExpanded\">\r\n <div>\r\n <div class=\"d-flex align-items-center mb-1\">\r\n <input type=\"text\" [id]=\"'sectionNameInput_' + sectionIndex\"\r\n class=\"col-md-11 col-10 assessment-text-semibold-18 border-0 outline-0 bg-transparent p-0 input-focus\"\r\n [(ngModel)]=\"section.qpsName[0].text\"\r\n [attr.size]=\"(section.qpsName[0].text?.length || 1)\"\r\n (click)=\"$event.stopPropagation()\" (keydown)=\"$event.stopPropagation()\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.EDIT']\"\r\n class=\"action-icon cursor-pointer\"\r\n (click)=\"focusSectionInput(sectionIndex, $event)\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/pencil.svg')\" />\r\n </div>\r\n <p class=\"mb-0 assessment-text-medium-12 assessment-text-grey-seven\">\r\n {{section?.sectionQuestionsList?.length || 0}}\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.QUESTIONS']}}\r\n </p>\r\n </div>\r\n <div class=\"d-flex align-items-center gap-md-4 gap-2\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.ARROW_DOWN_BLACK']\"\r\n [ngClass]=\"panel.expanded ? 'change-direction' : 'change-direction-reverse'\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/arrow-down-black.svg')\" />\r\n <button [matMenuTriggerFor]=\"menu\" (click)=\"$event.stopPropagation()\"\r\n class=\"border-0 bg-transparent py-2\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.ACTION_DOTS']\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/action-dots.svg')\" />\r\n </button>\r\n <mat-menu #menu=\"matMenu\"\r\n class=\"mat-menu assessment-border-radius-two assessment-border-grey-four-1\">\r\n <button (click)=\"addInstruction(section)\" mat-menu-item\r\n class=\"py-2 assessment-text-semibold-12\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.ADD_INSTRUCTIONS']}}\r\n </button>\r\n <button (click)=\"duplicateSection(section.id)\" mat-menu-item\r\n class=\"py-2 assessment-text-semibold-12\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.DUPLICATE']}}\r\n </button>\r\n <button (click)=\"deleteSection(section)\" mat-menu-item\r\n class=\"py-2 assessment-text-semibold-12 assessment-text-danger\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.DELETE']}}\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </div>\r\n </div>\r\n </mat-expansion-panel-header>\r\n\r\n <!-- Questions inside section -->\r\n\r\n <div cdkDropList [cdkDropListData]=\"section.sectionQuestionsList || []\"\r\n (cdkDropListDropped)=\"dropQuestion($event)\">\r\n <div cdkDrag *ngFor=\"let sectionQuestion of section.sectionQuestionsList | orderBy; let i = index\"\r\n class=\"d-flex align-items-start gap-md-3 gap-2 my-3\">\r\n <img cdkDragHandle [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.DRAG_DROP']\"\r\n class=\"cursor-grab mt-4\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/drag-drop.svg')\" />\r\n <div class=\"flex-grow-1 p-3 assessment-border-two assessment-border-radius-two question-container\">\r\n <lib-question-details [sectionQuestion]=\"sectionQuestion\"\r\n [question]=\"getQuestionFromBank(sectionQuestion.questionId) || {}\"\r\n [questionBank]=\"questionBank\" [imageConfig]=\"imageConfig\"\r\n [labelConfig]=\"labelConfig\"\r\n (editQuestion)=\"createEditQuestion(section, $event?.questionId, $event?.isChildQuestion)\"\r\n (duplicateQuestion)=\"duplicateQuestion(section, $event)\"\r\n (deleteParentQuestion)=\"deleteParentQuestion($event)\"\r\n (deleteChildQuestion)=\"deleteChildQuestion($event.option, $event.childQuestionId)\">\r\n </lib-question-details>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 ps-4 border-bottom pb-4\">\r\n <button (click)=\"createEditQuestion(section)\"\r\n class=\"assessment-zoom-animation assessment-button-padding d-flex align-items-center justify-content-center gap-3 assessment-text-primary-one assessment-bg-palette-EDF3FD assessment-text-semibold-12 outline-0 assessment-border-radius-two mt-3 border-ADC9F6\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.PLUS_PRIMARY']\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/plus-primary.svg')\" />\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.ADD_A_QUESTION']}}\r\n </button>\r\n </div>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n <button (click)=\"createEditQuestion()\"\r\n class=\"assessment-zoom-animation assessment-button-padding d-flex align-items-center justify-content-center gap-3 assessment-text-primary-one assessment-bg-palette-EDF3FD assessment-text-semibold-12 outline-0 assessment-border-radius-two mt-3 border-ADC9F6 ms-4\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.ADD_SECTION']\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/add-section.svg')\" />\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.ADD_A_SECTION']}}\r\n </button>\r\n </ng-container>\r\n <div *ngIf=\"!assessmentQuestionPaperData?.questionPaperSectionList?.length\"\r\n class=\"h-100 d-flex flex-column align-items-center justify-content-center gap-3\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.NO_QUESTIONS']\" class=\"col-sm-auto col-6\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/no-questions.svg')\" />\r\n <div class=\"text-center\">\r\n <p class=\"mb-1 assessment-text-medium-18\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.ADD_CUSTOM_QUESTIONS']}}</p>\r\n <p class=\"mb-0 assessment-text-medium-12 assessment-text-grey-seven\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.ADD_QUESTION_DESC']}}</p>\r\n </div>\r\n <button (click)=\"createEditQuestion()\"\r\n class=\"assessment-button-padding assessment-border-radius-two d-flex align-items-center gap-2 assessment-bg-palette-EDF3FD assessment-text-primary-one assessment-text-semibold-12 border-0 assessment-zoom-animation\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.PLUS_PRIMARY']\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/plus-primary.svg')\" />\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.ADD_A_QUESTION']}}\r\n </button>\r\n </div>\r\n </div>\r\n <div *ngIf=\"showFooter\"\r\n class=\"bg-white p-3 position-sticky bottom-0 d-flex align-items-center justify-content-end border-top gap-3\">\r\n <button (click)=\"discardChanges()\" [disabled]=\"isSubmitting\"\r\n class=\"assessment-zoom-animation assessment-border-radius-two assessment-button-padding-large assessment-btn-primary-transparent assessment-text-semibold-13\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.DISCARD']}}</button>\r\n <button (click)=\"finalSubmit()\" [disabled]=\"isSubmitting\"\r\n class=\"assessment-zoom-animation assessment-border-radius-two assessment-button-padding-large assessment-btn-primary assessment-text-semibold-13 position-relative\">\r\n <span [ngClass]=\"{'opacity-0': isSubmitting}\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.PUBLISH']}}\r\n </span>\r\n <mat-spinner *ngIf=\"isSubmitting\" [diameter]=\"20\"\r\n class=\"position-absolute top-50 start-50 translate-middle assessment-spinner-white\"></mat-spinner>\r\n </button>\r\n </div>\r\n</div>\r\n<ng-template #loader>\r\n <div class=\"h-100 col-12 d-flex align-items-center justify-content-center py-5\">\r\n <mat-spinner diameter=\"60\" class=\"assessment-spinner-primary\"></mat-spinner>\r\n </div>\r\n</ng-template>","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { AssessmentMakerComponent } from './assessment-maker.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { MaterialModules } from '../../shared/material-modules';\r\nimport { SharedModule } from '../../shared/shared.module';\r\nimport { AssessmentMakerService } from './services/assessment-maker.service';\r\nimport { AddEditSectionIntroductionComponent } from './components/add-edit-section-introduction/add-edit-section-introduction.component';\r\nimport { AssessmentBuilderComponent } from './components/assessment-builder/assessment-builder.component';\r\nimport { QuestionDetailsComponent } from './components/question-details/question-details.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n AssessmentMakerComponent,\r\n AddEditSectionIntroductionComponent,\r\n AssessmentBuilderComponent,\r\n QuestionDetailsComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n MaterialModules,\r\n FormsModule,\r\n ReactiveFormsModule\r\n ],\r\n exports: [\r\n AssessmentMakerComponent\r\n ],\r\n providers: [AssessmentMakerService]\r\n})\r\nexport class AssessmentMakerModule {}\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LIBRARY_CONFIG, LibraryConfig } from './configuration';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ]\r\n})\r\nexport class CommonsAssessmentModule {\r\n static forRoot(config: LibraryConfig): ModuleWithProviders<CommonsAssessmentModule> {\r\n return {\r\n ngModule: CommonsAssessmentModule,\r\n providers: [\r\n { provide: LIBRARY_CONFIG, useValue: config }\r\n ],\r\n };\r\n }\r\n}\r\n","/*\r\n * Public API Surface of assessment-maker\r\n */\r\n\r\nexport * from './lib/shared/interfaces/assessment.interface';\r\nexport * from './lib/shared/interfaces/question.interface';\r\nexport * from './lib/shared/interfaces/question-paper.interface';\r\n\r\nexport * from './lib/modules/assessment-taker/assessment-taker.module';\r\nexport * from './lib/modules/assessment-maker/assessment-maker.module';\r\nexport * from './lib/commons-assessment.module';\r\n\r\nexport * from './lib/modules/assessment-maker/assessment-maker.component';\r\nexport * from './lib/modules/assessment-taker/assessment-taker.component';\r\n\r\nexport * from './lib/shared/utils';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["controllers.assessmentTakerController","i1","i2","i2.TextEditorComponent","i4.OrderByPipe","i3.OrderByPipe","i2.AssessmentTakerService","i1.AssessmentTakerService","i3.ResponseBuilderService","i4","i5","i12.QuestionTypeShortComponent","i13.QuestionTypeLongComponent","i14.QuestionTypeEditorComponent","i15.QuestionTypeObjectiveComponent","i16.QuestionTypeMultiselectComponent","i17.QuestionTypePreferenceComponent","i18.QuestionTypeFileUploadComponent","i19","i21.OrderByPipe","i3","controllers.assessmentMakerController","i6","i7","i8.TextEditorComponent","i9","i10","i11","i1.AssessmentMakerService","i2.AssessmentBuilderService","i6.QuestionDetailsComponent","i8","i11.OrderByPipe"],"mappings":"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"}
|