{ "version": 3, "sources": ["src/app/_models/assessment/CreateAssessmentDto.ts", "src/app/components/assessment/assessment-settings-modal/assessment-settings-modal.component.ts", "src/app/components/assessment/assessment-settings-modal/assessment-settings-modal.component.html"], "sourcesContent": ["export enum CreateMode {\n Blank = \"blank\",\n Default = \"default\",\n Copy = \"copy\",\n}\n\nexport type CreateAssessmentDto =\n | {\n method: CreateMode.Blank | CreateMode.Default;\n }\n | {\n method: CreateMode.Copy;\n copyFrom: string;\n };\n", "import { Component, ElementRef, OnInit, ViewChild } from \"@angular/core\";\nimport {\n UntypedFormBuilder,\n UntypedFormGroup,\n Validators,\n} from \"@angular/forms\";\nimport { AssessmentDto, FormCategory, FormType, UserDm } from \"@/_models\";\nimport { NgbActiveModal } from \"@ng-bootstrap/ng-bootstrap\";\nimport { AssessmentService } from \"@/_services\";\nimport { filter, switchMap, tap } from \"rxjs/operators\";\nimport { CreateMode } from \"@/_models/assessment/CreateAssessmentDto\";\nimport { Router } from \"@angular/router\";\nimport { RadioOption } from \"@/components/shared/radio-list/radio-list.component\";\nimport { AccountService } from \"@/_services/account.service\";\nimport { map, Observable, of } from \"rxjs\";\nimport UserRoles = UserDm.UserRoles;\nimport { stringEnumSelector } from \"@/_utility/enum.util\";\n\n@Component({\n selector: \"app-assessment-settings-modal\",\n templateUrl: \"./assessment-settings-modal.component.html\",\n styleUrls: [\"./assessment-settings-modal.component.scss\"],\n})\nexport class AssessmentSettingsModalComponent implements OnInit {\n protected readonly UserRoles = UserRoles;\n\n @ViewChild(\"container\", { static: true }) container: ElementRef;\n\n assessment: AssessmentDto | null;\n assessmentForm: UntypedFormGroup;\n formTypeList: RadioOption[] = [];\n formCategoryList: RadioOption[] = [];\n scoringMethodList = [\n { label: \"Include Scoring\", value: true },\n { label: \"Exclude Scoring\", value: false },\n ];\n mitigationCapabilitiesList = [\n { label: \"Allow Mitigation\", value: true },\n { label: \"Prevent Mitigation\", value: false },\n ];\n reportingFormatList = [\n { label: \"Abbreviated (Answered Questions)\", value: \"partial\" },\n { label: \"Standard (All Questions)\", value: \"all\" },\n ];\n\n formTypes: FormType[];\n selectedFormType: FormType;\n formNotAllowed$: Observable = of(false);\n\n constructor(\n private activeModal: NgbActiveModal,\n private formBuilder: UntypedFormBuilder,\n private assessmentService: AssessmentService,\n private accountService: AccountService,\n private router: Router,\n ) {}\n\n ngOnInit() {\n this.assessmentService\n .formTypeList()\n .pipe(\n tap((formTypeList: FormType[]) => {\n this.formTypes = formTypeList;\n this.formTypeList = formTypeList.map((formType) => {\n return { label: formType.name, value: formType.type };\n });\n this.formCategoryList = stringEnumSelector(FormCategory);\n }),\n tap((formTypeList) => {\n this.assessmentForm = this.formBuilder.group({\n title: [\"\", Validators.required],\n type: [this.formTypeList[0].value],\n category: [this.formCategoryList[0].value],\n mitigation: [\n {\n value: formTypeList[0].mitigation.value,\n disabled: !formTypeList[0].mitigation.editable,\n },\n ],\n scoring: [\n {\n value: formTypeList[0].scoring.value,\n disabled: !formTypeList[0].scoring.editable,\n },\n ],\n reportingFormat: [\n {\n value: \"partial\",\n disabled: true,\n // value: formTypeList[0].mitigationEnabled.value,\n // disabled: !formTypeList[0].mitigationEnabled.editable\n },\n ],\n isDefault: [false],\n });\n this.selectType(formTypeList[0].type);\n }),\n tap(() => {\n if (this.assessment && this.assessment.formTypeSettings) {\n this.assessmentForm.patchValue(this.assessment);\n this.selectType(this.assessment.formTypeSettings.type);\n this.assessmentForm\n .get(\"category\")\n .patchValue(\n this.assessment.formTypeSettings.category,\n );\n }\n }),\n )\n .subscribe();\n }\n\n selectType(formType: string) {\n const targetForm = this.formTypes.find(\n (item) => item.type === formType,\n );\n this.selectedFormType = targetForm;\n if (targetForm.requiresFeature) {\n this.formNotAllowed$ = this.accountService\n .isFeatureEnabled(targetForm.requiresFeature)\n .pipe(map((value) => !value));\n } else {\n this.formNotAllowed$ = of(false);\n }\n this.updateSettings(this.selectedFormType);\n }\n\n updateSettings(settings: FormType) {\n this.assessmentForm.get(\"type\").patchValue(settings.type);\n\n if (settings.scoring) {\n this.assessmentForm\n .get(\"scoring\")\n .patchValue(settings.scoring.value);\n settings.scoring.editable\n ? this.assessmentForm.get(\"scoring\").enable()\n : this.assessmentForm.get(\"scoring\").disable();\n }\n\n if (settings.mitigation) {\n this.assessmentForm\n .get(\"mitigation\")\n .patchValue(settings.mitigation.value);\n settings.mitigation.editable\n ? this.assessmentForm.get(\"mitigation\").enable()\n : this.assessmentForm.get(\"mitigation\").disable();\n }\n }\n\n submit() {\n this.accountService\n .checkFormFeature(this.selectedFormType.requiresFeature)\n .pipe(\n tap(() => this.close()),\n filter((result) => result),\n switchMap(() => this.saveForm()),\n )\n .subscribe();\n }\n\n saveForm() {\n if (this.assessment) {\n return this.assessmentService\n .updateAssessment(\n this.assessment._id,\n this.assessmentForm.value,\n )\n .pipe(\n switchMap(() =>\n this.assessmentService.getAssessment(\n this.assessment._id,\n ),\n ),\n tap((res) => (this.assessment = res)),\n );\n } else {\n return this.assessmentService\n .create({ method: CreateMode.Blank })\n .pipe(\n switchMap((assessment) =>\n this.assessmentService.updateAssessment(\n assessment._id,\n this.assessmentForm.value,\n ),\n ),\n tap((assessment) =>\n this.router.navigate([\n \"./assessments\",\n assessment._id,\n \"edit\",\n ]),\n ),\n );\n }\n }\n\n close() {\n this.activeModal.close();\n }\n\n goToSubscriptions() {\n this.router.navigateByUrl(\"/profile/subscription\");\n this.close();\n }\n}\n", "\n \n
\n \n \n \n
\n
\n \n \"Warning\"\n The {{assessmentForm.get('type').value | titlecase}} form type\n requires a higher subscription tier.\n \n\n \n
\n
\n
\n \n \n
\n\n
\n \n \n
\n \n
\n
\n
\n \n \n {{assessment ? 'Save Configuration' : 'Create New Form'}}\n \n
\n \n
\n"], "mappings": "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", "names": ["CreateMode", "UserRoles", "UserDm", "\u0275\u0275elementStart", "\u0275\u0275element", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275listener", "\u0275\u0275restoreView", "_r3", "ctx_r1", "\u0275\u0275nextContext", "\u0275\u0275resetView", "goToSubscriptions", "\u0275\u0275advance", "\u0275\u0275textInterpolate1", "\u0275\u0275pipeBind1", "assessmentForm", "get", "value", "$event", "control_r5", "_r4", "ngIf", "setValue", "\u0275\u0275property", "disabled", "scoringMethodList", "control_r7", "_r6", "mitigationCapabilitiesList", "_r1", "selectType", "\u0275\u0275template", "AssessmentSettingsModalComponent_form_1_div_8_Template", "AssessmentSettingsModalComponent_form_1_div_11_Template", "AssessmentSettingsModalComponent_form_1_div_13_Template", "submit", "\u0275\u0275pipeBind2", "formTypeList", "formCategoryList", "formNotAllowed$", "invalid", "assessment", "AssessmentSettingsModalComponent", "constructor", "activeModal", "formBuilder", "assessmentService", "accountService", "router", "label", "reportingFormatList", "of", "ngOnInit", "pipe", "tap", "formTypes", "map", "formType", "name", "type", "stringEnumSelector", "FormCategory", "group", "title", "Validators", "required", "category", "mitigation", "editable", "scoring", "reportingFormat", "isDefault", "formTypeSettings", "patchValue", "subscribe", "targetForm", "find", "item", "selectedFormType", "requiresFeature", "isFeatureEnabled", "updateSettings", "settings", "enable", "disable", "checkFormFeature", "close", "filter", "result", "switchMap", "saveForm", "updateAssessment", "_id", "getAssessment", "res", "create", "method", "CreateMode", "Blank", "navigate", "navigateByUrl", "\u0275\u0275directiveInject", "NgbActiveModal", "UntypedFormBuilder", "AssessmentService", "AccountService", "Router", "selectors", "viewQuery", "rf", "ctx", "AssessmentSettingsModalComponent_form_1_Template", "_AssessmentSettingsModalComponent"] }