tango-app-ui-analyse-trax 3.7.0-task-3 → 3.7.0-task-5

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.
Files changed (18) hide show
  1. package/esm2022/lib/components/dashboard-info/dashboard-info.component.mjs +2 -2
  2. package/esm2022/lib/components/gallery/gallery.component.mjs +5 -1
  3. package/fesm2022/{tango-app-ui-analyse-trax-eye-test-audit.module-BK3BtQ1z.mjs → tango-app-ui-analyse-trax-eye-test-audit.module-BBMDXhmz.mjs} +2 -2
  4. package/fesm2022/{tango-app-ui-analyse-trax-eye-test-audit.module-T-d36OLl.mjs.map → tango-app-ui-analyse-trax-eye-test-audit.module-BBMDXhmz.mjs.map} +1 -1
  5. package/fesm2022/{tango-app-ui-analyse-trax-eye-test-audit.module-T-d36OLl.mjs → tango-app-ui-analyse-trax-eye-test-audit.module-CGAYPgis.mjs} +2 -2
  6. package/fesm2022/{tango-app-ui-analyse-trax-eye-test-audit.module-BK3BtQ1z.mjs.map → tango-app-ui-analyse-trax-eye-test-audit.module-CGAYPgis.mjs.map} +1 -1
  7. package/fesm2022/{tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-D7WgtMbj.mjs → tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-CR4s3Wll.mjs} +7 -3
  8. package/fesm2022/tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-CR4s3Wll.mjs.map +1 -0
  9. package/fesm2022/{tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-Buzo3liP.mjs → tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-rbz5HBsA.mjs} +8 -4
  10. package/fesm2022/tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-rbz5HBsA.mjs.map +1 -0
  11. package/fesm2022/tango-app-ui-analyse-trax.mjs +1 -1
  12. package/package.json +1 -1
  13. package/fesm2022/tango-app-ui-analyse-trax-eye-test-audit.module-Bly6BgKa.mjs +0 -1527
  14. package/fesm2022/tango-app-ui-analyse-trax-eye-test-audit.module-Bly6BgKa.mjs.map +0 -1
  15. package/fesm2022/tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-Buzo3liP.mjs.map +0 -1
  16. package/fesm2022/tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-D7WgtMbj.mjs.map +0 -1
  17. package/fesm2022/tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-NVvyOYAJ.mjs +0 -19258
  18. package/fesm2022/tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-NVvyOYAJ.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"tango-app-ui-analyse-trax-eye-test-audit.module-BK3BtQ1z.mjs","sources":["../../../projects/tango-analyse-trax/src/lib/components/eye-test-audit/services/eye-test-audit.service.ts","../../../projects/tango-analyse-trax/src/lib/components/eye-test-audit/reactive-select/reactive-select.component.ts","../../../projects/tango-analyse-trax/src/lib/components/eye-test-audit/reactive-select/reactive-select.component.html","../../../projects/tango-analyse-trax/src/lib/components/eye-test-audit/custom-select/custom-select.component.ts","../../../projects/tango-analyse-trax/src/lib/components/eye-test-audit/custom-select/custom-select.component.html","../../../projects/tango-analyse-trax/src/lib/components/eye-test-audit/group-select/group-select.component.ts","../../../projects/tango-analyse-trax/src/lib/components/eye-test-audit/group-select/group-select.component.html","../../../projects/tango-analyse-trax/src/lib/components/eye-test-audit/eye-test/eye-test.component.ts","../../../projects/tango-analyse-trax/src/lib/components/eye-test-audit/eye-test/eye-test.component.html","../../../projects/tango-analyse-trax/src/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.component.ts","../../../projects/tango-analyse-trax/src/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.component.html","../../../projects/tango-analyse-trax/src/lib/components/eye-test-audit/eye-test-audit/start-audit/start-audit.component.ts","../../../projects/tango-analyse-trax/src/lib/components/eye-test-audit/eye-test-audit/start-audit/start-audit.component.html","../../../projects/tango-analyse-trax/src/lib/components/eye-test-audit/eye-test-audit/eye-test-audit-routing.module.ts","../../../projects/tango-analyse-trax/src/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.module.ts"],"sourcesContent":["import { Injectable, OnDestroy } from \"@angular/core\";\r\nimport { BehaviorSubject, Subject, Observable, takeUntil } from \"rxjs\";\r\nimport { GlobalStateService } from \"tango-app-ui-global\";\r\nimport {\r\n HttpClient,\r\n HttpErrorResponse,\r\n HttpParams,\r\n} from \"@angular/common/http\";\r\nimport * as FileSaver from 'file-saver';\r\nimport * as XLSX from 'xlsx';\r\n\r\nconst EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\r\nconst EXCEL_EXTENSION = '.xlsx';\r\nconst CSV_TYPE = 'text/csv;charset=utf-8';\r\nconst CSV_EXTENSION = '.csv';\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class EyeTestAuditService implements OnDestroy {\r\n dropDownTrigger = new BehaviorSubject<any>(null);\r\n eyeTestauditApiUrl: any;\r\n\r\n constructor(private http: HttpClient, private gs: GlobalStateService) {\r\n this.gs.environment.pipe(takeUntil(this.destroy$)).subscribe((env) => {\r\n if (env) {\r\n this.eyeTestauditApiUrl = env.eyeTestauditApiUrl;\r\n }\r\n });\r\n }\r\n public auditFilterData: any = null;\r\n private readonly destroy$ = new Subject();\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n\r\n getEyeTestlist(data: any): Observable<any> {\r\n return this.http.post(`${this.eyeTestauditApiUrl}/get-list`, data);\r\n }\r\n \r\n getEyeTestTableExport(data: any): Observable<any> {\r\n return this.http.post(`${this.eyeTestauditApiUrl}/get-list`, data, {\r\n responseType: 'arraybuffer'\r\n });\r\n }\r\n getAuditHistory(payload: any) {\r\n return this.http.get(\r\n `${this.eyeTestauditApiUrl}/get-file-history/${payload?.id}/${payload.type}`\r\n );\r\n }\r\n submitAudit(payload: any) {\r\n return this.http.post(`${this.eyeTestauditApiUrl}/save`, payload);\r\n }\r\n cancelAuditFile(payload: any) {\r\n return this.http.post(`${this.eyeTestauditApiUrl}/cancel`, payload);\r\n }\r\n getAuditdetails(payload: any) {\r\n return this.http.get(\r\n `${this.eyeTestauditApiUrl}/view-file/${payload?.id}`\r\n );\r\n }\r\n viewAuditHistory(payload: any) {\r\n return this.http.get(\r\n `${this.eyeTestauditApiUrl}/user-audited-data/${payload?.id}`\r\n );\r\n }\r\n getAuditFile(payload: any) {\r\n return this.http.get(\r\n `${this.eyeTestauditApiUrl}/get-file/${payload?.id}`\r\n );\r\n }\r\n public exportAsExcelFile(json: any[], excelFileName: string): void {\r\n if (!Array.isArray(json)) {\r\n console.error('Invalid JSON data passed. Expected an array.', json);\r\n return;\r\n }\r\n \r\n const worksheet: XLSX.WorkSheet = XLSX.utils?.json_to_sheet(json);\r\n const workbook: XLSX.WorkBook = { Sheets: { 'data': worksheet }, SheetNames: ['data'] };\r\n const excelBuffer: any = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });\r\n this.saveAsExcelFile(excelBuffer, excelFileName);\r\n }\r\n \r\n \r\n public saveAsExcelFile(buffer: any, fileName: string): void {\r\n const data: Blob = new Blob([buffer], {\r\n type: EXCEL_TYPE\r\n });\r\n FileSaver.saveAs(data, fileName + 'list' + EXCEL_EXTENSION);\r\n }\r\n public saveAsTemplate(buffer: any, fileName: string): void {\r\n const data: Blob = new Blob([buffer], {\r\n type: EXCEL_TYPE\r\n });\r\n FileSaver.saveAs(data, fileName + EXCEL_EXTENSION);\r\n }\r\n public exportAsCSVFile(json: any[], excelFileName: string, identifier?: any[]): void {\r\n const worksheet: XLSX.WorkSheet = XLSX.utils.json_to_sheet(json);\r\n \r\n const csvOutput: string = XLSX.utils.sheet_to_csv(worksheet);\r\n this.saveAsCSVFile(csvOutput, excelFileName);\r\n }\r\n private saveAsCSVFile(buffer: any, fileName: string): void {\r\n const data: Blob = new Blob([buffer], {\r\n type: CSV_TYPE\r\n });\r\n FileSaver.saveAs(data, fileName + CSV_EXTENSION);\r\n }\r\n}\r\n","import { ChangeDetectorRef, Component, EventEmitter, HostListener, Input, OnInit, Output, Provider, forwardRef } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { EyeTestAuditService } from '../services/eye-test-audit.service';\r\n\r\n\r\nconst SELECT_CONTROL_VALUE_ACCESSOR: Provider = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ReactiveSelectComponent),\r\n multi: true,\r\n};\r\n\r\n@Component({\r\n selector: 'lib-reactive-select',\r\n templateUrl: './reactive-select.component.html',\r\n styleUrl: './reactive-select.component.scss',\r\n providers: [SELECT_CONTROL_VALUE_ACCESSOR]\r\n})\r\nexport class ReactiveSelectComponent implements ControlValueAccessor, OnInit {\r\n\r\n private onTouched: Function;\r\n private onChanged: Function;\r\n protected isDisabled: boolean;\r\n @Input() idField: string\r\n @Input() nameField: string\r\n @Input() label: string\r\n @Input() data: any\r\n @Output() itemChange = new EventEmitter()\r\n protected isOpened: boolean = false\r\n protected selected: Record<string, any> | null = null\r\n protected selectedId: string | number\r\n instanceId: string;\r\n\r\n\r\n constructor(private apiService: EyeTestAuditService, private cd: ChangeDetectorRef) {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n this.instanceId = crypto.randomUUID();\r\n this.apiService.dropDownTrigger.subscribe((e) => {\r\n if (e !== this.instanceId) {\r\n this.isOpened = false\r\n this.cd.detectChanges()\r\n }\r\n })\r\n }\r\n\r\n\r\n writeValue(val: string | number): void {\r\n this.selectedId = val\r\n this.selected = this.data.filter((item: Record<string, any>) => item?.[this.idField] === val)[0]\r\n \r\n }\r\n registerOnChange(fn: any): void {\r\n this.onChanged = fn\r\n \r\n }\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn\r\n }\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled\r\n\r\n }\r\n\r\n onSelect(item: Record<string, any>) {\r\n this.onTouched()\r\n this.selected = item\r\n this.selectedId = item?.[this.idField]\r\n this.isOpened = false\r\n this.itemChange.next(this.selectedId)\r\n this.onChanged(this.selectedId)\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n onClick(event: MouseEvent) {\r\n if (!this.isDisabled) {\r\n const targetElement = event.target as HTMLElement;\r\n if (!this.isComponentClicked(targetElement)) {\r\n this.isOpened = false;\r\n }\r\n }\r\n }\r\n\r\n isComponentClicked(targetElement: HTMLElement): boolean {\r\n const parentElement = targetElement.parentElement;\r\n if (parentElement) {\r\n const clickedOnComponent = parentElement.classList.contains('custom-select');\r\n if (clickedOnComponent) {\r\n return true;\r\n } else {\r\n return this.isComponentClicked(parentElement);\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n openDropdown(){\r\n this.isOpened = !this.isOpened;\r\n this.apiService.dropDownTrigger.next(this.instanceId)\r\n }\r\n\r\n\r\n}\r\n","<div class=\"custom-select\">\r\n <div class=\"form-group\">\r\n <label *ngIf=\"label\" class=\"form-label\">{{label}}</label>\r\n <div class=\"position-relative\">\r\n <div (click)=\"openDropdown()\" [ngClass]=\"isDisabled ? 'disable' : ''\" class=\"form-select dropselect ellipse1\">\r\n {{selected?.[nameField]}}</div>\r\n <div *ngIf=\"isOpened\" class=\"card py-2 w-100 position-absolute start-0 z-1 drop-list\">\r\n <ul class=\"list-unstyled mb-2\">\r\n <li *ngFor=\"let item of data\" (click)=\"onSelect(item)\"\r\n [ngClass]=\"item?.[idField] === selected?.[idField] ? 'active' : ''\"\r\n class=\"text px-5 items cursor-pointer py-4 \">\r\n {{item?.[nameField]}}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostListener, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { EyeTestAuditService } from '../services/eye-test-audit.service';\r\n \r\n@Component({\r\n selector: 'lib-stores-select',\r\n templateUrl: './custom-select.component.html',\r\n styleUrl: './custom-select.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CustomSelectComponent implements OnChanges, OnInit {\r\n \r\n @HostListener('document:click', ['$event'])\r\n onClick(event: MouseEvent) {\r\n const target = event.target as HTMLElement;\r\n if (!target.closest('.dropdown')) {\r\n this.showDropdown = false;\r\n }\r\n }\r\n \r\n @Input() items: any\r\n @Input() searchField: string\r\n @Input() multi: boolean\r\n @Input() idField: string\r\n @Input() selectedValues: any = []\r\n @Input() disabled: boolean | undefined\r\n @Input() label: string\r\n \r\n @Output() selected = new EventEmitter<any>()\r\n filteredValues: any = []\r\n showDropdown: boolean\r\n searchValue: string\r\n instanceId: any;\r\n \r\n \r\n constructor(private cd: ChangeDetectorRef, private authService: EyeTestAuditService) { }\r\n ngOnInit(): void {\r\n this.instanceId = crypto.randomUUID();\r\n this.authService.dropDownTrigger.subscribe((e)=>{ \r\n if(e !== this.instanceId){ \r\n this.showDropdown = false\r\n this.cd.detectChanges()\r\n }\r\n })\r\n }\r\n get selectedValuesDisplay(): string {\r\n return this.selectedValues?.map((item:any) => item[this.searchField]).join(', ') || '';\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n \r\n if (changes['items'] && this.items?.length) {\r\n this.initializeItems();\r\n }\r\n if (changes['selectedValues'] && Array.isArray(changes['selectedValues']?.currentValue) && changes['selectedValues']?.currentValue?.length > 0 && changes['selectedValues']?.currentValue[0]) { \r\n \r\n\r\n this.updateSelectedValues();\r\n\r\n }\r\n }\r\n \r\n initializeItems() { \r\n \r\n this.filteredValues = this.items?.map((item: any) => ({ ...item }));\r\n this.updateSelectedValues()\r\n }\r\n \r\n updateSelectedValues() { \r\n this.selectedValues?.forEach((selectedItem: any) => {\r\n const item = this.filteredValues?.find((filteredItem: any) => filteredItem?.[this.idField] === selectedItem?.[this.idField]);\r\n if (item) {\r\n item.isSelected = true;\r\n }\r\n });\r\n \r\n }\r\n \r\n openDropdown(event: any) {\r\n this.searchTerm = ''\r\n this.authService.dropDownTrigger.next(this.instanceId)\r\n event.stopPropagation();\r\n this.showDropdown = !this.showDropdown;\r\n // this.filteredValues = this.selectedValues\r\n this.filteredValues.forEach((data:any)=>{\r\n data.isSelected = false\r\n })\r\n this.selectedValues = []\r\n this.selected.emit(this.selectedValues);\r\n this.searchValue = ''\r\n }\r\n // onInput(event: any) {\r\n // if (!event.target.value) {\r\n // this.filteredValues = [...this.items];\r\n // } else {\r\n // const searchTerm = event.target.value.toLowerCase();\r\n // if(searchTerm.includes(\",\")){\r\n // console.log(searchTerm.split(','))\r\n // this.filteredValues = []\r\n // searchTerm.split(',').map((data:any)=>{\r\n // if(data!=''){\r\n // let filterArray = this.items.filter((item: any) =>{\r\n // console.log(item[this.searchField].toLowerCase(),data.trim().toLowerCase() )\r\n // item[this.searchField].toLowerCase().includes(data.trim().toLowerCase() )\r\n // })\r\n // console.log(filterArray)\r\n\r\n // this.filteredValues = [...this.filteredValues,...filterArray]\r\n\r\n // }\r\n \r\n // })\r\n // console.log(this.filteredValues)\r\n // }else{\r\n // this.filteredValues = this.items.filter((item: any) =>\r\n // item[this.searchField].toLowerCase().includes(searchTerm)\r\n // );\r\n // }\r\n \r\n // }\r\n // this.updateSelectedValues();\r\n // this.cd.detectChanges();\r\n // }\r\n searchTerm:any;\r\n onInput(event: any): void {\r\n const input = event.target.value.trim();\r\n // debugger\r\n this.searchTerm = input;\r\n\r\n if (!input) {\r\n this.filteredValues = [...this.items];\r\n } else {\r\n console.log(input,input.includes(\",\"))\r\n if(input.includes(\",\")){\r\n const searchTerms = input\r\n .split(',')\r\n .map((term:any) => term.trim().toLowerCase())\r\n .filter((term:any) => term); // Remove empty terms\r\n this.filteredValues = this.items.filter((item: any) =>\r\n searchTerms.some((term:any) => item[this.searchField]?.trim().toLowerCase() === term)\r\n ); \r\n }else{\r\n this.filteredValues = this.items.filter((item: any) =>\r\n item[this.searchField].trim().toLowerCase().includes(input.trim().toLowerCase())\r\n );\r\n }\r\n }\r\n\r\n this.filteredValues.forEach((item: any) => {\r\n item.isSelected = this.selectedValues.some(\r\n (selected: any) => selected[this.idField] === item[this.idField]\r\n );\r\n });\r\n this.emitSelectedValues(this.filteredValues);\r\n this.updateSelectedValues(); \r\n this.cd.detectChanges();\r\n }\r\n \r\n \r\n \r\n onSelect(event: any, item: any) {\r\n console.log(item)\r\n console.log(this.selectedValues);\r\n \r\n const isChecked = event.currentTarget.checked;\r\n if (this.multi) {\r\n if (isChecked) {\r\n if (!this.selectedValues.some((elem: any) => elem[this.idField] === item[this.idField])) {\r\n this.selectedValues.push(item);\r\n }\r\n } else {\r\n this.selectedValues = this.selectedValues.filter(\r\n (elem: any) => elem[this.idField] !== item[this.idField]\r\n );\r\n }\r\n } else {\r\n this.selectedValues = [{ ...item }];\r\n console.log(this.selectedValues);\r\n \r\n this.filteredValues.forEach((element: any) => {\r\n element.isSelected = element[this.idField] === item[this.idField];\r\n });\r\n this.showDropdown = false; \r\n }\r\n this.filteredValues.forEach((listItem: any) => {\r\n listItem.isSelected = this.selectedValues.some(\r\n (selected: any) => selected[this.idField] === listItem[this.idField]\r\n );\r\n });\r\n console.log(this.searchTerm.includes(\",\"))\r\n if(this.searchTerm.includes(\",\")){\r\n const searchTerms = this.searchTerm\r\n .split(',')\r\n .map((term:any) => term.trim().toLowerCase())\r\n .filter((term:any) => term); // Remove empty terms\r\n this.filteredValues = this.items.filter((item: any) =>\r\n searchTerms.some((term:any) => item[this.searchField]?.trim().toLowerCase() === term)\r\n ); \r\n }else{\r\n this.filteredValues = this.items.filter((item: any) =>\r\n item[this.searchField].trim().toLowerCase().includes(this.searchTerm.trim().toLowerCase())\r\n );\r\n }\r\n \r\nconsole.log(this.filteredValues)\r\n \r\n // Emit selected values without `isSelected` property\r\n const valuesToEmit = this.selectedValues.map((value: any) => {\r\n const { isSelected, ...selectedItem } = value;\r\n return selectedItem;\r\n });\r\n this.emitSelectedValues(valuesToEmit); // Emit updated selections\r\n this.cd.detectChanges();\r\n }\r\n \r\n \r\n onSelectAll(event: any) {\r\n const selectAll = event.currentTarget.checked;\r\n \r\n if (selectAll) {\r\n this.filteredValues.forEach((item: any) => {\r\n if (!this.selectedValues.some((elem: any) => elem[this.idField] === item[this.idField])) {\r\n this.selectedValues.push(item);\r\n }\r\n });\r\n } else {\r\n console.log(this.selectedValues)\r\n console.log(this.filteredValues);\r\n \r\n this.selectedValues = this.selectedValues.filter(\r\n (item: any) => !this.filteredValues.some(\r\n (filteredItem: any) => filteredItem[this.idField] === item[this.idField]\r\n )\r\n );\r\n }\r\n \r\n // Update the `isSelected` state in the filtered list\r\n this.filteredValues.forEach((item: any) => {\r\n item.isSelected = selectAll;\r\n });\r\n \r\n // Emit selected values without `isSelected` property\r\n const valuesToEmit = this.selectedValues.map((value: any) => {\r\n const { isSelected, ...selectedItem } = value;\r\n return selectedItem;\r\n });\r\n \r\n this.emitSelectedValues(valuesToEmit);\r\n this.cd.detectChanges();\r\n }\r\n \r\n \r\n \r\n \r\n \r\n emitSelectedValues(values: any[]) {\r\n if (this.multi) {\r\n this.selected.emit(values);\r\n } else {\r\n this.selected.emit(values[0]);\r\n }\r\n }\r\n \r\n checkIfAllSelected() {\r\n return this.filteredValues.every((item: any) => item.isSelected);\r\n }\r\n}","<div class=\"outer-container\">\r\n <div [ngClass]=\"disabled ? 'disable-input':''\" (click)=\"openDropdown($event)\" class=\"form-select\">\r\n <ng-container *ngIf=\"multi\" >\r\n <span *ngIf=\"selectedValues?.length\" class=\"select-value mx-2\"> {{selectedValues?.[0]?.[searchField]}}</span> \r\n <!-- <span *ngIf=\"selectedValues?.length > 1\" class=\"select-value mx-2\"><img class=\"me-2\" alt=\"Pic\" src=\"./assets/tango/Image/users-teams.svg\">{{selectedValues?.[1]?.[searchField]}}</span> -->\r\n <span class=\"select-value mx-2\" *ngIf=\"selectedValues?.length > 1\">+{{selectedValues?.length -1}}</span> {{label}} \r\n </ng-container>\r\n <ng-container *ngIf=\"!multi\" >\r\n {{selectedValues?.[0]?.[searchField]}}\r\n </ng-container>\r\n </div>\r\n <div [ngClass]=\"showDropdown ? '' : 'd-none'\" class=\"input-container dropdown\" >\r\n <div class=\"w-100 input-wrapper\">\r\n <input [(ngModel)]=\"searchValue\" placeholder=\"Search\" (input)=\"onInput($event)\" type=\"text\"> \r\n <svg class=\"search-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\r\n <path d=\"M14 14.5L11.1 11.6M12.6667 7.83333C12.6667 10.7789 10.2789 13.1667 7.33333 13.1667C4.38781 13.1667 2 10.7789 2 7.83333C2 4.88781 4.38781 2.5 7.33333 2.5C10.2789 2.5 12.6667 4.88781 12.6667 7.83333Z\" stroke=\"#667085\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n <ul>\r\n <li *ngIf=\"multi && filteredValues?.length\">\r\n <label class=\"form-check\" [for]=\"instanceId\">\r\n <input (change)=\"onSelectAll($event)\" [checked]=\"checkIfAllSelected()\" class=\"form-check-input me-3\" type=\"checkbox\"\r\n [id]=\"instanceId\">\r\n <span class=\"form-check-label\" >\r\n Select All\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngFor=\"let item of filteredValues\" [ngClass]=\"item.isSelected && !multi ? 'selected' : ''\" >\r\n <label [for]=\"item[idField] + instanceId\" [ngClass]=\"multi ? '': 'ps-0'\" class=\"form-check\">\r\n <input [ngClass]=\"multi ? '': 'd-none'\" (change)=\"onSelect($event, item)\" [(ngModel)]=\"item.isSelected\" class=\"form-check-input me-3\" type=\"checkbox\" value=\"\"\r\n [id]=\"item[idField] + instanceId\">\r\n <span class=\"form-check-label\" >\r\n {{item[searchField]}}\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngIf=\"!filteredValues?.length\" >\r\n <span class=\"d-flex align-items-center justify-content-center\" >No data found</span>\r\n </li>\r\n </ul> \r\n </div> \r\n \r\n</div>","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostListener, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { EyeTestAuditService } from '../services/eye-test-audit.service';\r\n\r\n@Component({\r\n selector: 'lib-group-select',\r\n templateUrl: './group-select.component.html',\r\n styleUrl: './group-select.component.scss'\r\n})\r\nexport class GroupSelectComponent implements OnInit,OnChanges {\r\n @HostListener('document:click', ['$event'])\r\n onClick(event: MouseEvent) {\r\n const target = event.target as HTMLElement;\r\n if (!target.closest('.dropdown')) {\r\n this.showDropdown = false;\r\n }\r\n }\r\n \r\n @Input() items: any\r\n @Input() searchField: string\r\n @Input() multi: boolean\r\n @Input() idField: string\r\n @Input() selectedValues: any = []\r\n @Input() disabled: boolean | undefined\r\n @Input() label: string\r\n @Output() selected = new EventEmitter<any>()\r\n filteredValues: any = []\r\n showDropdown: boolean\r\n searchValue: string\r\n instanceId: any;\r\n \r\n \r\n constructor(private cd: ChangeDetectorRef, private authService:EyeTestAuditService) { }\r\n ngOnInit(): void {\r\n this.instanceId = crypto.randomUUID();\r\n this.authService.dropDownTrigger.subscribe((e)=>{ \r\n if(e !== this.instanceId){ \r\n this.showDropdown = false\r\n this.cd.detectChanges()\r\n }\r\n })\r\n }\r\n \r\n ngOnChanges(changes: SimpleChanges): void {\r\n \r\n if (changes['items'] && this.items?.length) {\r\n this.initializeItems();\r\n }\r\n if (changes['selectedValues'] && Array.isArray(changes['selectedValues']?.currentValue) && changes['selectedValues']?.currentValue?.length > 0 && changes['selectedValues']?.currentValue[0]) { \r\n this.updateSelectedValues();\r\n }\r\n }\r\n \r\n initializeItems() {\r\n this.filteredValues = this.items.map((item: any) => ({ ...item }));\r\n this.updateSelectedValues()\r\n }\r\n \r\n updateSelectedValues() { \r\n this.selectedValues?.forEach((selectedItem: any) => {\r\n const item = this.filteredValues?.find((filteredItem: any) => filteredItem?.[this.idField] === selectedItem?.[this.idField]);\r\n if (item) {\r\n item.isSelected = true;\r\n }\r\n });\r\n \r\n }\r\n \r\n openDropdown(event: any) {\r\n this.authService.dropDownTrigger.next(this.instanceId)\r\n event.stopPropagation();\r\n this.showDropdown = !this.showDropdown;\r\n }\r\n \r\n onInput(event: any) {\r\n if (!event.target.value) {\r\n this.filteredValues = [...this.items];\r\n } else {\r\n const searchTerm = event.target.value.toLowerCase();\r\n this.filteredValues = this.items.filter((item: any) =>\r\n item[this.searchField].toLowerCase().includes(searchTerm)\r\n );\r\n }\r\n this.updateSelectedValues();\r\n this.cd.detectChanges();\r\n }\r\n \r\n onSelect(event: any, item: any) { \r\n if (this.multi) {\r\n if (event.currentTarget.checked) {\r\n this.selectedValues.push(item ); \r\n } else {\r\n this.selectedValues = this.selectedValues.filter((elem: any) => elem[this.idField] !== item[this.idField]);\r\n }\r\n } else {\r\n this.selectedValues = [{ ...item }];\r\n this.filteredValues.forEach((element:any) => {\r\n if(element[this.idField] !== item[this.idField]){\r\n element.isSelected = false\r\n }\r\n });\r\n this.showDropdown = false;\r\n }\r\n \r\n const valuesToEmit = this.selectedValues.map((value: any) => {\r\n const selectedItem = { ...value };\r\n delete selectedItem.isSelected;\r\n return selectedItem;\r\n });\r\n \r\n this.cd.detectChanges();\r\n this.emitSelectedValues(valuesToEmit);\r\n \r\n }\r\n \r\n onSelectAll(event: any) {\r\n const selectAll = event.currentTarget.checked;\r\n this.filteredValues.forEach((item: any) => item.isSelected = selectAll);\r\n \r\n if (selectAll) {\r\n this.selectedValues = [...this.filteredValues];\r\n } else {\r\n this.selectedValues = [];\r\n }\r\n \r\n const valuesToEmit = this.selectedValues.map((value: any) => {\r\n const { isSelected, ...selectedItem } = value;\r\n return selectedItem;\r\n });\r\n \r\n this.cd.detectChanges();\r\n this.emitSelectedValues(valuesToEmit);\r\n }\r\n \r\n \r\n emitSelectedValues(values: any[]) {\r\n if (this.multi) {\r\n this.selected.emit(values);\r\n } else {\r\n this.selected.emit(values[0]);\r\n }\r\n }\r\n \r\n checkIfAllSelected() {\r\n return this.filteredValues.every((item: any) => item.isSelected);\r\n }\r\n}\r\n","<div class=\"outer-container\">\r\n <div [ngClass]=\"disabled ? 'disable-input':''\" (click)=\"openDropdown($event)\" class=\"form-select\">\r\n <ng-container *ngIf=\"multi\" >\r\n <span *ngIf=\"selectedValues?.length\" class=\"select-value w-50 mx-2\"> <img class=\"me-2\" alt=\"Pic\" src=\"./assets/tango/Image/users-teams.svg\">{{selectedValues?.[0]?.[searchField]}}</span> \r\n <!-- <span *ngIf=\"selectedValues?.length > 1\" class=\"select-value mx-2\"><img class=\"me-2\" alt=\"Pic\" src=\"./assets/tango/Image/users-teams.svg\">{{selectedValues?.[1]?.[searchField]}}</span> -->\r\n <span class=\"select-value mx-2\" *ngIf=\"selectedValues?.length > 1\">+{{selectedValues?.length -1}}</span> {{label}} \r\n </ng-container>\r\n <ng-container *ngIf=\"!multi\" >\r\n {{selectedValues?.[0]?.[searchField]}}\r\n </ng-container>\r\n </div>\r\n <div [ngClass]=\"showDropdown ? '' : 'd-none'\" class=\"input-container dropdown\" >\r\n <div class=\"w-100 input-wrapper\">\r\n <input [(ngModel)]=\"searchValue\" placeholder=\"Search\" (input)=\"onInput($event)\" type=\"text\"> \r\n <svg class=\"search-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\r\n <path d=\"M14 14.5L11.1 11.6M12.6667 7.83333C12.6667 10.7789 10.2789 13.1667 7.33333 13.1667C4.38781 13.1667 2 10.7789 2 7.83333C2 4.88781 4.38781 2.5 7.33333 2.5C10.2789 2.5 12.6667 4.88781 12.6667 7.83333Z\" stroke=\"#667085\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n <ul>\r\n <li *ngIf=\"multi && filteredValues?.length\">\r\n <label class=\"form-check\" [for]=\"instanceId\" >\r\n <input (change)=\"onSelectAll($event)\" [checked]=\"checkIfAllSelected()\" class=\"form-check-input me-3\" type=\"checkbox\"\r\n [id]=\"instanceId\">\r\n <span class=\"form-check-label\" >\r\n Select All\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngFor=\"let item of filteredValues\" [ngClass]=\"item.isSelected && !multi ? 'selected' : ''\" >\r\n <label [for]=\"item[idField] + instanceId\" [ngClass]=\"multi ? '': 'ps-0'\" class=\"form-check\">\r\n <input [ngClass]=\"multi ? '': 'd-none'\" (change)=\"onSelect($event, item)\" [(ngModel)]=\"item.isSelected\" class=\"form-check-input me-3\" type=\"checkbox\" value=\"\"\r\n [id]=\"item[idField] + instanceId\">\r\n <span class=\"form-check-label\" >\r\n {{item[searchField]}}\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngIf=\"!filteredValues?.length\" >\r\n <span class=\"d-flex align-items-center justify-content-center\" >No data found</span>\r\n </li>\r\n </ul> \r\n </div> \r\n \r\n</div>","import { ChangeDetectorRef, Component, OnInit } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { GlobalStateService, PageInfoService } from 'tango-app-ui-global';\r\nimport dayjs from 'dayjs';\r\nimport 'dayjs/locale/en';\r\nimport utc from 'dayjs/plugin/utc';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { TraxService } from '../../../services/trax.service';\r\nimport { EyeTestAuditService } from '../services/eye-test-audit.service';\r\nimport { ToastService } from 'tango-app-ui-shared';\r\n@Component({\r\n selector: 'lib-eye-test',\r\n templateUrl: './eye-test.component.html',\r\n styleUrl: './eye-test.component.scss'\r\n})\r\nexport class EyeTestComponent implements OnInit {\r\n dayjs = dayjs\r\n eyeTestForm: FormGroup;\r\n selectedDateRange: any = {};\r\n selectedDate: any;\r\n isCustomDate: any;\r\n headerFilters: any = [];\r\n ClusterList: any = [];\r\n stores: any = [];\r\n clientData: any;\r\n private destroy$ = new Subject();\r\n groups: any = [];\r\n storeList: any[] = [];\r\n noData = false;\r\n loading = true;\r\n eyeTestData: any;\r\n typeValue: any = 'remote';\r\n type: any = [\r\n { value: 'remote', label: 'Remote Test Compliance' },\r\n { value: 'physical', label: 'Eye Test Compliance' },\r\n\r\n ]\r\n auditType: any = [{ label: 'All', value: 'all' },\r\n { label: 'Adult', value: 'adult' },\r\n { label: 'Kid', value: 'kid' },\r\n ]\r\n constructor(private pageInfo: PageInfoService, private fb: FormBuilder, private traxService: TraxService, private eyeService: EyeTestAuditService, private router: Router, private cd: ChangeDetectorRef,\r\n public gs: GlobalStateService, private ts: ToastService, private route: ActivatedRoute) {\r\n }\r\n headDate: any;\r\n headDateEnd:any\r\n ngOnInit(): void {\r\n this.typeValue = 'remote';\r\n this.isCustomDate = (m: dayjs.Dayjs) => {\r\n const isValidDate = m > this.dayjs();\r\n return isValidDate ? 'invalid-date' : false;\r\n }\r\n this.selectedDateRange = {\r\n startDate: this.dayjs().subtract(1, 'day').format('DD-MM-YYYY'),\r\n endDate: this.dayjs().subtract(1, 'day').format('DD-MM-YYYY')\r\n }\r\n console.log(this.selectedDateRange.startDate)\r\n this.route.queryParams.subscribe(params => {\r\n if (params && params['fromDate'] && params['toDate'] && params['typeValue']) {\r\n this.typeValue = params['typeValue']\r\n \r\n this.selectedDateRange.startDate = this.dayjs( params['fromDate'], 'YYYY-MM-DD').format('DD-MM-YYYY');\r\n this.selectedDateRange.endDate = this.dayjs( params['toDate'], 'YYYY-MM-DD').format('DD-MM-YYYY');\r\n } else {\r\n console.log(\"----\",this.selectedDateRange.startDate)\r\n this.router.navigate(['/manage/trax/audit'], {\r\n queryParams: { fromDate:this.dayjs( this.selectedDateRange.startDate, 'DD-MM-YYYY').format('YYYY-MM-DD'), toDate:this.dayjs( this.selectedDateRange.endDate, 'DD-MM-YYYY').format('YYYY-MM-DD'), typeValue: this.typeValue }\r\n });\r\n }\r\n });\r\n let dateTime = this.selectedDateRange.startDate\r\n this.headDate = this.dayjs(dateTime, 'DD-MM-YYYY').format('MMM, DD');\r\n this.headDateEnd = this.dayjs(this.selectedDateRange.endDate, 'DD-MM-YYYY').format('MMM DD, YYYY');\r\n this.createForm();\r\n this.eyeTestForm.get('Type')?.setValue(this.typeValue)\r\n this.gs.dataRangeValue.pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (data: any) => {\r\n // let data = JSON.parse(localStorage.getItem(\"header-filters\") || \"\")\r\n if (data?.client) {\r\n this.headerFilters = data;\r\n this.getAllGroups();\r\n this.getAllStores();\r\n } else {\r\n let userinfo = JSON.parse(localStorage.getItem(\"user-info\") || \"\")\r\n if (userinfo && userinfo?.clientId) {\r\n this.headerFilters.client = userinfo?.clientId\r\n this.getAllGroups();\r\n this.getAllStores();\r\n }\r\n }\r\n },\r\n });\r\n }\r\n\r\n getAllGroups() {\r\n this.traxService.getclusters({ clientId: this.headerFilters?.client, group: [], city: [] }).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ClusterList = res.data.groupData\r\n } else {\r\n this.ClusterList = []\r\n }\r\n }\r\n })\r\n }\r\n // clientDetails() {\r\n // this.traxService.getclient({ clientId: this.headerFilters.client }).subscribe({\r\n // next: (res: any) => {\r\n // if (res && res.code == 200) {\r\n // this.clientData = res.data.result\r\n // }\r\n // }\r\n // })\r\n // }\r\n\r\n getAllStores() {\r\n this.traxService.getStoreslist({ clientId: this.headerFilters?.client, clusters: this.groups, city: [] }).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res?.code == 200) {\r\n this.storeList = res.data.storesData;\r\n this.eyeTestForm.get('storeList')?.setValue(this.storeList)\r\n this.onSubmit();\r\n } else {\r\n this.storeList = [];\r\n }\r\n },\r\n error: (err) => {\r\n this.storeList = [];\r\n },\r\n });\r\n }\r\n\r\n typeChange(event: any) {\r\n\r\n this.eyeTestForm.get('Type')?.setValue(event)\r\n this.router.navigate(['/manage/trax/audit'], {\r\n queryParams: { fromDate: this.dayjs(this.selectedDateRange.startDate, \"DD-MM-YYYY\").format(\r\n \"YYYY-MM-DD\"\r\n ), toDate: this.dayjs(this.selectedDateRange.endDate, \"DD-MM-YYYY\").format(\r\n \"YYYY-MM-DD\"\r\n ), typeValue: event }\r\n });\r\n this.cd.detectChanges()\r\n }\r\n auditTypeChange(event: any) {\r\n this.eyeTestForm.get('auditType')?.setValue(event)\r\n this.cd.detectChanges()\r\n }\r\n\r\n datechange(event: any) {\r\n if (event && event.startDate && event.endDate) {\r\n \r\n if (\r\n this.dayjs(event.startDate).isValid() &&\r\n this.dayjs(event.endDate).isValid()\r\n ) {\r\n this.selectedDateRange.startDate = this.dayjs(event.startDate, \"DD-MM-YYYY\").format(\r\n \"YYYY-MM-DD\"\r\n );\r\n this.selectedDateRange.endDate = this.dayjs(event.endDate, \"DD-MM-YYYY\").format(\"YYYY-MM-DD\");\r\n \r\n this.eyeTestForm.get('fromDate')?.setValue(this.selectedDateRange.startDate)\r\n if (this.selectedDateRange.startDate && this.dayjs(this.selectedDateRange.startDate).isValid()) {\r\n this.headDate = this.dayjs(this.selectedDateRange.startDate).format('MMM, DD');\r\n \r\n }\r\n this.eyeTestForm.get('toDate')?.setValue(this.selectedDateRange.endDate)\r\n if (this.selectedDateRange.endDate && this.dayjs(this.selectedDateRange.endDate).isValid()) {\r\n this.headDateEnd = this.dayjs(this.selectedDateRange.endDate).format('MMM DD, YYYY');\r\n }\r\n this.router.navigate(['/manage/trax/audit'], {\r\n queryParams: { fromDate:this.selectedDateRange.startDate,toDate:this.selectedDateRange.endDate, typeValue: this.typeValue }\r\n });\r\n }\r\n }\r\n }\r\n\r\n onStartDateChange(event: any) {\r\n if (this.dayjs(event.startDate).isValid()) {\r\n this.isCustomDate = (m: dayjs.Dayjs) => {\r\n const isValidDate =\r\n m > this.dayjs() || m > this.dayjs(event.startDate.add(60, \"days\"));\r\n return isValidDate ? \"invalid-date\" : false;\r\n };\r\n }\r\n }\r\n\r\n resetValidation() {\r\n this.isCustomDate = (m: dayjs.Dayjs) => {\r\n // Check if the given date is before yesterday\r\n return m.isAfter(this.dayjs(), 'day') ? 'invalid-date' : false;\r\n };\r\n }\r\n\r\n selectedType: any;\r\n createForm() {\r\n const isRemote = this.selectedType === 'physical'; // or however you're determining it\r\n\r\n this.eyeTestForm = this.fb.group({\r\n fromDate: [this.dayjs(this.selectedDateRange.startDate, \"DD-MM-YYYY\").format(\"YYYY-MM-DD\")],\r\n toDate: [this.dayjs(this.selectedDateRange.endDate, \"DD-MM-YYYY\").format('YYYY-MM-DD')],\r\n type: this.typeValue,\r\n ClusterList: [this.groups],\r\n storeList: [this.stores],\r\n ...(isRemote ? {} : { auditType: 'all' }) // Conditionally add auditType\r\n });\r\n\r\n }\r\n\r\n ongroupSelect(event: any) {\r\n this.eyeTestForm.get('ClusterList')?.setValue(event)\r\n this.groups = event.map((el: any) => el.groupName)\r\n this.traxService.getStoreslist({ clientId: this.headerFilters.client, clusters: this.groups, city: [] }).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.storeList = res.data.storesData;\r\n this.eyeTestForm.get('storeList')?.setValue(this.storeList)\r\n }\r\n }\r\n })\r\n this.cd.detectChanges();\r\n }\r\n\r\n onStoreSelect(event: any) {\r\n this.eyeTestForm.get('storeList')?.setValue(event)\r\n this.cd.detectChanges();\r\n }\r\n searchValue: any = ''\r\n searchData() {\r\n this.searchValue = this.searchValue;\r\n this.onSubmit()\r\n }\r\n exportXLSX() {\r\n let finalStores: any = []\r\n if (Array.isArray(this.eyeTestForm.value.storeList)) {\r\n this.eyeTestForm.value.storeList.forEach((store: any) => {\r\n finalStores.push(store.storeId);\r\n });\r\n }\r\n if (this.eyeTestForm.value.auditType === 'all')\r\n this.eyeTestForm.value.auditType = [\"adult\", \"kid\"]\r\n let requestData = {\r\n clientId: this.headerFilters?.client,\r\n fromDate: this.eyeTestForm.value.fromDate,\r\n toDate: this.eyeTestForm.value.toDate,\r\n type: this.eyeTestForm.value.type,\r\n ...(this.eyeTestForm.value.type !== 'remote' && {\r\n demographics: Array.isArray(this.eyeTestForm.value.auditType)\r\n ? this.eyeTestForm.value.auditType\r\n : [this.eyeTestForm.value.auditType]\r\n }),\r\n storeId: finalStores,\r\n limit: 10000,\r\n offset: 1,\r\n searchValue: this.searchValue,\r\n isExport: true,\r\n sortOrder: this.sortOrder ? this.sortOrder : 1,\r\n sortBy: this.sortedColumn ? this.sortedColumn : 'updatedAt',\r\n }\r\n this.eyeService.getEyeTestTableExport(requestData).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n this.eyeService.saveAsExcelFile(res, `${this.eyeTestForm.value.type} Eye Test Table `);\r\n this.cd.detectChanges();\r\n },\r\n error: (err: any) => {\r\n this.ts.getErrorToast(err?.error?.error ? err?.error?.error : err?.error?.message)\r\n },\r\n complete: () => { },\r\n\r\n })\r\n }\r\n totalItems: any = 0;\r\n offset = 1;\r\n limit = 10;\r\n tableObj: any = {}\r\n onSubmit() {\r\n this.typeValue = this.eyeTestForm?.value?.type\r\n this.loading = true;\r\n this.noData = false;\r\n let finalStores: any = []\r\n if (Array.isArray(this.eyeTestForm.value.storeList)) {\r\n this.eyeTestForm.value.storeList.forEach((store: any) => {\r\n finalStores.push(store.storeId);\r\n });\r\n }\r\n if (this.eyeTestForm.value.auditType === 'all')\r\n this.eyeTestForm.value.auditType = [\"adult\", \"kid\"]\r\n // const searchAfter = this.eyeTestData ? (this.sortOrder == -1 ? this.eyeTestData[0]?.sort : this.eyeTestData?.pop().sort) : []\r\n let requestData = {\r\n clientId: this.headerFilters?.client,\r\n fromDate: this.eyeTestForm.value.fromDate,\r\n toDate: this.eyeTestForm.value.toDate,\r\n type: this.eyeTestForm.value.type,\r\n ...(this.eyeTestForm.value.type !== 'remote' && {\r\n demographics: Array.isArray(this.eyeTestForm.value.auditType)\r\n ? this.eyeTestForm.value.auditType\r\n : [this.eyeTestForm.value.auditType]\r\n }),\r\n storeId: finalStores,\r\n // searchAfter: searchAfter,\r\n limit: 10,\r\n offset: 1,\r\n searchValue: this.searchValue,\r\n isExport: false,\r\n sortOrder: this.sortOrder ? this.sortOrder : -1,\r\n sortBy: this.sortedColumn ? this.sortedColumn : 'date',\r\n }\r\n \r\n this.tableObj = requestData;\r\n this.eyeService.getEyeTestlist(requestData).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code === 200) {\r\n\r\n this.eyeTestData = res?.data.result;\r\n this.totalItems = res.data?.count;\r\n this.setPaginationSizes();\r\n this.loading = false;\r\n this.noData = false;\r\n } else {\r\n this.eyeTestData = []\r\n this.loading = false;\r\n this.noData = true;\r\n this.totalItems = 0;\r\n }\r\n this.cd.detectChanges();\r\n },\r\n error: (err: any) => {\r\n this.loading = false;\r\n this.noData = true;\r\n this.cd.detectChanges();\r\n },\r\n complete: () => {\r\n },\r\n\r\n })\r\n }\r\n paginationSizes: any[] = [];\r\n pageSize = 10;\r\n setPaginationSizes() {\r\n if (this.totalItems > 10) {\r\n this.paginationSizes = [10, 20, 30];\r\n } else {\r\n this.paginationSizes = [this.totalItems]; // Just one option if less than 10\r\n }\r\n this.pageSize = this.paginationSizes[0];\r\n }\r\n\r\n onPageChange(pageOffset: number) {\r\n this.limit = 10; this.pageSize = 10;\r\n this.loading = true;\r\n this.noData = false;\r\n this.offset = Number(pageOffset);\r\n let finalStores: any = []\r\n if (Array.isArray(this.eyeTestForm.value.storeList)) {\r\n this.eyeTestForm.value.storeList.forEach((store: any) => {\r\n finalStores.push(store.storeId);\r\n });\r\n }\r\n if (this.eyeTestForm.value.auditType === 'all')\r\n this.eyeTestForm.value.auditType = [\"adult\", \"kid\"]\r\n // const searchAfter = this.eyeTestData ? (this.sortOrder == -1 ? this.eyeTestData[0]?.sort : this.eyeTestData?.pop().sort) : []\r\n let requestData = {\r\n clientId: this.headerFilters?.client,\r\n fromDate: this.eyeTestForm.value.fromDate,\r\n toDate: this.eyeTestForm.value.toDate,\r\n type: this.eyeTestForm.value.type,\r\n ...(this.eyeTestForm.value.type !== 'remote' && {\r\n demographics: Array.isArray(this.eyeTestForm.value.auditType)\r\n ? this.eyeTestForm.value.auditType\r\n : [this.eyeTestForm.value.auditType]\r\n }),\r\n storeId: finalStores,\r\n limit: this.limit,\r\n offset: this.offset,\r\n // searchAfter: searchAfter,\r\n searchValue: this.searchValue,\r\n isExport: false,\r\n sortOrder: this.sortOrder,\r\n sortBy: this.sortedColumn,\r\n }\r\n this.eyeService.getEyeTestlist(requestData).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code === 200) {\r\n // if(res?.data.eyeTestData.length ===0){\r\n // this.eyeTestData =[]\r\n // this.loading = false;\r\n // this.noData = true;\r\n // this.totalItems = 0; \r\n // } else {\r\n this.eyeTestData = res?.data.result;\r\n this.totalItems = res.data?.count;\r\n this.loading = false;\r\n this.noData = false;\r\n // }\r\n } else {\r\n this.eyeTestData = []\r\n this.loading = false;\r\n this.noData = true;\r\n this.totalItems = 0;\r\n }\r\n this.cd.detectChanges();\r\n },\r\n error: (err) => {\r\n this.eyeTestData = [];\r\n this.totalItems = 0;\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n })\r\n }\r\n\r\n onPageSizeChange(pageSize: number) {\r\n this.offset = 1;\r\n this.loading = true;\r\n this.noData = false;\r\n this.pageSize = Number(pageSize);\r\n this.limit = Number(pageSize);\r\n let finalStores: any = []\r\n if (Array.isArray(this.eyeTestForm.value.storeList)) {\r\n this.eyeTestForm.value.storeList.forEach((store: any) => {\r\n finalStores.push(store.storeId);\r\n });\r\n }\r\n if (this.eyeTestForm.value.auditType === 'all')\r\n this.eyeTestForm.value.auditType = [\"adult\", \"kid\"]\r\n // const searchAfter = this.eyeTestData ? (this.sortOrder == -1 ? this.eyeTestData[0]?.sort : this.eyeTestData?.pop().sort) : []\r\n let requestData = {\r\n clientId: this.headerFilters?.client,\r\n fromDate: this.eyeTestForm.value.fromDate,\r\n toDate: this.eyeTestForm.value.toDate,\r\n type: this.eyeTestForm.value.type,\r\n ...(this.eyeTestForm.value.type !== 'remote' && {\r\n demographics: Array.isArray(this.eyeTestForm.value.auditType)\r\n ? this.eyeTestForm.value.auditType\r\n : [this.eyeTestForm.value.auditType]\r\n }),\r\n storeId: finalStores,\r\n limit: this.limit,\r\n offset: this.offset,\r\n // searchAfter: searchAfter,\r\n searchValue: this.searchValue,\r\n isExport: false,\r\n sortOrder: this.sortOrder,\r\n sortBy: this.sortedColumn,\r\n }\r\n this.eyeService.getEyeTestlist(requestData).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code === 200) {\r\n // if(res?.data.eyeTestData.length ===0){\r\n // this.eyeTestData =[]\r\n // this.loading = false;\r\n // this.noData = true;\r\n // this.totalItems = 0; \r\n // } else {\r\n this.eyeTestData = res?.data.result;\r\n this.totalItems = res.data?.count;\r\n this.loading = false;\r\n this.noData = false;\r\n // }\r\n } else {\r\n this.eyeTestData = []\r\n this.loading = false;\r\n this.noData = true;\r\n this.totalItems = 0;\r\n }\r\n this.cd.detectChanges();\r\n },\r\n error: (err) => {\r\n this.eyeTestData = [];\r\n this.totalItems = 0;\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n })\r\n }\r\n sortedColumn: any;\r\n sortOrder: any;\r\n onSort(column: string) {\r\n if (this.sortedColumn === column) {\r\n this.sortOrder = this.sortOrder === 1 ? -1 : 1;\r\n } else {\r\n this.sortedColumn = column ? column : 'storeName';\r\n this.sortOrder = 1;\r\n }\r\n this.onSubmit();\r\n }\r\n\r\n\r\n\r\n eyeTestView(data: any) {\r\n this.router.navigate(['/manage/trax/audit/start'], { queryParams: { type: this.eyeTestForm.value.type, storeId: data?._source?.storeId, _id: data._id } });\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n","<div class=\"card mb-2\">\r\n <form [formGroup]=\"eyeTestForm\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12 mt-7 mb-3\">\r\n <div class=\"row px-3\">\r\n <div class=\"col-md-6\">\r\n <div class=\"row\">\r\n <div class=\"col-6 mb-0\">\r\n <div class=\"position-relative\">\r\n <span style=\"top: 20%;\" class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-14 z-2\" style=\"min-width: 230px !important;\"\r\n type=\"text\" matInput ngxDaterangepickerMd [drops]=\"'down'\"\r\n [opens]=\"'right'\" [alwaysShowCalendars]=\"false\" [keepCalendarOpeningWithRange]=\"true\"\r\n [showCancel]=\"false\" autocomplete=\"off\" [(ngModel)]=\"selectedDateRange\"\r\n [ngModelOptions]=\"{standalone: true}\" (datesUpdated)=\"datechange($event)\" (click)=\"resetValidation()\" \r\n (startDateChanged)=\"onStartDateChange($event)\" [isCustomDate]=\"isCustomDate\" [autoApply]=\"true\" \r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n name=\"daterange\" [readonly]=\"true\" />\r\n </div>\r\n </div>\r\n <div [ngClass]=\"eyeTestForm.get('type')?.value ==='remote' ? 'col-6 mb-4' : 'col-4 mb-4'\" class=\"col-2 mb-4\">\r\n <lib-reactive-select formControlName=\"type\" [idField]=\"'value'\" [nameField]=\"'label'\"\r\n [data]=\"type\" (itemChange)=\"typeChange($event)\"></lib-reactive-select>\r\n </div>\r\n <div *ngIf=\"eyeTestForm.get('type')?.value !=='remote'\" class=\"col-2 mb-4\">\r\n <lib-reactive-select formControlName=\"auditType\" [idField]=\"'value'\" [nameField]=\"'label'\"\r\n [data]=\"auditType\" (itemChange)=\"auditTypeChange($event)\"></lib-reactive-select>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"row\">\r\n <div class=\"mb-4\" style=\"width: 45% !important;\">\r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(eyeTestForm.get('ClusterList')?.value?.length)\">\r\n Select cluster\r\n </div>\r\n <lib-group-select [items]=\"ClusterList\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'groupName'\"\r\n [idField]=\"'groupName'\" (selected)=\"ongroupSelect($event)\"\r\n [selectedValues]=\"eyeTestForm.get('ClusterList')?.value\">\r\n </lib-group-select>\r\n </div>\r\n \r\n </div>\r\n <div class=\"mb-4\" style=\"width: 40% !important;\">\r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(eyeTestForm.get('storeList')?.value?.length)\">\r\n Select Stores\r\n </div>\r\n <lib-stores-select [items]=\"storeList\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'storeName'\"\r\n [idField]=\"'storeId'\" (selected)=\"onStoreSelect($event)\"\r\n [selectedValues]=\"eyeTestForm.get('storeList')?.value\"></lib-stores-select>\r\n </div>\r\n </div>\r\n <div style=\"width: 15% !important;\">\r\n <a (click)=\"onSubmit()\" type=\"submit\" class=\"btn btn-primary px-4 py-3\"><span>Apply</span></a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n</div>\r\n\r\n<div class=\"card my-3\">\r\n <div class=\"card-header border-0 py-1\">\r\n <h3 class=\"card-title dashed w-100 align-items-start flex-column\">\r\n <span class=\"title-text\"><span class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\">\r\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#FEE4E2\"/>\r\n <g clip-path=\"url(#clip0_235_24234)\">\r\n <path d=\"M16 13.3335V16.0002M16 18.6668H16.0067M22.6667 16.0002C22.6667 19.6821 19.6819 22.6668 16 22.6668C12.3181 22.6668 9.33337 19.6821 9.33337 16.0002C9.33337 12.3183 12.3181 9.3335 16 9.3335C19.6819 9.3335 22.6667 12.3183 22.6667 16.0002Z\" stroke=\"#D92D20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_235_24234\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" transform=\"translate(8 8)\"/>\r\n </clipPath>\r\n </defs>\r\n </svg></span><span class=\"dashed-desc\">Eye test video preview is available for 7 days. Audit data remains accessible, but videos will not be retained beyond this period.</span></span>\r\n </h3>\r\n </div> \r\n</div>\r\n\r\n<div class=\"card mt-3\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">Eye Test <span *ngIf=\"this.totalItems\" class=\"badge badge-light-primary\">{{this.totalItems}} Total</span>\r\n </span>\r\n <span class=\"text-sub mb-2\">Based on {{ headDate | date: 'MMM d' }} - {{\r\n headDateEnd | date: 'MMM d, y' }}</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input (change)=\"searchData()\" [(ngModel)]=\"searchValue\" type=\"text\" class=\"form-control ps-14 me-2\" autocomplete=\"off\" placeholder=\"Search\" />\r\n\r\n \r\n \r\n <button *ngIf=\"!noData && !loading\" type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata-table\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this eye test table</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!noData && !loading\" class=\"card-body\">\r\n <div class=\"table-responsive\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('date')\"> Date <svg \r\n [ngClass]=\"sortedColumn === 'date' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'date' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th><span class=\"cursor-pointer\" (click)=\"onSort('storeName')\">Store Name <svg \r\n [ngClass]=\"sortedColumn === 'storeName' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storeName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th><span class=\"cursor-pointer\" (click)=\"onSort('storeId')\">Store ID <svg \r\n [ngClass]=\"sortedColumn === 'storeId' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storeId' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th *ngIf=\"this.typeValue ==='remote'\" class=\"text-start\">Engagement ID</th>\r\n <th *ngIf=\"this.typeValue !=='remote'\" class=\"text-start\">Optom ID</th>\r\n <th *ngIf=\"this.typeValue !=='remote'\" class=\"text-start\">Queue ID</th>\r\n <th class=\"text-start\">Compliance Score</th>\r\n <th><span class=\"cursor-pointer\" (click)=\"onSort('coveredStepsAI')\">Steps Covered By AI <svg \r\n [ngClass]=\"sortedColumn === 'coveredStepsAI' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'coveredStepsAI' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span> </th>\r\n \r\n <th><span class=\"cursor-pointer\" (click)=\"onSort('trustScore')\">Trust Score <svg \r\n [ngClass]=\"sortedColumn === 'trustScore' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'trustScore' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span> </th>\r\n\r\n <th *ngIf=\"this.typeValue !=='remote'\"><span class=\"cursor-pointer\" (click)=\"onSort('visitorsType')\">Visitor Type <svg \r\n [ngClass]=\"sortedColumn === 'visitorsType' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'visitorsType' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span> </th>\r\n <th class=\"text-start\">Test Duration</th>\r\n <th><span class=\"cursor-pointer\" (click)=\"onSort('auditStatus')\">Audit Status <svg \r\n [ngClass]=\"sortedColumn === 'auditStatus' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'auditStatus' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th class=\"text-start\">Audited By</th>\r\n <th class=\"text-start\">Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let obj of eyeTestData; let i=index;\">\r\n <td>{{obj?._source?.date}}</td>\r\n <td>{{obj?._source?.storeName}}</td>\r\n <td>{{obj?._source?.storeId}}</td>\r\n <td *ngIf=\"this.typeValue ==='remote'\" class=\"engage-text\">{{obj?._source?.engagementId}}</td>\r\n <td *ngIf=\"this.typeValue !=='remote'\">{{obj?._source?.optumId ? obj?._source?.optumId :''}}</td>\r\n <td *ngIf=\"this.typeValue !=='remote'\" class=\"engage-text\">{{obj?._source?.queueId ? obj?._source?.queueId:''}}</td>\r\n <td>{{obj?._source?.complianceScore ? obj?._source?.complianceScore :'--'}}<span *ngIf=\"obj?._source?.complianceScore\">%</span></td>\r\n <td>{{obj?._source?.coveredStepsAI ? obj?._source?.coveredStepsAI:'--'}}</td>\r\n <td>{{obj?._source?.trustScore ? obj?._source?.trustScore:'--'}}</td>\r\n <td *ngIf=\"this.typeValue !=='remote'\">{{obj?._source?.visitorsType ? obj?._source?.visitorsType:'--'}}</td>\r\n <td>{{obj?._source?.min ? obj?._source?.min :'0'}} mins {{obj?._source?.sec ? obj?._source?.sec:'0'}} secs</td>\r\n <td><span class=\"badge badge-light-primary\" *ngIf=\"obj?._source?.auditStatus ==='Yet-to-Audit'\">{{obj?._source?.auditStatus}}</span>\r\n <span class=\"badge badge-light-warning\" *ngIf=\"obj?._source?.auditStatus ==='Re-Audited'\">{{obj?._source?.auditStatus}}</span>\r\n <span class=\"badge badge-light-success\" *ngIf=\"obj?._source?.auditStatus ==='Audited'\">{{obj?._source?.auditStatus}}</span>\r\n <span class=\"badge badge-light-info\" *ngIf=\"obj?._source?.auditStatus ==='In-Progress'\">{{obj?._source?.auditStatus}}</span></td>\r\n <td>{{obj?._source?.auditedBy?obj?._source?.auditedBy:\"-\"}}</td>\r\n <td class=\"cursor-pointer\" (click)=\"eyeTestView(obj)\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\">\r\n <path d=\"M0.833496 8.00016C0.833496 8.00016 4.16683 1.3335 10.0002 1.3335C15.8335 1.3335 19.1668 8.00016 19.1668 8.00016C19.1668 8.00016 15.8335 14.6668 10.0002 14.6668C4.16683 14.6668 0.833496 8.00016 0.833496 8.00016Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M10.0002 10.5002C11.3809 10.5002 12.5002 9.38087 12.5002 8.00016C12.5002 6.61945 11.3809 5.50016 10.0002 5.50016C8.61945 5.50016 7.50016 6.61945 7.50016 8.00016C7.50016 9.38087 8.61945 10.5002 10.0002 10.5002Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n</div>\r\n</div>\r\n<div class=\"card-footer\" *ngIf=\"!noData && !loading\">\r\n <lib-pagination [itemsPerPage]=\"pageSize\" [currentPage]=\"offset\" [totalItems]=\"totalItems\"\r\n [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\" (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n</div>\r\n</div>","import { Component, OnInit } from '@angular/core';\r\nimport { PageInfoService } from 'tango-app-ui-global';\r\n\r\n@Component({\r\n selector: 'lib-eye-test-audit',\r\n templateUrl: './eye-test-audit.component.html',\r\n styleUrl: './eye-test-audit.component.scss'\r\n})\r\nexport class EyeTestAuditComponent implements OnInit {\r\n constructor(private pageInfo: PageInfoService,){\r\n }\r\n\r\n ngOnInit(): void { \r\n this.setPageData();\r\n }\r\n setPageData() {\r\n this.pageInfo.setTitle('Eye Test')\r\n \r\n this.pageInfo.setBreadcrumbs([\r\n { title: 'Tango Trax', path: '/manage/trax/dashboard', isActive: false, isSeparator: false },\r\n { title: 'Tango Trax', path: '/manage/trax/dashboard', isActive: false, isSeparator: true }, \r\n ])\r\n}\r\n}\r\n","<lib-eye-test></lib-eye-test>\r\n","import { Component, OnInit, ChangeDetectorRef, ViewChild, OnDestroy } from '@angular/core';\r\nimport { BehaviorSubject, Subject, takeUntil } from 'rxjs';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { NgbActiveModal, NgbModal, NgbTooltip } from '@ng-bootstrap/ng-bootstrap';\r\nimport { EyeTestAuditService } from '../../services/eye-test-audit.service';\r\nimport { ToastService } from 'tango-app-ui-shared';\r\nimport { PageInfoService } from 'tango-app-ui-global';\r\nimport dayjs from 'dayjs';\r\nimport 'dayjs/locale/en';\r\nimport utc from 'dayjs/plugin/utc';\r\n@Component({\r\n selector: 'lib-start-audit',\r\n templateUrl: './start-audit.component.html',\r\n styleUrl: './start-audit.component.scss'\r\n})\r\nexport class StartAuditComponent implements OnInit,OnDestroy {\r\ndayjs = dayjs\r\n stepWiseProcess: any = [];\r\n dropdownList: any = []\r\n loading: boolean = true;\r\n noData: boolean = false;\r\n\r\n tableLoading = new BehaviorSubject<'initial' | 'loading' | 'loaded'>('initial')\r\n historytableLoading = new BehaviorSubject<'initial' | 'loading' | 'loaded'>('initial')\r\n\r\n selectedMinutes = '00';\r\n selectedSeconds = '00';\r\n minutesList: string[] = [];\r\n secondsList: string[] = [];\r\n\r\n auditDetails: any = [];\r\n currentAuditType: any;\r\n takeAudit: boolean = false;\r\n storeId: any;\r\n @ViewChild('tooltipContent') tooltipContent!: NgbTooltip;\r\n @ViewChild('viewHistory') viewHistory: any;\r\n @ViewChild('viewCancel') viewCancel: any;\r\n private readonly destroy$ = new Subject();\r\n historyData: any = [];\r\n AuditId: any;\r\n viewHistoryData: any;\r\n spokenLanguage:any='English'\r\n modalRef: any;\r\n disablecancel:boolean = false\r\n constructor(private cd: ChangeDetectorRef,private pageInfo: PageInfoService, private toastService: ToastService, private route: ActivatedRoute, private $api: EyeTestAuditService, private modalService: NgbModal,private router:Router ) {\r\n\r\n }\r\n viewHistoryModel(item: any) {\r\n let payload = {\r\n id: item._id\r\n }\r\n this.$api.viewAuditHistory(payload).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res?.code == 200) {\r\n this.viewHistoryData = res.data.result\r\n const modalRef = this.modalService.open(this.viewHistory, {\r\n size:'xl',\r\n centered: true,\r\n scrollable: true,\r\n });\r\n }\r\n }\r\n })\r\n }\r\n ngOnInit(): void {\r\n this.setPageData()\r\n this.takeAudit =false\r\n this.stepWiseProcess =[];\r\n this.route.queryParams.subscribe(params => {\r\n this.storeId = params['storeId'];\r\n this.currentAuditType = params['type']\r\n this.AuditId = params['_id']\r\n });\r\n this.getAuditdetails();\r\n this.generateTimeOptions();\r\nif(this.currentAuditType === 'remote'){\r\n this.dropdownList= [{ key: 'Sentence Transcription okay, but not matching with Predicted Step', item: 'Sentence Transcription okay, but not matching with Predicted Step' }, { key: 'Sentence Transcription not accurate, but matching with Predicted Step', item: 'Sentence Transcription not accurate, but matching with Predicted Step' }, { key: 'Step not accurate, not matching with Predicted Step', item: 'Step not accurate, not matching with Predicted Step' }, { key: 'others', item: 'Others' }]\r\n}else{\r\n this.dropdownList= [{ key: 'Step Non-Compliance', item: 'Step Non-Compliance' }, { key: 'Power Bank Non-Compliance', item: 'Power Bank Non-Compliance' }, { key: 'Correct Instrument Not Used', item: 'Correct Instrument Not Used' }, { key: 'others', item: 'Others' }]\r\n}\r\n }\r\n\r\n setPageData() {\r\n this.pageInfo.setTitle('Eye Test')\r\n \r\n this.pageInfo.setBreadcrumbs([\r\n { title: 'Tango Trax', path: '/manage/trax/dashboard', isActive: false, isSeparator: false },\r\n { title: 'Tango Trax', path: '/manage/trax/dashboard', isActive: false, isSeparator: true }, \r\n ])\r\n}\r\n getAuditHistory() {\r\n this.historytableLoading.next('loading');\r\n let payload = {\r\n id: this.currentAuditType === 'remote' ? this.auditDetails.engagementId : this.auditDetails.queueId,\r\n type: this.currentAuditType\r\n }\r\n this.$api.getAuditHistory(payload).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res?.code == 200) {\r\n this.historyData = res.data.result\r\n this.historytableLoading.next('loaded')\r\n } else {\r\n this.historyData = []\r\n this.historytableLoading.next('loaded')\r\n }\r\n },\r\n error: (err: any) => {\r\n this.historyData = []\r\n this.historytableLoading.next('loaded')\r\n }\r\n }\r\n )\r\n\r\n }\r\n\r\n getAuditdetails() {\r\n this.tableLoading.next('loading');\r\n let payload = {\r\n id: this.AuditId,\r\n type: this.currentAuditType\r\n }\r\n this.$api.getAuditdetails(payload).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res?.code == 200) {\r\n this.disablecancel = false\r\n this.auditDetails = res?.data?.result;\r\n if (this.auditDetails.auditStatus === 'In-Progress') {\r\n this.takeAudit = true\r\n }else{\r\n this.takeAudit = false\r\n }\r\n this.stepWiseProcess = this.auditDetails?.steps;\r\n setTimeout(()=>{\r\n this.getAuditHistory()\r\n },100)\r\n this.cd.detectChanges(); \r\n }\r\n }\r\n })\r\n\r\n this.tableLoading.next('loaded')\r\n\r\n }\r\n\r\n generateTimeOptions() {\r\n this.minutesList = Array.from({ length: 60 }, (_, i) => this.formatNumber(i));\r\n this.secondsList = Array.from({ length: 60 }, (_, i) => this.formatNumber(i));\r\n }\r\n\r\n formatNumber(num: number): string {\r\n return num < 10 ? '0' + num : num.toString();\r\n }\r\n\r\n dropdownOpen: { [key: number]: { startTime: boolean; endTime: boolean; reason: boolean } } = {};\r\n\r\n toggleDropdown(i: number, time: 'startTime' | 'endTime' | 'reason') {\r\n const currentState = this.dropdownOpen[i]?.[time] ?? false;\r\n\r\n Object.keys(this.dropdownOpen).forEach((key) => {\r\n this.dropdownOpen[Number(key)] = { startTime: false, endTime: false, reason: false };\r\n });\r\n\r\n if (!this.dropdownOpen[i]) {\r\n this.dropdownOpen[i] = { startTime: false, endTime: false, reason: false };\r\n }\r\n\r\n this.dropdownOpen[i][time] = !currentState;\r\n }\r\n getSecondsFromTime(time: string): number {\r\n if (!time) return 0;\r\n const [min, sec] = time.split(':').map(Number);\r\n return (min * 60) + sec;\r\n }\r\n \r\nselectMinute(index: any, min: string, time: 'startTime' | 'endTime' | 'reason') {\r\n const previousTime = this.stepWiseProcess[index]?.[time] || '00:00';\r\n\r\n this.selectedMinutes = min;\r\n const newTime = `${this.selectedMinutes}:${this.selectedSeconds}`;\r\n\r\n const startTime = this.getSecondsFromTime(\r\n time === 'startTime' ? newTime : this.stepWiseProcess[index]?.startTime\r\n );\r\n const endTime = this.getSecondsFromTime(\r\n time === 'endTime' ? newTime : this.stepWiseProcess[index]?.endTime\r\n );\r\n\r\n const isValid = (startTime === 0 || endTime === 0) || startTime < endTime;\r\n\r\n if (!isValid && time !== 'reason') {\r\n this.toastService.getWarningToast(\"Start time must be less than end time.\");\r\n \r\n const [prevMin, prevSec] = previousTime.split(':');\r\n this.selectedMinutes = prevMin;\r\n this.selectedSeconds = prevSec;\r\n \r\n this.cd.detectChanges();\r\n return;\r\n }\r\n \r\n\r\n this.stepWiseProcess[index][time] = newTime;\r\n this.cd.detectChanges();\r\n}\r\n\r\nselectSecond(index: any, sec: string, time: 'startTime' | 'endTime' | 'reason') {\r\n const previousTime = this.stepWiseProcess[index]?.[time] || '00:00';\r\n\r\n this.selectedSeconds = sec;\r\n const newTime = `${this.selectedMinutes}:${this.selectedSeconds}`;\r\n\r\n const startTime = this.getSecondsFromTime(\r\n time === 'startTime' ? newTime : this.stepWiseProcess[index]?.startTime\r\n );\r\n const endTime = this.getSecondsFromTime(\r\n time === 'endTime' ? newTime : this.stepWiseProcess[index]?.endTime\r\n );\r\n\r\n if ((time !== 'reason') && startTime !== 0 && endTime !== 0 && startTime >= endTime) {\r\n this.toastService.getWarningToast(\"Start time must be less than end time.\");\r\n \r\n const [prevMin, prevSec] = previousTime.split(':');\r\n this.selectedMinutes = prevMin;\r\n this.selectedSeconds = prevSec;\r\n \r\n this.cd.detectChanges();\r\n return;\r\n }\r\n\r\n this.stepWiseProcess[index][time] = newTime;\r\n this.cd.detectChanges();\r\n}\r\n \r\n \r\n\r\n selectReason(index: number, key: any, time: any) {\r\n this.stepWiseProcess[index][time] = key;\r\n \r\n if (key === 'others') {\r\n this.stepWiseProcess[index].otherReason = ''; \r\n } else {\r\n this.stepWiseProcess[index].otherReason = null; \r\n }\r\n \r\n this.cd.detectChanges();\r\n }\r\n \r\n\r\n selectHumanVerified(index: number, value: boolean) {\r\n this.stepWiseProcess[index].auditedStatus = value;\r\n }\r\n findcount(){\r\n let count = 0\r\n this.stepWiseProcess.forEach((data:any)=>{\r\n if(data.auditedStatus!==data.AIStatus){\r\n count++\r\n }\r\n\r\n\r\n })\r\n return count\r\n }\r\n getValidaForm(){\r\n let errorCount = 0\r\n this.stepWiseProcess.forEach((data:any)=>{\r\n if(data.reason==='others'){\r\n data.otherReason = data.otherReason.trim()\r\n }\r\n if(data.auditedStatus!==data.AIStatus){\r\n if(!data.reason || data.reason&&data.reason==='others' && !data.otherReason){\r\n errorCount++\r\n }\r\n }\r\n })\r\n if(errorCount>0){\r\n this.disablecancel = false\r\n this.toastService.getWarningToast(\"Comments are mandatory for inverse human audited responses\")\r\n }\r\n return errorCount\r\n }\r\n onsubmit() {\r\n this.disablecancel = true\r\n if((this.stepWiseProcess.filter((data:any)=>data.auditedStatus===true).length+this.stepWiseProcess.filter((data:any)=>data.auditedStatus===false).length)!==this.stepWiseProcess.length){\r\n this.toastService.getErrorToast(\"Oops! Looks like the eye test audit isn’t complete yet. Audit all eye test steps before submitting.\")\r\n this.disablecancel = false\r\n return\r\n }\r\n if(this.getValidaForm()===0){\r\n\r\n let payload = {\r\n id: this.AuditId,\r\n type: this.currentAuditType,\r\n fileId: this.currentAuditType === 'remote' ? this.auditDetails.engagementId : this.auditDetails.queueId,\r\n auditedSteps: this.stepWiseProcess.filter((data:any)=>data.auditedStatus===true).length,\r\n auditStatus:this.auditDetails?.auditType === 'Audit'? \"Audited\":\"Re-Audited\",\r\n overRides:this.findcount(),\r\n spokenLanguage: this.spokenLanguage,\r\n steps: this.stepWiseProcess\r\n \r\n }\r\n this.$api.submitAudit(payload).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res?.code == 200) {\r\n // this.disablecancel = false\r\n setTimeout(()=>{\r\n this.getAuditdetails();\r\n },1000)\r\n this.toastService.getSuccessToast(`${this.auditDetails?.auditType} Submitted Successfully`)\r\n }\r\n },\r\n error: (err: any) => {\r\n this.toastService.getErrorToast(err?.error?.error ? err?.error?.error : err?.error?.message)\r\n } \r\n })\r\n }\r\n\r\n\r\n }\r\n startAudit(value: any) {\r\n this.disablecancel = true\r\n this.takeAudit = true;\r\n this.auditDetails.auditStatus = 'Re-Audited'\r\n let payload = {\r\n id: this.AuditId\r\n }\r\n this.$api.getAuditFile(payload).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res?.code == 200) {\r\n \r\n this.getAuditdetails();\r\n }\r\n },\r\n error: (err: any) => {\r\n this.toastService.getErrorToast(err?.error?.error ? err?.error?.error : err?.error?.message)\r\n }\r\n })\r\n\r\n\r\n }\r\n\r\n onYes(){\r\n let payload = {\r\n id: this.AuditId,\r\n type: this.currentAuditType,\r\n fileId: this.currentAuditType === 'remote' ? this.auditDetails.engagementId : this.auditDetails.queueId,\r\n }\r\n this.$api.cancelAuditFile(payload).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res?.code == 200) {\r\n this.getAuditdetails();\r\n this.toastService.getSuccessToast(`${this.auditDetails?.auditType} Cancelled Successfully`)\r\n this.modalRef.dismiss();\r\n }\r\n },\r\n error: (err: any) => {\r\n this.toastService.getErrorToast(err?.error?.error ? err?.error?.error : err?.error?.message)\r\n this.modalRef.dismiss();\r\n }\r\n })\r\n\r\n this.takeAudit =false\r\n }\r\n cancel(){\r\n this.modalRef = this.modalService.open(this.viewCancel, {\r\n size:'md',\r\n centered: true,\r\n scrollable: true,\r\n }); \r\n }\r\n OnCancel(){\r\n this.modalRef.dismiss();\r\n }\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n\r\n backNavigation(){\r\n this.$api.auditFilterData = {\r\n back: 'back',\r\n auditDetails: this.auditDetails\r\n };\r\n this.router.navigate(['/manage/trax/audit'], {\r\n queryParams: { date: this.dayjs(this.auditDetails.fileDate).format('YYYY-MM-DD'), typeValue: this.currentAuditType }\r\n });\r\n }\r\n}\r\n","<div class=\"card p-5\">\r\n <div class=\"d-flex align-items-center\">\r\n <div (click)=\"backNavigation()\" class=\"btn btn-am btn-outline p-3\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M15.8332 9.99984H4.1665M4.1665 9.99984L9.99984 15.8332M4.1665 9.99984L9.99984 4.1665\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </div>\r\n <span *ngIf=\"currentAuditType !== 'remote'\" class=\"ms-3 badge badge-light-default\">{{auditDetails?.optumId}}</span> \r\n <span *ngIf=\"currentAuditType === 'remote'\" class=\"ms-3 badge badge-light-default\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 10.5V9.5C10 8.96957 9.78929 8.46086 9.41421 8.08579C9.03914 7.71071 8.53043 7.5 8 7.5H4C3.46957 7.5 2.96086 7.71071 2.58579 8.08579C2.21071 8.46086 2 8.96957 2 9.5V10.5M8 3.5C8 4.60457 7.10457 5.5 6 5.5C4.89543 5.5 4 4.60457 4 3.5C4 2.39543 4.89543 1.5 6 1.5C7.10457 1.5 8 2.39543 8 3.5Z\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span>{{auditDetails?.displayName}}</span> \r\n <span class=\"d-flex ms-1 align-items-center\">\r\n <svg width=\"46\" height=\"46\" viewBox=\"0 0 46 46\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" fill=\"\" opacity=\"0.1\"></rect>\r\n <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" stroke=\"\" stroke-width=\"6\"></rect>\r\n <path d=\"M15.6799 18.8039L15.6267 18.8871C15.0686 19.8741 15.6644 21.1215 16.7361 21.2646C16.8331 21.2765 16.9235 21.2828 17.0118 21.2828C17.5899 21.2828 18.1011 21.0348 18.4574 20.648L19.0107 20.0474L19.5621 20.6498C19.9141 21.0342 20.4241 21.2828 21.0061 21.2828C21.5856 21.2828 22.0985 21.0338 22.4502 20.6498L23.0033 20.0455L23.5565 20.6498C23.9081 21.0338 24.4211 21.2828 25.0005 21.2828C25.58 21.2828 26.0929 21.0338 26.4445 20.6498L26.9977 20.0455L27.5509 20.6498C27.9025 21.0338 28.4155 21.2828 28.9949 21.2828C29.0803 21.2828 29.1733 21.2765 29.2697 21.2647C30.3649 21.1154 30.9627 19.8012 30.324 18.8044C30.324 18.8043 30.324 18.8043 30.3239 18.8042L28.5658 16.0628L28.5658 16.0628L28.5648 16.0614C28.5496 16.0375 28.5121 16.012 28.465 16.012H17.5356C17.4884 16.012 17.4509 16.0375 17.4357 16.0614L17.4351 16.0623L15.6799 18.8039ZM28.6514 23.7372V26.8691V27.6191H27.9014H18.0992H17.3492V26.8691V23.7376C17.239 23.7458 17.1274 23.7501 17.0148 23.7501C16.9725 23.7501 16.9305 23.7494 16.8888 23.7482V26.8691V28.8036C16.8888 29.4471 17.4227 29.9882 18.0992 29.9882H27.9014C28.5779 29.9882 29.1118 29.4471 29.1118 28.8036V26.8691V23.7484C29.072 23.7495 29.032 23.7501 28.9918 23.7501C28.8774 23.7501 28.7639 23.7457 28.6514 23.7372Z\" stroke=\"#000000\" stroke-width=\"1.5\"></path></svg> \r\n <span class=\"ms-1 sub-title\"> {{auditDetails.storeName}}</span>\r\n </span>\r\n\r\n \r\n <!-- displayName -->\r\n <div *ngIf=\"currentAuditType !== 'remote'\" class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M5.25021 6.50028C5.91329 6.50028 6.54921 6.23689 7.01807 5.76807C7.48694 5.29924 7.75035 4.66337 7.75035 4.00035C7.75035 3.33732 7.48694 2.70146 7.01807 2.23263C6.54921 1.7638 5.91329 1.50042 5.25021 1.50042C4.58713 1.50042 3.95121 1.7638 3.48234 2.23263C3.01348 2.70146 2.75007 3.33732 2.75007 4.00035C2.75007 4.66337 3.01348 5.29924 3.48234 5.76807C3.95121 6.23689 4.58713 6.50028 5.25021 6.50028ZM5.25021 5.25031C4.91867 5.25031 4.60071 5.11862 4.36628 4.88421C4.13184 4.64979 4.00014 4.33186 4.00014 4.00035C4.00014 3.66884 4.13184 3.3509 4.36628 3.11649C4.60071 2.88207 4.91867 2.75038 5.25021 2.75038C5.58175 2.75038 5.89971 2.88207 6.13414 3.11649C6.36857 3.3509 6.50028 3.66884 6.50028 4.00035C6.50028 4.33186 6.36857 4.64979 6.13414 4.88421C5.89971 5.11862 5.58175 5.25031 5.25021 5.25031ZM1.5 8.79188C1.5 7.9869 2.15337 7.33359 2.95841 7.33359H7.542C8.34705 7.33359 9.00042 7.9869 9.00042 8.79188V12.7501C9.00042 13.7446 8.60531 14.6984 7.90201 15.4017C7.1987 16.1049 6.24483 16.5 5.25021 16.5C4.25559 16.5 3.30171 16.1049 2.59841 15.4017C1.89511 14.6984 1.5 13.7446 1.5 12.7501V8.79188ZM2.95841 8.58355C2.90316 8.58355 2.85016 8.6055 2.81109 8.64457C2.77202 8.68364 2.75007 8.73663 2.75007 8.79188V12.7501C2.75007 13.4131 3.01348 14.049 3.48234 14.5178C3.95121 14.9867 4.58713 15.25 5.25021 15.25C5.91329 15.25 6.54921 14.9867 7.01807 14.5178C7.48694 14.049 7.75035 13.4131 7.75035 12.7501V8.79188C7.75035 8.73663 7.7284 8.68364 7.68932 8.64457C7.65025 8.6055 7.59726 8.58355 7.542 8.58355H2.95841ZM7.77285 6.17862C8.15328 6.39267 8.58313 6.5034 9.01963 6.49978C9.45614 6.49616 9.8841 6.37832 10.2609 6.15799C10.6378 5.93766 10.9503 5.62252 11.1675 5.24391C11.3848 4.8653 11.499 4.43642 11.499 3.99993C11.499 3.56344 11.3848 3.13456 11.1675 2.75595C10.9503 2.37734 10.6378 2.0622 10.2609 1.84187C9.8841 1.62154 9.45614 1.50371 9.01963 1.50009C8.58313 1.49647 8.15328 1.60719 7.77285 1.82124C8.04536 2.13623 8.25954 2.50289 8.39955 2.90454C8.58991 2.80026 8.80415 2.74733 9.02118 2.75097C9.23821 2.75462 9.45055 2.81471 9.63731 2.92533C9.82406 3.03594 9.97879 3.19328 10.0863 3.38185C10.1937 3.57042 10.2503 3.78372 10.2503 4.00076C10.2503 4.21781 10.1937 4.43111 10.0863 4.61968C9.97879 4.80825 9.82406 4.96558 9.63731 5.0762C9.45055 5.18682 9.23821 5.24691 9.02118 5.25055C8.80415 5.2542 8.58991 5.20127 8.39955 5.09698C8.26074 5.49382 8.0481 5.86082 7.77285 6.17862ZM8.05036 16.3783C8.35483 16.4583 8.67151 16.4989 9.00042 16.5C9.99503 16.5 10.9489 16.1049 11.6522 15.4017C12.3555 14.6984 12.7506 13.7446 12.7506 12.7501V8.79188C12.7506 8.40512 12.597 8.03419 12.3235 7.76071C12.05 7.48723 11.679 7.33359 11.2922 7.33359H9.30877C9.59462 7.67941 9.78046 8.11107 9.8238 8.58355H11.2905C11.3458 8.58355 11.3988 8.6055 11.4379 8.64457C11.4769 8.68364 11.4989 8.73663 11.4989 8.79188V12.7501C11.4989 13.3968 11.2483 14.0184 10.7996 14.4843C10.351 14.9501 9.73925 15.224 9.09292 15.2484C8.81041 15.6817 8.45872 16.0633 8.05036 16.3783ZM11.5222 6.17862C11.9027 6.39267 12.3325 6.5034 12.769 6.49978C13.2055 6.49616 13.6335 6.37832 14.0103 6.15799C14.3871 5.93766 14.6997 5.62252 14.9169 5.24391C15.1341 4.8653 15.2484 4.43642 15.2484 3.99993C15.2484 3.56344 15.1341 3.13456 14.9169 2.75595C14.6997 2.37734 14.3871 2.0622 14.0103 1.84187C13.6335 1.62154 13.2055 1.50371 12.769 1.50009C12.3325 1.49647 11.9027 1.60719 11.5222 1.82124C11.7947 2.13623 12.0089 2.50289 12.1489 2.90454C12.3393 2.80026 12.5535 2.74733 12.7706 2.75097C12.9876 2.75462 13.1999 2.81471 13.3867 2.92533C13.5734 3.03594 13.7282 3.19328 13.8356 3.38185C13.9431 3.57042 13.9996 3.78372 13.9996 4.00076C13.9996 4.21781 13.9431 4.43111 13.8356 4.61968C13.7282 4.80825 13.5734 4.96558 13.3867 5.0762C13.1999 5.18682 12.9876 5.24691 12.7706 5.25055C12.5535 5.2542 12.3393 5.20127 12.1489 5.09698C12.0101 5.49382 11.7975 5.86082 11.5222 6.17862ZM11.7997 16.3783C12.1042 16.4583 12.4209 16.4989 12.7498 16.5C13.7444 16.5 14.6983 16.1049 15.4016 15.4017C16.1049 14.6984 16.5 13.7446 16.5 12.7501V8.79188C16.5 8.40526 16.3465 8.03447 16.0731 7.76101C15.7998 7.48755 15.4291 7.33381 15.0424 7.33359H13.059C13.3448 7.67941 13.5315 8.11107 13.574 8.58355H15.0408C15.096 8.58355 15.149 8.6055 15.1881 8.64457C15.2271 8.68364 15.2491 8.73663 15.2491 8.79188V12.7501C15.2491 13.3968 14.9985 14.0184 14.5498 14.4843C14.1012 14.9501 13.4895 15.224 12.8431 15.2484C12.5606 15.6817 12.2081 16.0633 11.7997 16.3783Z\"\r\n fill=\"#667085\" />\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{auditDetails?.queueId}}</span>\r\n </div>\r\n <div *ngIf=\"currentAuditType === 'remote'\" class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M5.25021 6.50028C5.91329 6.50028 6.54921 6.23689 7.01807 5.76807C7.48694 5.29924 7.75035 4.66337 7.75035 4.00035C7.75035 3.33732 7.48694 2.70146 7.01807 2.23263C6.54921 1.7638 5.91329 1.50042 5.25021 1.50042C4.58713 1.50042 3.95121 1.7638 3.48234 2.23263C3.01348 2.70146 2.75007 3.33732 2.75007 4.00035C2.75007 4.66337 3.01348 5.29924 3.48234 5.76807C3.95121 6.23689 4.58713 6.50028 5.25021 6.50028ZM5.25021 5.25031C4.91867 5.25031 4.60071 5.11862 4.36628 4.88421C4.13184 4.64979 4.00014 4.33186 4.00014 4.00035C4.00014 3.66884 4.13184 3.3509 4.36628 3.11649C4.60071 2.88207 4.91867 2.75038 5.25021 2.75038C5.58175 2.75038 5.89971 2.88207 6.13414 3.11649C6.36857 3.3509 6.50028 3.66884 6.50028 4.00035C6.50028 4.33186 6.36857 4.64979 6.13414 4.88421C5.89971 5.11862 5.58175 5.25031 5.25021 5.25031ZM1.5 8.79188C1.5 7.9869 2.15337 7.33359 2.95841 7.33359H7.542C8.34705 7.33359 9.00042 7.9869 9.00042 8.79188V12.7501C9.00042 13.7446 8.60531 14.6984 7.90201 15.4017C7.1987 16.1049 6.24483 16.5 5.25021 16.5C4.25559 16.5 3.30171 16.1049 2.59841 15.4017C1.89511 14.6984 1.5 13.7446 1.5 12.7501V8.79188ZM2.95841 8.58355C2.90316 8.58355 2.85016 8.6055 2.81109 8.64457C2.77202 8.68364 2.75007 8.73663 2.75007 8.79188V12.7501C2.75007 13.4131 3.01348 14.049 3.48234 14.5178C3.95121 14.9867 4.58713 15.25 5.25021 15.25C5.91329 15.25 6.54921 14.9867 7.01807 14.5178C7.48694 14.049 7.75035 13.4131 7.75035 12.7501V8.79188C7.75035 8.73663 7.7284 8.68364 7.68932 8.64457C7.65025 8.6055 7.59726 8.58355 7.542 8.58355H2.95841ZM7.77285 6.17862C8.15328 6.39267 8.58313 6.5034 9.01963 6.49978C9.45614 6.49616 9.8841 6.37832 10.2609 6.15799C10.6378 5.93766 10.9503 5.62252 11.1675 5.24391C11.3848 4.8653 11.499 4.43642 11.499 3.99993C11.499 3.56344 11.3848 3.13456 11.1675 2.75595C10.9503 2.37734 10.6378 2.0622 10.2609 1.84187C9.8841 1.62154 9.45614 1.50371 9.01963 1.50009C8.58313 1.49647 8.15328 1.60719 7.77285 1.82124C8.04536 2.13623 8.25954 2.50289 8.39955 2.90454C8.58991 2.80026 8.80415 2.74733 9.02118 2.75097C9.23821 2.75462 9.45055 2.81471 9.63731 2.92533C9.82406 3.03594 9.97879 3.19328 10.0863 3.38185C10.1937 3.57042 10.2503 3.78372 10.2503 4.00076C10.2503 4.21781 10.1937 4.43111 10.0863 4.61968C9.97879 4.80825 9.82406 4.96558 9.63731 5.0762C9.45055 5.18682 9.23821 5.24691 9.02118 5.25055C8.80415 5.2542 8.58991 5.20127 8.39955 5.09698C8.26074 5.49382 8.0481 5.86082 7.77285 6.17862ZM8.05036 16.3783C8.35483 16.4583 8.67151 16.4989 9.00042 16.5C9.99503 16.5 10.9489 16.1049 11.6522 15.4017C12.3555 14.6984 12.7506 13.7446 12.7506 12.7501V8.79188C12.7506 8.40512 12.597 8.03419 12.3235 7.76071C12.05 7.48723 11.679 7.33359 11.2922 7.33359H9.30877C9.59462 7.67941 9.78046 8.11107 9.8238 8.58355H11.2905C11.3458 8.58355 11.3988 8.6055 11.4379 8.64457C11.4769 8.68364 11.4989 8.73663 11.4989 8.79188V12.7501C11.4989 13.3968 11.2483 14.0184 10.7996 14.4843C10.351 14.9501 9.73925 15.224 9.09292 15.2484C8.81041 15.6817 8.45872 16.0633 8.05036 16.3783ZM11.5222 6.17862C11.9027 6.39267 12.3325 6.5034 12.769 6.49978C13.2055 6.49616 13.6335 6.37832 14.0103 6.15799C14.3871 5.93766 14.6997 5.62252 14.9169 5.24391C15.1341 4.8653 15.2484 4.43642 15.2484 3.99993C15.2484 3.56344 15.1341 3.13456 14.9169 2.75595C14.6997 2.37734 14.3871 2.0622 14.0103 1.84187C13.6335 1.62154 13.2055 1.50371 12.769 1.50009C12.3325 1.49647 11.9027 1.60719 11.5222 1.82124C11.7947 2.13623 12.0089 2.50289 12.1489 2.90454C12.3393 2.80026 12.5535 2.74733 12.7706 2.75097C12.9876 2.75462 13.1999 2.81471 13.3867 2.92533C13.5734 3.03594 13.7282 3.19328 13.8356 3.38185C13.9431 3.57042 13.9996 3.78372 13.9996 4.00076C13.9996 4.21781 13.9431 4.43111 13.8356 4.61968C13.7282 4.80825 13.5734 4.96558 13.3867 5.0762C13.1999 5.18682 12.9876 5.24691 12.7706 5.25055C12.5535 5.2542 12.3393 5.20127 12.1489 5.09698C12.0101 5.49382 11.7975 5.86082 11.5222 6.17862ZM11.7997 16.3783C12.1042 16.4583 12.4209 16.4989 12.7498 16.5C13.7444 16.5 14.6983 16.1049 15.4016 15.4017C16.1049 14.6984 16.5 13.7446 16.5 12.7501V8.79188C16.5 8.40526 16.3465 8.03447 16.0731 7.76101C15.7998 7.48755 15.4291 7.33381 15.0424 7.33359H13.059C13.3448 7.67941 13.5315 8.11107 13.574 8.58355H15.0408C15.096 8.58355 15.149 8.6055 15.1881 8.64457C15.2271 8.68364 15.2491 8.73663 15.2491 8.79188V12.7501C15.2491 13.3968 14.9985 14.0184 14.5498 14.4843C14.1012 14.9501 13.4895 15.224 12.8431 15.2484C12.5606 15.6817 12.2081 16.0633 11.7997 16.3783Z\"\r\n fill=\"#667085\" />\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{auditDetails?.engagementId}}</span>\r\n </div>\r\n <div class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M12 3H13.5C13.8978 3 14.2794 3.15804 14.5607 3.43934C14.842 3.72064 15 4.10218 15 4.5V15C15 15.3978 14.842 15.7794 14.5607 16.0607C14.2794 16.342 13.8978 16.5 13.5 16.5H4.5C4.10218 16.5 3.72064 16.342 3.43934 16.0607C3.15804 15.7794 3 15.3978 3 15V4.5C3 4.10218 3.15804 3.72064 3.43934 3.43934C3.72064 3.15804 4.10218 3 4.5 3H6M6.75 1.5H11.25C11.6642 1.5 12 1.83579 12 2.25V3.75C12 4.16421 11.6642 4.5 11.25 4.5H6.75C6.33579 4.5 6 4.16421 6 3.75V2.25C6 1.83579 6.33579 1.5 6.75 1.5Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{currentAuditType | titlecase}} Eye Test</span>\r\n </div>\r\n <div class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M12 1.5V4.5M6 1.5V4.5M2.25 7.5H15.75M3.75 3H14.25C15.0784 3 15.75 3.67157 15.75 4.5V15C15.75 15.8284 15.0784 16.5 14.25 16.5H3.75C2.92157 16.5 2.25 15.8284 2.25 15V4.5C2.25 3.67157 2.92157 3 3.75 3Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{auditDetails?.fileDate | date: 'dd/MM/YYYY'}}</span>\r\n </div>\r\n <div class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_166_55019)\">\r\n <path\r\n d=\"M9 4.5V9L12 10.5M16.5 9C16.5 13.1421 13.1421 16.5 9 16.5C4.85786 16.5 1.5 13.1421 1.5 9C1.5 4.85786 4.85786 1.5 9 1.5C13.1421 1.5 16.5 4.85786 16.5 9Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_166_55019\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{auditDetails?.testStartTime}} {{auditDetails?.testStartTime?.split(':')[0]>12?'PM':'AM'}} - {{auditDetails?.testEndTime}} {{auditDetails?.testEndTime?.split(':')[0]>12?'PM':'AM'}}\r\n ({{auditDetails?.testDuration}} Mins)</span>\r\n </div>\r\n <span class=\"ms-3 badge badge-light-primary\">{{auditDetails?.visitorsType | titlecase}}</span>\r\n <div *ngIf=\"['Yet-to-Audit'].includes(auditDetails?.auditStatus)\"\r\n class=\"text-white ms-3 px-3 py-1 fw-semibold rounded-3 cursor-pointer bg-primary\" style=\"font-size: 14px;\">\r\n Yet to Audit\r\n </div>\r\n <div *ngIf=\"auditDetails?.auditType === 'Audit'&&auditDetails?.auditStatus === 'Audited'\"\r\n class=\"text-white ms-3 px-3 py-1 fw-semibold rounded-3 cursor-pointer bg-success\" style=\"font-size: 14px;\">\r\n Audited\r\n </div>\r\n <div *ngIf=\"auditDetails?.auditType === 'Re-Audit'&&auditDetails?.auditStatus === 'Audited' || auditDetails?.auditType === 'Re-Audit'&&auditDetails?.auditStatus === 'Re-Audited'\"\r\n class=\"text-white ms-3 px-3 py-1 fw-semibold rounded-3 cursor-pointer bg-warning\" style=\"font-size: 14px;\">\r\n Re-Audited\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"row mt-3\">\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 text-center header-card\">\r\n AI Verified Steps <span><svg ngbTooltip=\"Number of steps detected and validated automatically without manual review.\" placement=\"right\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" \r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.coveredStepsAI?auditDetails?.coveredStepsAI:0}}/{{auditDetails?.totalSteps ? auditDetails?.totalSteps:'--'}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 text-center header-card\">\r\n Human Verified Steps <span><svg ngbTooltip=\"Number of steps that required human validation to ensure compliance and accuracy.\" placement=\"right\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.auditedSteps?auditDetails?.auditedSteps:0}}/{{auditDetails?.totalSteps ? auditDetails?.totalSteps:'--'}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 header-card\">\r\n AI Compliance Score <span><svg ngbTooltip=\"Measures the percentage of steps AI flagged as compliant without human intervention.\" placement=\"left\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.complianceScore ?auditDetails?.complianceScore :'--'}}%</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 header-card\">\r\n AI Trust Score <span><svg ngbTooltip=\"This score reflects how often AI predictions were accepted without manual overrides.\" placement=\"left\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.trustScore ? auditDetails?.trustScore:'--'}}%</span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"row mt-3\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"card h-500px px-5\">\r\n <div class=\"card-header p-0 border-0\">\r\n <span class=\"card-title m-0 fw-bolder bg-none\">Preview Eye Test</span>\r\n </div>\r\n <div class=\"card-body px-0 position-relative\">\r\n <div class=\"video-position w-100\">\r\n <video class=\"w-100 rounded-3 h-auto\" controls\r\n [src]=\"auditDetails?.filePath\"></video>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"card h-500px px-5 overflow-scroll\">\r\n <div class=\"card-header mb-3 p-0 border-0 d-flex justify-content-between align-items-center\">\r\n <div class=\"\">\r\n <span class=\"card-title m-0 fw-bolder bg-none\">Step-wise Breakdown</span>\r\n \r\n \r\n <div class=\"d-flex sub-title mt-2\" *ngIf=\"auditDetails?.lastAuditedDetails?.auditedBy\">\r\n <span *ngIf=\"currentAuditType === 'remote'\"> <span *ngIf=\"auditDetails?.spokenLanguage\"> <span *ngIf=\"!takeAudit\" class=\"badge badge-light-info mt-0 me-2\">Language Spoken: {{auditDetails?.spokenLanguage}}</span></span></span> <span class=\"mt-1\">Recently Audited By : </span>\r\n <span class=\"ms-2 mt-1\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M13.3337 14V12.6667C13.3337 11.9594 13.0527 11.2811 12.5526 10.781C12.0525 10.281 11.3742 10 10.667 10H5.33366C4.62641 10 3.94814 10.281 3.44804 10.781C2.94794 11.2811 2.66699 11.9594 2.66699 12.6667V14M10.667 4.66667C10.667 6.13943 9.47308 7.33333 8.00033 7.33333C6.52757 7.33333 5.33366 6.13943 5.33366 4.66667C5.33366 3.19391 6.52757 2 8.00033 2C9.47308 2 10.667 3.19391 10.667 4.66667Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span >{{auditDetails?.lastAuditedDetails?.auditedBy}}</span>\r\n <span class=\"ms-2 mt-1\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_152_29431)\">\r\n <path\r\n d=\"M9 4.5V9L12 10.5M16.5 9C16.5 13.1421 13.1421 16.5 9 16.5C4.85786 16.5 1.5 13.1421 1.5 9C1.5 4.85786 4.85786 1.5 9 1.5C13.1421 1.5 16.5 4.85786 16.5 9Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_152_29431\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>{{auditDetails?.lastAuditedDetails?.completionTime}}\r\n {{auditDetails?.lastAuditedDetails?.timeZone}}</span>\r\n </div>\r\n \r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div *ngIf=\"takeAudit && currentAuditType === 'remote'\" class=\"d-flex align-items-end me-2\">\r\n <select [(ngModel)]=\"spokenLanguage\" class=\"form-select form-select-sm\">\r\n <option selected disabled >Language Spoken <span style=\"color:red\">*</span></option>\r\n <option value=\"English\">English</option>\r\n <option value=\"Hindi\">Hindi</option>\r\n </select></div>\r\n <div *ngIf=\"auditDetails?.auditType === 'Audit'&&auditDetails?.auditStatus === 'Yet-to-Audit' && !takeAudit\" (click)=\"startAudit('audit')\"\r\n class=\"text-white ms-3 px-3 py-2 fw-semibold rounded-2 cursor-pointer bg-primary\"\r\n style=\"font-size: 14px;\">\r\n Start Audit\r\n </div>\r\n \r\n <div *ngIf=\"['Audited','Re-Audit','Yet-to-Audit'].includes(auditDetails?.auditStatus)&&auditDetails?.auditType === 'Re-Audit' && !takeAudit||auditDetails?.auditType === 'Audit'&&auditDetails?.auditStatus === 'Audited' ||auditDetails?.auditType === 'Re-Audit'&&auditDetails?.auditStatus === 'Re-Audited'&& !takeAudit \"\r\n (click)=\"startAudit('Re-Audit')\" class=\"btn btn-sm py-2 btn-warning\">Re-Audit</div>\r\n <div *ngIf=\"takeAudit\" class=\"d-flex\">\r\n <button class=\"btn btn-sm btn-outline\" [disabled]=\"disablecancel\" (click)=\"cancel()\">Cancel</button>\r\n <button class=\"btn ms-2 btn-sm btn-success\" [disabled]=\"disablecancel\" (click)=\"onsubmit()\">Submit</button>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body mt-1 px-0\">\r\n <div *ngIf=\"!takeAudit && stepWiseProcess?.length\" class=\"table-responsive border border-1 rounded-3\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-align-left\">\r\n Step-by-step Process\r\n </th>\r\n <th *ngIf=\"currentAuditType === 'remote'\" class=\"text-align-left\">\r\n Predicted Transcript\r\n </th>\r\n <th class=\"text-align-left\">\r\n AI Verified\r\n </th>\r\n <th class=\"text-align-left\">\r\n Human Audited\r\n </th>\r\n <th class=\"text-align-left\">\r\n Reason for Error\r\n </th>\r\n <th class=\"text-align-left\">\r\n Noticed Time Range\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let data of stepWiseProcess;let i=index\">\r\n <td>\r\n <div class=\"d-flex align-items-start\">\r\n <!-- <div class=\"w-40px h-40px d-flex justify-content-center text-center me-3\">\r\n <img class=\"w-100 rounded-5\" [src]=\"data?.imageUrl\">\r\n </div> -->\r\n {{data.processName}}\r\n </div>\r\n </td>\r\n <td *ngIf=\"currentAuditType ==='remote'\" class=\"text-capitalize\">\r\n <div class=\"text-primary1 text-decoration-underline cursor-pointer\"\r\n [ngbTooltip]=\"data?.predictedTranscript ? tooltipContent : ''\"\r\n placement='bottom'>{{data?.predictedTranscript?data?.predictedTranscript:\"N/A\"}}</div>\r\n\r\n <ng-template #tooltipContent>\r\n <div class=\"custom-tooltip-content tooltip-content w-100\">\r\n <span class=\"min-w-500px\">{{data?.predictedTranscript?data?.predictedTranscript:\"N/A\"}}</span>\r\n </div>\r\n </ng-template>\r\n\r\n </td>\r\n <td class=\"text-capitalize\"><span\r\n [ngClass]=\"data.AIStatus ? 'badge badge-light-success' : 'badge badge-light-danger'\">{{data.AIStatus\r\n ? 'pass' : 'fail'}}</span></td>\r\n <td class=\"text-capitalize\">\r\n <span \r\n [ngClass]=\"data?.auditedStatus === true ? 'badge badge-light-success' : (data?.auditedStatus === false ? 'badge badge-light-danger' : '')\">\r\n {{ data?.auditedStatus === true ? 'pass' : (data?.auditedStatus === false ? 'fail' : 'N/A') }}\r\n </span>\r\n \r\n </td>\r\n <td *ngIf=\"data.AIStatus !== data.auditedStatus || data.auditedStatus === null || data.auditedStatus === undefined || data.auditedStatus === ''; else EqualBlock\">\r\n <!-- {{ data?.reason || 'N/A' }} -->\r\n <span *ngIf=\"data.reason !=='others'\">{{data.reason || 'N/A'}}</span><span *ngIf=\"data.reason ==='others'\">{{data.otherReason || 'N/A'}}</span>\r\n </td>\r\n <ng-template #EqualBlock>\r\n <td>N/A</td>\r\n </ng-template>\r\n <td>{{data?.startTime}} - {{data?.endTime}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div *ngIf=\"stepWiseProcess?.length && takeAudit&&auditDetails?.auditStatus==='Yet-to-Audit'||auditDetails?.auditStatus==='In-Progress'\">\r\n <div *ngFor=\"let process of stepWiseProcess; let i=index ;let last=last\"\r\n class=\"border border-1 rounded-3 mb-3\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-primary bg-light-primary text-align-left\">\r\n Step-{{i+1 | number}}\r\n </th>\r\n <th class=\"text-primary bg-light-primary text-align-left\">\r\n AI Verified\r\n </th>\r\n <th class=\"text-primary bg-light-primary text-align-left\">\r\n Human Audited\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td class=\"w-200px\">\r\n <!-- <div class=\"d-flex align-items-start\"> -->\r\n <!-- <div class=\"w-40px h-40px d-flex justify-content-center text-center me-3\">\r\n <img class=\"w-100 rounded-5\" [src]=\"process.imageUrl\">\r\n </div> -->\r\n {{process.processName}}\r\n <!-- </div> -->\r\n </td>\r\n <td><span *ngIf=\"process.AIStatus\" class=\"badge badge-light-success text-capitalize\">Pass</span>\r\n <span *ngIf=\"!process.AIStatus\" class=\"badge badge-light-danger text-capitalize\">Fail</span>\r\n </td>\r\n <td>\r\n <div class=\"d-flex justify-content-start\">\r\n <div (click)=\"selectHumanVerified(i,true)\"\r\n [ngClass]=\"process?.auditedStatus ? 'text-white btn-success' : 'text-success bg-white border border-success'\"\r\n class=\"btn btn-sm rounded-5\"><span><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"16\"\r\n viewBox=\"0 0 17 16\" fill=\"none\">\r\n <path d=\"M14.1667 4L6.83333 11.3333L3.5 8\"\r\n [attr.stroke]=\"process?.auditedStatus ? 'white' : '#17C653'\"\r\n stroke-width=\"1.25\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span><span class=\"ms-2\">Pass</span></div>\r\n\r\n <div (click)=\"selectHumanVerified(i,false)\"\r\n [ngClass]=\"process?.auditedStatus===false ? 'text-white bg-danger' : 'text-danger bg-white border border-danger'\"\r\n class=\"ms-3 px-5 py-2 fw-semibold rounded-5 cursor-pointer rounded-5\">\r\n <span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"16\"\r\n viewBox=\"0 0 17 16\" fill=\"none\">\r\n <path d=\"M12.6665 4L4.6665 12M4.6665 4L12.6665 12\"\r\n [attr.stroke]=\"process?.auditedStatus===false ? 'white' : '#F8285A'\"\r\n stroke-width=\"1.25\" stroke-linecap=\"rowund\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span><span class=\"ms-2\">Fail</span></div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div *ngIf=\"currentAuditType === 'remote' && process?.predictedTranscript\" class=\"w-100\">\r\n <div class=\"bg-light-primary text-primary p-3\">\r\n Predicted Transcript\r\n </div>\r\n <div class=\"row col-sm-12 p-5\">\r\n <div class=\"text-primary text-decoration-underline cursor-pointer\"\r\n [ngbTooltip]=\"process?.predictedTranscript ? tooltipContent : ''\"\r\n placement='bottom'>\r\n {{process?.predictedTranscript}}\r\n </div>\r\n <ng-template #tooltipContent>\r\n <div class=\"custom-tooltip-content tooltip-content w-100\">\r\n <span class=\"min-w-500px\">{{process?.predictedTranscript}}</span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <div *ngIf=\"process?.auditedStatus !== undefined && process?.auditedStatus !== '' && process?.auditedStatus !== process?.AIStatus\" class=\"w-100\">\r\n <div class=\"bg-light-primary text-primary p-3\">\r\n Reason & Time Stamp\r\n </div>\r\n <div class=\"row col-sm-12 p-5\">\r\n <div class=\"col-sm-6 col-md-6\">\r\n <div>\r\n <div (click)=\"toggleDropdown(i,'reason')\" class=\"custom-dropdown\">\r\n <div class=\"d-flex justify-content-between\">\r\n <span class=\"text-select\">\r\n {{ process?.reason ? process?.reason : 'Select Reason' }}\r\n </span>\r\n <span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n \r\n <div [ngClass]=\"last ? 'dropdown-content1' : 'dropdown-content'\" *ngIf=\"dropdownOpen[i]?.reason\">\r\n <div class=\"scroll-container\">\r\n <!-- Minutes List -->\r\n <div class=\"item my-2 minutes-scroll\">\r\n <ul *ngFor=\"let item of dropdownList\" class=\"list-unstyled\">\r\n <li [ngClass]=\"process?.reason === item?.key ? 'active' : ''\"\r\n class=\"camera px-5 items fw-semibold cursor-pointer py-2\"\r\n (click)=\"selectReason(i, item?.key, 'reason')\">\r\n {{ item?.item }}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <!-- Custom Input for \"Others\" -->\r\n <div *ngIf=\"process?.reason === 'others'\" class=\"mt-2\">\r\n <input \r\n type=\"text\" \r\n [(ngModel)]=\"process.otherReason\" \r\n placeholder=\"Enter your reason\" \r\n class=\"form-control form-control-sm\" />\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-sm-3\">\r\n <div class=\"w-100\">\r\n <div (click)=\"toggleDropdown(i,'startTime')\" class=\"custom-dropdown\">\r\n <label class=\"label fw-semibold bg-white px-2\">Start</label>\r\n <div class=\"text-select\">{{process?.startTime ? process?.startTime\r\n :'MM:SS'}}</div>\r\n\r\n <div [ngClass]=\"last ? 'dropdown-content1' : 'dropdown-content'\"\r\n *ngIf=\"dropdownOpen[i]?.startTime\">\r\n <div class=\"scroll-container\">\r\n <!-- Minutes List -->\r\n <div class=\"scroll-section minutes-scroll \">\r\n <div *ngFor=\"let min of minutesList\"\r\n (click)=\"selectMinute(i,min,'startTime')\"\r\n [class.selected]=\"min === selectedMinutes\">\r\n {{ min }}\r\n </div>\r\n </div>\r\n <!-- Seconds List -->\r\n <div class=\"scroll-section seconds-scroll\">\r\n <div *ngFor=\"let sec of secondsList\"\r\n (click)=\"selectSecond(i,sec,'startTime')\"\r\n [class.selected]=\"sec === selectedSeconds\">\r\n {{ sec }}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"w-100\">\r\n <div (click)=\"toggleDropdown(i,'endTime')\" class=\"custom-dropdown\">\r\n <label class=\"label fw-semibold bg-white px-2\">End</label>\r\n <div class=\"text-select\"><span>{{process.endTime ? process.endTime :\r\n 'MM:SS'}}</span></div>\r\n\r\n <div [ngClass]=\"last ? 'dropdown-content1' : 'dropdown-content'\"\r\n *ngIf=\"dropdownOpen[i]?.endTime\">\r\n <div class=\"scroll-container\">\r\n <!-- Minutes List -->\r\n <div class=\"scroll-section minutes-scroll\">\r\n <div *ngFor=\"let min of minutesList\"\r\n [class.selected]=\"min === selectedMinutes\"\r\n [class.disabled]=\"getSecondsFromTime(min + ':' + selectedSeconds) <= getSecondsFromTime(process.startTime)\"\r\n (click)=\"\r\n getSecondsFromTime(min + ':' + selectedSeconds) > getSecondsFromTime(process.startTime)\r\n && selectMinute(i,min,'endTime')\">\r\n {{ min }}\r\n </div>\r\n \r\n </div>\r\n <!-- Seconds List -->\r\n <div class=\"scroll-section seconds-scroll\">\r\n <div *ngFor=\"let sec of secondsList\"\r\n [class.selected]=\"sec === selectedSeconds\"\r\n [class.disabled]=\"getSecondsFromTime(selectedMinutes + ':' + sec) <= getSecondsFromTime(process.startTime)\"\r\n (click)=\"\r\n getSecondsFromTime(selectedMinutes + ':' + sec) > getSecondsFromTime(process.startTime)\r\n && selectSecond(i,sec,'endTime')\">\r\n {{ sec }}\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!stepWiseProcess?.length\">\r\n <div *ngIf=\"(tableLoading | async) === 'loading'\"\r\n class=\"card row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(tableLoading | async) === 'loaded'\" class=\"row mt-2\">\r\n <div *ngIf=\"noData\" class=\"col-lg-12\">\r\n <div class=\"card-body my-8 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for the test</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"card mt-3 p-2\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">History</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body py-0 px-3\">\r\n <div class=\"table-responsive border border-1 rounded-3\" *ngIf=\"historyData?.length\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-start\">Audited By</th>\r\n <th>Audited Date</th>\r\n <th>Time Stamp</th>\r\n <th>View Logs</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of historyData\">\r\n <td>{{item.userName}}</td>\r\n <td>{{item.Date}}</td>\r\n <td>{{item.Time}} IST</td>\r\n <td (click)=\"viewHistoryModel(item)\" class=\"cursor-pointer\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"16\"\r\n viewBox=\"0 0 20 16\" fill=\"none\">\r\n <path\r\n d=\"M0.833496 8.00016C0.833496 8.00016 4.16683 1.3335 10.0002 1.3335C15.8335 1.3335 19.1668 8.00016 19.1668 8.00016C19.1668 8.00016 15.8335 14.6668 10.0002 14.6668C4.16683 14.6668 0.833496 8.00016 0.833496 8.00016Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.0002 10.5002C11.3809 10.5002 12.5002 9.38087 12.5002 8.00016C12.5002 6.61945 11.3809 5.50016 10.0002 5.50016C8.61945 5.50016 7.50016 6.61945 7.50016 8.00016C7.50016 9.38087 8.61945 10.5002 10.0002 10.5002Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <div *ngIf=\"!historyData?.length\">\r\n <div *ngIf=\"(historytableLoading | async) === 'loading'\"\r\n class=\"card row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"(historytableLoading | async) === 'loaded'\" class=\"row mt-2\">\r\n <div class=\"col-lg-12\">\r\n <div class=\"card-body my-8 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for the test</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<ng-template #viewHistory let-model>\r\n <div class=\"p-5 ts700px scroll\">\r\n\r\n\r\n <div class=\"card-body py-0 \">\r\n <div class=\"my-2 d-flex\">\r\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"46\"\r\n height=\"46\" viewBox=\"0 0 56 56\" fill=\"none\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#DAF1FF\" />\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#EAF8FF\" stroke-width=\"8\" />\r\n <path\r\n d=\"M28 22V28L32 30M38 28C38 33.5228 33.5228 38 28 38C22.4772 38 18 33.5228 18 28C18 22.4772 22.4772 18 28 18C33.5228 18 38 22.4772 38 28Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span\r\n class=\"ms-3 pt-2 fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Audit\r\n History</span>\r\n </div>\r\n <div class=\"table-responsive\" *ngIf=\"historyData?.length\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-start\">Step-by-Step Process</th>\r\n <th>Status changed from</th>\r\n <th>Noted Time Range</th>\r\n <th>Reason for Error</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of viewHistoryData\">\r\n <td>{{item.processName}}</td>\r\n <td>\r\n <span *ngIf=\"item.AIStatus\" class=\"badge badge-light-success me-2\">Pass</span>\r\n <span *ngIf=\"!item.AIStatus\" class=\"badge badge-light-danger me-2\">Fail</span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"31\" height=\"8\" viewBox=\"0 0 31 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M30.3536 4.35355C30.5488 4.15829 30.5488 3.84171 30.3536 3.64645L27.1716 0.464466C26.9763 0.269204 26.6597 0.269204 26.4645 0.464466C26.2692 0.659728 26.2692 0.976311 26.4645 1.17157L29.2929 4L26.4645 6.82843C26.2692 7.02369 26.2692 7.34027 26.4645 7.53553C26.6597 7.7308 26.9763 7.7308 27.1716 7.53553L30.3536 4.35355ZM0 4.5H30V3.5H0V4.5Z\"\r\n fill=\"#D0D5DD\" />\r\n </svg>\r\n <span *ngIf=\"item.auditedStatus\" class=\"badge badge-light-success ms-2\">Pass</span>\r\n <span *ngIf=\"!item.auditedStatus\" class=\"badge badge-light-danger ms-2\">Fail</span>\r\n </td>\r\n <td ><span class=\"badge badge-light-success\" *ngIf=\"item.startTime\">Noted Time Range : <span class=\"text-dark1\">{{item.startTime ? item.startTime:'--'}} - {{item.endTime}}</span></span></td>\r\n <td class=\"engage-text\"><span *ngIf=\"item.reason !=='others'\">{{item.reason}}</span><span *ngIf=\"item.reason ==='others'\">{{item.otherReason}}</span></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #viewCancel let-model>\r\n <div class=\"card group-delete py-0\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <svg width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\"/>\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\"/>\r\n <path d=\"M27.9988 24V28M27.9988 32H28.0088M26.2888 18.86L17.8188 33C17.6442 33.3024 17.5518 33.6453 17.5508 33.9945C17.5498 34.3437 17.6403 34.6871 17.8132 34.9905C17.9862 35.2939 18.2355 35.5467 18.5365 35.7238C18.8375 35.9009 19.1796 35.9961 19.5288 36H36.4688C36.818 35.9961 37.1601 35.9009 37.4611 35.7238C37.7621 35.5467 38.0114 35.2939 38.1844 34.9905C38.3573 34.6871 38.4478 34.3437 38.4468 33.9945C38.4458 33.6453 38.3534 33.3024 38.1788 33L29.7088 18.86C29.5305 18.5661 29.2795 18.3231 28.98 18.1544C28.6805 17.9858 28.3425 17.8972 27.9988 17.8972C27.6551 17.8972 27.3171 17.9858 27.0176 18.1544C26.7181 18.3231 26.4671 18.5661 26.2888 18.86Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n </div>\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Are you sure?</a>\r\n <span class=\"sub-title fw-normal mt-2\">Would you like to cancel this?</span>\r\n \r\n <div class=\"mt-5 w-100\">\r\n \r\n <div role=\"group\" class=\"d-flex mt-3 mb-15\">\r\n <button class=\"btn btn-outline w-100 me-3\" (click)=\"OnCancel()\">No</button>\r\n <button id=\"alert-toast\" class=\"btn btn-danger w-100 ms-3\" (click)=\"onYes()\">Yes</button>\r\n \r\n </div>\r\n \r\n </div>\r\n \r\n </div>\r\n </div>\r\n</ng-template>","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { EyeTestAuditComponent } from './eye-test-audit.component';\r\nimport { StartAuditComponent } from './start-audit/start-audit.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: EyeTestAuditComponent\r\n },\r\n {\r\n path: 'start',\r\n component: StartAuditComponent\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class EyeTestAuditRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { EyeTestAuditRoutingModule } from './eye-test-audit-routing.module';\r\nimport { EyeTestAuditComponent } from './eye-test-audit.component';\r\nimport { StartAuditComponent } from './start-audit/start-audit.component';\r\nimport { EyeTestComponent } from '../eye-test/eye-test.component';\r\nimport { CommonSharedModule } from 'tango-app-ui-shared';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { NgxDaterangepickerMd } from 'ngx-daterangepicker-material';\r\nimport { ReactiveSelectComponent } from '../reactive-select/reactive-select.component';\r\nimport { CustomSelectComponent } from '../custom-select/custom-select.component';\r\nimport { GroupSelectComponent } from '../group-select/group-select.component';\r\nimport { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n EyeTestAuditComponent,\r\n StartAuditComponent,\r\n EyeTestComponent,\r\n ReactiveSelectComponent,\r\n CustomSelectComponent,\r\n GroupSelectComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n EyeTestAuditRoutingModule,\r\n CommonSharedModule,\r\n FormsModule,\r\n ReactiveFormsModule, \r\n NgxDaterangepickerMd,\r\n NgbTooltipModule\r\n ]\r\n})\r\nexport class EyeTestAuditModule { }\r\n"],"names":["i1.EyeTestAuditService","i2","i3","i1","i3.TraxService","i4.EyeTestAuditService","i5","i6","i7","i9.ReactiveSelectComponent","i10.CustomSelectComponent","i11.GroupSelectComponent","i2.EyeTestComponent"],"mappings":"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"}
1
+ {"version":3,"file":"tango-app-ui-analyse-trax-eye-test-audit.module-CGAYPgis.mjs","sources":["../../../projects/tango-analyse-trax/src/lib/components/eye-test-audit/services/eye-test-audit.service.ts","../../../projects/tango-analyse-trax/src/lib/components/eye-test-audit/reactive-select/reactive-select.component.ts","../../../projects/tango-analyse-trax/src/lib/components/eye-test-audit/reactive-select/reactive-select.component.html","../../../projects/tango-analyse-trax/src/lib/components/eye-test-audit/custom-select/custom-select.component.ts","../../../projects/tango-analyse-trax/src/lib/components/eye-test-audit/custom-select/custom-select.component.html","../../../projects/tango-analyse-trax/src/lib/components/eye-test-audit/group-select/group-select.component.ts","../../../projects/tango-analyse-trax/src/lib/components/eye-test-audit/group-select/group-select.component.html","../../../projects/tango-analyse-trax/src/lib/components/eye-test-audit/eye-test/eye-test.component.ts","../../../projects/tango-analyse-trax/src/lib/components/eye-test-audit/eye-test/eye-test.component.html","../../../projects/tango-analyse-trax/src/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.component.ts","../../../projects/tango-analyse-trax/src/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.component.html","../../../projects/tango-analyse-trax/src/lib/components/eye-test-audit/eye-test-audit/start-audit/start-audit.component.ts","../../../projects/tango-analyse-trax/src/lib/components/eye-test-audit/eye-test-audit/start-audit/start-audit.component.html","../../../projects/tango-analyse-trax/src/lib/components/eye-test-audit/eye-test-audit/eye-test-audit-routing.module.ts","../../../projects/tango-analyse-trax/src/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.module.ts"],"sourcesContent":["import { Injectable, OnDestroy } from \"@angular/core\";\r\nimport { BehaviorSubject, Subject, Observable, takeUntil } from \"rxjs\";\r\nimport { GlobalStateService } from \"tango-app-ui-global\";\r\nimport {\r\n HttpClient,\r\n HttpErrorResponse,\r\n HttpParams,\r\n} from \"@angular/common/http\";\r\nimport * as FileSaver from 'file-saver';\r\nimport * as XLSX from 'xlsx';\r\n\r\nconst EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\r\nconst EXCEL_EXTENSION = '.xlsx';\r\nconst CSV_TYPE = 'text/csv;charset=utf-8';\r\nconst CSV_EXTENSION = '.csv';\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class EyeTestAuditService implements OnDestroy {\r\n dropDownTrigger = new BehaviorSubject<any>(null);\r\n eyeTestauditApiUrl: any;\r\n\r\n constructor(private http: HttpClient, private gs: GlobalStateService) {\r\n this.gs.environment.pipe(takeUntil(this.destroy$)).subscribe((env) => {\r\n if (env) {\r\n this.eyeTestauditApiUrl = env.eyeTestauditApiUrl;\r\n }\r\n });\r\n }\r\n public auditFilterData: any = null;\r\n private readonly destroy$ = new Subject();\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n\r\n getEyeTestlist(data: any): Observable<any> {\r\n return this.http.post(`${this.eyeTestauditApiUrl}/get-list`, data);\r\n }\r\n \r\n getEyeTestTableExport(data: any): Observable<any> {\r\n return this.http.post(`${this.eyeTestauditApiUrl}/get-list`, data, {\r\n responseType: 'arraybuffer'\r\n });\r\n }\r\n getAuditHistory(payload: any) {\r\n return this.http.get(\r\n `${this.eyeTestauditApiUrl}/get-file-history/${payload?.id}/${payload.type}`\r\n );\r\n }\r\n submitAudit(payload: any) {\r\n return this.http.post(`${this.eyeTestauditApiUrl}/save`, payload);\r\n }\r\n cancelAuditFile(payload: any) {\r\n return this.http.post(`${this.eyeTestauditApiUrl}/cancel`, payload);\r\n }\r\n getAuditdetails(payload: any) {\r\n return this.http.get(\r\n `${this.eyeTestauditApiUrl}/view-file/${payload?.id}`\r\n );\r\n }\r\n viewAuditHistory(payload: any) {\r\n return this.http.get(\r\n `${this.eyeTestauditApiUrl}/user-audited-data/${payload?.id}`\r\n );\r\n }\r\n getAuditFile(payload: any) {\r\n return this.http.get(\r\n `${this.eyeTestauditApiUrl}/get-file/${payload?.id}`\r\n );\r\n }\r\n public exportAsExcelFile(json: any[], excelFileName: string): void {\r\n if (!Array.isArray(json)) {\r\n console.error('Invalid JSON data passed. Expected an array.', json);\r\n return;\r\n }\r\n \r\n const worksheet: XLSX.WorkSheet = XLSX.utils?.json_to_sheet(json);\r\n const workbook: XLSX.WorkBook = { Sheets: { 'data': worksheet }, SheetNames: ['data'] };\r\n const excelBuffer: any = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });\r\n this.saveAsExcelFile(excelBuffer, excelFileName);\r\n }\r\n \r\n \r\n public saveAsExcelFile(buffer: any, fileName: string): void {\r\n const data: Blob = new Blob([buffer], {\r\n type: EXCEL_TYPE\r\n });\r\n FileSaver.saveAs(data, fileName + 'list' + EXCEL_EXTENSION);\r\n }\r\n public saveAsTemplate(buffer: any, fileName: string): void {\r\n const data: Blob = new Blob([buffer], {\r\n type: EXCEL_TYPE\r\n });\r\n FileSaver.saveAs(data, fileName + EXCEL_EXTENSION);\r\n }\r\n public exportAsCSVFile(json: any[], excelFileName: string, identifier?: any[]): void {\r\n const worksheet: XLSX.WorkSheet = XLSX.utils.json_to_sheet(json);\r\n \r\n const csvOutput: string = XLSX.utils.sheet_to_csv(worksheet);\r\n this.saveAsCSVFile(csvOutput, excelFileName);\r\n }\r\n private saveAsCSVFile(buffer: any, fileName: string): void {\r\n const data: Blob = new Blob([buffer], {\r\n type: CSV_TYPE\r\n });\r\n FileSaver.saveAs(data, fileName + CSV_EXTENSION);\r\n }\r\n}\r\n","import { ChangeDetectorRef, Component, EventEmitter, HostListener, Input, OnInit, Output, Provider, forwardRef } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { EyeTestAuditService } from '../services/eye-test-audit.service';\r\n\r\n\r\nconst SELECT_CONTROL_VALUE_ACCESSOR: Provider = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ReactiveSelectComponent),\r\n multi: true,\r\n};\r\n\r\n@Component({\r\n selector: 'lib-reactive-select',\r\n templateUrl: './reactive-select.component.html',\r\n styleUrl: './reactive-select.component.scss',\r\n providers: [SELECT_CONTROL_VALUE_ACCESSOR]\r\n})\r\nexport class ReactiveSelectComponent implements ControlValueAccessor, OnInit {\r\n\r\n private onTouched: Function;\r\n private onChanged: Function;\r\n protected isDisabled: boolean;\r\n @Input() idField: string\r\n @Input() nameField: string\r\n @Input() label: string\r\n @Input() data: any\r\n @Output() itemChange = new EventEmitter()\r\n protected isOpened: boolean = false\r\n protected selected: Record<string, any> | null = null\r\n protected selectedId: string | number\r\n instanceId: string;\r\n\r\n\r\n constructor(private apiService: EyeTestAuditService, private cd: ChangeDetectorRef) {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n this.instanceId = crypto.randomUUID();\r\n this.apiService.dropDownTrigger.subscribe((e) => {\r\n if (e !== this.instanceId) {\r\n this.isOpened = false\r\n this.cd.detectChanges()\r\n }\r\n })\r\n }\r\n\r\n\r\n writeValue(val: string | number): void {\r\n this.selectedId = val\r\n this.selected = this.data.filter((item: Record<string, any>) => item?.[this.idField] === val)[0]\r\n \r\n }\r\n registerOnChange(fn: any): void {\r\n this.onChanged = fn\r\n \r\n }\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn\r\n }\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled\r\n\r\n }\r\n\r\n onSelect(item: Record<string, any>) {\r\n this.onTouched()\r\n this.selected = item\r\n this.selectedId = item?.[this.idField]\r\n this.isOpened = false\r\n this.itemChange.next(this.selectedId)\r\n this.onChanged(this.selectedId)\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n onClick(event: MouseEvent) {\r\n if (!this.isDisabled) {\r\n const targetElement = event.target as HTMLElement;\r\n if (!this.isComponentClicked(targetElement)) {\r\n this.isOpened = false;\r\n }\r\n }\r\n }\r\n\r\n isComponentClicked(targetElement: HTMLElement): boolean {\r\n const parentElement = targetElement.parentElement;\r\n if (parentElement) {\r\n const clickedOnComponent = parentElement.classList.contains('custom-select');\r\n if (clickedOnComponent) {\r\n return true;\r\n } else {\r\n return this.isComponentClicked(parentElement);\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n openDropdown(){\r\n this.isOpened = !this.isOpened;\r\n this.apiService.dropDownTrigger.next(this.instanceId)\r\n }\r\n\r\n\r\n}\r\n","<div class=\"custom-select\">\r\n <div class=\"form-group\">\r\n <label *ngIf=\"label\" class=\"form-label\">{{label}}</label>\r\n <div class=\"position-relative\">\r\n <div (click)=\"openDropdown()\" [ngClass]=\"isDisabled ? 'disable' : ''\" class=\"form-select dropselect ellipse1\">\r\n {{selected?.[nameField]}}</div>\r\n <div *ngIf=\"isOpened\" class=\"card py-2 w-100 position-absolute start-0 z-1 drop-list\">\r\n <ul class=\"list-unstyled mb-2\">\r\n <li *ngFor=\"let item of data\" (click)=\"onSelect(item)\"\r\n [ngClass]=\"item?.[idField] === selected?.[idField] ? 'active' : ''\"\r\n class=\"text px-5 items cursor-pointer py-4 \">\r\n {{item?.[nameField]}}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostListener, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { EyeTestAuditService } from '../services/eye-test-audit.service';\r\n \r\n@Component({\r\n selector: 'lib-stores-select',\r\n templateUrl: './custom-select.component.html',\r\n styleUrl: './custom-select.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CustomSelectComponent implements OnChanges, OnInit {\r\n \r\n @HostListener('document:click', ['$event'])\r\n onClick(event: MouseEvent) {\r\n const target = event.target as HTMLElement;\r\n if (!target.closest('.dropdown')) {\r\n this.showDropdown = false;\r\n }\r\n }\r\n \r\n @Input() items: any\r\n @Input() searchField: string\r\n @Input() multi: boolean\r\n @Input() idField: string\r\n @Input() selectedValues: any = []\r\n @Input() disabled: boolean | undefined\r\n @Input() label: string\r\n \r\n @Output() selected = new EventEmitter<any>()\r\n filteredValues: any = []\r\n showDropdown: boolean\r\n searchValue: string\r\n instanceId: any;\r\n \r\n \r\n constructor(private cd: ChangeDetectorRef, private authService: EyeTestAuditService) { }\r\n ngOnInit(): void {\r\n this.instanceId = crypto.randomUUID();\r\n this.authService.dropDownTrigger.subscribe((e)=>{ \r\n if(e !== this.instanceId){ \r\n this.showDropdown = false\r\n this.cd.detectChanges()\r\n }\r\n })\r\n }\r\n get selectedValuesDisplay(): string {\r\n return this.selectedValues?.map((item:any) => item[this.searchField]).join(', ') || '';\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n \r\n if (changes['items'] && this.items?.length) {\r\n this.initializeItems();\r\n }\r\n if (changes['selectedValues'] && Array.isArray(changes['selectedValues']?.currentValue) && changes['selectedValues']?.currentValue?.length > 0 && changes['selectedValues']?.currentValue[0]) { \r\n \r\n\r\n this.updateSelectedValues();\r\n\r\n }\r\n }\r\n \r\n initializeItems() { \r\n \r\n this.filteredValues = this.items?.map((item: any) => ({ ...item }));\r\n this.updateSelectedValues()\r\n }\r\n \r\n updateSelectedValues() { \r\n this.selectedValues?.forEach((selectedItem: any) => {\r\n const item = this.filteredValues?.find((filteredItem: any) => filteredItem?.[this.idField] === selectedItem?.[this.idField]);\r\n if (item) {\r\n item.isSelected = true;\r\n }\r\n });\r\n \r\n }\r\n \r\n openDropdown(event: any) {\r\n this.searchTerm = ''\r\n this.authService.dropDownTrigger.next(this.instanceId)\r\n event.stopPropagation();\r\n this.showDropdown = !this.showDropdown;\r\n // this.filteredValues = this.selectedValues\r\n this.filteredValues.forEach((data:any)=>{\r\n data.isSelected = false\r\n })\r\n this.selectedValues = []\r\n this.selected.emit(this.selectedValues);\r\n this.searchValue = ''\r\n }\r\n // onInput(event: any) {\r\n // if (!event.target.value) {\r\n // this.filteredValues = [...this.items];\r\n // } else {\r\n // const searchTerm = event.target.value.toLowerCase();\r\n // if(searchTerm.includes(\",\")){\r\n // console.log(searchTerm.split(','))\r\n // this.filteredValues = []\r\n // searchTerm.split(',').map((data:any)=>{\r\n // if(data!=''){\r\n // let filterArray = this.items.filter((item: any) =>{\r\n // console.log(item[this.searchField].toLowerCase(),data.trim().toLowerCase() )\r\n // item[this.searchField].toLowerCase().includes(data.trim().toLowerCase() )\r\n // })\r\n // console.log(filterArray)\r\n\r\n // this.filteredValues = [...this.filteredValues,...filterArray]\r\n\r\n // }\r\n \r\n // })\r\n // console.log(this.filteredValues)\r\n // }else{\r\n // this.filteredValues = this.items.filter((item: any) =>\r\n // item[this.searchField].toLowerCase().includes(searchTerm)\r\n // );\r\n // }\r\n \r\n // }\r\n // this.updateSelectedValues();\r\n // this.cd.detectChanges();\r\n // }\r\n searchTerm:any;\r\n onInput(event: any): void {\r\n const input = event.target.value.trim();\r\n // debugger\r\n this.searchTerm = input;\r\n\r\n if (!input) {\r\n this.filteredValues = [...this.items];\r\n } else {\r\n console.log(input,input.includes(\",\"))\r\n if(input.includes(\",\")){\r\n const searchTerms = input\r\n .split(',')\r\n .map((term:any) => term.trim().toLowerCase())\r\n .filter((term:any) => term); // Remove empty terms\r\n this.filteredValues = this.items.filter((item: any) =>\r\n searchTerms.some((term:any) => item[this.searchField]?.trim().toLowerCase() === term)\r\n ); \r\n }else{\r\n this.filteredValues = this.items.filter((item: any) =>\r\n item[this.searchField].trim().toLowerCase().includes(input.trim().toLowerCase())\r\n );\r\n }\r\n }\r\n\r\n this.filteredValues.forEach((item: any) => {\r\n item.isSelected = this.selectedValues.some(\r\n (selected: any) => selected[this.idField] === item[this.idField]\r\n );\r\n });\r\n this.emitSelectedValues(this.filteredValues);\r\n this.updateSelectedValues(); \r\n this.cd.detectChanges();\r\n }\r\n \r\n \r\n \r\n onSelect(event: any, item: any) {\r\n console.log(item)\r\n console.log(this.selectedValues);\r\n \r\n const isChecked = event.currentTarget.checked;\r\n if (this.multi) {\r\n if (isChecked) {\r\n if (!this.selectedValues.some((elem: any) => elem[this.idField] === item[this.idField])) {\r\n this.selectedValues.push(item);\r\n }\r\n } else {\r\n this.selectedValues = this.selectedValues.filter(\r\n (elem: any) => elem[this.idField] !== item[this.idField]\r\n );\r\n }\r\n } else {\r\n this.selectedValues = [{ ...item }];\r\n console.log(this.selectedValues);\r\n \r\n this.filteredValues.forEach((element: any) => {\r\n element.isSelected = element[this.idField] === item[this.idField];\r\n });\r\n this.showDropdown = false; \r\n }\r\n this.filteredValues.forEach((listItem: any) => {\r\n listItem.isSelected = this.selectedValues.some(\r\n (selected: any) => selected[this.idField] === listItem[this.idField]\r\n );\r\n });\r\n console.log(this.searchTerm.includes(\",\"))\r\n if(this.searchTerm.includes(\",\")){\r\n const searchTerms = this.searchTerm\r\n .split(',')\r\n .map((term:any) => term.trim().toLowerCase())\r\n .filter((term:any) => term); // Remove empty terms\r\n this.filteredValues = this.items.filter((item: any) =>\r\n searchTerms.some((term:any) => item[this.searchField]?.trim().toLowerCase() === term)\r\n ); \r\n }else{\r\n this.filteredValues = this.items.filter((item: any) =>\r\n item[this.searchField].trim().toLowerCase().includes(this.searchTerm.trim().toLowerCase())\r\n );\r\n }\r\n \r\nconsole.log(this.filteredValues)\r\n \r\n // Emit selected values without `isSelected` property\r\n const valuesToEmit = this.selectedValues.map((value: any) => {\r\n const { isSelected, ...selectedItem } = value;\r\n return selectedItem;\r\n });\r\n this.emitSelectedValues(valuesToEmit); // Emit updated selections\r\n this.cd.detectChanges();\r\n }\r\n \r\n \r\n onSelectAll(event: any) {\r\n const selectAll = event.currentTarget.checked;\r\n \r\n if (selectAll) {\r\n this.filteredValues.forEach((item: any) => {\r\n if (!this.selectedValues.some((elem: any) => elem[this.idField] === item[this.idField])) {\r\n this.selectedValues.push(item);\r\n }\r\n });\r\n } else {\r\n console.log(this.selectedValues)\r\n console.log(this.filteredValues);\r\n \r\n this.selectedValues = this.selectedValues.filter(\r\n (item: any) => !this.filteredValues.some(\r\n (filteredItem: any) => filteredItem[this.idField] === item[this.idField]\r\n )\r\n );\r\n }\r\n \r\n // Update the `isSelected` state in the filtered list\r\n this.filteredValues.forEach((item: any) => {\r\n item.isSelected = selectAll;\r\n });\r\n \r\n // Emit selected values without `isSelected` property\r\n const valuesToEmit = this.selectedValues.map((value: any) => {\r\n const { isSelected, ...selectedItem } = value;\r\n return selectedItem;\r\n });\r\n \r\n this.emitSelectedValues(valuesToEmit);\r\n this.cd.detectChanges();\r\n }\r\n \r\n \r\n \r\n \r\n \r\n emitSelectedValues(values: any[]) {\r\n if (this.multi) {\r\n this.selected.emit(values);\r\n } else {\r\n this.selected.emit(values[0]);\r\n }\r\n }\r\n \r\n checkIfAllSelected() {\r\n return this.filteredValues.every((item: any) => item.isSelected);\r\n }\r\n}","<div class=\"outer-container\">\r\n <div [ngClass]=\"disabled ? 'disable-input':''\" (click)=\"openDropdown($event)\" class=\"form-select\">\r\n <ng-container *ngIf=\"multi\" >\r\n <span *ngIf=\"selectedValues?.length\" class=\"select-value mx-2\"> {{selectedValues?.[0]?.[searchField]}}</span> \r\n <!-- <span *ngIf=\"selectedValues?.length > 1\" class=\"select-value mx-2\"><img class=\"me-2\" alt=\"Pic\" src=\"./assets/tango/Image/users-teams.svg\">{{selectedValues?.[1]?.[searchField]}}</span> -->\r\n <span class=\"select-value mx-2\" *ngIf=\"selectedValues?.length > 1\">+{{selectedValues?.length -1}}</span> {{label}} \r\n </ng-container>\r\n <ng-container *ngIf=\"!multi\" >\r\n {{selectedValues?.[0]?.[searchField]}}\r\n </ng-container>\r\n </div>\r\n <div [ngClass]=\"showDropdown ? '' : 'd-none'\" class=\"input-container dropdown\" >\r\n <div class=\"w-100 input-wrapper\">\r\n <input [(ngModel)]=\"searchValue\" placeholder=\"Search\" (input)=\"onInput($event)\" type=\"text\"> \r\n <svg class=\"search-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\r\n <path d=\"M14 14.5L11.1 11.6M12.6667 7.83333C12.6667 10.7789 10.2789 13.1667 7.33333 13.1667C4.38781 13.1667 2 10.7789 2 7.83333C2 4.88781 4.38781 2.5 7.33333 2.5C10.2789 2.5 12.6667 4.88781 12.6667 7.83333Z\" stroke=\"#667085\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n <ul>\r\n <li *ngIf=\"multi && filteredValues?.length\">\r\n <label class=\"form-check\" [for]=\"instanceId\">\r\n <input (change)=\"onSelectAll($event)\" [checked]=\"checkIfAllSelected()\" class=\"form-check-input me-3\" type=\"checkbox\"\r\n [id]=\"instanceId\">\r\n <span class=\"form-check-label\" >\r\n Select All\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngFor=\"let item of filteredValues\" [ngClass]=\"item.isSelected && !multi ? 'selected' : ''\" >\r\n <label [for]=\"item[idField] + instanceId\" [ngClass]=\"multi ? '': 'ps-0'\" class=\"form-check\">\r\n <input [ngClass]=\"multi ? '': 'd-none'\" (change)=\"onSelect($event, item)\" [(ngModel)]=\"item.isSelected\" class=\"form-check-input me-3\" type=\"checkbox\" value=\"\"\r\n [id]=\"item[idField] + instanceId\">\r\n <span class=\"form-check-label\" >\r\n {{item[searchField]}}\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngIf=\"!filteredValues?.length\" >\r\n <span class=\"d-flex align-items-center justify-content-center\" >No data found</span>\r\n </li>\r\n </ul> \r\n </div> \r\n \r\n</div>","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostListener, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { EyeTestAuditService } from '../services/eye-test-audit.service';\r\n\r\n@Component({\r\n selector: 'lib-group-select',\r\n templateUrl: './group-select.component.html',\r\n styleUrl: './group-select.component.scss'\r\n})\r\nexport class GroupSelectComponent implements OnInit,OnChanges {\r\n @HostListener('document:click', ['$event'])\r\n onClick(event: MouseEvent) {\r\n const target = event.target as HTMLElement;\r\n if (!target.closest('.dropdown')) {\r\n this.showDropdown = false;\r\n }\r\n }\r\n \r\n @Input() items: any\r\n @Input() searchField: string\r\n @Input() multi: boolean\r\n @Input() idField: string\r\n @Input() selectedValues: any = []\r\n @Input() disabled: boolean | undefined\r\n @Input() label: string\r\n @Output() selected = new EventEmitter<any>()\r\n filteredValues: any = []\r\n showDropdown: boolean\r\n searchValue: string\r\n instanceId: any;\r\n \r\n \r\n constructor(private cd: ChangeDetectorRef, private authService:EyeTestAuditService) { }\r\n ngOnInit(): void {\r\n this.instanceId = crypto.randomUUID();\r\n this.authService.dropDownTrigger.subscribe((e)=>{ \r\n if(e !== this.instanceId){ \r\n this.showDropdown = false\r\n this.cd.detectChanges()\r\n }\r\n })\r\n }\r\n \r\n ngOnChanges(changes: SimpleChanges): void {\r\n \r\n if (changes['items'] && this.items?.length) {\r\n this.initializeItems();\r\n }\r\n if (changes['selectedValues'] && Array.isArray(changes['selectedValues']?.currentValue) && changes['selectedValues']?.currentValue?.length > 0 && changes['selectedValues']?.currentValue[0]) { \r\n this.updateSelectedValues();\r\n }\r\n }\r\n \r\n initializeItems() {\r\n this.filteredValues = this.items.map((item: any) => ({ ...item }));\r\n this.updateSelectedValues()\r\n }\r\n \r\n updateSelectedValues() { \r\n this.selectedValues?.forEach((selectedItem: any) => {\r\n const item = this.filteredValues?.find((filteredItem: any) => filteredItem?.[this.idField] === selectedItem?.[this.idField]);\r\n if (item) {\r\n item.isSelected = true;\r\n }\r\n });\r\n \r\n }\r\n \r\n openDropdown(event: any) {\r\n this.authService.dropDownTrigger.next(this.instanceId)\r\n event.stopPropagation();\r\n this.showDropdown = !this.showDropdown;\r\n }\r\n \r\n onInput(event: any) {\r\n if (!event.target.value) {\r\n this.filteredValues = [...this.items];\r\n } else {\r\n const searchTerm = event.target.value.toLowerCase();\r\n this.filteredValues = this.items.filter((item: any) =>\r\n item[this.searchField].toLowerCase().includes(searchTerm)\r\n );\r\n }\r\n this.updateSelectedValues();\r\n this.cd.detectChanges();\r\n }\r\n \r\n onSelect(event: any, item: any) { \r\n if (this.multi) {\r\n if (event.currentTarget.checked) {\r\n this.selectedValues.push(item ); \r\n } else {\r\n this.selectedValues = this.selectedValues.filter((elem: any) => elem[this.idField] !== item[this.idField]);\r\n }\r\n } else {\r\n this.selectedValues = [{ ...item }];\r\n this.filteredValues.forEach((element:any) => {\r\n if(element[this.idField] !== item[this.idField]){\r\n element.isSelected = false\r\n }\r\n });\r\n this.showDropdown = false;\r\n }\r\n \r\n const valuesToEmit = this.selectedValues.map((value: any) => {\r\n const selectedItem = { ...value };\r\n delete selectedItem.isSelected;\r\n return selectedItem;\r\n });\r\n \r\n this.cd.detectChanges();\r\n this.emitSelectedValues(valuesToEmit);\r\n \r\n }\r\n \r\n onSelectAll(event: any) {\r\n const selectAll = event.currentTarget.checked;\r\n this.filteredValues.forEach((item: any) => item.isSelected = selectAll);\r\n \r\n if (selectAll) {\r\n this.selectedValues = [...this.filteredValues];\r\n } else {\r\n this.selectedValues = [];\r\n }\r\n \r\n const valuesToEmit = this.selectedValues.map((value: any) => {\r\n const { isSelected, ...selectedItem } = value;\r\n return selectedItem;\r\n });\r\n \r\n this.cd.detectChanges();\r\n this.emitSelectedValues(valuesToEmit);\r\n }\r\n \r\n \r\n emitSelectedValues(values: any[]) {\r\n if (this.multi) {\r\n this.selected.emit(values);\r\n } else {\r\n this.selected.emit(values[0]);\r\n }\r\n }\r\n \r\n checkIfAllSelected() {\r\n return this.filteredValues.every((item: any) => item.isSelected);\r\n }\r\n}\r\n","<div class=\"outer-container\">\r\n <div [ngClass]=\"disabled ? 'disable-input':''\" (click)=\"openDropdown($event)\" class=\"form-select\">\r\n <ng-container *ngIf=\"multi\" >\r\n <span *ngIf=\"selectedValues?.length\" class=\"select-value w-50 mx-2\"> <img class=\"me-2\" alt=\"Pic\" src=\"./assets/tango/Image/users-teams.svg\">{{selectedValues?.[0]?.[searchField]}}</span> \r\n <!-- <span *ngIf=\"selectedValues?.length > 1\" class=\"select-value mx-2\"><img class=\"me-2\" alt=\"Pic\" src=\"./assets/tango/Image/users-teams.svg\">{{selectedValues?.[1]?.[searchField]}}</span> -->\r\n <span class=\"select-value mx-2\" *ngIf=\"selectedValues?.length > 1\">+{{selectedValues?.length -1}}</span> {{label}} \r\n </ng-container>\r\n <ng-container *ngIf=\"!multi\" >\r\n {{selectedValues?.[0]?.[searchField]}}\r\n </ng-container>\r\n </div>\r\n <div [ngClass]=\"showDropdown ? '' : 'd-none'\" class=\"input-container dropdown\" >\r\n <div class=\"w-100 input-wrapper\">\r\n <input [(ngModel)]=\"searchValue\" placeholder=\"Search\" (input)=\"onInput($event)\" type=\"text\"> \r\n <svg class=\"search-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\r\n <path d=\"M14 14.5L11.1 11.6M12.6667 7.83333C12.6667 10.7789 10.2789 13.1667 7.33333 13.1667C4.38781 13.1667 2 10.7789 2 7.83333C2 4.88781 4.38781 2.5 7.33333 2.5C10.2789 2.5 12.6667 4.88781 12.6667 7.83333Z\" stroke=\"#667085\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n <ul>\r\n <li *ngIf=\"multi && filteredValues?.length\">\r\n <label class=\"form-check\" [for]=\"instanceId\" >\r\n <input (change)=\"onSelectAll($event)\" [checked]=\"checkIfAllSelected()\" class=\"form-check-input me-3\" type=\"checkbox\"\r\n [id]=\"instanceId\">\r\n <span class=\"form-check-label\" >\r\n Select All\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngFor=\"let item of filteredValues\" [ngClass]=\"item.isSelected && !multi ? 'selected' : ''\" >\r\n <label [for]=\"item[idField] + instanceId\" [ngClass]=\"multi ? '': 'ps-0'\" class=\"form-check\">\r\n <input [ngClass]=\"multi ? '': 'd-none'\" (change)=\"onSelect($event, item)\" [(ngModel)]=\"item.isSelected\" class=\"form-check-input me-3\" type=\"checkbox\" value=\"\"\r\n [id]=\"item[idField] + instanceId\">\r\n <span class=\"form-check-label\" >\r\n {{item[searchField]}}\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngIf=\"!filteredValues?.length\" >\r\n <span class=\"d-flex align-items-center justify-content-center\" >No data found</span>\r\n </li>\r\n </ul> \r\n </div> \r\n \r\n</div>","import { ChangeDetectorRef, Component, OnInit } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { GlobalStateService, PageInfoService } from 'tango-app-ui-global';\r\nimport dayjs from 'dayjs';\r\nimport 'dayjs/locale/en';\r\nimport utc from 'dayjs/plugin/utc';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { TraxService } from '../../../services/trax.service';\r\nimport { EyeTestAuditService } from '../services/eye-test-audit.service';\r\nimport { ToastService } from 'tango-app-ui-shared';\r\n@Component({\r\n selector: 'lib-eye-test',\r\n templateUrl: './eye-test.component.html',\r\n styleUrl: './eye-test.component.scss'\r\n})\r\nexport class EyeTestComponent implements OnInit {\r\n dayjs = dayjs\r\n eyeTestForm: FormGroup;\r\n selectedDateRange: any = {};\r\n selectedDate: any;\r\n isCustomDate: any;\r\n headerFilters: any = [];\r\n ClusterList: any = [];\r\n stores: any = [];\r\n clientData: any;\r\n private destroy$ = new Subject();\r\n groups: any = [];\r\n storeList: any[] = [];\r\n noData = false;\r\n loading = true;\r\n eyeTestData: any;\r\n typeValue: any = 'remote';\r\n type: any = [\r\n { value: 'remote', label: 'Remote Test Compliance' },\r\n { value: 'physical', label: 'Eye Test Compliance' },\r\n\r\n ]\r\n auditType: any = [{ label: 'All', value: 'all' },\r\n { label: 'Adult', value: 'adult' },\r\n { label: 'Kid', value: 'kid' },\r\n ]\r\n constructor(private pageInfo: PageInfoService, private fb: FormBuilder, private traxService: TraxService, private eyeService: EyeTestAuditService, private router: Router, private cd: ChangeDetectorRef,\r\n public gs: GlobalStateService, private ts: ToastService, private route: ActivatedRoute) {\r\n }\r\n headDate: any;\r\n headDateEnd:any\r\n ngOnInit(): void {\r\n this.typeValue = 'remote';\r\n this.isCustomDate = (m: dayjs.Dayjs) => {\r\n const isValidDate = m > this.dayjs();\r\n return isValidDate ? 'invalid-date' : false;\r\n }\r\n this.selectedDateRange = {\r\n startDate: this.dayjs().subtract(1, 'day').format('DD-MM-YYYY'),\r\n endDate: this.dayjs().subtract(1, 'day').format('DD-MM-YYYY')\r\n }\r\n console.log(this.selectedDateRange.startDate)\r\n this.route.queryParams.subscribe(params => {\r\n if (params && params['fromDate'] && params['toDate'] && params['typeValue']) {\r\n this.typeValue = params['typeValue']\r\n \r\n this.selectedDateRange.startDate = this.dayjs( params['fromDate'], 'YYYY-MM-DD').format('DD-MM-YYYY');\r\n this.selectedDateRange.endDate = this.dayjs( params['toDate'], 'YYYY-MM-DD').format('DD-MM-YYYY');\r\n } else {\r\n console.log(\"----\",this.selectedDateRange.startDate)\r\n this.router.navigate(['/manage/trax/audit'], {\r\n queryParams: { fromDate:this.dayjs( this.selectedDateRange.startDate, 'DD-MM-YYYY').format('YYYY-MM-DD'), toDate:this.dayjs( this.selectedDateRange.endDate, 'DD-MM-YYYY').format('YYYY-MM-DD'), typeValue: this.typeValue }\r\n });\r\n }\r\n });\r\n let dateTime = this.selectedDateRange.startDate\r\n this.headDate = this.dayjs(dateTime, 'DD-MM-YYYY').format('MMM, DD');\r\n this.headDateEnd = this.dayjs(this.selectedDateRange.endDate, 'DD-MM-YYYY').format('MMM DD, YYYY');\r\n this.createForm();\r\n this.eyeTestForm.get('Type')?.setValue(this.typeValue)\r\n this.gs.dataRangeValue.pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (data: any) => {\r\n // let data = JSON.parse(localStorage.getItem(\"header-filters\") || \"\")\r\n if (data?.client) {\r\n this.headerFilters = data;\r\n this.getAllGroups();\r\n this.getAllStores();\r\n } else {\r\n let userinfo = JSON.parse(localStorage.getItem(\"user-info\") || \"\")\r\n if (userinfo && userinfo?.clientId) {\r\n this.headerFilters.client = userinfo?.clientId\r\n this.getAllGroups();\r\n this.getAllStores();\r\n }\r\n }\r\n },\r\n });\r\n }\r\n\r\n getAllGroups() {\r\n this.traxService.getclusters({ clientId: this.headerFilters?.client, group: [], city: [] }).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ClusterList = res.data.groupData\r\n } else {\r\n this.ClusterList = []\r\n }\r\n }\r\n })\r\n }\r\n // clientDetails() {\r\n // this.traxService.getclient({ clientId: this.headerFilters.client }).subscribe({\r\n // next: (res: any) => {\r\n // if (res && res.code == 200) {\r\n // this.clientData = res.data.result\r\n // }\r\n // }\r\n // })\r\n // }\r\n\r\n getAllStores() {\r\n this.traxService.getStoreslist({ clientId: this.headerFilters?.client, clusters: this.groups, city: [] }).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res?.code == 200) {\r\n this.storeList = res.data.storesData;\r\n this.eyeTestForm.get('storeList')?.setValue(this.storeList)\r\n this.onSubmit();\r\n } else {\r\n this.storeList = [];\r\n }\r\n },\r\n error: (err) => {\r\n this.storeList = [];\r\n },\r\n });\r\n }\r\n\r\n typeChange(event: any) {\r\n\r\n this.eyeTestForm.get('Type')?.setValue(event)\r\n this.router.navigate(['/manage/trax/audit'], {\r\n queryParams: { fromDate: this.dayjs(this.selectedDateRange.startDate, \"DD-MM-YYYY\").format(\r\n \"YYYY-MM-DD\"\r\n ), toDate: this.dayjs(this.selectedDateRange.endDate, \"DD-MM-YYYY\").format(\r\n \"YYYY-MM-DD\"\r\n ), typeValue: event }\r\n });\r\n this.cd.detectChanges()\r\n }\r\n auditTypeChange(event: any) {\r\n this.eyeTestForm.get('auditType')?.setValue(event)\r\n this.cd.detectChanges()\r\n }\r\n\r\n datechange(event: any) {\r\n if (event && event.startDate && event.endDate) {\r\n \r\n if (\r\n this.dayjs(event.startDate).isValid() &&\r\n this.dayjs(event.endDate).isValid()\r\n ) {\r\n this.selectedDateRange.startDate = this.dayjs(event.startDate, \"DD-MM-YYYY\").format(\r\n \"YYYY-MM-DD\"\r\n );\r\n this.selectedDateRange.endDate = this.dayjs(event.endDate, \"DD-MM-YYYY\").format(\"YYYY-MM-DD\");\r\n \r\n this.eyeTestForm.get('fromDate')?.setValue(this.selectedDateRange.startDate)\r\n if (this.selectedDateRange.startDate && this.dayjs(this.selectedDateRange.startDate).isValid()) {\r\n this.headDate = this.dayjs(this.selectedDateRange.startDate).format('MMM, DD');\r\n \r\n }\r\n this.eyeTestForm.get('toDate')?.setValue(this.selectedDateRange.endDate)\r\n if (this.selectedDateRange.endDate && this.dayjs(this.selectedDateRange.endDate).isValid()) {\r\n this.headDateEnd = this.dayjs(this.selectedDateRange.endDate).format('MMM DD, YYYY');\r\n }\r\n this.router.navigate(['/manage/trax/audit'], {\r\n queryParams: { fromDate:this.selectedDateRange.startDate,toDate:this.selectedDateRange.endDate, typeValue: this.typeValue }\r\n });\r\n }\r\n }\r\n }\r\n\r\n onStartDateChange(event: any) {\r\n if (this.dayjs(event.startDate).isValid()) {\r\n this.isCustomDate = (m: dayjs.Dayjs) => {\r\n const isValidDate =\r\n m > this.dayjs() || m > this.dayjs(event.startDate.add(60, \"days\"));\r\n return isValidDate ? \"invalid-date\" : false;\r\n };\r\n }\r\n }\r\n\r\n resetValidation() {\r\n this.isCustomDate = (m: dayjs.Dayjs) => {\r\n // Check if the given date is before yesterday\r\n return m.isAfter(this.dayjs(), 'day') ? 'invalid-date' : false;\r\n };\r\n }\r\n\r\n selectedType: any;\r\n createForm() {\r\n const isRemote = this.selectedType === 'physical'; // or however you're determining it\r\n\r\n this.eyeTestForm = this.fb.group({\r\n fromDate: [this.dayjs(this.selectedDateRange.startDate, \"DD-MM-YYYY\").format(\"YYYY-MM-DD\")],\r\n toDate: [this.dayjs(this.selectedDateRange.endDate, \"DD-MM-YYYY\").format('YYYY-MM-DD')],\r\n type: this.typeValue,\r\n ClusterList: [this.groups],\r\n storeList: [this.stores],\r\n ...(isRemote ? {} : { auditType: 'all' }) // Conditionally add auditType\r\n });\r\n\r\n }\r\n\r\n ongroupSelect(event: any) {\r\n this.eyeTestForm.get('ClusterList')?.setValue(event)\r\n this.groups = event.map((el: any) => el.groupName)\r\n this.traxService.getStoreslist({ clientId: this.headerFilters.client, clusters: this.groups, city: [] }).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.storeList = res.data.storesData;\r\n this.eyeTestForm.get('storeList')?.setValue(this.storeList)\r\n }\r\n }\r\n })\r\n this.cd.detectChanges();\r\n }\r\n\r\n onStoreSelect(event: any) {\r\n this.eyeTestForm.get('storeList')?.setValue(event)\r\n this.cd.detectChanges();\r\n }\r\n searchValue: any = ''\r\n searchData() {\r\n this.searchValue = this.searchValue;\r\n this.onSubmit()\r\n }\r\n exportXLSX() {\r\n let finalStores: any = []\r\n if (Array.isArray(this.eyeTestForm.value.storeList)) {\r\n this.eyeTestForm.value.storeList.forEach((store: any) => {\r\n finalStores.push(store.storeId);\r\n });\r\n }\r\n if (this.eyeTestForm.value.auditType === 'all')\r\n this.eyeTestForm.value.auditType = [\"adult\", \"kid\"]\r\n let requestData = {\r\n clientId: this.headerFilters?.client,\r\n fromDate: this.eyeTestForm.value.fromDate,\r\n toDate: this.eyeTestForm.value.toDate,\r\n type: this.eyeTestForm.value.type,\r\n ...(this.eyeTestForm.value.type !== 'remote' && {\r\n demographics: Array.isArray(this.eyeTestForm.value.auditType)\r\n ? this.eyeTestForm.value.auditType\r\n : [this.eyeTestForm.value.auditType]\r\n }),\r\n storeId: finalStores,\r\n limit: 10000,\r\n offset: 1,\r\n searchValue: this.searchValue,\r\n isExport: true,\r\n sortOrder: this.sortOrder ? this.sortOrder : 1,\r\n sortBy: this.sortedColumn ? this.sortedColumn : 'updatedAt',\r\n }\r\n this.eyeService.getEyeTestTableExport(requestData).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n this.eyeService.saveAsExcelFile(res, `${this.eyeTestForm.value.type} Eye Test Table `);\r\n this.cd.detectChanges();\r\n },\r\n error: (err: any) => {\r\n this.ts.getErrorToast(err?.error?.error ? err?.error?.error : err?.error?.message)\r\n },\r\n complete: () => { },\r\n\r\n })\r\n }\r\n totalItems: any = 0;\r\n offset = 1;\r\n limit = 10;\r\n tableObj: any = {}\r\n onSubmit() {\r\n this.typeValue = this.eyeTestForm?.value?.type\r\n this.loading = true;\r\n this.noData = false;\r\n let finalStores: any = []\r\n if (Array.isArray(this.eyeTestForm.value.storeList)) {\r\n this.eyeTestForm.value.storeList.forEach((store: any) => {\r\n finalStores.push(store.storeId);\r\n });\r\n }\r\n if (this.eyeTestForm.value.auditType === 'all')\r\n this.eyeTestForm.value.auditType = [\"adult\", \"kid\"]\r\n // const searchAfter = this.eyeTestData ? (this.sortOrder == -1 ? this.eyeTestData[0]?.sort : this.eyeTestData?.pop().sort) : []\r\n let requestData = {\r\n clientId: this.headerFilters?.client,\r\n fromDate: this.eyeTestForm.value.fromDate,\r\n toDate: this.eyeTestForm.value.toDate,\r\n type: this.eyeTestForm.value.type,\r\n ...(this.eyeTestForm.value.type !== 'remote' && {\r\n demographics: Array.isArray(this.eyeTestForm.value.auditType)\r\n ? this.eyeTestForm.value.auditType\r\n : [this.eyeTestForm.value.auditType]\r\n }),\r\n storeId: finalStores,\r\n // searchAfter: searchAfter,\r\n limit: 10,\r\n offset: 1,\r\n searchValue: this.searchValue,\r\n isExport: false,\r\n sortOrder: this.sortOrder ? this.sortOrder : -1,\r\n sortBy: this.sortedColumn ? this.sortedColumn : 'date',\r\n }\r\n \r\n this.tableObj = requestData;\r\n this.eyeService.getEyeTestlist(requestData).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code === 200) {\r\n\r\n this.eyeTestData = res?.data.result;\r\n this.totalItems = res.data?.count;\r\n this.setPaginationSizes();\r\n this.loading = false;\r\n this.noData = false;\r\n } else {\r\n this.eyeTestData = []\r\n this.loading = false;\r\n this.noData = true;\r\n this.totalItems = 0;\r\n }\r\n this.cd.detectChanges();\r\n },\r\n error: (err: any) => {\r\n this.loading = false;\r\n this.noData = true;\r\n this.cd.detectChanges();\r\n },\r\n complete: () => {\r\n },\r\n\r\n })\r\n }\r\n paginationSizes: any[] = [];\r\n pageSize = 10;\r\n setPaginationSizes() {\r\n if (this.totalItems > 10) {\r\n this.paginationSizes = [10, 20, 30];\r\n } else {\r\n this.paginationSizes = [this.totalItems]; // Just one option if less than 10\r\n }\r\n this.pageSize = this.paginationSizes[0];\r\n }\r\n\r\n onPageChange(pageOffset: number) {\r\n this.limit = 10; this.pageSize = 10;\r\n this.loading = true;\r\n this.noData = false;\r\n this.offset = Number(pageOffset);\r\n let finalStores: any = []\r\n if (Array.isArray(this.eyeTestForm.value.storeList)) {\r\n this.eyeTestForm.value.storeList.forEach((store: any) => {\r\n finalStores.push(store.storeId);\r\n });\r\n }\r\n if (this.eyeTestForm.value.auditType === 'all')\r\n this.eyeTestForm.value.auditType = [\"adult\", \"kid\"]\r\n // const searchAfter = this.eyeTestData ? (this.sortOrder == -1 ? this.eyeTestData[0]?.sort : this.eyeTestData?.pop().sort) : []\r\n let requestData = {\r\n clientId: this.headerFilters?.client,\r\n fromDate: this.eyeTestForm.value.fromDate,\r\n toDate: this.eyeTestForm.value.toDate,\r\n type: this.eyeTestForm.value.type,\r\n ...(this.eyeTestForm.value.type !== 'remote' && {\r\n demographics: Array.isArray(this.eyeTestForm.value.auditType)\r\n ? this.eyeTestForm.value.auditType\r\n : [this.eyeTestForm.value.auditType]\r\n }),\r\n storeId: finalStores,\r\n limit: this.limit,\r\n offset: this.offset,\r\n // searchAfter: searchAfter,\r\n searchValue: this.searchValue,\r\n isExport: false,\r\n sortOrder: this.sortOrder,\r\n sortBy: this.sortedColumn,\r\n }\r\n this.eyeService.getEyeTestlist(requestData).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code === 200) {\r\n // if(res?.data.eyeTestData.length ===0){\r\n // this.eyeTestData =[]\r\n // this.loading = false;\r\n // this.noData = true;\r\n // this.totalItems = 0; \r\n // } else {\r\n this.eyeTestData = res?.data.result;\r\n this.totalItems = res.data?.count;\r\n this.loading = false;\r\n this.noData = false;\r\n // }\r\n } else {\r\n this.eyeTestData = []\r\n this.loading = false;\r\n this.noData = true;\r\n this.totalItems = 0;\r\n }\r\n this.cd.detectChanges();\r\n },\r\n error: (err) => {\r\n this.eyeTestData = [];\r\n this.totalItems = 0;\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n })\r\n }\r\n\r\n onPageSizeChange(pageSize: number) {\r\n this.offset = 1;\r\n this.loading = true;\r\n this.noData = false;\r\n this.pageSize = Number(pageSize);\r\n this.limit = Number(pageSize);\r\n let finalStores: any = []\r\n if (Array.isArray(this.eyeTestForm.value.storeList)) {\r\n this.eyeTestForm.value.storeList.forEach((store: any) => {\r\n finalStores.push(store.storeId);\r\n });\r\n }\r\n if (this.eyeTestForm.value.auditType === 'all')\r\n this.eyeTestForm.value.auditType = [\"adult\", \"kid\"]\r\n // const searchAfter = this.eyeTestData ? (this.sortOrder == -1 ? this.eyeTestData[0]?.sort : this.eyeTestData?.pop().sort) : []\r\n let requestData = {\r\n clientId: this.headerFilters?.client,\r\n fromDate: this.eyeTestForm.value.fromDate,\r\n toDate: this.eyeTestForm.value.toDate,\r\n type: this.eyeTestForm.value.type,\r\n ...(this.eyeTestForm.value.type !== 'remote' && {\r\n demographics: Array.isArray(this.eyeTestForm.value.auditType)\r\n ? this.eyeTestForm.value.auditType\r\n : [this.eyeTestForm.value.auditType]\r\n }),\r\n storeId: finalStores,\r\n limit: this.limit,\r\n offset: this.offset,\r\n // searchAfter: searchAfter,\r\n searchValue: this.searchValue,\r\n isExport: false,\r\n sortOrder: this.sortOrder,\r\n sortBy: this.sortedColumn,\r\n }\r\n this.eyeService.getEyeTestlist(requestData).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code === 200) {\r\n // if(res?.data.eyeTestData.length ===0){\r\n // this.eyeTestData =[]\r\n // this.loading = false;\r\n // this.noData = true;\r\n // this.totalItems = 0; \r\n // } else {\r\n this.eyeTestData = res?.data.result;\r\n this.totalItems = res.data?.count;\r\n this.loading = false;\r\n this.noData = false;\r\n // }\r\n } else {\r\n this.eyeTestData = []\r\n this.loading = false;\r\n this.noData = true;\r\n this.totalItems = 0;\r\n }\r\n this.cd.detectChanges();\r\n },\r\n error: (err) => {\r\n this.eyeTestData = [];\r\n this.totalItems = 0;\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n })\r\n }\r\n sortedColumn: any;\r\n sortOrder: any;\r\n onSort(column: string) {\r\n if (this.sortedColumn === column) {\r\n this.sortOrder = this.sortOrder === 1 ? -1 : 1;\r\n } else {\r\n this.sortedColumn = column ? column : 'storeName';\r\n this.sortOrder = 1;\r\n }\r\n this.onSubmit();\r\n }\r\n\r\n\r\n\r\n eyeTestView(data: any) {\r\n this.router.navigate(['/manage/trax/audit/start'], { queryParams: { type: this.eyeTestForm.value.type, storeId: data?._source?.storeId, _id: data._id } });\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n","<div class=\"card mb-2\">\r\n <form [formGroup]=\"eyeTestForm\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12 mt-7 mb-3\">\r\n <div class=\"row px-3\">\r\n <div class=\"col-md-6\">\r\n <div class=\"row\">\r\n <div class=\"col-6 mb-0\">\r\n <div class=\"position-relative\">\r\n <span style=\"top: 20%;\" class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <input class=\"fx-date-range form-control ps-14 z-2\" style=\"min-width: 230px !important;\"\r\n type=\"text\" matInput ngxDaterangepickerMd [drops]=\"'down'\"\r\n [opens]=\"'right'\" [alwaysShowCalendars]=\"false\" [keepCalendarOpeningWithRange]=\"true\"\r\n [showCancel]=\"false\" autocomplete=\"off\" [(ngModel)]=\"selectedDateRange\"\r\n [ngModelOptions]=\"{standalone: true}\" (datesUpdated)=\"datechange($event)\" (click)=\"resetValidation()\" \r\n (startDateChanged)=\"onStartDateChange($event)\" [isCustomDate]=\"isCustomDate\" [autoApply]=\"true\" \r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n name=\"daterange\" [readonly]=\"true\" />\r\n </div>\r\n </div>\r\n <div [ngClass]=\"eyeTestForm.get('type')?.value ==='remote' ? 'col-6 mb-4' : 'col-4 mb-4'\" class=\"col-2 mb-4\">\r\n <lib-reactive-select formControlName=\"type\" [idField]=\"'value'\" [nameField]=\"'label'\"\r\n [data]=\"type\" (itemChange)=\"typeChange($event)\"></lib-reactive-select>\r\n </div>\r\n <div *ngIf=\"eyeTestForm.get('type')?.value !=='remote'\" class=\"col-2 mb-4\">\r\n <lib-reactive-select formControlName=\"auditType\" [idField]=\"'value'\" [nameField]=\"'label'\"\r\n [data]=\"auditType\" (itemChange)=\"auditTypeChange($event)\"></lib-reactive-select>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"row\">\r\n <div class=\"mb-4\" style=\"width: 45% !important;\">\r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(eyeTestForm.get('ClusterList')?.value?.length)\">\r\n Select cluster\r\n </div>\r\n <lib-group-select [items]=\"ClusterList\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'groupName'\"\r\n [idField]=\"'groupName'\" (selected)=\"ongroupSelect($event)\"\r\n [selectedValues]=\"eyeTestForm.get('ClusterList')?.value\">\r\n </lib-group-select>\r\n </div>\r\n \r\n </div>\r\n <div class=\"mb-4\" style=\"width: 40% !important;\">\r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(eyeTestForm.get('storeList')?.value?.length)\">\r\n Select Stores\r\n </div>\r\n <lib-stores-select [items]=\"storeList\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'storeName'\"\r\n [idField]=\"'storeId'\" (selected)=\"onStoreSelect($event)\"\r\n [selectedValues]=\"eyeTestForm.get('storeList')?.value\"></lib-stores-select>\r\n </div>\r\n </div>\r\n <div style=\"width: 15% !important;\">\r\n <a (click)=\"onSubmit()\" type=\"submit\" class=\"btn btn-primary px-4 py-3\"><span>Apply</span></a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n</div>\r\n\r\n<div class=\"card my-3\">\r\n <div class=\"card-header border-0 py-1\">\r\n <h3 class=\"card-title dashed w-100 align-items-start flex-column\">\r\n <span class=\"title-text\"><span class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\">\r\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#FEE4E2\"/>\r\n <g clip-path=\"url(#clip0_235_24234)\">\r\n <path d=\"M16 13.3335V16.0002M16 18.6668H16.0067M22.6667 16.0002C22.6667 19.6821 19.6819 22.6668 16 22.6668C12.3181 22.6668 9.33337 19.6821 9.33337 16.0002C9.33337 12.3183 12.3181 9.3335 16 9.3335C19.6819 9.3335 22.6667 12.3183 22.6667 16.0002Z\" stroke=\"#D92D20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_235_24234\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" transform=\"translate(8 8)\"/>\r\n </clipPath>\r\n </defs>\r\n </svg></span><span class=\"dashed-desc\">Eye test video preview is available for 7 days. Audit data remains accessible, but videos will not be retained beyond this period.</span></span>\r\n </h3>\r\n </div> \r\n</div>\r\n\r\n<div class=\"card mt-3\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">Eye Test <span *ngIf=\"this.totalItems\" class=\"badge badge-light-primary\">{{this.totalItems}} Total</span>\r\n </span>\r\n <span class=\"text-sub mb-2\">Based on {{ headDate | date: 'MMM d' }} - {{\r\n headDateEnd | date: 'MMM d, y' }}</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input (change)=\"searchData()\" [(ngModel)]=\"searchValue\" type=\"text\" class=\"form-control ps-14 me-2\" autocomplete=\"off\" placeholder=\"Search\" />\r\n\r\n \r\n \r\n <button *ngIf=\"!noData && !loading\" type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata-table\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this eye test table</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!noData && !loading\" class=\"card-body\">\r\n <div class=\"table-responsive\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('date')\"> Date <svg \r\n [ngClass]=\"sortedColumn === 'date' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'date' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th><span class=\"cursor-pointer\" (click)=\"onSort('storeName')\">Store Name <svg \r\n [ngClass]=\"sortedColumn === 'storeName' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storeName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th><span class=\"cursor-pointer\" (click)=\"onSort('storeId')\">Store ID <svg \r\n [ngClass]=\"sortedColumn === 'storeId' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storeId' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th *ngIf=\"this.typeValue ==='remote'\" class=\"text-start\">Engagement ID</th>\r\n <th *ngIf=\"this.typeValue !=='remote'\" class=\"text-start\">Optom ID</th>\r\n <th *ngIf=\"this.typeValue !=='remote'\" class=\"text-start\">Queue ID</th>\r\n <th class=\"text-start\">Compliance Score</th>\r\n <th><span class=\"cursor-pointer\" (click)=\"onSort('coveredStepsAI')\">Steps Covered By AI <svg \r\n [ngClass]=\"sortedColumn === 'coveredStepsAI' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'coveredStepsAI' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span> </th>\r\n \r\n <th><span class=\"cursor-pointer\" (click)=\"onSort('trustScore')\">Trust Score <svg \r\n [ngClass]=\"sortedColumn === 'trustScore' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'trustScore' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span> </th>\r\n\r\n <th *ngIf=\"this.typeValue !=='remote'\"><span class=\"cursor-pointer\" (click)=\"onSort('visitorsType')\">Visitor Type <svg \r\n [ngClass]=\"sortedColumn === 'visitorsType' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'visitorsType' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span> </th>\r\n <th class=\"text-start\">Test Duration</th>\r\n <th><span class=\"cursor-pointer\" (click)=\"onSort('auditStatus')\">Audit Status <svg \r\n [ngClass]=\"sortedColumn === 'auditStatus' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'auditStatus' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th class=\"text-start\">Audited By</th>\r\n <th class=\"text-start\">Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let obj of eyeTestData; let i=index;\">\r\n <td>{{obj?._source?.date}}</td>\r\n <td>{{obj?._source?.storeName}}</td>\r\n <td>{{obj?._source?.storeId}}</td>\r\n <td *ngIf=\"this.typeValue ==='remote'\" class=\"engage-text\">{{obj?._source?.engagementId}}</td>\r\n <td *ngIf=\"this.typeValue !=='remote'\">{{obj?._source?.optumId ? obj?._source?.optumId :''}}</td>\r\n <td *ngIf=\"this.typeValue !=='remote'\" class=\"engage-text\">{{obj?._source?.queueId ? obj?._source?.queueId:''}}</td>\r\n <td>{{obj?._source?.complianceScore ? obj?._source?.complianceScore :'--'}}<span *ngIf=\"obj?._source?.complianceScore\">%</span></td>\r\n <td>{{obj?._source?.coveredStepsAI ? obj?._source?.coveredStepsAI:'--'}}</td>\r\n <td>{{obj?._source?.trustScore ? obj?._source?.trustScore:'--'}}</td>\r\n <td *ngIf=\"this.typeValue !=='remote'\">{{obj?._source?.visitorsType ? obj?._source?.visitorsType:'--'}}</td>\r\n <td>{{obj?._source?.min ? obj?._source?.min :'0'}} mins {{obj?._source?.sec ? obj?._source?.sec:'0'}} secs</td>\r\n <td><span class=\"badge badge-light-primary\" *ngIf=\"obj?._source?.auditStatus ==='Yet-to-Audit'\">{{obj?._source?.auditStatus}}</span>\r\n <span class=\"badge badge-light-warning\" *ngIf=\"obj?._source?.auditStatus ==='Re-Audited'\">{{obj?._source?.auditStatus}}</span>\r\n <span class=\"badge badge-light-success\" *ngIf=\"obj?._source?.auditStatus ==='Audited'\">{{obj?._source?.auditStatus}}</span>\r\n <span class=\"badge badge-light-info\" *ngIf=\"obj?._source?.auditStatus ==='In-Progress'\">{{obj?._source?.auditStatus}}</span></td>\r\n <td>{{obj?._source?.auditedBy?obj?._source?.auditedBy:\"-\"}}</td>\r\n <td class=\"cursor-pointer\" (click)=\"eyeTestView(obj)\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\">\r\n <path d=\"M0.833496 8.00016C0.833496 8.00016 4.16683 1.3335 10.0002 1.3335C15.8335 1.3335 19.1668 8.00016 19.1668 8.00016C19.1668 8.00016 15.8335 14.6668 10.0002 14.6668C4.16683 14.6668 0.833496 8.00016 0.833496 8.00016Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M10.0002 10.5002C11.3809 10.5002 12.5002 9.38087 12.5002 8.00016C12.5002 6.61945 11.3809 5.50016 10.0002 5.50016C8.61945 5.50016 7.50016 6.61945 7.50016 8.00016C7.50016 9.38087 8.61945 10.5002 10.0002 10.5002Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n</div>\r\n</div>\r\n<div class=\"card-footer\" *ngIf=\"!noData && !loading\">\r\n <lib-pagination [itemsPerPage]=\"pageSize\" [currentPage]=\"offset\" [totalItems]=\"totalItems\"\r\n [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\" (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n</div>\r\n</div>","import { Component, OnInit } from '@angular/core';\r\nimport { PageInfoService } from 'tango-app-ui-global';\r\n\r\n@Component({\r\n selector: 'lib-eye-test-audit',\r\n templateUrl: './eye-test-audit.component.html',\r\n styleUrl: './eye-test-audit.component.scss'\r\n})\r\nexport class EyeTestAuditComponent implements OnInit {\r\n constructor(private pageInfo: PageInfoService,){\r\n }\r\n\r\n ngOnInit(): void { \r\n this.setPageData();\r\n }\r\n setPageData() {\r\n this.pageInfo.setTitle('Eye Test')\r\n \r\n this.pageInfo.setBreadcrumbs([\r\n { title: 'Tango Trax', path: '/manage/trax/dashboard', isActive: false, isSeparator: false },\r\n { title: 'Tango Trax', path: '/manage/trax/dashboard', isActive: false, isSeparator: true }, \r\n ])\r\n}\r\n}\r\n","<lib-eye-test></lib-eye-test>\r\n","import { Component, OnInit, ChangeDetectorRef, ViewChild, OnDestroy } from '@angular/core';\r\nimport { BehaviorSubject, Subject, takeUntil } from 'rxjs';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { NgbActiveModal, NgbModal, NgbTooltip } from '@ng-bootstrap/ng-bootstrap';\r\nimport { EyeTestAuditService } from '../../services/eye-test-audit.service';\r\nimport { ToastService } from 'tango-app-ui-shared';\r\nimport { PageInfoService } from 'tango-app-ui-global';\r\nimport dayjs from 'dayjs';\r\nimport 'dayjs/locale/en';\r\nimport utc from 'dayjs/plugin/utc';\r\n@Component({\r\n selector: 'lib-start-audit',\r\n templateUrl: './start-audit.component.html',\r\n styleUrl: './start-audit.component.scss'\r\n})\r\nexport class StartAuditComponent implements OnInit,OnDestroy {\r\ndayjs = dayjs\r\n stepWiseProcess: any = [];\r\n dropdownList: any = []\r\n loading: boolean = true;\r\n noData: boolean = false;\r\n\r\n tableLoading = new BehaviorSubject<'initial' | 'loading' | 'loaded'>('initial')\r\n historytableLoading = new BehaviorSubject<'initial' | 'loading' | 'loaded'>('initial')\r\n\r\n selectedMinutes = '00';\r\n selectedSeconds = '00';\r\n minutesList: string[] = [];\r\n secondsList: string[] = [];\r\n\r\n auditDetails: any = [];\r\n currentAuditType: any;\r\n takeAudit: boolean = false;\r\n storeId: any;\r\n @ViewChild('tooltipContent') tooltipContent!: NgbTooltip;\r\n @ViewChild('viewHistory') viewHistory: any;\r\n @ViewChild('viewCancel') viewCancel: any;\r\n private readonly destroy$ = new Subject();\r\n historyData: any = [];\r\n AuditId: any;\r\n viewHistoryData: any;\r\n spokenLanguage:any='English'\r\n modalRef: any;\r\n disablecancel:boolean = false\r\n constructor(private cd: ChangeDetectorRef,private pageInfo: PageInfoService, private toastService: ToastService, private route: ActivatedRoute, private $api: EyeTestAuditService, private modalService: NgbModal,private router:Router ) {\r\n\r\n }\r\n viewHistoryModel(item: any) {\r\n let payload = {\r\n id: item._id\r\n }\r\n this.$api.viewAuditHistory(payload).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res?.code == 200) {\r\n this.viewHistoryData = res.data.result\r\n const modalRef = this.modalService.open(this.viewHistory, {\r\n size:'xl',\r\n centered: true,\r\n scrollable: true,\r\n });\r\n }\r\n }\r\n })\r\n }\r\n ngOnInit(): void {\r\n this.setPageData()\r\n this.takeAudit =false\r\n this.stepWiseProcess =[];\r\n this.route.queryParams.subscribe(params => {\r\n this.storeId = params['storeId'];\r\n this.currentAuditType = params['type']\r\n this.AuditId = params['_id']\r\n });\r\n this.getAuditdetails();\r\n this.generateTimeOptions();\r\nif(this.currentAuditType === 'remote'){\r\n this.dropdownList= [{ key: 'Sentence Transcription okay, but not matching with Predicted Step', item: 'Sentence Transcription okay, but not matching with Predicted Step' }, { key: 'Sentence Transcription not accurate, but matching with Predicted Step', item: 'Sentence Transcription not accurate, but matching with Predicted Step' }, { key: 'Step not accurate, not matching with Predicted Step', item: 'Step not accurate, not matching with Predicted Step' }, { key: 'others', item: 'Others' }]\r\n}else{\r\n this.dropdownList= [{ key: 'Step Non-Compliance', item: 'Step Non-Compliance' }, { key: 'Power Bank Non-Compliance', item: 'Power Bank Non-Compliance' }, { key: 'Correct Instrument Not Used', item: 'Correct Instrument Not Used' }, { key: 'others', item: 'Others' }]\r\n}\r\n }\r\n\r\n setPageData() {\r\n this.pageInfo.setTitle('Eye Test')\r\n \r\n this.pageInfo.setBreadcrumbs([\r\n { title: 'Tango Trax', path: '/manage/trax/dashboard', isActive: false, isSeparator: false },\r\n { title: 'Tango Trax', path: '/manage/trax/dashboard', isActive: false, isSeparator: true }, \r\n ])\r\n}\r\n getAuditHistory() {\r\n this.historytableLoading.next('loading');\r\n let payload = {\r\n id: this.currentAuditType === 'remote' ? this.auditDetails.engagementId : this.auditDetails.queueId,\r\n type: this.currentAuditType\r\n }\r\n this.$api.getAuditHistory(payload).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res?.code == 200) {\r\n this.historyData = res.data.result\r\n this.historytableLoading.next('loaded')\r\n } else {\r\n this.historyData = []\r\n this.historytableLoading.next('loaded')\r\n }\r\n },\r\n error: (err: any) => {\r\n this.historyData = []\r\n this.historytableLoading.next('loaded')\r\n }\r\n }\r\n )\r\n\r\n }\r\n\r\n getAuditdetails() {\r\n this.tableLoading.next('loading');\r\n let payload = {\r\n id: this.AuditId,\r\n type: this.currentAuditType\r\n }\r\n this.$api.getAuditdetails(payload).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res?.code == 200) {\r\n this.disablecancel = false\r\n this.auditDetails = res?.data?.result;\r\n if (this.auditDetails.auditStatus === 'In-Progress') {\r\n this.takeAudit = true\r\n }else{\r\n this.takeAudit = false\r\n }\r\n this.stepWiseProcess = this.auditDetails?.steps;\r\n setTimeout(()=>{\r\n this.getAuditHistory()\r\n },100)\r\n this.cd.detectChanges(); \r\n }\r\n }\r\n })\r\n\r\n this.tableLoading.next('loaded')\r\n\r\n }\r\n\r\n generateTimeOptions() {\r\n this.minutesList = Array.from({ length: 60 }, (_, i) => this.formatNumber(i));\r\n this.secondsList = Array.from({ length: 60 }, (_, i) => this.formatNumber(i));\r\n }\r\n\r\n formatNumber(num: number): string {\r\n return num < 10 ? '0' + num : num.toString();\r\n }\r\n\r\n dropdownOpen: { [key: number]: { startTime: boolean; endTime: boolean; reason: boolean } } = {};\r\n\r\n toggleDropdown(i: number, time: 'startTime' | 'endTime' | 'reason') {\r\n const currentState = this.dropdownOpen[i]?.[time] ?? false;\r\n\r\n Object.keys(this.dropdownOpen).forEach((key) => {\r\n this.dropdownOpen[Number(key)] = { startTime: false, endTime: false, reason: false };\r\n });\r\n\r\n if (!this.dropdownOpen[i]) {\r\n this.dropdownOpen[i] = { startTime: false, endTime: false, reason: false };\r\n }\r\n\r\n this.dropdownOpen[i][time] = !currentState;\r\n }\r\n getSecondsFromTime(time: string): number {\r\n if (!time) return 0;\r\n const [min, sec] = time.split(':').map(Number);\r\n return (min * 60) + sec;\r\n }\r\n \r\nselectMinute(index: any, min: string, time: 'startTime' | 'endTime' | 'reason') {\r\n const previousTime = this.stepWiseProcess[index]?.[time] || '00:00';\r\n\r\n this.selectedMinutes = min;\r\n const newTime = `${this.selectedMinutes}:${this.selectedSeconds}`;\r\n\r\n const startTime = this.getSecondsFromTime(\r\n time === 'startTime' ? newTime : this.stepWiseProcess[index]?.startTime\r\n );\r\n const endTime = this.getSecondsFromTime(\r\n time === 'endTime' ? newTime : this.stepWiseProcess[index]?.endTime\r\n );\r\n\r\n const isValid = (startTime === 0 || endTime === 0) || startTime < endTime;\r\n\r\n if (!isValid && time !== 'reason') {\r\n this.toastService.getWarningToast(\"Start time must be less than end time.\");\r\n \r\n const [prevMin, prevSec] = previousTime.split(':');\r\n this.selectedMinutes = prevMin;\r\n this.selectedSeconds = prevSec;\r\n \r\n this.cd.detectChanges();\r\n return;\r\n }\r\n \r\n\r\n this.stepWiseProcess[index][time] = newTime;\r\n this.cd.detectChanges();\r\n}\r\n\r\nselectSecond(index: any, sec: string, time: 'startTime' | 'endTime' | 'reason') {\r\n const previousTime = this.stepWiseProcess[index]?.[time] || '00:00';\r\n\r\n this.selectedSeconds = sec;\r\n const newTime = `${this.selectedMinutes}:${this.selectedSeconds}`;\r\n\r\n const startTime = this.getSecondsFromTime(\r\n time === 'startTime' ? newTime : this.stepWiseProcess[index]?.startTime\r\n );\r\n const endTime = this.getSecondsFromTime(\r\n time === 'endTime' ? newTime : this.stepWiseProcess[index]?.endTime\r\n );\r\n\r\n if ((time !== 'reason') && startTime !== 0 && endTime !== 0 && startTime >= endTime) {\r\n this.toastService.getWarningToast(\"Start time must be less than end time.\");\r\n \r\n const [prevMin, prevSec] = previousTime.split(':');\r\n this.selectedMinutes = prevMin;\r\n this.selectedSeconds = prevSec;\r\n \r\n this.cd.detectChanges();\r\n return;\r\n }\r\n\r\n this.stepWiseProcess[index][time] = newTime;\r\n this.cd.detectChanges();\r\n}\r\n \r\n \r\n\r\n selectReason(index: number, key: any, time: any) {\r\n this.stepWiseProcess[index][time] = key;\r\n \r\n if (key === 'others') {\r\n this.stepWiseProcess[index].otherReason = ''; \r\n } else {\r\n this.stepWiseProcess[index].otherReason = null; \r\n }\r\n \r\n this.cd.detectChanges();\r\n }\r\n \r\n\r\n selectHumanVerified(index: number, value: boolean) {\r\n this.stepWiseProcess[index].auditedStatus = value;\r\n }\r\n findcount(){\r\n let count = 0\r\n this.stepWiseProcess.forEach((data:any)=>{\r\n if(data.auditedStatus!==data.AIStatus){\r\n count++\r\n }\r\n\r\n\r\n })\r\n return count\r\n }\r\n getValidaForm(){\r\n let errorCount = 0\r\n this.stepWiseProcess.forEach((data:any)=>{\r\n if(data.reason==='others'){\r\n data.otherReason = data.otherReason.trim()\r\n }\r\n if(data.auditedStatus!==data.AIStatus){\r\n if(!data.reason || data.reason&&data.reason==='others' && !data.otherReason){\r\n errorCount++\r\n }\r\n }\r\n })\r\n if(errorCount>0){\r\n this.disablecancel = false\r\n this.toastService.getWarningToast(\"Comments are mandatory for inverse human audited responses\")\r\n }\r\n return errorCount\r\n }\r\n onsubmit() {\r\n this.disablecancel = true\r\n if((this.stepWiseProcess.filter((data:any)=>data.auditedStatus===true).length+this.stepWiseProcess.filter((data:any)=>data.auditedStatus===false).length)!==this.stepWiseProcess.length){\r\n this.toastService.getErrorToast(\"Oops! Looks like the eye test audit isn’t complete yet. Audit all eye test steps before submitting.\")\r\n this.disablecancel = false\r\n return\r\n }\r\n if(this.getValidaForm()===0){\r\n\r\n let payload = {\r\n id: this.AuditId,\r\n type: this.currentAuditType,\r\n fileId: this.currentAuditType === 'remote' ? this.auditDetails.engagementId : this.auditDetails.queueId,\r\n auditedSteps: this.stepWiseProcess.filter((data:any)=>data.auditedStatus===true).length,\r\n auditStatus:this.auditDetails?.auditType === 'Audit'? \"Audited\":\"Re-Audited\",\r\n overRides:this.findcount(),\r\n spokenLanguage: this.spokenLanguage,\r\n steps: this.stepWiseProcess\r\n \r\n }\r\n this.$api.submitAudit(payload).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res?.code == 200) {\r\n // this.disablecancel = false\r\n setTimeout(()=>{\r\n this.getAuditdetails();\r\n },1000)\r\n this.toastService.getSuccessToast(`${this.auditDetails?.auditType} Submitted Successfully`)\r\n }\r\n },\r\n error: (err: any) => {\r\n this.toastService.getErrorToast(err?.error?.error ? err?.error?.error : err?.error?.message)\r\n } \r\n })\r\n }\r\n\r\n\r\n }\r\n startAudit(value: any) {\r\n this.disablecancel = true\r\n this.takeAudit = true;\r\n this.auditDetails.auditStatus = 'Re-Audited'\r\n let payload = {\r\n id: this.AuditId\r\n }\r\n this.$api.getAuditFile(payload).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res?.code == 200) {\r\n \r\n this.getAuditdetails();\r\n }\r\n },\r\n error: (err: any) => {\r\n this.toastService.getErrorToast(err?.error?.error ? err?.error?.error : err?.error?.message)\r\n }\r\n })\r\n\r\n\r\n }\r\n\r\n onYes(){\r\n let payload = {\r\n id: this.AuditId,\r\n type: this.currentAuditType,\r\n fileId: this.currentAuditType === 'remote' ? this.auditDetails.engagementId : this.auditDetails.queueId,\r\n }\r\n this.$api.cancelAuditFile(payload).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res?.code == 200) {\r\n this.getAuditdetails();\r\n this.toastService.getSuccessToast(`${this.auditDetails?.auditType} Cancelled Successfully`)\r\n this.modalRef.dismiss();\r\n }\r\n },\r\n error: (err: any) => {\r\n this.toastService.getErrorToast(err?.error?.error ? err?.error?.error : err?.error?.message)\r\n this.modalRef.dismiss();\r\n }\r\n })\r\n\r\n this.takeAudit =false\r\n }\r\n cancel(){\r\n this.modalRef = this.modalService.open(this.viewCancel, {\r\n size:'md',\r\n centered: true,\r\n scrollable: true,\r\n }); \r\n }\r\n OnCancel(){\r\n this.modalRef.dismiss();\r\n }\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n\r\n backNavigation(){\r\n this.$api.auditFilterData = {\r\n back: 'back',\r\n auditDetails: this.auditDetails\r\n };\r\n this.router.navigate(['/manage/trax/audit'], {\r\n queryParams: { date: this.dayjs(this.auditDetails.fileDate).format('YYYY-MM-DD'), typeValue: this.currentAuditType }\r\n });\r\n }\r\n}\r\n","<div class=\"card p-5\">\r\n <div class=\"d-flex align-items-center\">\r\n <div (click)=\"backNavigation()\" class=\"btn btn-am btn-outline p-3\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M15.8332 9.99984H4.1665M4.1665 9.99984L9.99984 15.8332M4.1665 9.99984L9.99984 4.1665\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </div>\r\n <span *ngIf=\"currentAuditType !== 'remote'\" class=\"ms-3 badge badge-light-default\">{{auditDetails?.optumId}}</span> \r\n <span *ngIf=\"currentAuditType === 'remote'\" class=\"ms-3 badge badge-light-default\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 10.5V9.5C10 8.96957 9.78929 8.46086 9.41421 8.08579C9.03914 7.71071 8.53043 7.5 8 7.5H4C3.46957 7.5 2.96086 7.71071 2.58579 8.08579C2.21071 8.46086 2 8.96957 2 9.5V10.5M8 3.5C8 4.60457 7.10457 5.5 6 5.5C4.89543 5.5 4 4.60457 4 3.5C4 2.39543 4.89543 1.5 6 1.5C7.10457 1.5 8 2.39543 8 3.5Z\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span>{{auditDetails?.displayName}}</span> \r\n <span class=\"d-flex ms-1 align-items-center\">\r\n <svg width=\"46\" height=\"46\" viewBox=\"0 0 46 46\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" fill=\"\" opacity=\"0.1\"></rect>\r\n <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" stroke=\"\" stroke-width=\"6\"></rect>\r\n <path d=\"M15.6799 18.8039L15.6267 18.8871C15.0686 19.8741 15.6644 21.1215 16.7361 21.2646C16.8331 21.2765 16.9235 21.2828 17.0118 21.2828C17.5899 21.2828 18.1011 21.0348 18.4574 20.648L19.0107 20.0474L19.5621 20.6498C19.9141 21.0342 20.4241 21.2828 21.0061 21.2828C21.5856 21.2828 22.0985 21.0338 22.4502 20.6498L23.0033 20.0455L23.5565 20.6498C23.9081 21.0338 24.4211 21.2828 25.0005 21.2828C25.58 21.2828 26.0929 21.0338 26.4445 20.6498L26.9977 20.0455L27.5509 20.6498C27.9025 21.0338 28.4155 21.2828 28.9949 21.2828C29.0803 21.2828 29.1733 21.2765 29.2697 21.2647C30.3649 21.1154 30.9627 19.8012 30.324 18.8044C30.324 18.8043 30.324 18.8043 30.3239 18.8042L28.5658 16.0628L28.5658 16.0628L28.5648 16.0614C28.5496 16.0375 28.5121 16.012 28.465 16.012H17.5356C17.4884 16.012 17.4509 16.0375 17.4357 16.0614L17.4351 16.0623L15.6799 18.8039ZM28.6514 23.7372V26.8691V27.6191H27.9014H18.0992H17.3492V26.8691V23.7376C17.239 23.7458 17.1274 23.7501 17.0148 23.7501C16.9725 23.7501 16.9305 23.7494 16.8888 23.7482V26.8691V28.8036C16.8888 29.4471 17.4227 29.9882 18.0992 29.9882H27.9014C28.5779 29.9882 29.1118 29.4471 29.1118 28.8036V26.8691V23.7484C29.072 23.7495 29.032 23.7501 28.9918 23.7501C28.8774 23.7501 28.7639 23.7457 28.6514 23.7372Z\" stroke=\"#000000\" stroke-width=\"1.5\"></path></svg> \r\n <span class=\"ms-1 sub-title\"> {{auditDetails.storeName}}</span>\r\n </span>\r\n\r\n \r\n <!-- displayName -->\r\n <div *ngIf=\"currentAuditType !== 'remote'\" class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M5.25021 6.50028C5.91329 6.50028 6.54921 6.23689 7.01807 5.76807C7.48694 5.29924 7.75035 4.66337 7.75035 4.00035C7.75035 3.33732 7.48694 2.70146 7.01807 2.23263C6.54921 1.7638 5.91329 1.50042 5.25021 1.50042C4.58713 1.50042 3.95121 1.7638 3.48234 2.23263C3.01348 2.70146 2.75007 3.33732 2.75007 4.00035C2.75007 4.66337 3.01348 5.29924 3.48234 5.76807C3.95121 6.23689 4.58713 6.50028 5.25021 6.50028ZM5.25021 5.25031C4.91867 5.25031 4.60071 5.11862 4.36628 4.88421C4.13184 4.64979 4.00014 4.33186 4.00014 4.00035C4.00014 3.66884 4.13184 3.3509 4.36628 3.11649C4.60071 2.88207 4.91867 2.75038 5.25021 2.75038C5.58175 2.75038 5.89971 2.88207 6.13414 3.11649C6.36857 3.3509 6.50028 3.66884 6.50028 4.00035C6.50028 4.33186 6.36857 4.64979 6.13414 4.88421C5.89971 5.11862 5.58175 5.25031 5.25021 5.25031ZM1.5 8.79188C1.5 7.9869 2.15337 7.33359 2.95841 7.33359H7.542C8.34705 7.33359 9.00042 7.9869 9.00042 8.79188V12.7501C9.00042 13.7446 8.60531 14.6984 7.90201 15.4017C7.1987 16.1049 6.24483 16.5 5.25021 16.5C4.25559 16.5 3.30171 16.1049 2.59841 15.4017C1.89511 14.6984 1.5 13.7446 1.5 12.7501V8.79188ZM2.95841 8.58355C2.90316 8.58355 2.85016 8.6055 2.81109 8.64457C2.77202 8.68364 2.75007 8.73663 2.75007 8.79188V12.7501C2.75007 13.4131 3.01348 14.049 3.48234 14.5178C3.95121 14.9867 4.58713 15.25 5.25021 15.25C5.91329 15.25 6.54921 14.9867 7.01807 14.5178C7.48694 14.049 7.75035 13.4131 7.75035 12.7501V8.79188C7.75035 8.73663 7.7284 8.68364 7.68932 8.64457C7.65025 8.6055 7.59726 8.58355 7.542 8.58355H2.95841ZM7.77285 6.17862C8.15328 6.39267 8.58313 6.5034 9.01963 6.49978C9.45614 6.49616 9.8841 6.37832 10.2609 6.15799C10.6378 5.93766 10.9503 5.62252 11.1675 5.24391C11.3848 4.8653 11.499 4.43642 11.499 3.99993C11.499 3.56344 11.3848 3.13456 11.1675 2.75595C10.9503 2.37734 10.6378 2.0622 10.2609 1.84187C9.8841 1.62154 9.45614 1.50371 9.01963 1.50009C8.58313 1.49647 8.15328 1.60719 7.77285 1.82124C8.04536 2.13623 8.25954 2.50289 8.39955 2.90454C8.58991 2.80026 8.80415 2.74733 9.02118 2.75097C9.23821 2.75462 9.45055 2.81471 9.63731 2.92533C9.82406 3.03594 9.97879 3.19328 10.0863 3.38185C10.1937 3.57042 10.2503 3.78372 10.2503 4.00076C10.2503 4.21781 10.1937 4.43111 10.0863 4.61968C9.97879 4.80825 9.82406 4.96558 9.63731 5.0762C9.45055 5.18682 9.23821 5.24691 9.02118 5.25055C8.80415 5.2542 8.58991 5.20127 8.39955 5.09698C8.26074 5.49382 8.0481 5.86082 7.77285 6.17862ZM8.05036 16.3783C8.35483 16.4583 8.67151 16.4989 9.00042 16.5C9.99503 16.5 10.9489 16.1049 11.6522 15.4017C12.3555 14.6984 12.7506 13.7446 12.7506 12.7501V8.79188C12.7506 8.40512 12.597 8.03419 12.3235 7.76071C12.05 7.48723 11.679 7.33359 11.2922 7.33359H9.30877C9.59462 7.67941 9.78046 8.11107 9.8238 8.58355H11.2905C11.3458 8.58355 11.3988 8.6055 11.4379 8.64457C11.4769 8.68364 11.4989 8.73663 11.4989 8.79188V12.7501C11.4989 13.3968 11.2483 14.0184 10.7996 14.4843C10.351 14.9501 9.73925 15.224 9.09292 15.2484C8.81041 15.6817 8.45872 16.0633 8.05036 16.3783ZM11.5222 6.17862C11.9027 6.39267 12.3325 6.5034 12.769 6.49978C13.2055 6.49616 13.6335 6.37832 14.0103 6.15799C14.3871 5.93766 14.6997 5.62252 14.9169 5.24391C15.1341 4.8653 15.2484 4.43642 15.2484 3.99993C15.2484 3.56344 15.1341 3.13456 14.9169 2.75595C14.6997 2.37734 14.3871 2.0622 14.0103 1.84187C13.6335 1.62154 13.2055 1.50371 12.769 1.50009C12.3325 1.49647 11.9027 1.60719 11.5222 1.82124C11.7947 2.13623 12.0089 2.50289 12.1489 2.90454C12.3393 2.80026 12.5535 2.74733 12.7706 2.75097C12.9876 2.75462 13.1999 2.81471 13.3867 2.92533C13.5734 3.03594 13.7282 3.19328 13.8356 3.38185C13.9431 3.57042 13.9996 3.78372 13.9996 4.00076C13.9996 4.21781 13.9431 4.43111 13.8356 4.61968C13.7282 4.80825 13.5734 4.96558 13.3867 5.0762C13.1999 5.18682 12.9876 5.24691 12.7706 5.25055C12.5535 5.2542 12.3393 5.20127 12.1489 5.09698C12.0101 5.49382 11.7975 5.86082 11.5222 6.17862ZM11.7997 16.3783C12.1042 16.4583 12.4209 16.4989 12.7498 16.5C13.7444 16.5 14.6983 16.1049 15.4016 15.4017C16.1049 14.6984 16.5 13.7446 16.5 12.7501V8.79188C16.5 8.40526 16.3465 8.03447 16.0731 7.76101C15.7998 7.48755 15.4291 7.33381 15.0424 7.33359H13.059C13.3448 7.67941 13.5315 8.11107 13.574 8.58355H15.0408C15.096 8.58355 15.149 8.6055 15.1881 8.64457C15.2271 8.68364 15.2491 8.73663 15.2491 8.79188V12.7501C15.2491 13.3968 14.9985 14.0184 14.5498 14.4843C14.1012 14.9501 13.4895 15.224 12.8431 15.2484C12.5606 15.6817 12.2081 16.0633 11.7997 16.3783Z\"\r\n fill=\"#667085\" />\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{auditDetails?.queueId}}</span>\r\n </div>\r\n <div *ngIf=\"currentAuditType === 'remote'\" class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M5.25021 6.50028C5.91329 6.50028 6.54921 6.23689 7.01807 5.76807C7.48694 5.29924 7.75035 4.66337 7.75035 4.00035C7.75035 3.33732 7.48694 2.70146 7.01807 2.23263C6.54921 1.7638 5.91329 1.50042 5.25021 1.50042C4.58713 1.50042 3.95121 1.7638 3.48234 2.23263C3.01348 2.70146 2.75007 3.33732 2.75007 4.00035C2.75007 4.66337 3.01348 5.29924 3.48234 5.76807C3.95121 6.23689 4.58713 6.50028 5.25021 6.50028ZM5.25021 5.25031C4.91867 5.25031 4.60071 5.11862 4.36628 4.88421C4.13184 4.64979 4.00014 4.33186 4.00014 4.00035C4.00014 3.66884 4.13184 3.3509 4.36628 3.11649C4.60071 2.88207 4.91867 2.75038 5.25021 2.75038C5.58175 2.75038 5.89971 2.88207 6.13414 3.11649C6.36857 3.3509 6.50028 3.66884 6.50028 4.00035C6.50028 4.33186 6.36857 4.64979 6.13414 4.88421C5.89971 5.11862 5.58175 5.25031 5.25021 5.25031ZM1.5 8.79188C1.5 7.9869 2.15337 7.33359 2.95841 7.33359H7.542C8.34705 7.33359 9.00042 7.9869 9.00042 8.79188V12.7501C9.00042 13.7446 8.60531 14.6984 7.90201 15.4017C7.1987 16.1049 6.24483 16.5 5.25021 16.5C4.25559 16.5 3.30171 16.1049 2.59841 15.4017C1.89511 14.6984 1.5 13.7446 1.5 12.7501V8.79188ZM2.95841 8.58355C2.90316 8.58355 2.85016 8.6055 2.81109 8.64457C2.77202 8.68364 2.75007 8.73663 2.75007 8.79188V12.7501C2.75007 13.4131 3.01348 14.049 3.48234 14.5178C3.95121 14.9867 4.58713 15.25 5.25021 15.25C5.91329 15.25 6.54921 14.9867 7.01807 14.5178C7.48694 14.049 7.75035 13.4131 7.75035 12.7501V8.79188C7.75035 8.73663 7.7284 8.68364 7.68932 8.64457C7.65025 8.6055 7.59726 8.58355 7.542 8.58355H2.95841ZM7.77285 6.17862C8.15328 6.39267 8.58313 6.5034 9.01963 6.49978C9.45614 6.49616 9.8841 6.37832 10.2609 6.15799C10.6378 5.93766 10.9503 5.62252 11.1675 5.24391C11.3848 4.8653 11.499 4.43642 11.499 3.99993C11.499 3.56344 11.3848 3.13456 11.1675 2.75595C10.9503 2.37734 10.6378 2.0622 10.2609 1.84187C9.8841 1.62154 9.45614 1.50371 9.01963 1.50009C8.58313 1.49647 8.15328 1.60719 7.77285 1.82124C8.04536 2.13623 8.25954 2.50289 8.39955 2.90454C8.58991 2.80026 8.80415 2.74733 9.02118 2.75097C9.23821 2.75462 9.45055 2.81471 9.63731 2.92533C9.82406 3.03594 9.97879 3.19328 10.0863 3.38185C10.1937 3.57042 10.2503 3.78372 10.2503 4.00076C10.2503 4.21781 10.1937 4.43111 10.0863 4.61968C9.97879 4.80825 9.82406 4.96558 9.63731 5.0762C9.45055 5.18682 9.23821 5.24691 9.02118 5.25055C8.80415 5.2542 8.58991 5.20127 8.39955 5.09698C8.26074 5.49382 8.0481 5.86082 7.77285 6.17862ZM8.05036 16.3783C8.35483 16.4583 8.67151 16.4989 9.00042 16.5C9.99503 16.5 10.9489 16.1049 11.6522 15.4017C12.3555 14.6984 12.7506 13.7446 12.7506 12.7501V8.79188C12.7506 8.40512 12.597 8.03419 12.3235 7.76071C12.05 7.48723 11.679 7.33359 11.2922 7.33359H9.30877C9.59462 7.67941 9.78046 8.11107 9.8238 8.58355H11.2905C11.3458 8.58355 11.3988 8.6055 11.4379 8.64457C11.4769 8.68364 11.4989 8.73663 11.4989 8.79188V12.7501C11.4989 13.3968 11.2483 14.0184 10.7996 14.4843C10.351 14.9501 9.73925 15.224 9.09292 15.2484C8.81041 15.6817 8.45872 16.0633 8.05036 16.3783ZM11.5222 6.17862C11.9027 6.39267 12.3325 6.5034 12.769 6.49978C13.2055 6.49616 13.6335 6.37832 14.0103 6.15799C14.3871 5.93766 14.6997 5.62252 14.9169 5.24391C15.1341 4.8653 15.2484 4.43642 15.2484 3.99993C15.2484 3.56344 15.1341 3.13456 14.9169 2.75595C14.6997 2.37734 14.3871 2.0622 14.0103 1.84187C13.6335 1.62154 13.2055 1.50371 12.769 1.50009C12.3325 1.49647 11.9027 1.60719 11.5222 1.82124C11.7947 2.13623 12.0089 2.50289 12.1489 2.90454C12.3393 2.80026 12.5535 2.74733 12.7706 2.75097C12.9876 2.75462 13.1999 2.81471 13.3867 2.92533C13.5734 3.03594 13.7282 3.19328 13.8356 3.38185C13.9431 3.57042 13.9996 3.78372 13.9996 4.00076C13.9996 4.21781 13.9431 4.43111 13.8356 4.61968C13.7282 4.80825 13.5734 4.96558 13.3867 5.0762C13.1999 5.18682 12.9876 5.24691 12.7706 5.25055C12.5535 5.2542 12.3393 5.20127 12.1489 5.09698C12.0101 5.49382 11.7975 5.86082 11.5222 6.17862ZM11.7997 16.3783C12.1042 16.4583 12.4209 16.4989 12.7498 16.5C13.7444 16.5 14.6983 16.1049 15.4016 15.4017C16.1049 14.6984 16.5 13.7446 16.5 12.7501V8.79188C16.5 8.40526 16.3465 8.03447 16.0731 7.76101C15.7998 7.48755 15.4291 7.33381 15.0424 7.33359H13.059C13.3448 7.67941 13.5315 8.11107 13.574 8.58355H15.0408C15.096 8.58355 15.149 8.6055 15.1881 8.64457C15.2271 8.68364 15.2491 8.73663 15.2491 8.79188V12.7501C15.2491 13.3968 14.9985 14.0184 14.5498 14.4843C14.1012 14.9501 13.4895 15.224 12.8431 15.2484C12.5606 15.6817 12.2081 16.0633 11.7997 16.3783Z\"\r\n fill=\"#667085\" />\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{auditDetails?.engagementId}}</span>\r\n </div>\r\n <div class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M12 3H13.5C13.8978 3 14.2794 3.15804 14.5607 3.43934C14.842 3.72064 15 4.10218 15 4.5V15C15 15.3978 14.842 15.7794 14.5607 16.0607C14.2794 16.342 13.8978 16.5 13.5 16.5H4.5C4.10218 16.5 3.72064 16.342 3.43934 16.0607C3.15804 15.7794 3 15.3978 3 15V4.5C3 4.10218 3.15804 3.72064 3.43934 3.43934C3.72064 3.15804 4.10218 3 4.5 3H6M6.75 1.5H11.25C11.6642 1.5 12 1.83579 12 2.25V3.75C12 4.16421 11.6642 4.5 11.25 4.5H6.75C6.33579 4.5 6 4.16421 6 3.75V2.25C6 1.83579 6.33579 1.5 6.75 1.5Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{currentAuditType | titlecase}} Eye Test</span>\r\n </div>\r\n <div class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M12 1.5V4.5M6 1.5V4.5M2.25 7.5H15.75M3.75 3H14.25C15.0784 3 15.75 3.67157 15.75 4.5V15C15.75 15.8284 15.0784 16.5 14.25 16.5H3.75C2.92157 16.5 2.25 15.8284 2.25 15V4.5C2.25 3.67157 2.92157 3 3.75 3Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{auditDetails?.fileDate | date: 'dd/MM/YYYY'}}</span>\r\n </div>\r\n <div class=\"d-flex ms-3 align-items-center\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_166_55019)\">\r\n <path\r\n d=\"M9 4.5V9L12 10.5M16.5 9C16.5 13.1421 13.1421 16.5 9 16.5C4.85786 16.5 1.5 13.1421 1.5 9C1.5 4.85786 4.85786 1.5 9 1.5C13.1421 1.5 16.5 4.85786 16.5 9Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_166_55019\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"ms-2 sub-title\">{{auditDetails?.testStartTime}} {{auditDetails?.testStartTime?.split(':')[0]>12?'PM':'AM'}} - {{auditDetails?.testEndTime}} {{auditDetails?.testEndTime?.split(':')[0]>12?'PM':'AM'}}\r\n ({{auditDetails?.testDuration}} Mins)</span>\r\n </div>\r\n <span class=\"ms-3 badge badge-light-primary\">{{auditDetails?.visitorsType | titlecase}}</span>\r\n <div *ngIf=\"['Yet-to-Audit'].includes(auditDetails?.auditStatus)\"\r\n class=\"text-white ms-3 px-3 py-1 fw-semibold rounded-3 cursor-pointer bg-primary\" style=\"font-size: 14px;\">\r\n Yet to Audit\r\n </div>\r\n <div *ngIf=\"auditDetails?.auditType === 'Audit'&&auditDetails?.auditStatus === 'Audited'\"\r\n class=\"text-white ms-3 px-3 py-1 fw-semibold rounded-3 cursor-pointer bg-success\" style=\"font-size: 14px;\">\r\n Audited\r\n </div>\r\n <div *ngIf=\"auditDetails?.auditType === 'Re-Audit'&&auditDetails?.auditStatus === 'Audited' || auditDetails?.auditType === 'Re-Audit'&&auditDetails?.auditStatus === 'Re-Audited'\"\r\n class=\"text-white ms-3 px-3 py-1 fw-semibold rounded-3 cursor-pointer bg-warning\" style=\"font-size: 14px;\">\r\n Re-Audited\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"row mt-3\">\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 text-center header-card\">\r\n AI Verified Steps <span><svg ngbTooltip=\"Number of steps detected and validated automatically without manual review.\" placement=\"right\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" \r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.coveredStepsAI?auditDetails?.coveredStepsAI:0}}/{{auditDetails?.totalSteps ? auditDetails?.totalSteps:'--'}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 text-center header-card\">\r\n Human Verified Steps <span><svg ngbTooltip=\"Number of steps that required human validation to ensure compliance and accuracy.\" placement=\"right\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.auditedSteps?auditDetails?.auditedSteps:0}}/{{auditDetails?.totalSteps ? auditDetails?.totalSteps:'--'}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 header-card\">\r\n AI Compliance Score <span><svg ngbTooltip=\"Measures the percentage of steps AI flagged as compliant without human intervention.\" placement=\"left\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.complianceScore ?auditDetails?.complianceScore :'--'}}%</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"card p-3 fw-bold text-center\">\r\n <div class=\"p-3 header-card\">\r\n AI Trust Score <span><svg ngbTooltip=\"This score reflects how often AI predictions were accepted without manual overrides.\" placement=\"left\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_362_2979)\">\r\n <path\r\n d=\"M9.99984 13.3332V9.99984M9.99984 6.6665H10.0082M18.3332 9.99984C18.3332 14.6022 14.6022 18.3332 9.99984 18.3332C5.39746 18.3332 1.6665 14.6022 1.6665 9.99984C1.6665 5.39746 5.39746 1.6665 9.99984 1.6665C14.6022 1.6665 18.3332 5.39746 18.3332 9.99984Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_362_2979\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n </div>\r\n <div class=\"p-5 text-card\">\r\n <span>{{auditDetails?.trustScore ? auditDetails?.trustScore:'--'}}%</span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"row mt-3\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"card h-500px px-5\">\r\n <div class=\"card-header p-0 border-0\">\r\n <span class=\"card-title m-0 fw-bolder bg-none\">Preview Eye Test</span>\r\n </div>\r\n <div class=\"card-body px-0 position-relative\">\r\n <div class=\"video-position w-100\">\r\n <video class=\"w-100 rounded-3 h-auto\" controls\r\n [src]=\"auditDetails?.filePath\"></video>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"card h-500px px-5 overflow-scroll\">\r\n <div class=\"card-header mb-3 p-0 border-0 d-flex justify-content-between align-items-center\">\r\n <div class=\"\">\r\n <span class=\"card-title m-0 fw-bolder bg-none\">Step-wise Breakdown</span>\r\n \r\n \r\n <div class=\"d-flex sub-title mt-2\" *ngIf=\"auditDetails?.lastAuditedDetails?.auditedBy\">\r\n <span *ngIf=\"currentAuditType === 'remote'\"> <span *ngIf=\"auditDetails?.spokenLanguage\"> <span *ngIf=\"!takeAudit\" class=\"badge badge-light-info mt-0 me-2\">Language Spoken: {{auditDetails?.spokenLanguage}}</span></span></span> <span class=\"mt-1\">Recently Audited By : </span>\r\n <span class=\"ms-2 mt-1\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M13.3337 14V12.6667C13.3337 11.9594 13.0527 11.2811 12.5526 10.781C12.0525 10.281 11.3742 10 10.667 10H5.33366C4.62641 10 3.94814 10.281 3.44804 10.781C2.94794 11.2811 2.66699 11.9594 2.66699 12.6667V14M10.667 4.66667C10.667 6.13943 9.47308 7.33333 8.00033 7.33333C6.52757 7.33333 5.33366 6.13943 5.33366 4.66667C5.33366 3.19391 6.52757 2 8.00033 2C9.47308 2 10.667 3.19391 10.667 4.66667Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span >{{auditDetails?.lastAuditedDetails?.auditedBy}}</span>\r\n <span class=\"ms-2 mt-1\"><span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_152_29431)\">\r\n <path\r\n d=\"M9 4.5V9L12 10.5M16.5 9C16.5 13.1421 13.1421 16.5 9 16.5C4.85786 16.5 1.5 13.1421 1.5 9C1.5 4.85786 4.85786 1.5 9 1.5C13.1421 1.5 16.5 4.85786 16.5 9Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_152_29431\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>{{auditDetails?.lastAuditedDetails?.completionTime}}\r\n {{auditDetails?.lastAuditedDetails?.timeZone}}</span>\r\n </div>\r\n \r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div *ngIf=\"takeAudit && currentAuditType === 'remote'\" class=\"d-flex align-items-end me-2\">\r\n <select [(ngModel)]=\"spokenLanguage\" class=\"form-select form-select-sm\">\r\n <option selected disabled >Language Spoken <span style=\"color:red\">*</span></option>\r\n <option value=\"English\">English</option>\r\n <option value=\"Hindi\">Hindi</option>\r\n </select></div>\r\n <div *ngIf=\"auditDetails?.auditType === 'Audit'&&auditDetails?.auditStatus === 'Yet-to-Audit' && !takeAudit\" (click)=\"startAudit('audit')\"\r\n class=\"text-white ms-3 px-3 py-2 fw-semibold rounded-2 cursor-pointer bg-primary\"\r\n style=\"font-size: 14px;\">\r\n Start Audit\r\n </div>\r\n \r\n <div *ngIf=\"['Audited','Re-Audit','Yet-to-Audit'].includes(auditDetails?.auditStatus)&&auditDetails?.auditType === 'Re-Audit' && !takeAudit||auditDetails?.auditType === 'Audit'&&auditDetails?.auditStatus === 'Audited' ||auditDetails?.auditType === 'Re-Audit'&&auditDetails?.auditStatus === 'Re-Audited'&& !takeAudit \"\r\n (click)=\"startAudit('Re-Audit')\" class=\"btn btn-sm py-2 btn-warning\">Re-Audit</div>\r\n <div *ngIf=\"takeAudit\" class=\"d-flex\">\r\n <button class=\"btn btn-sm btn-outline\" [disabled]=\"disablecancel\" (click)=\"cancel()\">Cancel</button>\r\n <button class=\"btn ms-2 btn-sm btn-success\" [disabled]=\"disablecancel\" (click)=\"onsubmit()\">Submit</button>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body mt-1 px-0\">\r\n <div *ngIf=\"!takeAudit && stepWiseProcess?.length\" class=\"table-responsive border border-1 rounded-3\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-align-left\">\r\n Step-by-step Process\r\n </th>\r\n <th *ngIf=\"currentAuditType === 'remote'\" class=\"text-align-left\">\r\n Predicted Transcript\r\n </th>\r\n <th class=\"text-align-left\">\r\n AI Verified\r\n </th>\r\n <th class=\"text-align-left\">\r\n Human Audited\r\n </th>\r\n <th class=\"text-align-left\">\r\n Reason for Error\r\n </th>\r\n <th class=\"text-align-left\">\r\n Noticed Time Range\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let data of stepWiseProcess;let i=index\">\r\n <td>\r\n <div class=\"d-flex align-items-start\">\r\n <!-- <div class=\"w-40px h-40px d-flex justify-content-center text-center me-3\">\r\n <img class=\"w-100 rounded-5\" [src]=\"data?.imageUrl\">\r\n </div> -->\r\n {{data.processName}}\r\n </div>\r\n </td>\r\n <td *ngIf=\"currentAuditType ==='remote'\" class=\"text-capitalize\">\r\n <div class=\"text-primary1 text-decoration-underline cursor-pointer\"\r\n [ngbTooltip]=\"data?.predictedTranscript ? tooltipContent : ''\"\r\n placement='bottom'>{{data?.predictedTranscript?data?.predictedTranscript:\"N/A\"}}</div>\r\n\r\n <ng-template #tooltipContent>\r\n <div class=\"custom-tooltip-content tooltip-content w-100\">\r\n <span class=\"min-w-500px\">{{data?.predictedTranscript?data?.predictedTranscript:\"N/A\"}}</span>\r\n </div>\r\n </ng-template>\r\n\r\n </td>\r\n <td class=\"text-capitalize\"><span\r\n [ngClass]=\"data.AIStatus ? 'badge badge-light-success' : 'badge badge-light-danger'\">{{data.AIStatus\r\n ? 'pass' : 'fail'}}</span></td>\r\n <td class=\"text-capitalize\">\r\n <span \r\n [ngClass]=\"data?.auditedStatus === true ? 'badge badge-light-success' : (data?.auditedStatus === false ? 'badge badge-light-danger' : '')\">\r\n {{ data?.auditedStatus === true ? 'pass' : (data?.auditedStatus === false ? 'fail' : 'N/A') }}\r\n </span>\r\n \r\n </td>\r\n <td *ngIf=\"data.AIStatus !== data.auditedStatus || data.auditedStatus === null || data.auditedStatus === undefined || data.auditedStatus === ''; else EqualBlock\">\r\n <!-- {{ data?.reason || 'N/A' }} -->\r\n <span *ngIf=\"data.reason !=='others'\">{{data.reason || 'N/A'}}</span><span *ngIf=\"data.reason ==='others'\">{{data.otherReason || 'N/A'}}</span>\r\n </td>\r\n <ng-template #EqualBlock>\r\n <td>N/A</td>\r\n </ng-template>\r\n <td>{{data?.startTime}} - {{data?.endTime}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div *ngIf=\"stepWiseProcess?.length && takeAudit&&auditDetails?.auditStatus==='Yet-to-Audit'||auditDetails?.auditStatus==='In-Progress'\">\r\n <div *ngFor=\"let process of stepWiseProcess; let i=index ;let last=last\"\r\n class=\"border border-1 rounded-3 mb-3\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-primary bg-light-primary text-align-left\">\r\n Step-{{i+1 | number}}\r\n </th>\r\n <th class=\"text-primary bg-light-primary text-align-left\">\r\n AI Verified\r\n </th>\r\n <th class=\"text-primary bg-light-primary text-align-left\">\r\n Human Audited\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td class=\"w-200px\">\r\n <!-- <div class=\"d-flex align-items-start\"> -->\r\n <!-- <div class=\"w-40px h-40px d-flex justify-content-center text-center me-3\">\r\n <img class=\"w-100 rounded-5\" [src]=\"process.imageUrl\">\r\n </div> -->\r\n {{process.processName}}\r\n <!-- </div> -->\r\n </td>\r\n <td><span *ngIf=\"process.AIStatus\" class=\"badge badge-light-success text-capitalize\">Pass</span>\r\n <span *ngIf=\"!process.AIStatus\" class=\"badge badge-light-danger text-capitalize\">Fail</span>\r\n </td>\r\n <td>\r\n <div class=\"d-flex justify-content-start\">\r\n <div (click)=\"selectHumanVerified(i,true)\"\r\n [ngClass]=\"process?.auditedStatus ? 'text-white btn-success' : 'text-success bg-white border border-success'\"\r\n class=\"btn btn-sm rounded-5\"><span><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"16\"\r\n viewBox=\"0 0 17 16\" fill=\"none\">\r\n <path d=\"M14.1667 4L6.83333 11.3333L3.5 8\"\r\n [attr.stroke]=\"process?.auditedStatus ? 'white' : '#17C653'\"\r\n stroke-width=\"1.25\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span><span class=\"ms-2\">Pass</span></div>\r\n\r\n <div (click)=\"selectHumanVerified(i,false)\"\r\n [ngClass]=\"process?.auditedStatus===false ? 'text-white bg-danger' : 'text-danger bg-white border border-danger'\"\r\n class=\"ms-3 px-5 py-2 fw-semibold rounded-5 cursor-pointer rounded-5\">\r\n <span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"16\"\r\n viewBox=\"0 0 17 16\" fill=\"none\">\r\n <path d=\"M12.6665 4L4.6665 12M4.6665 4L12.6665 12\"\r\n [attr.stroke]=\"process?.auditedStatus===false ? 'white' : '#F8285A'\"\r\n stroke-width=\"1.25\" stroke-linecap=\"rowund\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span><span class=\"ms-2\">Fail</span></div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div *ngIf=\"currentAuditType === 'remote' && process?.predictedTranscript\" class=\"w-100\">\r\n <div class=\"bg-light-primary text-primary p-3\">\r\n Predicted Transcript\r\n </div>\r\n <div class=\"row col-sm-12 p-5\">\r\n <div class=\"text-primary text-decoration-underline cursor-pointer\"\r\n [ngbTooltip]=\"process?.predictedTranscript ? tooltipContent : ''\"\r\n placement='bottom'>\r\n {{process?.predictedTranscript}}\r\n </div>\r\n <ng-template #tooltipContent>\r\n <div class=\"custom-tooltip-content tooltip-content w-100\">\r\n <span class=\"min-w-500px\">{{process?.predictedTranscript}}</span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <div *ngIf=\"process?.auditedStatus !== undefined && process?.auditedStatus !== '' && process?.auditedStatus !== process?.AIStatus\" class=\"w-100\">\r\n <div class=\"bg-light-primary text-primary p-3\">\r\n Reason & Time Stamp\r\n </div>\r\n <div class=\"row col-sm-12 p-5\">\r\n <div class=\"col-sm-6 col-md-6\">\r\n <div>\r\n <div (click)=\"toggleDropdown(i,'reason')\" class=\"custom-dropdown\">\r\n <div class=\"d-flex justify-content-between\">\r\n <span class=\"text-select\">\r\n {{ process?.reason ? process?.reason : 'Select Reason' }}\r\n </span>\r\n <span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n \r\n <div [ngClass]=\"last ? 'dropdown-content1' : 'dropdown-content'\" *ngIf=\"dropdownOpen[i]?.reason\">\r\n <div class=\"scroll-container\">\r\n <!-- Minutes List -->\r\n <div class=\"item my-2 minutes-scroll\">\r\n <ul *ngFor=\"let item of dropdownList\" class=\"list-unstyled\">\r\n <li [ngClass]=\"process?.reason === item?.key ? 'active' : ''\"\r\n class=\"camera px-5 items fw-semibold cursor-pointer py-2\"\r\n (click)=\"selectReason(i, item?.key, 'reason')\">\r\n {{ item?.item }}\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <!-- Custom Input for \"Others\" -->\r\n <div *ngIf=\"process?.reason === 'others'\" class=\"mt-2\">\r\n <input \r\n type=\"text\" \r\n [(ngModel)]=\"process.otherReason\" \r\n placeholder=\"Enter your reason\" \r\n class=\"form-control form-control-sm\" />\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-sm-3\">\r\n <div class=\"w-100\">\r\n <div (click)=\"toggleDropdown(i,'startTime')\" class=\"custom-dropdown\">\r\n <label class=\"label fw-semibold bg-white px-2\">Start</label>\r\n <div class=\"text-select\">{{process?.startTime ? process?.startTime\r\n :'MM:SS'}}</div>\r\n\r\n <div [ngClass]=\"last ? 'dropdown-content1' : 'dropdown-content'\"\r\n *ngIf=\"dropdownOpen[i]?.startTime\">\r\n <div class=\"scroll-container\">\r\n <!-- Minutes List -->\r\n <div class=\"scroll-section minutes-scroll \">\r\n <div *ngFor=\"let min of minutesList\"\r\n (click)=\"selectMinute(i,min,'startTime')\"\r\n [class.selected]=\"min === selectedMinutes\">\r\n {{ min }}\r\n </div>\r\n </div>\r\n <!-- Seconds List -->\r\n <div class=\"scroll-section seconds-scroll\">\r\n <div *ngFor=\"let sec of secondsList\"\r\n (click)=\"selectSecond(i,sec,'startTime')\"\r\n [class.selected]=\"sec === selectedSeconds\">\r\n {{ sec }}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n <div class=\"w-100\">\r\n <div (click)=\"toggleDropdown(i,'endTime')\" class=\"custom-dropdown\">\r\n <label class=\"label fw-semibold bg-white px-2\">End</label>\r\n <div class=\"text-select\"><span>{{process.endTime ? process.endTime :\r\n 'MM:SS'}}</span></div>\r\n\r\n <div [ngClass]=\"last ? 'dropdown-content1' : 'dropdown-content'\"\r\n *ngIf=\"dropdownOpen[i]?.endTime\">\r\n <div class=\"scroll-container\">\r\n <!-- Minutes List -->\r\n <div class=\"scroll-section minutes-scroll\">\r\n <div *ngFor=\"let min of minutesList\"\r\n [class.selected]=\"min === selectedMinutes\"\r\n [class.disabled]=\"getSecondsFromTime(min + ':' + selectedSeconds) <= getSecondsFromTime(process.startTime)\"\r\n (click)=\"\r\n getSecondsFromTime(min + ':' + selectedSeconds) > getSecondsFromTime(process.startTime)\r\n && selectMinute(i,min,'endTime')\">\r\n {{ min }}\r\n </div>\r\n \r\n </div>\r\n <!-- Seconds List -->\r\n <div class=\"scroll-section seconds-scroll\">\r\n <div *ngFor=\"let sec of secondsList\"\r\n [class.selected]=\"sec === selectedSeconds\"\r\n [class.disabled]=\"getSecondsFromTime(selectedMinutes + ':' + sec) <= getSecondsFromTime(process.startTime)\"\r\n (click)=\"\r\n getSecondsFromTime(selectedMinutes + ':' + sec) > getSecondsFromTime(process.startTime)\r\n && selectSecond(i,sec,'endTime')\">\r\n {{ sec }}\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!stepWiseProcess?.length\">\r\n <div *ngIf=\"(tableLoading | async) === 'loading'\"\r\n class=\"card row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(tableLoading | async) === 'loaded'\" class=\"row mt-2\">\r\n <div *ngIf=\"noData\" class=\"col-lg-12\">\r\n <div class=\"card-body my-8 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for the test</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"card mt-3 p-2\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"title-text mb-2\">History</span>\r\n </h3>\r\n </div>\r\n <div class=\"card-body py-0 px-3\">\r\n <div class=\"table-responsive border border-1 rounded-3\" *ngIf=\"historyData?.length\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-start\">Audited By</th>\r\n <th>Audited Date</th>\r\n <th>Time Stamp</th>\r\n <th>View Logs</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of historyData\">\r\n <td>{{item.userName}}</td>\r\n <td>{{item.Date}}</td>\r\n <td>{{item.Time}} IST</td>\r\n <td (click)=\"viewHistoryModel(item)\" class=\"cursor-pointer\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"16\"\r\n viewBox=\"0 0 20 16\" fill=\"none\">\r\n <path\r\n d=\"M0.833496 8.00016C0.833496 8.00016 4.16683 1.3335 10.0002 1.3335C15.8335 1.3335 19.1668 8.00016 19.1668 8.00016C19.1668 8.00016 15.8335 14.6668 10.0002 14.6668C4.16683 14.6668 0.833496 8.00016 0.833496 8.00016Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.0002 10.5002C11.3809 10.5002 12.5002 9.38087 12.5002 8.00016C12.5002 6.61945 11.3809 5.50016 10.0002 5.50016C8.61945 5.50016 7.50016 6.61945 7.50016 8.00016C7.50016 9.38087 8.61945 10.5002 10.0002 10.5002Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <div *ngIf=\"!historyData?.length\">\r\n <div *ngIf=\"(historytableLoading | async) === 'loading'\"\r\n class=\"card row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"(historytableLoading | async) === 'loaded'\" class=\"row mt-2\">\r\n <div class=\"col-lg-12\">\r\n <div class=\"card-body my-8 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for the test</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<ng-template #viewHistory let-model>\r\n <div class=\"p-5 ts700px scroll\">\r\n\r\n\r\n <div class=\"card-body py-0 \">\r\n <div class=\"my-2 d-flex\">\r\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"46\"\r\n height=\"46\" viewBox=\"0 0 56 56\" fill=\"none\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#DAF1FF\" />\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#EAF8FF\" stroke-width=\"8\" />\r\n <path\r\n d=\"M28 22V28L32 30M38 28C38 33.5228 33.5228 38 28 38C22.4772 38 18 33.5228 18 28C18 22.4772 22.4772 18 28 18C33.5228 18 38 22.4772 38 28Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span\r\n class=\"ms-3 pt-2 fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Audit\r\n History</span>\r\n </div>\r\n <div class=\"table-responsive\" *ngIf=\"historyData?.length\">\r\n <table class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-start\">Step-by-Step Process</th>\r\n <th>Status changed from</th>\r\n <th>Noted Time Range</th>\r\n <th>Reason for Error</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of viewHistoryData\">\r\n <td>{{item.processName}}</td>\r\n <td>\r\n <span *ngIf=\"item.AIStatus\" class=\"badge badge-light-success me-2\">Pass</span>\r\n <span *ngIf=\"!item.AIStatus\" class=\"badge badge-light-danger me-2\">Fail</span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"31\" height=\"8\" viewBox=\"0 0 31 8\"\r\n fill=\"none\">\r\n <path\r\n d=\"M30.3536 4.35355C30.5488 4.15829 30.5488 3.84171 30.3536 3.64645L27.1716 0.464466C26.9763 0.269204 26.6597 0.269204 26.4645 0.464466C26.2692 0.659728 26.2692 0.976311 26.4645 1.17157L29.2929 4L26.4645 6.82843C26.2692 7.02369 26.2692 7.34027 26.4645 7.53553C26.6597 7.7308 26.9763 7.7308 27.1716 7.53553L30.3536 4.35355ZM0 4.5H30V3.5H0V4.5Z\"\r\n fill=\"#D0D5DD\" />\r\n </svg>\r\n <span *ngIf=\"item.auditedStatus\" class=\"badge badge-light-success ms-2\">Pass</span>\r\n <span *ngIf=\"!item.auditedStatus\" class=\"badge badge-light-danger ms-2\">Fail</span>\r\n </td>\r\n <td ><span class=\"badge badge-light-success\" *ngIf=\"item.startTime\">Noted Time Range : <span class=\"text-dark1\">{{item.startTime ? item.startTime:'--'}} - {{item.endTime}}</span></span></td>\r\n <td class=\"engage-text\"><span *ngIf=\"item.reason !=='others'\">{{item.reason}}</span><span *ngIf=\"item.reason ==='others'\">{{item.otherReason}}</span></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #viewCancel let-model>\r\n <div class=\"card group-delete py-0\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <svg width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\"/>\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\"/>\r\n <path d=\"M27.9988 24V28M27.9988 32H28.0088M26.2888 18.86L17.8188 33C17.6442 33.3024 17.5518 33.6453 17.5508 33.9945C17.5498 34.3437 17.6403 34.6871 17.8132 34.9905C17.9862 35.2939 18.2355 35.5467 18.5365 35.7238C18.8375 35.9009 19.1796 35.9961 19.5288 36H36.4688C36.818 35.9961 37.1601 35.9009 37.4611 35.7238C37.7621 35.5467 38.0114 35.2939 38.1844 34.9905C38.3573 34.6871 38.4478 34.3437 38.4468 33.9945C38.4458 33.6453 38.3534 33.3024 38.1788 33L29.7088 18.86C29.5305 18.5661 29.2795 18.3231 28.98 18.1544C28.6805 17.9858 28.3425 17.8972 27.9988 17.8972C27.6551 17.8972 27.3171 17.9858 27.0176 18.1544C26.7181 18.3231 26.4671 18.5661 26.2888 18.86Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n </div>\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Are you sure?</a>\r\n <span class=\"sub-title fw-normal mt-2\">Would you like to cancel this?</span>\r\n \r\n <div class=\"mt-5 w-100\">\r\n \r\n <div role=\"group\" class=\"d-flex mt-3 mb-15\">\r\n <button class=\"btn btn-outline w-100 me-3\" (click)=\"OnCancel()\">No</button>\r\n <button id=\"alert-toast\" class=\"btn btn-danger w-100 ms-3\" (click)=\"onYes()\">Yes</button>\r\n \r\n </div>\r\n \r\n </div>\r\n \r\n </div>\r\n </div>\r\n</ng-template>","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { EyeTestAuditComponent } from './eye-test-audit.component';\r\nimport { StartAuditComponent } from './start-audit/start-audit.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: EyeTestAuditComponent\r\n },\r\n {\r\n path: 'start',\r\n component: StartAuditComponent\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class EyeTestAuditRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { EyeTestAuditRoutingModule } from './eye-test-audit-routing.module';\r\nimport { EyeTestAuditComponent } from './eye-test-audit.component';\r\nimport { StartAuditComponent } from './start-audit/start-audit.component';\r\nimport { EyeTestComponent } from '../eye-test/eye-test.component';\r\nimport { CommonSharedModule } from 'tango-app-ui-shared';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { NgxDaterangepickerMd } from 'ngx-daterangepicker-material';\r\nimport { ReactiveSelectComponent } from '../reactive-select/reactive-select.component';\r\nimport { CustomSelectComponent } from '../custom-select/custom-select.component';\r\nimport { GroupSelectComponent } from '../group-select/group-select.component';\r\nimport { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n EyeTestAuditComponent,\r\n StartAuditComponent,\r\n EyeTestComponent,\r\n ReactiveSelectComponent,\r\n CustomSelectComponent,\r\n GroupSelectComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n EyeTestAuditRoutingModule,\r\n CommonSharedModule,\r\n FormsModule,\r\n ReactiveFormsModule, \r\n NgxDaterangepickerMd,\r\n NgbTooltipModule\r\n ]\r\n})\r\nexport class EyeTestAuditModule { }\r\n"],"names":["i1.EyeTestAuditService","i2","i3","i1","i3.TraxService","i4.EyeTestAuditService","i5","i6","i7","i9.ReactiveSelectComponent","i10.CustomSelectComponent","i11.GroupSelectComponent","i2.EyeTestComponent"],"mappings":"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"}