UNPKG

@shikshalokam/sl-questionnaire

Version:
1 lines 119 kB
{"version":3,"file":"shikshalokam-sl-questionnaire.mjs","sources":["../../../projects/sl-questionnaire/src/lib/interfaces/questionnaire.type.ts","../../../projects/sl-questionnaire/src/lib/services/sl-questionnaire.service.ts","../../../projects/sl-questionnaire/src/lib/services/translate.service.ts","../../../projects/sl-questionnaire/src/lib/text-input/text-input.component.ts","../../../projects/sl-questionnaire/src/lib/text-input/text-input.component.html","../../../projects/sl-questionnaire/src/lib/date-input/date-input.component.ts","../../../projects/sl-questionnaire/src/lib/date-input/date-input.component.html","../../../projects/sl-questionnaire/src/lib/number-input/number-input.component.ts","../../../projects/sl-questionnaire/src/lib/number-input/number-input.component.html","../../../projects/sl-questionnaire/src/lib/range-input/range-input.component.ts","../../../projects/sl-questionnaire/src/lib/range-input/range-input.component.html","../../../projects/sl-questionnaire/src/lib/shared/alert-modal/alert-modal.component.ts","../../../projects/sl-questionnaire/src/lib/shared/alert-modal/alert-modal.component.html","../../../projects/sl-questionnaire/src/lib/radio-input/radio-input.component.ts","../../../projects/sl-questionnaire/src/lib/radio-input/radio-input.component.html","../../../projects/sl-questionnaire/src/lib/checkbox-input/checkbox-input.component.ts","../../../projects/sl-questionnaire/src/lib/checkbox-input/checkbox-input.component.html","../../../projects/sl-questionnaire/src/lib/ques-remarks/ques-remarks.component.ts","../../../projects/sl-questionnaire/src/lib/ques-remarks/ques-remarks.component.html","../../../projects/sl-questionnaire/src/lib/services/utils.service.ts","../../../projects/sl-questionnaire/src/lib/attachment/attachment.component.ts","../../../projects/sl-questionnaire/src/lib/attachment/attachment.component.html","../../../projects/sl-questionnaire/src/lib/matrix-questions/matrix-questions.component.ts","../../../projects/sl-questionnaire/src/lib/matrix-questions/matrix-questions.component.html","../../../projects/sl-questionnaire/src/lib/input/input.component.ts","../../../projects/sl-questionnaire/src/lib/input/input.component.html","../../../projects/sl-questionnaire/src/lib/page-questions/page-questions.component.ts","../../../projects/sl-questionnaire/src/lib/page-questions/page-questions.component.html","../../../projects/sl-questionnaire/src/lib/sl-questionnaire.module.ts","../../../projects/sl-questionnaire/src/public-api.ts","../../../projects/sl-questionnaire/src/shikshalokam-sl-questionnaire.ts"],"sourcesContent":["export interface IAssessmentDetails {\n  message?: string;\n  status?: number;\n  result: AssessmentInfo;\n  responseCode: string;\n}\n\nexport interface AssessmentInfo {\n  entityProfile: EntityProfile;\n  solution: Solution;\n  program: Program;\n  assessment: Assessment;\n}\n\nexport interface EntityProfile {\n  _id: string;\n  entityTypeId: string;\n  entityType: string;\n}\n\nexport interface Solution {\n  _id: string;\n  externalId: string;\n  name: string;\n  description: string;\n  registry: any[];\n  captureGpsLocationAtQuestionLevel: boolean;\n  enableQuestionReadOut: boolean;\n  scoringSystem: null;\n  isRubricDriven: boolean;\n  pageHeading: string;\n  criteriaLevelReport?: boolean;\n}\n\nexport interface Program {\n  _id: string;\n  isAPrivateProgram: boolean;\n  externalId: string;\n  name: string;\n  description: string;\n  imageCompression: ImageCompression;\n}\n\nexport interface Assessment {\n  name: string;\n  description: string;\n  externalId: string;\n  pageHeading: string;\n  submissionId: string;\n  evidences: Evidence[];\n  submissions: Submissions;\n}\n\nexport type Code = string;\n\nexport interface Evidence {\n  code: Code;\n  sections: Section[];\n  externalId: Code;\n  tip: null;\n  name: string;\n  description: null;\n  modeOfCollection: string;\n  canBeNotApplicable: boolean;\n  notApplicable: boolean;\n  canBeNotAllowed: boolean;\n  remarks: null;\n  startTime: number;\n  endTime: string;\n  isSubmitted: boolean;\n  submissions: any[];\n}\n\nexport interface Section {\n  code: string;\n  questions: Question[];\n  name: string;\n}\n\nexport interface Question {\n  _id: string;\n  question: string;\n  isCompleted: boolean;\n  showRemarks: string;\n  options: string;\n  option?:{hint:\"\",tip:\"\"}[]\n  sliderOptions: string;\n  children: string[];\n  questionGroup: string;\n  fileName: string;\n  instanceQuestions: string;\n  isAGeneralQuestion: string;\n  autoCapture: string;\n  allowAudioRecording: string;\n  prefillFromEntityProfile: string;\n  entityFieldName: string;\n  isEditable: string;\n  showQuestionInPreview: string;\n  deleted: string;\n  remarks: string;\n  value: string | string[];\n  usedForScoring: string;\n  questionType: string;\n  canBeNotApplicable: string;\n  visibleIf: VisibleIfUnion;\n  validation: string | Validation;\n  dateFormat: string;\n  externalId: string;\n  tip: string;\n  hint: string;\n  responseType: ResponseType;\n  modeOfCollection: string;\n  accessibility: string;\n  rubricLevel: string;\n  sectionHeader: string;\n  page: string;\n  questionNumber: string;\n  updatedAt: string;\n  createdAt: string;\n  __v: string;\n  createdFromQuestionId: string;\n  evidenceMethod: string;\n  payload: Payload;\n  startTime: number;\n  endTime: number;\n  gpsLocation: string;\n  file: string;\n  pageQuestions: Question[];\n}\n\ntype Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;\n\nexport interface PageQuestion\n  extends Omit<Question, 'responseType' | 'pageQuestions'> {\n  value: 'pageQuestions';\n  pageQuestions: Question[];\n}\nexport interface MatrixQuestion\n  extends Omit<Question, 'responseType' | 'instanceQuestions' | 'value'> {\n  responseType: 'matix';\n  value: Array<Question[]>;\n  instanceQuestions: Question[];\n  instanceIdentifier: string;\n}\n\nexport enum ResponseType {\n  TEXT = 'text',\n  NUMBER = 'number',\n  RADIO = 'radio',\n  MULTISELECT = 'multiselect',\n  DATE = 'date',\n  SLIDER = 'slider',\n  PAGEQUESTIONS = 'pageQuestions',\n  MATRIX = 'matrix',\n}\n\nexport type FileUnion = FileClass | string;\n\nexport interface FileClass {\n  required: boolean;\n  type: string[];\n  minCount: number;\n  maxCount: number;\n  caption: string;\n}\n\nexport interface Payload {\n  criteriaId: string;\n  responseType: string;\n  evidenceMethod: Code;\n  rubricLevel: string;\n}\n\nexport interface Validation {\n  required: boolean;\n  max?: string;\n  min?: string;\n  IsNumber?: string;\n  regex: RegExp;\n}\n\nexport interface Option {\n  value: string;\n  label: string;\n}\n\nexport type VisibleIfUnion = VisibleIfElement[] | string;\n\nexport interface VisibleIfElement {\n  operator: string;\n  value: string[];\n  _id: string;\n}\n\nexport interface Submissions {}\n\nexport interface ImageCompression {\n  quality: number;\n}\n","import { Injectable } from '@angular/core';\nimport { AbstractControl, ValidatorFn } from '@angular/forms';\nimport {\n  Evidence,\n  Question,\n  ResponseType,\n} from '../interfaces/questionnaire.type';\nimport * as _ from 'lodash-es';\n\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class SlQuestionnaireService {\n  private _submissionId: string;\n  constructor() {}\n  validate = (data: Question): ValidatorFn => {\n    return (control: AbstractControl): { [key: string]: any } | null => {\n      if (typeof data.validation == 'string') {\n        return null;\n      }\n      if (!data.validation.required) {\n        return null;\n      }\n      if (data.validation.regex) {\n        const forbidden = this.testRegex(data.validation.regex, control.value);\n        return forbidden ? null : { err: 'Invalid character found' };\n      }\n\n      if (data.validation.IsNumber) {\n        if (!control.value) {\n          return { err: 'Number not entered' };\n        }\n        const forbidden = !isNaN(control.value);\n        return forbidden ? null : { err: 'Only numbers allowed' };\n      }\n\n      if (data.validation.required) {\n        if (!control.value) {\n          return { err: 'Required field' };\n        }\n\n        if (data.responseType == ResponseType.MULTISELECT) {\n          return control.value.some((v) => v != '')\n            ? null\n            : { err: 'Select at least one option' };\n        }\n\n        if (data.responseType == ResponseType.SLIDER) {\n          let min = data.validation.min;\n          let max = data.validation.max;\n          return min <= control.value && control.value <= max\n            ? null\n            : { err: 'Selected value  not within range' };\n        }\n      }\n    };\n  };\n\n  public testRegex(regexExpression: RegExp, value: string): boolean {\n    const regex = new RegExp(regexExpression);\n    return regex.test(value);\n  }\n\n  setSubmissionId(submissionId: any) {\n    this._submissionId = submissionId;\n  }\n  getSubmissionId() {\n    return this._submissionId;\n  }\n\n  mapSubmissionToAssessment(data) {\n    const assessment = data.assessment;\n\n    for (const evidence of assessment.evidences) {\n      const validSubmission = assessment.submissions[evidence.externalId];\n      if (validSubmission) {\n        evidence.notApplicable = validSubmission.notApplicable;\n        if (evidence.notApplicable) {\n          continue;\n        }\n\n        for (const section of evidence.sections) {\n          for (const question of section.questions) {\n            if (question.responseType === 'pageQuestions') {\n              for (const questions of question.pageQuestions) {\n                questions.value =\n                  questions.responseType !== 'matrix'\n                    ? validSubmission.answers[questions._id].value\n                    : this.constructMatrixValue(\n                        validSubmission,\n                        questions,\n                        evidence.externalId\n                      );\n                questions.remarks = validSubmission.answers[questions._id]\n                  ? validSubmission.answers[questions._id].remarks\n                  : '';\n                questions.fileName = validSubmission.answers[questions._id]\n                  ? validSubmission.answers[questions._id].fileName\n                  : [];\n                questions.endTime = validSubmission.answers[questions._id]\n                  ? validSubmission.answers[questions._id].endTime\n                  : '';\n              }\n            } else if (\n              validSubmission.answers &&\n              validSubmission.answers[question._id]\n            ) {\n              question.value =\n                question.responseType !== 'matrix'\n                  ? validSubmission.answers[question._id].value\n                  : this.constructMatrixValue(\n                      validSubmission,\n                      question,\n                      evidence.externalId\n                    );\n              question.remarks = validSubmission.answers[question._id]\n                ? validSubmission.answers[question._id].remarks\n                : '';\n              question.fileName = validSubmission.answers[question._id]\n                ? validSubmission.answers[question._id].fileName\n                : [];\n              question.endTime = validSubmission.answers[question._id]\n                ? validSubmission.answers[question._id].endTime\n                : ''\n            }\n          }\n        }\n      }\n    }\n\n    this.setSubmissionId(assessment.submissionId);\n    return data;\n  }\n\n  constructMatrixValue(validSubmission, matrixQuestion, ecmId) {\n    matrixQuestion.value = [];\n    if (\n      validSubmission.answers &&\n      validSubmission.answers[matrixQuestion._id] &&\n      validSubmission.answers[matrixQuestion._id].value\n    ) {\n      for (const answer of validSubmission.answers[matrixQuestion._id].value) {\n        matrixQuestion.value.push(\n          JSON.parse(JSON.stringify(matrixQuestion.instanceQuestions))\n        );\n      }\n      matrixQuestion.value.forEach((instance, index) => {\n        instance.forEach((question, instanceIndex) => {\n          if (\n            validSubmission.answers[matrixQuestion._id] &&\n            validSubmission.answers[matrixQuestion._id].value[index][\n              question._id\n            ]\n          ) {\n            question.value =\n              validSubmission.answers[matrixQuestion._id].value[index][\n                question._id\n              ].value;\n            question.remarks =\n              validSubmission.answers[matrixQuestion._id].value[index][\n                question._id\n              ].remarks;\n            question.fileName =\n              validSubmission.answers[matrixQuestion._id].value[index][\n                question._id\n              ].fileName;\n            question.endTime =\n              validSubmission.answers[matrixQuestion._id].value[index][\n                question._id\n              ].endTime;\n          }\n        });\n      });\n      return matrixQuestion.value;\n    } else {\n      return [];\n    }\n  }\n\n  getEvidenceData(evidence: Evidence, formValues: object) {\n    let sections = evidence.sections;\n    let answers = this.getSectionData(sections, formValues);\n    let payloadData = {\n      externalId: evidence.externalId,\n      answers: answers,\n      startTime: evidence.startTime,\n      endTime: Date.now(),\n    };\n    return payloadData;\n  }\n\n  getSectionData(sections, formValues) {\n    let answers = {};\n    for (let index = 0; index < sections.length; index++) {\n      answers = {\n        ...answers,\n        ...this.createpayload(sections[index].questions, formValues),\n      };\n    }\n    return answers;\n  }\n\n  createpayload(questions, formValues) {\n    let answers = {};\n    for (let index = 0; index < questions.length; index++) {\n      let currentQuestion = questions[index];\n      if (currentQuestion.responseType == 'pageQuestions') {\n        answers = {\n          ...answers,\n          ...this.createpayload(currentQuestion.pageQuestions, formValues),\n        };\n        continue;\n      }\n      if (currentQuestion.responseType == 'matrix') {\n        for (let index = 0; index < currentQuestion.value.length; index++) {\n          formValues[currentQuestion._id][index] = this.createpayload(\n            currentQuestion.value[index],\n            formValues[currentQuestion._id][index]\n          );\n        }\n      }\n\n      let perQuestionData = this.formatToPayload(currentQuestion, formValues);\n      answers[currentQuestion._id] = perQuestionData;\n    }\n\n    return answers;\n  }\n\n  formatToPayload(currentQuestion, formValues) {\n    let value, labels;\n    if (currentQuestion.responseType == 'matrix') {\n      value = formValues[currentQuestion._id];\n      labels = currentQuestion.value;\n    } else {\n      value = currentQuestion.value;\n      labels = formValues[currentQuestion._id];\n      if (currentQuestion.responseType == 'radio' && currentQuestion.value) {\n        labels = currentQuestion.options.find(_ => _.value == currentQuestion.value).label\n      } \n      if (currentQuestion.responseType == 'multiselect' && currentQuestion.value) {\n        labels = currentQuestion.options.filter(_=>currentQuestion.value.includes(_.value)).map(_=>_.label)\n      }\n    }\n\n    return {\n      qid: currentQuestion._id,\n      value: value,\n      remarks: currentQuestion.remarks,\n      fileName: currentQuestion.fileName,\n      gpsLocation: '',\n      payload: {\n        question: currentQuestion.question,\n        labels: this.convertToArray(labels),\n        responseType: currentQuestion.responseType,\n        filesNotUploaded: [], //todo\n      },\n      startTime: currentQuestion.startTime,\n      endTime: currentQuestion.endTime,\n      criteriaId: currentQuestion.payload.criteriaId,\n      responseType: currentQuestion.responseType,\n      evidenceMethod: currentQuestion.evidenceMethod,\n      rubricLevel: '',\n    };\n  }\n\n  convertToArray(arr) {\n    if (!arr) {\n      return arr;\n    }\n    let clonedArr = _.cloneDeep(arr);\n    if (Array.isArray(clonedArr)) {\n      return arr;\n    } else {\n      return [clonedArr];\n    }\n  }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport abstract class SlTranslateService {\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { Question } from '../interfaces/questionnaire.type';\nimport { SlTranslateService } from '../services/translate.service';\nimport { SlQuestionnaireService } from '../services/sl-questionnaire.service';\n\n@Component({\n  selector: 'sl-text-input',\n  templateUrl: './text-input.component.html',\n  styleUrls: ['./text-input.component.scss'],\n})\nexport class TextInputComponent implements OnInit {\n  text: string;\n  @Input() questionnaireForm: UntypedFormGroup;\n  @Input() question : Question;\n  placeholder;\n\n  constructor(\n    private qService: SlQuestionnaireService,\n    private translate: SlTranslateService\n  ) {}\n\n  ngOnInit() {\n    this.placeholder = this.translate['frmelmnts'].lbl.enterResponse;\n    setTimeout(() => {\n      this.questionnaireForm.addControl(\n        this.question._id,\n        new UntypedFormControl(this.question.value || null, [\n          this.qService.validate(this.question),\n        ])\n      );\n\n      this.question.startTime = this.question.startTime\n        ? this.question.startTime\n        : Date.now();\n    });\n  }\n\n  get isValid(): boolean {\n    return this.questionnaireForm.controls[this.question._id].valid;\n  }\n\n  get isTouched(): boolean {\n    return this.questionnaireForm.controls[this.question._id].touched;\n  }\n  onChange(e: Event) {\n    let value = (e.target as HTMLInputElement).value;\n    this.question.value = value;\n    this.question.endTime = Date.now();\n  }\n}\n","<div\n  [formGroup]=\"questionnaireForm\"\n  *ngIf=\"questionnaireForm?.contains(question._id)\"\n>\n  <input\n    type=\"text\"\n    [formControlName]=\"question?._id\"\n    [ngClass]=\"!isValid && isTouched ? 'is-invalid ' : 'is-valid'\"\n    class=\"sb-form-control\"\n    [placeholder]=\"placeholder\"\n    (change)=\"onChange($event)\"\n    [value]=\"question.value\"\n  />\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { Question, Validation } from '../interfaces/questionnaire.type';\nimport { SlTranslateService } from '../services/translate.service';\nimport { SlQuestionnaireService } from '../services/sl-questionnaire.service';\n\n@Component({\n  selector: 'sl-date-input',\n  templateUrl: './date-input.component.html',\n  styleUrls: ['./date-input.component.scss'],\n})\nexport class DateInputComponent implements OnInit {\n  date: any;\n  min: Date;\n  max: Date;\n\n  @Input() questionnaireForm: UntypedFormGroup;\n  @Input() question: Question;\n  @Input() autoCaptureText: String;\n\n  constructor(\n    private qService: SlQuestionnaireService,\n    private translate: SlTranslateService\n  ) {}\n\n  ngOnInit() {\n    this.autoCaptureText = this.translate['frmelmnts'].btn?.autoCapture;\n    setTimeout(() => {\n      this.questionnaireForm.addControl(\n        this.question._id,\n        new UntypedFormControl(\n          this.question.value ? new Date(this.question.value as string) : null,\n          [this.qService.validate(this.question)]\n        )\n      );\n\n      this.question.startTime = this.question.startTime\n        ? this.question.startTime\n        : Date.now();\n    });\n    this.min = (this.question.validation as Validation).min\n      ? new Date((this.question.validation as Validation).min)\n      : null;\n    this.max = (this.question.validation as Validation).max\n      ? new Date((this.question.validation as Validation).max)\n      : null;\n  }\n\n  onChange(e: string) {\n    if(!e) return\n    let value:any = this.dateTimeFormat(e);\n    this.question.value = value;\n    this.question.endTime = Date.now();\n  }\n\n  dateTimeFormat(e:any) {\n    let x = new Date(e);\n    let n = new Date();\n    let h = n.getHours();\n    let m = n.getMinutes();\n    x.setHours(h);\n    x.setMinutes(m);\n    return x;\n  }\n\n  autoCapture() {\n    this.questionnaireForm.controls[this.question._id].patchValue(\n      new Date(Date.now())\n    );\n  }\n}\n","<div\n  [formGroup]=\"questionnaireForm\"\n  *ngIf=\"questionnaireForm?.contains(question._id)\"\n  class=\"sb-g sb-g-col-xs-12\"\n>\n  <div class=\"ui left icon input sb-g-col-xs-12 sb-g-col-md-8\">\n    <i class=\"calendar icon\"></i>\n    <input\n      suiDatepicker\n      [pickerMode]=\"'date'\"\n      [pickerUseNativeOnMobile]=\"false\"\n      [formControlName]=\"question?._id\"\n      (pickerSelectedDateChange)=\"onChange($event)\"\n      class=\"question-date-input\"\n      [pickerMinDate]=\"min\"\n      [pickerMaxDate]=\"max\"\n    />\n  </div>\n  <div *ngIf=\"question?.autoCapture && !question?.value\" class=\"d-flex sb-g-col-xs-12  sb-g-col-md-4 margin\">\n    <button class=\"sb-btn sb-btn-normal sb-btn-primary\" (click)=\"autoCapture()\">\n\t\t{{autoCaptureText}}\n    </button>\n  </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { Question } from '../interfaces/questionnaire.type';\nimport { SlTranslateService } from '../services/translate.service';\nimport { SlQuestionnaireService } from '../services/sl-questionnaire.service';\n\n@Component({\n  selector: 'sl-number-input',\n  templateUrl: './number-input.component.html',\n  styleUrls: ['./number-input.component.scss'],\n})\nexport class NumberInputComponent implements OnInit {\n  placeholder;\n  response: string;\n  @Input() questionnaireForm: UntypedFormGroup;\n  @Input() question: Question;\n  constructor(\n    private qService: SlQuestionnaireService,\n    private translate: SlTranslateService\n  ) {}\n\n  ngOnInit() {\n    this.placeholder = this.translate['frmelmnts']?.lbl?.enterResponse;\n    setTimeout(() => {\n      this.questionnaireForm.addControl(\n        this.question._id,\n        new UntypedFormControl(this.question.value || null, [\n          this.qService.validate(this.question),\n        ])\n      );\n      this.question.startTime = this.question.startTime\n        ? this.question.startTime\n        : Date.now();\n    });\n  }\n  onChange(e: Event) {\n    let value = (e.target as HTMLInputElement).value;\n    this.question.value = value;\n\n    this.question.endTime = Date.now();\n  }\n\n  get isValid(): boolean {\n    return this.questionnaireForm.controls[this.question._id].valid;\n  }\n\n  get isTouched(): boolean {\n    return this.questionnaireForm.controls[this.question._id].touched;\n  }\n}\n","<div\n  [formGroup]=\"questionnaireForm\"\n  *ngIf=\"questionnaireForm?.contains(question._id)\"\n>\n  <input\n    type=\"number\"\n    [formControlName]=\"question?._id\"\n    class=\"sb-form-control\"\n    [placeholder]=\"placeholder\"\n    (change)=\"onChange($event)\"\n    [value]=\"question.value\"\n  />\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { UntypedFormGroup, UntypedFormControl } from '@angular/forms';\nimport { Options } from '@angular-slider/ngx-slider';\nimport { Question, Validation } from '../interfaces/questionnaire.type';\nimport { SlQuestionnaireService } from '../services/sl-questionnaire.service';\n\n@Component({\n  selector: 'sl-range-input',\n  templateUrl: './range-input.component.html',\n  styleUrls: ['./range-input.component.scss'],\n})\nexport class RangeInputComponent implements OnInit {\n  @Input() questionnaireForm: UntypedFormGroup;\n  @Input() question: Question;\n  public options:Options={\n    step:1,\n    hidePointerLabels:true,\n    hideLimitLabels:true,\n    showSelectionBar:true\n  };\n  constructor(public qService: SlQuestionnaireService) {}\n\n  ngOnInit() {\n    setTimeout(() => {\n      this.questionnaireForm.addControl(\n        this.question._id,\n        new UntypedFormControl(this.question.value || +this.min, [\n          this.qService.validate(this.question),\n        ])\n      );\n      this.question.startTime = this.question.startTime\n        ? this.question.startTime\n        : Date.now();\n      this.question.value = this.question.value ? this.question.value : this.min;\n    });\n    this.max && (this.options['ceil'] = +this.max)\n    this.min && (this.options['floor'] = +this.min)\n\n    setTimeout(()=>{\n      if(this.question.value){\n        this.questionnaireForm.controls[this.question._id].reset(this.question.value);\n      }else{\n        if(((this.question.validation) as Validation).required){\n            this.questionnaireForm.controls[this.question._id].reset(null);\n        }\n      }\n    },100);\n  }\n\n  onChange(e) {\n    let value = e.value;\n    this.question.value = value;\n    this.question.endTime = Date.now();\n  }\n\n  get isValid(): boolean {\n    return this.questionnaireForm.controls[this.question._id].valid;\n  }\n\n  get isTouched(): boolean {\n    return this.questionnaireForm.controls[this.question._id].touched;\n  }\n\n  get min() {\n    if (typeof this.question.validation == 'string') {\n      return null;\n    }\n    return this.question.validation.min;\n  }\n\n  get max() {\n    if (typeof this.question.validation == 'string') {\n      return null;\n    }\n    return this.question.validation.max;\n  }\n}\n","<div\n  class=\"\n    d-flex\n    flex-ai-center flex-dc\n    mt-30\n    ng-dirty ng-invalid ng-touched\n    range-wrap\n  \"\n  [formGroup]=\"questionnaireForm\"\n  *ngIf=\"questionnaireForm?.contains(question._id)\"\n>\n  <div class=\"range-value\">{{ this.question.value }}</div>\n  \n  <ngx-slider\n  [options]=\"options\"\n  [formControlName]=\"question?._id\"\n  (userChange)=\"onChange($event)\" \n  [ngClass]=\"isValid && isTouched ? 'is-invalid' : 'is-valid'\" \n  class=\"w-100\">\n</ngx-slider>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { SlTranslateService } from '../../services/translate.service';\nimport { LocationStrategy } from '@angular/common'\n\n@Component({\n  selector: 'sl-alert-modal',\n  templateUrl: './alert-modal.component.html',\n  styleUrls: ['./alert-modal.component.scss']\n})\nexport class AlertModalComponent implements OnInit {\n  @ViewChild('modal') modal;\n  @Input() isDimmed;\n  @Input() hint;\n  @Output() closeHintEmitter = new EventEmitter();\n  hintCloseText: string;\n  hintModalNote:string\n  constructor(\n    public translate: SlTranslateService,\n    public location:LocationStrategy\n  ) {\n    this.location.onPopState(()=>{\n      this.isDimmed = false;\n      this.closeHintEmitter.emit({})\n    })\n   }\n\n  ngOnInit(){\n    this.hintCloseText = this.translate['frmelmnts'].btn?.close;\n    this.hintModalNote = this.translate['frmelmnts'].lbl?.hintModalNote;\n  }\n\n  closeHint(){\n    this.isDimmed = false;\n    this.closeHintEmitter.emit()\n  }\n\n}\n","<sui-modal\n  [mustScroll]=\"true\"\n  [isClosable]=\"false\"\n  [transitionDuration]=\"0\"\n  [size]=\"'normal'\"\n  class=\"sb-modal customModal\"\n  appBodyScroll\n  *ngIf=\"isDimmed\"\n  #modal\n>\n  <!--Header-->\n  <div class=\"sb-modal-header d-flex flex-dir-row\">\n    <div>\n      <i class=\"info circle icon sb-color-primary\"></i>\n    </div>\n    <div class=\"font-weight-bold sb-color-primary modalNote\">\n      {{ hintModalNote }}\n    </div>\n  </div>\n  <!--/Header-->\n  <!--Content-->\n  <div class=\"sb-modal-content\">\n    <h4 class=\"ui header\">{{ hint }}</h4>\n  </div>\n  <!--/Content-->\n\n  <!--Actions-->\n  <div class=\"sb-modal-actions\">\n    <button\n      type=\"button\"\n      class=\"sb-btn sb-btn-sm sb-btn-primary\"\n      type=\"submit\"\n      (click)=\"closeHint()\"\n    >\n    {{ hintCloseText }}\n    </button>\n  </div>\n  <!--/Actions-->\n</sui-modal>\n","import { Output } from '@angular/core';\nimport { Input } from '@angular/core';\nimport { Component, EventEmitter, OnInit } from '@angular/core';\nimport { UntypedFormGroup, UntypedFormControl } from '@angular/forms';\nimport { Question } from '../interfaces/questionnaire.type';\nimport { SlTranslateService } from '../services/translate.service';\nimport { SlQuestionnaireService } from '../services/sl-questionnaire.service';\n\n@Component({\n  selector: 'sl-radio-input',\n  templateUrl: './radio-input.component.html',\n  styleUrls: ['./radio-input.component.scss'],\n})\nexport class RadioInputComponent implements OnInit {\n  @Input() options: any;\n  @Input() questionnaireForm: UntypedFormGroup;\n  @Input() question: Question;\n  hintCloseText: string;\n  hintModalNote:string;\n  @Output() dependentParent = new EventEmitter<Question>();\n  isDimmed: any;\n  hint: any;\n\n  constructor(\n    public qService: SlQuestionnaireService,\n    public translate: SlTranslateService\n  ) {}\n\n  ngOnInit() {\n    this.hintCloseText = this.translate['frmelmnts'].btn?.close;\n    this.hintModalNote = this.translate['frmelmnts'].lbl?.hintModalNote;\n    setTimeout(() => {\n      this.questionnaireForm.addControl(\n        this.question._id,\n        new UntypedFormControl(\n          this.question.value || null,\n          this.qService.validate(this.question)\n        )\n      );\n\n      this.question.startTime = this.question.startTime\n        ? this.question.startTime\n        : Date.now();\n      if (this.question.value) {\n        if (this.question.children.length) {\n          this.dependentParent.emit(this.question);\n        }\n      }\n    });\n  }\n\n  get isValid(): boolean {\n    return this.questionnaireForm.controls[this.question._id].valid;\n  }\n\n  get isTouched(): boolean {\n    return this.questionnaireForm.controls[this.question._id].touched;\n  }\n\n  onChange(value) {\n    this.questionnaireForm.controls[this.question._id].setValue(value);\n    this.question.value = value;\n    this.question.endTime = Date.now();\n    if (this.question.children.length) {\n      this.dependentParent.emit(this.question);\n    }\n  }\n\n  closeHint(){\n    this.isDimmed = false;\n  }\n}\n","<div *ngIf=\"questionnaireForm?.contains(question._id)\">\n  <div\n    *ngFor=\"let o of options; let optionIndex = index\"\n    [formGroup]=\"questionnaireForm\"\n    class=\"\n      mb-15\n      sb-radio-btn-checkbox sb-radio-btn-primary\n      d-flex\n      flex-ai-baseline\n    \"\n  >\n    <input\n      type=\"radio\"\n      (change)=\"onChange(o.value)\"\n      [name]=\"question._id\"\n      [ngClass]=\"isValid && isTouched ? 'is-invalid' : 'is-valid'\"\n      [value]=\"o.value\"\n      [formControlName]=\"question._id\"\n      id=\"{{question._id + o.value}}\"\n    />\n    <label for=\"{{question._id + o.value}}\">{{ o.label }}</label>\n    <div *ngIf=\"options && options[optionIndex]?.hint\">\n      <i\n        class=\"icon large lightbulb\"\n        (click)=\"\n          isDimmed = !isDimmed; hint = options[optionIndex]?.hint\n        \"\n      ></i>\n    </div>\n  </div>\n</div>\n\n<sl-alert-modal [isDimmed]=\"isDimmed\" (closeHintEmitter)=\"closeHint()\" [hint]=\"hint\"></sl-alert-modal>\n\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { UntypedFormArray, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { Question } from '../interfaces/questionnaire.type';\nimport { SlTranslateService } from '../services/translate.service';\nimport { SlQuestionnaireService } from '../services/sl-questionnaire.service';\n\n@Component({\n  selector: 'sl-checkbox-input',\n  templateUrl: './checkbox-input.component.html',\n  styleUrls: ['./checkbox-input.component.scss'],\n})\nexport class CheckboxInputComponent implements OnInit {\n  @Input() options;\n  @Input() questionnaireForm: UntypedFormGroup;\n  @Input() question: Question;\n  hintCloseText: string;\n  hintModalNote:string\n  @Output() dependentParent = new EventEmitter<Question>();\n  isDimmed: any;\n  hint: any;\n  constructor(\n    public qService: SlQuestionnaireService,\n    public translate: SlTranslateService\n  ) {}\n\n  ngOnInit() {\n    this.hintCloseText = this.translate['frmelmnts'].btn?.close;\n    this.hintModalNote = this.translate['frmelmnts'].lbl?.hintModalNote;\n    setTimeout(() => {\n      const optionControl = this.options.map((v) => {\n        if (\n          this.question.value &&\n          (this.question.value as Array<string>).find((_v) => _v == v.value)\n        ) {\n          return new UntypedFormControl(v.value);\n        }\n        return new UntypedFormControl('');\n      });\n\n      this.questionnaireForm.addControl(\n        this.question._id,\n        new UntypedFormArray(optionControl, this.qService.validate(this.question))\n      );\n\n      this.question.startTime = this.question.startTime\n        ? this.question.startTime\n        : Date.now();\n      if (this.question.value.length) {\n        if (this.question.children.length) {\n          this.dependentParent.emit(this.question);\n        }\n      }\n    });\n  }\n\n  onChange(oId: string, isChecked: boolean, oIndex: number) {\n    const formArray: UntypedFormArray = this.questionnaireForm.get(\n      this.question._id\n    ) as UntypedFormArray;\n    if (isChecked) {\n      formArray.controls[oIndex].patchValue(oId);\n    }\n    this.question.value =\n      this.questionnaireForm.controls[this.question._id].value;\n    this.question.value = (this.question.value as Array<string>).filter(\n      Boolean\n    );\n    this.question.endTime = Date.now();\n    if (this.question.children.length) {\n      this.dependentParent.emit(this.question);\n    }\n  }\n\n  get isValid(): boolean {\n    return this.questionnaireForm.controls[this.question._id].valid;\n  }\n\n  get isTouched(): boolean {\n    return this.questionnaireForm.controls[this.question._id].touched;\n  }\n\n  closeHint(){\n    this.isDimmed = false;\n  }\n}\n","<div *ngIf=\"questionnaireForm?.contains(question._id)\">\n  <div\n    *ngFor=\"let o of options; let i = index\"\n    [formGroup]=\"questionnaireForm\"\n    class=\"mb-15 sb-checkbox sb-checkbox-secondary d-flex flex-ai-baseline\"\n  >\n    <div [formArrayName]=\"question._id\">\n      <sui-checkbox\n        (checkChange)=\"onChange(o.value, $event, i)\"\n        [formControlName]=\"i\"\n      >\n        {{ o.label }}\n      </sui-checkbox>\n    </div>\n    <div *ngIf=\"question?.option && question?.option[i]?.hint\">\n      <i\n        class=\"icon large lightbulb\"\n        (click)=\"isDimmed = !isDimmed; hint = question?.option[i]?.hint\"\n      ></i>\n    </div>\n  </div>\n</div>\n\n<sl-alert-modal [isDimmed]=\"isDimmed\" [hint]=\"hint\" (closeHintEmitter)=\"closeHint()\"></sl-alert-modal>\n\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Question } from '../interfaces/questionnaire.type';\nimport { SlTranslateService } from '../services/translate.service';\n\n@Component({\n  selector: 'sl-ques-remarks',\n  templateUrl: './ques-remarks.component.html',\n  styleUrls: ['./ques-remarks.component.scss'],\n})\nexport class QuesRemarksComponent implements OnInit {\n  remark = '';\n  showRemarks;\n\n  @Output() saveClicked = new EventEmitter();\n  @Input() question: Question;\n  title: String;\n  remarksAddText: String;\n  constructor(private translate: SlTranslateService) {}\n\n  ngOnInit() {\n    this.title = this.translate['frmelmnts'].lbl?.remark_title;\n    this.remarksAddText = this.translate['frmelmnts'].btn.addRemarks;\n    this.remark = this.question.remarks;\n    this.remark ? (this.showRemarks = true) : false;\n  }\n  saveRemark() {\n    this.question.remarks = this.remark;\n    this.saveClicked.emit({ value: this.remark });\n  }\n\n  deleteRemark() {\n    this.remark = '';\n    this.saveRemark();\n    this.showRemarks = false;\n  }\n}\n","<div class=\"d-flex flex-ai-center flex-jc-space-between my-10\">\n  <h5 class=\"my-10\">{{ title }}</h5>\n  <button\n    class=\"sb-btn sb-btn-normal sb-btn-primary\"\n    *ngIf=\"!remark.length\"\n    (click)=\"showRemarks = true\"\n  >\n    {{ remarksAddText }}\n  </button>\n  <span *ngIf=\"remark.length\" (click)=\"deleteRemark()\"\n    ><i class=\"trash large icon\"></i\n  ></span>\n</div>\n\n<div class=\"d-flex flex-ai-end\" *ngIf=\"showRemarks\">\n  <textarea\n    rows=\"3\"\n    class=\"w-100\"\n    [(ngModel)]=\"remark\"\n    (ngModelChange)=\"saveRemark()\"\n  >\n  </textarea>\n</div>\n","import { Injectable } from '@angular/core';\nimport { SuiModalService } from '@project-sunbird/ng2-semantic-ui';\nimport { Observable } from 'rxjs';\nimport { AlertMeta } from '../interfaces/alert.type';\n\nexport abstract class SlUtilsAbstract {\n  abstract openAlert?(data): Promise<any>;\n\n  abstract error?(msg);\n\n  abstract getPreSingedUrls?(payload): Observable<any>;\n\n  abstract cloudStorageUpload?(payload): Observable<any>;\n}\n\n@Injectable({\n  providedIn: 'root',\n})\nexport abstract class SlUtilsService extends SlUtilsAbstract {\n  constructor(public modalService: SuiModalService) {\n    super();\n  }\n\n  /**\n   * @param {AlertMeta}  meta: Alert Meta Form Object\n   * @param {String} meta.title Optional ! Display title of alert fields\n   * @param {String}  meta.size Provide size of alert.('tiny','mini)\n   * @param {AlertBodyType}  meta.bodyType Alert-content type to show in alert body\n   * @param {String}  meta.data content to show\n   * @param {String}  meta.buttonClass class to apply on button div\n   * @param {String}  meta.acceptText text to show in accept button\n   * @param {String}  meta.cancelText text to show in accept button\n   * @param {String}  meta.type Optional ! To set type of alert\n   * @param {Boolean}  meta.closeIcon Optional ! Show top right close icon , default = false\n   */\n  alert(meta: AlertMeta) {\n    const button = [];\n    meta.acceptText &&\n      button.push({\n        type: 'accept',\n        returnValue: true,\n        buttonText: meta.acceptText,\n      });\n    meta.cancelText &&\n      button.push({\n        type: 'cancel',\n        returnValue: false,\n        buttonText: meta.cancelText,\n      });\n\n    let alertMeta = {\n      type: meta.type,\n      size: meta.size,\n      isClosed: meta.closeIcon,\n      content: {\n        title: meta.title,\n        body: {\n          type: meta.bodyType,\n          data: meta.data,\n        },\n      },\n      footer: {\n        className: meta.buttonClass,\n        buttons: button,\n      },\n    };\n\n    return this.openAlert(alertMeta);\n  }\n}\n","import { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\nimport { AlertMeta } from '../interfaces/alert.type';\nimport { SlTranslateService } from '../services/translate.service';\nimport { SlUtilsService } from '../services/utils.service';\n\n@Component({\n  selector: 'sl-attachment',\n  templateUrl: './attachment.component.html',\n  styleUrls: ['./attachment.component.scss'],\n})\nexport class AttachmentComponent implements OnInit {\n  @Input() data;\n  files:string;\n  formData;\n  constructor(\n    private translate: SlTranslateService,\n    private utils: SlUtilsService\n  ) {}\n\n  ngOnInit(){\n    this.files = this.translate['frmelmnts'].lbl?.files;\n  }\n\n  basicUpload(event) {\n    const files: FileList = event.target.files;\n    let sizeMB = +(files[0].size / 1000 / 1000).toFixed(4);\n    if (sizeMB > 20) {\n      this.fileLimitCross();\n      return;\n    }\n    this.formData = new FormData();\n    Array.from(files).forEach((f) => this.formData.append('file', f));\n    event.target.value = null;\n    this.preSignedUrl(this.getFileNames(this.formData));\n  }\n\n  fileLimitCross() {\n    const alertMeta: AlertMeta = {\n      size: 'tiny',\n      bodyType: 'text',\n      data: this.translate['frmelmnts'].lbl.fileLimitCross20,\n      buttonClass: 'single-btn',\n      acceptText: this.translate['frmelmnts'].btn.ok,\n      cancelText: null,\n    };\n    this.utils.alert(alertMeta);\n  }\n\n  getFileNames(formData) {\n    let files = [];\n    formData.forEach((element) => {\n      files.push(element.name);\n    });\n    return files;\n  }\n\n  preSignedUrl(files) {\n    let payload = {};\n    payload['ref'] = 'survey';\n    payload['request'] = {};\n    payload['request'][this.data.submissionId] = {\n      files: files,\n    };\n    this.utils.getPreSingedUrls(payload).subscribe(\n      (imageData) => {\n        const presignedUrlData =\n          imageData['result'][this.data.submissionId].files[0];\n        this.formData.append('url', presignedUrlData.url);\n        this.utils.cloudStorageUpload(this.formData).subscribe(\n          (success: any) => {\n            if (success.status === 200) {\n              const obj = {\n                name: this.getFileNames(this.formData)[0],\n                url: presignedUrlData.url.split('?')[0],\n              };\n              for (const key of Object.keys(presignedUrlData.payload)) {\n                obj[key] = presignedUrlData['payload'][key];\n              }\n              this.data.files.push(obj);\n              const alertMeta: AlertMeta = {\n                size: 'tiny',\n                bodyType: 'text',\n                data: this.translate['frmelmnts'].lbl.evidenceUploaded,\n                buttonClass: 'single-btn',\n                acceptText: this.translate['frmelmnts'].btn.ok,\n                cancelText: null,\n                type: 'uploaded',\n              };\n              this.utils.alert(alertMeta);\n            } else {\n              this.utils.error(\n                this.translate['frmelmnts'].message.unableToUpload\n              );\n            }\n          },\n          (error) => {\n            this.utils.error(\n              this.translate['frmelmnts'].message.unableToUpload\n            );\n          }\n        );\n      },\n      (error) => {\n        console.log(error);\n      }\n    );\n  }\n\n  extension(name) {\n    return name.split('.').pop();\n  }\n  openFile(file) {\n    window.open(file.url, '_blank');\n  }\n\n  async deleteAttachment(fileIndex) {\n    const alertMeta: AlertMeta = {\n      size: 'mini',\n      bodyType: 'text',\n      data: this.translate['frmelmnts'].lbl.confirmEvidenceDelete,\n      buttonClass: 'double-btn',\n      acceptText: this.translate['frmelmnts'].btn.yes,\n      cancelText: this.translate['frmelmnts'].btn.no,\n    };\n    const accepted = await this.utils.alert(alertMeta);\n\n    if (!accepted) {\n      return;\n    }\n    this.data.files.splice(fileIndex, 1);\n  }\n\n  async onAddApproval(file) {\n    let html = `\n    ${this.translate['frmelmnts'].lbl.evidence_content_policy}<a href='/term-of-use.html' target=\"_blank\">${this.translate['frmelmnts'].lbl.evidence_content_policy_label}</a> .${this.translate['frmelmnts'].lbl.uploadevidencecontent}\n    `;\n    const alertMeta: AlertMeta = {\n      size: 'tiny',\n      bodyType: 'checkbox',\n      data: html,\n      buttonClass: 'double-btn',\n      acceptText: this.translate['frmelmnts'].btn.upload,\n      cancelText: this.translate['frmelmnts'].btn.donotupload,\n    };\n    let returnData = await this.utils.alert(alertMeta);\n    if (returnData == false) {\n      this.notAccepted();\n      return;\n    }\n    if (returnData == true) {\n      file.click();\n    }\n  }\n\n  notAccepted(): void {\n    const alertMeta: AlertMeta = {\n      size: 'tiny',\n      bodyType: 'text',\n      data: this.translate['frmelmnts'].lbl.uploadTermsRejected,\n      buttonClass: 'single-btn',\n      acceptText: this.translate['frmelmnts'].btn.ok,\n      cancelText: null,\n      type: 'notAccepted',\n    };\n    this.utils.alert(alertMeta);\n  }\n}\n","<label for=\"file-upload\" class=\"custom-file-upload\"></label>\n<input\n  id=\"file-upload\"\n  type=\"file\"\n  #file\n  (change)=\"basicUpload($event)\"\n/>\n<div class=\"d-flex\">\n  <div class=\"bs-1 attachment\" (click)=\"onAddApproval(file)\">\n    <i class=\"plus icon\"></i>\n    <div class=\"files\">{{files}}</div>\n  </div>\n  <div\n    *ngFor=\"let item of data.files; let i = index\"\n    (click)=\"openFile(item)\"\n    class=\"area\"\n  >\n    <a\n      class=\"remove-image\"\n      (click)=\"$event.stopPropagation(); deleteAttachment(i)\"\n      >&#215;</a\n    >\n    <div [ngSwitch]=\"extension(item.name)\">\n    <div *ngSwitchCase = \"'png'\" class=\"mx-10\">\n      <i class=\"file image outline icon\"></i>\n    </div>\n    <div *ngSwitchCase = \"'jpg'\" class=\"mx-10\">\n      <i class=\"file image outline icon\"></i>\n    </div>\n    <div *ngSwitchCase = \"'jpeg'\" class=\"mx-10\">\n      <i class=\"file image outline icon\"></i>\n    </div>\n    <div *ngSwitchCase = \"'pdf'\" class=\"mx-10\">\n      <i class=\"file pdf outline icon\"></i>\n    </div>\n    <div *ngSwitchCase = \"'mp4'\" class=\"mx-10\">\n      <i class=\"file video outline icon\"></i>\n    </div>\n    <div *ngSwitchCase = \"'mp3'\" class=\"mx-10\">\n      <i class=\"file audio outline icon\"></i>\n    </div>\n    <div *ngSwitchDefault class=\"mx-10\">\n      <i class=\"file alternate outline icon\"></i>\n    </div>\n  </div>\n  </div>\n</div>","import { Component, ContentChild, HostListener, Input, OnInit, TemplateRef, ViewChild } from '@angular/core';\nimport {\n  UntypedFormArray,\n  UntypedFormBuilder,\n  UntypedFormControl,\n  UntypedFormGroup,\n  Validators,\n} from '@angular/forms';\nimport {\n  ModalTemplate,\n  SuiModalService,\n  TemplateModalConfig,\n} from '@project-sunbird/ng2-semantic-ui';\nimport { MatrixQuestion, Question } from '../interfaces/questionnaire.type';\nimport { SlTranslateService } from '../services/translate.service';\nimport * as _ from 'lodash-es';\nimport { AlertMeta } from '../interfaces/alert.type';\nimport { SlUtilsService } from '../services/utils.service';\n\nexport interface IContext {\n  questions: Question[];\n  heading: string;\n  index: number;\n}\n@Component({\n  selector: 'sl-matrix-questions',\n  templateUrl: './matrix-questions.component.html',\n  styleUrls: ['./matrix-questions.component.scss'],\n})\nexport class MatrixQuestionsComponent implements OnInit {\n  @HostListener('window:popstate', ['$event'])\n  onPopState(event) {\n    this.showBadgeAssingModel = false;\n  }\n  @ContentChild('matrixTemplateRef', { static: false })\n  matrixTemplateRef: TemplateRef<any>;\n  addText: string;\n  submitText: string;\n  cancelText: string;\n  @Input() questionnaireForm: UntypedFormGroup;\n  @Input() question: MatrixQuestion;\n  matrixForm: UntypedFormGroup;\n  @ViewChild('modalTemplate')\n  public modalTemplate: ModalTemplate<IContext, string, string>;\n  context: IContext;\n  showBadgeAssingModel: boolean;\n  instanceLastUpdated:any[]=[];\n  matrix:TemplateRef<any>;\n  constructor(\n    private translate: SlTranslateService,\n    public modalService: SuiModalService,\n    public fb: UntypedFormBuilder,\n    private utils: SlUtilsService\n  ) {}\n\n  ngOnInit(): void {\n    this.addText = this.translate['frmelmnts'].btn.add;\n    this.submitText = this.translate['frmelmnts'].btn.submit;\n    this.cancelText = this.translate['frmelmnts'].btn.cancel;\n    setTimeout(() => {\n      this.matrixForm = this.fb.group({}, Validators.required);\n      this.questionnaireForm.addControl(\n        this.question._id,\n        new UntypedFormArray([], [Validators.required])\n      );\n      this.initializeMatrix();\n    });\n  }\n  initializeMatrix() {\n    // let valid = true;\n    if (this.question.value.length) {\n      this.question.value.map((v) => {\n        let obj = {};\n        let endTime = []\n        v.forEach((ques) => {\n          endTime.push(ques.endTime)\n          if (!ques.value) return;\n          obj[ques._id] = ques.value;\n        });\n        (this.questionnaireForm.controls[this.question._id] as UntypedFormArray).push(\n          new UntypedFormControl(obj,[this.instanceValidation])\n        );\n       let instanceupdatedAt= endTime.reduce(function (x, y) {\n          return x > y ? x : y;\n       });\n        this.instanceLastUpdated.push(instanceupdatedAt)\n        // if (_.isEmpty(obj)) {\n        //   valid = false;\n        // }\n      });\n    }\n\n    // if (!valid)\n    //   this.questionnaireForm.controls[this.question._id].setErrors({\n    //     err: 'Matrix reposne not valid',\n    //   });\n  }\n\n  instanceValidation(control: UntypedFormControl) {\n  let value = control.value;\n    if (_.isEmpty(value)) {\n    return { err: 'Instance not filled' }\n  }\n    return null;\n  }\n\n  addInstances(): void {\n    this.question.value = this.question.value ? this.question.value : [];\n    this.question.value.push(\n      JSON.parse(JSON.stringify(this.question.instanceQuestions))\n    );\n    this.matrixForm.reset();\n    this.formAsArray.push(new UntypedFormControl([], [Validators.required]));\n  }\n\n  viewInstance(i): void {\n    this.matrixForm.reset();\n    if (this.formAsArray.controls[i].value) {\n      this.matrixForm.patchValue(this.formAsArray.controls[i].value);\n    }\n    const config = new TemplateModalConfig<IContext, string, string>(\n      this.modalTemplate\n    );\n    config.closeResult = 'closed!';\n    let deepClonedQuestion = _.cloneDeep(this.question.value[i]);\n    config.context = {\n      questions: deepClonedQuestion,\n      heading: `${this.question.instanceIdentifier} ${i + 1}`,\n      index: i,\n    };\n    this.context = config.context;\n    this.showBadgeAssingModel = true;\n  }\n\n  get formAsArray() {\n    return this.questionnaireForm.controls[this.question._id] as UntypedFormArray;\n  }\n\n  matrixSubmit(index) {\n    this.showBadgeAssingModel = false;\n    this.question.value[index] = this.context.questions;\n    this.formAsArray.at(index).patchValue(this.matrixForm.value);\n    if (this.matrixForm.invalid) {\n      this.formAsArray.at(index).setErrors({ err: 'Matrix reposne not valid' });\n    }\n    this.instanceLastUpdated[index]=Date.now()\n  }\n\n  async deleteInstanceAlert(index) {\n    // let metaData = await this.observationUtilService.getAlertMetaData();\n    // metaData.content.body.data =\n    //   this.resourceService.frmelmnts.lbl.deleteSubmission;\n    // metaData.content.body.type = 'text';\n    // metaData.content.title = this.resourceService.frmelmnts.btn.delete;\n    // metaData.size = 'mini';\n    // metaData.footer.buttons.push({\n    //   type: 'cancel',\n    //   returnValue: false,\n    //   buttonText: this.resourceService.frmelmnts.btn.no,\n    // });\n    // metaData.footer.buttons.push({\n    //   type: 'accept',\n    //   returnValue: true,\n    //   buttonText: this.resourceService.frmelmnts.btn.yes,\n    // });\n    // metaData.footer.className = 'double-btn';\n    // const accepted = await this.observationUtilService.showPopupAlert(metaData);\n    const alertMeta: AlertMeta = {\n      title: this.translate['frmelmnts'].btn.delete,\n      size: 'mini',\n      bodyType: 'text',\n      data: this.translate['frmelmnts'].lbl.deleteSubmission,\n      buttonClass: 'double-btn',\n      acceptText: this.translate['frmelmnts'].btn.yes,\n      cancelText: this.translate['frmelmnts'].btn.no,\n    };\n    const accepted = await this.utils.alert(alertMeta);\n    if (!accepted) {\n      return;\n    }\n\n    this.question.value.splice(index, 1);\n    (this.questionnaireForm.controls[this.question._id] as UntypedFormArray).removeAt(\n      index\n    );\n    this.instanceLastUpdated.splice(index,1)\n  }\n}\n","<div class=\"d-flex flex-jc-flex-end\">\n  <button class=\"sb-btn sb-btn-normal sb-btn-primary\" (click)=\"addInstances()\">\n    {{ addText }}\n    {{ question?.instanceIdentifier }}\n  </button>\n</div>\n<div\n  class=\"ui card student-card\"\n  *ngFor=\"let instance of question?.value; let i = index\"\n>\n  <div class=\"content flex-jc-space-between\">\n    <div\n      (click)=\"viewInstance(i)\"\n      style=\"flex: 1\"\n      class=\"d-flex flex-dc px-10\"\n      [ngClass]=\"{\n        'valid-response':\n         formAsArray?.controls[i].valid\n      }\"\n    >\n      <span> {{ question?.instanceIdentifier }} {{ i + 1 }}</span>\n      <span class=\"fs-0-785 modified\" *ngIf=\"instanceLastUpdated[i]\">Last Updated On : {{instanceLastUpdated[i] |date:'short'}}</span> \n    </div>\n    <div>\n      <i class=\"trash large icon\" (click)=\"deleteInstanceAlert(i)\"></i>\n    </div>\n  </div>\n</div>\n\n<sui-modal\n  [mustScroll]=\"true\"\n  [isClosable]=\"true\"\n  [transitionDuration]=\"0\"\n  [size]=\"'normal'\"\n  class=\"sb-modal\"\n  appBodyScroll\n  (dismissed)=\"showBadgeAssingModel = false\"\n  *ngIf=\"showBadgeAssingModel\"\n  #modal\n>\n  <!--Header-->\n  <div class=\"sb-modal-header\">\n    {{ context?.heading }}\n  </div>\n  <!--/Header-->\n  <!--Content-->\n  <div class=\"sb-modal-content\">\n    <ng-container *ngTemplateOutlet=\"matrixTemplateRef\"></ng-container>\n  </div>\n  <!--/Content-->\n\n  <!--Actions-->\n  <div class=\"sb-modal-actions\">\n    <button\n      [disabled]=\"!matrixForm?.valid\"\n      type=\"button\"\n      (click)=\"matrixSubmit(context.index)\"\n      [ngClass]=\"{\n        'sb-btn sb-btn-normal': true,\n        'sb-btn-primary': matrixForm?.valid,\n        'sb-btn-disabled': !matrixForm?.valid\n      }\"\n    >\n      {{ submitText }}\n    </button>\n    <button\n      class=\"sb-btn sb-btn-normal sb-btn-outline-primary\"\n      type=\"button\"\n      (click)=\"showBadgeAssingModel = false\"\n    >\n      {{ cancelText }}\n    </button>\n  </div>\n  <!--/Actions-->\n</sui-modal>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { Question, ResponseType } from '../interfaces/questionnaire.type';\nimport { SlTranslateService } from '../services/translate.service';\nimport { SlQuestionnaireService } from '../services/sl-questionnaire.service';\n\n@Component({\n  selector: 'sl-input',\n  templateUrl: './input.component.html',\n  styleUrls: ['./input.component.scss'],\n})\nexport class InputComponent {\n  @Input() questions: Array<Question>;\n  @Input() questionnaireForm: UntypedFormGroup;\n  selectedIndex: number;\n  dimmerIndex;\n  isDimmed;\n\n  constructor(private translate: SlTranslateService,public qService:SlQuestionnaireService) {}\n\n  public get reponseType(): typeof ResponseType {\n    return ResponseType;\n  }\n\n  toggleQuestion(parent) {\n    const { children } = parent;\n\n    this.questions.map((q, i) => {\n      if (children.includes(q._id)) {\n        let child = this.questions[i];\n        child['canDisplay'] = this.canDisplayChildQ(child, i);\n        if (child['canDisplay'] == false) {\n          child.value = '';\n          this.questionnaireForm.removeControl(child._id);\n        }\n      }\n    });\n  }\n\n  canDisplayChildQ(currentQuestion: Question, currentQuestionIndex: number) {\n    let display = true;\n    if (typeof currentQuestion.visibleIf == 'string' || null || undefined) {\n      return false; //if condition not present\n    }\n    for (const question of this.questions) {\n      for (const condition of currentQuestion.visibleIf) {\n        if (condition._id === question._id) {\n          let expression = [];\n          if (condition.operator != '===') {\n            if (question.responseType === 'multiselect') {\n              for (const parentValue of question.value) {\n                for (const value of condition.value) {\n                  expression.push(\n                    '(',\n                    \"'\" + parentValue + \"'\",\n                    '===',\n                    \"'\" + value + \"'\",\n                    ')',\n                    condition.operator\n                  );\n                }\n              }\n            } else {\n              for (const value of condition.value) {\n                expression.push(\n                  '(',\n                  \"'\" + question.value + \"'\",\n                  '===',\n                  \"'\" + value + \"'\",\n                  ')',\n                  condition.operator\n                );\n              }\n            }\n            expression.pop();\n          } else {\n            if (question.responseType === 'multiselect') {\n              for (const value of question.value) {\n                expression.push(\n                  '(',\n                  \"'\" + condition.value + \"'\",\n                  '===',\n                  \"'\" + value + \"'\",\n                  ')',\n                  '||'\n                );\n              }\n              expression.pop();\n            } else {\n              expression.push(\n                '(',\n                \"'\" + question.value + \"'\",\n                condition.operator,\n                \"'\" + condition.value + \"'\",\n                ')'\n              );\n            }\n          }\n          if (!eval(expression.join(''))) {\n            this.questions[currentQuestionIndex].isCompleted = true;\n            return false;\n          } else {\n            // this.questions[currentQuestionIndex].isCompleted =\n            //   this.utils.isQuestionComplete(currentQuestion);\n          }\n        }\n      }\n    }\n    return display;\n  }\n\n  closeHint(){\n    this.isDimmed = false;\n  }\n}\n","<div *ngFor=\"let question of questions; let qi = index\">\n  <div *ngIf=\"question?.sectionHeader && (!question.visibleIf.length || question.canDisplay == true)\">\n    <h4 class=\"section-header-style\">{{question?.sectionHeader}}</h4>\n  </div>\n  <div\n    [ngClass]=\"{\n      'ui card question-card sb--card relative9':\n        question.responseType != 'pageQuestions'\n    }\"\n    *ngIf=\"!question.visibleIf.length || question.canDisplay == true\"\n  >\n    <div [ngClass]=\"{ content: question.responseType != 'pageQuestions' }\">\n      <div class=\"d-flex flex-ai-flex-start flex-jc-space-between\">\n        <div\n          *ngFor=\"let q of question.question; let qai = index\"\n          [ngClass]=\"{\n            'mb-20': q.length,\n            'valid-response': questionnaireForm?.controls[question._id]?.valid\n          }\"\n        >\n          <div class=\"sb-h5\" *ngIf=\"q!=''\">\n            {{ question.questionNumber + \" .  \"}}&nbsp;{{ q }}\n          </div>\n        </div>\n        <div *ngIf=\"question?.hint\">\n          <i\n            class=\"icon large lightbulb\"\n            (click)=\"dimmerIndex = qi; isDimmed = !isDimmed\"\n          ></i>\n        </div>\n      </div>\n      <div *ngIf=\"question?.tip\" class=\"mb-10\">\n        <small class=\"mb-10\">{{ question?.tip }}</small>\n      </div>\n      <div class=\"sbt-page-content-questionnaireFormarea'\">\n        <sl-text-input\n          *ngIf=\"question.responseType == reponseType.TEXT\"\n          [questionnaireForm]=\"questionnaireForm\"\n          [question]=\"question\"\n        ></sl-text-input>\n        <sl-date-input\n          *ngIf=\"question.responseType == reponseType.DATE\"\n          [questionnaireForm]=\"questionnaireForm\"\n          [question]=\"question\"\n        ></sl-date-input>\n        <sl-number-input\n          *ngIf=\"question.responseType == reponseType.NUMBER\"\n          [questionnaireForm]=\"questionnaireForm\"\n          [question]=\"question\"\n        ></sl-number-input>\n        <sl-range-input\n          *ngIf=\"question.responseType == reponseType.SLIDER\"\n          [questionnaireForm]=\"questionnaireForm\"\n          [question]=\"question\"\n        ></sl-range-input>\n        <sl-radio-input\n          *ngIf=\"question.responseType == reponseType.RADIO\"\n          [questionnaireForm]=\"questionnaireForm\"\n          [question]=\"question\"\n          [options]=\"question.options\"\n          (dependentParent)=\"toggleQuestion($event)\"\n        ></sl-radio-input>\n        <sl-checkbox-input\n          *ngIf=\"question.responseType == reponseType.MULTISELECT\"\n          [questionnaireForm]=\"questionnaireForm\"\n          [question]=\"question\"\n          [options]=\"question.options\"\n          (dependentParent)=\"toggleQuestion($event)\"\n        ></sl-checkbox-input>\n        <ng-container *ngIf=\"question.responseType == reponseType.PAGEQUESTIONS\">\n          <sl-input\n          [questionnaireForm]=\"questionnaireForm\"\n          [questions]=\"question.pageQuestions\"\n          ></sl-input>\n        </ng-container>\n          <sl-matrix-questions *ngIf=\"question.responseType == reponseType.MATRIX\"\n          [questionnaireForm]=\"questionnaireForm\"\n          [question]=\"question\"\n          #matrixComponent>\n            <ng-template #matrixTemplateRef>\n              <sl-input\n              [questions]=\"matrixComponent.context?.questions\"\n              [questionnaireForm]=\"matrixComponent.matrixForm\"\n              ></sl-input>\n            </ng-template>\n          </sl-matrix-questions>\n        <sl-ques-remarks\n          [question]=\"question\"\n          *ngIf=\"question.showRemarks\"\n        ></sl-ques-remarks>\n        <sl-attachment\n          [data]=\"{\n            submissionId: qService.getSubmissionId(),\n            files: question.fileName\n          }\"\n          *ngIf=\"question.file\"\n        ></sl-attachment>\n        <sl-alert-modal *ngIf=\"dimmerIndex == qi && question?.hint\" [isDimmed]=\"isDimmed\" [hint]=\"question?.hint\" (closeHintEmitter)=\"closeHint()\"></sl-alert-modal>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { PageQuestion } from '../interfaces/questionnaire.type';\n\n@Component({\n  selector: 'sl-page-questions',\n  templateUrl: './page-questions.component.html',\n  styleUrls: ['./page-questions.component.css'],\n})\nexport class PageQuestionsComponent implements OnInit {\n  @Input() questionnaireForm: UntypedFormGroup;\n  @Input() question: PageQuestion;\n  constructor() {}\n\n  ngOnInit(): void {}\n}\n","<sl-input\n  [questions]=\"question.pageQuestions\"\n  [questionnaireForm]=\"questionnaireForm\"\n></sl-input>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TextInputComponent } from './text-input/text-input.component';\nimport { DateInputComponent } from './date-input/date-input.component';\nimport { SuiModule } from '@project-sunbird/ng2-semantic-ui';\nimport { NumberInputComponent } from './number-input/number-input.component';\nimport { RangeInputComponent } from './range-input/range-input.component';\nimport { RadioInputComponent } from './radio-input/radio-input.component';\nimport { CheckboxInputComponent } from './checkbox-input/checkbox-input.component';\nimport { QuesRemarksComponent } from './ques-remarks/ques-remarks.component';\nimport { AttachmentComponent } from './attachment/attachment.component';\nimport { InputComponent } from './input/input.component';\nimport { PageQuestionsComponent } from './page-questions/page-questions.component';\nimport { MatrixQuestionsComponent } from './matrix-questions/matrix-questions.component';\nimport { NgxSliderModule } from '@angular-slider/ngx-slider';\nimport { AlertModalComponent } from './shared/alert-modal/alert-modal.component';\n\n@NgModule({\n  declarations: [\n    TextInputComponent,\n    DateInputComponent,\n    NumberInputComponent,\n    RangeInputComponent,\n    RadioInputComponent,\n    CheckboxInputComponent,\n    QuesRemarksComponent,\n    AttachmentComponent,\n    InputComponent,\n    PageQuestionsComponent,\n    MatrixQuestionsComponent,\n    AlertModalComponent\n  ],\n  imports: [CommonModule, FormsModule, ReactiveFormsModule, SuiModule,NgxSliderModule],\n  exports: [\n    TextInputComponent,\n    DateInputComponent,\n    NumberInputComponent,\n    RangeInputComponent,\n    RadioInputComponent,\n    CheckboxInputComponent,\n    QuesRemarksComponent,\n    AttachmentComponent,\n    InputComponent,\n    PageQuestionsComponent,\n    MatrixQuestionsComponent\n  ],\n})\nexport class SlQuestionnaireModule {}\n","/*\n * Public API Surface of sl-questionnaire\n */\n\nexport * from './lib/sl-questionnaire.module';\n\nexport * from './lib/text-input/text-input.component';\nexport * from './lib/date-input/date-input.component';\nexport * from './lib/number-input/number-input.component';\nexport * from './lib/range-input/range-input.component';\nexport * from './lib/radio-input/radio-input.component';\nexport * from './lib/checkbox-input/checkbox-input.component';\nexport * from './lib/ques-remarks/ques-remarks.component';\nexport * from './lib/attachment/attachment.component';\nexport * from './lib/input/input.component';\nexport * from './lib/matrix-questions/matrix-questions.component'\nexport * from './lib/page-questions/page-questions.component';\n\nexport * from './lib/interfaces/questionnaire.type';\nexport * from './lib/interfaces/alert.type';\n\nexport * from './lib/services/translate.service';\nexport * from './lib/services/utils.service';\nexport * from './lib/services/sl-questionnaire.service';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SlQuestionnaireService","i2.SlTranslateService","i2","i3","i4","i1.SlTranslateService","i5.AlertModalComponent","i6.AlertModalComponent","i1","i2.SlUtilsService","i4.SlUtilsService","i5","i2.SlQuestionnaireService","i4.TextInputComponent","i5.DateInputComponent","i6.NumberInputComponent","i7.RangeInputComponent","i8.RadioInputComponent","i9.CheckboxInputComponent","i10.QuesRemarksComponent","i11.AttachmentComponent","i12.MatrixQuestionsComponent","i13.AlertModalComponent","i1.InputComponent"],"mappings":"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"}