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.umd.js","sources":["../../../node_modules/tslib/tslib.es6.mjs","../../../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":["/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","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":["i0","MAT_DIALOG_DATA","i2","i1","i3","Component","Inject","InjectionToken","HttpParams","controllers.assessmentTakerController","Injectable","FormControl","Optional","Self","Input","EventEmitter","Output","i2.TextEditorComponent","Pipe","i4.OrderByPipe","i3.OrderByPipe","i2.AssessmentTakerService","ViewChild","forkJoin","Validators","i1.AssessmentTakerService","i3.ResponseBuilderService","i4","i5","i6","i7","i8","i9","i10","i11","i12.QuestionTypeShortComponent","i13.QuestionTypeLongComponent","i14.QuestionTypeEditorComponent","i15.QuestionTypeObjectiveComponent","i16.QuestionTypeMultiselectComponent","i17.QuestionTypePreferenceComponent","i18.QuestionTypeFileUploadComponent","i19","i20","i21.OrderByPipe","MatProgressSpinnerModule","MatExpansionModule","MatSelectModule","DragDropModule","MatMenuModule","MatDialogModule","MatTooltipModule","MatFormFieldModule","MatTabsModule","MatRadioModule","MatCheckboxModule","OverlayModule","NgModule","CommonModule","FormsModule","ReactiveFormsModule","AngularEditorModule","NG_VALUE_ACCESSOR","forwardRef","controllers.assessmentMakerController","i8.TextEditorComponent","moveItemInArray","i1.AssessmentMakerService","i2.AssessmentBuilderService","i6.QuestionDetailsComponent","i11.OrderByPipe"],"mappings":"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"}
|