tango-app-ui-analyse-trax 3.7.10 → 3.7.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/eye-test-audit/eye-test/eye-test.component.mjs +25 -6
- package/fesm2022/{tango-app-ui-analyse-trax-eye-test-audit.module-BTFTnDGr.mjs → tango-app-ui-analyse-trax-eye-test-audit.module-CPGUWUYM.mjs} +26 -7
- package/fesm2022/tango-app-ui-analyse-trax-eye-test-audit.module-CPGUWUYM.mjs.map +1 -0
- package/fesm2022/{tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-D58pz1bA.mjs → tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-Du5xAcR9.mjs} +2 -2
- package/fesm2022/{tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-D58pz1bA.mjs.map → tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-Du5xAcR9.mjs.map} +1 -1
- package/fesm2022/tango-app-ui-analyse-trax.mjs +1 -1
- package/lib/components/eye-test-audit/eye-test/eye-test.component.d.ts +1 -0
- package/package.json +1 -1
- package/fesm2022/tango-app-ui-analyse-trax-eye-test-audit.module-BTFTnDGr.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tango-app-ui-analyse-trax-eye-test-audit.module-CPGUWUYM.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/chip-dropdown/chip-dropdown.component.ts","../../../projects/tango-analyse-trax/src/lib/components/eye-test-audit/chip-dropdown/chip-dropdown.component.html","../../../projects/tango-analyse-trax/src/lib/components/eye-test-audit/eye-test-audit/settings-audit/settings-audit.component.ts","../../../projects/tango-analyse-trax/src/lib/components/eye-test-audit/eye-test-audit/settings-audit/settings-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\nuserApiUrl:any;\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 this.userApiUrl = env.userApiUrl\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\nreturn this.http.post(`${this.eyeTestauditApiUrl}/summary-list`, data);\r\n // old one 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}/summary-list`, data, {\r\n responseType: 'arraybuffer'\r\n });\r\n // old one\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\r\n\r\n // new code added for eye test Apis\r\n\r\n getRmList(client: any): Observable<any> {\r\n return this.http.get(`${this.eyeTestauditApiUrl}/rm-list?clientId=${client}`);\r\n }\r\n getClusters(data: any): Observable<any> {\r\n return this.http.post(`${this.eyeTestauditApiUrl}/cluster-list`,data);\r\n }\r\n getuserList(data: any): Observable<any> {\r\n return this.http.post(`${this.userApiUrl}/list`, data);\r\n } \r\n getUserConfigList(client: any): Observable<any> {\r\n return this.http.get(`${this.eyeTestauditApiUrl}/get-user-config?clientId=${client}`);\r\n }\r\n\r\n updateUserConfig(data: any): Observable<any> {\r\n return this.http.put(`${this.eyeTestauditApiUrl}/update-user-config`, data);\r\n }\r\n\r\n getEmailConfigList(client: any): Observable<any> {\r\n return this.http.get(`${this.eyeTestauditApiUrl}/get-email-config?clientId=${client}`);\r\n }\r\n\r\n updateEmailConfig(id:any,data: any): Observable<any> {\r\n return this.http.put(`${this.eyeTestauditApiUrl}/update-email-config?_id=${id}`, data);\r\n }\r\n\r\n getCard(data:any): Observable<any> {\r\n return this.http.post(`${this.eyeTestauditApiUrl}/summary-card`,data);\r\n }\r\n getEmailLog(data:any): Observable<any> {\r\n return this.http.post(`${this.eyeTestauditApiUrl}/email-alert-log`,data);\r\n }\r\n\r\n getEmailLogExport(data:any): Observable<any> {\r\n return this.http.post(`${this.eyeTestauditApiUrl}/email-alert-log`,data,{\r\n responseType: 'arraybuffer'\r\n });\r\n }\r\n private auditData: any;\r\n\r\n setAuditData(data: any) {\r\n this.auditData = data;\r\n }\r\n\r\n getAuditData() {\r\n return this.auditData;\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 this.cd.detectChanges();\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 this.cd.detectChanges();\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, OnDestroy } 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, OnDestroy {\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;\r\n type: any = [\r\n { value: \"physical\", label: \"Eye Test Compliance\" },\r\n { value: \"remote\", label: \"Remote Test Compliance\" },\r\n ];\r\n auditType: any = [\r\n { label: \"All\", value: \"all\" },\r\n { label: \"Adult\", value: \"adult\" },\r\n { label: \"Kid\", value: \"kid\" },\r\n ];\r\n typePercentageArray: any = [\r\n { label: \"All\", value: null },\r\n { label: \"Less than 50%\", value: \"50\" },\r\n { label: \"Less than 40%\", value: \"40\" },\r\n { label: \"Less than 30%\", value: \"30\" },\r\n { label: \"Less than 20%\", value: \"20\" },\r\n { label: \"Less than 10%\", value: \"10\" },\r\n ];\r\n\r\n nearAdditionArray: any = [\r\n { label: \"With Near Addition\", value: \"with\" },\r\n { label: \"Without Near Addition\", value: \"without\" },\r\n ];\r\n\r\n categoryArray: any = [\r\n {\r\n label: \"Genuine Eye Test\",\r\n value: \"genuine\",\r\n },\r\n { label: \"Fake Eye Test\", value: \"fake\" },\r\n ];\r\n showEyeTest = true;\r\n constructor(\r\n private pageInfo: PageInfoService,\r\n private fb: FormBuilder,\r\n private traxService: TraxService,\r\n private eyeService: EyeTestAuditService,\r\n private router: Router,\r\n private cd: ChangeDetectorRef,\r\n public gs: GlobalStateService,\r\n private ts: ToastService,\r\n private route: ActivatedRoute\r\n ) {\r\n this.typeValue = this.route.snapshot.queryParamMap.get(\"typeValue\");\r\n }\r\n headDate: any;\r\n headDateEnd: any;\r\n users: any;\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n closeEyeTest() {\r\n this.showEyeTest = false;\r\n this.cd.detectChanges();\r\n }\r\n ngOnInit(): void {\r\n let userinfo = JSON.parse(localStorage.getItem(\"user-info\") || \"\");\r\n this.users = userinfo;\r\n if (!this.typeValue) {\r\n this.typeValue = \"physical\";\r\n }\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 let headerFilters = JSON.parse(\r\n localStorage.getItem(\"header-filters\") || \"{}\"\r\n );\r\n if (headerFilters?.date?.startDate && headerFilters?.date?.endDate) {\r\n this.selectedDateRange = {\r\n startDate: this.dayjs(\r\n headerFilters.date.startDate,\r\n \"YYYY-MM-DD\"\r\n ).format(\"DD-MM-YYYY\"),\r\n endDate: this.dayjs(headerFilters.date.endDate, \"YYYY-MM-DD\").format(\r\n \"DD-MM-YYYY\"\r\n ),\r\n };\r\n }\r\n this.route.queryParams.subscribe((params) => {\r\n if (\r\n params &&\r\n params[\"fromDate\"] &&\r\n params[\"toDate\"] &&\r\n params[\"typeValue\"]\r\n ) {\r\n this.typeValue = params[\"typeValue\"] ? params[\"typeValue\"] : \"physical\";\r\n\r\n this.selectedDateRange.startDate = this.dayjs(\r\n params[\"fromDate\"],\r\n \"YYYY-MM-DD\"\r\n ).format(\"DD-MM-YYYY\");\r\n this.selectedDateRange.endDate = this.dayjs(\r\n params[\"toDate\"],\r\n \"YYYY-MM-DD\"\r\n ).format(\"DD-MM-YYYY\");\r\n } else {\r\n this.router.navigate([\"/manage/trax/audit\"], {\r\n queryParams: {\r\n fromDate: this.dayjs(\r\n this.selectedDateRange.startDate,\r\n \"DD-MM-YYYY\"\r\n ).format(\"YYYY-MM-DD\"),\r\n toDate: this.dayjs(\r\n this.selectedDateRange.endDate,\r\n \"DD-MM-YYYY\"\r\n ).format(\"YYYY-MM-DD\"),\r\n typeValue: this.typeValue ? this.typeValue : \"physical\",\r\n },\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(\r\n this.selectedDateRange.endDate,\r\n \"DD-MM-YYYY\"\r\n ).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 setTimeout(() => {\r\n if (this.headerFilters.client) {\r\n switch (this.users?.role) {\r\n case \"superadmin\":\r\n this.getAllRm();\r\n break;\r\n case \"admin\":\r\n this.getAllGroups();\r\n break;\r\n case \"user\":\r\n this.getAllStores();\r\n break;\r\n default:\r\n this.getAllStores();\r\n }\r\n }\r\n\r\n this.cd.detectChanges();\r\n }, 1000);\r\n } else {\r\n setTimeout(() => {\r\n if (this.users && this.users?.clientId) {\r\n this.headerFilters.client = this.users.clientId;\r\n switch (this.users?.role) {\r\n case \"superadmin\":\r\n this.getAllRm();\r\n break;\r\n case \"admin\":\r\n this.getAllGroups();\r\n break;\r\n case \"user\":\r\n this.getAllStores();\r\n break;\r\n default:\r\n this.getAllStores();\r\n }\r\n }\r\n\r\n this.cd.detectChanges();\r\n }, 1000);\r\n }\r\n },\r\n });\r\n }\r\n getAbsValue(value: number | null | undefined): number {\r\n return value != null ? Math.abs(value) : 0;\r\n }\r\n // clusters old api removed\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 loading1 = true;\r\n // clusters new api\r\n getAllGroups(event?: any) {\r\n this.loading1 = true;\r\n let rmList: any = [];\r\n this.ClusterList = [];\r\n if (Array.isArray(this.eyeTestForm.value.RmList)) {\r\n this.eyeTestForm.value.RmList.forEach((el: any) => {\r\n rmList.push(el?.email);\r\n });\r\n }\r\n event?.map((el: any) => el?.email) || [this.users?.email];\r\n const obj = {\r\n clientId: this.headerFilters?.client ? this.headerFilters.client : \"\",\r\n rmList: rmList.length > 0 ? rmList : [this.users?.email],\r\n };\r\n this.eyeService.getClusters(obj).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code === 200) {\r\n this.ClusterList = res?.data?.result;\r\n this.eyeTestForm.get(\"ClusterList\")?.setValue(this.ClusterList);\r\n this.groups = this.ClusterList.map((el: any) => el.clusterName);\r\n this.getAllStores();\r\n } else {\r\n this.ClusterList = [];\r\n this.loading1 = false;\r\n }\r\n this.cd.detectChanges();\r\n },\r\n error: (err) => {\r\n // console.error(\"Cluster fetch failed:\", err);\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\r\n .getStoreslist({\r\n clientId: this.headerFilters?.client,\r\n clusters: this.groups,\r\n city: [],\r\n })\r\n .pipe(takeUntil(this.destroy$))\r\n .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.loading1 = false;\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 this.eyeTestForm.get(\"Type\")?.setValue(event);\r\n this.router.navigate([\"/manage/trax/audit\"], {\r\n queryParams: {\r\n fromDate: this.dayjs(\r\n this.selectedDateRange.startDate,\r\n \"DD-MM-YYYY\"\r\n ).format(\"YYYY-MM-DD\"),\r\n toDate: this.dayjs(this.selectedDateRange.endDate, \"DD-MM-YYYY\").format(\r\n \"YYYY-MM-DD\"\r\n ),\r\n typeValue: event,\r\n },\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 typePercentageChange(event: any) {\r\n this.eyeTestForm.get(\"complianceScore\")?.setValue(event);\r\n this.cd.detectChanges();\r\n }\r\n nearAdditionChange(event: any) {\r\n this.eyeTestForm.get(\"nearAddition\")?.setValue(event);\r\n this.cd.detectChanges();\r\n }\r\n categoryTypeChange(event: any) {\r\n this.eyeTestForm.get(\"category\")?.setValue(event);\r\n this.cd.detectChanges();\r\n }\r\n datechange(event: any) {\r\n if (event && event.startDate && event.endDate) {\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(\r\n event.startDate,\r\n \"DD-MM-YYYY\"\r\n ).format(\"YYYY-MM-DD\");\r\n this.selectedDateRange.endDate = this.dayjs(\r\n event.endDate,\r\n \"DD-MM-YYYY\"\r\n ).format(\"YYYY-MM-DD\");\r\n\r\n this.eyeTestForm\r\n .get(\"fromDate\")\r\n ?.setValue(this.selectedDateRange.startDate);\r\n if (\r\n this.selectedDateRange.startDate &&\r\n this.dayjs(this.selectedDateRange.startDate).isValid()\r\n ) {\r\n this.headDate = this.dayjs(this.selectedDateRange.startDate).format(\r\n \"MMM, DD\"\r\n );\r\n }\r\n this.eyeTestForm\r\n .get(\"toDate\")\r\n ?.setValue(this.selectedDateRange.endDate);\r\n if (\r\n this.selectedDateRange.endDate &&\r\n this.dayjs(this.selectedDateRange.endDate).isValid()\r\n ) {\r\n this.headDateEnd = this.dayjs(this.selectedDateRange.endDate).format(\r\n \"MMM DD, YYYY\"\r\n );\r\n }\r\n this.router.navigate([\"/manage/trax/audit\"], {\r\n queryParams: {\r\n fromDate: this.selectedDateRange.startDate,\r\n toDate: this.selectedDateRange.endDate,\r\n typeValue: this.typeValue,\r\n },\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: [\r\n this.dayjs(this.selectedDateRange.startDate, \"DD-MM-YYYY\").format(\r\n \"YYYY-MM-DD\"\r\n ),\r\n ],\r\n toDate: [\r\n this.dayjs(this.selectedDateRange.endDate, \"DD-MM-YYYY\").format(\r\n \"YYYY-MM-DD\"\r\n ),\r\n ],\r\n type: this.typeValue,\r\n complianceScore: [null],\r\n ...(isRemote ? {} : { category: [\"genuine\"] }),\r\n nearAddition: [\"\"],\r\n ClusterList: [this.groups],\r\n storeList: [this.stores],\r\n RmList: [this.RmList],\r\n ...(isRemote ? {} : { auditType: \"all\" }), // Conditionally add auditType\r\n });\r\n }\r\n\r\n ongroupSelect(event: any) {\r\n this.loading1 = true;\r\n this.eyeTestForm.get(\"ClusterList\")?.setValue(event);\r\n this.groups = event.map((el: any) => el.clusterName);\r\n this.traxService\r\n .getStoreslist({\r\n clientId: this.headerFilters.client,\r\n clusters: this.groups,\r\n city: [],\r\n })\r\n .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.loading1 = false;\r\n this.onSubmit();\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\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 RmListData: any = [];\r\n keyType: any;\r\n rmEmail: any;\r\n // typeVal(val: any, obj?: any) {\r\n // this.loading = true;\r\n // this.searchValue = \"\";\r\n // this.limit = 10;\r\n // this.offset = 1;\r\n // this.pageSize = 10;\r\n // this.keyType = val;\r\n // this.rmEmail = obj?.RMEmail ? obj?.RMEmail : obj;\r\n // // 🔍 find the RM object in your RmList array\r\n // if (this.users?.role === \"superadmin\" && this.RmList?.length) {\r\n // this.RmList?.forEach((element: any) => {\r\n // if (element?.email === this.rmEmail) {\r\n // this.eyeTestForm.get(\"RmList\")?.setValue([element]);\r\n // this.onRmSelect([element]);\r\n // }\r\n // });\r\n // }\r\n // this.groups = obj?.clusterName ? [obj?.clusterName] : this.groups;\r\n // if (\r\n // this.users?.role === \"admin\" &&\r\n // this.ClusterList?.length &&\r\n // obj?.clusterName\r\n // ) {\r\n // this.ClusterList.forEach((element: any) => {\r\n // if (element?.clusterName === this.groups) {\r\n // this.eyeTestForm.get(\"ClusterList\")?.setValue([element]);\r\n // this.ongroupSelect([element]);\r\n // }\r\n // });\r\n // }\r\n // this.sortedColumn = \"date\";\r\n // if (this.rmEmail === \"\") this.onSubmit();\r\n // }\r\n demoGrapics:any;\r\n typeVal(val: any, obj?: any) {\r\n console.log(val, obj);\r\n this.loading = true;\r\n this.searchValue = \"\";\r\n this.limit = 10;\r\n this.offset = 1;\r\n this.pageSize = 10;\r\n this.keyType = val;\r\n this.sortedColumn = \"date\";\r\nthis.demoGrapics = this.eyeTestForm.value.auditType;\r\nif (this.demoGrapics === \"all\") {\r\n this.demoGrapics = [\"adult\", \"kid\"];\r\n}\r\n if (this.users?.role === \"superadmin\" && this.RmList?.length)\r\n this.rmEmail = obj?.RMEmail ? obj?.RMEmail : obj;\r\n \r\n this.groups = obj?.clusterName ? [obj?.clusterName] : this.groups;\r\n \r\n let foundRM = false;\r\n let foundCluster = false;\r\n if((this.users?.role === \"superadmin\" || this.users?.role === \"admin\") && val ===\"store\" &&\r\n this.ClusterList?.length &&\r\n obj?.clusterName\r\n ) {\r\n this.ClusterList.forEach(\r\n (element: any) => \r\n {\r\n if(element?.clusterName === obj.clusterName){\r\n this.eyeTestForm.get(\"ClusterList\")?.setValue([element]);\r\n this.ongroupSelect([element]);\r\n foundCluster = true;\r\n }\r\n })\r\n } else if((this.users?.role === \"superadmin\" || this.users?.role === \"admin\") && val ===\"cluster\" &&\r\n this.ClusterList?.length &&\r\n obj?.clusterName\r\n ) {\r\n this.ClusterList.forEach(\r\n (element: any) => \r\n {\r\n if(element?.clusterName === obj.clusterName){\r\n this.eyeTestForm.get(\"ClusterList\")?.setValue([element]);\r\n this.ongroupSelect([element]);\r\n foundCluster = true;\r\n }\r\n })\r\n }\r\n\r\n // ✅ RM selection (only for superadmin)\r\n if (this.users?.role === \"superadmin\" && val ===\"cluster\" && this.RmList?.length) {\r\n this.RmList.forEach(\r\n (element: any) => {\r\n if(element?.email === this.rmEmail) {\r\n this.eyeTestForm.get(\"RmList\")?.setValue([element]);\r\n this.onRmSelect([element]);\r\n foundRM = true;\r\n }\r\n })\r\n }\r\n\r\n // ✅ Cluster selection (only for admin)\r\n\r\n // ✅ Submit fallback\r\n if (!foundRM && !foundCluster) {\r\n this.getAllStores();\r\n }\r\n this.cd.detectChanges();\r\n }\r\n typeVal1(val: any, obj?: any) {\r\n console.log(val, obj);\r\n this.loading = true;\r\n this.searchValue = \"\";\r\n this.limit = 10;\r\n this.offset = 1;\r\n this.pageSize = 10;\r\n this.keyType = val;\r\n this.sortedColumn = \"date\";\r\n if (this.users?.role === \"superadmin\" && this.RmList?.length)\r\n this.rmEmail = obj?.RMEmail ? obj?.RMEmail : obj;\r\n \r\n this.groups = obj?.clusterName ? [obj?.clusterName] : this.groups;\r\n this.demoGrapics = this.eyeTestForm.value.auditType;\r\nif (this.demoGrapics === \"all\") {\r\n this.demoGrapics = [\"adult\", \"kid\"];\r\n}\r\n let foundRM = false;\r\n let foundCluster = false;\r\n if((this.users?.role === \"superadmin\" || this.users?.role === \"admin\") && val ===\"store\" &&\r\n this.ClusterList?.length &&\r\n obj?.clusterName\r\n ) {\r\n this.ClusterList.forEach(\r\n (element: any) => \r\n {\r\n if(element?.clusterName === obj.clusterName){\r\n this.eyeTestForm.get(\"ClusterList\")?.setValue([element]);\r\n this.ongroupSelect([element]);\r\n foundCluster = true;\r\n }\r\n })\r\n } else if((this.users?.role === \"superadmin\" || this.users?.role === \"admin\") && val ===\"cluster\" &&\r\n this.ClusterList?.length &&\r\n obj?.clusterName\r\n ) {\r\n this.ClusterList.forEach(\r\n (element: any) => \r\n {\r\n if(element?.clusterName === obj.clusterName){\r\n this.eyeTestForm.get(\"ClusterList\")?.setValue([element]);\r\n this.ongroupSelect([element]);\r\n foundCluster = true;\r\n }\r\n })\r\n }\r\n\r\n // ✅ RM selection (only for superadmin)\r\n if (this.users?.role === \"superadmin\" && val ===\"rm\" && this.RmList?.length) {\r\n this.RmList.forEach(\r\n (element: any) => {\r\n if(element?.email === this.rmEmail) {\r\n this.eyeTestForm.get(\"RmList\")?.setValue([element]);\r\n this.onRmSelect([element]);\r\n foundRM = true;\r\n }\r\n })\r\n }\r\n\r\n // ✅ Cluster selection (only for admin)\r\n\r\n // ✅ Submit fallback\r\n if (!foundRM && !foundCluster) {\r\n this.getAllStores();\r\n }\r\n this.cd.detectChanges();\r\n }\r\n\r\n private buildRequestData(params?: {\r\n isExport?: boolean;\r\n limit?: number;\r\n offset?: number;\r\n }): any {\r\n let finalStores: any = [];\r\n let rmListValue: any = [];\r\n\r\n // Map role → keyType\r\n const roleKeyTypeMap: any = {\r\n superadmin: \"rm\",\r\n admin: \"cluster\",\r\n user: \"store\",\r\n };\r\n if (!this.keyType) {\r\n this.keyType = roleKeyTypeMap[this.users?.role] || \"rm\";\r\n }\r\n\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 (Array.isArray(this.eyeTestForm.value.RmList)) {\r\n this.eyeTestForm.value.RmList.forEach((el: any) => {\r\n this.RmListData = rmListValue.push(el?.email);\r\n });\r\n }\r\n if (this.RmListData.length === 0) {\r\n this.RmListData = [];\r\n }\r\nthis.demoGrapics = this.eyeTestForm.value.auditType;\r\n\r\n// normalize auditType → always array\r\nlet auditTypes: string[] = [];\r\n\r\nif (this.demoGrapics === \"all\") {\r\n auditTypes = [\"adult\", \"kid\"];\r\n} else if (Array.isArray(this.demoGrapics)) {\r\n auditTypes = this.demoGrapics;\r\n} else if (this.demoGrapics) {\r\n auditTypes = [this.demoGrapics];\r\n}\r\n\r\nthis.cd.detectChanges();\r\n\r\n this.cd.detectChanges();\r\n return {\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: auditTypes,\r\n }),\r\n cluster: this.groups,\r\n storeId: finalStores, //[\"11-10\",\"11-995\",\"11-996\",\"11-1000\",\"11-10\",\"11-1563\",\"11-1003\",\"11-993\",\"11-987\",\"11-1015\"],\r\n limit: params?.limit ?? this.limit ?? 10,\r\n offset: params?.offset ?? this.offset ?? 1,\r\n keyType: this.keyType,\r\n complianceScore: Number(this.eyeTestForm.value.complianceScore),\r\n nearAddition: this.eyeTestForm.value.nearAddition,\r\n category: this.eyeTestForm.value.category,\r\n RMList: this.rmEmail\r\n ? [this.rmEmail]\r\n : rmListValue.length > 0\r\n ? rmListValue\r\n : [this.users?.email],\r\n //[\"suresh.r@thelenskart.com\",\"k.vasanth@lenskart.in\", \"tamilselvan.kirubagaran@lenskart.in\"],\r\n searchValue: this.searchValue,\r\n isExport: params?.isExport ?? false,\r\n sortOrder: this.sortOrder ?? -1,\r\n sortBy: this.sortedColumn ?? \"date\",\r\n };\r\n }\r\n\r\n exportXLSX() {\r\n const requestData = this.buildRequestData({\r\n isExport: true,\r\n limit: 10000,\r\n offset: 1,\r\n });\r\n\r\n this.eyeService\r\n .getEyeTestTableExport(requestData)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: any) => {\r\n this.eyeService.saveAsExcelFile(\r\n res,\r\n `${this.eyeTestForm.value.type} Eye Test Table `\r\n );\r\n this.cd.detectChanges();\r\n },\r\n error: (err: any) => {\r\n this.ts.getErrorToast(\r\n err?.error?.error ? err?.error?.error : err?.error?.message\r\n );\r\n },\r\n });\r\n }\r\n\r\n totalItems: any = 0;\r\n offset = 1;\r\n limit = 10;\r\n onSubmit() {\r\n this.eyeTestData=[];\r\n this.typeValue = this.eyeTestForm?.value?.type;\r\n this.loading = true;\r\n this.noData = false;\r\n const requestData = this.buildRequestData({ isExport: false });\r\n this.eyeService\r\n .getEyeTestlist(requestData)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code === 200) {\r\n this.eyeTestData = res?.data.result;\r\n this.totalItems = res.data?.count;\r\n this.setPaginationSizes();\r\n this.getCardData();\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: () => {\r\n this.loading = false;\r\n this.noData = true;\r\n this.cd.detectChanges();\r\n },\r\n });\r\n }\r\n\r\n onPageChange(pageOffset: number) {\r\n this.limit = 10;\r\n this.pageSize = 10;\r\n this.loading = true;\r\n this.noData = false;\r\n this.offset = Number(pageOffset);\r\n\r\n const requestData = this.buildRequestData({\r\n isExport: false,\r\n limit: this.limit,\r\n offset: this.offset,\r\n });\r\n\r\n this.eyeService\r\n .getEyeTestlist(requestData)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code === 200) {\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 } 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: () => {\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\r\n const requestData = this.buildRequestData({\r\n isExport: false,\r\n limit: this.limit,\r\n offset: this.offset,\r\n });\r\n\r\n this.eyeService\r\n .getEyeTestlist(requestData)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code === 200) {\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 } 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: () => {\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 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 // new api intagrated\r\n\r\n RmList: any = [];\r\n\r\n getAllRm() {\r\n this.eyeService\r\n .getRmList(this.headerFilters?.client)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res?.code == 200) {\r\n this.RmList = res?.data?.result; //for object based this will changed\r\n this.eyeTestForm.get(\"RmList\")?.setValue(this.RmList);\r\n } else {\r\n this.RmList = [];\r\n this.eyeTestForm.get(\"RmList\")?.setValue([]);\r\n }\r\n this.getAllGroups();\r\n },\r\n });\r\n }\r\n onRmSelect(event: any) {\r\n this.eyeTestForm.get(\"RmList\")?.setValue(event);\r\n this.getAllGroups(event);\r\n this.cd.detectChanges();\r\n }\r\n eyeTestCardData: any = [];\r\n getCardData() {\r\n let finalStores: any = [];\r\n let rmListValue: any = [];\r\n const {\r\n fromDate,\r\n toDate,\r\n type,\r\n auditType,\r\n storeList,\r\n RmList,\r\n complianceScore,\r\n nearAddition,\r\n category,\r\n } = this.eyeTestForm.value;\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 (Array.isArray(this.eyeTestForm.value.RmList)) {\r\n this.eyeTestForm.value.RmList.forEach((el: any) => {\r\n rmListValue.push(el?.email);\r\n });\r\n }\r\n const demographics =\r\n type !== \"remote\"\r\n ? auditType === \"all\"\r\n ? [\"adult\", \"kid\"]\r\n : Array.isArray(auditType)\r\n ? auditType\r\n : [auditType]\r\n : undefined;\r\n\r\n const requestData: any = {\r\n fromDate,\r\n toDate,\r\n type,\r\n storeId: finalStores,\r\n RMList: rmListValue.length > 0 ? rmListValue : [this.users?.email],\r\n complianceScore: Number(complianceScore),\r\n nearAddition,\r\n category,\r\n };\r\n\r\n if (demographics) {\r\n requestData.demographics = demographics;\r\n }\r\n this.eyeService\r\n .getCard(requestData)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: any) => {\r\n this.eyeTestCardData = res?.code === 200 ? res?.data?.result : {};\r\n this.cd.detectChanges();\r\n },\r\n error: () => {\r\n this.eyeTestCardData = {};\r\n this.cd.detectChanges();\r\n },\r\n });\r\n }\r\n eyeTestView(data: any) {\r\n this.eyeService.setAuditData(data);\r\n this.router.navigate([\"/manage/trax/audit/start\"], {\r\n queryParams: {\r\n type: this.eyeTestForm.value.type,\r\n storeId: data?.storeId,\r\n _id: data._id,\r\n eyeType: data?.comment ? \"fake\" : \"genuine\",\r\n RMEmail: data?.RMEmail,\r\n cluster: data?.clusterName,\r\n },\r\n });\r\n }\r\n\r\n settingsView() {\r\n this.eyeService.setAuditData(this.headerFilters);\r\n this.router.navigate([\"/manage/trax/audit/settings\"], {\r\n queryParams: { type: this.eyeTestForm.value.type },\r\n });\r\n }\r\n\r\n getApplyButtonClass(role: string, type: string): string {\r\n const roleClassMap: any = {\r\n superadmin: type === \"remote\" ? \"col-7 mb-4\" : \"col-5 mb-4\",\r\n admin: type === \"remote\" ? \"col-10 mb-4\" : \"col-8 mb-4\",\r\n user: type === \"remote\" ? \"col-2 mb-4\" : \"col-10 mb-4\",\r\n };\r\n\r\n return roleClassMap[role] || \"col-12 mb-4\";\r\n }\r\n}\r\n","<div class=\"card mb-2\">\r\n <div *ngIf=\"loading1\" 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>\r\n <form *ngIf=\"!loading1\" [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-12\">\r\n <div class=\"row\"> -->\r\n <div class=\"col-3 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\" 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\" 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;\" type=\"text\"\r\n matInput ngxDaterangepickerMd [drops]=\"'down'\" [opens]=\"'right'\" [alwaysShowCalendars]=\"false\"\r\n [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"false\" autocomplete=\"off\"\r\n [(ngModel)]=\"selectedDateRange\" [ngModelOptions]=\"{standalone: true}\"\r\n (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-2 mb-4' : 'col-2 mb-4'\" class=\"col-2 mb-4\">\r\n <lib-reactive-select formControlName=\"type\" [idField]=\"'value'\" [nameField]=\"'label'\" [data]=\"type\"\r\n (itemChange)=\"typeChange($event)\"></lib-reactive-select>\r\n </div>\r\n <div *ngIf=\"eyeTestForm.get('type')?.value !=='remote'\" class=\"col-1 mb-4\">\r\n <lib-reactive-select formControlName=\"auditType\" [idField]=\"'value'\" [nameField]=\"'label'\" [data]=\"auditType\"\r\n (itemChange)=\"auditTypeChange($event)\"></lib-reactive-select>\r\n </div>\r\n <!-- </div>\r\n </div> -->\r\n <div *ngIf=\"users?.role ==='superadmin'\" class=\"col-md-3\">\r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(eyeTestForm.get('RmList')?.value?.length)\">\r\n Select RM\r\n </div>\r\n <lib-group-select [items]=\"RmList\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'userName'\"\r\n [idField]=\"'userName'\" (selected)=\"onRmSelect($event)\" [selectedValues]=\"eyeTestForm.get('RmList')?.value\">\r\n </lib-group-select>\r\n </div>\r\n \r\n \r\n </div>\r\n <div *ngIf=\"users?.role ==='superadmin' || users?.role ==='admin'\" class=\"col-md-3\">\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]=\"'clusterName'\"\r\n [idField]=\"'clusterName'\" (selected)=\"ongroupSelect($event)\"\r\n [selectedValues]=\"eyeTestForm.get('ClusterList')?.value\">\r\n </lib-group-select>\r\n </div>\r\n </div>\r\n \r\n <div class=\"col-md-3\">\r\n \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 \r\n </div>\r\n </div>\r\n <div [ngClass]=\"eyeTestForm.get('type')?.value ==='remote' ? 'col-2' : 'col-2'\">\r\n <div class=\"mb-4\">\r\n <lib-reactive-select formControlName=\"complianceScore\" [idField]=\"'value'\" [nameField]=\"'label'\"\r\n [data]=\"typePercentageArray\" (itemChange)=\"typePercentageChange($event)\"></lib-reactive-select>\r\n </div>\r\n </div>\r\n <div *ngIf=\"\" class=\"col-md-2\">\r\n <div class=\"mb-4\">\r\n <lib-reactive-select formControlName=\"nearAddition\" [idField]=\"'value'\" [nameField]=\"'label'\"\r\n [data]=\"nearAdditionArray\" (itemChange)=\"nearAdditionChange($event)\"></lib-reactive-select>\r\n </div>\r\n </div>\r\n <div *ngIf=\"eyeTestForm.get('type')?.value !=='remote'\" class=\"col-md-2\">\r\n <div class=\"mb-4\">\r\n <lib-reactive-select formControlName=\"category\" [idField]=\"'value'\" [nameField]=\"'label'\"\r\n [data]=\"categoryArray\" (itemChange)=\"categoryTypeChange($event)\"></lib-reactive-select>\r\n </div>\r\n </div>\r\n <div \r\n *ngIf=\"users?.role\" \r\n class=\"text-end\"\r\n [ngClass]=\"getApplyButtonClass(users?.role, eyeTestForm.get('type')?.value)\"\r\n>\r\n <a (click)=\"onSubmit()\" type=\"submit\" class=\"btn btn-sm btn-primary py-3\">\r\n <span>Apply</span>\r\n </a>\r\n</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </form>\r\n <div *ngIf=\"showEyeTest\" class=\"ms-6 mb-3\">\r\n\r\n <h3 class=\"card-title dashed w-100 row\">\r\n <span class=\"col-10 title-text py-3\"><span class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\"\r\n 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\r\n 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\"\r\n stroke=\"#D92D20\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n 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 30 days. Audit data\r\n remains accessible, but videos will not be retained beyond this period.</span></span>\r\n <span class=\"col-2 pt-2 text-end cursor-pointer\" (click)=\"closeEyeTest()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\r\n <path d=\"M25 15L15 25M15 15L25 25\" stroke=\"#667085\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </span>\r\n </h3>\r\n </div>\r\n</div>\r\n\r\n\r\n\r\n<!-- <div class=\"card my-3\">\r\n <div class=\"card-header border-0 py-1\">\r\n \r\n </div>\r\n</div> -->\r\n\r\n<div class=\"row\">\r\n <div *ngIf=\"users?.role ==='superadmin' && keyType ==='rm'\" class=\"col\">\r\n <div class=\"card p-2\">\r\n <div class=\"card-header ellipse1 min-h-55px py-1 px-3 d-flex justify-content-between align-items-center\">\r\n <h5 class=\"card-title my-0\">Regional Managers</h5>\r\n <span class=\"text-value\">{{RmListData ?? '--'}}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card mt-5 p-2\">\r\n <div class=\"card-header ellipse1 min-h-55px py-1 px-3 d-flex justify-content-between align-items-center\">\r\n <h5 class=\"card-title my-0\">Clusters</h5>\r\n <span class=\"text-value\">{{groups?.length ?? '--'}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"users?.role ==='superadmin' && keyType !=='rm' || users?.role ==='admin'\" class=\"col\">\r\n <div class=\"card h-100 p-2\">\r\n <div class=\"card-header ellipse1 min-h-45px py-1 px-3 d-flex justify-content-center align-items-center\">\r\n <h5 class=\"card-title\">Clusters</h5>\r\n </div>\r\n <div class=\"card-body py-7 d-flex justify-content-center align-items-center\">\r\n <span class=\"text-value\">{{ groups?.length ?? '-' }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"card h-100 p-2\">\r\n <div class=\"card-header ellipse1 min-h-45px py-1 px-3 d-flex justify-content-center align-items-center\">\r\n <h5 class=\"card-title\">Total Tango AI Files</h5>\r\n </div>\r\n <div class=\"card-body py-7 d-flex justify-content-center align-items-center\">\r\n <span class=\"text-value\">{{ eyeTestCardData?.totalFiles ?? '-' }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"card h-100 p-2\">\r\n <div class=\"card-header ellipse1 min-h-45px py-1 px-3 d-flex justify-content-center align-items-center\">\r\n <h5 class=\"card-title\">Trust Audit Completed</h5>\r\n </div>\r\n <div class=\"card-body py-3 d-flex justify-content-center align-items-center\">\r\n <span class=\"text-value\">{{ eyeTestCardData?.completedFiles ?? '-' }}</span>\r\n\r\n </div>\r\n <div class=\"card-footer py-0 border-0 d-flex justify-content-center align-items-center\">\r\n <span class=\"text-sub\">{{ (eyeTestCardData?.completedRatio ?? '-') + '%' }} <span\r\n class=\"test-sub\">Completed</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"card h-100 p-2\">\r\n <div class=\"card-header ellipse1 min-h-45px py-1 px-3 d-flex justify-content-center align-items-center\">\r\n <h5 class=\"card-title\">Tango Score</h5>\r\n </div>\r\n <div class=\"card-body py-7 d-flex justify-content-center align-items-center\">\r\n <span class=\"text-value\">{{ eyeTestCardData?.tangoScore ?? '-' }}</span>\r\n </div>\r\n <div class=\"card-footer py-0 border-0 d-flex justify-content-center align-items-center\">\r\n <span>\r\n <svg *ngIf=\"eyeTestCardData?.trend\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\"\r\n viewBox=\"0 0 12 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3216_118)\">\r\n <path d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\" stroke=\"#039855\" stroke-width=\"1.5\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3216_118\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg *ngIf=\"!eyeTestCardData?.trend\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"12\" viewBox=\"0 0 13 12\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_760_9776)\">\r\n <path d=\"M11.575 9L6.82495 4.25L4.32495 6.75L0.574951 3M11.575 9H8.57495M11.575 9V6\"\r\n stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_760_9776\">\r\n <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(0.0749512)\" />\r\n </clipPath>\r\n </defs>\r\n </svg> \r\n <span class=\"text-sub ms-2\">{{ eyeTestCardData?.tangoScoreTrend !== null \r\n ? (getAbsValue(eyeTestCardData.tangoScoreTrend) | number:'1.0-0':'en-US') + '%' \r\n : '-' }}\r\n <span\r\n class=\"test-sub1\">vs previous week</span></span></span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"card h-100 p-2\">\r\n <div class=\"card-header ellipse1 min-h-45px py-1 px-3 d-flex justify-content-center align-items-center\">\r\n <h5 class=\"card-title\">Trust Score</h5>\r\n </div>\r\n <div class=\"card-body py-7 d-flex justify-content-center align-items-center\">\r\n <span class=\"text-value\">{{ (eyeTestCardData?.trustScore && eyeTestCardData?.trustScore !== 'NA' \r\n ? eyeTestCardData.trustScore + '%' \r\n : 'NA') }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\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 *ngIf=\"users?.role === 'superadmin' && keyType ==='rm'\" class=\"title-text mb-2\">\r\n Audit Summary\r\n <span *ngIf=\"!loading\" class=\"badge badge-light-primary\">{{ totalItems }} Total</span>\r\n </span>\r\n\r\n <!-- Admin + cluster present → RM Summary -->\r\n <div class=\"d-flex\">\r\n <span class=\"me-2 cursor-pointer\" *ngIf=\"keyType ==='cluster' && users?.role === 'superadmin'\" (click)=\"typeVal('rm','')\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"44\" height=\"44\" viewBox=\"0 0 44 44\" fill=\"none\">\r\n <g filter=\"url(#filter0_d_745_12128)\">\r\n <rect x=\"2\" y=\"1\" width=\"40\" height=\"40\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"39\" height=\"39\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path\r\n d=\"M27.8334 21.0003H16.1667M16.1667 21.0003L22.0001 26.8337M16.1667 21.0003L22.0001 15.167\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_745_12128\" x=\"0\" y=\"0\" width=\"44\" height=\"44\" filterUnits=\"userSpaceOnUse\"\r\n color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_745_12128\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_745_12128\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"users?.role === 'admin' && keyType ==='cluster' || users?.role === 'superadmin' && keyType ==='cluster'\" class=\"title-text my-4 mb-2\">\r\n RM Summary\r\n <span *ngIf=\"!loading\" class=\"badge badge-light-primary text-capitalize\">{{ eyeTestData[0]?.RMName ? eyeTestData[0]?.RMName : '' }}</span>\r\n </span>\r\n </div>\r\n\r\n <!-- All other cases → Eye Test -->\r\n <div class=\"d-flex \">\r\n <span class=\"me-2 cursor-pointer\" *ngIf=\"keyType ==='store' && (users?.role === 'superadmin')\"\r\n (click)=\"typeVal1('cluster',this.rmEmail)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"44\" height=\"44\" viewBox=\"0 0 44 44\" fill=\"none\">\r\n <g filter=\"url(#filter0_d_745_12128)\">\r\n <rect x=\"2\" y=\"1\" width=\"40\" height=\"40\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"39\" height=\"39\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path\r\n d=\"M27.8334 21.0003H16.1667M16.1667 21.0003L22.0001 26.8337M16.1667 21.0003L22.0001 15.167\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_745_12128\" x=\"0\" y=\"0\" width=\"44\" height=\"44\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_745_12128\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_745_12128\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"me-2 cursor-pointer\" *ngIf=\"keyType ==='store' && (users?.role === 'admin')\"\r\n (click)=\"typeVal('cluster',this.groups)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"44\" height=\"44\" viewBox=\"0 0 44 44\" fill=\"none\">\r\n <g filter=\"url(#filter0_d_745_12128)\">\r\n <rect x=\"2\" y=\"1\" width=\"40\" height=\"40\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"39\" height=\"39\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path\r\n d=\"M27.8334 21.0003H16.1667M16.1667 21.0003L22.0001 26.8337M16.1667 21.0003L22.0001 15.167\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_745_12128\" x=\"0\" y=\"0\" width=\"44\" height=\"44\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_745_12128\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_745_12128\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"!(users?.role === 'superadmin' && keyType ==='rm') && !(users?.role === 'superadmin' && keyType ==='cluster') \r\n && !(users?.role === 'admin' && keyType ==='cluster')\" class=\"title-text my-4 mb-2\">\r\n Eye Test\r\n <span *ngIf=\"!loading\" class=\"badge badge-light-primary\">{{ totalItems }} Total</span>\r\n </span>\r\n </div>\r\n <span *ngIf=\"users?.role ==='superadmin' && keyType ==='rm'\" class=\"text-sub my-2\">Based on {{ headDate | date: 'MMM d' }} - {{\r\n headDateEnd | date: 'MMM d, y' }}</span>\r\n <span *ngIf=\"users?.role ==='admin' && keyType ==='cluster'\" class=\"text-sub my-2\">Based on {{ headDate | date: 'MMM d' }} - {{\r\n headDateEnd | date: 'MMM d, y' }}</span>\r\n <span *ngIf=\"users?.role ==='user' && keyType ==='store'\" class=\"text-sub my-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\" 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\"\r\n [placeholder]=\"\r\n keyType === 'rm'\r\n ? 'Search by RMName'\r\n : keyType === 'cluster'\r\n ? 'Search by Cluster'\r\n : 'Search'\r\n \" />\r\n\r\n\r\n <span class=\"cursor-pointer\" *ngIf=\"users?.role ==='superadmin'\" (click)=\"settingsView()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"45\" height=\"46\"\r\n viewBox=\"0 0 45 46\" fill=\"none\">\r\n <g filter=\"url(#filter0_d_760_9988)\">\r\n <rect x=\"2.71973\" y=\"1.98047\" width=\"40.04\" height=\"40.04\" rx=\"7.28\" fill=\"white\" />\r\n <rect x=\"3.17473\" y=\"2.43547\" width=\"39.13\" height=\"39.13\" rx=\"6.825\" stroke=\"#D0D5DD\"\r\n stroke-width=\"0.91\" />\r\n <g clip-path=\"url(#clip0_760_9988)\">\r\n <path\r\n d=\"M22.7396 24.2749C23.9961 24.2749 25.0146 23.2563 25.0146 21.9999C25.0146 20.7434 23.9961 19.7249 22.7396 19.7249C21.4832 19.7249 20.4646 20.7434 20.4646 21.9999C20.4646 23.2563 21.4832 24.2749 22.7396 24.2749Z\"\r\n stroke=\"#344054\" stroke-width=\"1.5197\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M28.3513 24.2749C28.2503 24.5036 28.2202 24.7573 28.2648 25.0033C28.3094 25.2493 28.4267 25.4763 28.6015 25.655L28.647 25.7005C28.788 25.8414 28.8999 26.0087 28.9762 26.1928C29.0526 26.3769 29.0919 26.5743 29.0919 26.7736C29.0919 26.9729 29.0526 27.1703 28.9762 27.3544C28.8999 27.5385 28.788 27.7058 28.647 27.8466C28.5062 27.9876 28.3389 28.0995 28.1548 28.1758C27.9707 28.2522 27.7733 28.2914 27.574 28.2914C27.3747 28.2914 27.1773 28.2522 26.9932 28.1758C26.8091 28.0995 26.6418 27.9876 26.5009 27.8466L26.4554 27.8011C26.2767 27.6263 26.0497 27.509 25.8037 27.4644C25.5577 27.4198 25.304 27.4499 25.0753 27.5509C24.851 27.647 24.6597 27.8066 24.525 28.0101C24.3902 28.2135 24.3179 28.4519 24.3169 28.696V28.8249C24.3169 29.2271 24.1572 29.6129 23.8727 29.8973C23.5883 30.1817 23.2025 30.3415 22.8003 30.3415C22.398 30.3415 22.0123 30.1817 21.7278 29.8973C21.4434 29.6129 21.2836 29.2271 21.2836 28.8249V28.7566C21.2777 28.5056 21.1965 28.2622 21.0504 28.058C20.9044 27.8538 20.7003 27.6982 20.4646 27.6115C20.2359 27.5106 19.9822 27.4805 19.7362 27.5251C19.4902 27.5697 19.2632 27.687 19.0844 27.8618L19.0389 27.9073C18.8981 28.0483 18.7308 28.1602 18.5467 28.2365C18.3626 28.3128 18.1652 28.3521 17.9659 28.3521C17.7666 28.3521 17.5692 28.3128 17.3851 28.2365C17.201 28.1602 17.0337 28.0483 16.8929 27.9073C16.7519 27.7664 16.64 27.5992 16.5637 27.415C16.4873 27.2309 16.448 27.0336 16.448 26.8342C16.448 26.6349 16.4873 26.4376 16.5637 26.2535C16.64 26.0693 16.7519 25.9021 16.8929 25.7612L16.9384 25.7157C17.1132 25.537 17.2305 25.31 17.2751 25.064C17.3197 24.818 17.2896 24.5643 17.1886 24.3355C17.0925 24.1112 16.9329 23.92 16.7294 23.7852C16.526 23.6505 16.2876 23.5782 16.0435 23.5772H15.9146C15.5124 23.5772 15.1266 23.4174 14.8422 23.133C14.5577 22.8486 14.3979 22.4628 14.3979 22.0605C14.3979 21.6583 14.5577 21.2725 14.8422 20.9881C15.1266 20.7037 15.5124 20.5439 15.9146 20.5439H15.9829C16.2339 20.538 16.4773 20.4568 16.6815 20.3107C16.8857 20.1646 17.0413 19.9605 17.1279 19.7249C17.2289 19.4961 17.259 19.2424 17.2144 18.9964C17.1698 18.7504 17.0525 18.5234 16.8777 18.3447L16.8322 18.2992C16.6912 18.1583 16.5793 17.9911 16.503 17.807C16.4267 17.6228 16.3874 17.4255 16.3874 17.2262C16.3874 17.0268 16.4267 16.8295 16.503 16.6454C16.5793 16.4612 16.6912 16.294 16.8322 16.1531C16.9731 16.0121 17.1403 15.9002 17.3244 15.8239C17.5086 15.7476 17.7059 15.7083 17.9052 15.7083C18.1046 15.7083 18.3019 15.7476 18.486 15.8239C18.6702 15.9002 18.8374 16.0121 18.9783 16.1531L19.0238 16.1986C19.2025 16.3734 19.4295 16.4907 19.6755 16.5353C19.9215 16.5799 20.1752 16.5498 20.4039 16.4489H20.4646C20.6889 16.3527 20.8802 16.1931 21.0149 15.9897C21.1497 15.7862 21.222 15.5478 21.2229 15.3038V15.1749C21.2229 14.7726 21.3827 14.3869 21.6672 14.1024C21.9516 13.818 22.3374 13.6582 22.7396 13.6582C23.1419 13.6582 23.5276 13.818 23.8121 14.1024C24.0965 14.3869 24.2563 14.7726 24.2563 15.1749V15.2431C24.2573 15.4871 24.3296 15.7256 24.4643 15.929C24.599 16.1325 24.7903 16.2921 25.0146 16.3882C25.2433 16.4891 25.4971 16.5193 25.7431 16.4747C25.9891 16.4301 26.2161 16.3128 26.3948 16.138L26.4403 16.0925C26.5811 15.9514 26.7484 15.8396 26.9325 15.7632C27.1167 15.6869 27.314 15.6476 27.5133 15.6476C27.7126 15.6476 27.91 15.6869 28.0941 15.7632C28.2782 15.8396 28.4455 15.9514 28.5864 16.0925C28.7274 16.2333 28.8392 16.4006 28.9156 16.5847C28.9919 16.7688 29.0312 16.9662 29.0312 17.1655C29.0312 17.3648 28.9919 17.5622 28.9156 17.7463C28.8392 17.9304 28.7274 18.0977 28.5864 18.2385L28.5409 18.284C28.366 18.4628 28.2488 18.6898 28.2042 18.9358C28.1596 19.1818 28.1897 19.4355 28.2906 19.6642V19.7249C28.3867 19.9492 28.5464 20.1404 28.7498 20.2752C28.9533 20.4099 29.1917 20.4822 29.4357 20.4832H29.5646C29.9669 20.4832 30.3526 20.643 30.6371 20.9274C30.9215 21.2119 31.0813 21.5976 31.0813 21.9999C31.0813 22.4021 30.9215 22.7879 30.6371 23.0723C30.3526 23.3567 29.9669 23.5165 29.5646 23.5165H29.4964C29.2523 23.5175 29.0139 23.5898 28.8105 23.7246C28.607 23.8593 28.4474 24.0506 28.3513 24.2749Z\"\r\n stroke=\"#344054\" stroke-width=\"1.5197\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_760_9988\" x=\"0.719727\" y=\"0.980469\" width=\"44.04\" height=\"44.04\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_760_9988\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_760_9988\"\r\n result=\"shape\" />\r\n </filter>\r\n <clipPath id=\"clip0_760_9988\">\r\n <rect width=\"18.2\" height=\"18.2\" fill=\"white\"\r\n transform=\"translate(13.6396 12.9004)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\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 xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"20\" viewBox=\"0 0 19 20\" fill=\"none\">\r\n <path d=\"M7.53369 12.8441H15.0241L13.5568 14.3172L14.3587 15.1191L17.2024 12.2754L14.3587 9.43164L13.5568 10.2336L15.0241 11.7066H7.53369V12.8441Z\" fill=\"black\"/>\r\n <path d=\"M12.6526 8.8631V6.5881C12.653 6.51325 12.6387 6.43904 12.6104 6.36975C12.5821 6.30045 12.5404 6.23743 12.4877 6.18428L8.5064 2.20303C8.45326 2.15032 8.39023 2.10862 8.32094 2.08031C8.25164 2.05201 8.17744 2.03766 8.10259 2.0381H2.41509C2.1134 2.0381 1.82408 2.15794 1.61075 2.37126C1.39743 2.58458 1.27759 2.87391 1.27759 3.1756V16.8256C1.27759 17.1273 1.39743 17.4166 1.61075 17.6299C1.82408 17.8433 2.1134 17.9631 2.41509 17.9631H11.5151C11.8168 17.9631 12.1061 17.8433 12.3194 17.6299C12.5327 17.4166 12.6526 17.1273 12.6526 16.8256V15.6881H11.5151V16.8256H2.41509V3.1756H6.96509V6.5881C6.96509 6.88978 7.08493 7.17911 7.29826 7.39243C7.51158 7.60575 7.80091 7.7256 8.10259 7.7256H11.5151V8.8631H12.6526ZM8.10259 6.5881V3.40878L11.2819 6.5881H8.10259Z\" fill=\"black\"/>\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 *ngIf=\"keyType ==='store'\" 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\"\r\n height=\"16\" viewBox=\"0 0 16 16\" 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 *ngIf=\"users?.role ==='superadmin'\" class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('RMName')\"> RM Name <svg\r\n [ngClass]=\"sortedColumn === 'RMName' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" 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 === 'RMName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th *ngIf=\"users?.role ==='superadmin' || users?.role ==='admin'\" class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('clusterName')\"> Cluster Name <svg\r\n [ngClass]=\"sortedColumn === 'clusterName' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" 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 === 'clusterName' ? '#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' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" 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\"\r\n height=\"16\" viewBox=\"0 0 16 16\" 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\">Optum ID</th>\r\n <th *ngIf=\"this.typeValue !=='remote'\" class=\"text-start\">Queue ID</th>\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('complianceScore')\">Tango Score <svg\r\n [ngClass]=\"sortedColumn === 'complianceScore' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" 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 === 'complianceScore' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span> \r\n </th>\r\n \r\n <th><span class=\"cursor-pointer\" (click)=\"onSort('trustScore')\">Trust Score <svg\r\n [ngClass]=\"sortedColumn === 'trustScore' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" 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 <th><span class=\"cursor-pointer\" (click)=\"onSort('coveredStepsAI')\">Steps Covered By AI <svg\r\n [ngClass]=\"sortedColumn === 'coveredStepsAI' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" 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 *ngIf=\"this.typeValue !=='remote'\"><span class=\"cursor-pointer\"\r\n (click)=\"onSort('visitorsType')\">Visitor Type <svg\r\n [ngClass]=\"sortedColumn === 'visitorsType' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" 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 class=\"text-start\"><span class=\"cursor-pointer\"\r\n (click)=\"onSort('comment')\">Eye Test Status <svg\r\n [ngClass]=\"sortedColumn === 'comment' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" 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 === 'comment' ? '#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\"><span class=\"cursor-pointer\"\r\n (click)=\"onSort('subComment')\">Comments <svg\r\n [ngClass]=\"sortedColumn === 'subComment' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" 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 === 'subComment' ? '#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('auditStatus')\">Audit Status <svg\r\n [ngClass]=\"sortedColumn === 'auditStatus' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" 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\"><span class=\"cursor-pointer\" (click)=\"onSort('auditedBy')\">Audited By <svg\r\n [ngClass]=\"sortedColumn === 'auditedBy' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" 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 === 'auditedBy' ? '#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\">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?.date | date:'dd MMM, yyyy'}}</td>\r\n <td *ngIf=\"users?.role ==='superadmin'\">{{obj?.RMName}}</td>\r\n <td *ngIf=\"users?.role ==='superadmin' || users?.role ==='admin'\">{{obj?.clusterName}}</td>\r\n <td>{{obj?.storeName}}</td>\r\n <td>{{obj?.storeId}}</td>\r\n <td *ngIf=\"this.typeValue ==='remote'\" class=\"engage-text\">{{obj?.engagementId}}</td>\r\n <td *ngIf=\"this.typeValue !=='remote'\">{{obj?.optumId ? obj?.optumId :''}}\r\n </td>\r\n <td *ngIf=\"this.typeValue !=='remote'\" class=\"engage-text\">{{obj?.queueId ?\r\n obj?.queueId:''}}</td>\r\n <td>\r\n {{ obj?.complianceScore ?? '--' }}\r\n</td>\r\n <td>{{obj?.trustScore ?? '--'}}</td>\r\n <td>{{obj?.coveredStepsAI ? obj?.coveredStepsAI:'--'}}</td>\r\n <td class=\"text-capitalize\" *ngIf=\"this.typeValue !=='remote'\">{{obj?.visitorsType ?\r\n obj?.visitorsType:'--'}}</td>\r\n <td>{{obj?.min ? obj?.min :'0'}} mins {{obj?.sec ?\r\n obj?.sec:'0'}} secs</td>\r\n <td *ngIf=\"this.typeValue !=='remote'\">\r\n <span \r\n class=\"badge\" \r\n [ngClass]=\"obj?.comment ? 'badge-light-danger' : 'badge-light-success'\">\r\n {{ obj?.comment ? 'Fake' : 'Genuine' }}\r\n </span>\r\n</td>\r\n <td>{{obj?.subComment ? obj?.subComment:'--'}}</td>\r\n <td><span class=\"badge badge-light-primary\"\r\n *ngIf=\"obj?.auditStatus ==='Yet-to-Audit'\">{{obj?.auditStatus}}</span>\r\n <span class=\"badge badge-light-warning\"\r\n *ngIf=\"obj?.auditStatus ==='Re-Audited'\">{{obj?.auditStatus}}</span>\r\n <span class=\"badge badge-light-success\"\r\n *ngIf=\"obj?.auditStatus ==='Audited'\">{{obj?.auditStatus}}</span>\r\n <span class=\"badge badge-light-info\"\r\n *ngIf=\"obj?.auditStatus ==='In-Progress'\">{{obj?.auditStatus}}</span>\r\n </td>\r\n <td>{{obj?.auditedBy?obj?.auditedBy:\"-\"}}</td>\r\n <td class=\"cursor-pointer\" (click)=\"eyeTestView(obj)\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"16\" 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 <table *ngIf=\"keyType ==='rm'\" 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('RMName')\"> RM Name <svg\r\n [ngClass]=\"sortedColumn === 'RMName' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" 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 === 'RMName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('clusterCount')\"> Clusters Count <svg\r\n [ngClass]=\"sortedColumn === 'clusterCount' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" 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 === 'clusterCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('storesCount')\">Stores Count <svg\r\n [ngClass]=\"sortedColumn === 'storesCount' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" 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 === 'storesCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('totalFiles')\">Total Tango AI Files <svg\r\n [ngClass]=\"sortedColumn === 'totalFiles' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" 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 === 'totalFiles' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('completedFiles')\">Trust Audit Completed <svg\r\n [ngClass]=\"sortedColumn === 'completedFiles' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" 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 === 'completedFiles' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('complianceScore')\">Tango Score <svg\r\n [ngClass]=\"sortedColumn === 'complianceScore' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" 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 === 'complianceScore' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('trustScore')\">Trust Score <svg\r\n [ngClass]=\"sortedColumn === 'trustScore' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" 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>\r\n </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?.RMName ? obj?.RMName:'--'}}</td>\r\n <td>{{obj?.clusterCount ? obj?.clusterCount:'--'}}</td>\r\n <td>{{obj?.storesCount ? obj?.storesCount:'--'}}</td>\r\n <td>{{obj?.totalFiles ?? '--'}}</td>\r\n <td>{{obj?.completedFiles ?? '--'}}</td>\r\n <td>{{obj.complianceScore ?? '--'}}\r\n \r\n</td>\r\n<td>\r\n {{ obj?.trustScore ?? '--' }}\r\n</td>\r\n <td class=\"cursor-pointer\" (click)=\"typeVal('cluster',obj)\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"16\" 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 <table *ngIf=\"keyType ==='cluster'\" class=\"w-100 table bottom-border text-nowrap\">\r\n <thead>\r\n <tr>\r\n \r\n\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('clusterName')\"> Clusters Name <svg\r\n [ngClass]=\"sortedColumn === 'clusterName' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" 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 === 'clusterName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('storesCount')\">Stores Count <svg\r\n [ngClass]=\"sortedColumn === 'storesCount' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" 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 === 'storesCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('totalFiles')\">Total Tango AI Files <svg\r\n [ngClass]=\"sortedColumn === 'totalFiles' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" 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 === 'totalFiles' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('completedFiles')\">Trust Audit Completed <svg\r\n [ngClass]=\"sortedColumn === 'completedFiles' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" 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 === 'completedFiles' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('complianceScore')\">Tango Score <svg\r\n [ngClass]=\"sortedColumn === 'complianceScore' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" 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 === 'complianceScore' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-start\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('trustScore')\">Trust Score <svg\r\n [ngClass]=\"sortedColumn === 'trustScore' && sortOrder === 1 ? 'rotate' : ''\"\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" 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>\r\n </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?.clusterName ? obj?.clusterName:'--'}}</td>\r\n <td>{{obj?.storesCount ? obj?.storesCount:'--'}}</td>\r\n <td>{{obj?.totalFiles ?? '--'}}</td>\r\n <td>{{obj?.completedFiles ?? '--'}}</td>\r\n <td>\r\n {{ obj?.complianceScore ?? '--' }}\r\n</td>\r\n<td>\r\n {{ obj?.trustScore ?? '--' }}\r\n</td>\r\n <td class=\"cursor-pointer\" (click)=\"typeVal('store',obj)\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"16\" 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\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 auditData:any;\r\n eyeTestType:any;\r\n RmEmail:any;\r\n cluster:any;\r\n ngOnInit(): void {\r\n this.setPageData();\r\n this.auditData = this.$api.getAuditData();\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 this.RmEmail = params['RMEmail'];\r\n this.cluster = params['cluster'];\r\n this.eyeTestType = params['eyeType'];\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 cluster: this.cluster, \r\n RMEmail: this.RmEmail,\r\n clientId: this.auditDetails?.storeId?.split(\"-\")[0],\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 let data: any = JSON.parse(localStorage.getItem(\"header-filters\") || \"\");\r\n data.date = {\r\n startDate: this.auditDetails?.fileDate,\r\n endDate: this.auditDetails?.fileDate\r\n};\r\n localStorage.setItem(\"header-filters\", JSON.stringify(data));\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 ? 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 ?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 [ngClass]=\"eyeTestType ==='fake' ? 'col-md-12' : 'col-md-6'\" 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 *ngIf=\"eyeTestType !=='fake'\" 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 \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 { ChangeDetectorRef, Component, EventEmitter, HostListener, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { TraxService } from '../../../services/trax.service';\r\n\r\n\r\n@Component({\r\n selector: 'lib-chip-dropdown',\r\n templateUrl: './chip-dropdown.component.html',\r\n styleUrl: './chip-dropdown.component.scss'\r\n})\r\nexport class ChipDropdownComponent implements OnInit,OnChanges{\r\n @Input() data:any;\r\n @Input() selectedData:any = [];\r\n @Output() selectedList:EventEmitter<string[]> = new EventEmitter<string[]>();\r\n showDropdown:boolean = false;\r\n dummyData:any;\r\n instanceId:string;\r\n searchValue:any ='';\r\n\r\n constructor(private traxService:TraxService, private cd:ChangeDetectorRef){\r\n this.instanceId = crypto.randomUUID()\r\n\r\n this.traxService.dropdownCloseTrigger.subscribe((val)=>{\r\n if(val && this.instanceId !== val){\r\n this.showDropdown = false\r\n }\r\n })\r\n\r\n }\r\n\r\n ngOnInit(): void { \r\n this.selectedData = this.selectedData ? JSON.parse(JSON.stringify(this.selectedData)) :[];\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if(changes['data']) {\r\n let selectedEmail = this.selectedData?.map((item:any) => item.id);\r\n this.data = this.data?.filter((ele:any) => !selectedEmail?.includes(ele.id))\r\n this.dummyData = this.data ? JSON.parse(JSON.stringify(this.data)) : []; \r\n }\r\n }\r\n \r\n\r\n addBadge(data:any,index:any) {\r\n this.selectedData.push({name:data.name,value:data.id});\r\n this.data.splice(index,1);\r\n if(this.searchValue.trim().length) {\r\n this.searchValue = '';\r\n let name = this.selectedData.map((item:any) => item.name);\r\n this.data = this.dummyData?.filter((ele: any) => !name.includes(ele.name));\r\n this.showDropdown = !this.showDropdown;\r\n }\r\n this.selectedList.emit(this.selectedData);\r\n }\r\n\r\n removeBadge(data:any,index:number) {\r\n this.data.push(data);\r\n this.selectedData.splice(index,1);\r\n this.selectedList.emit(this.selectedData);\r\n }\r\n\r\n getInitials(name: string): string {\r\n if (!name) return ''; // Handle empty case\r\n const [firstName, lastName] = name.split(' ');\r\n if (!lastName) {\r\n const initials = (firstName?.[0] || '') + (firstName?.[1] || ''); \r\n return initials.toUpperCase();\r\n } else {\r\n const initials = (firstName?.[0] || '') + (lastName?.[0] || ''); \r\n return initials.toUpperCase();\r\n }\r\n }\r\n\r\n debounceTimer: any = null; \r\n\r\nfindValue() {\r\n let nameList = this.selectedData.map((ele:any) => ele.name.toLowerCase());\r\n if (this.searchValue.trim()) {\r\n this.showDropdown = true;\r\n }\r\n\r\n clearTimeout(this.debounceTimer);\r\n\r\n this.debounceTimer = setTimeout(() => {\r\n this.data = this.dummyData?.filter((ele: any) =>{\r\n return ele.name.toLowerCase().includes(this.searchValue.toLowerCase()) && !nameList.includes(ele.name.toLowerCase())\r\n });\r\n this.cd.detectChanges()\r\n }, 1000);\r\n}\r\n\r\n toggleDropdown() {\r\n this.showDropdown = !this.showDropdown;\r\n this.traxService.dropdownCloseTrigger.next(this.instanceId)\r\n }\r\n\r\n @HostListener(\"document:click\", [\"$event\"])\r\n clickOutside(event: MouseEvent): void {\r\n const clickedInside = (event.target as HTMLElement).closest(\".dropdown-close\");\r\n \r\n if (!clickedInside) {\r\n this.showDropdown = false;\r\n }\r\n }\r\n}\r\n","<div class=\" position-relative\" (clickOutside)=\"showDropdown = false;\">\r\n <div class=\"dropdown-close\">\r\n <div class=\"w-100\">\r\n <div class=\"outer-container d-flex align-items-center position-relative w-100\">\r\n <div class=\"input-container form-control\">\r\n <ng-container *ngFor=\"let item of selectedData;let i=index\">\r\n <span class=\"chip\">\r\n <span class=\"bg-light-primary text-primary p-1 rounded-5 me-1\">{{getInitials(item.name)}}</span>\r\n <span class=\"me-3\">{{item.name}}</span>\r\n <span (click)=\"removeBadge(item,i)\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span>\r\n </ng-container>\r\n <input style=\"min-height: 44px;\" type=\"text\" class=\"form-control dropdown-input\" [(ngModel)]=\"searchValue\" (click)=\"toggleDropdown()\" (input)=\"findValue()\" id=\"searchInput\">\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"px-4 pe-3 dropdown-menu custom-dropdown-menu w-90 mt-3\" *ngIf=\"showDropdown\">\r\n <div [class]=\"data?.length > 5 ? 'h-300px overflow-auto' : 'h-auto'\">\r\n @for( element of data; track element.value; let i = $index){\r\n <div class=\"dropdown-item form-check custom-dropdown-item\" (click)=\"addBadge(element,i)\">\r\n <label>{{element.name}}</label>\r\n </div>\r\n }@empty() {\r\n <div>\r\n <label>No data found</label>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n NgZone,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild,\r\n} from \"@angular/core\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\nimport { PageInfoService } from \"tango-app-ui-global\";\r\nimport { ToastService } from \"tango-app-ui-shared\";\r\nimport { EyeTestAuditService } from \"../../services/eye-test-audit.service\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { Subject, takeUntil } from \"rxjs\";\r\nimport dayjs from \"dayjs\";\r\nimport \"dayjs/locale/en\";\r\nimport { any } from \"@amcharts/amcharts5/.internal/core/util/Array\";\r\nimport { FormBuilder, FormGroup } from \"@angular/forms\";\r\n// import * as Plotly from 'plotly.js-dist-min';\r\nimport { DatePipe } from \"@angular/common\";\r\n@Component({\r\n selector: \"lib-settings-audit\",\r\n templateUrl: \"./settings-audit.component.html\",\r\n styleUrl: \"./settings-audit.component.scss\",\r\n})\r\nexport class SettingsAuditComponent implements OnInit {\r\n AuditId: any;\r\n dayjs = dayjs;\r\n complianceForm: FormGroup;\r\n constructor(\r\n private cd: ChangeDetectorRef,\r\n private zone: NgZone,\r\n private fb: FormBuilder,\r\n private pageInfo: PageInfoService,\r\n private toastService: ToastService,\r\n private route: ActivatedRoute,\r\n private $api: EyeTestAuditService,\r\n private modalService: NgbModal,\r\n private router: Router\r\n ) {}\r\n @HostListener('document:click', ['$event'])\r\n onClickOutside(event: MouseEvent) {\r\n const target = event.target as HTMLElement;\r\n if (!target.closest('.dropdown2') && !target.closest('.btn')) {\r\n this.closeDropdown();\r\n }\r\n }\r\n setPageData() {\r\n this.pageInfo.setTitle(\"Audit - Eye Test\");\r\n\r\n this.pageInfo.setBreadcrumbs([\r\n {\r\n title: \"Tango Trax\",\r\n path: \"/manage/trax/dashboard\",\r\n isActive: false,\r\n isSeparator: false,\r\n },\r\n {\r\n title: \"Tango Trax\",\r\n path: \"/manage/trax/dashboard\",\r\n isActive: false,\r\n isSeparator: true,\r\n },\r\n ]);\r\n }\r\n alertUsers: any = [\r\n {\r\n id: \"6687d9d1a27ee88f9a4457cb\",\r\n userName: \"Ajinkya Malshe\",\r\n email: \"ajinkya.malshe@yopmail.com\",\r\n role: \"admin\",\r\n },\r\n {\r\n id: \"6687d9d1a27ee88f9a4457cc\",\r\n userName: \"John Doe\",\r\n email: \"john.doe@yopmail.com\",\r\n role: \"manager\",\r\n },\r\n ];\r\n users: any;\r\n auditData: any;\r\n currentAuditType: any;\r\n ngOnInit(): void {\r\n const userData: any = JSON.parse(localStorage.getItem(\"user-info\") || \"{}\");\r\n this.users = userData;\r\n const headers: any = JSON.parse(\r\n localStorage.getItem(\"header-filters\") || \"{}\"\r\n );\r\n this.auditData = this.$api.getAuditData()\r\n ? this.$api.getAuditData()\r\n : headers;\r\n this.complianceForm = this.fb.group({\r\n threshold: [{ value: null, disabled: true }],\r\n percentage: [{ value: null, disabled: true }],\r\n });\r\n\r\n this.getUser();\r\n this.getEmailConfig();\r\n this.getAllRm();\r\n // this.buildDataObject();\r\n this.cd.detectChanges();\r\n this.setPageData();\r\n this.tableData = [\r\n {\r\n rmName: \"Olivia\",\r\n clusterName: \"John\",\r\n optumId: \"OPT001\",\r\n storeName: \"LKST1001\",\r\n tangoScore: \"9%\",\r\n trustScore: \"9%\",\r\n },\r\n {\r\n rmName: \"Emma\",\r\n clusterName: \"Doe\",\r\n optumId: \"OPT002\",\r\n storeName: \"LKST1002\",\r\n tangoScore: \"8%\",\r\n trustScore: \"8%\",\r\n },\r\n {\r\n rmName: \"Ava\",\r\n clusterName: \"Smit\",\r\n optumId: \"OPT003\",\r\n storeName: \"LKST1003\",\r\n tangoScore: \"7%\",\r\n trustScore: \"7%\",\r\n },\r\n {\r\n rmName: \"Isabella\",\r\n clusterName: \"Johnson\",\r\n optumId: \"OPT004\",\r\n storeName: \"LKST1004\",\r\n tangoScore: \"6%\",\r\n trustScore: \"6%\",\r\n },\r\n ];\r\n // this.alertUsers = this.alertUsers.map(\r\n // (user: { userName: string; email: string; role: string }) => ({\r\n // name: user.userName,\r\n // value: user.email,\r\n // role: user.role,\r\n // })\r\n // );\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 }\r\n private readonly destroy$ = new Subject();\r\n stepWiseProcess: any = [];\r\n auditDetails: any;\r\n takeAudit: any;\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\r\n .getAuditdetails(payload)\r\n .pipe(takeUntil(this.destroy$))\r\n .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 openItem(event: any) {}\r\n\r\n // component.ts\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: {\r\n date: this.dayjs(\r\n this.auditDetails?.fileDate\r\n ? this.auditDetails?.fileDate\r\n : this.filterStartDate\r\n ).format(\"YYYY-MM-DD\"),\r\n typeValue: \"physical\",\r\n },\r\n });\r\n }\r\n selectedComplianceThreshold: any;\r\n selectedCompliancePercentage: any;\r\n complianceThresholds = [\r\n { value: \"<=\", label: \"< =\" },\r\n { value: \"<\", label: \"<\" },\r\n { value: \"=>\", label: \"= >\" },\r\n { value: \">\", label: \">\" },\r\n { value: \"=\", label: \"=\" },\r\n ];\r\n compliancePercentage = [\r\n { value: \"10%\", label: \"10%\" },\r\n { value: \"20%\", label: \"20%\" },\r\n { value: \"30%\", label: \"30%\" },\r\n { value: \"40%\", label: \"40%\" },\r\n { value: \"50%\", label: \"50%\" },\r\n { value: \"60%\", label: \"60%\" },\r\n { value: \"70%\", label: \"70%\" },\r\n { value: \"80%\", label: \"80%\" },\r\n { value: \"90%\", label: \"90%\" },\r\n { value: \"100%\", label: \"100%\" },\r\n ];\r\n\r\n selectedDateRange: any = {\r\n startDate: this.dayjs().subtract(30, \"days\"),\r\n endDate: this.dayjs(),\r\n };\r\n filterStartDate: any = this.dayjs().subtract(30, \"days\").format(\"YYYY-MM-DD\");\r\n filterEndDate: any = this.dayjs().subtract(0, \"days\").format(\"YYYY-MM-DD\");\r\n\r\n ranges: any = {\r\n Today: [this.dayjs(), this.dayjs()],\r\n Yesterday: [\r\n this.dayjs().subtract(1, \"days\"),\r\n this.dayjs().subtract(1, \"days\"),\r\n ],\r\n \"This Week\": [this.dayjs().subtract(6, \"days\"), this.dayjs()],\r\n \"Last Week\": [\r\n this.dayjs().subtract(13, \"days\").startOf(\"days\"),\r\n this.dayjs().subtract(7, \"days\").endOf(\"days\"),\r\n ],\r\n \"This Month\": [\r\n this.dayjs().subtract(30, \"days\"), // Start date is 30 days before today\r\n this.dayjs(),\r\n ],\r\n \"Last Month\": [\r\n this.dayjs().subtract(1, \"month\").startOf(\"month\"),\r\n this.dayjs().subtract(1, \"month\").endOf(\"month\"),\r\n ],\r\n };\r\n\r\n datechange(event: any) {\r\n if (event.startDate || event.endDate) {\r\n this.filterStartDate = this.dayjs(event.startDate).format(\"YYYY-MM-DD\");\r\n this.filterEndDate = this.dayjs(event.endDate).format(\"YYYY-MM-DD\");\r\n this.Apply();\r\n }\r\n }\r\n\r\n exportXLSX() {\r\n const requestData = {\r\n fromDate: this.filterStartDate,\r\n toDate: this.filterEndDate,\r\n type: this.currentAuditType,\r\n RMList: this.selectedRms?.length ? this.selectedRms : [],\r\n clientId: this.auditData?.client\r\n ? this.auditData?.client\r\n : this.users?.clientId,\r\n cluster: this.selectedClusters?.length\r\n ? this.selectedClusters\r\n : [],\r\n isExport: true,\r\n searchValue: this.searchValue,\r\n sortBy: this.sortedColumn ? this.sortedColumn : \"rmName\",\r\n sortOrder: this.sortOrder ? this.sortOrder : 1,\r\n offset: 1,\r\n limit: 10000,\r\n };\r\n\r\n this.$api\r\n .getEmailLogExport(requestData)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: any) => {\r\n this.$api.saveAsExcelFile(\r\n res,\r\n `${this.currentAuditType} Eye Test Table `\r\n );\r\n this.cd.detectChanges();\r\n },\r\n error: (err: any) => {\r\n this.toastService.getErrorToast(\r\n err?.error?.error ? err?.error?.error : err?.error?.message\r\n );\r\n },\r\n });\r\n \r\n }\r\n\r\n searchValue: any;\r\nsearchData() {\r\n this.searchValue = this.searchValue;\r\n this.getEmail();\r\n }\r\n\r\n tableData: any = [];\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 : \"rmName\";\r\n this.sortOrder = 1;\r\n }\r\n this.getEmail();\r\n }\r\n allUsers: any;\r\n getUser() {\r\n let obj = {\r\n userType: 'client',\r\n filterByRole: [\"admin\", \"user\"],\r\n isActive: this.users?.isActive,\r\n clientId:this.auditData?.client ? this.auditData?.client : this.users?.clientId\r\n };\r\n\r\n this.$api\r\n .getuserList(obj)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((res: any) => {\r\n if (res && res?.code == 200) {\r\n this.allUsers = res?.data?.result?.map((item: any) => ({\r\n id: item._id,\r\n name: item.email,\r\n }));\r\n\r\n this.getUserConfig(); // call after allUsers is ready\r\n this.cd.detectChanges();\r\n }\r\n });\r\n }\r\n\r\n configData: any;\r\n\r\n updateOwner(selectedEmail: any) {\r\n this.configData = selectedEmail;\r\n }\r\n\r\n toggleEdit() {\r\n if (!this.editMode) {\r\n // entering edit mode → make a working copy\r\n this.configData = [...this.lastSavedConfig];\r\n this.editMode = true;\r\n } else {\r\n // leaving edit without saving → restore baseline\r\n this.configData = [...this.lastSavedConfig];\r\n this.editMode = false;\r\n }\r\n }\r\n\r\n cancelEdit() {\r\n // revert back to last saved state\r\n this.configData = [...this.lastSavedConfig];\r\n this.editMode = false;\r\n }\r\n editMode = false;\r\n submitOwners() {\r\n const payload = {\r\n clientId: this.auditData?.client, // or this.clientId\r\n userList: this.configData.map((o: any) => ({\r\n _id: o.id ?? o.value, // ✅ support both cases\r\n email: o.name,\r\n })),\r\n };\r\n\r\n this.$api\r\n .updateUserConfig(payload)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res?.code == 200) {\r\n this.getUserConfig();\r\n this.toastService.getSuccessToast(\"Owners updated successfully\");\r\n this.editMode = false;\r\n } else {\r\n this.toastService.getErrorToast(\"Failed to update owners\");\r\n }\r\n this.cd.detectChanges();\r\n },\r\n error: (err) => {\r\n console.error(\"Update failed:\", err);\r\n },\r\n });\r\n }\r\n\r\n // this.onSubmit();\r\n userConfigList: any = [];\r\n lastSavedConfig: any;\r\n getUserConfig() {\r\n this.$api\r\n .getUserConfigList(this.auditData?.client)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((res: any) => {\r\n if (res && res?.code == 200) {\r\n // Assigned users\r\n this.configData =\r\n res?.data?.result?.userList?.map((item: any) => ({\r\n id: item._id,\r\n name: item.email,\r\n })) ?? [];\r\n this.lastSavedConfig = [...this.configData];\r\n\r\n // Build set of assigned ids\r\n const assignedIds = new Set(this.configData.map((u: any) => u.id));\r\n\r\n // Filter from allUsers (not from userConfigList!)\r\n this.userConfigList = this.allUsers.filter(\r\n (u: any) => !assignedIds.has(u.id)\r\n );\r\n\r\n this.cd.detectChanges();\r\n }\r\n });\r\n }\r\n\r\n // email congig method and variables\r\n emailConfigList: any;\r\n editMode1 = true;\r\n toggleEdit1() {\r\n this.editMode1 = false;\r\n this.complianceForm.enable();\r\n }\r\n getEmailConfig() {\r\n this.$api\r\n .getEmailConfigList(\r\n this.auditData?.client ? this.auditData?.client : this.users?.clientId\r\n )\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((res: any) => {\r\n if (res && res?.code == 200) {\r\n this.emailConfigList = res?.data?.result;\r\n\r\n // Suppose backend returns something like:\r\n // { threshold: \"10\", percentage: \"80\" }\r\n const initialData = {\r\n threshold: this.emailConfigList?.complianceThreshold?.condition,\r\n percentage: this.emailConfigList?.complianceThreshold?.value,\r\n };\r\n\r\n // Fill reactive form with values\r\n this.complianceForm.patchValue(initialData);\r\n this.cd.detectChanges();\r\n }\r\n });\r\n }\r\n\r\n lastSavedCompliance: any;\r\n submitCompliance() {\r\n if (this.complianceForm.invalid) return;\r\n const payload = {\r\n clientId: this.auditData?.client,\r\n complianceThreshold: {\r\n condition: this.complianceForm.value.threshold,\r\n value: this.complianceForm.value.percentage,\r\n },\r\n };\r\n\r\n this.$api\r\n .updateEmailConfig(this.emailConfigList?._id, payload)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res) => {\r\n this.toastService.getSuccessToast(\r\n res?.message\r\n ? `Email configuration` + res?.message\r\n : \"Compliance settings updated successfully\"\r\n );\r\n this.getEmailConfig(); // update baseline\r\n this.complianceForm.disable();\r\n this.editMode1 = true;\r\n this.cd.detectChanges();\r\n },\r\n error: (err) => console.error(\"Update failed:\", err),\r\n });\r\n }\r\n\r\n cancelCompliance() {\r\n this.complianceForm.disable();\r\n this.editMode1 = true;\r\n this.getEmailConfig();\r\n }\r\n // RMs\r\n RmList: any[] = [];\r\n filteredRms: any[] = [];\r\n searchRmText = \"\";\r\n\r\n // Clusters\r\n ClusterList: any[] = [];\r\n filteredClusters: any[] = [];\r\n searchClusterText = \"\";\r\n\r\n // Dropdowns\r\n Opendropdown = false;\r\n dropdownOpen: string | null = null;\r\n\r\n // Open/close dropdown\r\n opendropdown() {\r\n this.Opendropdown = !this.Opendropdown;\r\n }\r\n closeDropdown() {\r\n this.dropdownOpen = null;\r\n }\r\n rmOpen = false;\r\n clusterOpen = false;\r\n\r\n toggleRmDropdown() {\r\n this.rmOpen = !this.rmOpen;\r\n this.clusterOpen = false; // close other\r\n }\r\n\r\n toggleClusterDropdown() {\r\n this.clusterOpen = !this.clusterOpen;\r\n this.rmOpen = false; // close other\r\n }\r\n\r\n closeAllDropdowns() {\r\n this.rmOpen = false;\r\n this.clusterOpen = false;\r\n }\r\n\r\n /** ---- RMs ---- */\r\n getAllRm() {\r\n this.$api.getRmList(this.auditData?.client).subscribe((res: any) => {\r\n if (res?.code === 200) {\r\n const result = Array.isArray(res.data.result)\r\n ? res.data.result\r\n : [res.data.result];\r\n this.RmList = result.map((rm: any) => ({ ...rm, checked: true })); // ✅ pre-select all\r\n this.filteredRms = [...this.RmList];\r\n }\r\n this.getAllGroups(this.RmList);\r\n this.Apply(); // fetch clusters based on selected RMs\r\n });\r\n }\r\n\r\n filterRms() {\r\n const search = this.searchRmText.toLowerCase();\r\n this.filteredRms = this.RmList.filter((r) =>\r\n r.userName.toLowerCase().includes(search)\r\n );\r\n }\r\n\r\n isAllRmsSelected() {\r\n return (\r\n this.filteredRms.length > 0 && this.filteredRms.every((r) => r.checked)\r\n );\r\n }\r\n\r\n toggleSelectAllRms(event: any) {\r\n const checked = event.target.checked;\r\n this.filteredRms.forEach((r) => (r.checked = checked));\r\n }\r\n\r\n updateSelectedRms() {\r\n const selected = this.RmList.filter((r) => r.checked);\r\n this.getAllGroups(selected); // auto refresh clusters\r\n }\r\n\r\nselectedRmsLabel(): string {\r\n const selected = this.filteredRms.filter(rm => rm.checked);\r\n if (selected.length === 0) return '';\r\n return selected[0].userName;\r\n}\r\ngetSelectedRmsCount(): number {\r\n return this.filteredRms.filter(rm => rm.checked).length -1;\r\n}\r\n /** ---- Clusters ---- */\r\ngetAllGroups(event?: any[]) {\r\n let rmList: string[] = [];\r\n\r\n if (event?.length) {\r\n rmList = event.map((o) => o.email);\r\n } else if (this.users?.role === \"rm\") {\r\n rmList = [this.users?.email];\r\n }\r\n\r\n const obj = { \r\n clientId: this.auditData?.client ? this.auditData?.client : this.users?.clientId,\r\n rmList \r\n };\r\n\r\n this.$api.getClusters(obj).subscribe((res: any) => {\r\n if (res?.code === 200) {\r\n // Initialize clusters with checked=false\r\n this.ClusterList = (res.data.result || []).map((c: any) => ({\r\n ...c,\r\n checked: true\r\n }));\r\n this.filteredClusters = [...this.ClusterList];\r\n } else {\r\n this.ClusterList = [];\r\n this.filteredClusters = [];\r\n }\r\n });\r\n}\r\n\r\nfilterClusters() {\r\n const search = this.searchClusterText.toLowerCase();\r\n this.filteredClusters = this.ClusterList.filter((c) =>\r\n c.clusterName.toLowerCase().includes(search)\r\n );\r\n}\r\n\r\nisAllClustersSelected() {\r\n return (\r\n this.filteredClusters.length > 0 &&\r\n this.filteredClusters.every((c) => c.checked)\r\n );\r\n}\r\n\r\ntoggleSelectAllClusters(event: any) {\r\n const checked = event.target.checked;\r\n this.filteredClusters.forEach((c) => (c.checked = checked));\r\n this.updateSelectedClusters();\r\n}\r\n\r\nupdateSelectedClusters() {\r\n this.selectedClusters = this.ClusterList\r\n .filter(c => c.checked)\r\n .map(c => c._id); // or c.clusterName if needed\r\n}\r\n\r\nselectedClustersLabel() {\r\n const selected = this.ClusterList.filter((c) => c.checked);\r\n if (selected.length === 0) return '';\r\n return selected[0].clusterName;\r\n}\r\n\r\ngetSelectedClustersCount() {\r\n const count = this.ClusterList.filter(c => c.checked).length;\r\n return count > 1 ? count - 1 : 0; // Show \"+N others\"\r\n}\r\n\r\n /** ---- Apply / Reset ---- */\r\n Reset() {\r\n this.RmList.forEach((r) => (r.checked = false));\r\n this.ClusterList.forEach((c) => (c.checked = false));\r\n this.filteredRms = [...this.RmList];\r\n this.filteredClusters = [...this.ClusterList];\r\n this.Opendropdown = false;\r\n }\r\n selectedRms: any = [];\r\n selectedClusters: any = [];\r\n Apply() {\r\n const datePipe = new DatePipe(\"en-US\");\r\n this.selectedRms = this.RmList.filter((r) => r.checked).map((r) => r.email);\r\n this.selectedClusters = this.ClusterList.filter((c) => c.checked).map(\r\n (c) => c.clusterName\r\n );\r\n this.getEmail();\r\n this.rmOpen = false;\r\n this.clusterOpen = false;\r\n this.Opendropdown = false;\r\n if (this.filterStartDate) {\r\n this.filterStartDate = datePipe.transform(\r\n this.filterStartDate,\r\n \"yyyy-MM-dd\"\r\n );\r\n }\r\n if (this.filterEndDate) {\r\n this.filterEndDate = datePipe.transform(this.filterEndDate, \"yyyy-MM-dd\");\r\n }\r\n }\r\n offset = 1;\r\n limit = 10;\r\npageSize = 10; \r\npaginationSizes = [10,20,30]; \r\ntotalItems = 0;\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 loading = false;\r\n noData = false;\r\n getEmail() {\r\n this.loading = true;\r\n this.noData = false;\r\n let obj = {\r\n fromDate: this.filterStartDate,\r\n toDate: this.filterEndDate,\r\n type: this.currentAuditType,\r\n RMList: this.selectedRms?.length ? this.selectedRms : [],\r\n clientId: this.auditData?.client\r\n ? this.auditData?.client\r\n : this.users?.clientId,\r\n cluster: this.selectedClusters?.length\r\n ? this.selectedClusters\r\n : [],\r\n isExport: false,\r\n searchValue: this.searchValue,\r\n sortBy: this.sortedColumn ? this.sortedColumn : \"RMEmail\",\r\n sortOrder: this.sortOrder ? this.sortOrder : 1,\r\n offset: this.offset,\r\n limit: this.limit,\r\n };\r\n this.$api\r\n .getEmailLog(obj)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res?.code == 200) {\r\n this.tableData = res.data.result;\r\n this.totalItems = res?.data?.count || 0; \r\n this.setPaginationSizes();\r\n this.loading = false;\r\n this.noData = false;\r\n } else {\r\n this.tableData = [];\r\n this.loading = false;\r\n this.noData = true;\r\n this.totalItems = 0;\r\n }\r\n },\r\n error: (err) => {\r\n this.tableData = [];\r\n this.loading = false;\r\n this.noData = true;\r\n this.totalItems = 0;\r\n console.error(\"Update failed:\", err);\r\n },\r\n });\r\n }\r\n\r\nonPageChange(page: number) {\r\n this.offset = page;\r\n this.getEmail(); // reload with new page\r\n}\r\n\r\nonPageSizeChange(size: number) {\r\n this.pageSize = size;\r\n this.limit = size;\r\n this.offset = 1; // reset to first page when page size changes\r\n this.getEmail();\r\n}\r\n\r\n eyeTestView(data: any) {\r\n this.$api.setAuditData(data);\r\n \r\n this.router.navigate([\"/manage/trax/audit/start\"], {\r\n queryParams: {\r\n type: this.currentAuditType,\r\n storeId: data?.storeId,\r\n _id: data.auditedId,\r\n eyeType :data?.comment ? \"fake\" : \"genuine\",\r\n RMEmail:data?.RMEmail,\r\n cluster:data?.cluster,\r\n },\r\n });\r\n let data1: any = JSON.parse(localStorage.getItem(\"header-filters\") || \"\");\r\n data1.date = {\r\n startDate: this.auditDetails?.fileDate,\r\n endDate: this.auditDetails?.fileDate\r\n};\r\n localStorage.setItem(\"header-filters\", JSON.stringify(data1));\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n // @ViewChild('sankeyChart', { static: true }) chartElement!: ElementRef;\r\n\r\n // ngAfterViewInit() {\r\n // const rawData = [\r\n // { from: \"Customization\", to: \"Formal Pants\", value: 3 },\r\n // { from: \"Entry\", to: \"Formal Pants\", value: 12 },\r\n // { from: \"Pin Tuck Pants\", to: \"Joggers\", value: 4 },\r\n // { from: \"Joggers\", to: \"Formal Pants\", value: 2 },\r\n // { from: \"Power Stretch\", to: \"Customization\", value: 2 },\r\n // { from: \"Pin Tuck Pants\", to: \"Shorts with Lounge wear , Chinos and Pintuck Pants\", value: 5 },\r\n // { from: \"Shorts with Lounge wear , Chinos and Pintuck Pants\", to: \"Power Stretch\", value: 2 },\r\n // { from: \"Customization\", to: \"Trial Room\", value: 2 },\r\n // { from: \"Joggers\", to: \"Exit\", value: 29 },\r\n // { from: \"Pin Tuck Pants\", to: \"Power Stretch\", value: 2 },\r\n // { from: \"Entry\", to: \"Customization\", value: 64 },\r\n // { from: \"Power Stretch\", to: \"Pin Tuck Pants\", value: 3 },\r\n // { from: \"Customization\", to: \"Pin Tuck Pants\", value: 10 },\r\n // { from: \"Entry\", to: \"Shorts with Lounge wear , Chinos and Pintuck Pants\", value: 49 },\r\n // { from: \"Entry\", to: \"Joggers\", value: 29 },\r\n // { from: \"Shorts with Lounge wear , Chinos and Pintuck Pants\", to: \"Exit\", value: 49 },\r\n // { from: \"Joggers\", to: \"Customization\", value: 6 },\r\n // { from: \"Shorts with Lounge wear , Chinos and Pintuck Pants\", to: \"Joggers\", value: 3 },\r\n // { from: \"Power Stretch\", to: \"Joggers\", value: 1 },\r\n // { from: \"Customization\", to: \"Shorts with Lounge wear , Chinos and Pintuck Pants\", value: 7 },\r\n // { from: \"Formal Pants\", to: \"Shorts with Lounge wear , Chinos and Pintuck Pants\", value: 1 },\r\n // { from: \"Pin Tuck Pants\", to: \"Exit\", value: 54 },\r\n // { from: \"Power Stretch\", to: \"Trial Room\", value: 2 },\r\n // { from: \"Formal Pants\", to: \"Customization\", value: 3 },\r\n // { from: \"Formal Pants\", to: \"Power Stretch\", value: 1 },\r\n // { from: \"Shorts with Lounge wear , Chinos and Pintuck Pants\", to: \"Trial Room\", value: 2 },\r\n // { from: \"Customization\", to: \"Exit\", value: 64 },\r\n // { from: \"Entry\", to: \"Pin Tuck Pants\", value: 54 },\r\n // { from: \"Pin Tuck Pants\", to: \"Formal Pants\", value: 3 },\r\n // { from: \"Shorts with Lounge wear , Chinos and Pintuck Pants\", to: \"Pin Tuck Pants\", value: 5 },\r\n // { from: \"Joggers\", to: \"Power Stretch\", value: 4 },\r\n // { from: \"Shorts with Lounge wear , Chinos and Pintuck Pants\", to: \"Formal Pants\", value: 3 },\r\n // { from: \"Pin Tuck Pants\", to: \"Customization\", value: 11 },\r\n // { from: \"Formal Pants\", to: \"Pin Tuck Pants\", value: 3 },\r\n // { from: \"Trial Room\", to: \"Pin Tuck Pants\", value: 1 },\r\n // { from: \"Customization\", to: \"Power Stretch\", value: 1 },\r\n // { from: \"Customization\", to: \"Joggers\", value: 6 },\r\n // { from: \"Formal Pants\", to: \"Exit\", value: 12 },\r\n // { from: \"Joggers\", to: \"Pin Tuck Pants\", value: 4 },\r\n // { from: \"Power Stretch\", to: \"Shorts with Lounge wear , Chinos and Pintuck Pants\", value: 1 },\r\n // { from: \"Power Stretch\", to: \"Exit\", value: 18 },\r\n // { from: \"Entry\", to: \"Trial Room\", value: 6 },\r\n // { from: \"Shorts with Lounge wear , Chinos and Pintuck Pants\", to: \"Customization\", value: 5 },\r\n // { from: \"Entry\", to: \"Power Stretch\", value: 18 },\r\n // { from: \"Power Stretch\", to: \"Formal Pants\", value: 1 },\r\n // { from: \"Trial Room\", to: \"Customization\", value: 3 },\r\n // { from: \"Trial Room\", to: \"Exit\", value: 6 },\r\n // { from: \"Formal Pants\", to: \"Joggers\", value: 4 }\r\n // ];\r\n\r\n // // Build unique nodes\r\n // const labels = [...new Set(rawData.flatMap(d => [d.from, d.to]))];\r\n // const labelToIndex: Record<string, number> = {};\r\n // labels.forEach((label, i) => (labelToIndex[label] = i));\r\n\r\n // // Map data for Sankey\r\n // const source = rawData.map(d => labelToIndex[d.from]);\r\n // const target = rawData.map(d => labelToIndex[d.to]);\r\n // const value = rawData.map(d => d.value);\r\n\r\n // // Assign consistent colors (like amCharts distinct palette)\r\n // const nodeColors: Record<string, string> = {\r\n // \"Customization\": \"#1f77b4\",\r\n // \"Formal Pants\": \"#ff7f0e\",\r\n // \"Entry\": \"#2ca02c\",\r\n // \"Pin Tuck Pants\": \"#d62728\",\r\n // \"Joggers\": \"#9467bd\",\r\n // \"Power Stretch\": \"#8c564b\",\r\n // \"Exit\": \"#e377c2\",\r\n // \"Trial Room\": \"#17becf\",\r\n // \"Shorts with Lounge wear , Chinos and Pintuck Pants\": \"#bcbd22\"\r\n // };\r\n\r\n // const nodeColorArray = labels.map(l => nodeColors[l] || \"#999\");\r\n // const linkColorArray = rawData.map(d => nodeColors[d.from] || \"#999\");\r\n\r\n // const data: any = [{\r\n // type: \"sankey\",\r\n // orientation: \"h\",\r\n // node: {\r\n // pad: 15,\r\n // thickness: 20,\r\n // line: { color: \"black\", width: 0.5 },\r\n // label: labels,\r\n // color: nodeColorArray\r\n // },\r\n // link: {\r\n // source,\r\n // target,\r\n // value,\r\n // color: linkColorArray\r\n // }\r\n // }];\r\n\r\n // const layout = {\r\n // title: { text: \"Sankey Flow (Plotly with AmCharts-like Colors)\" },\r\n // font: { size: 12 }\r\n // };\r\n\r\n // Plotly.newPlot(this.chartElement.nativeElement, data, layout);\r\n // }\r\n}\r\n","<div class=\"d-flex align-items-center my-5\">\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><span class=\"ms-2 title-head\">Audit Settings</span>\r\n</div>\r\n\r\n\r\n<div class=\"row mt-5\">\r\n <div class=\"col-12\">\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" [destroyOnHide]=\"true\" (show)=\"openItem($event)\">\r\n <div class=\"settings-accordian-card \" ngbAccordionItem [collapsed]=\"false\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading\" ngbAccordionButton >\r\n <div class=\"header-row\">\r\n <span >User Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n \r\n <div class=\"col-12 mb-5\">\r\n <div *ngIf=\"!editMode\" class=\" d-flex justify-content-end\">\r\n <button\r\n (click)=\"toggleEdit()\" \r\n type=\"button\" class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2579_25125)\">\r\n <path\r\n d=\"M14.167 2.49993C14.3859 2.28106 14.6457 2.10744 14.9317 1.98899C15.2176 1.87054 15.5241 1.80957 15.8337 1.80957C16.1432 1.80957 16.4497 1.87054 16.7357 1.98899C17.0216 2.10744 17.2815 2.28106 17.5003 2.49993C17.7192 2.7188 17.8928 2.97863 18.0113 3.2646C18.1297 3.55057 18.1907 3.85706 18.1907 4.16659C18.1907 4.47612 18.1297 4.78262 18.0113 5.06859C17.8928 5.35455 17.7192 5.61439 17.5003 5.83326L6.25033 17.0833L1.66699 18.3333L2.91699 13.7499L14.167 2.49993Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2579_25125\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Details</button>\r\n </div>\r\n </div> \r\n\r\n <div class=\"w-80\">\r\n <label class=\"my-2 form-label fs-4 fw-bold\">Assign Audit Users</label>\r\n <div *ngIf=\"editMode; else readonlyView\">\r\n <lib-chip-dropdown\r\n [data]=\"userConfigList\"\r\n [selectedData]=\"configData\"\r\n (selectedList)=\"updateOwner($event)\">\r\n </lib-chip-dropdown>\r\n</div>\r\n\r\n<ng-template #readonlyView>\r\n<div class=\"flex flex-wrap gap-2 border-2 border-gray-300 p-3 rounded\">\r\n <ng-container *ngFor=\"let chip of configData\">\r\n <span class=\"p-1 rounded-5 chip px-2 my-3 py-1 bg-gray-200\">\r\n {{ chip?.name || chip }}\r\n </span>\r\n </ng-container>\r\n</div>\r\n\r\n</ng-template>\r\n \r\n </div>\r\n\r\n <div class=\"mt-3 text-end\" *ngIf=\"editMode\">\r\n <button class=\"btn btn-outline me-2\" (click)=\"cancelEdit()\">Cancel</button>\r\n <button class=\"btn btn-primary\" (click)=\"submitOwners()\">Save</button>\r\n</div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"settings-accordian-card mt-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span>Email Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <div class=\"col-12 mb-5\">\r\n <div *ngIf=\"editMode1\" class=\" d-flex justify-content-end\">\r\n <button (click)=\"toggleEdit1();\" type=\"button\" class=\"btn btn-outline align-items-end\"><span\r\n class=\"me-2\"><svg 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_2579_25125)\">\r\n <path\r\n d=\"M14.167 2.49993C14.3859 2.28106 14.6457 2.10744 14.9317 1.98899C15.2176 1.87054 15.5241 1.80957 15.8337 1.80957C16.1432 1.80957 16.4497 1.87054 16.7357 1.98899C17.0216 2.10744 17.2815 2.28106 17.5003 2.49993C17.7192 2.7188 17.8928 2.97863 18.0113 3.2646C18.1297 3.55057 18.1907 3.85706 18.1907 4.16659C18.1907 4.47612 18.1297 4.78262 18.0113 5.06859C17.8928 5.35455 17.7192 5.61439 17.5003 5.83326L6.25033 17.0833L1.66699 18.3333L2.91699 13.7499L14.167 2.49993Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2579_25125\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Details</button>\r\n </div>\r\n </div>\r\n <div class=\"fw-semibold mb-3\">\r\n Compliance Threshold\r\n </div>\r\n <form [formGroup]=\"complianceForm\">\r\n \r\n <div class=\"row\">\r\n <div class=\"col-lg-2\">\r\n <lib-reactive-select formControlName=\"threshold\" [data]=\"complianceThresholds\"\r\n [idField]=\"'value'\" [nameField]=\"'label'\"></lib-reactive-select>\r\n </div>\r\n <div class=\"col-lg-2\">\r\n <lib-reactive-select formControlName=\"percentage\" [data]=\"compliancePercentage\"\r\n [idField]=\"'value'\" [nameField]=\"'label'\"></lib-reactive-select>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!editMode1\" class=\"mt-3 text-end\">\r\n <button type=\"button\" class=\"btn btn-outline me-2\" (click)=\"cancelCompliance()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary \" (click)=\"submitCompliance()\">Save</button>\r\n </div>\r\n </form>\r\n <div class=\"my-3\">\r\n <span class=\"fw-semibold me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_762_15430)\">\r\n <path\r\n d=\"M8.00004 10.6663V7.99967M8.00004 5.33301H8.00671M14.6667 7.99967C14.6667 11.6816 11.6819 14.6663 8.00004 14.6663C4.31814 14.6663 1.33337 11.6816 1.33337 7.99967C1.33337 4.31778 4.31814 1.33301 8.00004 1.33301C11.6819 1.33301 14.6667 4.31778 14.6667 7.99967Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_762_15430\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n Email will be automatically sent if the compliance doesn’t meet the\r\n <span class=\"fw-bold\">{{complianceForm.value?.percentage}}</span> to the given Email IDs above.\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"settings-accordian-card mt-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Email Logs</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <div class=\"d-flex justify-content-end align-items-center mb-10\">\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 <div class=\"d-flex align-items-center\">\r\n <div class=\"d-flex align-items-center position-relative me-2\">\r\n <input class=\"fx-date-range form-control ps-14\" style=\"min-width: 260px !important;\" type=\"text\" matInput ngxDaterangepickerMd\r\n [drops]=\"'down'\" [opens]=\"'right'\" [ranges]=\"ranges\" [showCustomRangeLabel]=\"true\"\r\n [alwaysShowCalendars]=\"false\" [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"true\"\r\n autocomplete=\"off\" [(ngModel)]=\"selectedDateRange\" [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 (datesUpdated)=\"datechange($event)\" name=\"daterange\" />\r\n <span 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\" 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\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n <!-- <lib-filters [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters> -->\r\n <div class=\"position-relative\">\r\n <!-- Trigger Button -->\r\n <button type=\"button\" (click)=\"opendropdown()\" class=\"btn btn-outline mx-2 rounded-3 text-nowrap border-val\">\r\n <span class=\"me-2\">Filter</span> <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M5 10H15M2.5 5H17.5M7.5 15H12.5\" stroke=\"#344054\" stroke-width=\"2\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> \r\n </button>\r\n\r\n <!-- Dropdown -->\r\n <div *ngIf=\"Opendropdown\" class=\"card p-4 dropdown2 position-absolute z-1 end-0\" (clickOutside)=\"closeDropdown()\">\r\n <div class=\"dropdown-title d-flex justify-content-between mb-3\">\r\n <span>Filter Options</span>\r\n \r\n </div>\r\n\r\n <!-- RM Dropdown -->\r\n <div class=\"dropdown-container mb-3\">\r\n <div class=\"position-relative dropdown-header\" (click)=\"toggleRmDropdown()\">\r\n <input type=\"text\" class=\"form-control dropdown-input cursor-pointer\"\r\n [value]=\"selectedRmsLabel()\" readonly placeholder=\"Select RMs\" />\r\n <span \r\n *ngIf=\"getSelectedRmsCount() > 0\" \r\n class=\"position-absolute top-50 end-0 translate-middle-y me-2 badge badge-light-default text-white text-xs rounded-full px-2 py-0.5\">\r\n +{{ getSelectedRmsCount() }}\r\n </span>\r\n </div>\r\n\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"rmOpen\">\r\n <input type=\"text\" class=\"form-control mb-2 dropdown-search\" placeholder=\"Search RMs\"\r\n [(ngModel)]=\"searchRmText\" (ngModelChange)=\"filterRms()\" />\r\n\r\n <div class=\"form-check ps-0 my-5\">\r\n <input class=\"form-check-input\" type=\"checkbox\" id=\"selectAllRms\" [checked]=\"isAllRmsSelected()\"\r\n (change)=\"toggleSelectAllRms($event)\" />\r\n <label class=\"form-check-label\" for=\"selectAllRms\">Select All</label>\r\n </div>\r\n\r\n <div class=\"form-check mb-5 ps-0\" *ngFor=\"let rm of filteredRms\">\r\n <input class=\"form-check-input\" type=\"checkbox\" [id]=\"rm.email\" [(ngModel)]=\"rm.checked\"\r\n (change)=\"updateSelectedRms()\" />\r\n <label class=\"form-check-label\" [for]=\"rm.email\">{{ rm.userName }}</label>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Cluster Dropdown -->\r\n <div class=\"dropdown-container\">\r\n <div class=\"dropdown-header position-relative\" (click)=\"toggleClusterDropdown()\">\r\n <input type=\"text\"\r\n class=\"form-control dropdown-input cursor-pointer pe-5\"\r\n [value]=\"selectedClustersLabel()\"\r\n readonly\r\n placeholder=\"Select Clusters\" />\r\n\r\n <!-- Badge inside input -->\r\n <span *ngIf=\"getSelectedClustersCount() > 0\"\r\n class=\"position-absolute top-50 end-0 translate-middle-y me-2 badge badge badge-light-default text-white rounded-pill px-2 py-0\">\r\n +{{ getSelectedClustersCount() }}\r\n </span>\r\n </div>\r\n\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"clusterOpen\">\r\n <input type=\"text\" class=\"form-control mb-2 dropdown-search\"\r\n placeholder=\"Search clusters\"\r\n [(ngModel)]=\"searchClusterText\"\r\n (ngModelChange)=\"filterClusters()\" />\r\n\r\n <div class=\"form-check ps-0 my-5\">\r\n <input class=\"form-check-input\"\r\n type=\"checkbox\"\r\n id=\"selectAllClusters\"\r\n [checked]=\"isAllClustersSelected()\"\r\n (change)=\"toggleSelectAllClusters($event)\" />\r\n <label class=\"form-check-label\" for=\"selectAllClusters\">Select All</label>\r\n </div>\r\n\r\n <div class=\"form-check mb-5 ps-0\" *ngFor=\"let cluster of filteredClusters\">\r\n <input class=\"form-check-input\"\r\n type=\"checkbox\"\r\n [id]=\"cluster._id\"\r\n [(ngModel)]=\"cluster.checked\"\r\n (change)=\"updateSelectedClusters()\" />\r\n <label class=\"form-check-label\" [for]=\"cluster._id\">{{ cluster.clusterName }}</label>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n <div class=\"d-flex gap-2 mt-3\">\r\n <button class=\"btn btn-outline btn-sm w-50\" (click)=\"Reset()\">Reset</button>\r\n <button class=\"btn btn-primary btn-sm w-50\" (click)=\"Apply()\">Apply</button>\r\n </div>\r\n </div>\r\n \r\n</div>\r\n\r\n <button type=\"button\" (click)=\"exportXLSX()\" *ngIf=\"!noData && !loading\"\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 </div>\r\n </div>\r\n </div>\r\n \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=\"table-responsive\">\r\n <table class=\"table table-borderless table-hover\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-nowrap\"> <span class=\"cursor-pointer\" (click)=\"onSort('rmName')\"> RM Name <svg\r\n [ngClass]=\"sortedColumn === 'rmName' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'rmName' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th class=\"text-nowrap\"><span class=\"cursor-pointer\" (click)=\"onSort('clusterName')\"> Cluster Name <svg\r\n [ngClass]=\"sortedColumn === 'clusterName' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'clusterName' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th class=\"text-nowrap\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('optumId')\"> Optum ID <svg\r\n [ngClass]=\"sortedColumn === 'optumId' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'optumId' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-nowrap\"><span class=\"cursor-pointer\" (click)=\"onSort('storeName')\"> Store Name <svg\r\n [ngClass]=\"sortedColumn === 'storeName' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path 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'\" stroke-width=\"1.33333\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th class=\"text-nowrap\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('tangoScore')\"> Tango Score <svg\r\n [ngClass]=\"sortedColumn === 'tangoScore' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'tangoScore' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-nowrap\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('trustScore')\"> Trust Score <svg\r\n [ngClass]=\"sortedColumn === 'trustScore' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path 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'\" stroke-width=\"1.33333\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-nowrap\">Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of tableData\">\r\n <td class=\"text-nowrap\">{{item.RMEmail}}</td>\r\n <td class=\"text-nowrap\">{{item.cluster}}</td>\r\n <td class=\"text-nowrap\">{{item.optumId}}</td>\r\n <td class=\"text-nowrap\">{{item.storeName}}</td>\r\n <td class=\"text-nowrap\">{{item.tangoScore ?? \"--\" }}</td>\r\n <td class=\"text-nowrap\">{{item.trustScore}}</td>\r\n <td class=\"text-nowrap\">\r\n <button type=\"button\" [disabled]=\"!item.auditedId\" (click)=\"eyeTestView(item)\" class=\"btn btn-link p-0 m-0 border-0 bg-transparent\">\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=\"M0.833252 9.99967C0.833252 9.99967 4.16658 3.33301 9.99992 3.33301C15.8333 3.33301 19.1666 9.99967 19.1666 9.99967C19.1666 9.99967 15.8333 16.6663 9.99992 16.6663C4.16658 16.6663 0.833252 9.99967 0.833252 9.99967Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M9.99992 12.4997C11.3806 12.4997 12.4999 11.3804 12.4999 9.99967C12.4999 8.61896 11.3806 7.49967 9.99992 7.49967C8.61921 7.49967 7.49992 8.61896 7.49992 9.99967C7.49992 11.3804 8.61921 12.4997 9.99992 12.4997Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n</button>\r\n </td>\r\n </tbody>\r\n </table>\r\n <div class=\"card-footer\" *ngIf=\"!noData && !loading\"> \r\n <lib-pagination [itemsPerPage]=\"pageSize\" [currentPage]=\"offset\" [totalItems]=\"totalItems\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\" (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination> </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n","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\nimport { SettingsAuditComponent } from './settings-audit/settings-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 path: 'settings',\r\n component: SettingsAuditComponent\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 { NgbAccordionModule, NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { SettingsAuditComponent } from './settings-audit/settings-audit.component';\r\nimport { ChipDropdownComponent } from '../chip-dropdown/chip-dropdown.component';\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 SettingsAuditComponent,\r\n ChipDropdownComponent,\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 NgbAccordionModule,\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","i1.TraxService","i4","i5.EyeTestAuditService","i10.ChipDropdownComponent"],"mappings":"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"}
|