{"version":3,"file":"tango-app-ui-analyse-traffic.mjs","sources":["../../../projects/tango-analyse-traffic/src/lib/components/video-url/video-url.component.ts","../../../projects/tango-analyse-traffic/src/lib/components/video-url/video-url.component.html","../../../projects/tango-analyse-traffic/src/lib/services/excel.service.ts","../../../projects/tango-analyse-traffic/src/lib/services/traffic.service.ts","../../../projects/tango-analyse-traffic/src/lib/components/image-doc-view/image-doc-view.component.ts","../../../projects/tango-analyse-traffic/src/lib/components/image-doc-view/image-doc-view.component.html","../../../projects/tango-analyse-traffic/src/lib/components/duplicate/duplicate.component.ts","../../../projects/tango-analyse-traffic/src/lib/components/duplicate/duplicate.component.html","../../../projects/tango-analyse-traffic/src/lib/services/traffic-rvps.service.ts","../../../projects/tango-analyse-traffic/src/lib/components/reactive-select/reactive-select.component.ts","../../../projects/tango-analyse-traffic/src/lib/components/reactive-select/reactive-select.component.html","../../../projects/tango-analyse-traffic/src/lib/directive/magnifier.directive.ts","../../../projects/tango-analyse-traffic/src/lib/components/image-doc/image-doc.component.ts","../../../projects/tango-analyse-traffic/src/lib/components/image-doc/image-doc.component.html","../../../projects/tango-analyse-traffic/src/lib/components/img-rvps/img-rvps.component.ts","../../../projects/tango-analyse-traffic/src/lib/components/img-rvps/img-rvps.component.html","../../../projects/tango-analyse-traffic/src/lib/components/traffic-analysis/traffic-analysis.component.ts","../../../projects/tango-analyse-traffic/src/lib/components/traffic-analysis/traffic-analysis.component.html","../../../projects/tango-analyse-traffic/src/lib/components/tango-analyse-traffic/tango-analyse-traffic.component.ts","../../../projects/tango-analyse-traffic/src/lib/components/tango-analyse-traffic/tango-analyse-traffic.component.html","../../../projects/tango-analyse-traffic/src/lib/components/explore-view/explore-view.component.ts","../../../projects/tango-analyse-traffic/src/lib/components/explore-view/explore-view.component.html","../../../projects/tango-analyse-traffic/src/lib/components/custom-select/custom-select.component.ts","../../../projects/tango-analyse-traffic/src/lib/components/custom-select/custom-select.component.html","../../../projects/tango-analyse-traffic/src/lib/components/add-nob/add-nob.component.ts","../../../projects/tango-analyse-traffic/src/lib/components/add-nob/add-nob.component.html","../../../projects/tango-analyse-traffic/src/lib/components/nob-upload/nob-upload.component.ts","../../../projects/tango-analyse-traffic/src/lib/components/nob-upload/nob-upload.component.html","../../../projects/tango-analyse-traffic/src/lib/tango-analyse-traffic-routing.module.ts","../../../projects/tango-analyse-traffic/src/lib/components/traffic-charts/traffic-charts.component.ts","../../../projects/tango-analyse-traffic/src/lib/components/traffic-charts/traffic-charts.component.html","../../../projects/tango-analyse-traffic/src/lib/components/traffic-card-charts/traffic-card-charts.component.ts","../../../projects/tango-analyse-traffic/src/lib/components/traffic-card-charts/traffic-card-charts.component.html","../../../projects/tango-analyse-traffic/src/lib/components/chart-detail-modal/chart-detail-modal.component.ts","../../../projects/tango-analyse-traffic/src/lib/components/chart-detail-modal/chart-detail-modal.component.html","../../../projects/tango-analyse-traffic/src/lib/tango-analyse-traffic.module.ts","../../../projects/tango-analyse-traffic/src/public-api.ts","../../../projects/tango-analyse-traffic/src/tango-app-ui-analyse-traffic.ts"],"sourcesContent":["import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'lib-video-url',\r\n  templateUrl: './video-url.component.html',\r\n  styleUrl: './video-url.component.scss'\r\n})\r\nexport class VideoUrlComponent implements OnInit {\r\n@Input() videoUrl:any;\r\n@Input() date:any;\r\nvideoURL: any;\r\n\r\nconstructor(){\r\n\r\n}\r\nngOnInit(): void {\r\nthis.videoURL = this.videoUrl?.videoURL;\r\n\r\n}\r\n\r\n}\r\n","<div class=\"card\">\r\n    <div class=\"card-header border-0 pt-3 ps-5 pe-0\">\r\n        <h3 class=\"card-title align-items-start flex-column\">\r\n            <span class=\"title-text\">Recap Video \r\n               \r\n           \r\n            </span>\r\n          \r\n            <span class=\"text-sub mt-1\">Dated: {{date | date:' dd MMM,yyyy'}}</span>\r\n        </h3>\r\n        <div class=\"card-toolbar mt-0\">\r\n        </div>\r\n\r\n    </div>\r\n    <div class=\"card-body p-0\">\r\n        <div class=\"row mx-3\">\r\n\r\n<video controls autoplay class=\"recap-img p-3\" [src]=\"videoURL\">\r\n</video>\r\n</div>\r\n</div>\r\n</div>\r\n","import { Injectable } from '@angular/core';\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\n\r\n@Injectable({providedIn: 'root' })\r\nexport class ExcelService {\r\n\r\n  constructor() { }\r\n\r\n  public exportAsExcelFile(json: any[], excelFileName: string): void {\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    this.saveAsExcelFile1(excelBuffer, excelFileName)\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  \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\npublic saveAsExcelFile1(buffer: any, fileName: string): void {\r\n\r\n  // 1️⃣ Read existing Excel buffer\r\n  const workbook = XLSX.read(buffer, { type: 'array' });\r\n\r\n  // 2️⃣ Get first sheet\r\n  const oldSheetName = workbook.SheetNames[0];\r\n  const worksheet = workbook.Sheets[oldSheetName];\r\n\r\n  // 3️⃣ Set plain text in B2 with LIGHT GREY color\r\n  worksheet['B2'] = {\r\n    t: 's',\r\n    v: 'dd/mm/yyyy',\r\n    s: {\r\n      font: {\r\n        color: { rgb: 'BFBFBF' }, // ✅ light grey\r\n        italic: true\r\n      }\r\n    }\r\n  };\r\n\r\n  // 4️⃣ Rename worksheet to \"NOB\"\r\n  delete workbook.Sheets[oldSheetName];\r\n  workbook.Sheets['NOB'] = worksheet;\r\n  workbook.SheetNames[0] = 'NOB';\r\n\r\n  // 5️⃣ Write back to buffer\r\n  const updatedBuffer = XLSX.write(workbook, {\r\n    bookType: 'xlsx',\r\n    type: 'array',\r\n    cellStyles: true\r\n  });\r\n\r\n  // 6️⃣ Download\r\n  const blob = new Blob([updatedBuffer], { type: EXCEL_TYPE });\r\n  FileSaver.saveAs(blob, `${fileName}${EXCEL_EXTENSION}`);\r\n}\r\n\r\n\r\n\r\n\r\n}","import { HttpClient, HttpHeaders } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { GlobalStateService } from \"tango-app-ui-global\";\r\nimport { Observable } from \"rxjs\";\r\nimport { BehaviorSubject } from 'rxjs';\r\n@Injectable({\r\n  providedIn: \"root\",\r\n})\r\nexport class TrafficService {\r\n  trafficApiUrl: any;\r\n  private isAverageSource = new BehaviorSubject<boolean>(false);\r\n  isAverage$ = this.isAverageSource.asObservable();\r\n  private isnobSource = new BehaviorSubject<boolean>(false);\r\n  isnob$ = this.isnobSource.asObservable();\r\n  oldDashboardUrl:any;\r\n  clientNOBBillingUrl:any;\r\n  dropDownTrigger = new BehaviorSubject<any>(null)\r\n  isnormalizeSource = new BehaviorSubject<any>(null)\r\n  toggleAverage(isAverage: boolean) {\r\n    this.isAverageSource.next(isAverage);\r\n  }\r\n  toggleAverageFootfall(isAverage: boolean) {\r\n    this.isAverageSource.next(isAverage);\r\n  }\r\n  togglenob(isnob: boolean) {\r\n    this.isnobSource.next(isnob);\r\n  }\r\n  togglenormalize(isnormalize: boolean) {\r\n    this.isnormalizeSource.next(isnormalize);\r\n  }\r\n  clientAPIData:any;\r\n  nobApiUrl:any;\r\n  clientApiUrl:any;\r\n  revopApiUrl:any\r\n  middlewareApiUrl:any;\r\n  storeApiUrl:any\r\n  mapKeyUrl:any;\r\n  constructor(private http: HttpClient, private gs: GlobalStateService) {\r\n    this.gs.environment.subscribe((env) => {\r\n      if (env) {\r\n        this.trafficApiUrl = env.trafficApiUrl;\r\n        this.oldDashboardUrl =env.oldDashboardUrl;\r\n        this.clientNOBBillingUrl = env.nobBillingApiUrl;\r\n        this.nobApiUrl =env.nobApiUrl;\r\n        this.clientApiUrl = env.clientApiUrl;\r\n        this.revopApiUrl = env.revopApiUrl;\r\n        this.storeApiUrl =env.storeApiUrl\r\n        this.middlewareApiUrl = env.middlewareApiUrl;\r\n        this.mapKeyUrl = env.mapKeyUrl;\r\n      }\r\n    });\r\n    \r\n  }\r\n\r\n  getCardList(params: any): Observable<any> {\r\n    return this.http.post<any>(`${this.trafficApiUrl}/cardsFunnel_v3`, params);\r\n  }\r\n\r\n  getCardGraphList(params: any): Observable<any> {\r\n    return this.http.post<any>(`${this.trafficApiUrl}/cardsGraphs_v3`, params);\r\n  }\r\n\r\n  getSummaryTableList(params: any): Observable<any> {\r\n    return this.http.post<any>(`${this.trafficApiUrl}/summaryTable_v3`, params);\r\n  }\r\n\r\n  getSummaryTableListExport(params: any): Observable<ArrayBuffer> {\r\n    return this.http.post<ArrayBuffer>(`${this.trafficApiUrl}/summaryTable_v3`, params, {\r\n      responseType: 'arraybuffer' as 'json'  // Explicitly cast to 'json'\r\n    });\r\n  }\r\n\r\n  getOverallCards(params: any): Observable<any> {\r\n    return this.http.post<any>(`${this.trafficApiUrl}/overallCards_v3`, params);\r\n  }\r\n\r\n  getOverallHourlyChart(params: any): Observable<any> {\r\n    return this.http.post<any>(\r\n      `${this.trafficApiUrl}/overallHourlyChart_v3`,\r\n      params\r\n    );\r\n  }\r\n\r\n  getOverallChart(params: any): Observable<any> {\r\n    return this.http.post<any>(`${this.trafficApiUrl}/overallChart_v3`, params);\r\n  }\r\n\r\n  getSingleStoreChart(params: any): Observable<any> {\r\n    return this.http.post<any>(\r\n      `${this.trafficApiUrl}/singleStoreChart_v3`,\r\n      params\r\n    );\r\n  }\r\n\r\n  getDemoGraphicsChart(params: any): Observable<any> {\r\n    return this.http.post<any>(\r\n      `${this.trafficApiUrl}/demographicChart_v3`,\r\n      params\r\n    );\r\n  }\r\n\r\n  getBuyersChart(params: any): Observable<any> {\r\n    return this.http.post<any>(`${this.trafficApiUrl}/buyerChart_v3`, params);\r\n  }\r\n\r\n  getFootfallDirectoryFolders(params: any): Observable<any> {\r\n    return this.http.post<any>(\r\n      `${this.trafficApiUrl}/footfallDirectoryFolders_v3`,\r\n      params\r\n    );\r\n  }\r\n  submitRevopTagging(params: any): Observable<any> {\r\n    return this.http.post<any>(\r\n      `${this.revopApiUrl}/tagging`,\r\n      params\r\n    );\r\n  }\r\n  revoptaggingcount(params: any): Observable<any> {\r\n    return this.http.post<any>(\r\n      `${this.revopApiUrl}/revoptaggingcount`,\r\n      params\r\n    );\r\n  }\r\n  getrevoptagging(params: any): Observable<any> {\r\n    return this.http.post<any>(\r\n      `${this.revopApiUrl}/getrevoptagging`,\r\n      params\r\n    );\r\n  }\r\n  getrevopconfig(clientId: any): Observable<any> {\r\n    return this.http.get<any>(\r\n      `${this.revopApiUrl}/getconfig?clientId=${clientId}`,\r\n    );\r\n  }\r\n  getAllCountries(): Observable<any> {\r\n    return this.http.get(`${this.middlewareApiUrl}/get-countries`);\r\n  }\r\n\r\n  getFootfallDirectory(params: any): Observable<any> {\r\n    return this.http.post<any>(\r\n      `${this.trafficApiUrl}/footfallDirectory_v3`,\r\n      params\r\n    );\r\n  }\r\n\r\n  getfootfallTrend(params: any): Observable<any> {\r\n    return this.http.post<any>(`${this.trafficApiUrl}/footfallTrend_v3`, params);\r\n  }\r\n\r\n  getRecapVideo(params: any): Observable<any> {\r\n    return this.http.post<any>(`${this.trafficApiUrl}/recapVideo_v3`, params);\r\n  }\r\n\r\n  getDensityDwell(params: any): Observable<any> {\r\n    return this.http.post<any>(`${this.trafficApiUrl}/densityDwell_v3`, params);\r\n  }\r\n\r\n  getTrafficDensityDwell(params: any): Observable<any> {\r\n    return this.http.post<any>(`${this.trafficApiUrl}/trafficDensityDwell_v3`, params);\r\n  }\r\n\r\n  geMaps(params: any): Observable<any> {\r\n    return this.http.post<any>(`${this.trafficApiUrl}/storesMap_v1`, params);\r\n  }\r\n  performanceMatrix(params: any): Observable<any> {\r\n    return this.http.post<any>(`${this.trafficApiUrl}/performanceMatrix_v3`, params);\r\n  }\r\n  zoneDwellTime(params: any): Observable<any> {\r\n    return this.http.post<any>(`${this.trafficApiUrl}/zoneDwellTimeSplit_v3`, params);\r\n  }\r\n  storeOperation(params: any): Observable<any> {\r\n    return this.http.post<any>(`${this.trafficApiUrl}/storeOperation_v3`, params);\r\n  }\r\n\r\n  getStoresActive(params: any): Observable<any> {\r\n    return this.http.post<any>(`${this.trafficApiUrl}/getMySubscription`, params);\r\n  }\r\n  getStoreCameraImage(params: any): Observable<any> {\r\n    return this.http.post<any>(`${this.trafficApiUrl}/getStoreCameraImage`, params);\r\n  }\r\n\r\n  getStoreMapData(params: any): Observable<any> {\r\n    return this.http.post<any>(`${this.trafficApiUrl}/getStoreMapData`, params);\r\n  }\r\n  getOldDashboardRedirect(data:any){\r\n    return this.http.post(`${this.oldDashboardUrl}/auth/oldDashboardUserLogin`,data)\r\n  }\r\n  getFunnelCards(params: any): Observable<any> {\r\n    return this.http.post<any>(`${this.trafficApiUrl}/funnel_V3`, params);\r\n  }\r\n\r\n  getNobAPIData(data:any) {\r\n    const clientAPIData:any = JSON.parse(localStorage.getItem(\"clientAPI-details\") || \"{}\");\r\n    this.clientAPIData = clientAPIData\r\n    const headers = new HttpHeaders({\r\n      'x-api-key': this.clientAPIData.apiKey, \r\n    });\r\n\r\n    return this.http.post<any>(`${this.clientNOBBillingUrl}`,data,{ headers });\r\n  }\r\n\r\n  getNOBStoreList(client: any): Observable<any> {\r\n    return this.http.get<any>(`${this.nobApiUrl}/store-list?clientId=${client}`);\r\n  }\r\n\r\n  getNOBDataList(data: any): Observable<any> {\r\n    return this.http.post<any>(`${this.nobApiUrl}/add-bills`,data);\r\n  }\r\n\r\n  getNOBData(data: any): Observable<any> {\r\n    return this.http.post<any>(`${this.nobApiUrl}/get-nob-data`,data);\r\n  }\r\n\r\n  getNOBDataExport(data: any): Observable<ArrayBuffer> {\r\n    return this.http.post<any>(`${this.nobApiUrl}/get-nob-data`,data,{\r\n      responseType: 'arraybuffer' as 'json'  \r\n    });\r\n  }\r\n\r\n  getBrandDetails(id: any) {\r\n    return this.http.get(`${this.clientApiUrl}/client-details/${id}`)\r\n  }\r\n\r\n  getFootdfallCardList(params: any): Observable<any> {\r\n    return this.http.post<any>(`${this.trafficApiUrl}/footfallCards_v3`, params);\r\n  }\r\n\r\n  getConversionCardList(params: any): Observable<any> {\r\n    return this.http.post<any>(`${this.trafficApiUrl}/conversionCards_v3`, params);\r\n  }\r\n\r\n  getBouncedCardList(params: any): Observable<any> {\r\n    return this.http.post<any>(`${this.trafficApiUrl}/bouncedCards_v3`, params);\r\n  }\r\n\r\n  getEngagersCardList(params: any): Observable<any> {\r\n    return this.http.post<any>(`${this.trafficApiUrl}/engagersCards_v3`, params);\r\n  }\r\n\r\n  getMissedOpportunityCardList(params: any): Observable<any> {\r\n    return this.http.post<any>(`${this.trafficApiUrl}/missedOpportunityCards_v3`, params);\r\n  }\r\n\r\n  getPotentialBuyersCardList(params: any): Observable<any> {\r\n    return this.http.post<any>(`${this.trafficApiUrl}/potentialBuyersCards_v3`, params);\r\n  }\r\n  getPotentialBuyersDistributionCardList(params: any): Observable<any> {\r\n    return this.http.post<any>(`${this.trafficApiUrl}/potentialBuyersDistributionCards_v3`, params);\r\n  }\r\n  getCheckTodayReportStatus(params: any): Observable<any> {\r\n    return this.http.post<any>(`${this.trafficApiUrl}/checkTodayReportStatus`, params);\r\n  }\r\n  getStoreFootfall(id: any) {\r\n    return this.http.get(`${this.storeApiUrl}/tracking-status?storeId=${id}`)\r\n  }\r\n\r\n  \r\n getTrafficDensityExport(params: any): Observable<ArrayBuffer> {\r\n    return this.http.post<ArrayBuffer>(`${this.trafficApiUrl}/trafficDensityExport_v2`, params, {\r\n      responseType: 'arraybuffer' as 'json'  // Explicitly cast to 'json'\r\n    });\r\n  }\r\n\r\n  sendVMSResetRequest(payload: any) {\r\n    return this.http.post(`${this.clientApiUrl}/create-store-request`, payload);\r\n  }\r\n\r\n  getZoneList(params: any): Observable<any> {\r\n    return this.http.post<any>(`${this.nobApiUrl}/zonelist`, params);\r\n  }\r\n\r\n  getZoneTemplate(params: any): Observable<ArrayBuffer> {\r\n    return this.http.post<any>(`${this.nobApiUrl}/zonetemplate`, params ,{ responseType: 'arraybuffer' as 'json' });\r\n  }\r\n}\r\n","import { ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subject, takeUntil } from \"rxjs\";\r\nimport { TrafficService } from '../../services/traffic.service';\r\nimport { Router } from '@angular/router';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\n@Component({\r\n  selector: 'lib-image-doc-view',\r\n  templateUrl: './image-doc-view.component.html',\r\n  styleUrl: './image-doc-view.component.scss'\r\n})\r\nexport class ImageDocViewComponent implements OnInit,OnDestroy {\r\n  @Input() Imagedata:any;\r\n  @Input() processType:any;\r\n  @Input() footfallDate:any;\r\n  @Input() storeName:any;\r\n  @Input() storeId:any;\r\n  @Input() headerData:any;\r\n  @Input() imageArray:any;\r\n  @Input() folderName:any;\r\n  @Input() tracker:any;\r\n  Images: any;\r\n  itemsPerPage = 10;\r\n  currentPage = 1;\r\n  totalItems = 1;\r\n  paginationSizes = [1];\r\n  pageSize = 1;\r\n  dataSubscrptionValue: any=[];\r\n  statusValues: any;\r\n  filteredData: any;\r\n  objData: any;\r\n  storeArrayValue: any;\r\n  constructor(private service:TrafficService, private cd: ChangeDetectorRef,private router:Router, public activeModal: NgbActiveModal,){\r\n\r\n  }\r\nngOnInit(): void {\r\n  this.Images = this.Imagedata?.images?.entryTimeImage;\r\n this.filteredData = this.imageArray.filter((item:any) => item.folderName === this.folderName);\r\n this.totalItems = this.filteredData[0].count;\r\n this.tracker = this.tracker\r\n  this.getStoreActive();\r\n}\r\nprivate readonly destroy$ = new Subject();\r\nngOnDestroy(): void {\r\n  this.destroy$.next(true);\r\n  this.destroy$.complete();\r\n}\r\ngetStoreActive(){\r\nlet obj={\r\n    \"clientId\":this.headerData.client,\r\n    \"storeId\": this.storeId\r\n}\r\nthis.service\r\n.getStoresActive(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.dataSubscrptionValue = res.data.storeSubscription.product;\r\n    }\r\n  }\r\n  })\r\n}\r\n\r\nimageData(type:any){\r\n  if(type ==='entry'){\r\n   this.Images = this.Imagedata?.images?.entryTimeImage\r\n  } else if(type === 'exit'){\r\n    this.Images = this.Imagedata?.images?.exitTimeImage\r\n  } else if(type ==='staff') {\r\n    this.Images = this.Imagedata?.images?.staffEngagementImage\r\n  }\r\n\r\n}\r\nstaffExpolore(){\r\n  const url = this.router.serializeUrl(\r\n    this.router.createUrlTree(['/manage/settings/payment-subscription'])\r\n  );\r\n  window.open(url, '_blank');\r\n}\r\n// getImageView() {\r\n//   this.objData = {\r\n//     storeId: this.headerData.stores\r\n//       .filter((store: any) => store.checked)\r\n//       .map((store: any) => store.storeId),\r\n//     clientId: this.headerData.client,\r\n//     processType: this.processType,\r\n//     footfallDate: this.footfallDate,\r\n//     folderName:this.folderName\r\n//   };\r\n//   this.service\r\n//     .getFootfallDirectory(this.objData)\r\n//     .pipe(takeUntil(this.destroy$))\r\n//     ?.subscribe({\r\n//       next: (res: any) => {\r\n//         if (res && res.code === 200) {\r\n//           if(!res?.data.footfallData.length){\r\n//           } else{\r\n//            this.Imagedata = res?.data.footfallData;\r\n//            this.storeArrayValue = res?.data.storeName\r\n         \r\n//           this.cd.detectChanges();\r\n//           }\r\n//         } \r\n//       },\r\n//       error: (err: any) => {\r\n//         this.cd.detectChanges();\r\n//       },\r\n//       complete: () => {},\r\n//     });\r\n// }\r\n// onPageChange(pageOffset: number) {\r\n//   this.currentPage = Number(pageOffset);\r\n// this.getImageView();\r\n// }\r\n\r\n// onPageSizeChange(pageSize: number) {\r\n//   this.pageSize = Number(pageSize);\r\n//   this.getImageView();\r\n// }\r\n\r\ncancel() {\r\n  this.activeModal.close('submit');\r\n}\r\n}\r\n","<div class=\"row h-550px scroll-container w-100\">\r\n    <div class=\"col-md-12 col-lg-8 col-xl-8 col-xxl-8\">\r\n        <div class=\"row mb-3\">\r\n            <div class=\"col-md-7\">\r\n                <h3 class=\"card-title align-items-start flex-column\">\r\n                    <!-- Display footfall count or '--' if not available -->\r\n                    <span class=\"card-label header\">{{storeName}} - {{footfallDate | date:'dd MMM, yyyy'}}</span>\r\n                </h3>\r\n            </div>\r\n            <!-- Switch toggle -->\r\n            <div class=\"col-md-5 text-end\">\r\n                <span class=\"custId\">Customer ID</span>\r\n                <span class=\"badge badge-light-primary mx-2\">{{Imagedata?.tempId}}</span>\r\n                <span class=\"badge badge-light-danger\">{{processType | titlecase}} </span>\r\n\r\n            </div>\r\n        </div>\r\n        <div class=\"row contain\">\r\n            <div class=\"col-12 mb-5\">\r\n                <img class=\"cursor-pointer\" class=\"img-src\" [src]=\"Images\"\r\n                    (error)=\"Images = null\" alt=\"\">\r\n                <div *ngIf=\"!Images\" class=\"no-preview\">\r\n                    <span class=\"mb-5\">\r\n                        <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                            <g id=\"Group\">\r\n                                <path id=\"Vector\" d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\r\n                                    stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                <path id=\"Vector_2\"\r\n                                    d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\r\n                                    stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                            </g>\r\n                        </svg>\r\n\r\n                    </span>\r\n                    <span class=\"header mb-5 text-center\">Preview not available</span>\r\n                    <span class=\"description mb-5 text-center\">The selected camera is not available at the\r\n                        moment.</span>\r\n                </div>\r\n\r\n            </div>\r\n\r\n            <div class=\"row slider\">\r\n\r\n                <ng-container>\r\n                    <div class=\"col-4\" *ngIf=\"Imagedata?.images?.entryTimeImage\">\r\n                        <div class=\"mb-5  border-2\" [ngClass]=\"{\r\n                            'border-gray-active': Images === Imagedata?.images?.entryTimeImage,\r\n                            'border-gray': Images !== Imagedata?.images?.entryTimeImage\r\n                          }\">\r\n                            <div>Entry Time</div>\r\n                            <img class=\"cursor-pointer w-100 rounded-2 mh-100px pb-1\"\r\n                                [src]=\"Imagedata?.images?.entryTimeImage\"\r\n                                (error)=\"Imagedata?.images.entryTimeImage = null\" alt=\"\" (click)=\"imageData('entry')\">\r\n                            <div *ngIf=\"!Imagedata?.images?.entryTimeImage\" class=\"no-preview-sm cursor-pointer\">\r\n                                <span class=\"mb-2\">\r\n                                    <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\r\n                                        xmlns=\"http://www.w3.org/2000/svg\">\r\n                                        <g id=\"Group\">\r\n                                            <path id=\"Vector\"\r\n                                                d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\r\n                                                stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                stroke-linejoin=\"round\" />\r\n                                            <path id=\"Vector_2\"\r\n                                                d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\r\n                                                stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                stroke-linejoin=\"round\" />\r\n                                        </g>\r\n                                    </svg>\r\n\r\n                                </span>\r\n                                <span class=\"header mb-2 text-center\">Preview not available</span>\r\n                                <span class=\"description mb-2 text-center\">The selected camera is not available\r\n                                    at\r\n                                    the\r\n                                    moment.</span>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"col-4\" *ngIf=\"Imagedata?.images?.staffEngagementImage\">\r\n                        <div class=\"mb-5 border-2\" [ngClass]=\"{\r\n                            'border-gray-active': Images === Imagedata?.images?.staffEngagementImage,\r\n                            'border-gray': Images !== Imagedata?.images?.staffEngagementImage\r\n                          }\">\r\n                            <div>Staff Engagement</div>\r\n                            <img class=\"cursor-pointer w-100 rounded-2 mh-100px pb-1\"\r\n                                [src]=\"Imagedata?.images?.staffEngagementImage\"\r\n                                (error)=\"Imagedata?.images.staffEngagementImage = null\" alt=\"\" (click)=\"imageData('staff')\">\r\n                            <div *ngIf=\"!Imagedata?.images?.staffEngagementImage\" class=\"no-preview-sm cursor-pointer\">\r\n                                <span class=\"mb-2\">\r\n                                    <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\r\n                                        xmlns=\"http://www.w3.org/2000/svg\">\r\n                                        <g id=\"Group\">\r\n                                            <path id=\"Vector\"\r\n                                                d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\r\n                                                stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                stroke-linejoin=\"round\" />\r\n                                            <path id=\"Vector_2\"\r\n                                                d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\r\n                                                stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                stroke-linejoin=\"round\" />\r\n                                        </g>\r\n                                    </svg>\r\n\r\n                                </span>\r\n                                <span class=\"header mb-2 text-center\">Preview not available</span>\r\n                                <span class=\"description mb-2 text-center\">The selected camera is not available\r\n                                    at\r\n                                    the\r\n                                    moment.</span>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    <div  class=\"col-4 \" *ngIf=\"Imagedata?.images?.exitTimeImage && tracker !=='tracking-enabled'\">\r\n                        <div class=\"mb-5  border-2\" [ngClass]=\"{\r\n                            'border-gray-active': Images === Imagedata?.images?.exitTimeImage,\r\n                            'border-gray': Images !== Imagedata?.images?.exitTimeImage\r\n                          }\">\r\n                            <div>Exit Time</div>\r\n                            <img class=\"cursor-pointer w-100 rounded-2 mh-100px pb-1\"\r\n                                [src]=\"Imagedata?.images?.exitTimeImage\"\r\n                                (error)=\"Imagedata?.images.exitTimeImage = null\" alt=\"\" (click)=\"imageData('exit')\">\r\n                            <div *ngIf=\"!Imagedata?.images?.exitTimeImage\" class=\"no-preview-sm cursor-pointer\">\r\n                                <span class=\"mb-2\">\r\n                                    <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\r\n                                        xmlns=\"http://www.w3.org/2000/svg\">\r\n                                        <g id=\"Group\">\r\n                                            <path id=\"Vector\"\r\n                                                d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\r\n                                                stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                stroke-linejoin=\"round\" />\r\n                                            <path id=\"Vector_2\"\r\n                                                d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\r\n                                                stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                stroke-linejoin=\"round\" />\r\n                                        </g>\r\n                                    </svg>\r\n\r\n                                </span>\r\n                                <span class=\"header mb-2 text-center\">Preview not available</span>\r\n                                <span class=\"description mb-2 text-center\">The selected camera is not available\r\n                                    at\r\n                                    the\r\n                                    moment.</span>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </ng-container>\r\n                <!-- <span  (click)=\"next()\" class=\"next\">\r\n                        <span>\r\n                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"7\" height=\"12\" viewBox=\"0 0 7 12\"\r\n                                fill=\"none\">\r\n                                <path d=\"M1 11L6 6L1 1\" stroke=\"#009BF3\" stroke-width=\"1.67\"\r\n                                    stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                            </svg>\r\n                        </span>\r\n\r\n                    </span> -->\r\n            </div>\r\n\r\n\r\n        </div>\r\n\r\n        <!-- <lib-pagination [itemsPerPage]=\"pageSize\" [currentPage]=\"currentPage\" [totalItems]=\"totalItems\"\r\n        [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\" (pageChange)=\"onPageChange($event)\"\r\n        (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination> -->\r\n    </div>\r\n    <div class=\"col-md-12 col-lg-4 col-xl-4 col-xxl-4\">\r\n        <div *ngIf=\"dataSubscrptionValue.tangoTraffic\" class=\"row\">\r\n            <div class=\"col-12 mb-5 cam-details-header px-0\">Time Spent</div>\r\n            <div class=\"row px-2 mb-2\">\r\n                <div class=\"col-md-8\">\r\n\r\n                    <div class=\"py-2 img-doc-time text-primary text-decoration-underline fw-bold cursor-pointer\" (click)=\"imageData('entry')\">Entry Time <span\r\n                            class=\"ms-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n                                viewBox=\"0 0 16 16\" fill=\"none\">\r\n                                <path\r\n                                    d=\"M3.33333 14H12.6667C13.403 14 14 13.403 14 12.6667V3.33333C14 2.59695 13.403 2 12.6667 2H3.33333C2.59695 2 2 2.59695 2 3.33333V12.6667C2 13.403 2.59695 14 3.33333 14ZM3.33333 14L10.6667 6.66667L14 10M6.66667 5.66667C6.66667 6.21895 6.21895 6.66667 5.66667 6.66667C5.11438 6.66667 4.66667 6.21895 4.66667 5.66667C4.66667 5.11438 5.11438 4.66667 5.66667 4.66667C6.21895 4.66667 6.66667 5.11438 6.66667 5.66667Z\"\r\n                                    stroke=\"#667085\" stroke-width=\"1.2\" stroke-linecap=\"round\"\r\n                                    stroke-linejoin=\"round\" />\r\n                            </svg></span></div>\r\n                    <div *ngIf=\"tracker !=='tracking-enabled'\" class=\"py-2 img-doc-time text-primary text-decoration-underline fw-bold cursor-pointer\" (click)=\"imageData('exit')\">Exit Time<span\r\n                            class=\"ms-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n                                viewBox=\"0 0 16 16\" fill=\"none\">\r\n                                <path\r\n                                    d=\"M3.33333 14H12.6667C13.403 14 14 13.403 14 12.6667V3.33333C14 2.59695 13.403 2 12.6667 2H3.33333C2.59695 2 2 2.59695 2 3.33333V12.6667C2 13.403 2.59695 14 3.33333 14ZM3.33333 14L10.6667 6.66667L14 10M6.66667 5.66667C6.66667 6.21895 6.21895 6.66667 5.66667 6.66667C5.11438 6.66667 4.66667 6.21895 4.66667 5.66667C4.66667 5.11438 5.11438 4.66667 5.66667 4.66667C6.21895 4.66667 6.66667 5.11438 6.66667 5.66667Z\"\r\n                                    stroke=\"#667085\" stroke-width=\"1.2\" stroke-linecap=\"round\"\r\n                                    stroke-linejoin=\"round\" />\r\n                            </svg></span></div>\r\n                    <div *ngIf=\"tracker !=='tracking-enabled'\" class=\"py-2 img-doc-time\">Total Time Spent</div>\r\n                    <!-- <div class=\"py-2 img-doc-time\">Avg Dwell Time</div> -->\r\n                </div>\r\n                <div class=\"col-md-4 text-end\">\r\n\r\n                    <div class=\"py-2 img-doc-value\">{{Imagedata.timeSpent.entryTime ?? '--'}} </div>\r\n                    <div *ngIf=\"tracker !=='tracking-enabled'\" class=\"py-2 img-doc-value\">{{Imagedata.timeSpent.exitTime ?? '--'}}</div>\r\n                    <div *ngIf=\"tracker !=='tracking-enabled'\" class=\"py-2 img-doc-value\">{{Imagedata.timeSpent.totalTimeSpent ?? '--'}}</div>\r\n                    <!-- <div class=\"py-2 img-doc-value\">20 Mins</div> -->\r\n                </div>\r\n            </div>\r\n\r\n\r\n        </div>\r\n        <hr />\r\n\r\n        <div *ngIf=\"!dataSubscrptionValue.tangoZone\" class=\"row my-2 px-2\">\r\n            <div class=\"card productCard\">\r\n                <div class=\"row \">\r\n                <div class=\"col-md-7 py-5\">\r\n<div class=\"product-title\">\r\n    Tango Zone\r\n</div>\r\n<div class=\"left-card-count-title mt-3\">\r\n    Identify hotspots and optimize your merchandise with Tango Zone's store heatmap analytics\r\n</div>\r\n<div class=\"explore-btn mt-4 cursor-pointer\" (click)=\"staffExpolore()\">Explore <span class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n    <path d=\"M15 10.8333V15.8333C15 16.2754 14.8244 16.6993 14.5118 17.0118C14.1993 17.3244 13.7754 17.5 13.3333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V6.66667C2.5 6.22464 2.67559 5.80072 2.98816 5.48816C3.30072 5.17559 3.72464 5 4.16667 5H9.16667M12.5 2.5H17.5M17.5 2.5V7.5M17.5 2.5L8.33333 11.6667\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n    </svg></span></div>\r\n                </div>\r\n                <div class=\"col-md-5 px-0\">\r\n                <img class=\"h-100 w-100\" src=\"assets/tango/Images/zone-tango.svg\">\r\n                </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n        <div *ngIf=\"dataSubscrptionValue.tangoZone\" class=\"row\">\r\n            <span class=\"zone-header\">Zones Visited</span>\r\n            <ng-container class=\"h-200px scroll\">\r\n                <div class=\"col mt-2\" *ngFor=\"let obj of Imagedata?.zoneVisited\">\r\n                    <span class=\"badge badge-light-primary \">{{obj}}</span>\r\n                </div>\r\n                 <div *ngIf=\"Imagedata?.zoneVisited.length ===0\" class=\"col-md-12 mt-2 text-center\">\r\n                    <img class=\"img-nodata\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n                    <div class=\"nodata-title\">No Zones Visited</div>\r\n                    <div class=\"nodata-sub\">There is no result for this Zones</div>\r\n                </div>\r\n               <!-- <div class=\"col-md-4 mt-2\">\r\n                    <span class=\"badge badge-light-primary \">Billing Area</span>\r\n                </div> -->\r\n            </ng-container>\r\n            <!-- <div class=\"col-md-6 mt-5\">\r\n                <span class=\"last-visit\">Last Visited Zone</span>\r\n            </div>\r\n            <div class=\"col-md-6 mt-5\">\r\n                <span class=\"badge badge-light-primary mx-2\"> John Jacobs</span>\r\n            </div> -->\r\n        </div>\r\n        <!-- <div *ngIf=\"dataSubscrptionValue.tangoZone\" class=\"mt-5 col-lg-12\">\r\n            <button class=\"btn btn-light-primary1 w-100 px-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n            <g clip-path=\"url(#clip0_4713_25)\">\r\n            <path d=\"M19.6673 5.83341L13.834 10.0001L19.6673 14.1667V5.83341Z\" stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n            <path d=\"M12.1673 4.16675H3.00065C2.08018 4.16675 1.33398 4.91294 1.33398 5.83341V14.1667C1.33398 15.0872 2.08018 15.8334 3.00065 15.8334H12.1673C13.0878 15.8334 13.834 15.0872 13.834 14.1667V5.83341C13.834 4.91294 13.0878 4.16675 12.1673 4.16675Z\" stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n            </g>\r\n            <defs>\r\n            <clipPath id=\"clip0_4713_25\">\r\n            <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0.5)\"/>\r\n            </clipPath>\r\n            </defs>\r\n            </svg><span class=\"ms-2\">View Trajectory</span></button>\r\n        </div> -->\r\n        <hr />\r\n        <div *ngIf=\"!dataSubscrptionValue.tangoTrax\" class=\"row my-2 px-2\">\r\n            <div class=\"card productCard\">\r\n                <div class=\"row \">\r\n                <div class=\"col-md-7 py-5\">\r\n<div class=\"product-title\">\r\n    Tango Trax\r\n</div>\r\n<div class=\"left-card-count-title mt-3\">\r\n    Create AI-driven checklists to streamline your processes and boost compliance with Tango Trax.\r\n</div>\r\n<div class=\"explore-btn mt-4 cursor-pointer\" (click)=\"staffExpolore()\">Explore <span class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n    <path d=\"M15 10.8333V15.8333C15 16.2754 14.8244 16.6993 14.5118 17.0118C14.1993 17.3244 13.7754 17.5 13.3333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V6.66667C2.5 6.22464 2.67559 5.80072 2.98816 5.48816C3.30072 5.17559 3.72464 5 4.16667 5H9.16667M12.5 2.5H17.5M17.5 2.5V7.5M17.5 2.5L8.33333 11.6667\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n    </svg></span></div>\r\n                </div>\r\n                <div class=\"col-md-5 px-0\">\r\n                <img class=\"h-100 w-100\" src=\"assets/tango/Images/trax-tango.svg\">\r\n                </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    \r\n      <section *ngIf=\"tracker !=='tracking-enabled'\">\r\n        <div *ngIf=\"dataSubscrptionValue.tangoTrax\" class=\"row\">\r\n            <div class=\"zone-header my-3 ps-3\">Staff Engagement</div>\r\n\r\n            <div class=\"row ps-3 mb-2\">\r\n                <div class=\"col-md-8\">\r\n\r\n                    <div class=\"py-2 img-doc-time\" >Time taken to assist </div>\r\n\r\n                    <div class=\"py-2 img-doc-time\">Time spent with staff</div>\r\n\r\n                </div>\r\n                <div class=\"col-md-4 text-end\">\r\n\r\n                    <div class=\"py-2 img-doc-value\">{{Imagedata?.staffEngagement?.timeTakenToAssist ?? '--'}} </div>\r\n                    <div class=\"py-2 img-doc-value\">{{Imagedata?.staffEngagement?.timeSpentWithStaff ?? '--'}} </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n        </section>\r\n    </div>\r\n    <!-- <hr /> -->\r\n</div>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { TrafficService } from '../../services/traffic.service';\r\n\r\nimport { ToastService } from 'tango-app-ui-shared';\r\n@Component({\r\n  selector: 'lib-duplicate',\r\n  templateUrl: './duplicate.component.html',\r\n  styleUrl: './duplicate.component.scss'\r\n})\r\nexport class DuplicateComponent implements OnInit {\r\n  @Input() inputData: any\r\n  @Input() originalData: any\r\n  @Input() selectedTempId: any\r\n  @Input() alreadyTagged: boolean\r\n  selectedTime: any;\r\n  description: any;\r\n  objectsArray: any = [{ 'folderName': '11 AM - 12 PM' }, { 'folderName': '12 PM - 1 PM' }, { 'folderName': '1 PM - 2 PM' }, { 'folderName': '2 PM - 3 PM' },];\r\n  checkedIndexes: boolean[] = [];\r\n  images: any = [];\r\n  selectedData: any = []\r\n  constructor(private activeModal: NgbActiveModal, private service: TrafficService,\r\n      private toaster: ToastService,) {\r\n    this.checkedIndexes = this.images.map(() => false);\r\n  }\r\n\r\n  private readonly destroy$ = new Subject();\r\n  ngOnInit(): void {\r\n    this.selectedTime = this.inputData.folderName\r\n    this.initialDataLoad()\r\n    let payload = {\r\n      clientId: this.inputData.clientId,\r\n      storeId: this.inputData.storeId,\r\n      footfallDate: this.inputData.footfallDate,\r\n      processType: this.inputData.processType,\r\n\r\n    }\r\n    this.service.getFootfallDirectoryFolders(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.objectsArray = res.data.footfallData;\r\n\r\n          }\r\n        },\r\n        error: (err: any) => {\r\n        },\r\n        complete: () => { },\r\n      });\r\n\r\n  }\r\n\r\n  isChecked(data: any): boolean {\r\n    return this.selectedData.some(\r\n      (item: any) => item.tempId === data.tempId && item.selectedTime === data.selectedTime\r\n    );\r\n  }\r\n  \r\n\r\n  initialDataLoad() {\r\n    this.service.getFootfallDirectory(this.inputData)\r\n      .pipe(takeUntil(this.destroy$))\r\n      ?.subscribe({\r\n        next: (res: any) => {\r\n          if (res && res.code === 200) {\r\n            res.data.footfallData =  res.data.footfallData.filter((ele:any)=>ele.tempId!==this.selectedTempId)\r\n            this.images = res.data.footfallData.map((data: any) => ({\r\n              image: data.images.entryTimeImage,\r\n              tempId: data.tempId,\r\n              selectedTime: this.inputData.folderName,\r\n              entryTime: data.timeSpent.entryTime,\r\n              exitTime: data.timeSpent.exitTime\r\n            }));\r\n          }\r\n        },\r\n        error: (err: any) => {\r\n        },\r\n        complete: () => { },\r\n      });\r\n  }\r\n  toggleCheck(data: any): void {\r\n    console.log(data)\r\n    const exists = this.selectedData.some(\r\n      (item: any) => item.tempId === data.tempId && item.selectedTime === data.selectedTime\r\n    );\r\n  \r\n    if (exists) {\r\n      this.selectedData = this.selectedData.filter(\r\n        (item: any) => !(item.tempId === data.tempId && item.selectedTime === data.selectedTime)\r\n      );\r\n      console.log(this.selectedData)\r\n    } else {\r\n      this.selectedData.push({ ...data });\r\n    }\r\n  }\r\n  \r\n\r\n  selectedTimes(obj: any) {\r\n    this.selectedTime = obj\r\n    this.inputData.folderName = obj\r\n    console.log(this.inputData.folderName)\r\n    this.initialDataLoad()\r\n  }\r\n  onSubmit() {\r\n    let payload: any = []\r\n\r\n\r\n    let inputData = {\r\n      clientId: this.inputData.clientId,\r\n      storeId: this.inputData.storeId[0],\r\n      dateString: this.inputData.footfallDate,\r\n    }\r\n\r\n    this.service\r\n      .revoptaggingcount(inputData)\r\n      .pipe(takeUntil(this.destroy$))\r\n      ?.subscribe({\r\n        next: (res: any) => {\r\n          \r\n          if (res && res.code === 200) {\r\n            console.log(res.data.count,this.selectedData.length,this.originalData)\r\n            if (res.data.count <= 0&&this.originalData.length===0||res.data.count<this.selectedData.length&&this.originalData.length===0) {\r\n              this.toaster.getErrorToast(\"Tag limit reached! Try tagging under different categories\")\r\n              return\r\n            }else{\r\n\r\n              if(this.originalData.length===1&&this.selectedData.length>res.data.count){\r\n               this.toaster.getErrorToast(\"Tag limit reached! Try tagging under different categories\")\r\n               return\r\n              }\r\n              // this.selectedData =  [...this.selectedData,...this.originalData]\r\n\r\n              // Tag ONLY the second-level selected duplicate images. The first-level\r\n              // image (the parent the dialog was opened from) must keep its existing\r\n              // type (footfall or whatever it was), so originalData is intentionally\r\n              // NOT merged into the submit payload.\r\n              this.selectedData.map((data: any) => {\r\n                let obj = {\r\n                  clientId: this.inputData.clientId,\r\n                  storeId: this.inputData.storeId[0],\r\n                  timeRange: data.selectedTime,\r\n                  dateString: this.inputData.footfallDate,\r\n                  tempId: data.tempId,\r\n                  processType: this.inputData.processType,\r\n                  revopsType: \"nonShopper\",\r\n                  nonshoperType: \"Duplicate\",\r\n                  customerInfo: {\r\n                    name: \"\",\r\n                    mobile: \"\",\r\n                    email: \"\",\r\n                    location: \"\",\r\n                    age: \"\",\r\n                    gender: \"\",\r\n                    entryTime: data?.entryTime || \"\",\r\n                    exitTime: data?.exitTime || \"\",\r\n                  },\r\n                  description: this.description,\r\n                  status: \"submitted\",\r\n                  issueList: []\r\n                }\r\n                payload.push(obj)\r\n              })\r\n              this.service\r\n                .submitRevopTagging(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.toaster.getSuccessToast('Duplicate ID tagged successfully');\r\n                      this.activeModal.close('submit');\r\n\r\n                    }\r\n                  }, error: (err: any) => {\r\n                  },\r\n                  complete: () => { },\r\n                })\r\n            }\r\n          }\r\n        }\r\n      })\r\n\r\n\r\n\r\n\r\n    \r\n  }\r\n  cancel() {\r\n    this.activeModal.close('cancel');\r\n  }\r\n}\r\n","<div class=\"row h-550px scroll-container scroll-y w-100\">\r\n    <div class=\"col-md-12 p-5\">\r\n        <div class=\"row mb-3\">\r\n  \r\n                <h3 class=\"card-title mx-5\">\r\n                    <div class=\"title-text mx-2 mt-3\">Tag Duplicate ID</div>\r\n                    <div class=\"text-sub mx-2 my-1\">Identify and tag the original ID this entry duplicates.</div>\r\n                </h3>\r\n\r\n        </div>\r\n        <div class=\"separator separator-double m-3\"></div>\r\n        <div  class=\"d-flex mt-2 mb-2 w-100 overflow-x px-0\">\r\n        \r\n          <div  class=\"col text-nowrap\" *ngFor=\"let obj of objectsArray\">\r\n              <ul  class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\r\n                  <li class=\"nav-item cursor-pointer\">\r\n                      <a (click)=\"selectedTimes(obj.folderName)\"\r\n                         [ngClass]=\"selectedTime === obj?.folderName ? 'active' : ''\" class=\"nav-link cursor-pointer no-border mx-3 mb-2\">\r\n                          {{obj?.folderName}}<span class=\"mx-2 \" [ngClass]=\"selectedTime === obj?.folderName ? 'badge-num-primary' :'badge-num-muted'\">{{obj?.count?obj?.count:0}}</span>\r\n                      </a>\r\n                  </li>\r\n              </ul>\r\n          </div>\r\n      </div>\r\n\r\n        <div class=\"border-gray-active1 mx-3 p-5\">\r\n\r\n            <div class=\"row g-3\">\r\n              <div \r\n              class=\"col-md-4 \" \r\n              *ngFor=\"let obj of images\"\r\n              \r\n            >\r\n            <div class=\"p-3 rounded border mt-3 border-2 \" [ngClass]=\"{\r\n                'border-primary': isChecked(obj),\r\n                'border-secondary': !isChecked(obj)\r\n              }\">\r\n              <div class=\"form-check mb-2 \">\r\n                <input *ngIf=\"selectedTempId!==obj?.tempId\"\r\n                  class=\"form-check-input mt-1\"\r\n                  type=\"checkbox\"\r\n                  [id]=\"'flexCheck' + obj.tempId\"\r\n                  (change)=\"toggleCheck(obj)\"\r\n                  [checked]=\"isChecked(obj)\"\r\n                />\r\n                <label class=\"form-check-label ms-1\" [for]=\"'flexCheck' + obj.tempId\">\r\n                  {{ obj?.tempId }}\r\n                </label>\r\n              </div>\r\n              <img [src]=\"obj.image\" alt=\"Image\" class=\"img-fluid w-100 h-200px rounded\" />\r\n            </div>\r\n            </div>\r\n\r\n              </div>\r\n              \r\n        \r\n            \r\n            <div class=\"col-md-12 mt-5 pb-5\">\r\n                <div class=\"form-group\">\r\n                    <label for=\"exampleInputName\">Description (Optional)</label>\r\n                  <textarea  [(ngModel)]=\"description\" class=\"form-control mt-3\" rows=\"3\" placeholder=\"\"></textarea>\r\n        \r\n                </div>\r\n            </div>\r\n        </div>\r\n\r\n        <div class=\"text-end mt-5\">\r\n            <button type=\"button\" class=\"btn btn-outline mt-3 me-3\" (click)=\"cancel()\">Cancel</button>\r\n            <button type=\"submit\" class=\"btn btn-primary mt-3\" (click)=\"onSubmit()\">Submit</button>\r\n           \r\n        </div>\r\n    </div>\r\n</div>","import { HttpClient, HttpHeaders, HttpParams } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { GlobalStateService } from \"tango-app-ui-global\";\r\nimport { Observable } from \"rxjs\";\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class TrafficRvpsService {\r\ntrafficApiUrl:any;\r\nfootfallDirapiUrl:any;\r\nfootfallCDN:any;\r\nrevopApiUrl:any;\r\n  constructor(private http: HttpClient, private gs: GlobalStateService) {\r\n    this.gs.environment.subscribe((env) => {\r\n      if (env) {\r\n        this.trafficApiUrl = env.trafficApiUrl;\r\n        this.footfallDirapiUrl = env.footfallDirapiUrl;\r\n           this.revopApiUrl = env.revopApiUrl;\r\n         this.footfallCDN =env.footfallCDN;\r\n      }\r\n    })\r\n  }\r\n\r\n\r\n  getRvpsListApi(storeId:any, dateString: any, groupByKey: any, type:any, processType:any): Observable<any> {\r\n\r\n     let params = new HttpParams()\r\n          .set('storeId', storeId)\r\n          .set('dateString',dateString)\r\n          .set('groupByKey', groupByKey)\r\n          .set('processType', processType);\r\n           if (type) {\r\n      params = params.set('type', type);\r\n    }\r\n    return this.http.get(`${this.revopApiUrl}/footfall-images`, { params });\r\n\r\n    // return this.http.get(`${this.revopApiUrl}/footfall-images?storeId=${storeId}&dateString=${dateString}&groupByKey=${groupByKey}&type=${type}&processType=${processType}`);\r\n  }\r\n\r\n  getRvpsTag(data:any):Observable<any>{\r\n    return this.http.post(`${this.revopApiUrl}/tag-tempId`,data);\r\n  }\r\n\r\n  getTotalVal(storeId:any,dateString:any):Observable<any>{\r\nreturn this.http.get(`${this.revopApiUrl}/store-processed-data?storeId=${storeId}&dateString=${dateString}`);\r\n  }\r\n\r\n getCreateRaisedTag(data:any):Observable<any>{\r\n    return this.http.post(`${this.footfallDirapiUrl}/create-ticket`,data);\r\n  }\r\n\r\n  getImageDirectoryCardData(storeId:any,startDate:any, enddate: any):Observable<any>{\r\n  return this.http.get(`${this.revopApiUrl}/store-processed-data?storeId=${storeId}&&fromDate=${startDate}&toDate=${enddate}`);\r\n  }\r\n\r\n  exportRevopTagging(storeId: any, fromDate: any, toDate: any, exportType: 'summary' | 'purchaser'): Observable<any> {\r\n    const payload = { storeId, fromDate, toDate, exportType };\r\n    return this.http.post(`${this.revopApiUrl}/export-revoptagging`, payload, { observe: 'response', responseType: 'blob' });\r\n  }\r\n}\r\n","import { Component, EventEmitter, HostListener, Input, Output, Provider, forwardRef } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\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 {\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  protected isOpened: boolean = false\r\n  protected selected: Record<string, any> | null = null\r\n  protected selectedId: string | number\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  registerOnChange(fn: any): void {\r\n    this.onChanged = fn\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.onChanged(this.selectedId)\r\n    this.onSelectionChange(item); \r\n  }\r\n\r\n  \r\n  onSelectionChange(item: Record<string, any>) {\r\n    this.valueChange.emit(item?.[this.idField]);\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  @Output() valueChange = new EventEmitter<any>();\r\n\r\n\r\n}\r\n","<div class=\"custom-select w-200px\">\r\n    <div class=\"form-group\">\r\n        <label *ngIf=\"label\" class=\"form-label w-100\">{{label}}</label>\r\n        <div class=\"position-relative\">\r\n            <div (click)=\"isOpened = !isOpened;\" [ngClass]=\"isDisabled ? 'disable' : ''\" class=\"form-select dropselect w-100\">\r\n                {{selected?.[nameField]}}</div>\r\n            <div *ngIf=\"isOpened\" class=\"card py-2 w-100 position-absolute end-0 z-1 drop-list\">\r\n                <ul class=\"list-unstyled mb-2 w-100\">\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 w-100\">\r\n                        {{item?.[nameField]}}\r\n                    </li>\r\n                </ul>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>","import { Directive, ElementRef, HostListener, Renderer2, OnInit, OnDestroy } from '@angular/core';\n\n@Directive({\n  selector: '[appMagnifier]',\n})\nexport class MagnifierDirective implements OnInit, OnDestroy {\n  private lens: HTMLElement | null = null;\n  private zoomImg: HTMLImageElement | null = null;\n  private zoom = 2;        // Zoom factor\n  private lensWidth = 300;   // lens width\n  private lensHeight = 700;  // lens height (taller)\n\n  // Geometry is cached on enter / scroll / resize so each move does no layout\n  // read and no repaint — only two compositor transforms.\n  private rect: DOMRect | null = null;\n  private currentSrc = '';\n  private rafId: number | null = null;\n  private pendingEvent: MouseEvent | null = null;\n\n  constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n  ngOnInit() {\n    this.createLens();\n  }\n\n  private createLens() {\n    this.lens = this.renderer.createElement('div');\n    this.renderer.setStyle(this.lens, 'position', 'fixed');\n    this.renderer.setStyle(this.lens, 'left', '0');\n    this.renderer.setStyle(this.lens, 'top', '0');\n    this.renderer.setStyle(this.lens, 'width', `${this.lensWidth}px`);\n    this.renderer.setStyle(this.lens, 'height', `${this.lensHeight}px`);\n    this.renderer.setStyle(this.lens, 'border', '2px solid red');\n    this.renderer.setStyle(this.lens, 'overflow', 'hidden');\n    this.renderer.setStyle(this.lens, 'background-color', '#fff');\n    this.renderer.setStyle(this.lens, 'pointer-events', 'none');\n    this.renderer.setStyle(this.lens, 'z-index', '9999');\n    this.renderer.setStyle(this.lens, 'transition', 'opacity 0.12s ease');\n    this.renderer.setStyle(this.lens, 'opacity', '0');\n    this.renderer.setStyle(this.lens, 'visibility', 'hidden');\n    this.renderer.setStyle(this.lens, 'will-change', 'transform');\n\n    // The zoomed image lives inside the lens. Moving IT with transform is a\n    // compositor-only operation — no background-position repaint per frame.\n    this.zoomImg = this.renderer.createElement('img');\n    this.renderer.setStyle(this.zoomImg, 'position', 'absolute');\n    this.renderer.setStyle(this.zoomImg, 'left', '0');\n    this.renderer.setStyle(this.zoomImg, 'top', '0');\n    this.renderer.setStyle(this.zoomImg, 'max-width', 'none');\n    this.renderer.setStyle(this.zoomImg, 'pointer-events', 'none');\n    this.renderer.setStyle(this.zoomImg, 'will-change', 'transform');\n    this.renderer.appendChild(this.lens, this.zoomImg);\n\n    this.renderer.appendChild(document.body, this.lens);\n  }\n\n  @HostListener('mouseenter', ['$event'])\n  onMouseEnter(e: MouseEvent): void {\n    this.refreshGeometry();\n    this.renderer.setStyle(this.lens, 'visibility', 'visible');\n    this.renderer.setStyle(this.lens, 'opacity', '1');\n    this.scheduleUpdate(e);\n  }\n\n  @HostListener('mousemove', ['$event'])\n  onMouseMove(e: MouseEvent): void {\n    this.scheduleUpdate(e);\n  }\n\n  // Coalesce rapid mouse moves into one update per animation frame.\n  private scheduleUpdate(e: MouseEvent): void {\n    this.pendingEvent = e;\n    if (this.rafId !== null) {\n      return;\n    }\n    this.rafId = requestAnimationFrame(() => {\n      this.rafId = null;\n      if (this.pendingEvent) {\n        this.update(this.pendingEvent);\n      }\n    });\n  }\n\n  // The only place that reads layout / sets the heavy image source + size.\n  private refreshGeometry(): void {\n    if (!this.lens || !this.zoomImg) {\n      return;\n    }\n    const image = this.el.nativeElement as HTMLImageElement;\n    this.rect = image.getBoundingClientRect();\n    if (image.src !== this.currentSrc) {\n      this.currentSrc = image.src;\n      this.renderer.setAttribute(this.zoomImg, 'src', image.src);\n    }\n    this.renderer.setStyle(this.zoomImg, 'width', `${this.rect.width * this.zoom}px`);\n    this.renderer.setStyle(this.zoomImg, 'height', `${this.rect.height * this.zoom}px`);\n  }\n\n  private update(e: MouseEvent): void {\n    if (!this.lens || !this.zoomImg || !this.rect) {\n      return;\n    }\n    const rect = this.rect;\n\n    // Cursor position within the displayed image (clientX/Y pair with fixed lens).\n    let x = e.clientX - rect.left;\n    let y = e.clientY - rect.top;\n    // Clamp to the image so the lens never shows empty space at the edges.\n    x = Math.max(0, Math.min(x, rect.width));\n    y = Math.max(0, Math.min(y, rect.height));\n\n    // Lens follows the cursor (compositor transform — no layout).\n    const lensX = e.clientX - this.lensWidth / 2;\n    const lensY = e.clientY - this.lensHeight / 2;\n    this.renderer.setStyle(this.lens, 'transform', `translate(${lensX}px, ${lensY}px)`);\n\n    // Zoomed image pans within the lens (compositor transform — no repaint).\n    const imgX = this.lensWidth / 2 - x * this.zoom;\n    const imgY = this.lensHeight / 2 - y * this.zoom;\n    this.renderer.setStyle(this.zoomImg, 'transform', `translate(${imgX}px, ${imgY}px)`);\n  }\n\n  // Geometry can change while hovering; refresh without touching positions.\n  @HostListener('window:scroll')\n  @HostListener('window:resize')\n  onViewportChange(): void {\n    if (this.lens && this.lens.style.visibility === 'visible') {\n      this.refreshGeometry();\n    }\n  }\n\n  @HostListener('mouseleave')\n  onMouseLeave() {\n    if (this.rafId !== null) {\n      cancelAnimationFrame(this.rafId);\n      this.rafId = null;\n    }\n    this.pendingEvent = null;\n    this.renderer.setStyle(this.lens, 'opacity', '0');\n    this.renderer.setStyle(this.lens, 'visibility', 'hidden');\n  }\n\n  ngOnDestroy() {\n    if (this.rafId !== null) {\n      cancelAnimationFrame(this.rafId);\n      this.rafId = null;\n    }\n    if (this.lens && this.lens.parentNode) {\n      this.renderer.removeChild(document.body, this.lens);\n      this.lens = null;\n      this.zoomImg = null;\n    }\n  }\n}\n","import { ChangeDetectorRef, Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { TrafficService } from '../../services/traffic.service';\r\nimport { Subject, takeUntil } from \"rxjs\";\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { ImageDocViewComponent } from '../image-doc-view/image-doc-view.component';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport dayjs from 'dayjs';\r\ndayjs.extend(utc);\r\ndayjs.extend(timezone)\r\nimport 'dayjs/locale/en';\r\nimport utc from 'dayjs/plugin/utc';\r\nimport timezone from 'dayjs/plugin/timezone';\r\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { DuplicateComponent } from '../duplicate/duplicate.component';\r\nimport { ToastService } from 'tango-app-ui-shared';\r\nimport { NgxGpAutocompleteDirective } from \"@angular-magic/ngx-gp-autocomplete/lib/ngx-gp-autocomplete.directive\";\r\nimport { ImgRvpsComponent } from '../img-rvps/img-rvps.component';\r\nimport { TrafficRvpsService } from '../../services/traffic-rvps.service';\r\n@Component({\r\n  selector: \"lib-image-doc\",\r\n  templateUrl: \"./image-doc.component.html\",\r\n  styleUrl: \"./image-doc.component.scss\",\r\n})\r\nexport class ImageDocComponent implements OnInit, OnDestroy {\r\n  @ViewChild(\"ngxPlaces\") placesRef: NgxGpAutocompleteDirective;\r\n  selectIndex: any = 0;\r\n  selectedTime: any;\r\n  objData: any;\r\n  objectsArray: any = [];\r\n  imagesArrayData: any;\r\n  processType = \"footfall\";\r\n  headerData: any;\r\n  folderView: boolean;\r\n  dayjs = dayjs\r\n  dateArray: any;\r\n  form: any;\r\n  noData: boolean = false;\r\n  loading: boolean = true;\r\n  storeArrayValue: any;\r\n  storeIdarray: any;\r\n  valueType: any = 'actual';\r\n  isAverage: any = false;\r\n  lengthValue: boolean;\r\n  hideDoc: boolean = false;\r\n  isAccordionExpanded: boolean = true;\r\n  folderDate: any;\r\n  backnav: boolean;\r\n  userForm: FormGroup;\r\n  submitted = false;\r\n  missedOpportunityList: any = []\r\n  phoneRegex: RegExp = /^(\\d{3})?\\d{15}$/;\r\n  emailRegex: RegExp = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n  nonShopperList = ['Employee/Staff', 'Delivery Person', 'Duplicate', 'Agents', 'Others'];\r\n  // missedOpportunityList =['Product Need Mismatch','Product Unavailability','Product Damaged','Product Enquiry','Quality'];\r\n  selectedMissed: any = 'Product Issue';\r\n  issues: any = []\r\n  nonShoperType: any = ''\r\n  description: any = ''\r\n  selectedIssues: string[] = [];\r\n  selectedMainIssues: string[] = [];\r\n  tagggedData: any = {}\r\n  missedoptunityReason: any = []\r\n  countryList: any = []\r\n  pendingcount: any;\r\n  constructor(\r\n    private service: TrafficService,\r\n    public gs: GlobalStateService,\r\n    private cd: ChangeDetectorRef,\r\n    private modalService: NgbModal,\r\n    private fb: FormBuilder,\r\n    private toaster: ToastService,private rvpsService:TrafficRvpsService,\r\n  ) {\r\n\r\n    this.form = this.fb.group({\r\n      selectValue: new FormControl('') // Initialize as FormControl\r\n    });\r\n\r\n\r\n  }\r\n  inituserForm() {\r\n    this.userForm = this.fb.group({\r\n      name: [''],\r\n      mobile: ['', [Validators.maxLength(13), Validators.minLength(8),]],\r\n      email: ['', [\r\n        Validators.pattern(\"^[a-zA-Z0-9]+([.-_]?[a-zA-Z0-9]+)*@[a-zA-Z0-9]+([.-_]?[a-zA-Z]+)*[.]{1}[a-zA-Z]{2,}$\"),\r\n      ],],\r\n      location: [],\r\n      age: [],\r\n      gender: [],\r\n      countryCode: [\"91\",],\r\n    });\r\n  }\r\n  get hasPurchaserData(): boolean {\r\n    const v = this.userForm?.value || {};\r\n    return ['name', 'mobile', 'email', 'location', 'age', 'gender']\r\n      .some(key => v[key] !== null && v[key] !== undefined && `${v[key]}`.trim() !== '');\r\n  }\r\n  ngOnInit(): void {\r\n    this.getCountryCodes()\r\n    this.inituserForm()\r\n    this.getInital();\r\n    setTimeout(() => {\r\n      this.hideDoc = false;\r\n      setTimeout(() => {\r\n        this.hideDoc = true;\r\n      }, 5000);\r\n\r\n    }, 1000);\r\n  }\r\n  getCountryCodes() {\r\n    this.service.getAllCountries().subscribe({\r\n      next: (res: any) => {\r\n        this.countryList = res.data\r\n        this.cd.detectChanges()\r\n      },\r\n      error: (err: any) => {\r\n\r\n      }\r\n    })\r\n  }\r\n  omit_special_char(event: any) {\r\n    var k;\r\n    k = event.charCode;\r\n    return k == 8 || k == 32 || (k >= 48 && k <= 57);\r\n  }\r\n\r\n  clientData: any;\r\n  get f() {\r\n    return this.userForm.controls;\r\n  }\r\n  getInital() {\r\n    this.gs.dataRangeValue\r\n      .pipe(takeUntil(this.destroy$), debounceTime(100))\r\n      .subscribe((data: any) => {\r\n        if (data !== null || data?.client !== null) {\r\n          this.headerData = data;\r\n          this.storeIdarray = this.headerData?.stores.filter((store: any) => store.checked).map((store: any) => store.storeId)\r\n          this.objData = {\r\n            storeId: this.headerData?.stores\r\n              .filter((store: any) => store.checked)\r\n              .map((store: any) => store.storeId),\r\n            clientId: this.headerData?.client,\r\n            processType: this.processType,\r\n            footfallDate: this.headerData.date.endDate,\r\n            // valueType :this.valueType\r\n          };\r\n          setTimeout(() => {\r\n            const clientData: any = JSON.parse(localStorage.getItem(\"client-details\") || \"{}\");\r\n            this.clientData = clientData\r\n            // console.log(this.clientData)\r\n\r\n            const limit = clientData?.bouncedLimit?.value ?? clientData?.bouncedLimitValue ?? '';\r\n            const conv = clientData?.conversion?.value ?? clientData?.conversionValue ?? '';\r\n            if (clientData.isFootfallView) {\r\n              this.datasets = [\r\n                { value: 'footfall', label: 'Footfall' },\r\n              ]\r\n            }\r\n            else{\r\n              if (this.headerData.client === '452') {\r\n                this.datasets = [\r\n                  { value: 'footfall', label: 'Footfall' },\r\n                  { value: 'bounced', label: `Less than ${limit} mins` },\r\n                  { value: 'engager', label: `More than ${limit} mins` },\r\n                  { value: 'missedOpportunity', label: `${limit} - ${conv} mins` },\r\n                  { value: 'conversion', label: `More than ${conv} mins` }\r\n                ];\r\n              } else {\r\n                this.datasets = [\r\n                  { value: 'footfall', label: 'Footfall' },\r\n                  // { value: 'bounced', label: 'Bounced Footfall' },\r\n                  // { value: 'engager', label: 'Engagers' },\r\n                  // { value: 'missedOpportunity', label: 'Missed Opportunity' },\r\n                  // { value: 'conversion', label: 'Conversion' }\r\n                ];\r\n              }\r\n             \r\n            }\r\n            const initialValue = this.getInitialValue();\r\n            const selectControl = this.form.get('selectValue') as FormControl;\r\n            if (selectControl) {\r\n              selectControl.setValue(initialValue);\r\n            }\r\n          }, 100)\r\n          this.backToFootfall();\r\n          this.displayDateRange();\r\n          if (this.headerData?.date?.startDate === this.headerData?.date?.endDate) {\r\n            this.backnav = false;\r\n            this.displayDateRange();\r\n            this.getimages(0, this.headerData.date.endDate)\r\n          } else {\r\n            this.folderView = true;\r\n            this.backnav = true\r\n          }\r\n          this.initialData();\r\n          this.initialFootfall();\r\n\r\n        }\r\n      });\r\n  }\r\n\r\n  footfallDataShow: any;\r\n  initialFootfall() {\r\n    this.service.getStoreFootfall(this.storeIdarray)\r\n      .pipe(takeUntil(this.destroy$))\r\n      ?.subscribe({\r\n        next: (res: any) => {\r\n          if (res && res.code === 200) {\r\n            this.footfallDataShow = res.data.result;\r\n          } else {\r\n            this.footfallDataShow = []\r\n          }\r\n        }, error: (err: any) => {\r\n          this.footfallDataShow = []\r\n        },\r\n      })\r\n\r\n  }\r\n\r\n  initialData() {\r\n    this.service.getrevopconfig(this.headerData.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.missedOpportunityList = res.data.issueList\r\n            this.issues = this.missedOpportunityList.filter((data: any) => data.name === this.selectedMissed)\r\n\r\n          }\r\n        }\r\n      })\r\n\r\n  }\r\n  toggleAccordion() {\r\n    this.isAccordionExpanded = !this.isAccordionExpanded;\r\n\r\n  }\r\n  private readonly destroy$ = new Subject();\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next(true);\r\n    this.destroy$.complete();\r\n  }\r\n  getImageFolder(preserveFolder: boolean = false) {\r\n\r\n    const previousFolder = this.selectedTime;\r\n    delete this.objData.folderName;\r\n    this.service\r\n      .getFootfallDirectoryFolders(this.objData)\r\n      .pipe(takeUntil(this.destroy$))\r\n      ?.subscribe({\r\n        next: (res: any) => {\r\n          if (res && res.code === 200) {\r\n            this.objectsArray = res?.data.footfallData;\r\n            const folderStillExists = preserveFolder &&\r\n              this.objectsArray?.some((folder: any) => folder.folderName === previousFolder);\r\n            this.selectedTime = folderStillExists ? previousFolder : this.objectsArray[0].folderName;\r\n            this.objData.folderName = this.selectedTime;\r\n            this.lengthValue = true;\r\n            this.getImageView();\r\n            this.cd.detectChanges();\r\n          } else {\r\n            this.lengthValue = false;\r\n            this.loading = false;\r\n            this.noData = true;\r\n            this.objectsArray = []\r\n          }\r\n        },\r\n        error: (err: any) => {\r\n          this.cd.detectChanges();\r\n        },\r\n        complete: () => { },\r\n      });\r\n  }\r\n  getImageView() {\r\n\r\n    // console.log(this.objData)\r\n    this.loading = true;\r\n    this.noData = false;\r\n    this.service\r\n      .getFootfallDirectory(this.objData)\r\n      .pipe(takeUntil(this.destroy$))\r\n      ?.subscribe({\r\n        next: (res: any) => {\r\n          if (res && res.code === 200) {\r\n            if (!res?.data.footfallData.length) {\r\n              this.loading = false;\r\n              this.noData = true;\r\n            } else {\r\n              this.imagesArrayData = res?.data.footfallData;\r\n\r\n              this.storeArrayValue = res?.data.storeName\r\n              this.loading = false;\r\n              this.noData = false;\r\n              this.cd.detectChanges();\r\n\r\n\r\n            }\r\n          } else {\r\n            this.loading = false;\r\n            this.noData = true;\r\n          }\r\n        },\r\n        error: (err: any) => {\r\n          this.cd.detectChanges();\r\n        },\r\n        complete: () => { },\r\n      });\r\n  }\r\n  normalize: any\r\n  selectedTabs(name: string) {\r\n    this.selectedMissed = name;\r\n    // this.selectedIssues = []; // reset when switching tabs\r\n  }\r\n\r\n  selectSubissue(obj: any, issue: string) {\r\n\r\n    const index = this.selectedIssues.indexOf(issue);\r\n    const mainindex = this.selectedMainIssues.indexOf(obj.name);\r\n    if (index === -1) {\r\n      let exitsCount = this.missedoptunityReason.filter((data: any) => data.name === obj.name).length\r\n      if (exitsCount > 0) {\r\n        this.missedoptunityReason.map((data: any) => {\r\n          if (data.name === obj.name) {\r\n            data.issue.push(issue)\r\n          }\r\n        })\r\n      } else {\r\n        this.missedoptunityReason.push({\r\n          name: obj.name,\r\n          issue: [issue]\r\n        })\r\n      }\r\n      this.selectedMainIssues.push(obj.name)\r\n      this.selectedIssues.push(issue);\r\n    } else {\r\n      this.selectedIssues.splice(index, 1);\r\n      this.selectedMainIssues.splice(mainindex, 1);\r\n      this.missedoptunityReason.map((data: any, i: number) => {\r\n        if (data.name === obj.name) {\r\n          const subIndex = data.issue.indexOf(issue);\r\n          if (subIndex !== -1) {\r\n            data.issue.splice(subIndex, 1);\r\n            if (data.issue.length === 0) {\r\n              this.missedoptunityReason.splice(i, 1);\r\n            }\r\n          }\r\n        }\r\n      });\r\n    }\r\n\r\n  }\r\n  getimages(index: any, obj: any) {\r\n    this.selectIndex = index;\r\n    this.folderDate = obj;\r\n    (this.objData.footfallDate = obj), (this.folderView = false);\r\n    this.service?.isnormalizeSource\r\n      ?.pipe(takeUntil(this.destroy$), debounceTime(300))\r\n      ?.subscribe((normalize: any) => {\r\n        this.normalize = normalize;\r\n        if (!normalize) {\r\n          this.getImageFolder();\r\n        } else {\r\n          this.lengthValue = false;\r\n          this.loading = false;\r\n          this.noData = true;\r\n          this.objectsArray = [];\r\n        }\r\n      });\r\n  }\r\n  backToFootfall() {\r\n    this.selectIndex = 0;\r\n    this.folderView = true;\r\n\r\n  }\r\n  selectedTimes(val: any) {\r\n\r\n    this.selectedTime = val;\r\n    this.objData.folderName = val;\r\n    this.folderView = false;\r\n    this.getImageView();\r\n  }\r\n  Imagedata: any;\r\n  imageFlow = false;\r\n  Images: any;\r\n\r\n  revopTagging(obj: any) {\r\n    this.imageFlow = true;\r\n    this.Imagedata = obj;\r\n    this.selectedTab = 'tagged';\r\n    this.selectedCustomerType = this.Imagedata?.revopsType ? this.Imagedata?.revopsType : 'nonShopper';\r\n    this.Images = this.Imagedata?.images?.entryTimeImage\r\n    this.getRevopData()\r\n  }\r\n  getRevopData() {\r\n    let payload = {\r\n      clientId: this.headerData.client,\r\n      storeId: this.storeIdarray[0],\r\n      dateString: this.folderDate,\r\n      tempId: this.Imagedata.tempId,\r\n      processType: this.Imagedata?.revopsType ? this.Imagedata?.revopsType : this.processType\r\n    }\r\n    this.service.getrevoptagging(payload)\r\n      .pipe(takeUntil(this.destroy$))?.subscribe({\r\n        next: (res: any) => {\r\n          if (res && res.code === 200) {\r\n            this.selectedTab = 'customer'\r\n            this.tagggedData = res.data\r\n            this.selectedCustomerType = res.data.revopsType\r\n            this.description = res.data.description\r\n\r\n            const selectControl = this.form.get('selectValue') as FormControl;\r\n            if (selectControl) {\r\n              selectControl.setValue(res.data.revopsType);\r\n            }\r\n            this.cd.detectChanges()\r\n\r\n            if (this.selectedCustomerType === 'nonShopper') {\r\n              this.selectedIssues = [];\r\n              this.nonShoperType = res.data.nonshoperType\r\n              this.userForm.get('name')?.setValue(\"\")\r\n              this.userForm.get('mobile')?.setValue(\"\")\r\n              this.userForm.get('countryCode')?.setValue(\"\")\r\n              this.userForm.get('email')?.setValue(\"\")\r\n              this.userForm.get('location')?.setValue(\"\")\r\n              this.userForm.get('age')?.setValue(\"\")\r\n              this.userForm.get('gender')?.setValue(\"\")\r\n            } else if (this.selectedCustomerType === 'purchaser') {\r\n              this.selectedIssues = [];\r\n              this.nonShoperType = ''\r\n              this.userForm.get('name')?.setValue(res.data.customerInfo.name)\r\n              this.userForm.get('mobile')?.setValue(res.data.customerInfo.mobile)\r\n              this.userForm.get('countryCode')?.setValue(res.data.customerInfo.countryCode)\r\n              this.userForm.get('email')?.setValue(res.data.customerInfo.email)\r\n              this.userForm.get('location')?.setValue(res.data.customerInfo.location)\r\n              this.userForm.get('age')?.setValue(res.data.customerInfo.age)\r\n              this.userForm.get('gender')?.setValue(res.data.customerInfo.gender)\r\n            } else if (this.selectedCustomerType === 'missedOpportunity') {\r\n              this.missedoptunityReason = res.data.issueList\r\n              // console.log(res.data)\r\n              res.data.issueList.map((data: any) => {\r\n                this.selectedIssues = [...this.selectedIssues, ...data.issue]\r\n              })\r\n              this.nonShoperType = ''\r\n              this.userForm.get('name')?.setValue(\"\")\r\n              this.userForm.get('mobile')?.setValue(\"\")\r\n              this.userForm.get('countryCode')?.setValue(\"\")\r\n              this.userForm.get('email')?.setValue(\"\")\r\n              this.userForm.get('location')?.setValue(\"\")\r\n              this.userForm.get('age')?.setValue(\"\")\r\n              this.userForm.get('gender')?.setValue(\"\")\r\n            }\r\n          } else if (!res || res?.code === 204) {\r\n            this.selectControl.setValue(\"footfall\");\r\n            this.nonShoperType = '';\r\n            this.description = ''\r\n            this.tagggedData = [];\r\n            this.userForm.get('name')?.setValue(\"\")\r\n            this.userForm.get('mobile')?.setValue(\"\")\r\n            this.userForm.get('countryCode')?.setValue(\"\")\r\n            this.userForm.get('email')?.setValue(\"\")\r\n            this.userForm.get('location')?.setValue(\"\")\r\n            this.userForm.get('age')?.setValue(\"\")\r\n            this.userForm.get('gender')?.setValue(\"\")\r\n            this.selectedIssues = [];\r\n          }\r\n          this.cd.detectChanges()\r\n        }, error: (err: any) => {\r\n          this.selectControl.setValue(\"footfall\");\r\n          this.tagggedData = [];\r\n        }\r\n      })\r\n  }\r\n  public handleAddressChange(place: google.maps.places.PlaceResult | any) {\r\n    if (place.geometry) {\r\n      let country = \"\", city = \"\", state = \"\", pincode = \"\";\r\n      let latitude = place.geometry.location.lat();\r\n      let longitude = place.geometry.location.lng();\r\n      place.address_components.forEach((component: any) => {\r\n        if (component.types.includes(\"country\")) {\r\n          country = component.long_name;\r\n        } else if (component.types.includes(\"locality\")) {\r\n          city = component.long_name;\r\n        } else if (component.types.includes(\"administrative_area_level_1\")) {\r\n          state = component.long_name;\r\n        } else if (component.types.includes(\"postal_code\")) {\r\n          pincode = component.long_name;\r\n        }\r\n        this.userForm.get('location')?.setValue(city)\r\n      });\r\n    }\r\n  }\r\n\r\n  selectnonShoper(data: any) {\r\n    let inputData = {\r\n      clientId: this.headerData.client,\r\n      storeId: this.storeIdarray[0],\r\n      dateString: this.folderDate,\r\n    }\r\n    this.service\r\n      .revoptaggingcount(inputData)\r\n      .pipe(takeUntil(this.destroy$))\r\n      ?.subscribe({\r\n        next: (res: any) => {\r\n\r\n          if (res && res.code === 200) {\r\n            if (res.data.count <= 0 && this.tagggedData.revopsType != 'nonShopper') {\r\n              this.toaster.getErrorToast(\"Tag limit reached! Try tagging under different categories\")\r\n              return\r\n            } else {\r\n              this.nonShoperType = data\r\n              if (data === 'Duplicate') {\r\n                // console.log(this.tagggedData.nonshoperType, this.Imagedata.tempId, this.tagggedData.tempId)\r\n                let originalData = []\r\n                if(this.tagggedData.nonshoperType != 'Duplicate'&&this.tagggedData.revopsType==='nonShopper'){\r\n                originalData.push({ tempId: this.tagggedData?.tempId, selectedTime: this.selectedTime })\r\n                }\r\n                const modalRef = this.modalService.open(DuplicateComponent, {\r\n                  centered: true,\r\n                  size: \"xl\",\r\n                  scrollable: true,\r\n                  backdrop: 'static'\r\n                });\r\n                modalRef.componentInstance.selectedTempId = this.Imagedata.tempId;\r\n                modalRef.componentInstance.originalData = originalData;\r\n                modalRef.componentInstance.alreadyTagged = this.Imagedata?.tempId === this.tagggedData?.tempId && this.tagggedData?.nonshoperType === 'Duplicate' ? true : false;\r\n\r\n                modalRef.componentInstance.inputData = {\r\n                  \"storeId\": this.storeIdarray,\r\n                  \"clientId\": this.headerData.client,\r\n                  \"processType\": this.processType,\r\n                  \"footfallDate\": this.folderDate,\r\n                  \"folderName\": this.selectedTime\r\n                }\r\n                modalRef.result.then((result: any) => {\r\n                  \r\n                  setTimeout(() => {\r\n                    this.getRevopData()\r\n                  }, 1000)\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  imageView(obj: any, footfallDate: any) {\r\n\r\n    const modalRef = this.modalService.open(ImageDocViewComponent, {\r\n      centered: true,\r\n      size: \"xl\",\r\n      scrollable: true,\r\n    });\r\n    modalRef.componentInstance.Imagedata = obj;\r\n    modalRef.componentInstance.processType = this.objData.processType;\r\n    modalRef.componentInstance.footfallDate = footfallDate;\r\n    modalRef.componentInstance.storeName = this.storeArrayValue;\r\n    modalRef.componentInstance.storeId = this.storeIdarray\r\n    modalRef.componentInstance.headerData = this.headerData;\r\n    modalRef.componentInstance.imageArray = this.objectsArray;\r\n    modalRef.componentInstance.folderName = this.objData.folderName\r\n    modalRef.componentInstance.tracker = this.footfallDataShow;\r\n    modalRef.result.then((result: any) => { });\r\n    // modalRef.dismiss('Click outside');\r\n  }\r\n\r\n  getDateRangeArray(fromDate: string, toDate: string): string[] {\r\n    const start = new Date(fromDate); // Convert string to Date object\r\n    const end = new Date(toDate); // Convert string to Date object\r\n    const dateArray: string[] = [];\r\n\r\n    // Check if the dates are valid\r\n    if (isNaN(start.getTime()) || isNaN(end.getTime())) {\r\n      return dateArray;\r\n    }\r\n\r\n    // Loop from start date to end date\r\n    let currentDate = start;\r\n    while (currentDate <= end) {\r\n      dateArray.push(currentDate.toISOString().split(\"T\")[0]); // Format YYYY-MM-DD\r\n      currentDate.setDate(currentDate.getDate() + 1); // Increment the date by 1 day\r\n    }\r\n\r\n    return dateArray;\r\n  }\r\n\r\n  // Method to display or log the date range array\r\n  displayDateRange() {\r\n    const dates = this.getDateRangeArray(\r\n      this.headerData.date.startDate,\r\n      this.headerData.date.endDate\r\n    );\r\n    this.dateArray = dates;\r\n  }\r\n  datasets = [\r\n    { value: 'footfall', label: 'Footfall' },\r\n    // { value: 'bounced', label: 'Bounced Footfall' },\r\n    // { value: 'engager', label: 'Engagers' },\r\n    // { value: 'missedOpportunity', label: 'Missed Opportunity' },\r\n    // { value: 'conversion', label: 'Conversion' }\r\n  ];\r\n  getInitialValue(): string {\r\n    // For example, selecting the second item in the dataset\r\n    return this.datasets[0].value; // Change as needed\r\n  }\r\n  onValueChange(selectedId: any) {\r\n    this.objData.processType = selectedId,\r\n      this.getImageFolder();\r\n  }\r\n  get selectControl(): FormControl {\r\n    return this.form.get('selectValue') as FormControl;\r\n  }\r\n  closeData() {\r\n    this.hideDoc = true;\r\n  }\r\n\r\n  exporting = false;\r\n  exportData(type: 'summary' | 'purchaser') {\r\n    if (this.exporting) {\r\n      return;\r\n    }\r\n    const storeId = this.storeIdarray && this.storeIdarray.length > 0 ? this.storeIdarray[0] : null;\r\n    if (!storeId) {\r\n      this.toaster.getErrorToast('Please select a store to export.');\r\n      return;\r\n    }\r\n    // Folder view shows the full date range, so export the header range.\r\n    // The single page view shows one specific date (folderDate), so export\r\n    // that date alone with fromDate === toDate, normalized to yyyy-MM-dd.\r\n    const folderDate = this.dayjs(this.folderDate).format('YYYY-MM-DD');\r\n    const fromDate = this.folderView ? this.headerData.date.startDate : folderDate;\r\n    const toDate = this.folderView ? this.headerData.date.endDate : folderDate;\r\n    this.exporting = true;\r\n    this.rvpsService\r\n      .exportRevopTagging(storeId, fromDate, toDate, type)\r\n      .pipe(takeUntil(this.destroy$))\r\n      ?.subscribe({\r\n        next: (res: any) => {\r\n          const blob: Blob = res.body;\r\n          if (!blob || blob.size === 0) {\r\n            this.toaster.getErrorToast('No data available to export.');\r\n            this.exporting = false;\r\n            return;\r\n          }\r\n          const disposition = res.headers?.get('content-disposition') || '';\r\n          const match = /filename\\*?=(?:UTF-8'')?\"?([^\";]+)\"?/i.exec(disposition);\r\n          const dateRange = fromDate === toDate ? `${fromDate}` : `${fromDate}-to-${toDate}`;\r\n          const fileName = match\r\n            ? decodeURIComponent(match[1])\r\n            : `revop-${type}-${dateRange}.xlsx`;\r\n          const url = window.URL.createObjectURL(blob);\r\n          const link = document.createElement('a');\r\n          link.href = url;\r\n          link.download = fileName;\r\n          link.click();\r\n          window.URL.revokeObjectURL(url);\r\n          this.exporting = false;\r\n        },\r\n        error: () => {\r\n          this.toaster.getErrorToast('Failed to export. Please try again.');\r\n          this.exporting = false;\r\n        },\r\n      });\r\n  }\r\n\r\n  backToView() {\r\n    this.selectControl.setValue(\"footfall\");\r\n    this.imageFlow = false;\r\n    this.objData.folderName = this.selectedTime;\r\n    // Re-fetch folder counts (footfallDirectoryFolders_v3) and the image list\r\n    // (footfallDirectory_v3) so the folder view reflects any tagging done in the\r\n    // single view, instead of showing the stale values fetched earlier. Keep the\r\n    // currently selected folder tab so the user lands back where they were.\r\n    this.getImageFolder(true);\r\n  }\r\n\r\n  imageData(type: any) {\r\n    if (type === 'entry') {\r\n      this.Images = this.Imagedata?.images?.entryTimeImage\r\n    } else if (type === 'exit') {\r\n      this.Images = this.Imagedata?.images?.exitTimeImage\r\n    } else if (type === 'staff') {\r\n      this.Images = this.Imagedata?.images?.staffEngagementImage\r\n    }\r\n\r\n  }\r\n  isFirstImage(): boolean {\r\n    const index = this.imagesArrayData.findIndex((data: any) => data.tempId === this.Imagedata?.tempId);\r\n    return index <= 0;\r\n  }\r\n\r\n  isLastImage(): boolean {\r\n    const index = this.imagesArrayData.findIndex((data: any) => data.tempId === this.Imagedata?.tempId);\r\n    return index >= this.imagesArrayData.length - 1;\r\n  }\r\n\r\n  previous() {\r\n    this.selectedIssues = []\r\n    this.missedoptunityReason = []\r\n    this.selectedMissed = 'Product Issue'\r\n    const index = this.imagesArrayData.findIndex((data: any) => data.tempId === this.Imagedata.tempId);\r\n    if (index > 0) {\r\n      this.Imagedata = this.imagesArrayData[index - 1];\r\n      if (this.Imagedata) {\r\n        this.revopTagging(this.Imagedata)\r\n      }\r\n    } else {\r\n      this.Imagedata = this.imagesArrayData[0];\r\n      if (this.Imagedata) {\r\n        this.revopTagging(this.Imagedata)\r\n      }\r\n\r\n    }\r\n  }\r\n  next() {\r\n    this.selectedIssues = []\r\n    this.missedoptunityReason = []\r\n    this.selectedMissed = 'Product Issue'\r\n\r\n    const index = this.imagesArrayData.findIndex((data: any) => data.tempId === this.Imagedata.tempId);\r\n    if (this.imagesArrayData.length - 1 != index) {\r\n\r\n      this.Imagedata = this.imagesArrayData[index + 1];\r\n      if (this.Imagedata) {\r\n        this.revopTagging(this.Imagedata)\r\n      }\r\n    }\r\n  }\r\n\r\n  selectedTab = 'tagged';\r\n  selectedCustomerType = 'nonShopper';\r\n  onRadioChange(value: any): void {\r\n    // console.log(value)\r\n    this.selectedCustomerType = value;\r\n    if (value === 'purchaser') {\r\n      this.submitted = false;\r\n      Object.values(this.userForm.controls).forEach(control => {\r\n        control.markAsUntouched();\r\n        control.updateValueAndValidity();\r\n      });\r\n\r\n      this.userForm.get('countryCode')?.setValue(\"91\");\r\n    } else if (value == 'missedOpportunity') {\r\n      this.selectedIssues = []\r\n      this.missedoptunityReason = []\r\n    }\r\n\r\n  }\r\n\r\n  age: number = 1;\r\n\r\n  incrementAge() {\r\n    const currentAge = Number(this.userForm.get('age')?.value) || 0;\r\n    this.userForm.get('age')?.setValue(currentAge + 1);\r\n  }\r\n\r\n  decrementAge() {\r\n    const currentAge = Number(this.userForm.get('age')?.value) || 0;\r\n    // console.log(currentAge)\r\n    if (currentAge > 1) {\r\n      this.userForm.get('age')?.setValue(currentAge - 1);\r\n    }\r\n  }\r\n  submitMissedOpportunity() {\r\n    if (this.missedoptunityReason.length === 0) {\r\n      this.toaster.getErrorToast(\"please select missed opportunity reason\")\r\n      return\r\n    }\r\n    let payload = [{\r\n      clientId: this.headerData.client,\r\n      storeId: this.storeIdarray[0],\r\n      dateString: this.folderDate,\r\n      timeRange: this.selectedTime,\r\n      tempId: this.Imagedata.tempId,\r\n      processType: this.selectControl.value,\r\n      revopsType: this.selectedCustomerType,\r\n      nonshoperType: \"\",\r\n      customerInfo: {\r\n        name: \"\",\r\n        mobile: \"\",\r\n        countryCode: \"\",\r\n        email: \"\",\r\n        location: \"\",\r\n        age: \"\",\r\n        gender: \"\",\r\n        entryTime: this.Imagedata?.timeSpent?.entryTime || \"\",\r\n        exitTime: this.Imagedata?.timeSpent?.exitTime || \"\",\r\n      },\r\n      description: this.description,\r\n      status: \"submitted\",\r\n      issueList: this.missedoptunityReason\r\n    }]\r\n    this.service\r\n      .submitRevopTagging(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.toaster.getSuccessToast(\"Customer has been tagged successfully.\")\r\n            setTimeout(() => {\r\n\r\n              this.getRevopData()\r\n            }, 1000)\r\n          }\r\n        }\r\n      })\r\n  }\r\n\r\n\r\n  nonShopperSubmit() {\r\n\r\n    if (this.nonShoperType === '') {\r\n      this.toaster.getErrorToast(\"please select nonshopper Type\")\r\n      return\r\n    }\r\n\r\n    let payload = [{\r\n      clientId: this.headerData.client,\r\n      storeId: this.storeIdarray[0],\r\n      timeRange: this.selectedTime,\r\n      dateString: this.folderDate,\r\n      tempId: this.Imagedata.tempId,\r\n      processType: this.selectControl.value,\r\n      revopsType: this.selectedCustomerType,\r\n      nonshoperType: this.nonShoperType,\r\n      customerInfo: {\r\n        name: \"\",\r\n        mobile: \"\",\r\n        countryCode: \"\",\r\n        email: \"\",\r\n        location: \"\",\r\n        age: \"\",\r\n        gender: \"\",\r\n        entryTime: this.Imagedata?.timeSpent?.entryTime || \"\",\r\n        exitTime: this.Imagedata?.timeSpent?.exitTime || \"\",\r\n      },\r\n      description: this.description,\r\n      status: \"submitted\",\r\n      issueList: []\r\n    }]\r\n    this.service\r\n      .submitRevopTagging(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.toaster.getSuccessToast(\"Customer has been tagged successfully.\")\r\n            setTimeout(() => {\r\n\r\n              this.getRevopData()\r\n            }, 1000)\r\n          }\r\n        }\r\n      })\r\n  }\r\n\r\n  onSubmit() {\r\n    this.submitted = true;\r\n    if (this.userForm.invalid) {\r\n      return;\r\n    }\r\n    let payload = [{\r\n      clientId: this.headerData.client,\r\n      storeId: this.storeIdarray[0],\r\n      timeRange: this.selectedTime,\r\n      dateString: this.folderDate,\r\n      tempId: this.Imagedata.tempId,\r\n      processType: this.selectControl.value,\r\n      revopsType: this.selectedCustomerType,\r\n      nonshoperType: \"\",\r\n      customerInfo: {\r\n        name: this.userForm.value.name,\r\n        mobile: this.userForm.value.mobile,\r\n        countryCode: this.userForm.value.countryCode,\r\n        email: this.userForm.value.email,\r\n        location: this.userForm.value.location,\r\n        age: this.userForm.value.age,\r\n        gender: this.userForm.value.gender,\r\n          entryTime: this.Imagedata?.timeSpent?.entryTime || \"\",\r\n        exitTime: this.Imagedata?.timeSpent?.exitTime || \"\",\r\n      },\r\n      description: this.description,\r\n      status: \"submitted\",\r\n      issueList: []\r\n    }]\r\n    this.service\r\n      .submitRevopTagging(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.toaster.getSuccessToast(\"Customer has been tagged successfully.\")\r\n            setTimeout(() => {\r\n              this.getRevopData()\r\n\r\n            }, 1000)\r\n          }\r\n        }\r\n      })\r\n\r\n\r\n\r\n  }\r\n\r\n  isInvalid(fieldName: string): boolean {\r\n    const control = this.userForm.get(fieldName);\r\n    return !!(control && control.invalid && (control.touched || this.submitted));\r\n  }\r\n\r\n\r\n// // get Revops Api \r\n//  getRvpsList :any;\r\n//  getRvpsImageList:any;\r\n// getRevops(){\r\n//   // Replace the following with actual values as needed\r\n//   const storeId = this.storeIdarray && this.storeIdarray.length > 0 ? this.storeIdarray[0] : null;\r\n//   const dateString = this.folderDate || '';\r\n//   const groupByKey = 'time';\r\n//   const type = '';\r\n//   const processType = 'footfall';\r\n//   this.rvpsService.getRvpsListApi(storeId, dateString, groupByKey, type, processType)\r\n//   .pipe(takeUntil(this.destroy$))\r\n//       ?.subscribe({\r\n//           next: (res: any) => {\r\n//             if(res && res.code === 200){\r\n//               this.getRvpsList = res?.data;\r\n\r\n// this.getRvpsImageList = res?.data?.result;\r\n\r\n// } else{\r\n//   this.getRvpsList =[]\r\n//   this.getRvpsImageList =[]\r\n//             }\r\n//           },\r\n//           error:(err) => {\r\n            \r\n//           },\r\n\r\n//       })\r\n// }\r\n\r\n\r\n\r\n// rvpsShow =false;\r\n//   imageViewRvps(obj: any, footfallDate: any){\r\n//     // this.rvpsShow = true;\r\n\r\n//     const modalRef = this.modalService.open(ImgRvpsComponent, {\r\n//       centered: true,\r\n//       size: \"xl\",\r\n//       scrollable: true,\r\n//     });\r\n//     modalRef.componentInstance.Imagedata = obj;\r\n//     modalRef.componentInstance.processType = this.objData.processType;\r\n//     modalRef.componentInstance.footfallDate = footfallDate;\r\n//     modalRef.componentInstance.storeName = this.storeArrayValue;\r\n//     modalRef.componentInstance.storeId = this.storeIdarray\r\n//     modalRef.componentInstance.headerData = this.headerData;\r\n//     modalRef.componentInstance.imageArray = this.getRvpsImageList;\r\n//   }\r\n\r\n}\r\n","<div class=\"card mt-3\">\r\n    <div class=\"card-header mt-3 px-0 border-bottom-0\">\r\n        <div class=\"custom-accordion\">\r\n            <div class=\"custom-accordion-item\">\r\n              <button class=\"mainheading pb-0 custom-accordion-header\" (click)=\"toggleAccordion()\">\r\n                <div class=\"header-row\">\r\n                  <span class=\"img-direc\">Image Directory</span>\r\n                  \r\n                  <span class=\"divider\"></span>\r\n                  <span class=\"accordion-arrow\">\r\n                    <!-- Down arrow for collapsed state, up arrow for expanded state -->\r\n                    <svg *ngIf=\"!isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\" viewBox=\"0 0 16 6\" fill=\"none\">\r\n                      <path d=\"M1 1L5 5L9 1\" stroke=\"#071437\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                    </svg>\r\n                    <svg *ngIf=\"isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\" viewBox=\"0 0 16 6\" fill=\"none\">\r\n                      <path d=\"M1 5L5 1L9 5\" stroke=\"#1b84ff\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                    </svg>\r\n                  </span>\r\n                </div>\r\n              </button>\r\n            </div>\r\n          </div>\r\n          \r\n        \r\n    </div>\r\n   \r\n    <section *ngIf=\"isAccordionExpanded\">\r\n    <ng-template #exportDropdown>\r\n      <div class=\"export-dropdown\" ngbDropdown placement=\"bottom-end\">\r\n        <button type=\"button\" class=\"export-toggle\" ngbDropdownToggle [disabled]=\"exporting\">\r\n          <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n            xmlns=\"http://www.w3.org/2000/svg\">\r\n            <path d=\"M12 16V4M12 4L7 9M12 4l5 5\" stroke=\"currentColor\" stroke-width=\"2\"\r\n              stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n            <path d=\"M4 16v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2\" stroke=\"currentColor\"\r\n              stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n          </svg>\r\n          <span>{{ exporting ? 'Exporting...' : 'Export' }}</span>\r\n          <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n            xmlns=\"http://www.w3.org/2000/svg\">\r\n            <path d=\"M6 9l6 6 6-6\" stroke=\"currentColor\" stroke-width=\"2\"\r\n              stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n          </svg>\r\n        </button>\r\n        <div ngbDropdownMenu class=\"export-menu\">\r\n          <button type=\"button\" class=\"export-item\" ngbDropdownItem\r\n            (click)=\"exportData('summary')\">\r\n            Summary\r\n          </button>\r\n          <button type=\"button\" class=\"export-item\" ngbDropdownItem\r\n            (click)=\"exportData('purchaser')\">\r\n            Purchaser Details\r\n          </button>\r\n        </div>\r\n      </div>\r\n    </ng-template>\r\n    <div class=\"col-md-12 px-5\" *ngIf=\"!hideDoc\">\r\n        <div class=\"switch-form-card\">\r\n            <div class=\"d-flex 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=\"#DAF1FF\" />\r\n                    <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" stroke=\"#EAF8FF\" stroke-width=\"6\" />\r\n                    <path d=\"M23.8333 14.6666L15.5 24.6666H23L22.1667 31.3333L30.5 21.3333H23L23.8333 14.6666Z\"\r\n                        stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                </svg>\r\n                <div class=\"txt-one ms-2\">\r\n                    <ng-container>Examine individual footfall in gallery view with optimal sample images for detailed analysis.</ng-container>\r\n                    <!-- <ng-container *ngIf=\"isMultiple\">Upload multiple stores for configuration</ng-container> -->\r\n                </div>\r\n            </div>\r\n            <div class=\"cursor-pointer\" (click)=\"closeData()\">\r\n                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n                    <path\r\n                        d=\"M18.295 7.115C18.6844 6.72564 18.6844 6.09436 18.295 5.705C17.9056 5.31564 17.2744 5.31564 16.885 5.705L12 10.59L7.115 5.705C6.72564 5.31564 6.09436 5.31564 5.705 5.705C5.31564 6.09436 5.31564 6.72564 5.705 7.115L10.59 12L5.705 16.885C5.31564 17.2744 5.31564 17.9056 5.705 18.295C6.09436 18.6844 6.72564 18.6844 7.115 18.295L12 13.41L16.885 18.295C17.2744 18.6844 17.9056 18.6844 18.295 18.295C18.6844 17.9056 18.6844 17.2744 18.295 16.885L13.41 12L18.295 7.115Z\"\r\n                        fill=\"black\" />\r\n                </svg>\r\n            </div>\r\n\r\n\r\n        </div>\r\n    </div>\r\n    <div *ngIf=\"folderView\" class=\"card-body px-0\">\r\n        <div class=\"d-flex justify-content-end align-items-center px-5\">\r\n            <ng-container *ngTemplateOutlet=\"exportDropdown\"></ng-container>\r\n        </div>\r\n        <div class=\"scroll-container\">\r\n        <div class=\"row\">\r\n            <div class=\"col-md-1 mt-5 text-center\" *ngFor=\"let obj of dateArray;let i = index\">\r\n                <div (click)=\"getimages(i,obj)\">\r\n                    <div *ngIf=\"i === selectIndex;\">\r\n                        <span class=\"cursor-pointer\"><svg width=\"57\" height=\"56\" viewBox=\"0 0 57 56\" fill=\"none\"\r\n                                xmlns=\"http://www.w3.org/2000/svg\">\r\n                                <rect x=\"0.154297\" width=\"56\" height=\"56\" rx=\"12\" fill=\"#33B5FF\" />\r\n                                <path\r\n                                    d=\"M39.8216 36.1667C39.8216 36.7855 39.5758 37.379 39.1382 37.8166C38.7006 38.2542 38.1071 38.5 37.4883 38.5H18.8216C18.2028 38.5 17.6093 38.2542 17.1717 37.8166C16.7341 37.379 16.4883 36.7855 16.4883 36.1667V19.8333C16.4883 19.2145 16.7341 18.621 17.1717 18.1834C17.6093 17.7458 18.2028 17.5 18.8216 17.5H24.6549L26.9883 21H37.4883C38.1071 21 38.7006 21.2458 39.1382 21.6834C39.5758 22.121 39.8216 22.7145 39.8216 23.3333V36.1667Z\"\r\n                                    stroke=\"white\" stroke-width=\"2.33333\" stroke-linecap=\"round\"\r\n                                    stroke-linejoin=\"round\" />\r\n                            </svg></span>\r\n                        <div class=\"text-center mt-2\">{{obj | date:'dd MMM'}}</div>\r\n                    </div>\r\n                    <div *ngIf=\"i !== selectIndex;\">\r\n                        <span class=\"cursor-pointer\"><svg width=\"57\" height=\"56\" viewBox=\"0 0 57 56\" fill=\"none\"\r\n                                xmlns=\"http://www.w3.org/2000/svg\">\r\n                                <rect x=\"0.462891\" width=\"56\" height=\"56\" rx=\"12\" fill=\"#EAF8FF\" />\r\n                                <path\r\n                                    d=\"M40.1302 36.1667C40.1302 36.7855 39.8844 37.379 39.4468 37.8166C39.0092 38.2542 38.4157 38.5 37.7969 38.5H19.1302C18.5114 38.5 17.9179 38.2542 17.4803 37.8166C17.0427 37.379 16.7969 36.7855 16.7969 36.1667V19.8333C16.7969 19.2145 17.0427 18.621 17.4803 18.1834C17.9179 17.7458 18.5114 17.5 19.1302 17.5H24.9635L27.2969 21H37.7969C38.4157 21 39.0092 21.2458 39.4468 21.6834C39.8844 22.121 40.1302 22.7145 40.1302 23.3333V36.1667Z\"\r\n                                    stroke=\"#00A3FF\" stroke-width=\"2.33333\" stroke-linecap=\"round\"\r\n                                    stroke-linejoin=\"round\" />\r\n                            </svg></span>\r\n                        <div class=\"text-center mt-2\">{{obj | date:'dd MMM'}}</div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n</div>\r\n       \r\n    </div>\r\n    <div *ngIf=\"!folderView\" class=\"card-body\">\r\n        <section *ngIf=\"!imageFlow\">\r\n        <div class=\"row\">\r\n            <div class=\"d-flex flex-shrink-0 mt-3 justify-content-between align-items-center px-0\">\r\n                <span *ngIf=\"backnav\" class=\"cursor-pointer\" (click)=\"backToFootfall()\">\r\n                    <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\r\n                        xmlns=\"http://www.w3.org/2000/svg\">\r\n                        <g filter=\"url(#filter0_d_2585_7036)\">\r\n                            <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\r\n                            <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n                            <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\r\n                                stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n                                stroke-linejoin=\"round\" />\r\n                        </g>\r\n                        <defs>\r\n                            <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\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_2585_7036\" />\r\n                                <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\r\n                                    result=\"shape\" />\r\n                            </filter>\r\n                        </defs>\r\n                    </svg>\r\n                </span>\r\n                <span class=\"img-direc ms-2\">{{folderDate | date:'dd MMM, yyyy'}}</span>\r\n\r\n                <div class=\"ms-auto d-flex align-items-center gap-3\">\r\n                    <form *ngIf=\"!normalize && !clientData?.isFootfallView\" [formGroup]=\"form\" class=\"text-end mb-0\">\r\n                      <lib-reactive-select\r\n                        [formControl]=\"selectControl\"\r\n                        [idField]=\"'value'\"\r\n                        [nameField]=\"'label'\"\r\n                        [data]=\"datasets\"\r\n                        class=\"w-100 text-start\"\r\n                        (valueChange)=\"onValueChange($event)\">\r\n                      </lib-reactive-select>\r\n                    </form>\r\n                    <ng-container *ngTemplateOutlet=\"exportDropdown\"></ng-container>\r\n                  </div>\r\n            </div>\r\n    <div  class=\"d-flex mt-2 mb-2 w-100 overflow-x px-0\">\r\n        <ng-container *ngIf=\"this.headerData?.client !=='459'\">\r\n        <div  class=\"col text-nowrap\" *ngFor=\"let obj of objectsArray\">\r\n            <ul *ngIf=\"lengthValue\" class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\r\n                <li class=\"nav-item cursor-pointer\">\r\n                    <a (click)=\"selectedTimes(obj.folderName)\"\r\n                       [ngClass]=\"selectedTime === obj?.folderName ? 'active' : ''\" class=\"nav-link cursor-pointer no-border mx-3 mb-2\">\r\n                        {{obj?.folderName}}<span class=\"mx-2 \" [ngClass]=\"selectedTime === obj?.folderName ? 'badge-num-primary' :'badge-num-muted'\">{{obj?.count?obj?.count:0}}</span>\r\n                    </a>\r\n                </li>\r\n            </ul>\r\n        </div>\r\n        </ng-container>\r\n        <ng-container *ngIf=\"this.headerData?.client ==='459'\">\r\n        <div  class=\"col text-nowrap\" *ngFor=\"let obj of objectsArray.slice(0, -1)\">\r\n            <ul *ngIf=\"lengthValue\" class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\r\n                <li class=\"nav-item cursor-pointer\">\r\n                    <a (click)=\"selectedTimes(obj.folderName)\"\r\n                       [ngClass]=\"selectedTime === obj?.folderName ? 'active' : ''\" class=\"nav-link cursor-pointer no-border mx-3 mb-2\">\r\n                        {{obj?.folderName}}<span class=\"mx-2 \" [ngClass]=\"selectedTime === obj?.folderName ? 'badge-num-primary' :'badge-num-muted'\">{{obj?.count?obj?.count:0}}</span>\r\n                    </a>\r\n                </li>\r\n            </ul>\r\n        </div>\r\n    </ng-container>\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 *ngIf=\"normalize\" class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n                    <img class=\"img-nodata1\" src=\"./assets/tango/Icons/not-applicable.svg\" alt=\"\">\r\n                    <div class=\"nodata-title mt-3\">Data Not Found</div>\r\n                    <div class=\"nodata-sub\">Normalized data is not applicable</div>\r\n                </div>\r\n                <div *ngIf=\"!normalize\" class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n                    <img class=\"img-nodata\" 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 image directory</div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n        <div class=\"row px-0 img-traffic contain high-400px scroll-y\" *ngIf=\"!noData && !loading\">\r\n            <div  class=\"col-md-3 border-gray mx-2 p-2 mt-5\" *ngFor=\"let obj of imagesArrayData\">\r\n                <section *ngIf=\"headerData?.client ==='11'\">\r\n                      <img class=\"img-src cursor-pointer\" [src]=\"obj.images.entryTimeImage\" (error)=\"obj?.images.entryTimeImage = null\" alt=\"\" (click)=\"imageView(obj,objData.footfallDate)\">    <!--(click)=\"imageView(obj,objData.footfallDate)\" -->\r\n                </section>\r\n                  <section *ngIf=\"headerData.client !=='11'\">\r\n                      <img *ngIf=\"obj.images.entryTimeImage&&clientData?.isRevops\" class=\"img-src cursor-pointer\" [src]=\"obj.images.entryTimeImage\" (error)=\"obj?.images.entryTimeImage = null\" alt=\"\" (click)=\"revopTagging(obj)\">\r\n                  </section>\r\n                <img *ngIf=\"obj.images.entryTimeImage&&!clientData?.isRevops\" class=\"img-src cursor-pointer\" [src]=\"obj.images.entryTimeImage\" (error)=\"obj?.images.entryTimeImage = null\" alt=\"\" (click)=\"imageView(obj,objData.footfallDate)\">\r\n                <div *ngIf=\"!obj.images.entryTimeImage\" class=\"no-preview\">\r\n                    <span class=\"mb-5\" >\r\n                        <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\r\n                            xmlns=\"http://www.w3.org/2000/svg\">\r\n                            <g id=\"Group\">\r\n                                <path id=\"Vector\"\r\n                                    d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\r\n                                    stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                    stroke-linejoin=\"round\" />\r\n                                <path id=\"Vector_2\"\r\n                                    d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\r\n                                    stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                    stroke-linejoin=\"round\" />\r\n                            </g>\r\n                        </svg>\r\n\r\n                    </span>\r\n                    <span class=\"header mb-5 text-center\">Preview not available</span>\r\n                    <span class=\"description mb-5 text-center\">The selected camera is not available at the\r\n                        moment.</span>\r\n                </div>\r\n                <div class=\"row px-2 mb-2\">\r\n                    <div class=\"col-md-7\">\r\n                        <div class=\"py-2 img-doc-directory\"><span class=\"badge badge-light-info\">{{obj.tempId}}</span> \r\n                            <!-- <span *ngIf=\"selectControl.value ==='missedOpportunity'\" class=\"badge badge-light-success ms-2\">Missed Opportunity</span>\r\n                            <span *ngIf=\"selectControl.value ==='bounced'\" class=\"badge badge-light-success ms-2\">Bounced Footfall</span> -->\r\n                            <span *ngIf=\"obj?.revopsType || selectControl.value as value\"\r\n                            class=\"badge ms-2\"\r\n                            [ngClass]=\"{\r\n                              'badge-light-primary': value === 'footfall'|| !value ,\r\n                              'badge-light-success':  value === 'purchaser',\r\n                              'badge-light-warning': value === 'nonShopper',\r\n                              'badge-light-danger': value === 'bounced' || value === 'engager' || value === 'missedOpportunity' || value === 'conversion',\r\n                              \r\n                            }\">\r\n                        {{\r\n                          value === 'purchaser' ? 'Purchaser' :\r\n                          value === 'nonShopper' ? 'Non Shopper' :\r\n                          value === 'missedOpportunity' ? 'Missed Opportunity' :\r\n                          (value | titlecase)\r\n                        }}\r\n                      </span>\r\n                        </div>\r\n                        <div class=\"py-2 img-doc-time\">Entry Time</div>\r\n                        <!-- <div *ngIf=\"footfallDataShow !=='tracking-enabled'\" class=\"py-2 img-doc-time\">Exit Time 5</div> -->\r\n                        <!-- <div *ngIf=\"footfallDataShow !=='tracking-enabled'\" class=\"py-2 img-doc-time\">Total Time Spent</div> -->\r\n                    </div>\r\n                    <div class=\"col-md-5 text-end\" >\r\n                         <div class=\"py-2 mt-4\" *ngIf=\"!clientData?.isRevops\"></div>\r\n                         \r\n                        <div class=\"py-2\" *ngIf=\"clientData?.isRevops\">\r\n                              <section *ngIf=\"headerData.client ==='11'\">\r\n <span *ngIf=\"!obj?.revopsType||obj?.revopsType===''\" ngbTooltip=\"Yet to tag the customer\" container=\"body\" placement=\"top-end top bottom-end auto\"> <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"16\" viewBox=\"0 0 17 16\" fill=\"none\">\r\n                                      <g clip-path=\"url(#clip0_10335_22852)\">\r\n                                        <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8.37328 0.00201606C7.20932 -0.023315 6.05385 0.205711 4.98755 0.673106C3.92125 1.1405 2.96981 1.835 2.19967 2.70811C1.42952 3.58123 0.859225 4.61192 0.528596 5.72822C0.197966 6.84453 0.114971 8.01955 0.285404 9.17124C0.455837 10.3229 0.875591 11.4236 1.51536 12.3963C2.15513 13.369 2.9995 14.1903 3.98951 14.8029C4.97953 15.4156 6.09133 15.8048 7.2473 15.9433C8.40326 16.0818 9.57554 15.9664 10.6823 15.605C10.8714 15.5432 11.0282 15.4088 11.1182 15.2314C11.2082 15.054 11.2241 14.8481 11.1623 14.659C11.1005 14.4699 10.9661 14.3131 10.7887 14.2231C10.6113 14.1331 10.4054 14.1172 10.2163 14.179C9.01359 14.5717 7.72242 14.6049 6.50114 14.2745C5.27986 13.9441 4.18155 13.2644 3.34092 12.3189C2.50028 11.3734 1.95386 10.2031 1.76867 8.95151C1.58348 7.69995 1.76757 6.42155 2.29837 5.27309C2.82916 4.12463 3.68358 3.15604 4.75684 2.48611C5.83011 1.81618 7.07555 1.47403 8.34044 1.50163C9.60533 1.52922 10.8347 1.92536 11.8777 2.64147C12.9207 3.35757 13.7321 4.3625 14.2123 5.53302C14.2877 5.71708 14.4332 5.86362 14.6167 5.94042C14.7076 5.97845 14.805 5.9982 14.9035 5.99856C15.002 5.99892 15.0996 5.97988 15.1908 5.94252C15.2819 5.90516 15.3648 5.85021 15.4347 5.78082C15.5046 5.71142 15.5602 5.62894 15.5982 5.53808C15.6362 5.44721 15.656 5.34975 15.6563 5.25126C15.6567 5.15276 15.6376 5.05515 15.6003 4.96402C15.0093 3.52331 14.0107 2.28639 12.7269 1.40498C11.4432 0.523571 9.93012 0.0359815 8.37328 0.00201606ZM8.94828 3.75002C8.94828 3.5511 8.86926 3.36034 8.72861 3.21969C8.58796 3.07903 8.39719 3.00002 8.19828 3.00002C7.99937 3.00002 7.8086 3.07903 7.66795 3.21969C7.5273 3.36034 7.44828 3.5511 7.44828 3.75002V7.69002L5.41428 9.72302C5.34059 9.79168 5.28149 9.87448 5.2405 9.96648C5.19951 10.0585 5.17746 10.1578 5.17569 10.2585C5.17391 10.3592 5.19244 10.4592 5.23016 10.5526C5.26788 10.646 5.32402 10.7308 5.39524 10.8021C5.46646 10.8733 5.55129 10.9294 5.64468 10.9671C5.73807 11.0049 5.8381 11.0234 5.9388 11.0216C6.03951 11.0198 6.13882 10.9978 6.23082 10.9568C6.32282 10.9158 6.40562 10.8567 6.47428 10.783L8.72828 8.53002L8.94828 8.31002V3.75002ZM15.1983 15C15.1983 15.2652 15.0929 15.5196 14.9054 15.7071C14.7179 15.8947 14.4635 16 14.1983 16C13.9331 16 13.6787 15.8947 13.4912 15.7071C13.3036 15.5196 13.1983 15.2652 13.1983 15C13.1983 14.7348 13.3036 14.4804 13.4912 14.2929C13.6787 14.1054 13.9331 14 14.1983 14C14.4635 14 14.7179 14.1054 14.9054 14.2929C15.0929 14.4804 15.1983 14.7348 15.1983 15ZM14.9483 8.75002C14.9483 8.5511 14.8693 8.36034 14.7286 8.21969C14.588 8.07903 14.3972 8.00002 14.1983 8.00002C13.9994 8.00002 13.8086 8.07903 13.668 8.21969C13.5273 8.36034 13.4483 8.5511 13.4483 8.75002V12.25C13.4483 12.4489 13.5273 12.6397 13.668 12.7803C13.8086 12.921 13.9994 13 14.1983 13C14.3972 13 14.588 12.921 14.7286 12.7803C14.8693 12.6397 14.9483 12.4489 14.9483 12.25V8.75002Z\" fill=\"#F79009\"/>\r\n                                        <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15.1858 4.10379C15.0996 3.94907 15.0083 3.79744 14.9121 3.64911C14.5747 3.12843 14.1776 2.64854 13.7289 2.21932C13.4187 1.92257 13.0839 1.65004 12.7269 1.40498C12.7269 1.40493 12.727 1.40504 12.7269 1.40498C12.5144 1.25906 12.2954 1.12379 12.0711 0.999729C11.8255 0.863893 11.5734 0.741322 11.3159 0.632377C10.3882 0.239873 9.39006 0.024199 8.37328 0.00201606C8.37324 0.00201518 8.37332 0.00201694 8.37328 0.00201606C8.31496 0.00074779 8.25655 0.000115387 8.19828 0.000122124C7.1276 0.00024592 6.06754 0.215304 5.08108 0.632816C5.04983 0.646043 5.01865 0.659473 4.98755 0.673106C4.76115 0.772343 4.53993 0.88182 4.32452 1.00107C4.20201 1.06889 4.08139 1.13987 3.96275 1.21393C3.30756 1.62296 2.71329 2.12581 2.19967 2.70811C1.68602 3.29043 1.26127 3.94285 0.937232 4.644C0.775415 4.99414 0.638713 5.35643 0.528596 5.72822C0.19799 6.84445 0.114983 8.01938 0.285366 9.17099C0.285354 9.17091 0.285379 9.17108 0.285366 9.17099C0.4558 10.3227 0.875591 11.4236 1.51536 12.3963C1.72835 12.7201 1.96402 13.0271 2.22019 13.3153C2.73349 13.8927 3.32909 14.3943 3.98951 14.8029C4.64967 15.2115 5.36398 15.5206 6.10943 15.7224C6.4819 15.8232 6.86215 15.8971 7.2473 15.9433C7.29123 15.9486 7.33519 15.9535 7.37917 15.958C8.01492 16.0235 8.65464 16.0124 9.28478 15.9261C9.52146 15.8937 9.75678 15.8507 9.99004 15.7971C10.223 15.7436 10.4539 15.6796 10.6819 15.6051C10.6818 15.6052 10.6821 15.6051 10.6819 15.6051C10.7196 15.5928 10.7563 15.5775 10.7911 15.5597C10.9312 15.488 11.0461 15.3735 11.1182 15.2314C11.1554 15.1581 11.18 15.0799 11.1916 15C11.2081 14.8867 11.1985 14.77 11.1623 14.659C11.1005 14.4699 10.9661 14.3131 10.7887 14.2231C10.6114 14.1331 10.4056 14.1172 10.2166 14.1789C10.2165 14.1789 10.2168 14.1789 10.2166 14.1789C10.1121 14.213 10.0065 14.2446 9.90073 14.2733C9.74848 14.3146 9.59506 14.3503 9.44078 14.3803C9.37146 14.3938 9.30196 14.4062 9.23233 14.4174C8.8548 14.4782 8.47302 14.5055 8.09144 14.4992C7.99568 14.4976 7.89992 14.4939 7.80426 14.4881C7.6779 14.4804 7.55168 14.4691 7.42578 14.454C7.36133 14.4463 7.29696 14.4376 7.23269 14.4279C6.98693 14.391 6.74267 14.3399 6.50114 14.2745C6.32933 14.228 6.15995 14.1746 5.99337 14.1146C5.56809 13.9612 5.16112 13.7642 4.7787 13.5276C4.73373 13.4998 4.68911 13.4714 4.64483 13.4425C4.27003 13.1978 3.92028 12.9142 3.60174 12.5956C3.51229 12.5061 3.42531 12.4138 3.34092 12.3189C3.13139 12.0832 2.94014 11.8336 2.76821 11.5722C2.76385 11.5656 2.7595 11.559 2.75516 11.5523C2.47964 11.1301 2.25437 10.6775 2.08368 10.2039C1.93807 9.79993 1.83218 9.38061 1.76871 8.95174C1.76869 8.95166 1.76872 8.95182 1.76871 8.95174C1.74125 8.76621 1.72188 8.57986 1.71059 8.39367C1.70471 8.29683 1.70101 8.19998 1.69948 8.10317C1.68902 7.44355 1.77905 6.78626 1.96631 6.15405C2.0552 5.85394 2.16601 5.55947 2.29837 5.27309C2.56378 4.69883 2.91011 4.16954 3.32425 3.70007C3.36618 3.65254 3.4088 3.60563 3.4521 3.55934C3.83649 3.14848 4.27458 2.78714 4.75684 2.48611C5.02452 2.31903 5.30291 2.17233 5.58963 2.04668C5.80471 1.95242 6.02449 1.87 6.24796 1.7997C6.87628 1.60202 7.5338 1.50012 8.19828 1.50008C8.24563 1.50008 8.29302 1.50059 8.34044 1.50163C8.95745 1.51511 9.5662 1.61629 10.1488 1.79952C10.7605 1.99189 11.3435 2.27472 11.8777 2.64147C11.8776 2.64142 11.8778 2.64151 11.8777 2.64147C12.0839 2.78304 12.2812 2.93603 12.4685 3.09922C12.6351 3.24436 12.7939 3.39767 12.9444 3.55848C13.0974 3.72197 13.2419 3.89322 13.3771 4.07152C13.5555 4.3066 13.7179 4.55395 13.8631 4.81195C13.9427 4.95336 14.0171 5.09798 14.0861 5.24552C14.1253 5.32914 14.1627 5.41371 14.1983 5.49916C14.203 5.51043 14.2076 5.52172 14.2123 5.53302C14.2122 5.53292 14.2123 5.53312 14.2123 5.53302C14.2878 5.71693 14.4333 5.86367 14.6167 5.94042C14.7076 5.97845 14.805 5.9982 14.9035 5.99856C15.002 5.99892 15.0996 5.97988 15.1908 5.94252C15.2819 5.90516 15.3648 5.85021 15.4347 5.78082C15.5046 5.71142 15.5602 5.62894 15.5982 5.53808C15.6362 5.44722 15.656 5.34975 15.6563 5.25126C15.6567 5.15276 15.6376 5.05516 15.6003 4.96402C15.6002 4.9639 15.6003 4.96414 15.6003 4.96402C15.5091 4.74187 15.4082 4.5242 15.2981 4.31229C15.2617 4.2422 15.2242 4.17269 15.1858 4.10379ZM8.94828 3.75002C8.94828 3.5511 8.86926 3.36034 8.72861 3.21969C8.61405 3.10512 8.46624 3.03145 8.30786 3.00806C8.27188 3.00276 8.23508 3.00002 8.19828 3.00002C7.99937 3.00002 7.8086 3.07903 7.66795 3.21969C7.5273 3.36034 7.44828 3.5511 7.44828 3.75002V7.69002L5.41452 9.72278C5.40159 9.73483 5.38887 9.74755 5.37686 9.76044C5.32041 9.82102 5.2743 9.89062 5.2405 9.96648C5.19951 10.0585 5.17746 10.1578 5.17569 10.2585C5.17391 10.3592 5.19244 10.4592 5.23016 10.5526C5.23863 10.5736 5.24804 10.5942 5.25834 10.6142C5.29387 10.6834 5.34002 10.7468 5.39524 10.8021C5.46646 10.8733 5.55129 10.9294 5.64468 10.9671C5.73807 11.0049 5.8381 11.0234 5.9388 11.0216C6.03951 11.0198 6.13882 10.9978 6.23082 10.9568C6.30668 10.923 6.37628 10.8769 6.43686 10.8204C6.44966 10.8085 6.46206 10.7961 6.47403 10.7833C6.47395 10.7834 6.47411 10.7832 6.47403 10.7833L8.94828 8.31002V3.75002ZM13.4483 12.25C13.4483 12.4489 13.5273 12.6397 13.668 12.7803C13.8086 12.921 13.9994 13 14.1983 13C14.3895 13 14.5732 12.927 14.7121 12.7963C14.7177 12.7911 14.7232 12.7858 14.7286 12.7803C14.8693 12.6397 14.9483 12.4489 14.9483 12.25V10.0566C14.7015 10.0191 14.4509 10 14.1983 10C13.9457 10 13.695 10.0191 13.4483 10.0566V12.25ZM13.4483 9.76927C13.6932 9.84828 13.9441 9.90719 14.1983 9.94551C14.4264 9.97989 14.6572 9.99769 14.8889 9.99854C14.9087 9.99861 14.9285 9.99856 14.9483 9.99838V8.75002C14.9483 8.65356 14.9297 8.55901 14.8945 8.47117C14.8571 8.37787 14.8011 8.29213 14.7286 8.21969C14.588 8.07904 14.3972 8.00002 14.1983 8.00002C13.9994 8.00002 13.8086 8.07904 13.668 8.21969C13.665 8.22268 13.662 8.22569 13.6591 8.22872C13.5282 8.3641 13.453 8.54376 13.4485 8.73188C13.4484 8.73792 13.4483 8.74397 13.4483 8.75002V9.76927ZM15.1963 15.0626C15.1976 15.0418 15.1983 15.0209 15.1983 15C15.1983 14.9984 15.1983 14.9968 15.1983 14.9951C15.197 14.7317 15.0918 14.4793 14.9054 14.2929C14.7178 14.1054 14.4635 14 14.1983 14C13.9331 14 13.6787 14.1054 13.4912 14.2929C13.3036 14.4804 13.1983 14.7348 13.1983 15C13.1983 15.2652 13.3036 15.5196 13.4912 15.7071C13.6787 15.8947 13.9331 16 14.1983 16C14.4635 16 14.7178 15.8947 14.9054 15.7071C15.0781 15.5344 15.1811 15.305 15.1963 15.0626Z\" fill=\"#F79009\"/>\r\n                                      </g>\r\n                                      <defs>\r\n                                        <clipPath id=\"clip0_10335_22852\">\r\n                                          <rect width=\"16\" height=\"16\" fill=\"white\" transform=\"translate(0.199219)\"/>\r\n                                        </clipPath>\r\n                                      </defs>\r\n                                    </svg>\r\n                                    </span>\r\n                                    <span *ngIf=\"obj?.revopsType&&obj?.revopsType!==''\"  ngbTooltip=\"Customer Tagging is Done\" container=\"body\" placement=\"top-end top bottom-end auto\"> <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"16\" viewBox=\"0 0 17 16\" fill=\"none\">\r\n                                      <g clip-path=\"url(#clip0_10335_22856)\">\r\n                                        <path d=\"M15.0638 7.38662V7.99995C15.063 9.43756 14.5975 10.8364 13.7367 11.9878C12.8759 13.1393 11.666 13.9816 10.2874 14.3892C8.90876 14.7968 7.43531 14.7479 6.08678 14.2497C4.73826 13.7515 3.58691 12.8307 2.80444 11.6247C2.02198 10.4186 1.65033 8.99199 1.74492 7.55749C1.83951 6.12299 2.39527 4.7575 3.32932 3.66467C4.26337 2.57183 5.52566 1.81021 6.92793 1.49338C8.3302 1.17656 9.79731 1.32151 11.1105 1.90662M15.0638 2.66662L8.39714 9.33995L6.39714 7.33995\" stroke=\"#12B76A\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                                      </g>\r\n                                      <defs>\r\n                                        <clipPath id=\"clip0_10335_22856\">\r\n                                          <rect width=\"16\" height=\"16\" fill=\"white\" transform=\"translate(0.398438)\"/>\r\n                                        </clipPath>\r\n                                      </defs>\r\n                                    </svg>\r\n                                    </span>\r\n                              </section>\r\n                             <section *ngIf=\"headerData.client !=='11'\">\r\n\r\n                                 <span class=\"cursor-pointer\" *ngIf=\"!obj?.revopsType||obj?.revopsType===''\" ngbTooltip=\"Yet to tag the customer\" container=\"body\" (click)=\"revopTagging(obj)\" placement=\"top-end top bottom-end auto\"> <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"16\" viewBox=\"0 0 17 16\" fill=\"none\">\r\n                                      <g clip-path=\"url(#clip0_10335_22852)\">\r\n                                        <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8.37328 0.00201606C7.20932 -0.023315 6.05385 0.205711 4.98755 0.673106C3.92125 1.1405 2.96981 1.835 2.19967 2.70811C1.42952 3.58123 0.859225 4.61192 0.528596 5.72822C0.197966 6.84453 0.114971 8.01955 0.285404 9.17124C0.455837 10.3229 0.875591 11.4236 1.51536 12.3963C2.15513 13.369 2.9995 14.1903 3.98951 14.8029C4.97953 15.4156 6.09133 15.8048 7.2473 15.9433C8.40326 16.0818 9.57554 15.9664 10.6823 15.605C10.8714 15.5432 11.0282 15.4088 11.1182 15.2314C11.2082 15.054 11.2241 14.8481 11.1623 14.659C11.1005 14.4699 10.9661 14.3131 10.7887 14.2231C10.6113 14.1331 10.4054 14.1172 10.2163 14.179C9.01359 14.5717 7.72242 14.6049 6.50114 14.2745C5.27986 13.9441 4.18155 13.2644 3.34092 12.3189C2.50028 11.3734 1.95386 10.2031 1.76867 8.95151C1.58348 7.69995 1.76757 6.42155 2.29837 5.27309C2.82916 4.12463 3.68358 3.15604 4.75684 2.48611C5.83011 1.81618 7.07555 1.47403 8.34044 1.50163C9.60533 1.52922 10.8347 1.92536 11.8777 2.64147C12.9207 3.35757 13.7321 4.3625 14.2123 5.53302C14.2877 5.71708 14.4332 5.86362 14.6167 5.94042C14.7076 5.97845 14.805 5.9982 14.9035 5.99856C15.002 5.99892 15.0996 5.97988 15.1908 5.94252C15.2819 5.90516 15.3648 5.85021 15.4347 5.78082C15.5046 5.71142 15.5602 5.62894 15.5982 5.53808C15.6362 5.44721 15.656 5.34975 15.6563 5.25126C15.6567 5.15276 15.6376 5.05515 15.6003 4.96402C15.0093 3.52331 14.0107 2.28639 12.7269 1.40498C11.4432 0.523571 9.93012 0.0359815 8.37328 0.00201606ZM8.94828 3.75002C8.94828 3.5511 8.86926 3.36034 8.72861 3.21969C8.58796 3.07903 8.39719 3.00002 8.19828 3.00002C7.99937 3.00002 7.8086 3.07903 7.66795 3.21969C7.5273 3.36034 7.44828 3.5511 7.44828 3.75002V7.69002L5.41428 9.72302C5.34059 9.79168 5.28149 9.87448 5.2405 9.96648C5.19951 10.0585 5.17746 10.1578 5.17569 10.2585C5.17391 10.3592 5.19244 10.4592 5.23016 10.5526C5.26788 10.646 5.32402 10.7308 5.39524 10.8021C5.46646 10.8733 5.55129 10.9294 5.64468 10.9671C5.73807 11.0049 5.8381 11.0234 5.9388 11.0216C6.03951 11.0198 6.13882 10.9978 6.23082 10.9568C6.32282 10.9158 6.40562 10.8567 6.47428 10.783L8.72828 8.53002L8.94828 8.31002V3.75002ZM15.1983 15C15.1983 15.2652 15.0929 15.5196 14.9054 15.7071C14.7179 15.8947 14.4635 16 14.1983 16C13.9331 16 13.6787 15.8947 13.4912 15.7071C13.3036 15.5196 13.1983 15.2652 13.1983 15C13.1983 14.7348 13.3036 14.4804 13.4912 14.2929C13.6787 14.1054 13.9331 14 14.1983 14C14.4635 14 14.7179 14.1054 14.9054 14.2929C15.0929 14.4804 15.1983 14.7348 15.1983 15ZM14.9483 8.75002C14.9483 8.5511 14.8693 8.36034 14.7286 8.21969C14.588 8.07903 14.3972 8.00002 14.1983 8.00002C13.9994 8.00002 13.8086 8.07903 13.668 8.21969C13.5273 8.36034 13.4483 8.5511 13.4483 8.75002V12.25C13.4483 12.4489 13.5273 12.6397 13.668 12.7803C13.8086 12.921 13.9994 13 14.1983 13C14.3972 13 14.588 12.921 14.7286 12.7803C14.8693 12.6397 14.9483 12.4489 14.9483 12.25V8.75002Z\" fill=\"#F79009\"/>\r\n                                        <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15.1858 4.10379C15.0996 3.94907 15.0083 3.79744 14.9121 3.64911C14.5747 3.12843 14.1776 2.64854 13.7289 2.21932C13.4187 1.92257 13.0839 1.65004 12.7269 1.40498C12.7269 1.40493 12.727 1.40504 12.7269 1.40498C12.5144 1.25906 12.2954 1.12379 12.0711 0.999729C11.8255 0.863893 11.5734 0.741322 11.3159 0.632377C10.3882 0.239873 9.39006 0.024199 8.37328 0.00201606C8.37324 0.00201518 8.37332 0.00201694 8.37328 0.00201606C8.31496 0.00074779 8.25655 0.000115387 8.19828 0.000122124C7.1276 0.00024592 6.06754 0.215304 5.08108 0.632816C5.04983 0.646043 5.01865 0.659473 4.98755 0.673106C4.76115 0.772343 4.53993 0.88182 4.32452 1.00107C4.20201 1.06889 4.08139 1.13987 3.96275 1.21393C3.30756 1.62296 2.71329 2.12581 2.19967 2.70811C1.68602 3.29043 1.26127 3.94285 0.937232 4.644C0.775415 4.99414 0.638713 5.35643 0.528596 5.72822C0.19799 6.84445 0.114983 8.01938 0.285366 9.17099C0.285354 9.17091 0.285379 9.17108 0.285366 9.17099C0.4558 10.3227 0.875591 11.4236 1.51536 12.3963C1.72835 12.7201 1.96402 13.0271 2.22019 13.3153C2.73349 13.8927 3.32909 14.3943 3.98951 14.8029C4.64967 15.2115 5.36398 15.5206 6.10943 15.7224C6.4819 15.8232 6.86215 15.8971 7.2473 15.9433C7.29123 15.9486 7.33519 15.9535 7.37917 15.958C8.01492 16.0235 8.65464 16.0124 9.28478 15.9261C9.52146 15.8937 9.75678 15.8507 9.99004 15.7971C10.223 15.7436 10.4539 15.6796 10.6819 15.6051C10.6818 15.6052 10.6821 15.6051 10.6819 15.6051C10.7196 15.5928 10.7563 15.5775 10.7911 15.5597C10.9312 15.488 11.0461 15.3735 11.1182 15.2314C11.1554 15.1581 11.18 15.0799 11.1916 15C11.2081 14.8867 11.1985 14.77 11.1623 14.659C11.1005 14.4699 10.9661 14.3131 10.7887 14.2231C10.6114 14.1331 10.4056 14.1172 10.2166 14.1789C10.2165 14.1789 10.2168 14.1789 10.2166 14.1789C10.1121 14.213 10.0065 14.2446 9.90073 14.2733C9.74848 14.3146 9.59506 14.3503 9.44078 14.3803C9.37146 14.3938 9.30196 14.4062 9.23233 14.4174C8.8548 14.4782 8.47302 14.5055 8.09144 14.4992C7.99568 14.4976 7.89992 14.4939 7.80426 14.4881C7.6779 14.4804 7.55168 14.4691 7.42578 14.454C7.36133 14.4463 7.29696 14.4376 7.23269 14.4279C6.98693 14.391 6.74267 14.3399 6.50114 14.2745C6.32933 14.228 6.15995 14.1746 5.99337 14.1146C5.56809 13.9612 5.16112 13.7642 4.7787 13.5276C4.73373 13.4998 4.68911 13.4714 4.64483 13.4425C4.27003 13.1978 3.92028 12.9142 3.60174 12.5956C3.51229 12.5061 3.42531 12.4138 3.34092 12.3189C3.13139 12.0832 2.94014 11.8336 2.76821 11.5722C2.76385 11.5656 2.7595 11.559 2.75516 11.5523C2.47964 11.1301 2.25437 10.6775 2.08368 10.2039C1.93807 9.79993 1.83218 9.38061 1.76871 8.95174C1.76869 8.95166 1.76872 8.95182 1.76871 8.95174C1.74125 8.76621 1.72188 8.57986 1.71059 8.39367C1.70471 8.29683 1.70101 8.19998 1.69948 8.10317C1.68902 7.44355 1.77905 6.78626 1.96631 6.15405C2.0552 5.85394 2.16601 5.55947 2.29837 5.27309C2.56378 4.69883 2.91011 4.16954 3.32425 3.70007C3.36618 3.65254 3.4088 3.60563 3.4521 3.55934C3.83649 3.14848 4.27458 2.78714 4.75684 2.48611C5.02452 2.31903 5.30291 2.17233 5.58963 2.04668C5.80471 1.95242 6.02449 1.87 6.24796 1.7997C6.87628 1.60202 7.5338 1.50012 8.19828 1.50008C8.24563 1.50008 8.29302 1.50059 8.34044 1.50163C8.95745 1.51511 9.5662 1.61629 10.1488 1.79952C10.7605 1.99189 11.3435 2.27472 11.8777 2.64147C11.8776 2.64142 11.8778 2.64151 11.8777 2.64147C12.0839 2.78304 12.2812 2.93603 12.4685 3.09922C12.6351 3.24436 12.7939 3.39767 12.9444 3.55848C13.0974 3.72197 13.2419 3.89322 13.3771 4.07152C13.5555 4.3066 13.7179 4.55395 13.8631 4.81195C13.9427 4.95336 14.0171 5.09798 14.0861 5.24552C14.1253 5.32914 14.1627 5.41371 14.1983 5.49916C14.203 5.51043 14.2076 5.52172 14.2123 5.53302C14.2122 5.53292 14.2123 5.53312 14.2123 5.53302C14.2878 5.71693 14.4333 5.86367 14.6167 5.94042C14.7076 5.97845 14.805 5.9982 14.9035 5.99856C15.002 5.99892 15.0996 5.97988 15.1908 5.94252C15.2819 5.90516 15.3648 5.85021 15.4347 5.78082C15.5046 5.71142 15.5602 5.62894 15.5982 5.53808C15.6362 5.44722 15.656 5.34975 15.6563 5.25126C15.6567 5.15276 15.6376 5.05516 15.6003 4.96402C15.6002 4.9639 15.6003 4.96414 15.6003 4.96402C15.5091 4.74187 15.4082 4.5242 15.2981 4.31229C15.2617 4.2422 15.2242 4.17269 15.1858 4.10379ZM8.94828 3.75002C8.94828 3.5511 8.86926 3.36034 8.72861 3.21969C8.61405 3.10512 8.46624 3.03145 8.30786 3.00806C8.27188 3.00276 8.23508 3.00002 8.19828 3.00002C7.99937 3.00002 7.8086 3.07903 7.66795 3.21969C7.5273 3.36034 7.44828 3.5511 7.44828 3.75002V7.69002L5.41452 9.72278C5.40159 9.73483 5.38887 9.74755 5.37686 9.76044C5.32041 9.82102 5.2743 9.89062 5.2405 9.96648C5.19951 10.0585 5.17746 10.1578 5.17569 10.2585C5.17391 10.3592 5.19244 10.4592 5.23016 10.5526C5.23863 10.5736 5.24804 10.5942 5.25834 10.6142C5.29387 10.6834 5.34002 10.7468 5.39524 10.8021C5.46646 10.8733 5.55129 10.9294 5.64468 10.9671C5.73807 11.0049 5.8381 11.0234 5.9388 11.0216C6.03951 11.0198 6.13882 10.9978 6.23082 10.9568C6.30668 10.923 6.37628 10.8769 6.43686 10.8204C6.44966 10.8085 6.46206 10.7961 6.47403 10.7833C6.47395 10.7834 6.47411 10.7832 6.47403 10.7833L8.94828 8.31002V3.75002ZM13.4483 12.25C13.4483 12.4489 13.5273 12.6397 13.668 12.7803C13.8086 12.921 13.9994 13 14.1983 13C14.3895 13 14.5732 12.927 14.7121 12.7963C14.7177 12.7911 14.7232 12.7858 14.7286 12.7803C14.8693 12.6397 14.9483 12.4489 14.9483 12.25V10.0566C14.7015 10.0191 14.4509 10 14.1983 10C13.9457 10 13.695 10.0191 13.4483 10.0566V12.25ZM13.4483 9.76927C13.6932 9.84828 13.9441 9.90719 14.1983 9.94551C14.4264 9.97989 14.6572 9.99769 14.8889 9.99854C14.9087 9.99861 14.9285 9.99856 14.9483 9.99838V8.75002C14.9483 8.65356 14.9297 8.55901 14.8945 8.47117C14.8571 8.37787 14.8011 8.29213 14.7286 8.21969C14.588 8.07904 14.3972 8.00002 14.1983 8.00002C13.9994 8.00002 13.8086 8.07904 13.668 8.21969C13.665 8.22268 13.662 8.22569 13.6591 8.22872C13.5282 8.3641 13.453 8.54376 13.4485 8.73188C13.4484 8.73792 13.4483 8.74397 13.4483 8.75002V9.76927ZM15.1963 15.0626C15.1976 15.0418 15.1983 15.0209 15.1983 15C15.1983 14.9984 15.1983 14.9968 15.1983 14.9951C15.197 14.7317 15.0918 14.4793 14.9054 14.2929C14.7178 14.1054 14.4635 14 14.1983 14C13.9331 14 13.6787 14.1054 13.4912 14.2929C13.3036 14.4804 13.1983 14.7348 13.1983 15C13.1983 15.2652 13.3036 15.5196 13.4912 15.7071C13.6787 15.8947 13.9331 16 14.1983 16C14.4635 16 14.7178 15.8947 14.9054 15.7071C15.0781 15.5344 15.1811 15.305 15.1963 15.0626Z\" fill=\"#F79009\"/>\r\n                                      </g>\r\n                                      <defs>\r\n                                        <clipPath id=\"clip0_10335_22852\">\r\n                                          <rect width=\"16\" height=\"16\" fill=\"white\" transform=\"translate(0.199219)\"/>\r\n                                        </clipPath>\r\n                                      </defs>\r\n                                    </svg>\r\n                                    </span>\r\n                                    <span class=\"cursor-pointer\" *ngIf=\"obj?.revopsType&&obj?.revopsType!==''\"  (click)=\"revopTagging(obj)\" ngbTooltip=\"Customer Tagging is Done\" container=\"body\" placement=\"top-end top bottom-end auto\"> <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"16\" viewBox=\"0 0 17 16\" fill=\"none\">\r\n                                      <g clip-path=\"url(#clip0_10335_22856)\">\r\n                                        <path d=\"M15.0638 7.38662V7.99995C15.063 9.43756 14.5975 10.8364 13.7367 11.9878C12.8759 13.1393 11.666 13.9816 10.2874 14.3892C8.90876 14.7968 7.43531 14.7479 6.08678 14.2497C4.73826 13.7515 3.58691 12.8307 2.80444 11.6247C2.02198 10.4186 1.65033 8.99199 1.74492 7.55749C1.83951 6.12299 2.39527 4.7575 3.32932 3.66467C4.26337 2.57183 5.52566 1.81021 6.92793 1.49338C8.3302 1.17656 9.79731 1.32151 11.1105 1.90662M15.0638 2.66662L8.39714 9.33995L6.39714 7.33995\" stroke=\"#12B76A\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                                      </g>\r\n                                      <defs>\r\n                                        <clipPath id=\"clip0_10335_22856\">\r\n                                          <rect width=\"16\" height=\"16\" fill=\"white\" transform=\"translate(0.398438)\"/>\r\n                                        </clipPath>\r\n                                      </defs>\r\n                                    </svg>\r\n                                    </span>\r\n                             </section>\r\n                        </div>\r\n                        <div class=\"py-2 img-doc-value\">{{obj.timeSpent.entryTime}} </div>\r\n                        <!-- <div *ngIf=\"footfallDataShow !=='tracking-enabled'\" class=\"py-2 img-doc-value\">{{obj.timeSpent.exitTime}}</div> -->\r\n                        <!-- <div *ngIf=\"footfallDataShow !=='tracking-enabled'\" class=\"py-2 img-doc-value\">{{obj.timeSpent.totalTimeSpent}}</div> -->\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            \r\n        </div>\r\n        </div>\r\n        </section>\r\n        <section *ngIf=\"imageFlow\">\r\n            <div class=\"row\">\r\n                <div class=\"d-flex flex-shrink-0 mt-3 justify-content-between align-items-center px-0\">\r\n                    <div class=\"\">\r\n                    <span  class=\"cursor-pointer\" (click)=\"backToView()\">\r\n                        <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\r\n                            xmlns=\"http://www.w3.org/2000/svg\">\r\n                            <g filter=\"url(#filter0_d_2585_7036)\">\r\n                                <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\r\n                                <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n                                <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\r\n                                    stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n                                    stroke-linejoin=\"round\" />\r\n                            </g>\r\n                            <defs>\r\n                                <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\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_2585_7036\" />\r\n                                    <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\r\n                                        result=\"shape\" />\r\n                                </filter>\r\n                            </defs>\r\n                        </svg>\r\n                    </span>\r\n                    <span class=\"ms-2 py-2 img-doc-directory\"><span class=\"badge badge-light-info\">{{Imagedata.tempId}}</span> \r\n                    <ng-container *ngIf=\"selectControl.value as value\">\r\n                        <span *ngIf=\"value\"\r\n                              class=\"badge ms-2\"\r\n                              [ngClass]=\"{\r\n                                'badge-light-primary': value === 'footfall' ,\r\n                                'badge-light-success': value === 'purchaser',\r\n                                'badge-light-warning': value === 'nonShopper',\r\n                                'badge-light-danger': value === 'bounced' || value === 'engager' || value === 'missedOpportunity' || value === 'conversion'\r\n                              }\">\r\n                          {{\r\n                            value === 'purchaser' ? 'Purchaser' :\r\n                            value === 'nonShopper' ? 'Non Shopper' :\r\n                            value === 'missedOpportunity' ? 'Missed Opportunity' :\r\n                            (value | titlecase)\r\n                          }}\r\n                        </span>\r\n                      </ng-container>\r\n                      \r\n              \r\n                    </span>\r\n                    </div>\r\n                    <div class=\"\">\r\n                        <span class=\"cursor-pointer\" [ngClass]=\"{ 'cursor-not-allowed opacity-50': isFirstImage() }\"\r\n                        [style.pointer-events]=\"isFirstImage() ? 'none' : 'auto'\"\r\n                        (click)=\"!isFirstImage() && previous()\" ><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\r\n                                <path d=\"M0.5 8C0.5 3.85786 3.85786 0.5 8 0.5H39.5V39.5H8C3.85786 39.5 0.5 36.1421 0.5 32V8Z\"\r\n                                    fill=\"white\" />\r\n                                <path d=\"M0.5 8C0.5 3.85786 3.85786 0.5 8 0.5H39.5V39.5H8C3.85786 39.5 0.5 36.1421 0.5 32V8Z\"\r\n                                    stroke=\"#D0D5DD\" />\r\n                                <path d=\"M22.5 25L17.5 20L22.5 15\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n                                    stroke-linejoin=\"round\" />\r\n                            </svg></span>\r\n                        <span class=\"cursor-pointer\" [ngClass]=\"{ 'cursor-not-allowed opacity-50': isLastImage() }\"\r\n                        [style.pointer-events]=\"isLastImage() ? 'none' : 'auto'\"\r\n                        (click)=\"!isLastImage() && next()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\r\n                                <path d=\"M0.5 0.5H32C36.1421 0.5 39.5 3.85786 39.5 8V32C39.5 36.1421 36.1421 39.5 32 39.5H0.5V0.5Z\"\r\n                                    fill=\"white\" />\r\n                                <path d=\"M0.5 0.5H32C36.1421 0.5 39.5 3.85786 39.5 8V32C39.5 36.1421 36.1421 39.5 32 39.5H0.5V0.5Z\"\r\n                                    stroke=\"#D0D5DD\" />\r\n                                <path d=\"M17.5 25L22.5 20L17.5 15\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n                                    stroke-linejoin=\"round\" />\r\n                            </svg></span>\r\n                    </div>\r\n                    </div>\r\n\r\n                    <div class=\"row contain mt-10\">\r\n                        <div class=\"col-md-6 col-lg-6 col-xl-6\">\r\n                            <img  class=\"img-src1\" [src]=\"Images\"\r\n                                (error)=\"Images = null\" alt=\"\" appMagnifier >\r\n                                \r\n                            <div *ngIf=\"!Images\" class=\"no-preview\">\r\n                                <span class=\"mb-5\">\r\n                                    <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                                        <g id=\"Group\">\r\n                                            <path id=\"Vector\" d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\r\n                                                stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                            <path id=\"Vector_2\"\r\n                                                d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\r\n                                                stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                        </g>\r\n                                    </svg>\r\n            \r\n                                </span>\r\n                                <span class=\"header mb-5 text-center\">Preview not available</span>\r\n                                <span class=\"description mb-5 text-center\">The selected camera is not available at the\r\n                                    moment.</span>\r\n                            </div>\r\n            \r\n                    \r\n            \r\n                        <div class=\"row slider mt-5\">\r\n                                    <ng-container>\r\n                                <div class=\"col-4\" *ngIf=\"Imagedata?.images?.entryTimeImage\">\r\n                                    <div class=\"mb-5  border-2\" [ngClass]=\"{\r\n                                        'border-gray-active': Images === Imagedata?.images?.entryTimeImage,\r\n                                        'border-gray': Images !== Imagedata?.images?.entryTimeImage\r\n                                      }\">\r\n                                        <div>Entry Time</div>\r\n                                        <img class=\"cursor-pointer w-100 rounded-2 mh-100px pb-1\"\r\n                                            [src]=\"Imagedata?.images?.entryTimeImage\"\r\n                                            (error)=\"Imagedata?.images.entryTimeImage = null\" alt=\"\" (click)=\"imageData('entry')\">\r\n                                        <div *ngIf=\"!Imagedata?.images?.entryTimeImage\" class=\"no-preview-sm cursor-pointer\">\r\n                                            <span class=\"mb-2\">\r\n                                                <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\r\n                                                    xmlns=\"http://www.w3.org/2000/svg\">\r\n                                                    <g id=\"Group\">\r\n                                                        <path id=\"Vector\"\r\n                                                            d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\r\n                                                            stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                            stroke-linejoin=\"round\" />\r\n                                                        <path id=\"Vector_2\"\r\n                                                            d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\r\n                                                            stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                            stroke-linejoin=\"round\" />\r\n                                                    </g>\r\n                                                </svg>\r\n            \r\n                                            </span>\r\n                                            <span class=\"header mb-2 text-center\">Preview not available</span>\r\n                                            <span class=\"description mb-2 text-center\">The selected camera is not available\r\n                                                at\r\n                                                the\r\n                                                moment.</span>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"col-4\" *ngIf=\"Imagedata?.images?.staffEngagementImage\">\r\n                                    <div class=\"mb-5 border-2\" [ngClass]=\"{\r\n                                        'border-gray-active': Images === Imagedata?.images?.staffEngagementImage,\r\n                                        'border-gray': Images !== Imagedata?.images?.staffEngagementImage\r\n                                      }\">\r\n                                        <div>Staff Engagement</div>\r\n                                        <img class=\"cursor-pointer w-100 rounded-2 mh-100px pb-1\"\r\n                                            [src]=\"Imagedata?.images?.staffEngagementImage\"\r\n                                            (error)=\"Imagedata?.images.staffEngagementImage = null\" alt=\"\" (click)=\"imageData('staff')\">\r\n                                        <div *ngIf=\"!Imagedata?.images?.staffEngagementImage\" class=\"no-preview-sm cursor-pointer\">\r\n                                            <span class=\"mb-2\">\r\n                                                <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\r\n                                                    xmlns=\"http://www.w3.org/2000/svg\">\r\n                                                    <g id=\"Group\">\r\n                                                        <path id=\"Vector\"\r\n                                                            d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\r\n                                                            stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                            stroke-linejoin=\"round\" />\r\n                                                        <path id=\"Vector_2\"\r\n                                                            d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\r\n                                                            stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                            stroke-linejoin=\"round\" />\r\n                                                    </g>\r\n                                                </svg>\r\n            \r\n                                            </span>\r\n                                            <span class=\"header mb-2 text-center\">Preview not available</span>\r\n                                            <span class=\"description mb-2 text-center\">The selected camera is not available\r\n                                                at\r\n                                                the\r\n                                                moment.</span>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                                <!-- <div  class=\"col-4 \" *ngIf=\"Imagedata?.images?.exitTimeImage && footfallDataShow !=='tracking-enabled'\">\r\n                                    <div class=\"mb-5  border-2\" [ngClass]=\"{\r\n                                        'border-gray-active': Images === Imagedata?.images?.exitTimeImage,\r\n                                        'border-gray': Images !== Imagedata?.images?.exitTimeImage\r\n                                      }\">\r\n                                        <div>Exit Time</div>\r\n                                        <img class=\"cursor-pointer w-100 rounded-2 mh-100px pb-1\"\r\n                                            [src]=\"Imagedata?.images?.exitTimeImage\"\r\n                                            (error)=\"Imagedata?.images.exitTimeImage = null\" alt=\"\" (click)=\"imageData('exit')\">\r\n                                        <div *ngIf=\"!Imagedata?.images?.exitTimeImage\" class=\"no-preview-sm cursor-pointer\">\r\n                                            <span class=\"mb-2\">\r\n                                                <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\r\n                                                    xmlns=\"http://www.w3.org/2000/svg\">\r\n                                                    <g id=\"Group\">\r\n                                                        <path id=\"Vector\"\r\n                                                            d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\r\n                                                            stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                            stroke-linejoin=\"round\" />\r\n                                                        <path id=\"Vector_2\"\r\n                                                            d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\r\n                                                            stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                            stroke-linejoin=\"round\" />\r\n                                                    </g>\r\n                                                </svg>\r\n            \r\n                                            </span>\r\n                                            <span class=\"header mb-2 text-center\">Preview not available</span>\r\n                                            <span class=\"description mb-2 text-center\">The selected camera is not available\r\n                                                at\r\n                                                the\r\n                                                moment.</span>\r\n                                        </div>\r\n                                    </div>\r\n                                </div> -->\r\n                            </ng-container>\r\n                           </div>\r\n                       \r\n                        </div>\r\n                        <div class=\"col-md-6 col-lg-6 col-xl-6 pe-0 mb-3\">\r\n                            <ul class=\"nav flex-wrap nav-dev fw-bold align-items-center\">\r\n                                <li class=\"nav-item my-1 w-50\">\r\n                                    <a (click)=\"selectedTab = 'tagged'\" [ngClass]=\"{\r\n                                                                'tab-active': selectedTab === 'tagged'\r\n                                                              }\" class=\"tab-text-default btn nav-link px-3 px-lg-8 mx-1\">\r\n                                        Tagged Info\r\n                                    </a>\r\n                                </li>\r\n                        \r\n                                <li class=\"nav-item my-1 w-50\">\r\n                                    <a (click)=\"selectedTab = 'customer'\" [ngClass]=\"{\r\n                                                                'tab-active': selectedTab === 'customer'\r\n                                                              }\" class=\"tab-text-default btn nav-link px-3 px-lg-8 mx-1\">\r\n                                        Tagged Summary\r\n                                    </a>\r\n                                    <!-- Customer Info -->\r\n                                </li>\r\n                            </ul>\r\n                            <section *ngIf=\"selectedTab === 'tagged'\">\r\n                            <div class=\"row mx-3 mt-5 mb-3\">\r\n                                <div class=\"col-md-4 form-check mt-5 px-1\">\r\n                                    <div class=\"form-check\">\r\n                                        <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"exampleRadios\" id=\"radioNonShopper\"\r\n                                            value=\"nonShopper\" [(ngModel)]=\"selectedCustomerType\" (change)=\"onRadioChange('nonShopper')\">\r\n                                        <label class=\"form-check-label cursor-pointer toggle-label\" for=\"radioNonShopper\">\r\n                                            Non Shopper\r\n                                        </label>\r\n                                    </div>\r\n                                </div>\r\n                        \r\n                                <div class=\"col-md-4 form-check mt-5 px-1\">\r\n                                    <div class=\"form-check\">\r\n                                        <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"exampleRadios\" id=\"radioPurchaser\" value=\"purchaser\"\r\n                                            [(ngModel)]=\"selectedCustomerType\" (change)=\"onRadioChange('purchaser')\">\r\n                                        <label class=\"form-check-label cursor-pointer toggle-label\" for=\"radioPurchaser\">\r\n                                            Purchaser\r\n                                        </label>\r\n                                    </div>\r\n                                </div>\r\n                        \r\n                                <div class=\"col-md-4 form-check mt-5 px-1\">\r\n                                    <div class=\"form-check \">\r\n                                        <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"exampleRadios\" id=\"radioMissed\"\r\n                                            value=\"missedOpportunity\" [(ngModel)]=\"selectedCustomerType\"\r\n                                            (change)=\"onRadioChange('missedOpportunity')\">\r\n                                        <label class=\"form-check-label cursor-pointer toggle-label\" for=\"radioMissed\">\r\n                                            Missed Opportunity\r\n                                        </label>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                           \r\n                            <section *ngIf=\"selectedCustomerType ==='nonShopper'\">\r\n                                <div class=\"row mt-5 mx-3\">\r\n                                    <div class=\"border-gray-active1\">\r\n                                        <span *ngFor=\"let obj of nonShopperList\" class=\"cursor-pointer\">\r\n                                           <div class=\"badge  mt-3 me-8\"     [ngClass]=\"obj!==nonShoperType ? 'badge-light-default' :'badge-light-primary'\" (click)=\"selectnonShoper(obj)\" >\r\n                                            <svg xmlns=\"http://www.w3.org/2000/svg\" *ngIf=\"obj!==nonShoperType\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n                                                <path d=\"M6 2.5V9.5M2.5 6H9.5\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                                              </svg>\r\n                                              <svg xmlns=\"http://www.w3.org/2000/svg\" *ngIf=\"obj===nonShoperType\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n                                                <rect width=\"16\" height=\"16\" rx=\"8\" fill=\"#DAF1FF\"/>\r\n                                                <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M11.3977 4.92661L6.62434 9.53328L5.35767 8.17994C5.12434 7.95994 4.75767 7.94661 4.491 8.13328C4.231 8.32661 4.15767 8.66661 4.31767 8.93994L5.81767 11.3799C5.96434 11.6066 6.21767 11.7466 6.50434 11.7466C6.77767 11.7466 7.03767 11.6066 7.18434 11.3799C7.42434 11.0666 12.0043 5.60661 12.0043 5.60661C12.6043 4.99328 11.8777 4.45328 11.3977 4.91994V4.92661Z\" fill=\"#33B5FF\"/>\r\n                                                </svg>\r\n                                              <span class=\"ms-3\">{{obj}}</span></div>\r\n                                        </span>\r\n                                        \r\n                                        <div class=\"col-md-12 mt-5 pb-10\">\r\n                                            <div class=\"form-group\">\r\n                                                <label for=\"exampleInputName\">Description (Optional)</label>\r\n                                              <textarea [(ngModel)]=\"description\" class=\"form-control mt-3\" rows=\"4\" placeholder=\"\"></textarea>\r\n                                    \r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n   \r\n                                    <div class=\"text-end mt-5\" (click)=\"nonShopperSubmit()\" >\r\n                                        <button type=\"submit\" class=\"btn btn-primary mt-3\">Submit</button>\r\n                                        </div>\r\n                                    </div>\r\n                            </section>\r\n                            <section *ngIf=\"selectedCustomerType ==='purchaser'\">\r\n                                <div class=\"row mt-5\">\r\n                                    <form [formGroup]=\"userForm\" (ngSubmit)=\"onSubmit()\">\r\n                                        <div class=\"row border-gray-active1\">\r\n                                          <div class=\"col-md-6 mt-3\">\r\n                                            <div class=\"form-group\">\r\n                                              <!-- <label for=\"name\">Name<span class=\"alert-required text-danger\">*</span></label> -->\r\n\r\n                                              <label for=\"name\">Name</label>\r\n                                              <input\r\n                                                type=\"text\"\r\n                                                id=\"name\"\r\n                                                class=\"form-control mt-3\"\r\n                                                placeholder=\"Enter Name\" autocomplete=\"off\"\r\n                                                formControlName=\"name\"  [ngClass]=\"{ 'is-invalid':userForm.get('name')?.invalid && (userForm.get('name')?.touched)}\"\r\n\r\n                                              />\r\n                                                <!-- formControlName=\"name\" required [ngClass]=\"{ 'is-invalid':userForm.get('name')?.invalid && (userForm.get('name')?.touched)}\" -->\r\n\r\n                                              <div *ngIf=\"isInvalid('name')\" class=\"text-danger\">\r\n                                                <!-- <div *ngIf=\"f.name.errors?.required\">Name is required</div> -->\r\n                                              </div>\r\n                                            </div>\r\n                                          </div>\r\n                                      \r\n                                          <div class=\"col-md-6 col-lg-6 col-xl-6 col-xxl-6 mt-3\">\r\n                                            <label for=\"contact\" class=\"form-label\">Contact Number </label>\r\n\r\n                                            <!-- <label for=\"contact\" class=\"form-label\">Contact Number <span class=\"alert-required text-danger\">*</span></label> -->\r\n                                            <div class=\"row\">\r\n                                              <div class=\"col-md-12 col-lg-6 col-xl-6\">\r\n                                                <select class=\"form-select ps-3 pe-8\" id=\"inputGroupSelect01\" formControlName=\"countryCode\">\r\n                                                  <option *ngFor=\"let country of countryList\" [value]=\"country.phonecode\">\r\n                                                    {{country.name}} ({{country.phonecode}})\r\n                                                  </option>\r\n                                                </select>\r\n                                              </div>\r\n                                              <div class=\"col-md-12 col-lg-6 col-xl-6\">\r\n                                                <input type=\"text\" class=\"form-control\" (keypress)=\"omit_special_char($event)\"\r\n                                                  id=\"mobile\" autocomplete=\"off\" formControlName=\"mobile\" minlength=\"8\" maxlength=\"13\"\r\n                                                  [ngClass]=\"{ 'is-invalid':userForm.get('mobile')?.invalid && (userForm.get('mobile')?.touched)}\">\r\n                                                  <div *ngIf=\"isInvalid('mobile')\" class=\"text-danger\">\r\n                                                    <!-- <div *ngIf=\"f.mobile.errors?.required\">Contact Number is required.</div> -->\r\n                                                    <div *ngIf=\"f.mobile.errors?.minlength\">Contact Number must be at least 8 digits.</div>\r\n                                                    <div *ngIf=\"f.mobile.errors?.maxlength\">Contact Number cannot exceed 13 digits.</div>\r\n                                                  </div>\r\n                                              </div>\r\n                                            </div>\r\n                                          </div>\r\n                                      \r\n                                          <div class=\"col-md-6 col-lg-6 col-xl-6 col-xxl-6 mt-3\">\r\n                                            <label for=\"email\" class=\"form-label\">Email </label>\r\n                                            <input type=\"email\" class=\"form-control\" id=\"email\" formControlName=\"email\" autocomplete=\"off\"\r\n                                            [ngClass]=\"{ 'is-invalid':userForm.get('email')?.invalid && (userForm.get('email')?.touched)}\">\r\n                                            <div *ngIf=\"isInvalid('email')\" class=\"text-danger\">\r\n                                                <div *ngIf=\"f.email.errors?.pattern\">Invalid email format.</div>\r\n                                              </div>\r\n                                          </div>\r\n                                      \r\n                                          <div class=\"col-md-6 mt-3\">\r\n                                            <div class=\"form-group\">\r\n                                              <label for=\"location\">Location</label>\r\n                                              <!-- <input\r\n                                              type=\"text\"\r\n                                              id=\"location\"\r\n                                              class=\"form-control mt-3\"\r\n                                              placeholder=\"Location\"\r\n                                              formControlName=\"location\"\r\n                                            /> -->\r\n                                              <input type=\"text\" class=\"form-control mt-3\" id=\"location\" formControlName=\"location\" #placesRef=\"ngx-places\" ngx-gp-autocomplete (onAddressChange)=\"handleAddressChange($event)\"\r\n                                              [ngClass]=\"{ 'is-invalid':userForm.get('location')?.invalid && (userForm.get('location')?.touched)}\">\r\n                                             \r\n                                            </div>\r\n                                          </div>\r\n                                      \r\n                                          <div class=\"col-md-6 mt-3\">\r\n                                            <div class=\"form-group\">\r\n                                              <label for=\"age\">Age</label>\r\n                                               <select class=\"form-select mt-3\" formControlName=\"age\">\r\n                                                <option value=\"\">Select Age</option>\r\n                                                <option value=\"Below 12\">Below 12</option>\r\n                                                <option value=\"13-19\">13–19</option>\r\n                                                <option value=\"20–30\">20–30</option>\r\n                                                <option value=\"31–45\">31–45</option>\r\n                                                <option value=\"46–59\">46–59</option>\r\n                                                <option value=\"Above 60\">Above 60</option>\r\n                                              </select>\r\n                                             \r\n                                      \r\n                                               \r\n                                             \r\n                                            </div>\r\n                                          </div>\r\n                                      \r\n                                          <div class=\"col-md-6 mt-3\">\r\n                                            <div class=\"form-group\">\r\n                                              <label for=\"gender\">Gender</label>\r\n                                              <select class=\"form-select mt-3\" formControlName=\"gender\">\r\n                                                <option value=\"\">Select Gender</option>\r\n                                                <option value=\"male\">Male</option>\r\n                                                <option value=\"female\">Female</option>\r\n                                              </select>\r\n                                          \r\n                                            </div>\r\n                                          </div>\r\n                                        </div>\r\n                                      \r\n                                        <div class=\"text-end mt-5\">\r\n                                          <button type=\"submit\" class=\"btn btn-primary mt-3\" [disabled]=\"!hasPurchaserData\">Submit</button>\r\n                                        </div>\r\n                                      </form>\r\n                                      \r\n                                      \r\n                                </div>\r\n                            </section>\r\n                            <section *ngIf=\"selectedCustomerType ==='missedOpportunity'\">\r\n                                <div class=\"row mt-5 mx-3 border-gray-active1\">\r\n                                   \r\n                                        <div\r\n                                          *ngFor=\"let obj of missedOpportunityList\"\r\n                                          class=\"nav-item nav-item1 w-25\"\r\n                                          (click)=\"selectedTabs(obj.name)\">\r\n                                          <span\r\n                                            [ngClass]=\"selectedMissed === obj.name ? 'active' : 'active-normal'\"\r\n                                            class=\"nav-link nav-link1 cursor-pointer text-nowrap\">\r\n                                            {{ obj.name }}\r\n                                          </span>\r\n                                        </div>\r\n                              \r\n                                      <div class=\"separator separator-double mb-3\"></div>\r\n                                      <!-- Issue Badges -->\r\n                                      <div *ngFor=\"let obj of missedOpportunityList\">\r\n                                        <div *ngIf=\"selectedMissed === obj.name\" class=\"mt-4\">\r\n                                          <span *ngFor=\"let item of obj.issues\">\r\n                                            \r\n                                            <span\r\n                                              (click)=\"selectSubissue(obj, item)\"\r\n                                              [ngClass]=\"{\r\n                                                'badge-light-primary': selectedIssues.includes(item),\r\n                                                'badge-light-default':!selectedIssues.includes(item)\r\n                                              }\"\r\n                                              class=\"badge mt-2 me-2 cursor-pointer\">\r\n                                              <span class=\"me-2\" *ngIf=\"!selectedIssues.includes(item)\">\r\n                                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n                                                    <path d=\"M6 2.5V9.5M2.5 6H9.5\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                                                  </svg>\r\n                                              </span>\r\n                                              <span class=\"me-2\" *ngIf=\"selectedIssues.includes(item)\">\r\n                                              <svg xmlns=\"http://www.w3.org/2000/svg\"  width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n                                                <rect width=\"16\" height=\"16\" rx=\"8\" fill=\"#DAF1FF\"/>\r\n                                                <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M11.3977 4.92661L6.62434 9.53328L5.35767 8.17994C5.12434 7.95994 4.75767 7.94661 4.491 8.13328C4.231 8.32661 4.15767 8.66661 4.31767 8.93994L5.81767 11.3799C5.96434 11.6066 6.21767 11.7466 6.50434 11.7466C6.77767 11.7466 7.03767 11.6066 7.18434 11.3799C7.42434 11.0666 12.0043 5.60661 12.0043 5.60661C12.6043 4.99328 11.8777 4.45328 11.3977 4.91994V4.92661Z\" fill=\"#33B5FF\"/>\r\n                                                </svg>\r\n                                            </span>\r\n                                              {{ item }}\r\n                                            </span>\r\n                                          </span>\r\n                                        </div>\r\n                                      </div>\r\n                                      \r\n                                      <div class=\"mt-4\">\r\n                                        <label class=\"form-label\">Description (Optional)</label>\r\n                                        <textarea\r\n                                          rows=\"3\"\r\n                                          class=\"form-control\"\r\n                                          placeholder=\"Enter comments\"\r\n                                          [(ngModel)]=\"description\"\r\n                                        ></textarea>\r\n                                      </div>\r\n                                      \r\n   \r\n                                    <div class=\"text-end mt-5\" (click)=\"submitMissedOpportunity()\">\r\n                                        <button type=\"submit\" class=\"btn btn-primary mt-3\">Submit</button>\r\n                                        </div>\r\n                                    </div>\r\n                            </section>\r\n                        </section>\r\n                        <section *ngIf=\"selectedTab === 'customer'\">\r\n                          <div class=\"row mt-10\">\r\n                            <div class=\"col-md-6\">\r\n                                <span class=\"tag-class\">Tagged Summary <span *ngIf=\"tagggedData?.status==='submitted'\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n                                    <path d=\"M14.6668 7.38674V8.00007C14.666 9.43769 14.2005 10.8365 13.3397 11.988C12.4789 13.1394 11.269 13.9817 9.8904 14.3893C8.51178 14.797 7.03834 14.748 5.68981 14.2498C4.34128 13.7516 3.18993 12.8308 2.40747 11.6248C1.62501 10.4188 1.25336 8.99211 1.34795 7.55761C1.44254 6.12312 1.9983 4.75762 2.93235 3.66479C3.8664 2.57195 5.12869 1.81033 6.53096 1.4935C7.93323 1.17668 9.40034 1.32163 10.7135 1.90674M14.6668 2.66674L8.00017 9.34007L6.00017 7.34007\" stroke=\"#12B76A\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                                  </svg></span> </span>\r\n                            </div>\r\n                            <div class=\"col-md-6 text-end\" *ngIf=\"tagggedData?.status!=='submitted'\">\r\n                               <span class=\"badge badge-light-warning ms-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n                                <g clip-path=\"url(#clip0_10901_7795)\">\r\n                                  <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.13152 0.00142049C5.25855 -0.0175778 4.39195 0.154192 3.59222 0.504738C2.7925 0.855283 2.07892 1.37616 1.50131 2.03099C0.923703 2.68583 0.495981 3.45885 0.248009 4.29608C3.70294e-05 5.1333 -0.0622095 6.01457 0.0656154 6.87834C0.19344 7.74212 0.508256 8.56758 0.988083 9.29711C1.46791 10.0266 2.10119 10.6426 2.8437 11.1021C3.58621 11.5616 4.42006 11.8535 5.28703 11.9574C6.15401 12.0613 7.03322 11.9747 7.86327 11.7037C8.0051 11.6573 8.1227 11.5565 8.19022 11.4235C8.25773 11.2904 8.26962 11.136 8.22327 10.9942C8.17693 10.8523 8.07614 10.7347 7.94308 10.6672C7.81002 10.5997 7.6556 10.5878 7.51377 10.6342C6.61175 10.9287 5.64338 10.9536 4.72742 10.7058C3.81146 10.458 2.98773 9.94825 2.35725 9.2391C1.72677 8.52995 1.31696 7.65221 1.17807 6.71354C1.03917 5.77487 1.17724 4.81607 1.57534 3.95473C1.97343 3.09338 2.61425 2.36694 3.4192 1.86449C4.22414 1.36204 5.15823 1.10543 6.10689 1.12613C7.05556 1.14683 7.97756 1.44393 8.75983 1.98101C9.5421 2.51809 10.1506 3.27178 10.5108 4.14967C10.5674 4.28772 10.6765 4.39763 10.8141 4.45522C10.8822 4.48374 10.9553 4.49856 11.0292 4.49883C11.1031 4.4991 11.1763 4.48482 11.2446 4.4568C11.313 4.42878 11.3752 4.38757 11.4276 4.33552C11.48 4.28347 11.5217 4.22161 11.5502 4.15347C11.5787 4.08532 11.5935 4.01222 11.5938 3.93835C11.5941 3.86448 11.5798 3.79127 11.5518 3.72292C11.1085 2.64239 10.3596 1.7147 9.39677 1.05365C8.43396 0.392587 7.29915 0.0268946 6.13152 0.00142049ZM6.56277 2.81242C6.56277 2.66324 6.50351 2.52016 6.39802 2.41467C6.29253 2.30918 6.14946 2.24992 6.00027 2.24992C5.85109 2.24992 5.70801 2.30918 5.60252 2.41467C5.49704 2.52016 5.43777 2.66324 5.43777 2.81242V5.76742L3.91227 7.29217C3.85701 7.34367 3.81268 7.40577 3.78194 7.47477C3.75119 7.54377 3.73466 7.61825 3.73333 7.69378C3.732 7.76931 3.74589 7.84433 3.77418 7.91437C3.80247 7.98441 3.84458 8.04804 3.89799 8.10145C3.95141 8.15486 4.01503 8.19697 4.08507 8.22526C4.15512 8.25355 4.23014 8.26745 4.30566 8.26612C4.38119 8.26478 4.45568 8.24825 4.52468 8.21751C4.59368 8.18676 4.65578 8.14244 4.70727 8.08717L6.39777 6.39742L6.56277 6.23242V2.81242ZM11.2503 11.2499C11.2503 11.4488 11.1713 11.6396 11.0306 11.7803C10.8899 11.9209 10.6992 11.9999 10.5003 11.9999C10.3014 11.9999 10.1106 11.9209 9.96994 11.7803C9.82929 11.6396 9.75027 11.4488 9.75027 11.2499C9.75027 11.051 9.82929 10.8602 9.96994 10.7196C10.1106 10.5789 10.3014 10.4999 10.5003 10.4999C10.6992 10.4999 10.8899 10.5789 11.0306 10.7196C11.1713 10.8602 11.2503 11.051 11.2503 11.2499ZM11.0628 6.56242C11.0628 6.41324 11.0035 6.27016 10.898 6.16467C10.7925 6.05919 10.6495 5.99992 10.5003 5.99992C10.3511 5.99992 10.208 6.05919 10.1025 6.16467C9.99704 6.27016 9.93777 6.41324 9.93777 6.56242V9.18742C9.93777 9.33661 9.99704 9.47968 10.1025 9.58517C10.208 9.69066 10.3511 9.74992 10.5003 9.74992C10.6495 9.74992 10.7925 9.69066 10.898 9.58517C11.0035 9.47968 11.0628 9.33661 11.0628 9.18742V6.56242Z\" fill=\"#B54708\"/>\r\n                                  <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M11.2409 3.07775C11.1762 2.96171 11.1078 2.84799 11.0357 2.73674C10.7826 2.34623 10.4848 1.98631 10.1483 1.6644C9.91561 1.44184 9.66446 1.23744 9.39677 1.05365C9.39672 1.05361 9.39683 1.05368 9.39677 1.05365C9.23737 0.944207 9.07308 0.842748 8.90487 0.749705C8.7207 0.647828 8.53163 0.5559 8.3385 0.474192C7.64269 0.179813 6.8941 0.0180577 6.13152 0.00142049C6.13149 0.00141983 6.13155 0.00142115 6.13152 0.00142049C6.08778 0.00046929 6.04397 -5.01265e-06 6.00027 3.99426e-08C5.19726 9.28871e-05 4.40222 0.161386 3.66237 0.47452C3.63893 0.484441 3.61555 0.494513 3.59222 0.504738C3.42243 0.579166 3.25651 0.661273 3.09496 0.75071C3.00307 0.801577 2.9126 0.854814 2.82363 0.910359C2.33223 1.21713 1.88653 1.59427 1.50131 2.03099C1.11608 2.46773 0.797516 2.95704 0.554486 3.48291C0.433124 3.74551 0.330597 4.01723 0.248009 4.29608C5.51343e-05 5.13324 -0.0622004 6.01444 0.0655874 6.87815C0.065578 6.87809 0.0655967 6.87822 0.0655874 6.87815C0.193412 7.74193 0.508256 8.56758 0.988083 9.29711C1.14783 9.53998 1.32458 9.77027 1.51671 9.98639C1.90168 10.4194 2.34838 10.7956 2.8437 11.1021C3.33882 11.4085 3.87455 11.6404 4.43364 11.7917C4.71299 11.8673 4.99817 11.9228 5.28703 11.9574C5.31999 11.9613 5.35296 11.965 5.38594 11.9684C5.86275 12.0175 6.34254 12.0092 6.81514 11.9445C6.99265 11.9202 7.16915 11.8879 7.34409 11.8477C7.5188 11.8076 7.69196 11.7596 7.86302 11.7038C7.86294 11.7038 7.86311 11.7037 7.86302 11.7038C7.89127 11.6945 7.9188 11.6831 7.94492 11.6697C8.04995 11.6159 8.13615 11.53 8.19022 11.4235C8.21812 11.3685 8.23653 11.3098 8.24524 11.2499C8.25761 11.1649 8.25046 11.0774 8.22327 10.9942C8.17693 10.8523 8.07614 10.7347 7.94308 10.6672C7.81011 10.5998 7.65579 10.5878 7.51404 10.6341C7.51395 10.6341 7.51413 10.6341 7.51404 10.6341C7.43563 10.6597 7.35645 10.6833 7.27711 10.7049C7.16292 10.7359 7.04786 10.7626 6.93215 10.7851C6.88016 10.7953 6.82804 10.8045 6.77581 10.8129C6.49267 10.8585 6.20633 10.879 5.92014 10.8743C5.84832 10.8731 5.7765 10.8704 5.70476 10.866C5.60998 10.8602 5.51532 10.8517 5.4209 10.8404C5.37256 10.8346 5.32428 10.8281 5.27608 10.8208C5.09176 10.7931 4.90856 10.7548 4.72742 10.7058C4.59856 10.6709 4.47152 10.6309 4.34659 10.5858C4.02763 10.4708 3.7224 10.3231 3.43559 10.1456C3.40186 10.1248 3.36839 10.1035 3.33518 10.0818C3.05409 9.89826 2.79178 9.68556 2.55287 9.44658C2.48578 9.37947 2.42054 9.31029 2.35725 9.2391C2.20011 9.06234 2.05667 8.87512 1.92772 8.67908C1.92445 8.67411 1.92118 8.66913 1.91793 8.66414C1.7113 8.34749 1.54234 8.00807 1.41432 7.65286C1.30511 7.34986 1.2257 7.03536 1.17809 6.71371C1.17808 6.71366 1.1781 6.71377 1.17809 6.71371C1.1575 6.57457 1.14297 6.43481 1.1345 6.29516C1.1301 6.22253 1.12732 6.14989 1.12617 6.07729C1.11832 5.58257 1.18585 5.08961 1.3263 4.61545C1.39297 4.39036 1.47607 4.16951 1.57534 3.95473C1.7744 3.52403 2.03414 3.12706 2.34475 2.77496C2.3762 2.73932 2.40816 2.70413 2.44064 2.66942C2.72893 2.36127 3.05749 2.09027 3.4192 1.86449C3.61995 1.73918 3.82874 1.62916 4.04379 1.53492C4.2051 1.46422 4.36993 1.40241 4.53753 1.34968C5.00877 1.20143 5.50191 1.125 6.00027 1.12497C6.03579 1.12497 6.07133 1.12535 6.10689 1.12613C6.56965 1.13624 7.02621 1.21212 7.46315 1.34954C7.9219 1.49383 8.35919 1.70595 8.75983 1.98101C8.75978 1.98097 8.75988 1.98104 8.75983 1.98101C8.91447 2.08719 9.06247 2.20193 9.20295 2.32433C9.32789 2.43318 9.447 2.54816 9.55988 2.66877C9.67464 2.79139 9.78295 2.91982 9.8844 3.05355C10.0182 3.22986 10.14 3.41537 10.2489 3.60887C10.3086 3.71493 10.3644 3.82339 10.4162 3.93405C10.4455 3.99677 10.4736 4.06019 10.5003 4.12428C10.5038 4.13273 10.5073 4.1412 10.5108 4.14967C10.5107 4.14959 10.5108 4.14975 10.5108 4.14967C10.5674 4.28761 10.6765 4.39766 10.8141 4.45522C10.8822 4.48374 10.9553 4.49856 11.0292 4.49883C11.1031 4.4991 11.1763 4.48482 11.2446 4.4568C11.313 4.42878 11.3752 4.38757 11.4276 4.33552C11.48 4.28348 11.5217 4.22161 11.5502 4.15347C11.5787 4.08532 11.5935 4.01222 11.5938 3.93835C11.5941 3.86448 11.5798 3.79127 11.5518 3.72292C11.5517 3.72283 11.5518 3.72301 11.5518 3.72292C11.4834 3.55631 11.4077 3.39306 11.3251 3.23413C11.2978 3.18156 11.2697 3.12942 11.2409 3.07775ZM6.56277 2.81242C6.56277 2.66324 6.50351 2.52016 6.39802 2.41467C6.3121 2.32875 6.20124 2.2735 6.08246 2.25595C6.05548 2.25198 6.02787 2.24992 6.00027 2.24992C5.85109 2.24992 5.70801 2.30918 5.60252 2.41467C5.49704 2.52016 5.43777 2.66324 5.43777 2.81242V5.76742L3.91245 7.292C3.90275 7.30103 3.89322 7.31057 3.88421 7.32023C3.84187 7.36567 3.80729 7.41787 3.78194 7.47477C3.75119 7.54377 3.73466 7.61825 3.73333 7.69378C3.732 7.76931 3.74589 7.84433 3.77418 7.91437C3.78054 7.93011 3.78759 7.94552 3.79532 7.96057C3.82196 8.01249 3.85658 8.06004 3.89799 8.10145C3.95141 8.15487 4.01503 8.19697 4.08507 8.22526C4.15512 8.25356 4.23014 8.26745 4.30566 8.26612C4.38119 8.26478 4.45568 8.24825 4.52468 8.21751C4.58157 8.19216 4.63377 8.15757 4.67921 8.11524C4.68881 8.10629 4.69811 8.097 4.70708 8.08737C4.70702 8.08744 4.70715 8.08731 4.70708 8.08737L6.56277 6.23242V2.81242ZM9.93777 9.18742C9.93777 9.33661 9.99704 9.47968 10.1025 9.58517C10.208 9.69066 10.3511 9.74992 10.5003 9.74992C10.6437 9.74992 10.7815 9.69514 10.8857 9.59716C10.8898 9.59323 10.894 9.58924 10.898 9.58517C11.0035 9.47968 11.0628 9.33661 11.0628 9.18742V7.54234C10.8777 7.51426 10.6897 7.49992 10.5003 7.49992C10.3108 7.49992 10.1228 7.51426 9.93777 7.54234V9.18742ZM9.93777 7.32686C10.1215 7.38612 10.3096 7.4303 10.5003 7.45904C10.6714 7.48483 10.8445 7.49818 11.0183 7.49881C11.0331 7.49887 11.0479 7.49883 11.0628 7.4987V6.56242C11.0628 6.49008 11.0488 6.41917 11.0224 6.35328C10.9944 6.28331 10.9524 6.21901 10.898 6.16468C10.7925 6.05919 10.6495 5.99992 10.5003 5.99992C10.3511 5.99992 10.208 6.05919 10.1025 6.16468C10.1003 6.16692 10.0981 6.16917 10.0959 6.17145C9.9977 6.27299 9.94135 6.40773 9.93794 6.54882C9.93783 6.55335 9.93777 6.55788 9.93777 6.56242V7.32686ZM11.2488 11.2968C11.2498 11.2813 11.2503 11.2656 11.2503 11.2499C11.2503 11.2487 11.2503 11.2475 11.2503 11.2463C11.2493 11.0487 11.1704 10.8594 11.0306 10.7196C10.8899 10.5789 10.6992 10.4999 10.5003 10.4999C10.3014 10.4999 10.1106 10.5789 9.96994 10.7196C9.82929 10.8602 9.75027 11.051 9.75027 11.2499C9.75027 11.4488 9.82929 11.6396 9.96994 11.7803C10.1106 11.9209 10.3014 11.9999 10.5003 11.9999C10.6992 11.9999 10.8899 11.9209 11.0306 11.7803C11.1602 11.6507 11.2374 11.4786 11.2488 11.2968Z\" fill=\"#B54708\"/>\r\n                                </g>\r\n                                <defs>\r\n                                  <clipPath id=\"clip0_10901_7795\">\r\n                                    <rect width=\"12\" height=\"12\" fill=\"white\"/>\r\n                                  </clipPath>\r\n                                </defs>\r\n                              </svg><span class=\"ms-2\">Pending Tagged Info</span></span> \r\n                            </div>\r\n                            <div class=\"border-gray-tagged mx-3 my-2\" *ngIf=\"tagggedData?.revopsType==='purchaser'\">\r\n                                <div class=\"row\">\r\n                                <div class=\"col-md-6 mt-2 d-flex justify-content-between align-items-start\">\r\n                                    <span class=\"ms-2 mb-2 spent-value \">Name</span>\r\n                                    <span class=\"ms-2 mb-2 spent-title \">{{tagggedData?.customerInfo?.name}}</span>\r\n                                </div>\r\n                                <div class=\"col-md-6 mt-2 d-flex justify-content-between align-items-start\">\r\n                                    <span class=\"ms-2 mb-2 spent-value \">Location</span>\r\n                                    <span class=\"ms-2 mb-2 spent-title \">{{tagggedData?.customerInfo?.location?tagggedData?.customerInfo?.location:\"-\"}}</span>\r\n                                </div>\r\n                                <div class=\"col-md-6 mt-2 d-flex justify-content-between align-items-start\">\r\n                                    <span class=\"ms-2 mb-2 spent-value \">Mobile</span>\r\n                                    <span class=\"ms-2 mb-2 spent-title \">{{tagggedData?.customerInfo?.mobile}}</span>\r\n                                </div>\r\n                                <div class=\"col-md-6 mt-2 d-flex justify-content-between align-items-start\">\r\n                                    <span class=\"ms-2 mb-2 spent-value \">Age</span>\r\n                                    <span class=\"ms-2 mb-2 spent-title \">{{tagggedData?.customerInfo?.age?tagggedData?.customerInfo?.age:\"-\"}}</span>\r\n                                </div>\r\n                                <div class=\"col-md-6 mt-2 d-flex justify-content-between align-items-start\">\r\n                                    <span class=\"ms-2 mb-2 spent-value \">Email</span>\r\n                                    <span class=\"ms-2 mb-2 spent-title \">{{tagggedData?.customerInfo?.email?tagggedData?.customerInfo?.email:\"-\"}}</span>\r\n                                </div>\r\n                                <div class=\"col-md-6 mt-2 d-flex justify-content-between align-items-start\">\r\n                                    <span class=\"ms-2 mb-2 spent-value \">Gender</span>\r\n                                    <span class=\"ms-2 mb-2 spent-title \">{{tagggedData?.customerInfo?.gender?tagggedData?.customerInfo?.gender:\"-\"}}</span>\r\n                                </div>\r\n                                </div>\r\n                            </div>\r\n                            <div *ngIf=\"tagggedData?.revopsType==='missedOpportunity'\">\r\n\r\n                                <div class=\"border-gray-tagged mx-3 my-2\" *ngFor=\"let item of tagggedData.issueList\" >\r\n                                    <div class=\"ms-2 mb-2 spent-value\">{{item.name}}</div>\r\n                                    <span class=\"badge badge-light-default ms-2\" *ngFor=\"let data of item.issue\">{{data}}</span>\r\n                                </div>\r\n                                \r\n                            </div>\r\n                            <div class=\"border-gray-tagged mx-3 my-2\" *ngIf=\"tagggedData?.revopsType==='nonShopper'\">\r\n                                <span class=\"badge badge-light-default ms-2\">{{nonShoperType}}</span>\r\n                            </div>\r\n                            <!-- <div class=\"my-2\"><span class=\"desc-id\">Original ID</span> : <span class=\"spent-value1\"\r\n                                    style=\"font-size: 12px !important;\">{{Imagedata?.tempId}}</span></div> -->\r\n                                \r\n                            <div  *ngIf=\"tagggedData?.description&&tagggedData?.description!==''\" class=\"my-3 desc-id\">{{tagggedData.description}}\r\n                            </div>\r\n                            <div class=\"separator separator-double m-3\"></div>\r\n                            <!-- <div class=\"my-3\">\r\n                                <span class=\"tag-class\">Time Spent</span>\r\n                            </div> -->\r\n\r\n                            <div class=\"d-flex flex-wrap\">\r\n                                <!-- <div *ngIf=\"footfallDataShow !=='tracking-enabled'\" class=\"border border-gray-300 border-dobule rounded w-33  py-3 px-4 me-6 mb-3\">\r\n                                    <div class=\"d-flex align-items-center\">\r\n                                        <div class=\"spent-title\">{{Imagedata?.timeSpent?.totalTimeSpent}} </div>\r\n                                    </div>\r\n                                    <div class=\"spent-value my-1\">Total Time Spent</div>\r\n                                </div> -->\r\n                                <div class=\"border border-gray-300 border-dobule rounded w-33  py-3 px-4 me-6 mb-3\">\r\n                                    <div class=\"d-flex align-items-center\">\r\n                                        <div class=\"spent-title\">{{Imagedata?.timeSpent?.entryTime}}  </div>\r\n                                    </div>\r\n                                    \r\n                                    <div class=\" my-1 \">Entry Time </div>\r\n                                      <!-- <div class=\"spent-value1 my-1 cursor-pointer\" (click)=\"imageData('entry')\">Entry Time <span class=\"ms-1\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n                                        <path d=\"M3.33333 14H12.6667C13.403 14 14 13.403 14 12.6667V3.33333C14 2.59695 13.403 2 12.6667 2H3.33333C2.59695 2 2 2.59695 2 3.33333V12.6667C2 13.403 2.59695 14 3.33333 14ZM3.33333 14L10.6667 6.66667L14 10M6.66667 5.66667C6.66667 6.21895 6.21895 6.66667 5.66667 6.66667C5.11438 6.66667 4.66667 6.21895 4.66667 5.66667C4.66667 5.11438 5.11438 4.66667 5.66667 4.66667C6.21895 4.66667 6.66667 5.11438 6.66667 5.66667Z\" stroke=\"#667085\" stroke-width=\"1.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                                      </svg></span></div> -->\r\n                                </div>\r\n                                <!-- <div *ngIf=\"footfallDataShow !=='tracking-enabled'\" class=\"border border-gray-300 border-dobule rounded w-33  py-3 px-4 me-6 mb-3\">\r\n                                    <div class=\"d-flex align-items-center\">\r\n                                        <div class=\"spent-title\">{{Imagedata?.timeSpent?.exitTime}} </div>\r\n                                    </div>\r\n                                    <div class=\"spent-value1 my-1 cursor-pointer\" (click)=\"imageData('exit')\">Exit Time 3<span class=\"ms-1\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n                                        <path d=\"M3.33333 14H12.6667C13.403 14 14 13.403 14 12.6667V3.33333C14 2.59695 13.403 2 12.6667 2H3.33333C2.59695 2 2 2.59695 2 3.33333V12.6667C2 13.403 2.59695 14 3.33333 14ZM3.33333 14L10.6667 6.66667L14 10M6.66667 5.66667C6.66667 6.21895 6.21895 6.66667 5.66667 6.66667C5.11438 6.66667 4.66667 6.21895 4.66667 5.66667C4.66667 5.11438 5.11438 4.66667 5.66667 4.66667C6.21895 4.66667 6.66667 5.11438 6.66667 5.66667Z\" stroke=\"#667085\" stroke-width=\"1.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                                      </svg></span></div>\r\n                                </div> -->\r\n                            </div>\r\n                            <div  *ngIf=\"Imagedata?.zoneVisited&&Imagedata?.zoneVisited.length>0\" class=\"separator separator-double m-3\"></div>\r\n\r\n                            <div *ngIf=\"Imagedata?.zoneVisited&&Imagedata?.zoneVisited.length>0\"  class=\"row\">\r\n                                <div class=\"col-md-6\">\r\n                                    <span class=\"tag-class\">Zones Visited</span>\r\n\r\n                                </div>\r\n                               \r\n                                <ng-container class=\"h-200px scroll\">\r\n                                    <div class=\"col mt-2\" *ngFor=\"let obj of Imagedata?.zoneVisited\">\r\n                                        <span class=\"badge badge-light-primary \">{{obj}}</span>\r\n                                    </div>\r\n                                     <div *ngIf=\"Imagedata?.zoneVisited.length ===0\" class=\"col-md-12 mt-2 text-center\">\r\n                                        <img class=\"img-nodata\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n                                        <div class=\"nodata-title\">No Zones Visited</div>\r\n                                        <div class=\"nodata-sub\">There is no result for this Zones</div>\r\n                                    </div>\r\n                                 \r\n                                </ng-container>\r\n                               \r\n                            </div>\r\n                            <div class=\"separator separator-double m-3\"></div>\r\n\r\n                            <!-- <div *ngIf=\"footfallDataShow !=='tracking-enabled'\" class=\"my-3\">\r\n                                <span class=\"tag-class\">Staff Engagement</span>\r\n                            </div>\r\n\r\n                            <div *ngIf=\"footfallDataShow !=='tracking-enabled'\" class=\"d-flex flex-wrap\">\r\n                                <div class=\"border border-gray-300 border-dobule rounded w-45 py-3 px-4 me-6 mb-3\">\r\n                                    <div class=\"d-flex align-items-center\">\r\n                                        <div class=\"spent-title\">{{Imagedata?.staffEngagement.timeTakenToAssist}} </div>\r\n                                    </div>\r\n                                    <div class=\"spent-value my-1\">Time taken to assist \r\n                                       \r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"border border-gray-300 border-dobule rounded w-45 py-3 px-4 me-6 mb-3\">\r\n                                    <div class=\"d-flex align-items-center\">\r\n                                        <div class=\"spent-title\">{{Imagedata?.staffEngagement.timeSpentWithStaff}}</div>\r\n                                    </div>\r\n                                    <div class=\"spent-value my-1\">Time spent with staff</div>\r\n                                </div>\r\n                               \r\n                               \r\n                            </div> -->\r\n                          </div>\r\n                            </section>\r\n                        </div>\r\n\r\n                        \r\n                    </div>\r\n                    </div>\r\n        </section>\r\n        </div>\r\n        \r\n</section>\r\n</div>\r\n\r\n","import {\r\n  ChangeDetectorRef,\r\n  Component,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  ElementRef,\r\n  ViewChild,\r\n  TemplateRef,\r\n} from \"@angular/core\";\r\nimport { TrafficRvpsService } from \"../../services/traffic-rvps.service\";\r\nimport { GlobalStateService } from \"tango-app-ui-global\";\r\nimport { TrafficService } from \"../../services/traffic.service\";\r\nimport { ToastService } from \"tango-app-ui-shared\";\r\nimport { forkJoin, of, Subject, takeUntil } from \"rxjs\";\r\nimport { NgbModal, NgbModalRef } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { catchError, debounceTime } from \"rxjs/operators\";\r\n\r\n@Component({\r\n  selector: \"lib-img-rvps\",\r\n  templateUrl: \"./img-rvps.component.html\",\r\n  styleUrl: \"./img-rvps.component.scss\",\r\n})\r\nexport class ImgRvpsComponent implements OnInit, OnDestroy {\r\n  @ViewChild(\"zoomPopup\") zoomPopup: ElementRef;\r\n  @ViewChild(\"parentChildImgConfirmationModel\") parentChildImgConfirmationModel: TemplateRef<any>;\r\n  @ViewChild(\"imageNewPopup\") imageNewPopup: ElementRef;\r\n  @ViewChild(\"raisedPopup\") raisedPopup: ElementRef;\r\n  @ViewChild(\"resetRequestPopup\") resetRequestPopup: ElementRef;\r\n  @ViewChild(\"imagePopup\") imagePopup: ElementRef;\r\n  // --- Duplicate parent popup (separate modal) ---\r\n  @ViewChild(\"duplicateParentPopup\") duplicateParentPopup: ElementRef;\r\n  @ViewChild(\"leftPanelContainer\") leftPanelContainer: ElementRef; // img re-render issue fix\r\n  duplicateParentContext: any = null;\r\n  duplicateChildrenList: any[] = [];\r\n  isDuplicateParentEditMode: boolean = false;\r\n  selectedDuplicateImagesList: any = [];\r\n  tempRaisedPayload: any = null;\r\n  commentText: any;\r\n  getRaisedData: any;\r\n  isModalOpen = false;\r\n  currentImageModalRef: NgbModalRef | null = null;\r\n  currentImageIndex: number = 0;\r\n  private readonly destroy$ = new Subject();\r\n  Math = Math; // Expose Math to template\r\n  headerData: any;\r\n  storeIdarray: any;\r\n  loading: boolean = true;\r\n  noData = false;\r\n  normalize: any;\r\n  overallCardData: any = [];\r\n  configIconList: any = [];             // user based icon config list\r\n  cardDataMap: { [date: string]: any } = {};\r\n  ticketReviewStatus: any = [];\r\n  userImgComment: any;\r\n  revisionMailTo: string;\r\n  revisionConfig: any[] = [];\r\n  selectImageArray: any;\r\n  remainingImageArray: any;\r\n  filteredDuplicateImages: any[] = []; // Cached filtered duplicate images\r\n  revopsTypeValue = false;\r\n  revopsTypeValuepopup = false;\r\n  editBtnShow = false;\r\n  originalCheckedDuplicateIds: any[] = [];\r\n  selectedType: any = \"\"; // default selected\r\n  selectedRadioType: any;\r\n  enableSaveBtn: boolean = true;\r\n  popupType: any;\r\n  users: any;\r\n  isAccordionExpanded = true;\r\n  folderView: boolean;\r\n  backnav: boolean;\r\n  dateArray: any;\r\n  isNavEnabled: boolean = false;\r\n  selectedTime: any;\r\n  folderName: any;\r\n  folderDate: any;\r\n  imageFlow = false;\r\n  splitScreenEnabled = false; // Flag to enable split-screen view\r\n  // get Revops Api\r\n  getRvpsList: any;\r\n  getRvpsImageList: any;\r\n  objectsArray: any;\r\n  imagesArrayData: any;\r\n  listViewGroups: Array<{ timeRange: string; data: any[] }> = [];\r\n  remainingImagesGroups: Array<{ timeRange: string; data: any[] }> = [];\r\n  selectIndex: any = 0;\r\n  footfallDate: any;\r\n  lengthValue: boolean;\r\n  viewMode: \"grid\" | \"list\" = \"grid\";\r\n  type: any = \"footfall\";\r\n  imageUrl: any;\r\n  revopsTypeCount: any;\r\n  currentTimeRangeData: any = [];\r\n  overallArrayData: any = [];\r\n  allFootfallData: any = [];\r\n  countData: any = [];\r\n  tempPopupValue: any = null;\r\n  tempModalImage: any = null; // Temporary storage for modal image when duplicate is selected\r\n  modalNavigationList: any[] = []; // List of images for modal navigation\r\n  currentModalImageIndex: number = 0; // Current index in modal navigation list\r\n  selectedImagePosition: { templd: string, timeRange: string, index: number } | null = null; // img re-render issue fix\r\n  leftPanelScrollPosition: number = 0; // img re-render issue fix\r\n  pendingSelectedImage: any = null; // img re-render issue fix\r\n  shouldRestoreSelectedImage: boolean = false; // img re-render issue fix\r\n  allowTicketCreation: number = 0;\r\n\r\n  constructor(\r\n    private service: TrafficService,\r\n    public gs: GlobalStateService,\r\n    private cd: ChangeDetectorRef,\r\n    private modalService: NgbModal,\r\n    private toast: ToastService,\r\n    private rvpsService: TrafficRvpsService\r\n  ) { }\r\n\r\n\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next(true);\r\n    this.destroy$.complete();\r\n  }\r\n\r\n  toggleAccordion() {\r\n    this.isAccordionExpanded = !this.isAccordionExpanded;\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.getInital();\r\n    const userData: any = JSON.parse(localStorage.getItem(\"user-info\") || \"{}\");\r\n    this.users = userData;\r\n\r\n  }\r\n\r\n  getInital() {\r\n    this.gs.dataRangeValue\r\n      .pipe(takeUntil(this.destroy$), debounceTime(100))\r\n      .subscribe((data: any) => {\r\n\r\n        if (data !== null || data?.client !== null) {\r\n          this.headerData = data;\r\n          this.storeIdarray = this.headerData?.stores\r\n            .filter((store: any) => store.checked)\r\n            .map((store: any) => store.storeId);\r\n          this.backToFootfall();\r\n          this.displayDateRange();\r\n          this.loadCardData();\r\n          if (\r\n            this.headerData?.date?.startDate === this.headerData?.date?.endDate\r\n          ) {\r\n            this.backnav = false;\r\n            this.displayDateRange();\r\n            this.getimages(0, this.headerData.date.endDate);\r\n          } else {\r\n            this.folderView = true;\r\n            this.backnav = true;\r\n          }\r\n        }\r\n      });\r\n  }\r\n\r\n  backToFootfall() {\r\n    this.folderView = true;\r\n    this.getRvpsList = [];\r\n    this.getRvpsImageList = [];\r\n    this.objectsArray = [];\r\n    this.noData = false;\r\n    this.type = \"footfall\";\r\n    this.selectedTime = \"\";\r\n    this.splitScreenEnabled = false;\r\n    this.selectImageArray = null;\r\n    this.remainingImageArray = [];\r\n    this.remainingImagesGroups = [];\r\n    this.viewMode = \"grid\";\r\n    this.userImgComment = '';\r\n  }\r\n\r\n  displayDateRange() {\r\n    const dates = this.getDateRangeArray(\r\n      this.headerData.date.startDate,\r\n      this.headerData.date.endDate\r\n    );\r\n    this.dateArray = dates;\r\n  }\r\n\r\n  getDateRangeArray(fromDate: string, toDate: string): string[] {\r\n    const start = new Date(fromDate); // Convert string to Date object\r\n    const end = new Date(toDate); // Convert string to Date object\r\n    const dateArray: string[] = [];\r\n\r\n    // Check if the dates are valid\r\n    if (isNaN(start.getTime()) || isNaN(end.getTime())) {\r\n      return dateArray;\r\n    }\r\n\r\n    // Loop from start date to end date\r\n    let currentDate = start;\r\n    while (currentDate <= end) {\r\n      dateArray.push(currentDate.toISOString().split(\"T\")[0]); // Format YYYY-MM-DD\r\n      currentDate.setDate(currentDate.getDate() + 1); // Increment the date by 1 day\r\n    }\r\n    return dateArray;\r\n  }\r\n\r\n  // Load folder view - initial card data\r\n  loadCardData() {\r\n    const storeId =\r\n      this.storeIdarray && this.storeIdarray.length > 0 ? this.storeIdarray[0] : null;\r\n    if (!storeId || !this.headerData?.date) {\r\n      this.overallCardData = [];\r\n      this.cardDataMap = {};\r\n      return;\r\n    }\r\n\r\n    this.rvpsService\r\n      .getImageDirectoryCardData(\r\n        storeId,\r\n        this.headerData.date.startDate,\r\n        this.headerData.date.endDate\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.overallCardData = res?.data || [];\r\n\r\n            this.cardDataMap = (this.overallCardData || []).reduce(\r\n              (acc: { [key: string]: any }, item: any) => {\r\n                const normalizedDate = item?.date\r\n                  ? new Date(item.date).toISOString().split(\"T\")[0]\r\n                  : null;\r\n                if (normalizedDate) {\r\n                  acc[normalizedDate] = {\r\n                    ...item,\r\n                    ticketStatusLower: item?.ticketStatus\r\n                      ? String(item.ticketStatus).toLowerCase()\r\n                      : \"\",\r\n                  };\r\n                }\r\n                return acc;\r\n              },\r\n              {}\r\n            );\r\n          } else {\r\n            this.overallCardData = [];\r\n            this.cardDataMap = {};\r\n          }\r\n        },\r\n        error: (err) => {\r\n          console.error(\"Error fetching loadCardData:\", err);\r\n          this.overallCardData = [];\r\n          this.cardDataMap = {};\r\n        },\r\n      });\r\n  }\r\n\r\n  selectedTimes(val: any) {\r\n    this.selectedTime = val;\r\n    this.folderName = val;\r\n    this.folderView = false;\r\n    this.type = this.type;\r\n    this.userImgComment = '';\r\n    // Re-filter to show only the selected hour data in the left panel\r\n    this.applyFilters();\r\n  }\r\n\r\n  getimages(index: any, obj: any) {\r\n    this.objectsArray = [];\r\n    this.selectIndex = index;\r\n    this.folderDate = obj;\r\n    (this.footfallDate = obj), (this.folderView = false);\r\n    this.service?.isnormalizeSource\r\n      ?.pipe(takeUntil(this.destroy$), debounceTime(300))\r\n      ?.subscribe((normalize: any) => {\r\n        this.normalize = normalize;\r\n        if (!normalize) {\r\n          this.getRvpsList = [];\r\n          this.getRvpsImageList = [];\r\n          this.objectsArray = [];\r\n          this.getRevops();\r\n          // this.getTotal();\r\n        } else {\r\n          this.lengthValue = false;\r\n          this.objectsArray = [];\r\n        }\r\n      });\r\n  }\r\n\r\n  getTotal() {\r\n    this.countData = [];\r\n    const storeId =\r\n      this.storeIdarray && this.storeIdarray.length > 0\r\n        ? this.storeIdarray[0]\r\n        : null;\r\n    const dateString = this.folderDate || \"\";\r\n    this.rvpsService\r\n      .getTotalVal(storeId, dateString)\r\n      .pipe(takeUntil(this.destroy$))\r\n      ?.subscribe({\r\n        next: (res: any) => {\r\n          if (res && res.code === 200) {\r\n\r\n            if (this.getRvpsList?.length) this.countData = res.data;\r\n          } else {\r\n            this.countData = [];\r\n          }\r\n        },\r\n        error: (err) => { },\r\n      });\r\n  }\r\n\r\n  getTicketStatuses(): string[] {\r\n    const statusList = this.getRvpsList?.ticketStatus;\r\n    if (Array.isArray(statusList)) {\r\n      return statusList.map((s) => s?.status?.trim()).filter(Boolean); // Removes null/undefined\r\n    }\r\n    return [];\r\n  }\r\n\r\n  getRevops() {\r\n    this.loading = true;\r\n    this.noData = false;\r\n    // this.objectsArray =[];\r\n    // this.overallArrayData =[];\r\n    this.getRvpsList = [];\r\n    this.getRvpsImageList = [];\r\n    this.allFootfallData = [];\r\n    const storeId = this.storeIdarray && this.storeIdarray.length > 0 ? this.storeIdarray[0] : null;\r\n    const dateString = this.folderDate || \"\";\r\n    const groupByKey = \"time\";\r\n    const type = this.type === \"footfall\" ? \"\" : this.type || \"\";\r\n    const processType = \"footfall\";\r\n    this.rvpsService\r\n      .getRvpsListApi(storeId, dateString, groupByKey, type, processType)\r\n      .pipe(takeUntil(this.destroy$))\r\n      .subscribe({\r\n        next: (res: any) => {\r\n          if (res && res.code === 200) {\r\n            this.configIconList = [];\r\n            this.commentText = '';\r\n            this.getRvpsList = res?.data;\r\n            console.log(\"🚀 ~ file: img-rvps.component.ts:334 ~ ImgRvpsComponent ~ this.getRvpsList:\", this.getRvpsList);\r\n            this.imageUrl = this.rvpsService?.footfallCDN;\r\n            this.getRvpsImageList = res?.data?.result;\r\n            this.ticketReviewStatus = res?.data?.ticketStatus;\r\n            this.configIconList = res?.data?.config?.taggingLimitation || [];\r\n            this.revisionMailTo = res?.data?.config?.contactEmail || '--';\r\n            this.revisionConfig = res?.data?.config?.revision || [];\r\n            this.allowTicketCreation = res?.data?.config?.allowTicketCreation || 0;\r\n            // Save the full footfall data (grouped by timeRange)\r\n            this.allFootfallData = res?.data?.result?.footfallData || [];\r\n            // Build time-range tabs and keep selection in sync for the current type\r\n            this.updateTimeRangeTabs(this.type);\r\n\r\n            // Count revopsTypes - Initialize with static types and dynamic types from configIconList\r\n            const revopsTypeCount: { [key: string]: number } = {\r\n              \"non-tagging\": 0,\r\n              duplicate: 0,\r\n              employee: 0,\r\n            };\r\n\r\n            // Initialize dynamic types from configIconList\r\n            if (this.configIconList && Array.isArray(this.configIconList)) {\r\n              this.configIconList.forEach((item: any) => {\r\n                const type = item?.type || '';\r\n                if (type && type !== 'duplicate' && type !== 'employee') {\r\n                  revopsTypeCount[type] = 0;\r\n                }\r\n              });\r\n            }\r\n\r\n            //  backward compatibility\r\n            // revopsTypeCount[\"houseKeeping\"] = 0;\r\n            // revopsTypeCount[\"junk\"] = 0;\r\n\r\n            let totalCount = 0;\r\n            this.overallArrayData = [];\r\n\r\n            this.allFootfallData.forEach((item: any) => {\r\n              item.data?.forEach((image: any) => {\r\n                this.overallArrayData.push(image);\r\n                totalCount++;\r\n\r\n                const type = image.revopsType?.trim() || \"unknown\";\r\n                // Count static types\r\n                if (type === \"non-tagging\") {\r\n                  revopsTypeCount[\"non-tagging\"]++;\r\n                } else if (type === \"employee\") {\r\n                  revopsTypeCount[\"employee\"]++;\r\n                } else if (type === \"duplicate\") {\r\n                  // Duplicate is handled separately below\r\n                  // revopsTypeCount[\"duplicate\"]++;\r\n                } else {\r\n                  if (revopsTypeCount.hasOwnProperty(type)) {\r\n                    revopsTypeCount[type] = (revopsTypeCount[type] || 0) + 1;\r\n                  }\r\n                }\r\n\r\n                // Count duplicates only from duplicateImagePath\r\n                if (Array.isArray(image.duplicateImagePath)) {\r\n                  revopsTypeCount[\"duplicate\"] = (revopsTypeCount[\"duplicate\"] || 0) +\r\n                    image.duplicateImagePath.length;\r\n                }\r\n              });\r\n            });\r\n\r\n            // Build countData with all types\r\n            this.countData = {\r\n              footfallCount: totalCount,\r\n              nonTags: revopsTypeCount[\"non-tagging\"],\r\n              duplicate: revopsTypeCount[\"duplicate\"],\r\n              employee: revopsTypeCount[\"employee\"],\r\n              // Include all dynamic types\r\n              ...revopsTypeCount\r\n            };\r\n            // Apply type filter after loading timeRange data\r\n            this.applyFilters();\r\n\r\n            this.cd.detectChanges();\r\n            \r\n            // Restore selected image if there's a pending one - // img re-render issue fix\r\n            if (this.shouldRestoreSelectedImage && this.pendingSelectedImage) {\r\n              const updatedImage = this.overallArrayData?.find(\r\n                (img: any) => img.templd === this.pendingSelectedImage.templd\r\n              );\r\n              if (updatedImage) {\r\n                this.selectImageArray = updatedImage;\r\n                this.splitScreenEnabled = true;\r\n                \r\n                // Restore UI state based on image type\r\n                this.restoreImageUIState(updatedImage);\r\n                \r\n                // Rebuild remaining images array and groups\r\n                this.updateRemainingImagesAfterRestore(updatedImage);\r\n              } else {\r\n                this.splitScreenEnabled = false;\r\n              }\r\n              this.pendingSelectedImage = null;\r\n              this.shouldRestoreSelectedImage = false;\r\n            }\r\n            \r\n            // Restore scroll position after list rebuild if we have a stored position\r\n            this.restoreScrollPosition(); // img re-render issue fix\r\n            \r\n            this.loading = false;\r\n            // this.noData = false;\r\n          } else {\r\n            // In case of failure\r\n            this.getRvpsList = [];\r\n            this.getRvpsImageList = [];\r\n            this.objectsArray = [];\r\n            this.imagesArrayData = [];\r\n            this.overallArrayData = [];\r\n            this.countData = [];\r\n            this.loading = false;\r\n            this.noData = true;\r\n          }\r\n        },\r\n        error: (err) => {\r\n          const msg =\r\n            err.error.error ||\r\n            err.error ||\r\n            err?.error?.message ||\r\n            err.message ||\r\n            \"Unknown error\";\r\n          this.toast.getErrorToast(msg);\r\n          this.loading = false;\r\n          this.noData = true;\r\n          this.getRvpsList = [];\r\n          this.getRvpsImageList = [];\r\n          this.objectsArray = [];\r\n          this.imagesArrayData = [];\r\n          this.overallArrayData = [];\r\n          this.countData = [];\r\n        },\r\n      });\r\n  }\r\n\r\n  editValue(action: any) {\r\n    const type = (this.selectedType || \"\").toLowerCase();\r\n\r\n    if (action === 'popup') {\r\n      this.revopsTypeValuepopup = false\r\n    } else {\r\n      this.revopsTypeValue = false;\r\n    }\r\n    const selectedImage = this.selectImageArray;\r\n    const selectedTempld = selectedImage?.templd;\r\n\r\n    if (type === \"duplicate\" && Array.isArray(selectedImage.duplicateImagePath)) {\r\n      // 1. Convert duplicate children into consistent objects with parent reference\r\n      const duplicateChildren = selectedImage.duplicateImagePath.map(\r\n        (child: any) => ({\r\n          ...child,\r\n          parent: selectedTempld,\r\n          selected: true,\r\n        })\r\n      );\r\n\r\n      // 2. Collect the templd values of duplicate children\r\n      const duplicateChildIds = duplicateChildren.map(\r\n        (child: any) => child.tempId\r\n      );\r\n\r\n      // 3. Filter out non-tagging images except the selected parent & its children\r\n      const nonTaggingImages = this.overallArrayData.filter((img: any) => {\r\n        const isNonTagging =\r\n          (img.revopsType || \"\").toLowerCase() === \"non-tagging\";\r\n        const isNotSelected =\r\n          img.templd !== selectedTempld &&\r\n          !duplicateChildIds.includes(img.templd);\r\n        return isNonTagging && isNotSelected;\r\n      });\r\n\r\n      // 4. Merge duplicate children + other non-tagging images\r\n      this.remainingImageArray = [...duplicateChildren, ...nonTaggingImages];\r\n\r\n      // 5. Mark selected: only duplicate images that were marked isChecked\r\n      this.remainingImageArray.forEach((img: any) => {\r\n        const isDuplicate =\r\n          (img.revopsType || \"\").toLowerCase() === \"duplicate\";\r\n        img.selected = isDuplicate && img.isChecked === true;\r\n      });\r\n\r\n      // 6. Store original checked IDs to compare later during submit\r\n      this.originalCheckedDuplicateIds = this.remainingImageArray\r\n        .filter((img: any) => img.isChecked === true)\r\n        .map((img: any) => img.templd || img.tempId)\r\n        .filter(Boolean);\r\n\r\n      // 7. Fill selectedDuplicateImagesList with pre-selected duplicates\r\n      this.selectedDuplicateImagesList = this.remainingImageArray\r\n        .filter(\r\n          (img: any) =>\r\n            (img.revopsType || \"\").toLowerCase() === \"duplicate\" &&\r\n            img.isChecked === true\r\n        )\r\n        .map((img: any) => ({\r\n          ...img,\r\n          parent: img.parent || selectedTempld,\r\n          isChecked: true,\r\n        }));\r\n    } else {\r\n      // Not duplicate type → show only selected type (excluding the current selected image)\r\n      this.remainingImageArray = this.overallArrayData.filter((img: any) => {\r\n        const imgType = (img.revopsType || \"\").toLowerCase();\r\n        return imgType === type && img.templd !== selectedTempld;\r\n      });\r\n    }\r\n    this.filteredDuplicateImages.map((data: any) => data.isChecked = true)\r\n  }\r\n\r\n  backToFootfall1() {\r\n    this.selectedRadioType = undefined;\r\n    this.imageFlow = false;\r\n    this.splitScreenEnabled = false; // Disable split-screen when going back\r\n    this.selectImageArray = null;\r\n  }\r\n\r\n  // when image selection from folder view\r\n  selectImageForSplitView(obj: any) {\r\n    this.splitScreenEnabled = true; // Enable split-screen when image is clicked\r\n    \r\n    // Store the position of the selected image in the list view\r\n    this.storeSelectedImagePosition(obj); // img re-render issue fix\r\n    \r\n    this.selectImageArray = obj;\r\n    this.updateFilteredDuplicateImages(); // Update cache when selected image changes\r\n    // If duplicate is already selected, preserve the duplicate context\r\n    const isDuplicateMode = this.selectImageArray.revopsType === \"duplicate\";\r\n    const selectedRevopsType = obj?.revopsType;\r\n    const isNonTagging = selectedRevopsType === \"non-tagging\";\r\n    const isAlreadyMapped = selectedRevopsType && selectedRevopsType !== \"non-tagging\" && selectedRevopsType.trim() !== \"\";\r\n    this.userImgComment = this.selectImageArray?.comments ?? '';\r\n    // Requirement 1: If selected image is non-tagging, show Cancel and Save & Close buttons\r\n    if (isNonTagging) {\r\n      this.revopsTypeValue = false;\r\n      this.revopsTypeValuepopup = false;\r\n      this.selectedType = '';\r\n      this.selectedRadioType = undefined;\r\n      this.editBtnShow = false;\r\n    }\r\n    // Requirement 2: If selected image is already mapped to other types, show Edit button first\r\n    else if (isAlreadyMapped) {\r\n      this.revopsTypeValue = true;\r\n      this.revopsTypeValuepopup = true;\r\n      this.selectedType = selectedRevopsType;\r\n      this.editBtnShow = true;\r\n      // Call onRadioChange if needed for the selected type\r\n      if (selectedRevopsType === \"duplicate\" || selectedRevopsType === \"employee\" ||\r\n        selectedRevopsType === \"houseKeeping\" || selectedRevopsType === \"junk\") {\r\n        this.onRadioChange(selectedRevopsType);\r\n      }\r\n    }\r\n    // Default case: no type assigned or empty\r\n    else {\r\n      this.revopsTypeValue = false;\r\n      this.revopsTypeValuepopup = false;\r\n      this.selectedType = '';\r\n      this.selectedRadioType = undefined;\r\n      this.editBtnShow = false;\r\n    }\r\n\r\n    if (!isDuplicateMode) {\r\n      // Show all images in left panel except duplicates and the currently selected image\r\n      const selectedTempld = obj?.templd;\r\n      this.remainingImageArray = this.overallArrayData.filter((img: any) => {\r\n        const imgType = img.revopsType.trim().toLowerCase();\r\n        // Exclude duplicates and the currently selected image\r\n        return imgType !== \"duplicate\" && img.templd !== selectedTempld;\r\n      });\r\n\r\n      // Reset checkbox states\r\n      this.remainingImageArray.forEach((img: any) => {\r\n        img.selected = false;\r\n        img.isChecked = false;\r\n      });\r\n      this.remainingImagesGroups = []; // Reset groups\r\n    }\r\n\r\n    const selectedType = obj.revopsType?.toLowerCase();\r\n    // If we're in duplicate mode and clicking on a remaining image, keep the duplicate context\r\n    // Note: Button visibility is already set above based on requirements\r\n    if (isDuplicateMode) {\r\n      // Keep the existing remaining images but update the selected image\r\n      // Don't reset the duplicate selection context\r\n      // Button visibility (revopsTypeValue, editBtnShow) is already set above\r\n      // Keep selectedRadioType as 'duplicate' to maintain context\r\n    } else if (selectedType === \"duplicate\" && Array.isArray(obj.duplicateImagePath)) {\r\n      // When clicking on a duplicate parent, show all images except duplicates and current\r\n      const selectedTempld = obj?.templd;\r\n      this.remainingImageArray = this.overallArrayData.filter((img: any) => {\r\n        const imgType = (img.revopsType || \"\").toLowerCase();\r\n        return imgType !== \"duplicate\" && img.templd !== selectedTempld;\r\n      });\r\n\r\n      // Reset checkbox states\r\n      this.remainingImageArray.forEach((img: any) => {\r\n        img.selected = false;\r\n        img.isChecked = false;\r\n      });\r\n    } else {\r\n      // For non-duplicate images, show all images except duplicates and current\r\n      const selectedTempld = obj?.templd;\r\n      this.remainingImageArray = this.overallArrayData.filter((img: any) => {\r\n        const imgType = (img.revopsType || \"\").toLowerCase();\r\n        return imgType !== \"duplicate\" && img.templd !== selectedTempld;\r\n      });\r\n\r\n      // Reset checkbox states\r\n      this.remainingImageArray.forEach((img: any) => {\r\n        img.selected = false;\r\n        img.isChecked = false;\r\n      });\r\n    }\r\n    // Build remaining images groups by time range\r\n    this.buildRemainingImagesGroups();\r\n    // Update objectsArray (hour tabs) based on remaining images groups if in duplicate mode\r\n    this.updateObjectsArrayFromFilteredData();\r\n  }\r\n\r\n  imgFullView(obj: any) {\r\n    this.selectImageArray = obj;\r\n    this.updateFilteredDuplicateImages(); // Update cache when selected image changes\r\n    this.imageFlow = true;\r\n    this.revopsTypeValue = false;\r\n    this.revopsTypeValuepopup = false;\r\n    this.selectedType = \"\";\r\n    this.selectedRadioType = undefined;\r\n    let filteredByType: any[] = [];\r\n    const selectedType = obj.revopsType?.toLowerCase();\r\n\r\n    if (selectedType === \"duplicate\" && Array.isArray(obj.duplicateImagePath)) {\r\n      // 🔹 Case 1: Duplicate parent → don't show children in left panel initially\r\n      // They will appear when duplicate radio is selected\r\n      this.remainingImageArray = [];\r\n    } else {\r\n      // 🔹 Case 2: Normal → show all images except duplicates and currently selected\r\n      const selectedTempld = obj?.templd;\r\n      this.remainingImageArray = this.overallArrayData.filter((img: any) => {\r\n        const imgType = (img.revopsType || \"\").toLowerCase();\r\n        return imgType !== \"duplicate\" && img.templd !== selectedTempld;\r\n      });\r\n\r\n      // Reset checkbox states\r\n      this.remainingImageArray.forEach((img: any) => {\r\n        img.selected = false;\r\n        img.isChecked = false;\r\n      });\r\n    }\r\n\r\n\r\n    // Handle edit button / radio logic\r\n    if (\r\n      obj?.revopsType === \"duplicate\" ||\r\n      obj?.revopsType === \"employee\" ||\r\n      obj?.revopsType === \"houseKeeping\" || obj?.revopsType === \"junk\"\r\n    ) {\r\n      if (\r\n        obj?.revopsType === \"duplicate\" &&\r\n        obj?.duplicateImagePath?.length > 0\r\n      ) {\r\n        this.editBtnShow = true;\r\n      } else if (\r\n        obj?.revopsType === \"employee\" ||\r\n        obj?.revopsType === \"houseKeeping\" || obj?.revopsType === \"junk\"\r\n      ) {\r\n        this.editBtnShow = true;\r\n      } else {\r\n        this.editBtnShow = false;\r\n      }\r\n\r\n      this.revopsTypeValue = true;\r\n      this.revopsTypeValuepopup = true;\r\n      this.selectedType = obj?.revopsType;\r\n      this.onRadioChange(obj?.revopsType);\r\n    }\r\n  }\r\n\r\n\r\n  imgSwap(obj: any) {\r\n    // Store the position of the newly selected image\r\n    this.storeSelectedImagePosition(obj); // img re-render issue fix\r\n    \r\n    if (this.selectImageArray) {\r\n      // Find where the new selected image is in the list\r\n      const index = this.remainingImageArray.findIndex(\r\n        (img: any) => img.templd === obj.templd\r\n      );\r\n\r\n      // Replace selectedImageArray back into its original position\r\n      if (index !== -1) {\r\n        this.remainingImageArray[index] = this.selectImageArray;\r\n      } else {\r\n        // fallback if not found\r\n        this.remainingImageArray.push(this.selectImageArray);\r\n      }\r\n    }\r\n\r\n    // Update selected image\r\n    this.selectImageArray = obj;\r\n\r\n    // Remove selected from remaining list\r\n    this.remainingImageArray = this.remainingImageArray.filter(\r\n      (img: any) => img.templd !== obj.templd\r\n    );\r\n    this.updateFilteredDuplicateImages(); // Update cache when selected image changes\r\n\r\n    // Rebuild remaining images groups\r\n    this.buildRemainingImagesGroups();\r\n    // Update objectsArray (hour tabs) based on remaining images groups if in duplicate mode\r\n    this.updateObjectsArrayFromFilteredData();\r\n\r\n    this.imageFlow = true;\r\n  }\r\n\r\n  // -- Non-shoppers selection type --\r\n  onRadioChange(val: any) {\r\n    this.selectedRadioType = val;\r\n    this.selectedDuplicateImagesList = [];\r\n    this.originalCheckedDuplicateIds = [];\r\n    const type = (val || \"\").toLowerCase();\r\n\r\n    if (type === \"duplicate\") {\r\n      // Capture already-tagged duplicates for the current parent (used for threshold calculations)\r\n      this.originalCheckedDuplicateIds = Array.isArray(this.selectImageArray?.duplicateImagePath)\r\n        ? this.selectImageArray.duplicateImagePath\r\n          .map((img: any) => img?.templd || img?.tempId)\r\n          .filter(Boolean)\r\n        : [];\r\n\r\n      // When duplicate radio is selected, show ALL images (including duplicates) except the currently selected one\r\n      const selectedTempld = this.selectImageArray?.templd;\r\n\r\n      this.remainingImageArray = this.overallArrayData.filter((img: any) => {\r\n        return img.templd !== selectedTempld && img?.revopsType === \"non-tagging\";\r\n      });\r\n\r\n      // Auto-check images that are already duplicated (have revopsType === \"duplicate\")\r\n      this.remainingImageArray.forEach((img: any) => {\r\n        const imgType = (img.revopsType || \"\").toLowerCase();\r\n        if (imgType === \"duplicate\") {\r\n          // Auto-check already duplicated images\r\n          img.selected = true;\r\n          img.isChecked = true;\r\n        } else {\r\n          // Reset non-duplicate images\r\n          img.selected = false;\r\n          img.isChecked = false;\r\n        }\r\n      });\r\n\r\n      // Update selectedDuplicateImagesList with auto-checked duplicates\r\n      this.selectedDuplicateImagesList = this.remainingImageArray\r\n        .filter((img: any) => img.selected && (img.revopsType || \"\").toLowerCase() === \"duplicate\")\r\n        .map((item: any) => ({\r\n          ...item,\r\n          parent: item.parent || this.selectImageArray?.templd,\r\n          isChecked: true,\r\n        }));\r\n      this.enableSaveBtn = this.selectedDuplicateImagesList?.length > 0;\r\n      // Rebuild remaining images groups after updating\r\n      this.buildRemainingImagesGroups();\r\n      // Update objectsArray (hour tabs) based on remaining images groups\r\n      this.updateObjectsArrayFromFilteredData();\r\n      // Trigger change detection to re-render filteredRemainingImagesGroups\r\n      this.cd.detectChanges();\r\n    } else {\r\n      this.enableSaveBtn = true;\r\n      // For non-duplicate types, show all images except duplicates and currently selected\r\n      const selectedTempld = this.selectImageArray?.templd;\r\n      this.remainingImageArray = this.overallArrayData.filter((img: any) => {\r\n        const imgType = (img.revopsType || \"\").toLowerCase();\r\n        return imgType !== \"duplicate\" && img.templd !== selectedTempld;\r\n      });\r\n\r\n      // Reset checkbox states\r\n      this.remainingImageArray.forEach((img: any) => {\r\n        img.selected = false;\r\n        img.isChecked = false;\r\n      });\r\n\r\n      this.remainingImagesGroups = [];\r\n      this.buildRemainingImagesGroups();\r\n      // Update objectsArray (hour tabs) - will reset if not in duplicate mode\r\n      this.updateObjectsArrayFromFilteredData();\r\n    }\r\n  }\r\n\r\n  selectPlanTrends(type: any) {\r\n    this.userImgComment = '';\r\n    this.type = type;\r\n    this.splitScreenEnabled = false;\r\n    this.selectedTime = '';\r\n    // Update time range tabs FIRST to set correct selectedTime, then apply filters\r\n    this.updateTimeRangeTabs(type);\r\n    this.applyFilters();\r\n  }\r\n\r\n  private updateTimeRangeTabs(selectedType?: string) {\r\n    if (!Array.isArray(this.allFootfallData) || this.allFootfallData.length === 0) {\r\n      this.objectsArray = [];\r\n      this.currentTimeRangeData = [];\r\n      return;\r\n    }\r\n\r\n    const normalizedType = (selectedType || this.type || \"footfall\").toLowerCase();\r\n    /* Old time-range build logic (footfall-only)\r\n    const timeRanges = this.allFootfallData.map(\r\n      (item: any) => item.timeRange\r\n    );\r\n    this.objectsArray = timeRanges.map((timeRange: any) => ({\r\n      timeRange,\r\n      count:\r\n        this.allFootfallData.find((d: any) => d.timeRange === timeRange)\r\n          ?.data?.length || 0,\r\n    }));\r\n    if (!timeRanges.includes(this.selectedTime)) {\r\n      this.selectedTimes(this.objectsArray[0].timeRange);\r\n    }\r\n    this.currentTimeRangeData =\r\n      this.allFootfallData.find(\r\n        (item: any) => item.timeRange === this.selectedTime\r\n      )?.data || [];\r\n    */\r\n    const timeRanges = this.allFootfallData.map((item: any) => item?.timeRange).filter((tr: any) => !!tr);\r\n\r\n    const counts: Record<string, number> = {};\r\n    this.allFootfallData.forEach((bucket: any) => {\r\n      const key = bucket?.timeRange;\r\n      if (!key) return;\r\n      const bucketData = Array.isArray(bucket?.data) ? bucket.data : [];\r\n      const filteredData = normalizedType === \"footfall\" ? bucketData :\r\n        bucketData.filter((img: any) => (img?.revopsType || \"\").toLowerCase() === normalizedType);\r\n      counts[key] = filteredData.length;\r\n    });\r\n\r\n    this.objectsArray = timeRanges.map((timeRange: any) => ({\r\n      timeRange,\r\n      count: counts[timeRange] || 0,\r\n    }));\r\n\r\n    // Sort by time range chronologically (morning to evening)\r\n    this.objectsArray.sort((a: any, b: any) => {\r\n      if (a.timeRange === \"NA\") return 1;\r\n      if (b.timeRange === \"NA\") return -1;\r\n      return this.compareTimeRanges(a.timeRange, b.timeRange);\r\n    });\r\n\r\n    const preferredRanges = normalizedType === \"footfall\" ? timeRanges\r\n      : this.objectsArray.filter((item: any) => item.count > 0)\r\n        .map((item: any) => item.timeRange);\r\n\r\n    const fallbackRanges = preferredRanges.length ? preferredRanges : timeRanges;\r\n    const selectedIsValidInAll = timeRanges.includes(this.selectedTime);\r\n    const selectedIsValidForType = normalizedType === \"footfall\" || preferredRanges.includes(this.selectedTime) ||\r\n      !preferredRanges.length;\r\n\r\n    if (!selectedIsValidInAll || !selectedIsValidForType) {\r\n      const nextRange = fallbackRanges[0];\r\n      if (nextRange) {\r\n        this.selectedTime = nextRange;\r\n      }\r\n    }\r\n\r\n    // Get data for selected time range and filter by type to avoid affecting other tabs\r\n    const rawData = this.allFootfallData.find((item: any) => item.timeRange === this.selectedTime)?.data || [];\r\n\r\n    this.currentTimeRangeData = normalizedType === \"footfall\" ? rawData\r\n      : rawData.filter((img: any) => (img?.revopsType || \"\").toLowerCase() === normalizedType);\r\n  }\r\n\r\n  applyFilters() {\r\n    this.imageFlow = false;\r\n    // this.splitScreenEnabled = false; // Reset split-screen when filters change\r\n    // this.selectImageArray = null;\r\n    const selectedType = this.type?.toLowerCase();\r\n    this.imagesArrayData = [];\r\n    if (this.viewMode === \"list\") {\r\n      if (selectedType === \"footfall\") {\r\n        const allData: any[] = [];\r\n        (this.allFootfallData || []).forEach((bucket: any) => {\r\n          if (Array.isArray(bucket?.data)) {\r\n            allData.push(...bucket.data);\r\n          }\r\n        });\r\n        this.currentTimeRangeData = allData;\r\n        this.selectedTime = '';\r\n      } else {\r\n        // For non-footfall types in list view\r\n        const allData: any[] = [];\r\n        (this.allFootfallData || []).forEach((bucket: any) => {\r\n          if (Array.isArray(bucket?.data)) {\r\n            const filteredData = bucket.data.filter((image: any) =>\r\n              (image.revopsType || \"\").toLowerCase() === selectedType\r\n            );\r\n            allData.push(...filteredData);\r\n          }\r\n        });\r\n        this.currentTimeRangeData = allData;\r\n        this.selectedTime = '';\r\n      }\r\n    } else {\r\n      // For grid view, use selectedTime to get data from specific time range\r\n      const timeRangeData = this.allFootfallData.find((item: any) => item.timeRange === this.selectedTime) || null;\r\n      const rawData = timeRangeData?.data || [];\r\n\r\n      // Filter by type if not footfall\r\n      this.currentTimeRangeData = selectedType === \"footfall\"\r\n        ? rawData : rawData.filter((image: any) => (image.revopsType || \"\").toLowerCase() === selectedType);\r\n    }\r\n\r\n    // Set images array\r\n    this.imagesArrayData = [...this.currentTimeRangeData];\r\n\r\n    // Set noData based on result\r\n    this.noData = !this.imagesArrayData?.length;\r\n\r\n    this.buildListViewGroups();\r\n    // Update time range data when grid/list view data changes\r\n    this.updateObjectsArrayFromFilteredData();\r\n    this.cd.detectChanges();\r\n  }\r\n\r\n  setViewMode(mode: \"grid\" | \"list\") {\r\n    this.splitScreenEnabled = false;\r\n    if (this.viewMode !== mode) {\r\n      this.viewMode = mode;\r\n      // Reset to footfall when view mode changes\r\n      this.selectPlanTrends('footfall');\r\n    } else {\r\n      // If view mode is the same, just update selectedTime for list view\r\n      if (this.viewMode === \"list\") {\r\n        this.selectedTime = '';\r\n      }\r\n      // Update time range data when view mode changes\r\n      this.updateObjectsArrayFromFilteredData();\r\n    }\r\n  }\r\n\r\n  // Convert minutes → hr + mins\r\n  convertMinutes(totalMinutes: number) {\r\n    if (!totalMinutes && totalMinutes !== 0) return { hours: 0, mins: 0 };\r\n    const hours = Math.floor(totalMinutes / 60);\r\n    const mins = totalMinutes % 60;\r\n    return { hours, mins };\r\n  }\r\n\r\n  private buildRemainingImagesGroups() {\r\n    if (!this.remainingImageArray || this.remainingImageArray.length === 0) {\r\n      this.remainingImagesGroups = [];\r\n      return;\r\n    }\r\n\r\n    const order: string[] = [];\r\n    const map = new Map<string, any[]>();\r\n\r\n    this.remainingImageArray.forEach((img: any) => {\r\n      const key = img?.timeRange || \"NA\";\r\n      if (!map.has(key)) {\r\n        map.set(key, []);\r\n        order.push(key);\r\n      }\r\n      map.get(key)?.push(img);\r\n    });\r\n\r\n    this.remainingImagesGroups = order.map((key) => ({\r\n      timeRange: key,\r\n      data: map.get(key) || [],\r\n    }));\r\n  }\r\n\r\n  buildListViewGroups() {\r\n    if (this.type === \"footfall\") {\r\n      this.listViewGroups = (this.allFootfallData || [])\r\n        .filter((group: any) => Array.isArray(group?.data) && group.data.length)\r\n        .map((group: any) => ({\r\n          timeRange: group?.timeRange || \"NA\",\r\n          data: group?.data || [],\r\n        }));\r\n      return;\r\n    }\r\n\r\n    const order: string[] = [];\r\n    const map = new Map<string, any[]>();\r\n\r\n    (this.imagesArrayData || []).forEach((img: any) => {\r\n      const key = img?.timeRange || \"NA\";\r\n      if (!map.has(key)) {\r\n        map.set(key, []);\r\n        order.push(key);\r\n      }\r\n      map.get(key)?.push(img);\r\n    });\r\n\r\n    this.listViewGroups = order.map((key) => ({\r\n      timeRange: key,\r\n      data: map.get(key) || [],\r\n    }));\r\n  }\r\n\r\n  /**\r\n   * Compares two time range strings chronologically (morning to evening)\r\n   * Handles formats like \"9:00 AM - 10:00 AM\", \"2:00 PM - 3:00 PM\", etc.\r\n   * @param timeRangeA First time range string\r\n   * @param timeRangeB Second time range string\r\n   * @returns Negative if A comes before B, positive if A comes after B, 0 if equal\r\n   */\r\n  private compareTimeRanges(timeRangeA: string, timeRangeB: string): number {\r\n    // Handle \"NA\" or empty strings\r\n    if (!timeRangeA || timeRangeA === \"NA\") return 1;\r\n    if (!timeRangeB || timeRangeB === \"NA\") return -1;\r\n\r\n    // Parse start time from time range (format: \"9:00 AM - 10:00 AM\" or similar)\r\n    const parseTimeToMinutes = (timeStr: string): number => {\r\n      // Extract the start time (before the \" - \" separator)\r\n      const startTimeStr = timeStr.split(\" - \")[0]?.trim() || timeStr.trim();\r\n\r\n      // Match time patterns like \"9:00 AM\", \"10:30 PM\", \"12:00 PM\", etc.\r\n      const timeMatch = startTimeStr.match(/(\\d{1,2}):(\\d{2})\\s*(AM|PM)/i);\r\n      if (!timeMatch) {\r\n        // If format doesn't match, try to parse as-is or return a large number for sorting\r\n        return 9999;\r\n      }\r\n\r\n      let hours = parseInt(timeMatch[1], 10);\r\n      const minutes = parseInt(timeMatch[2], 10);\r\n      const period = timeMatch[3].toUpperCase();\r\n\r\n      // Convert to 24-hour format\r\n      if (period === \"PM\" && hours !== 12) {\r\n        hours += 12;\r\n      } else if (period === \"AM\" && hours === 12) {\r\n        hours = 0;\r\n      }\r\n\r\n      // Return total minutes since midnight\r\n      return hours * 60 + minutes;\r\n    };\r\n\r\n    const minutesA = parseTimeToMinutes(timeRangeA);\r\n    const minutesB = parseTimeToMinutes(timeRangeB);\r\n\r\n    return minutesA - minutesB;\r\n  }\r\n\r\n  /**\r\n   * Updates objectsArray (time range tabs) based on the current filtered grid/list view data\r\n   * This ensures time range counts reflect the filtered data, not just the original allFootfallData\r\n   */\r\n  private updateObjectsArrayFromFilteredData() {\r\n    // Check if duplicate mode is enabled with remaining images groups\r\n    const isDuplicateModeWithRemainingImages = \r\n      this.selectedRadioType === 'duplicate' && \r\n      !this.revopsTypeValue && \r\n      this.filteredRemainingImagesGroups && \r\n      this.filteredRemainingImagesGroups.length > 0;\r\n\r\n    // If in duplicate mode with remaining images, update objectsArray from remainingImagesGroups\r\n    if (isDuplicateModeWithRemainingImages) {\r\n      if (!Array.isArray(this.remainingImagesGroups) || this.remainingImagesGroups.length === 0) {\r\n        this.objectsArray = [];\r\n        return;\r\n      }\r\n\r\n      // Get all unique time ranges from remainingImagesGroups\r\n      const allTimeRanges = this.remainingImagesGroups.map((group: any) => group?.timeRange).filter((tr: any) => !!tr);\r\n\r\n      // Create a map of counts from remainingImagesGroups\r\n      const remainingCounts: Record<string, number> = {};\r\n      this.remainingImagesGroups.forEach((group: any) => {\r\n        const timeRange = group?.timeRange;\r\n        if (!timeRange) return;\r\n        remainingCounts[timeRange] = Array.isArray(group?.data) ? group.data.length : 0;\r\n      });\r\n\r\n      // Create objectsArray with ALL time ranges from remainingImagesGroups\r\n      this.objectsArray = allTimeRanges.map((timeRange: string) => ({\r\n        timeRange,\r\n        count: remainingCounts[timeRange] || 0,\r\n      }));\r\n\r\n      // Sort by time range chronologically\r\n      this.objectsArray.sort((a: any, b: any) => {\r\n        if (a.timeRange === \"NA\") return 1;\r\n        if (b.timeRange === \"NA\") return -1;\r\n        return this.compareTimeRanges(a.timeRange, b.timeRange);\r\n      });\r\n      return;\r\n    }\r\n\r\n    const selectedType = (this.type || \"footfall\").toLowerCase();\r\n    if (this.viewMode === \"list\") {\r\n      // For list view, show ALL time ranges from allFootfallData, even if count is 0\r\n      if (!Array.isArray(this.allFootfallData) || this.allFootfallData.length === 0) {\r\n        this.objectsArray = [];\r\n        return;\r\n      }\r\n\r\n      // Get all unique time ranges from allFootfallData first\r\n      const allTimeRanges = this.allFootfallData.map((item: any) => item?.timeRange).filter((tr: any) => !!tr);\r\n\r\n      // Create a map of counts from listViewGroups\r\n      const listViewCounts: Record<string, number> = {};\r\n      this.listViewGroups.forEach((group: any) => {\r\n        const timeRange = group?.timeRange;\r\n        if (!timeRange) return;\r\n        listViewCounts[timeRange] = Array.isArray(group?.data) ? group.data.length : 0;\r\n      });\r\n\r\n\r\n      // Create objectsArray with ALL time ranges, including those with 0 count\r\n      this.objectsArray = allTimeRanges.map((timeRange: string) => ({\r\n        timeRange,\r\n        count: listViewCounts[timeRange] || 0,\r\n      }));\r\n      // Sort by time range chronologically\r\n      this.objectsArray.sort((a: any, b: any) => {\r\n        if (a.timeRange === \"NA\") return 1;\r\n        if (b.timeRange === \"NA\") return -1;\r\n        return this.compareTimeRanges(a.timeRange, b.timeRange);\r\n      });\r\n    } else {\r\n      if (!Array.isArray(this.allFootfallData) || this.allFootfallData.length === 0) {\r\n        this.objectsArray = [];\r\n        return;\r\n      }\r\n\r\n      // Get all unique time ranges from allFootfallData first\r\n      const allTimeRanges = this.allFootfallData.map((item: any) => item?.timeRange).filter((tr: any) => !!tr);\r\n\r\n      // Count filtered items for each time range\r\n      const counts: Record<string, number> = {};\r\n\r\n      this.allFootfallData.forEach((bucket: any) => {\r\n        const key = bucket?.timeRange;\r\n        if (!key) return;\r\n\r\n        const bucketData = Array.isArray(bucket?.data) ? bucket.data : [];\r\n\r\n        // Filter by type if not footfall\r\n        const filteredData = selectedType === \"footfall\" ? bucketData : bucketData.filter((img: any) =>\r\n          (img?.revopsType || \"\").toLowerCase() === selectedType);\r\n        counts[key] = filteredData.length;\r\n      });\r\n\r\n      // Create objectsArray with ALL time ranges, including those with 0 count\r\n      this.objectsArray = allTimeRanges.map((timeRange: string) => ({\r\n        timeRange,\r\n        count: counts[timeRange] || 0,\r\n      }));\r\n\r\n      // Sort by time range\r\n      this.objectsArray.sort((a: any, b: any) => {\r\n        if (a.timeRange === \"NA\") return 1;\r\n        if (b.timeRange === \"NA\") return -1;\r\n        return this.compareTimeRanges(a.timeRange, b.timeRange);\r\n      });\r\n    }\r\n  }\r\n\r\n  // filter grid images by selected time range - all images\r\n  get filteredListViewGroups(): Array<{ timeRange: string; data: any[] }> {\r\n    if (!this.selectedTime || this.selectedTime === '') {\r\n      // If no time is selected, return all groups\r\n      return this.listViewGroups;\r\n    }\r\n    // Filter groups to only show the selected time range\r\n    return this.listViewGroups.filter((group: any) => group?.timeRange === this.selectedTime);\r\n  }\r\n\r\n  // filter grid images by selected time range - duplicate images\r\n  get filteredRemainingImagesGroups(): Array<{ timeRange: string; data: any[] }> {\r\n    if (!this.selectedTime || this.selectedTime === '') {\r\n      // If no time is selected, return all groups\r\n      return this.remainingImagesGroups;\r\n    }\r\n    // Filter groups to only show the selected time range\r\n    return this.remainingImagesGroups.filter((group: any) => group?.timeRange === this.selectedTime);\r\n  }\r\n\r\n  // Navigation methods using filteredListViewGroups -- image navigation split view\r\n  getNavigationListFromFilteredGroups(): any[] {\r\n    const navigationList: any[] = [];\r\n    if (this.filteredListViewGroups && this.filteredListViewGroups.length > 0) {\r\n      this.filteredListViewGroups.forEach((group: any) => {\r\n        if (group.data && Array.isArray(group.data)) {\r\n          navigationList.push(...group.data);\r\n        }\r\n      });\r\n    }\r\n    return navigationList;\r\n  }\r\n\r\n  getCurrentImageIndexInFilteredGroups(): number {\r\n    if (!this.selectImageArray) return -1;\r\n    const navigationList = this.getNavigationListFromFilteredGroups();\r\n    if (navigationList.length === 0) return -1;\r\n\r\n    const currentId = this.selectImageArray.templd || this.selectImageArray.tempId;\r\n    return navigationList.findIndex((img: any) => \r\n      (img.templd || img.tempId) === currentId\r\n    );\r\n  }\r\n\r\n  canNavigatePrevious(): boolean {\r\n    const index = this.getCurrentImageIndexInFilteredGroups();\r\n    return index > 0;\r\n  }\r\n\r\n  canNavigateNext(): boolean {\r\n    const navigationList = this.getNavigationListFromFilteredGroups();\r\n    const index = this.getCurrentImageIndexInFilteredGroups();\r\n    return index >= 0 && index < navigationList.length - 1;\r\n  }\r\n\r\n  navigateFilteredImage(direction: \"previous\" | \"next\") {\r\n    const navigationList = this.getNavigationListFromFilteredGroups();\r\n    if (navigationList.length === 0) return;\r\n\r\n    const currentIndex = this.getCurrentImageIndexInFilteredGroups();\r\n    if (currentIndex === -1) return;\r\n\r\n    let newIndex: number;\r\n    if (direction === \"previous\" && this.canNavigatePrevious()) {\r\n      newIndex = currentIndex - 1;\r\n    } else if (direction === \"next\" && this.canNavigateNext()) {\r\n      newIndex = currentIndex + 1;\r\n    } else {\r\n      return;\r\n    }\r\n\r\n    if (newIndex >= 0 && newIndex < navigationList.length) {\r\n      const newImage = navigationList[newIndex];\r\n      \r\n      // If in grid mode, check if the new image is in a different time range\r\n      if (this.viewMode === \"grid\" && newImage?.timeRange) {\r\n        const newTimeRange = newImage.timeRange;\r\n        const currentTimeRange = this.selectImageArray?.timeRange || this.selectedTime;\r\n        \r\n        // If time range is different, update selectedTime to show that hour section\r\n        if (newTimeRange !== currentTimeRange && newTimeRange !== \"NA\") {\r\n          this.selectedTime = newTimeRange;\r\n          // Apply filters to refresh the view with the new time range\r\n          this.applyFilters();\r\n        }\r\n      }\r\n      \r\n      // If modal is open, update tempModalImage as well\r\n      if (this.isModalOpen) {\r\n        this.tempModalImage = newImage;\r\n      }\r\n      \r\n      // Use selectImageForSplitView to properly update the view\r\n      this.selectImageForSplitView(newImage);\r\n    }\r\n  }\r\n\r\n  handleImageClick(evt: any, obj: any, navigEnable: boolean) {\r\n    this.isNavEnabled = navigEnable ? true : false;\r\n    // When duplicate is selected, clicking on images should open them in zoom modal\r\n\r\n    if (this.selectedRadioType === \"duplicate\" && this.splitScreenEnabled) {\r\n      // Open image in zoom modal when duplicate is selected\r\n      // Store the clicked image temporarily for modal display\r\n      this.openImageZoomModal(this.imageUrl, obj, this.isNavEnabled);\r\n      return;\r\n    }\r\n\r\n    // For split-screen view, clicking on related images should swap to that image\r\n    if (this.splitScreenEnabled && this.selectedRadioType !== \"duplicate\") {\r\n      this.selectImageForSplitView(obj);\r\n    } else if (this.selectedRadioType !== \"duplicate\") {\r\n      this.imgSwap(obj); // existing non-duplicate click behavior\r\n    }\r\n  }\r\n\r\n  /**\r\n   * In duplicate-parent popup, open child image with navigation scoped to the\r\n   * selected parent's duplicateImagePath list.\r\n   */\r\n  handleDuplicateChildImageClick(evt: any, child: any, newArray: any) {\r\n    // console.log('handleDuplicateChildImageClick >>', newArray)\r\n    evt?.stopPropagation?.();\r\n    if (!child) {\r\n      return;\r\n    }\r\n\r\n    const parentId = this.duplicateParentContext?.templd || this.duplicateParentContext?.tempId || null;\r\n    // Build navigation list from the currently selected parent context, ensure filePath is present\r\n    let navList = Array.isArray(this.duplicateParentContext?.duplicateImagePath)\r\n      ? this.duplicateParentContext.duplicateImagePath.map((dup: any) => ({\r\n        ...dup,\r\n        parent: dup?.parent || parentId,\r\n        filePath: dup?.filePath || dup?.imagePath || dup?.image_path || dup?.path || null,\r\n      }))\r\n      : [];\r\n    if (newArray && newArray.length > 0) {\r\n      navList = newArray;\r\n    }\r\n    // Fallback to existing behavior if no parent context is available\r\n    if (navList.length === 0) {\r\n      this.handleImageClick(evt, child, true);\r\n      return;\r\n    }\r\n\r\n    this.isNavEnabled = true;\r\n    this.modalNavigationList = navList;\r\n\r\n\r\n    const targetId = child?.tempId || child?.templd;\r\n    const idx = this.modalNavigationList.findIndex(\r\n      (img: any) => (img.tempId || img.templd) === targetId\r\n    );\r\n\r\n    this.currentModalImageIndex = idx >= 0 ? idx : 0;\r\n    this.tempModalImage = this.modalNavigationList[this.currentModalImageIndex] || child;\r\n    // Ensure active modal image carries a usable filePath\r\n    if (this.tempModalImage && !this.tempModalImage.filePath) {\r\n      this.tempModalImage.filePath =\r\n        this.tempModalImage.imagePath ||\r\n        this.tempModalImage.image_path ||\r\n        this.tempModalImage.path ||\r\n        null;\r\n    }\r\n    this.updateFilteredDuplicateImages();\r\n\r\n    this.isModalOpen = true;\r\n    this.currentImageModalRef = this.modalService.open(this.imagePopup, {\r\n      centered: true,\r\n      size: \"lg\",\r\n      backdrop: \"static\",\r\n      keyboard: false,\r\n    });\r\n  }\r\n\r\n  openImageZoomModal(imageUrl: any, imageData: any, navigEnable?: boolean) {\r\n    this.isNavEnabled = navigEnable ? true : false;\r\n    // Store the image data temporarily for modal display\r\n    this.tempModalImage = imageData;\r\n    this.updateFilteredDuplicateImages(); // Update cache when modal image changes\r\n    if (navigEnable) {\r\n      // Set up navigation list - use filteredDuplicateImages if available, otherwise remainingImageArray\r\n      if (this.filteredDuplicateImages && this.filteredDuplicateImages.length > 0) {\r\n        this.modalNavigationList = [...this.filteredDuplicateImages];\r\n\r\n      } else if (this.remainingImageArray && this.remainingImageArray.length > 0) {\r\n        this.modalNavigationList = [...this.remainingImageArray];\r\n\r\n      } else {\r\n        // If no list available, create a single-item list with the current image\r\n        this.modalNavigationList = imageData ? [imageData] : [];\r\n\r\n      }\r\n\r\n      // Find current index in navigation list\r\n      const imageId = imageData?.tempId || imageData?.templd;\r\n      if (imageId && this.modalNavigationList.length > 0) {\r\n        this.currentModalImageIndex = this.modalNavigationList.findIndex(\r\n          (img: any) => (img.tempId || img.templd) === imageId\r\n        );\r\n        // If not found, add the image to the list and set index to 0\r\n        if (this.currentModalImageIndex === -1) {\r\n          this.modalNavigationList = [imageData, ...this.modalNavigationList];\r\n          this.currentModalImageIndex = 0;\r\n\r\n        }\r\n      } else {\r\n        this.currentModalImageIndex = 0;\r\n      }\r\n    }\r\n\r\n    this.isModalOpen = true;\r\n    this.currentImageModalRef = this.modalService.open(this.imagePopup, {\r\n      centered: true,\r\n      size: \"lg\",\r\n      backdrop: \"static\",\r\n      keyboard: false,\r\n    });\r\n  }\r\n\r\n  // Navigation methods for modal\r\n  get canNavigateLeftModal(): boolean {\r\n    return this.modalNavigationList && this.modalNavigationList.length > 0 && this.currentModalImageIndex > 0;\r\n  }\r\n\r\n  get canNavigateRightModal(): boolean {\r\n    return this.modalNavigationList && this.modalNavigationList.length > 0 &&\r\n      this.currentModalImageIndex < this.modalNavigationList.length - 1;\r\n  }\r\n\r\n  navigateModalImage(direction: \"left\" | \"right\") {\r\n    if (!this.modalNavigationList || this.modalNavigationList.length === 0) {\r\n      return;\r\n    }\r\n\r\n    if (direction === \"left\" && this.canNavigateLeftModal) {\r\n      this.currentModalImageIndex--;\r\n    } else if (direction === \"right\" && this.canNavigateRightModal) {\r\n      this.currentModalImageIndex++;\r\n    }\r\n\r\n    // Update tempModalImage to the current image in navigation list\r\n    if (this.currentModalImageIndex >= 0 && this.currentModalImageIndex < this.modalNavigationList.length) {\r\n      this.tempModalImage = this.modalNavigationList[this.currentModalImageIndex];\r\n      this.updateFilteredDuplicateImages(); // Update cache when modal image changes\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Find mapped parent image for currently selected duplicate child\r\n   */\r\n  getParentForSelectedDuplicateChild(): any | null {\r\n    const img = this.selectImageArray;\r\n    if (\r\n      !img ||\r\n      (img.revopsType || \"\").toLowerCase() !== \"duplicate\" ||\r\n      img.isParent\r\n    ) {\r\n      return null;\r\n    }\r\n    const childId = img.templd || img.tempId;\r\n    if (!childId || !Array.isArray(this.overallArrayData)) {\r\n      return null;\r\n    }\r\n    // Parent is a duplicate image that has this child in its duplicateImagePath list\r\n    const parent = this.overallArrayData.find((item: any) => {\r\n      const isDuplicateParent =\r\n        (item.revopsType || \"\").toLowerCase() === \"duplicate\" &&\r\n        item.isParent === true &&\r\n        Array.isArray(item.duplicateImagePath);\r\n\r\n      if (!isDuplicateParent) {\r\n        return false;\r\n      }\r\n\r\n      return item.duplicateImagePath.some(\r\n        (dup: any) =>\r\n          (dup.tempId || dup.templd || \"\") === childId\r\n      );\r\n    });\r\n    return parent || null;\r\n  }\r\n\r\n  openDuplicateParentPopup(parentImage: any) {\r\n    if (!parentImage || !Array.isArray(parentImage.duplicateImagePath)) {\r\n      return;\r\n    }\r\n    // console.log('openDuplicateParentPopup parant img>>', parentImage)\r\n    parentImage.duplicateImagePath.map((data: any) => { data.isChecked = true })\r\n    // console.log('openDuplicateParentPopup >>', this.selectImageArray)\r\n    this.tempPopupValue = this.selectImageArray;\r\n    this.selectImageArray = parentImage;\r\n    // In this popup we should be able to change non-shopper type,\r\n    // so make sure radios are enabled.\r\n    this.revopsTypeValue = true;\r\n\r\n    this.revopsTypeValuepopup = true;\r\n\r\n    // Initialize edit mode as false - checkboxes will be disabled initially\r\n    this.isDuplicateParentEditMode = false;\r\n    // Initialize selectedType from parent image\r\n    this.selectedType = (parentImage.revopsType || \"\").toLowerCase();\r\n    this.selectedRadioType = this.selectedType;\r\n    this.userImgComment = parentImage.comments || \"\";\r\n    this.duplicateParentContext = parentImage;\r\n    // Build working list of children and sync with selection flags\r\n    this.duplicateChildrenList = parentImage.duplicateImagePath.map((child: any) => ({\r\n      ...child,\r\n      selected: child.isChecked === true,\r\n      isChecked: child.isChecked === true,\r\n    }));\r\n    // Use this list as the current \"remaining\" list so existing toggle logic works\r\n    this.remainingImageArray = this.duplicateChildrenList;\r\n    // Pre-build selectedDuplicateImagesList for save flow\r\n    this.selectedDuplicateImagesList = this.duplicateChildrenList\r\n      .filter((c: any) => c.selected)\r\n      .map((c: any) => ({\r\n        ...c,\r\n        parent: parentImage.templd || parentImage.tempId,\r\n        isChecked: true,\r\n      }));\r\n\r\n    // Open dedicated popup\r\n    const modalRef = this.modalService.open(this.duplicateParentPopup, {\r\n      centered: true,\r\n      size: \"lg\",\r\n      backdrop: \"static\",\r\n      keyboard: false,\r\n    });\r\n  }\r\n\r\n  onPopupDuplicateCheckboxChange(evt: any, child: any) {\r\n    this.onImageCheckboxChange(evt, child, \"duplicate\");\r\n  }\r\n\r\n  // untagDuplicateParentAndChildren() {\r\n  //   if (!this.duplicateParentContext) {\r\n  //     return;\r\n  //   }\r\n\r\n  //   // Open confirmation modal using existing template\r\n  //   this.save(\"non-tagging\");\r\n  // }\r\n\r\n  openParentChildConfirmation(): void {\r\n    if (!this.duplicateParentContext || !this.parentChildImgConfirmationModel) {\r\n      return;\r\n    }\r\n\r\n    this.modalService.open(this.parentChildImgConfirmationModel, {\r\n      centered: true,\r\n      size: \"md\",\r\n      backdrop: \"static\",\r\n      keyboard: false,\r\n    });\r\n  }\r\n\r\n  confirmParentChildUntag(modalRef?: any): void {\r\n    if (modalRef) {\r\n      modalRef.close(\"confirm\");\r\n    }\r\n    this.untagParentAndChildrenRequest();\r\n  }\r\n\r\n\r\n  untagParentAndChildrenRequest() {\r\n    if (!this.duplicateParentContext) {\r\n      return;\r\n    }\r\n\r\n    const buildPayload = (img: any) => ({\r\n      storeId: this.storeIdarray && this.storeIdarray.length > 0 ? this.storeIdarray[0] : null,\r\n      dateString: this.folderDate || \"\",\r\n      tempId: img?.templd || img?.tempId || 0,\r\n      revopsType: \"non-tagging\",\r\n      timeRange: img?.timeRange || \"\",\r\n      isChecked: true,\r\n      duplicateImage: [],\r\n      processType: img?.processType || \"footfall\",\r\n      entryTime: img?.entryTime || img?.entryTme || \"\",\r\n      exitTime: img?.exitTime || \"\",\r\n      filePath: img?.filePath || \"\",\r\n      comments: this.userImgComment || \"\",\r\n      mode: \"web\",\r\n    });\r\n\r\n    const payloads = [\r\n      buildPayload(this.duplicateParentContext),\r\n      ...(Array.isArray(this.duplicateChildrenList)\r\n        ? this.duplicateChildrenList.map((child: any) => buildPayload(child))\r\n        : []),\r\n    ];\r\n\r\n    forkJoin(\r\n      payloads.map((p) =>\r\n        this.rvpsService.getRvpsTag(p).pipe(\r\n          catchError((err) =>\r\n            of({\r\n              error: true,\r\n              msg: err?.error?.error || err?.error || err?.message || \"Unknown error\",\r\n            })\r\n          )\r\n        )\r\n      )\r\n    )\r\n      .pipe(takeUntil(this.destroy$))\r\n      .subscribe((results: any[]) => {\r\n        const failed = results.find((r: any) => r?.error || r?.code !== 200);\r\n        if (failed) {\r\n          this.userImgComment = \"\";\r\n          this.splitScreenEnabled = false;\r\n          const msg = failed?.msg || failed?.error || failed?.message || \"Failed to untag\";\r\n          this.toast.getErrorToast(msg);\r\n          return;\r\n        }\r\n        this.toast.getSuccessToast(\"ID tagged as Duplicates\");\r\n        this.modalService.dismissAll();\r\n        this.getRevops();\r\n        this.cancelSubmit();\r\n        this.loadCardData();\r\n        this.selectedRadioType = undefined;\r\n        this.imageFlow = false;\r\n        this.selectedType = \"\";\r\n        this.userImgComment = \"\";\r\n        this.splitScreenEnabled = false;\r\n      });\r\n  }\r\n\r\n  saveDuplicateParentPopup() {\r\n    if (!this.duplicateParentContext) {\r\n      return;\r\n    }\r\n\r\n    // Check if any duplicates are selected\r\n    const selectedCount = this.duplicateChildrenList.filter(\r\n      (c: any) => c.selected === true\r\n    ).length;\r\n\r\n    // For submitValue to build payload correctly, set parent & remaining list\r\n    this.selectImageArray = this.duplicateParentContext;\r\n    this.remainingImageArray = this.duplicateChildrenList;\r\n    this.updateFilteredDuplicateImages(); // Update cache when selected image changes\r\n\r\n    // If no duplicates selected, tag parent as \"non-tagging\" instead of \"duplicate\"\r\n    if (selectedCount === 0) {\r\n      this.save(\"non-tagging\");\r\n    } else {\r\n      this.save(\"duplicate\");\r\n    }\r\n  }\r\n\r\n  // New method: Enable edit mode for duplicate parent popup\r\n  editDuplicateParent() {\r\n    this.isDuplicateParentEditMode = true;\r\n    // this.revopsTypeValue = false;\r\n  }\r\n\r\n  // New method: Close duplicate parent popup\r\n  closeDuplicateParentPopup(modal: any) {\r\n    // console.log(' tempPopupValue :', this.tempPopupValue)\r\n    this.isDuplicateParentEditMode = false;\r\n    // this.revopsTypeValue = false;\r\n    // this.selectedType = \"\";\r\n    this.userImgComment = \"\";\r\n    if (this.tempPopupValue) {\r\n      this.selectImageArray = this.tempPopupValue\r\n      this.tempPopupValue = null\r\n      this.selectedType = this.selectImageArray.revopsType\r\n    }\r\n    if (modal) {\r\n      modal.dismiss('Close click');\r\n    }\r\n    // console.log('this.selectImageArray ::', this.selectImageArray)\r\n    this.duplicateParentContext = null;\r\n  }\r\n \r\n\r\n  // New method: Save and close duplicate parent popup\r\n  saveAndCloseDuplicateParentPopup(modal: any) {\r\n    if (!this.duplicateParentContext) {\r\n      return;\r\n    }\r\n\r\n    // Check if any duplicates are selected\r\n    const selectedCount = this.duplicateChildrenList.filter(\r\n      (c: any) => c.selected === true\r\n    ).length;\r\n\r\n    // For submitValue to build payload correctly, set parent & remaining list\r\n    this.selectImageArray = this.duplicateParentContext;\r\n    this.remainingImageArray = this.duplicateChildrenList;\r\n    this.updateFilteredDuplicateImages(); // Update cache when selected image changes\r\n\r\n    // If no duplicates selected, tag parent as \"non-tagging\" instead of \"duplicate\"\r\n    // if (selectedCount === 0) {\r\n    //   this.save(\"non-tagging\");\r\n    // } else {\r\n    //   this.save(\"duplicate\");\r\n    // }\r\n     this.save(this.selectedType);\r\n\r\n    // Reset edit mode and close modal\r\n    this.isDuplicateParentEditMode = false;\r\n    // this.revopsTypeValue = false;\r\n    this.selectedType = \"\";\r\n    this.duplicateParentContext = null;\r\n    this.userImgComment = \"\";\r\n    if (modal) {\r\n      modal.close('Save and close');\r\n    }\r\n  }\r\n\r\n  toggleDuplicateSelection(img: any) {\r\n    if (!img || img.duplicateImagePath?.length > 0) {\r\n      return;\r\n    }\r\n\r\n    const totalImages = this.overallArrayData.length;\r\n    const maxSelectable = Math.floor(totalImages * 0.2);\r\n    const normalizeId = (item: any) =>\r\n      (item?.templd || item?.tempId || item?.tempID || item?.tempid || \"\").toString();\r\n    const originalIds = Array.isArray(this.originalCheckedDuplicateIds)\r\n      ? this.originalCheckedDuplicateIds.map((id: any) => id?.toString()).filter(Boolean)\r\n      : [];\r\n    const currentSelectedIds =\r\n      (this.remainingImageArray || [])\r\n        .filter((item: any) => item.selected)\r\n        .map(normalizeId)\r\n        .filter(Boolean) || [];\r\n\r\n    const targetId = normalizeId(img);\r\n    const willSelect = !img.selected;\r\n\r\n    // Build the projected selected list after this toggle\r\n    let projectedSelectedIds = [...currentSelectedIds];\r\n    if (willSelect) {\r\n      if (targetId && !projectedSelectedIds.includes(targetId)) {\r\n        projectedSelectedIds.push(targetId);\r\n      }\r\n    } else {\r\n      projectedSelectedIds = projectedSelectedIds.filter((id: any) => id !== targetId);\r\n    }\r\n\r\n    const alreadyTaggedCount = this.countData?.duplicate || 0;\r\n    const deselectedOriginalCount = originalIds.filter(\r\n      (id: any) => !projectedSelectedIds.includes(id)\r\n    ).length;\r\n    const newlySelectedCount = projectedSelectedIds.filter(\r\n      (id: any) => !originalIds.includes(id)\r\n    ).length;\r\n    const projectedDuplicateTotal =\r\n      Math.max(alreadyTaggedCount - deselectedOriginalCount, 0) + newlySelectedCount;\r\n\r\n    // Only check threshold when selecting (not when deselecting).\r\n    // Use projected totals so swapping selections (remove + add) works without false blocks.\r\n    if (willSelect && projectedDuplicateTotal > maxSelectable) {\r\n      this.toast.getWarningToast(\r\n        `You can select only ${maxSelectable} images (${this.getRvpsList?.data?.config?.duplicate ?? '20%'} of total footfall)`\r\n      );\r\n      return;\r\n    }\r\n\r\n    // Proceed with selection toggle\r\n    img.selected = !img.selected;\r\n    img.isChecked = img.selected;\r\n\r\n    // Always rebuild the selected list\r\n    this.selectedDuplicateImagesList = (this.remainingImageArray || [])\r\n      .filter((item: any) => item.selected)\r\n      .map((item: any) => ({\r\n        ...item,\r\n        parent: item.parent || this.selectImageArray?.templd,\r\n        isChecked: true,\r\n      }));\r\n\r\n    // Update enableSaveBtn based on whether any duplicates are selected\r\n    if (this.selectedRadioType === \"duplicate\") {\r\n      this.enableSaveBtn = this.selectedDuplicateImagesList?.length > 0;\r\n    }\r\n\r\n    // Note: buildRemainingImagesGroups() not needed here - groups are based on timeRange,\r\n    // not selected property, so rebuilding would cause unnecessary re-render and scroll reset\r\n    this.cd.detectChanges();\r\n  }\r\n\r\n  onImageCheckboxChange(evt: any, img: any, type: string) {\r\n    evt.stopPropagation(); // Prevent event bubbling\r\n    // console.log('ChkboxChange >> event :', evt.target.checked, ':img: ', img, ':type: ', type)\r\n    if (type === \"duplicate\") {\r\n      const imgId = img.tempId || img.templd;\r\n      // console.log('onImageCheckboxChange selectImageArray >>', this.selectImageArray)\r\n      if (this.selectImageArray && this.selectImageArray.revopsType.toLowerCase() === 'non-tagging') {\r\n        this.duplicateParentContext = null;\r\n      }\r\n      // Check if we're in duplicate parent popup context\r\n      const isInDuplicateParentPopup = !!this.duplicateParentContext;\r\n      // console.log('duplicateParentContext ::', this.duplicateParentContext)\r\n      // console.log('duplicateParentContext dup img path::', this.duplicateParentContext?.duplicateImagePath)\r\n      // Check if this image is already tagged (exists in duplicateImagePath)\r\n      // These are the images shown in \"Select the duplicates against this image\" section\r\n      const isAlreadyTagged = isInDuplicateParentPopup &&\r\n        this.duplicateParentContext?.duplicateImagePath?.some((child: any) =>\r\n          (child.tempId || child.templd) === imgId\r\n        );\r\n        \r\n        // console.log('isAlreadyTagged >>', isAlreadyTagged)\r\n      // Find the image in remainingImageArray\r\n      const imgInRemainingArray = this.remainingImageArray?.find((item: any) =>\r\n        (item.tempId || item.templd) === imgId\r\n      );\r\n\r\n      // Also check in duplicateChildrenList (right panel in popup)\r\n      const imgInDuplicateChildrenList = isInDuplicateParentPopup && this.duplicateChildrenList?.find((item: any) =>\r\n        (item.tempId || item.templd) === imgId\r\n      );\r\n      \r\n      // If image is in remainingImageArray or duplicateChildrenList, handle it\r\n      if (imgInRemainingArray || imgInDuplicateChildrenList) {\r\n        const targetImg = imgInRemainingArray || imgInDuplicateChildrenList;\r\n        const needsToggle = targetImg.selected !== evt.target.checked;\r\n        if (needsToggle) {\r\n          // If this is an already-tagged image (in duplicateImagePath), skip threshold validation\r\n          if (isAlreadyTagged) {\r\n            // Already tagged images: directly update without threshold validation\r\n            targetImg.selected = evt.target.checked;\r\n            targetImg.isChecked = evt.target.checked;\r\n\r\n            // Update in duplicateChildrenList if exists\r\n            if (imgInDuplicateChildrenList) {\r\n              imgInDuplicateChildrenList.selected = evt.target.checked;\r\n              imgInDuplicateChildrenList.isChecked = evt.target.checked;\r\n            }\r\n\r\n            // Update in remainingImageArray if exists\r\n            if (imgInRemainingArray) {\r\n              imgInRemainingArray.selected = evt.target.checked;\r\n              imgInRemainingArray.isChecked = evt.target.checked;\r\n            }\r\n          } else {\r\n            // New images: use toggleDuplicateSelection with threshold validation\r\n            if (imgInRemainingArray) {\r\n              this.toggleDuplicateSelection(imgInRemainingArray);\r\n            } else {\r\n              // If only in duplicateChildrenList, update directly (shouldn't happen for new images)\r\n              targetImg.selected = evt.target.checked;\r\n              targetImg.isChecked = evt.target.checked;\r\n            }\r\n          }\r\n\r\n          // Sync checkbox with final state\r\n          evt.target.checked = targetImg.selected;\r\n        } else {\r\n          // State already matches, no toggle needed\r\n          // evt.target.checked = targetImg.selected;\r\n          evt.target.checked = targetImg.isChecked;\r\n        }\r\n\r\n        // Sync the passed img object with the array image\r\n        img.selected = targetImg.selected;\r\n        img.isChecked = targetImg.isChecked;\r\n\r\n        // Rebuild selectedDuplicateImagesList after updating images in main arrays\r\n        // In duplicate parent popup, use duplicateChildrenList; otherwise use remainingImageArray\r\n        if (isInDuplicateParentPopup && this.duplicateChildrenList) {\r\n          // console.log('if condition ==>')\r\n          this.selectedDuplicateImagesList = this.duplicateChildrenList\r\n            .filter((item: any) => item.selected)\r\n            .map((item: any) => ({\r\n              ...item,\r\n              parent: item.parent || this.duplicateParentContext?.templd || this.duplicateParentContext?.tempId,\r\n              isChecked: true,\r\n            }));\r\n            // console.log('this.selectedDuplicateImagesList IF :', this.selectedDuplicateImagesList)\r\n        } else {\r\n          this.selectedDuplicateImagesList = this.remainingImageArray\r\n            ? this.remainingImageArray\r\n              .filter((item: any) => item.selected)\r\n              .map((item: any) => ({\r\n                ...item,\r\n                parent: item.parent || this.selectImageArray?.templd,\r\n                isChecked: true,\r\n              }))\r\n            : [];\r\n        }\r\n\r\n        // Update enableSaveBtn based on whether any duplicates are selected\r\n        if (this.selectedRadioType === \"duplicate\" || isInDuplicateParentPopup) {\r\n          this.enableSaveBtn = this.selectedDuplicateImagesList?.length > 0;\r\n        }\r\n      } else {\r\n        // For images not in remainingImageArray (e.g., modal images), handle directly\r\n        // These are just for viewing/navigation, not part of main selection\r\n        const newCheckedState = evt.target.checked;\r\n        img.selected = newCheckedState;\r\n        img.isChecked = newCheckedState;\r\n\r\n        // Update tempModalImage if it's the same image\r\n        if (this.tempModalImage && (this.tempModalImage.tempId === imgId || this.tempModalImage.templd === imgId)) {\r\n          this.tempModalImage.selected = newCheckedState;\r\n          this.tempModalImage.isChecked = newCheckedState;\r\n        }\r\n\r\n        // Update in filteredDuplicateImages\r\n        if (this.filteredDuplicateImages && imgId) {\r\n          const filteredImg = this.filteredDuplicateImages.find((item: any) =>\r\n            (item.tempId || item.templd) === imgId\r\n          );\r\n          if (filteredImg) {\r\n            filteredImg.selected = newCheckedState;\r\n            filteredImg.isChecked = newCheckedState;\r\n          }\r\n        }\r\n\r\n        // Update in modalNavigationList\r\n        if (this.modalNavigationList && imgId) {\r\n          const modalImg = this.modalNavigationList.find((item: any) =>\r\n            (item.tempId || item.templd) === imgId\r\n          );\r\n          if (modalImg) {\r\n            modalImg.selected = newCheckedState;\r\n            modalImg.isChecked = newCheckedState;\r\n          }\r\n        }\r\n\r\n        // Note: Don't rebuild selectedDuplicateImagesList here because modal images\r\n        // are not part of the main selection (remainingImageArray or duplicateChildrenList)\r\n        // The list should only contain images from the main selection arrays\r\n      }\r\n\r\n      // Update duplicateImagePath if exists\r\n      const selectedImage = this.tempModalImage || this.selectImageArray || this.duplicateParentContext;\r\n      if (selectedImage && selectedImage.duplicateImagePath && imgId) {\r\n        const originalChild = selectedImage.duplicateImagePath.find((child: any) =>\r\n          (child.tempId || child.templd) === imgId\r\n        );\r\n        if (originalChild) {\r\n          // Check in duplicateChildrenList first (for popup), then remainingImageArray\r\n          const imgInList = isInDuplicateParentPopup && this.duplicateChildrenList?.find((item: any) =>\r\n            (item.tempId || item.templd) === imgId\r\n          );\r\n          const imgInArray = this.remainingImageArray?.find((item: any) =>\r\n            (item.tempId || item.templd) === imgId\r\n          );\r\n          const sourceImg = imgInList || imgInArray;\r\n\r\n          if (sourceImg) {\r\n            originalChild.selected = sourceImg.selected;\r\n            originalChild.isChecked = sourceImg.isChecked;\r\n          }\r\n        }\r\n      }\r\n      // Refresh the filtered images cache after selection change\r\n      this.updateFilteredDuplicateImages();\r\n      // Trigger change detection to update the UI\r\n      this.cd.detectChanges();\r\n    }\r\n  }\r\n\r\n  clearValue() {\r\n    this.userImgComment = '';\r\n    this.save(\"non-tagging\");\r\n    // this.submitValue('non-tagging')\r\n  }\r\n\r\n  cancel() {\r\n    this.userImgComment = '';\r\n    // 1. Clear selected duplicate images list\r\n    this.selectedDuplicateImagesList = [];\r\n    // 2. Reset all checkboxes and radio buttons in overall image list\r\n    this.overallArrayData = this.overallArrayData.map((img: any) => ({\r\n      ...img,\r\n      isChecked: false,\r\n      selected: false, // assuming 'selected' is checkbox bind\r\n      parent: null, // reset parent if used\r\n      // Add other flags here if needed\r\n    }));\r\n    // 3. Close image flow/full-view if open\r\n    this.imageFlow = false;\r\n\r\n    // 4. Reset split-screen and selected image\r\n    this.splitScreenEnabled = false;\r\n    this.selectImageArray = null;\r\n    this.currentImageIndex = 0;\r\n    this.remainingImageArray = [];\r\n    this.remainingImagesGroups = [];\r\n\r\n    // 5. (Optional) Reset radio buttons — if you have any specific flag\r\n    this.selectedRadioType = undefined;\r\n    this.selectedType = \"\";\r\n    this.revopsTypeValue = false;\r\n    this.revopsTypeValuepopup = false;\r\n\r\n    // 6. Reset enableSaveBtn\r\n    this.enableSaveBtn = true;\r\n  }\r\n\r\n  save(category: any) {\r\n    const modalRef = this.modalService.open(this.zoomPopup, {\r\n      centered: true,\r\n      size: \"md\",\r\n      backdrop: \"static\", // Prevent closing on outside click\r\n      keyboard: false, // Prevent closing on ESC key\r\n    });\r\n    this.popupType = category;\r\n  }\r\n\r\n  cancelSubmit() {\r\n    this.modalService.dismissAll();\r\n    if (this.tempPopupValue) {\r\n      this.selectImageArray = this.tempPopupValue\r\n      this.tempPopupValue = null\r\n      this.selectedType = this.selectImageArray.revopsType\r\n    }\r\n    this.selectedDuplicateImagesList = [];\r\n    // Reset enableSaveBtn if duplicate type was selected\r\n    // if (this.selectedRadioType === \"duplicate\") {\r\n    //   this.enableSaveBtn = false;\r\n    // }\r\n  }\r\n\r\n  submitValue(category: any) {\r\n    let duplicateImages = [];\r\n\r\n    if (category === \"duplicate\") {\r\n      duplicateImages = this.remainingImageArray\r\n        .filter((img: any) => img.selected === true)\r\n        .map((img: any) => ({\r\n          tempId: img.templd || img.tempId || \"\",\r\n          timeRange: img.timeRange || \"\",\r\n          entryTime: img.entryTime || img.entryTme || \"\",\r\n          exitTime: img.exitTime || \"\",\r\n          filePath: img.filePath,\r\n          revopsType: \"duplicate\",\r\n          isChecked: true,\r\n        }));\r\n    }\r\n\r\n    const img = this.selectImageArray;\r\n\r\n    const obj = {\r\n      storeId: this.storeIdarray && this.storeIdarray.length > 0 ? this.storeIdarray[0] : null,\r\n      dateString: this.folderDate || \"\",\r\n      tempId: img?.templd || 0,\r\n      revopsType: category,\r\n      timeRange: img?.timeRange || \"\",\r\n      isChecked: true,\r\n      duplicateImage: duplicateImages,\r\n      processType: img?.processType || \"footfall\",\r\n      entryTime: img?.entryTime || img?.entryTme || \"\",\r\n      exitTime: img?.exitTime || \"\",\r\n      filePath: img?.filePath || \"\",\r\n      comments: this.userImgComment || \"\",\r\n      mode: 'web'\r\n    };\r\n\r\n    this.rvpsService\r\n      .getRvpsTag(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.toast.getSuccessToast(\r\n              res?.message || \"Ticket updated successfully\"\r\n            );\r\n            this.tempModalImage = null;\r\n            this.imageFlow = false;\r\n            // Store the selected image info before refresh to maintain position - img re-render issue fix\r\n            // if (this.selectImageArray && this.splitScreenEnabled) {\r\n            //   this.pendingSelectedImage = { ...this.selectImageArray };\r\n            const imageForRestore = this.tempPopupValue || this.selectImageArray;\r\n            if (imageForRestore && this.splitScreenEnabled) {\r\n              this.pendingSelectedImage = { ...imageForRestore };\r\n              this.shouldRestoreSelectedImage = true;\r\n            } else {\r\n              this.shouldRestoreSelectedImage = false;\r\n              this.pendingSelectedImage = null;\r\n            } // img re-render issue fix\r\n            \r\n            this.getRevops();\r\n            this.cancelSubmit();\r\n            this.loadCardData();\r\n            this.selectedRadioType = undefined;\r\n            this.selectedType = \"\";\r\n            this.userImgComment = \"\";\r\n            // this.splitScreenEnabled = false; // img re-render issue fix\r\n          } else {\r\n            this.toast.getErrorToast(\"Failed to update\");\r\n            // this.userImgComment = \"\";\r\n            this.splitScreenEnabled = false;\r\n          }\r\n        },\r\n        error: (err: any) => {\r\n          console.error(\"submitValue error:\", err);\r\n          const msg =\r\n            err.error?.error || err.error || err?.message || \"Unknown error\";\r\n          this.toast.getErrorToast(msg);\r\n        },\r\n      });\r\n  }\r\n\r\n  noDataMessages: { [key: string]: string } = {\r\n    duplicate: \"No duplicates found\",\r\n    employee: \"No employee/staff found\",\r\n    // houseKeeping: \"No house keeping found\",\r\n    \"non-tagging\": \"No non-tagging found\",\r\n    // junk: \"No junk found\"\r\n  };\r\n\r\n  // Get no data message dynamically based on type (static or from configIconList)\r\n  getNoDataMessage(type: string): string {\r\n    if (!type) {\r\n      return 'No data found';\r\n    }\r\n\r\n    const normalizedType = type.toLowerCase();\r\n    // First check static messages\r\n    if (this.noDataMessages[normalizedType]) {\r\n      return this.noDataMessages[normalizedType];\r\n    }\r\n\r\n    // Then check dynamic types from configIconList\r\n    if (this.configIconList && Array.isArray(this.configIconList)) {\r\n      const configItem = this.configIconList.find((item: any) =>\r\n        (item?.type || '').toLowerCase() === normalizedType\r\n      );\r\n\r\n      if (configItem) {\r\n        const name = configItem?.name || configItem?.type || type;\r\n        return `No ${name} found`;\r\n      }\r\n    }\r\n\r\n    // Fallback\r\n    return 'No data found';\r\n  }\r\n\r\n  Raised() {\r\n    const payload: any = {\r\n      dateString: this.folderDate,\r\n      storeId: this.storeIdarray?.length > 0 ? this.storeIdarray[0] : null,\r\n      ticketName: \"footfall-directory\",\r\n      footfallCount: 0,\r\n      duplicateCount: 0,\r\n      employeeCount: 0,\r\n      comments: this.commentText || \"\",\r\n      duplicateImages: [],\r\n      employee: []\r\n    };\r\n\r\n    // Initialize dynamic types from configIconList (excluding duplicate and employee)\r\n    if (this.configIconList && Array.isArray(this.configIconList)) {\r\n      this.configIconList.forEach((item: any) => {\r\n        const type = item?.type || '';\r\n        // if (type && type !== 'duplicate' && type !== 'employee') {\r\n        // Initialize array and count for each dynamic type\r\n        payload[type] = [];\r\n        payload[`${type}Count`] = 0;\r\n        // }\r\n      });\r\n\r\n\r\n    }\r\n    let totalCheckedCount = 0;\r\n    this.overallArrayData.forEach((item: any) => {\r\n      const type = item?.revopsType?.trim();\r\n      const isChecked = item.isChecked === true;\r\n      // Count only if item is checked AND revopsType is 'non-tagging'\r\n      // const isNotTagged = type === 'non-tagging';\r\n\r\n      // if (isNotTagged) {\r\n      //   totalCheckedCount++;\r\n      // }\r\n\r\n      // DUPLICATE TYPE\r\n      if (type === \"duplicate\" && Array.isArray(item.duplicateImagePath)) {\r\n        const nestedData = item.duplicateImagePath\r\n          .filter((dup: any) => dup.isChecked)\r\n          .map((dup: any) => ({\r\n            tempId: dup.tempId || dup.templd || \"\",\r\n            filePath: dup.filePath,\r\n            entryTime: dup?.entryTime || dup?.entryTme || \"\",\r\n            exitTime: dup.exitTime,\r\n            timeRange: dup.timeRange,\r\n            isChecked: dup.isChecked,\r\n          }));\r\n\r\n        if (nestedData.length > 0) {\r\n          payload.duplicateImages.push({\r\n            tempId: item.templd,\r\n            filePath: item.filePath,\r\n            entryTime: item?.entryTime || item?.entryTme || \"\",\r\n            exitTime: item.exitTime,\r\n            timeRange: item.timeRange,\r\n            isChecked: item.isChecked,\r\n            data: nestedData,\r\n          });\r\n\r\n          payload.duplicateCount += nestedData.length;\r\n        }\r\n      }\r\n\r\n      // EMPLOYEE\r\n      // else if (type === \"employee\" && isChecked) {\r\n      else if (type === \"employee\") {\r\n        payload.employee.push({\r\n          tempId: item.templd,\r\n          filePath: item.filePath,\r\n          entryTime: item?.entryTime || item?.entryTme || \"\",\r\n          exitTime: item.exitTime,\r\n          timeRange: item.timeRange,\r\n          isChecked: item.isChecked,\r\n        });\r\n        payload.employeeCount++;\r\n      }\r\n\r\n      // Dynamic types from configIconList (excluding duplicate and employee)\r\n      else if (isChecked && this.configIconList && Array.isArray(this.configIconList)) {\r\n        const configItem = this.configIconList.find((config: any) => {\r\n          const configType = config?.type || '';\r\n          return configType === type && configType !== 'duplicate' && configType !== 'employee';\r\n        });\r\n\r\n        if (configItem && payload[type] && payload[`${type}Count`] !== undefined) {\r\n          payload[type].push({\r\n            tempId: item.templd,\r\n            filePath: item.filePath,\r\n            entryTime: item?.entryTime || item?.entryTme || \"\",\r\n            exitTime: item.exitTime,\r\n            timeRange: item.timeRange,\r\n            isChecked: item.isChecked,\r\n          });\r\n\r\n          payload[`${type}Count`]++;\r\n        }\r\n      }\r\n    });\r\n\r\n    payload.footfallCount = this.countData?.footfallCount;\r\n\r\n    // Return or assign\r\n\r\n    this.tempRaisedPayload = payload;\r\n    this.cd.detectChanges();\r\n    const modalRef = this.modalService.open(this.raisedPopup, {\r\n      centered: true,\r\n      size: \"md\",\r\n      backdrop: \"static\",\r\n      keyboard: false,\r\n    });\r\n  }\r\n\r\n  getCount(type: any) {\r\n    if (!type || !this.countData) {\r\n      return 0;\r\n    }\r\n    return this.countData[type] || 0;\r\n  }\r\n\r\n  cancelRasied() {\r\n    this.modalService.dismissAll();\r\n    this.selectedDuplicateImagesList = [];\r\n  }\r\n\r\n  submitRaised() {\r\n    // const payload = this.tempRaisedPayload; // fresh data for API\r\n    const payload = {\r\n      ticketName: \"footfall-directory\",\r\n      storeId: this.tempRaisedPayload.storeId,\r\n      dateString: this.tempRaisedPayload.dateString,\r\n      type: \"create\",\r\n      mode: \"web\"\r\n    }\r\n    this.getRaisedData = payload;\r\n    this.rvpsService\r\n      .getCreateRaisedTag(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.toast.getSuccessToast(\r\n              res?.message || \"Ticket updated successfully\"\r\n            );\r\n            this.imageFlow = false;\r\n            this.getRevops();\r\n            this.loadCardData();\r\n            this.cancelRasied();\r\n            this.selectedRadioType = undefined;\r\n            this.selectedType = \"\";\r\n            this.countData = [];\r\n          } else {\r\n            this.toast.getErrorToast(\"Failed to update\");\r\n            this.cancelRasied();\r\n          }\r\n        },\r\n        error: (err: any) => {\r\n          const msg =\r\n            err.error?.error ||\r\n            err.error ||\r\n            err?.error?.message ||\r\n            err.message ||\r\n            \"Unknown error\";\r\n          this.toast.getErrorToast(msg);\r\n          this.cancelRasied();\r\n        },\r\n      });\r\n  }\r\n\r\n  // onImageCheckboxChange(img: any, type: string) {\r\n  //   if (type === 'duplicate') {\r\n  //     // Count only valid duplicate images where `duplicateImagePath.length === 0`\r\n  //     const totalValidDuplicateImages = this.overallArrayData.filter(\r\n  //       (item: any) =>\r\n  //         item.revopsType === 'duplicate' && (!item.duplicateImagePath || item.duplicateImagePath.length === 0)\r\n  //     ).length;\r\n\r\n  //     const maxAllowed = Math.floor(totalValidDuplicateImages * 0.1); // 10% limit\r\n\r\n  //     const alreadyExists = this.selectedDuplicateImagesList.some(\r\n  //       (item: any) => item.templd === img.templd\r\n  //     );\r\n\r\n  //     if (img.selected) {\r\n  //       // ❌ Reached max allowed — block it\r\n  //       if (this.selectedDuplicateImagesList.length >= maxAllowed) {\r\n  //         this.toast.getErrorToast(\r\n  //           `Only ${maxAllowed} images can be selected as duplicate (10% of untagged duplicates).`\r\n  //         );\r\n\r\n  //         img.selected = false;\r\n  //         const index = this.overallArrayData.findIndex((item: any) => item.templd === img.templd);\r\n  //         if (index !== -1) {\r\n  //           this.overallArrayData[index].selected = false;\r\n  //         }\r\n\r\n  //         setTimeout(() => {\r\n  //           img.selected = false;\r\n  //         });\r\n\r\n  //         return;\r\n  //       }\r\n\r\n  //       // ✅ Add if not already in list\r\n  //       if (!alreadyExists) {\r\n  //         this.selectedDuplicateImagesList.push({\r\n  //           ...img,\r\n  //           isChecked: true,\r\n  //           parent: img.parent || null\r\n  //         });\r\n  //       }\r\n  //     } else {\r\n  //       // ❌ Removal case\r\n  //       this.selectedDuplicateImagesList = this.selectedDuplicateImagesList.filter(\r\n  //         (item: any) => item.templd !== img.templd\r\n  //       );\r\n  //     }\r\n  //   }\r\n\r\n  //   // ⚠️ Call this to update button enable state\r\n  //   this.checkDuplicateSaveEnable();\r\n  // }\r\n\r\n  // duplicateSaveEnabled = false;\r\n\r\n  // checkDuplicateSaveEnable() {\r\n  //   this.duplicateSaveEnabled =\r\n  //     this.selectedRadioType === 'duplicate' && this.selectedDuplicateImagesList.length > 0;\r\n  // }\r\n\r\n  selectedImageArray(url: any, data: any) {\r\n    this.isModalOpen = true;\r\n    this.currentImageModalRef = this.modalService.open(this.imagePopup, {\r\n      centered: true,\r\n      size: \"lg\",\r\n      backdrop: \"static\",\r\n      keyboard: false,\r\n    });\r\n  }\r\n\r\n  closeImage() {\r\n    this.isModalOpen = false;\r\n    if (this.tempPopupValue) {\r\n      this.selectImageArray = this.tempPopupValue\r\n      this.tempPopupValue = null\r\n      this.selectedType = this.selectImageArray.revopsType\r\n    }\r\n    this.tempModalImage = null; // Clear temporary image when closing modal\r\n    this.modalNavigationList = []; // Clear navigation list\r\n    this.currentModalImageIndex = 0; // Reset index\r\n    this.updateFilteredDuplicateImages(); // Update cache when modal closes\r\n    // Close only the specific image popup modal\r\n    if (this.currentImageModalRef) {\r\n      this.currentImageModalRef.close();\r\n      this.currentImageModalRef = null;\r\n    }\r\n  }\r\n\r\n  saveDuplicateImagesFromModal() {\r\n    // Use the existing save logic\r\n    this.submitValue(\"duplicate\");\r\n  }\r\n  // check for can enable raise ticket\r\n  canEnableButton(): boolean {\r\n    if (!this.countData || !this.folderDate) {\r\n      return false;\r\n    }\r\n    const { duplicate, employee } = this.countData;\r\n\r\n    // Check count condition - include static types and all dynamic types\r\n    let hasCount = duplicate > 0 || employee > 0;\r\n\r\n    // Check all dynamic types from configIconList\r\n    if (this.configIconList && Array.isArray(this.configIconList)) {\r\n      this.configIconList.forEach((item: any) => {\r\n        const type = item?.type || '';\r\n        if (type && type !== 'duplicate' && type !== 'employee') {\r\n          const count = this.countData[type] || 0;\r\n          if (count > 0) {\r\n            hasCount = true;\r\n          }\r\n        }\r\n      });\r\n    }\r\n\r\n    // Convert folderDate to Date\r\n    const folder = new Date(this.folderDate);\r\n    const today = new Date();\r\n    // Normalize times (remove hours for proper day comparison)\r\n    folder.setHours(0, 0, 0, 0);\r\n    today.setHours(0, 0, 0, 0);\r\n\r\n    // Calculate difference in days\r\n    const diffInTime = today.getTime() - folder.getTime();\r\n    const diffInDays = diffInTime / (1000 * 3600 * 24);\r\n    // const isWithinLast3 = diffInDays >= 0 && diffInDays <= 3;\r\n    // Check if allowTicketCreation is provided and is a valid number\r\n    const restrictionDays = this.allowTicketCreation && typeof this.allowTicketCreation === 'number' && this.allowTicketCreation > 0 \r\n      ? this.allowTicketCreation : null;\r\n    // If no restriction days, allow all dates; otherwise check if within restriction period\r\n    const isWithinRestriction = restrictionDays === null ? true : (diffInDays >= 0 && diffInDays <= restrictionDays);\r\n\r\n    // Check cardDataMap condition for selected date\r\n    const normalizedDate = this.getNormalizedDate();\r\n    const cardData = normalizedDate ? this.cardDataMap[normalizedDate] : null;\r\n    const raisedStatusCheck = cardData?.raisedStatusEnabled === \"reset\" &&\r\n      (cardData?.ticketStatus === null || cardData?.ticketStatus === undefined);\r\n    return hasCount && isWithinRestriction && raisedStatusCheck;\r\n  }\r\n\r\n  // Check if the selected date is beyond the allowed tagging period\r\n  isTaggingExpired(): boolean {\r\n    if (!this.folderDate) return false;\r\n    const folder = new Date(this.folderDate);\r\n    const today = new Date();\r\n    folder.setHours(0, 0, 0, 0);\r\n    today.setHours(0, 0, 0, 0);\r\n    const diffInTime = today.getTime() - folder.getTime();\r\n    const diffInDays = diffInTime / (1000 * 3600 * 24);\r\n    const restrictionDays = this.allowTicketCreation && typeof this.allowTicketCreation === 'number' && this.allowTicketCreation > 0\r\n      ? this.allowTicketCreation : null;\r\n    return restrictionDays !== null && diffInDays > restrictionDays;\r\n  }\r\n\r\n  // True only when the currently-selected image already has a revopsType\r\n  // mapping (i.e. user previously tagged it). Used to allow view + edit on\r\n  // expired dates while still blocking brand-new tagging on untagged images.\r\n  isImageAlreadyTagged(): boolean {\r\n    const img: any = this.tempModalImage || this.selectImageArray;\r\n    const t = img?.revopsType;\r\n    if (typeof t !== 'string') return false;\r\n    const v = t.trim().toLowerCase();\r\n    return v !== '' && v !== 'unknown' && v !== 'non-tagging';\r\n  }\r\n\r\n  // Block tagging UI only when the date is expired AND the image has not\r\n  // been mapped yet. Already-mapped images stay editable on expired dates.\r\n  shouldBlockTagging(): boolean {\r\n    return this.isTaggingExpired() && !this.isImageAlreadyTagged();\r\n  }\r\n\r\n  // Check if save button should be enabled based on raisedStatusEnabled and ticketStatus\r\n  canEnableSaveButton(): boolean {\r\n    if (!this.folderDate) {\r\n      return false;\r\n    }\r\n\r\n    // Convert folderDate to Date\r\n    const folder = new Date(this.folderDate);\r\n    const today = new Date();\r\n\r\n    // Normalize times (remove hours for proper day comparison)\r\n    folder.setHours(0, 0, 0, 0);\r\n    today.setHours(0, 0, 0, 0);\r\n\r\n    // Calculate difference in days\r\n    const diffInTime = today.getTime() - folder.getTime();\r\n    const diffInDays = diffInTime / (1000 * 3600 * 24);\r\n\r\n    // Check if allowTicketCreation is provided and is a valid number\r\n    const restrictionDays = this.allowTicketCreation && typeof this.allowTicketCreation === 'number' && this.allowTicketCreation > 0 \r\n      ? this.allowTicketCreation : null;\r\n      console.log(restrictionDays, 'restrictionDays');\r\n    // If no restriction days, allow all dates; otherwise check if within restriction period\r\n    const isWithinRestriction = restrictionDays === null ? true : (diffInDays >= 0 && diffInDays <= restrictionDays);\r\n\r\n    // Check cardDataMap condition for selected date\r\n    const normalizedDate = this.getNormalizedDate();\r\n    const cardData = normalizedDate ? this.cardDataMap[normalizedDate] : null;\r\n    const raisedStatusCheck = cardData?.raisedStatusEnabled === \"reset\" &&\r\n      (cardData?.ticketStatus === null || cardData?.ticketStatus === undefined);\r\n\r\n    return isWithinRestriction && raisedStatusCheck;\r\n  }\r\n\r\n  get canNavigateLeft(): boolean {\r\n    return this.currentImageIndex > 0;\r\n  }\r\n\r\n  get canNavigateRight(): boolean {\r\n    return this.currentImageIndex < this.imagesArrayData.length - 1;\r\n  }\r\n\r\n  navigateImage(direction: \"left\" | \"right\") {\r\n    const length = this.imagesArrayData.length;\r\n\r\n    if (direction === \"left\" && this.canNavigateLeft) {\r\n      this.currentImageIndex--;\r\n    } else if (direction === \"right\" && this.canNavigateRight) {\r\n      this.currentImageIndex++;\r\n    }\r\n\r\n    // Update selected image\r\n    this.selectImageArray = this.imagesArrayData[this.currentImageIndex];\r\n\r\n    // Update remaining images\r\n    this.remainingImageArray = this.imagesArrayData.filter(\r\n      (_: any, i: any) => i !== this.currentImageIndex\r\n    );\r\n  }\r\n\r\n  // Get current footfall count for selected date\r\n  getCurrentFootfall(): number {\r\n    if (!this.folderDate) return 0;\r\n    const normalizedDate = new Date(this.folderDate).toISOString().split(\"T\")[0];\r\n    return this.cardDataMap[normalizedDate]?.footfallCount || 0;\r\n  }\r\n\r\n  // Get percentage change from footfallCountTrend\r\n  getFootfallPercentageChange(): number {\r\n    if (!this.folderDate) return 0;\r\n    const normalizedDate = new Date(this.folderDate).toISOString().split(\"T\")[0];\r\n    return this.cardDataMap[normalizedDate]?.footfallCountTrend || 0;\r\n  }\r\n\r\n  // Format downtime from downtime key (in minutes)\r\n  getFormattedDowntime(): string {\r\n    if (!this.folderDate) return '-';\r\n    const normalizedDate = new Date(this.folderDate).toISOString().split(\"T\")[0];\r\n    const downtimeMinutes = this.cardDataMap[normalizedDate]?.downtime || 0;\r\n\r\n    if (!downtimeMinutes || downtimeMinutes === 0) return '-';\r\n\r\n    const { hours, mins } = this.convertMinutes(downtimeMinutes);\r\n    if (hours > 0 && mins > 0) {\r\n      return `${hours} hr ${mins} mins`;\r\n    } else if (hours > 0) {\r\n      return `${hours} hr`;\r\n    } else if (mins > 0) {\r\n      return `${mins} mins`;\r\n    }\r\n    return '-';\r\n  }\r\n\r\n  getFormattedDowntimeHTML() {\r\n    const time = this.getFormattedDowntime();\r\n    if (!time) return '';\r\n\r\n    let result = time;\r\n\r\n    // Replace hours\r\n    result = result.replace(/(\\d+)\\s*hr?/g, `<span class=\"time-number\">$1</span> <span class=\"time-unit\">hr</span>`);\r\n    // Replace minutes\r\n    result = result.replace(/(\\d+)\\s*mins?/g, `<span class=\"time-number\">$1</span> <span class=\"time-unit\">mins</span>`);\r\n    return result;\r\n  }\r\n\r\n\r\n  // Get ticket status\r\n  getTicketStatus(): any {\r\n    if (!this.folderDate) return '-';\r\n    const normalizedDate = new Date(this.folderDate).toISOString().split(\"T\")[0];\r\n    const status = this.cardDataMap[normalizedDate]?.ticketStatus;\r\n    return status || '-';\r\n  }\r\n\r\n  // Check if there's downtime\r\n  hasDowntime(): boolean {\r\n    if (!this.folderDate) return false;\r\n    const normalizedDate = new Date(this.folderDate).toISOString().split(\"T\")[0];\r\n    const downtime = this.cardDataMap[normalizedDate]?.downtime || 0;\r\n    return downtime > 0;\r\n  }\r\n\r\n  // Get tagging data from ticketReviewStatus where actionType = \"tagging\"\r\n  getTaggingData(type: string): any {\r\n    if (!this.ticketReviewStatus || !Array.isArray(this.ticketReviewStatus) || !type) {\r\n      return null;\r\n    }\r\n    return this.ticketReviewStatus.find((item: any) => item?.actionType === type) || null;\r\n  }\r\n\r\n  // Check if ticket status is raised\r\n  isTicketRaised(): boolean {\r\n    const status = this.getTicketStatus();\r\n    return status !== '-' && status?.toLowerCase() === \"raised\";\r\n  }\r\n\r\n  // Check if ticket status is closed\r\n  isTicketClosed(): boolean {\r\n    const status = this.getTicketStatus();\r\n    return status !== '-' && status?.toLowerCase() === \"closed\";\r\n  }\r\n isTicketAutoClosed(): boolean {\r\n    const status = this.getTicketStatus();\r\n    return status !== '-' && status?.toLowerCase() === \"auto-closed\";\r\n  }\r\n\r\n  get revisionRoleText(): string {\r\n    if (!this.revisionConfig || !Array.isArray(this.revisionConfig)) {\r\n      return '';\r\n    }\r\n    const roles = this.revisionConfig\r\n      .filter((r: any) => r?.isChecked && r?.actionType !== 'tango')\r\n      .map((r: any) => r?.actionType);\r\n    return roles.join(' or ');\r\n  }\r\n\r\n  // Get all tagging data items (for initial and final revisions)\r\n  getAllTaggingData(): any[] {\r\n    if (!this.ticketReviewStatus || !Array.isArray(this.ticketReviewStatus)) {\r\n      return [];\r\n    }\r\n    return this.ticketReviewStatus.filter((item: any) => item?.actionType === \"tagging\") || [];\r\n  }\r\n\r\n  // Get initial revision data (first tagging item)\r\n  getInitialRevisionData(): any {\r\n    const allTagging = this.getAllTaggingData();\r\n    return allTagging.length > 0 ? allTagging[0] : null;\r\n  }\r\n\r\n  // Get final revision data (last tagging item, or second if exists)\r\n  getFinalRevisionData(): any {\r\n    const allTagging = this.getAllTaggingData();\r\n    return allTagging.length > 1 ? allTagging[allTagging.length - 1] : (allTagging.length > 0 ? allTagging[0] : null);\r\n  }\r\n\r\n  // Helper method to get count value by type from count array\r\n  getCountByType(data: any, countType: string): number {\r\n    if (!data || !data.count) {\r\n      return 0;\r\n    }\r\n\r\n\r\n    // Check if count is an array (new format)\r\n    if (Array.isArray(data.count)) {\r\n      const countItem = data.count.find((item: any) => item?.type === countType);\r\n      return countItem?.value || 0;\r\n    }\r\n\r\n    // Fallback for old format (object)\r\n    const keyMap: { [key: string]: string } = {\r\n      'duplicate': 'duplicateCount',\r\n      'employee': 'employeeCount',\r\n      'junk': 'junkCount',\r\n      'houseKeeping': 'houseKeepingCount'\r\n    };\r\n\r\n    const key = keyMap[countType];\r\n    return key ? (data.count[key] || 0) : 0;\r\n  }\r\n\r\n  // Calculate total percentage: (sum of all count values / revicedFootfall) * 100\r\n  // type: 'raised' | 'finalreview'\r\n  getRevisionCalculation(type: string): number {\r\n    if (!this.ticketReviewStatus || !Array.isArray(this.ticketReviewStatus || !type)) {\r\n      return 0;\r\n    }\r\n\r\n    // Filter items based on actionType\r\n    const taggingItems = this.ticketReviewStatus.filter((item: any) => item?.actionType === type);\r\n    if (taggingItems.length === 0) {\r\n      return 0;\r\n    }\r\n\r\n    if (!taggingItems[0] || !taggingItems[0].footfall || taggingItems[0].footfall === 0) {\r\n      return 0;\r\n    }\r\n\r\n    const count = taggingItems[0].count || [];\r\n    // Check if count is an array (new format) or object (old format)\r\n    let totalCount = 0;\r\n\r\n    if (Array.isArray(count)) {\r\n      // New format: count is an array of objects with type and value\r\n      // Sum all dynamic types except the excluded ones.\r\n      // const excludedTypes = ['duplicate', 'employee'];\r\n      // .filter((item: any) => item?.type && !excludedTypes.includes(item.type))\r\n      totalCount = count.reduce((sum: number, item: any) => sum + (Number(item?.value) || 0), 0);\r\n    }\r\n    // else {\r\n    //   // Old format: count is an object with keys\r\n    //   totalCount = (count.duplicateCount || 0) + \r\n    //                (count.employeeCount || 0) + \r\n    //                (count.junkCount || 0) + \r\n    //                (count.houseKeepingCount || 0);\r\n    // }\r\n    return Math.round((totalCount / taggingItems[0].footfall) * 100);\r\n  }\r\n\r\n  requestReset(): void {\r\n    const modalRef = this.modalService.open(this.resetRequestPopup, {\r\n      centered: true,\r\n      size: \"md\",\r\n      backdrop: \"static\",\r\n      keyboard: false,\r\n    });\r\n  }\r\n\r\n  cancelResetRequest(): void {\r\n    this.modalService.dismissAll();\r\n  }\r\n\r\n  submitResetRequest(): void {\r\n    let payload = {\r\n      storeId: this.storeIdarray && this.storeIdarray.length > 0 ? this.storeIdarray[0] : null,\r\n      dateString: this.folderDate || \"\"\r\n    };\r\n    // Close modal after submission\r\n    this.modalService.dismissAll();\r\n    this.service\r\n      .sendVMSResetRequest(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.loadCardData();\r\n            this.toast.getSuccessToast(\"Request reset successfully\");\r\n          } else {\r\n            this.toast.getErrorToast(\"Failed to reset request\");\r\n          }\r\n        },\r\n        error: (err) => {\r\n          const msg =\r\n            err.error?.error ||\r\n            err.error ||\r\n            err?.error?.message ||\r\n            err.message ||\r\n            \"Unknown error\";\r\n          console.error('Error in submitResetRequest :', err);\r\n          this.toast.getErrorToast(msg || \"Unknown error occurred\");\r\n        },\r\n      });\r\n\r\n  }\r\n\r\n  // Get normalized date for current folderDate\r\n  getNormalizedDate(): string | null {\r\n    if (!this.folderDate) return null;\r\n    return new Date(this.folderDate).toISOString().split(\"T\")[0];\r\n  }\r\n\r\n  // Get selected date's card data\r\n  getSelectedDateCardData(): any {\r\n    const normalizedDate = this.getNormalizedDate();\r\n    return normalizedDate ? this.cardDataMap[normalizedDate] : null;\r\n  }\r\n\r\n  // get icon name for revOpsType from taggingIconList\r\n  getIconName(revOpsType: string): any {\r\n    if (!this.configIconList || !Array.isArray(this.configIconList) || !revOpsType) {\r\n      return null;\r\n    }\r\n    const type = revOpsType.trim();\r\n    const data = this.configIconList.find((item: any) => item?.type === type);\r\n    return data?.iconName || 'non-tagging';\r\n  }\r\n\r\n  // Get filtered duplicate images related to the selected image\r\n  // Update the cached filtered duplicate images\r\n  enablePopupSaveBtn: boolean = false;\r\n\r\n  updateFilteredDuplicateImages(): void {\r\n    // console.log('Calling updateFilteredDuplicateImages >>')\r\n    // Get the selected image (either selectImageArray or tempModalImage)\r\n    const selectedImage = this.tempModalImage || this.selectImageArray;\r\n    if (!selectedImage) {\r\n      this.filteredDuplicateImages = [];\r\n      return;\r\n    }\r\n    // console.log('updateFilteredDuplicateImages - selectedImage ::', selectedImage)\r\n    // check parant image with no duplicateImagePath to disable popup save button\r\n    if (selectedImage === 'non-tagging' && (!selectedImage.duplicateImagePath || selectedImage.duplicateImagePath.length === 0)) {\r\n      this.enablePopupSaveBtn = true;\r\n    }\r\n    // Check if selected image is a parent with duplicateImagePath (child images)\r\n    if (selectedImage.isParent && Array.isArray(selectedImage.duplicateImagePath) && selectedImage.duplicateImagePath.length > 0) {\r\n      // console.log('updateFilteredDuplicateImages isParent true >>')\r\n      // For parent images, always return children directly from duplicateImagePath\r\n      const selectedTempld = selectedImage.templd || selectedImage.tempId;\r\n\r\n      this.filteredDuplicateImages = selectedImage.duplicateImagePath.map((child: any) => ({\r\n        ...child,\r\n        parent: selectedTempld,\r\n        selected: child.selected || false,\r\n        isChecked: child.isChecked || false,\r\n      }));\r\n      // console.log('updateFilteredDuplicateImages isParent true ', this.filteredDuplicateImages);\r\n      // if (isAllDeselected.length === 0) {\r\n      //   this.enableSaveBtn = true;\r\n      // }\r\n      // Check if any items are selected to enable save button\r\n      // Disable save button if no items are selected (length is zero or all deselected)\r\n      const selectedCount = this.filteredDuplicateImages.filter((items: any) => items.isChecked === true).length;\r\n      \r\n      // Enable save button only if there are selected items (length > 0)\r\n      if (selectedCount > 0 || this.selectedDuplicateImagesList?.length > 0) {\r\n        this.enableSaveBtn = true;\r\n      }\r\n      \r\n      // console.log('updateFilteredDuplicateImages enableSaveBtn ', this.enableSaveBtn, 'selectedCount:', selectedCount);\r\n      return;\r\n    }\r\n\r\n    // For non-parent images or when duplicateImagePath exists but isParent is false\r\n    if (Array.isArray(selectedImage.duplicateImagePath) && selectedImage.duplicateImagePath.length > 0) {\r\n      // console.log('updateFilteredDuplicateImages isParent dup list >>')\r\n      // If remainingImageArray is empty, use child images directly from duplicateImagePath\r\n      if (!this.remainingImageArray || this.remainingImageArray.length === 0) {\r\n        // Map duplicateImagePath children to include parent reference\r\n        const selectedTempld = selectedImage.templd || selectedImage.tempId;\r\n        this.filteredDuplicateImages = selectedImage.duplicateImagePath.map((child: any) => ({\r\n          ...child,\r\n          parent: selectedTempld,\r\n          // Explicitly preserve filePath to ensure images load correctly\r\n          filePath: child.filePath || child.imagePath || null,\r\n          // Preserve existing selection state if available\r\n          selected: child.selected || false,\r\n          isChecked: child.isChecked || false,\r\n        }));\r\n        return;\r\n      }\r\n\r\n      // If remainingImageArray has items, filter to show only duplicate child images\r\n      const duplicateImageIds: string[] = [];\r\n      selectedImage.duplicateImagePath.forEach((dup: any) => {\r\n        const dupId = dup.tempId || dup.templd;\r\n        if (dupId) duplicateImageIds.push(dupId);\r\n      });\r\n      const selectedTempld = selectedImage.templd || selectedImage.tempId;\r\n\r\n      // Filter to show only duplicate images related to the selected image\r\n      this.filteredDuplicateImages = this.remainingImageArray.filter((img: any) => {\r\n        // Get image ID (prefer tempId since we collected tempId from duplicateImagePath)\r\n        const imgId = img.tempId || img.templd;\r\n        // Check if image is in duplicateImagePath array\r\n        const isInDuplicatePath = imgId && duplicateImageIds.includes(imgId);\r\n        // Check if image has parent matching selected image\r\n        const hasMatchingParent = img.parent === selectedTempld;\r\n        // Return true if either condition is met\r\n        return isInDuplicatePath || hasMatchingParent;\r\n      });\r\n      return;\r\n    }\r\n\r\n    // If no duplicateImagePath, return empty array\r\n    this.filteredDuplicateImages = [];\r\n  }\r\n\r\n  // Getter method that returns cached filtered duplicate images (no recalculation)\r\n  getFilteredDuplicateImages(): any[] {\r\n    //  this.filteredDuplicateImages.map((item: any) => {\r\n    //   if (item.isChecked = true) {\r\n    //     item.selected = true,\r\n    //     item.isChecked = true\r\n    //   }   \r\n    //  })\r\n    return this.filteredDuplicateImages;\r\n  }\r\n\r\n  // Get filtered config icon list excluding duplicate and employee (for dynamic radio buttons)\r\n  getDynamicConfigIcons(): any[] {\r\n    if (!this.configIconList || !Array.isArray(this.configIconList)) {\r\n      return [];\r\n    }\r\n    return this.configIconList.filter((item: any) => {\r\n      const type = (item?.type || '').toLowerCase();\r\n      return type !== 'duplicate' && type !== 'employee';\r\n    });\r\n  }\r\n\r\n  // Check if popupType is a dynamic type (exists in configIconList)\r\n  isDynamicPopupType(popupType: string): boolean {\r\n    if (!popupType || !this.configIconList || !Array.isArray(this.configIconList)) {\r\n      return false;\r\n    }\r\n    const type = popupType.toLowerCase();\r\n    // Exclude static types\r\n    if (type === 'duplicate' || type === 'employee' || type === 'non-tagging') {\r\n      return false;\r\n    }\r\n    // Check if type exists in configIconList\r\n    return this.configIconList.some((item: any) => (item?.type || '').toLowerCase() === type);\r\n  }\r\n\r\n  // Get the name for a dynamic popup type from configIconList\r\n  getDynamicPopupName(popupType: string): string {\r\n    if (!popupType || !this.configIconList || !Array.isArray(this.configIconList)) {\r\n      return '';\r\n    }\r\n    const type = popupType.toLowerCase();\r\n    const configItem = this.configIconList.find((item: any) => (item?.type || '').toLowerCase() === type);\r\n    return configItem?.name || configItem?.type || popupType;\r\n  }\r\n\r\n  // Get count for a dynamic type from tempRaisedPayload\r\n  getRaisedPayloadCount(type: string): number {\r\n    if (!type || !this.tempRaisedPayload) {\r\n      return 0;\r\n    }\r\n    const countKey = `${type}Count`;\r\n    return this.tempRaisedPayload[countKey] || 0;\r\n  }\r\n\r\n  // Get count for a specific type from countData\r\n  getTypeCount(type: string): number {\r\n    if (!this.countData || !type) {\r\n      return 0;\r\n    }\r\n    return this.countData[type] || 0;\r\n  }\r\n  \r\n  openImageNewZoomModal(imageUrl: any, imageData: any) {\r\n    // Store the image data temporarily for modal display\r\n    this.tempModalImage = imageData;\r\n    this.updateFilteredDuplicateImages(); // Update cache when modal image changes\r\n\r\n    // Set up navigation list - use filteredDuplicateImages if available, otherwise remainingImageArray\r\n    if (this.filteredDuplicateImages && this.filteredDuplicateImages.length > 0) {\r\n      this.modalNavigationList = [...this.filteredDuplicateImages];\r\n    } else if (this.remainingImageArray && this.remainingImageArray.length > 0) {\r\n      this.modalNavigationList = [...this.remainingImageArray];\r\n    } else {\r\n      // If no list available, create a single-item list with the current image\r\n      this.modalNavigationList = imageData ? [imageData] : [];\r\n    }\r\n\r\n    // Find current index in navigation list\r\n    const imageId = imageData?.tempId || imageData?.templd;\r\n    if (imageId && this.modalNavigationList.length > 0) {\r\n      this.currentModalImageIndex = this.modalNavigationList.findIndex(\r\n        (img: any) => (img.tempId || img.templd) === imageId\r\n      );\r\n      // If not found, add the image to the list and set index to 0\r\n      if (this.currentModalImageIndex === -1) {\r\n        this.modalNavigationList = [imageData, ...this.modalNavigationList];\r\n        this.currentModalImageIndex = 0;\r\n      }\r\n    } else {\r\n      this.currentModalImageIndex = 0;\r\n    }\r\n    this.isModalOpen = true;\r\n    const modalRef = this.modalService.open(this.imageNewPopup, {\r\n      centered: true,\r\n      size: \"lg\",\r\n    });\r\n    // once model closed make it null\r\n    modalRef.result.then(() => {\r\n      this.tempModalImage = null;\r\n    }).catch(() => { });\r\n  }\r\n\r\n  // Check limitation based on config - taglimitation\r\n  isTaggingLimitExceed(type: string): boolean {\r\n    if (!type || !this.configIconList || !Array.isArray(this.configIconList) || !this.countData) {\r\n      return false;\r\n    }\r\n\r\n    // Find the config item for the given type\r\n    const configItem = this.configIconList.find((item: any) => {\r\n      const itemType = (item?.type || '').trim().toLowerCase();\r\n      const checkType = type.trim().toLowerCase();\r\n      return itemType === checkType;\r\n    });\r\n\r\n    if (!configItem) {\r\n      return false; // No config found, don't disable\r\n    }\r\n\r\n    // Get the limit from config (could be tagLimit, limit, or similar property)\r\n    const limit = configItem?.value || null;\r\n    \r\n    // If no limit is set, don't disable\r\n    if (limit === null || limit === undefined) {\r\n      return false;\r\n    }\r\n    // Get current count for the type from countData\r\n    const currentCount = this.countData[type] || 0;\r\n    if (currentCount === 0) {\r\n      const tagWisePercentage = Math.floor((limit * this.countData.footfallCount) / 100);\r\n      return tagWisePercentage < 1;\r\n    } else if (currentCount > 0) {\r\n      const tagWisePercentage = Math.floor((currentCount / this.countData.footfallCount) * 100);\r\n      return tagWisePercentage >= limit;\r\n    }\r\n    return false;\r\n  }\r\n\r\n  // img re-render issue fix - start\r\n  /**\r\n   * Store the position of the selected image in the list view\r\n   * This helps maintain scroll position after update\r\n   */\r\n  storeSelectedImagePosition(obj: any): void {\r\n    if (!obj) {\r\n      this.selectedImagePosition = null;\r\n      return;\r\n    }\r\n\r\n    // Store scroll position from left panel container\r\n    if (this.leftPanelContainer?.nativeElement) {\r\n      const leftPanel = this.leftPanelContainer.nativeElement;\r\n      if (leftPanel.scrollHeight > leftPanel.clientHeight) {\r\n        this.leftPanelScrollPosition = leftPanel.scrollTop || 0;\r\n      } else {\r\n        // Try to find scrollable parent\r\n        let parent = leftPanel.parentElement;\r\n        while (parent && parent !== document.body) {\r\n          if (parent.scrollHeight > parent.clientHeight) {\r\n            this.leftPanelScrollPosition = (parent as HTMLElement).scrollTop || 0;\r\n            break;\r\n          }\r\n          parent = parent.parentElement;\r\n        }\r\n      }\r\n    }\r\n\r\n    // Find the image's position in the filtered list view groups\r\n    if (this.filteredListViewGroups && this.filteredListViewGroups.length > 0) {\r\n      let cumulativeIndex = 0;\r\n      \r\n      for (const group of this.filteredListViewGroups) {\r\n        if (group.data && group.data.length > 0) {\r\n          const index = group.data.findIndex((img: any) => img.templd === obj.templd);\r\n          if (index !== -1) {\r\n            this.selectedImagePosition = {\r\n              templd: obj.templd || '',\r\n              timeRange: group.timeRange || '',\r\n              index: cumulativeIndex + index\r\n            };\r\n            return;\r\n          }\r\n          cumulativeIndex += group.data.length;\r\n        }\r\n      }\r\n    }\r\n\r\n    // If not found in filtered groups, try overall array\r\n    if (this.overallArrayData && this.overallArrayData.length > 0) {\r\n      const index = this.overallArrayData.findIndex((img: any) => img.templd === obj.templd);\r\n      if (index !== -1) {\r\n        this.selectedImagePosition = {\r\n          templd: obj.templd || '',\r\n          timeRange: obj.timeRange || '',\r\n          index: index\r\n        };\r\n        return;\r\n      }\r\n    }\r\n\r\n    this.selectedImagePosition = null;\r\n  }\r\n\r\n  /**\r\n   * Restore UI state (buttons, radio buttons) based on restored image\r\n   */\r\n  restoreImageUIState(selectedImage: any): void {\r\n    if (!selectedImage) return;\r\n    \r\n    const selectedRevopsType = selectedImage?.revopsType;\r\n    const isNonTagging = selectedRevopsType === \"non-tagging\";\r\n    const isAlreadyMapped = selectedRevopsType && selectedRevopsType !== \"non-tagging\" && selectedRevopsType.trim() !== \"\";\r\n    \r\n    // Restore user comment\r\n    this.userImgComment = selectedImage?.comments ?? '';\r\n    \r\n    // Requirement 1: If selected image is non-tagging, show Cancel and Save & Close buttons\r\n    if (isNonTagging) {\r\n      this.revopsTypeValue = false;\r\n      this.revopsTypeValuepopup = false;\r\n      this.selectedType = '';\r\n      this.selectedRadioType = undefined;\r\n      this.editBtnShow = false;\r\n    }\r\n    // Requirement 2: If selected image is already mapped to other types, show Edit button first\r\n    else if (isAlreadyMapped) {\r\n      this.revopsTypeValue = true;\r\n      this.revopsTypeValuepopup = true;\r\n      this.selectedType = selectedRevopsType;\r\n      this.editBtnShow = true;\r\n      // Call onRadioChange if needed for the selected type\r\n      if (selectedRevopsType === \"duplicate\" || selectedRevopsType === \"employee\" ||\r\n        selectedRevopsType === \"houseKeeping\" || selectedRevopsType === \"junk\") {\r\n        this.onRadioChange(selectedRevopsType);\r\n      }\r\n    }\r\n    // Default case: no type assigned or empty\r\n    else {\r\n      this.revopsTypeValue = false;\r\n      this.revopsTypeValuepopup = false;\r\n      this.selectedType = '';\r\n      this.selectedRadioType = undefined;\r\n      this.editBtnShow = false;\r\n    }\r\n    \r\n    // Update filtered duplicate images cache\r\n    this.updateFilteredDuplicateImages();\r\n  }\r\n\r\n  /**\r\n   * Update remaining images array after restoring selected image\r\n   */\r\n  updateRemainingImagesAfterRestore(selectedImage: any): void {\r\n    if (!selectedImage) return;\r\n    \r\n    const selectedTempld = selectedImage?.templd;\r\n    const isDuplicateMode = selectedImage.revopsType === \"duplicate\";\r\n    \r\n    if (!isDuplicateMode) {\r\n      // Show all images in left panel except duplicates and the currently selected image\r\n      this.remainingImageArray = this.overallArrayData.filter((img: any) => {\r\n        const imgType = (img.revopsType || \"\").trim().toLowerCase();\r\n        return imgType !== \"duplicate\" && img.templd !== selectedTempld;\r\n      });\r\n\r\n      // Reset checkbox states\r\n      this.remainingImageArray.forEach((img: any) => {\r\n        img.selected = false;\r\n        img.isChecked = false;\r\n      });\r\n    }\r\n    \r\n    // Rebuild remaining images groups\r\n    this.buildRemainingImagesGroups();\r\n    // Update objectsArray (hour tabs) based on remaining images groups if in duplicate mode\r\n    this.updateObjectsArrayFromFilteredData();\r\n    \r\n    // Update filtered duplicate images cache\r\n    this.updateFilteredDuplicateImages();\r\n  }\r\n\r\n  /**\r\n   * Restore scroll position after list rebuild\r\n   * This maintains the position where the selected image was located\r\n   */\r\n  restoreScrollPosition(): void {\r\n    if (!this.selectedImagePosition || !this.selectImageArray) {\r\n      return;\r\n    }\r\n\r\n    // Use setTimeout to ensure DOM is updated after change detection\r\n    setTimeout(() => {\r\n      if (!this.leftPanelContainer?.nativeElement) {\r\n        this.selectedImagePosition = null;\r\n        return;\r\n      }\r\n\r\n      const leftPanel = this.leftPanelContainer.nativeElement;\r\n      \r\n      // Find all thumbnail items in the current view\r\n      const thumbnailItems = leftPanel.querySelectorAll('.thumbnail-item');\r\n      \r\n      if (thumbnailItems && thumbnailItems.length > 0 && this.selectedImagePosition) {\r\n        // Since the selected image moved to right side, find the image at the stored position\r\n        // or the next available image at that position\r\n        let targetIndex = this.selectedImagePosition.index;\r\n        \r\n        // If stored index is beyond current list, use the last item\r\n        if (targetIndex >= thumbnailItems.length) {\r\n          targetIndex = thumbnailItems.length - 1;\r\n        }\r\n        \r\n        // If stored index is 0 but list is empty, skip\r\n        if (targetIndex < 0) {\r\n          targetIndex = 0;\r\n        }\r\n        \r\n        const targetElement = thumbnailItems[targetIndex] as HTMLElement;\r\n        \r\n        if (targetElement) {\r\n          // Scroll the target element into view, maintaining relative position\r\n          targetElement.scrollIntoView({\r\n            behavior: 'auto',\r\n            block: 'nearest',\r\n            inline: 'nearest'\r\n          });\r\n        } else {\r\n          // Fallback: restore exact scroll position\r\n          if (leftPanel.scrollHeight > leftPanel.clientHeight) {\r\n            leftPanel.scrollTop = this.leftPanelScrollPosition;\r\n          }\r\n        }\r\n      } else {\r\n        // Fallback: restore exact scroll position if no items found\r\n        if (leftPanel.scrollHeight > leftPanel.clientHeight) {\r\n          leftPanel.scrollTop = this.leftPanelScrollPosition;\r\n        }\r\n      }\r\n\r\n      // Clear stored position after restoring\r\n      this.selectedImagePosition = null;\r\n    }, 150);\r\n  }\r\n   // img re-render issue fix - end\r\n\r\n}","<div class=\"card mt-3\">\r\n    <div class=\"card-header mt-3 px-0 border-bottom-0\">\r\n        <div class=\"custom-accordion\">\r\n            <div class=\"custom-accordion-item\">\r\n                <!-- for new navigation changes -->\r\n                <!-- old view while folder view -->\r\n                <button *ngIf=\"folderView\" class=\"mainheading pb-0 custom-accordion-header\" (click)=\"toggleAccordion()\">\r\n                    <div class=\"header-row\">\r\n                        <span class=\"img-direc\">Image Directory</span>\r\n\r\n                        <span class=\"divider\"></span>\r\n                        <span class=\"accordion-arrow\">\r\n                            <!-- Down arrow for collapsed state, up arrow for expanded state -->\r\n                            <svg *ngIf=\"!isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\r\n                                viewBox=\"0 0 16 6\" fill=\"none\">\r\n                                <path d=\"M1 1L5 5L9 1\" stroke=\"#071437\" stroke-width=\"1\" stroke-linecap=\"round\"\r\n                                    stroke-linejoin=\"round\" />\r\n                            </svg>\r\n                            <svg *ngIf=\"isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"6\"\r\n                                viewBox=\"0 0 16 6\" fill=\"none\">\r\n                                <path d=\"M1 5L5 1L9 5\" stroke=\"#1b84ff\" stroke-width=\"1\" stroke-linecap=\"round\"\r\n                                    stroke-linejoin=\"round\" />\r\n                            </svg>\r\n                        </span>\r\n                    </div>\r\n                </button>\r\n                <!-- new view while not in folder view view -->\r\n                <div *ngIf=\"!folderView\" class=\"header-row\">\r\n                    <div class=\"header-left-section ms-3\">\r\n                        <span *ngIf=\"backnav && !imageFlow\" class=\"cursor-pointer\" (click)=\"backToFootfall()\">\r\n                            <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\r\n                                xmlns=\"http://www.w3.org/2000/svg\">\r\n                                <g filter=\"url(#filter0_d_2585_7036)\">\r\n                                    <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\r\n                                    <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n                                    <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\r\n                                        stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n                                        stroke-linejoin=\"round\" />\r\n                                </g>\r\n                                <defs>\r\n                                    <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\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_2585_7036\" />\r\n                                        <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\r\n                                            result=\"shape\" />\r\n                                    </filter>\r\n                                </defs>\r\n                            </svg>\r\n                        </span>\r\n                        <!-- back from image flow -->\r\n                        <span *ngIf=\"imageFlow\" class=\"cursor-pointer\" (click)=\"backToFootfall1()\">\r\n                            <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\r\n                                xmlns=\"http://www.w3.org/2000/svg\">\r\n                                <g filter=\"url(#filter0_d_2585_7036)\">\r\n                                    <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\r\n                                    <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n                                    <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\r\n                                        stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n                                        stroke-linejoin=\"round\" />\r\n                                </g>\r\n                                <defs>\r\n                                    <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\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_2585_7036\" />\r\n                                        <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\r\n                                            result=\"shape\" />\r\n                                    </filter>\r\n                                </defs>\r\n                            </svg>\r\n                        </span>\r\n                        <span class=\"img-direc\">Image Directory | {{folderDate | date:'dd MMM, yyyy'}}</span>\r\n                    </div>\r\n                    <div class=\"header-right-section\">\r\n                        <span class=\"divider\"></span>\r\n                        <button *ngIf=\"!folderView\" class=\"accordion-toggle-btn\" (click)=\"toggleAccordion()\">\r\n                            <span class=\"accordion-arrow\">\r\n                                <!-- Down arrow for collapsed state, up arrow for expanded state -->\r\n                                <svg *ngIf=\"!isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\"\r\n                                    height=\"6\" viewBox=\"0 0 16 6\" fill=\"none\">\r\n                                    <path d=\"M1 1L5 5L9 1\" stroke=\"#071437\" stroke-width=\"1\" stroke-linecap=\"round\"\r\n                                        stroke-linejoin=\"round\" />\r\n                                </svg>\r\n                                <svg *ngIf=\"isAccordionExpanded\" xmlns=\"http://www.w3.org/2000/svg\" width=\"26\"\r\n                                    height=\"6\" viewBox=\"0 0 16 6\" fill=\"none\">\r\n                                    <path d=\"M1 5L5 1L9 5\" stroke=\"#1b84ff\" stroke-width=\"1\" stroke-linecap=\"round\"\r\n                                        stroke-linejoin=\"round\" />\r\n                                </svg>\r\n                            </span>\r\n                        </button>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n\r\n    <section *ngIf=\"isAccordionExpanded\">\r\n\r\n        <div *ngIf=\"folderView\" class=\"card-body py-1 p-0\">\r\n            <div class=\"date-list-container\">\r\n                <div class=\"date-list-scroll\">\r\n                    <div class=\"date-card\" *ngFor=\"let obj of dateArray; let i = index\" \r\n                        [ngClass]=\"{'date-card-active': i === selectIndex}\" (click)=\"getimages(i, obj)\">\r\n                        <div class=\"date-card-header\">\r\n                            <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"\r\n                                xmlns=\"http://www.w3.org/2000/svg\" class=\"calendar-icon\">\r\n                                <path\r\n                                    d=\"M12.6667 2.66667H12V2C12 1.63181 11.7015 1.33333 11.3333 1.33333C10.9651 1.33333 10.6667 1.63181 10.6667 2V2.66667H5.33333V2C5.33333 1.63181 5.03486 1.33333 4.66667 1.33333C4.29848 1.33333 4 1.63181 4 2V2.66667H3.33333C2.59695 2.66667 2 3.26362 2 4V13.3333C2 14.0697 2.59695 14.6667 3.33333 14.6667H12.6667C13.403 14.6667 14 14.0697 14 13.3333V4C14 3.26362 13.403 2.66667 12.6667 2.66667ZM12.6667 13.3333H3.33333V6H12.6667V13.3333Z\"\r\n                                    fill=\"#667085\" />\r\n                            </svg>\r\n                            <span class=\"date-text\">{{obj | date:'dd MMM'}}</span>\r\n                            <span *ngIf=\"cardDataMap[obj]?.ticketStatusLower as status\" class=\"badge ms-2\" [ngClass]=\"{\r\n                                    'badge-light-success': status === 'closed' || status === 'auto-closed',\r\n                                    'badge-light-warning': status !== 'closed' && status !== 'auto-closed'\r\n                                  }\">\r\n                                {{ status === 'closed' ? 'Ticket closed' : (status === 'auto-closed' ? 'Ticket auto-closed' : 'Ticket raised') }}\r\n                            </span>  \r\n                        </div>\r\n                        <div class=\"footfall-count\">{{ cardDataMap[obj]?.footfallCount || 0 }}</div>\r\n                        <div class=\"footfall-label\">Total footfall</div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n\r\n        <div *ngIf=\"!folderView\" class=\"card-body\">\r\n            <section *ngIf=\"!imageFlow\">\r\n                <div class=\"row\">\r\n                    <!-- Ticket Block Alert -->\r\n                    <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'block'\" class=\"col-12 mb-3\">\r\n                        <div class=\"ticket-block-alert\">\r\n                            <div class=\"ticket-block-alert-content\">\r\n                                <div class=\"ticket-block-alert-icon\">\r\n                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                        <g clip-path=\"url(#clip0_5069_40792)\">\r\n                                            <path\r\n                                                d=\"M12 8V12M12 16H12.01M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\"\r\n                                                stroke=\"#F04438\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                        </g>\r\n                                        <defs>\r\n                                            <clipPath id=\"clip0_5069_40792\">\r\n                                                <rect width=\"24\" height=\"24\" fill=\"white\" />\r\n                                            </clipPath>\r\n                                        </defs>\r\n                                    </svg>\r\n                                </div>\r\n                                <div class=\"ticket-block-alert-text\">\r\n                                    <div class=\"ticket-block-alert-title\">\r\n                                        You cannot raise ticket for next {{ getSelectedDateCardData()?.noOfBlockedDays\r\n                                        || '0' }} days\r\n                                    </div>\r\n                                    <div class=\"ticket-block-alert-description\">\r\n                                       Ticket accuracy for your store is currently within the acceptable threshold based on tickets raised this month. To prevent redundancy,\r\n                                    </div>\r\n                                    <div class=\"ticket-block-alert-action\">\r\n                                         raising additional tickets has been restricted. If you still want to raise tickets, You can <span class=\"ticket-block-alert-link\"\r\n                                            (click)=\"requestReset()\">send request</span> to reset.\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    <!-- Ticket Request Success Alert -->\r\n                    <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'request'\" class=\"col-12 mb-3\">\r\n                        <div class=\"ticket-request-alert\">\r\n                            <div class=\"ticket-request-alert-content\">\r\n                                <div class=\"ticket-request-alert-icon\">\r\n                                      <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                    <g clip-path=\"url(#clip0_5071_41809)\">\r\n                                        <path d=\"M22 2L11 13M22 2L15 22L11 13M22 2L2 9L11 13\" stroke=\"#12B76A\" stroke-width=\"3\" stroke-linecap=\"round\"\r\n                                            stroke-linejoin=\"round\" />\r\n                                    </g>\r\n                                    <defs>\r\n                                        <clipPath id=\"clip0_5071_41809\">\r\n                                            <rect width=\"24\" height=\"24\" fill=\"white\" />\r\n                                        </clipPath>\r\n                                    </defs>\r\n                                </svg>\r\n                                </div>\r\n                                <div class=\"ticket-request-alert-text\">\r\n                                    <div class=\"ticket-request-alert-title\">\r\n                                        Reset Request Sent\r\n                                    </div>\r\n                                    <div class=\"ticket-request-alert-description\">\r\n                                          Your request to enable ticket raising has been submitted. You’ll be notified once it’s approved.\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    <!-- footfall trends feature -->\r\n                    <ng-container *ngTemplateOutlet=\"footfallTrendsTemplate\"></ng-container>\r\n                    <ng-container *ngTemplateOutlet=\"ticketStatusTemplate\"></ng-container>\r\n                    <!-- <span class=\"divider\"></span> -->\r\n                    <!-- footfall trends feature end -->\r\n                    <div class=\"d-flex flex-shrink-0 mt-3 justify-content-start align-items-center px-0\">\r\n                        <!-- <span *ngIf=\"backnav\" class=\"cursor-pointer\" (click)=\"backToFootfall()\">\r\n                            <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\r\n                                xmlns=\"http://www.w3.org/2000/svg\">\r\n                                <g filter=\"url(#filter0_d_2585_7036)\">\r\n                                    <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\r\n                                    <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n                                    <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\r\n                                        stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n                                        stroke-linejoin=\"round\" />\r\n                                </g>\r\n                                <defs>\r\n                                    <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\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_2585_7036\" />\r\n                                        <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\r\n                                            result=\"shape\" />\r\n                                    </filter>\r\n                                </defs>\r\n                            </svg>\r\n                        </span> -->\r\n                        <!-- <span class=\"img-direc ms-2 mt-1\">{{folderDate | date:'dd MMM, yyyy'}}\r\n                            <span class=\"badge badge-light-warning mx-2\"\r\n                                *ngIf=\"!getTicketStatuses().includes('closed') && getTicketStatuses().includes('open')\">\r\n                                Ticket Raised\r\n                            </span>\r\n                            <span class=\"badge badge-light-success mx-2\"\r\n                                *ngIf=\"getTicketStatuses().includes('closed')\">Ticket Closed</span>\r\n\r\n                        </span> -->\r\n                        <!-- <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\" -->\r\n                         <div *ngIf=\"getTicketStatus().toLowerCase() !== 'raised' && getTicketStatus().toLowerCase() !== 'closed'\"\r\n                            class=\"ms-auto text-end\">\r\n                            <button [disabled]=\"!canEnableButton()\" class=\"btn btn-primary\" type=\"button\"\r\n                                (click)=\"Raised()\">\r\n                                Raise ticket\r\n                            </button>\r\n                        </div>\r\n                    </div>\r\n                    <div *ngIf=\"!folderView\"\r\n                        class=\"d-flex flex-wrap align-items-center justify-content-between w-100 my-2 gap-3\">\r\n                        <div class=\"nav-group bg-white border-1 btn-group w-auto\">\r\n                            <ng-container *ngIf=\"!(countData?.length > 0)\">\r\n                                <button class=\"btn btn-outline px-6 py-3\"\r\n                                    [ngClass]=\"type === 'footfall' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n                                    (click)=\"selectPlanTrends('footfall')\">\r\n                                    Total Footfall\r\n                                    <span\r\n                                        [ngClass]=\"type === 'footfall' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\r\n                                        {{ countData?.footfallCount || 0 }}\r\n                                    </span>\r\n                                </button>\r\n\r\n                                <button class=\"btn btn-outline px-6 py-3\"\r\n                                    [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n                                    (click)=\"selectPlanTrends('non-tagging')\">\r\n                                    Non-tags\r\n                                    <span\r\n                                        [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\r\n                                        {{ countData?.nonTags || 0 }}\r\n                                    </span>\r\n                                </button>\r\n\r\n                                <button class=\"btn btn-outline px-6 py-3\"\r\n                                    [ngClass]=\"type === 'duplicate' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n                                    (click)=\"selectPlanTrends('duplicate')\">\r\n                                    Duplicate\r\n                                    <span\r\n                                        [ngClass]=\"type === 'duplicate' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\r\n                                        {{ countData?.duplicate || 0 }}\r\n                                    </span>\r\n                                </button>\r\n\r\n                                <button class=\"btn btn-outline px-6 py-3\"\r\n                                    [ngClass]=\"type === 'employee' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n                                    (click)=\"selectPlanTrends('employee')\">\r\n                                    Employee/Staff\r\n                                    <span\r\n                                        [ngClass]=\"type === 'employee' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\r\n                                        {{ countData?.employee || 0 }}\r\n                                    </span>\r\n                                </button>\r\n\r\n                                <!-- Dynamic filter radio buttons based on configIconList -->\r\n                                <button class=\"btn btn-outline px-6 py-3\"\r\n                                    *ngFor=\"let configItem of getDynamicConfigIcons()\"\r\n                                    [ngClass]=\"type === configItem?.type ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n                                    (click)=\"selectPlanTrends(configItem?.type)\">\r\n                                    {{ configItem?.name }}\r\n                                    <span\r\n                                        [ngClass]=\"type === configItem?.type ? 'badge badge-active activePlanBtn' : 'badge badge-light-default inactivePlanBtn'\">\r\n                                        {{ getTypeCount(configItem?.type) }}\r\n                                    </span>\r\n                                </button>\r\n\r\n                                <!-- ============================================ -->\r\n                                <!-- OLD STATIC FILTER BUTTONS (COMMENTED OUT) -->\r\n                                <!-- ============================================ -->\r\n                                <!-- \r\n                                <button class=\"btn btn-outline px-6 py-3\"\r\n                                    [ngClass]=\"type === 'junk' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n                                    (click)=\"selectPlanTrends('junk')\">\r\n                                    Junk\r\n                                    <span\r\n                                        [ngClass]=\"type === 'junk' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\r\n                                        {{ countData?.junk || 0 }}\r\n                                    </span>\r\n                                </button>\r\n                                <button class=\"btn btn-outline px-6 py-3\"\r\n                                    [ngClass]=\"type === 'houseKeeping' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n                                    (click)=\"selectPlanTrends('houseKeeping')\">\r\n                                    House Keeping\r\n                                    <span\r\n                                        [ngClass]=\"type === 'houseKeeping' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\r\n                                        {{ countData?.houseKeeping || 0 }}\r\n                                    </span>\r\n                                </button>\r\n                                -->\r\n                                <!-- ============================================ -->\r\n                                <!-- END OF OLD STATIC FILTER BUTTONS -->\r\n                                <!-- ============================================ -->\r\n\r\n\r\n                            </ng-container>\r\n\r\n                        </div>\r\n                        <!-- View Mode UI -->\r\n                        <div class=\"btn-group view-toggle ms-auto\" role=\"group\" aria-label=\"Toggle view\">\r\n                            <span class=\"view-toggle-btn mx-1\" [ngClass]=\"{ active: viewMode === 'grid' }\"\r\n                                (click)=\"setViewMode('grid')\" aria-label=\"Grid view\">\r\n                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"44\" height=\"44\" viewBox=\"0 0 44 44\"\r\n                                    fill=\"none\">\r\n                                    <g filter=\"url(#filter0_d_518_122553)\">\r\n                                        <rect x=\"2.16797\" y=\"1.08398\" width=\"39.035\" height=\"39.035\" rx=\"8.67445\"\r\n                                            fill=\"white\" />\r\n                                        <rect x=\"2.71012\" y=\"1.62614\" width=\"37.9507\" height=\"37.9507\" rx=\"8.13229\"\r\n                                            stroke=\"#D0D5DD\" stroke-width=\"1.08431\" />\r\n                                        <path d=\"M19.8779 12.4688H13.5527V18.7939H19.8779V12.4688Z\" stroke=\"#344054\"\r\n                                            stroke-width=\"1.81079\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                        <path d=\"M29.8173 12.4688H23.4922V18.7939H29.8173V12.4688Z\" stroke=\"#344054\"\r\n                                            stroke-width=\"1.81079\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                        <path d=\"M29.8173 22.4082H23.4922V28.7333H29.8173V22.4082Z\" stroke=\"#344054\"\r\n                                            stroke-width=\"1.81079\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                        <path d=\"M19.8779 22.4082H13.5527V28.7333H19.8779V22.4082Z\" stroke=\"#344054\"\r\n                                            stroke-width=\"1.81079\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                    </g>\r\n                                    <defs>\r\n                                        <filter id=\"filter0_d_518_122553\" x=\"-0.000643253\" y=\"-0.000321627\"\r\n                                            width=\"43.3724\" height=\"43.3724\" 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.08431\" />\r\n                                            <feGaussianBlur stdDeviation=\"1.08431\" />\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_518_122553\" />\r\n                                            <feBlend mode=\"normal\" in=\"SourceGraphic\"\r\n                                                in2=\"effect1_dropShadow_518_122553\" result=\"shape\" />\r\n                                        </filter>\r\n                                    </defs>\r\n                                </svg>\r\n                            </span>\r\n                            <span class=\"view-toggle-btn mx-1\" [ngClass]=\"{ active: viewMode === 'list' }\"\r\n                                (click)=\"setViewMode('list')\" aria-label=\"List view\">\r\n                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"44\" height=\"44\" viewBox=\"0 0 44 44\"\r\n                                    fill=\"none\">\r\n                                    <g filter=\"url(#filter0_d_518_122035)\">\r\n                                        <rect x=\"2.16797\" y=\"1.08398\" width=\"39.035\" height=\"39.035\" rx=\"8.67445\"\r\n                                            fill=\"white\" />\r\n                                        <rect x=\"2.71012\" y=\"1.62614\" width=\"37.9507\" height=\"37.9507\" rx=\"8.13229\"\r\n                                            stroke=\"#D0D5DD\" stroke-width=\"1.08431\" />\r\n                                        <path\r\n                                            d=\"M18.0707 15.1797H29.8173M18.0707 20.6012H29.8173M18.0707 26.0227H29.8173M13.5527 15.1797H13.5618M13.5527 20.6012H13.5618M13.5527 26.0227H13.5618\"\r\n                                            stroke=\"#344054\" stroke-width=\"1.81079\" stroke-linecap=\"round\"\r\n                                            stroke-linejoin=\"round\" />\r\n                                    </g>\r\n                                    <defs>\r\n                                        <filter id=\"filter0_d_518_122035\" x=\"-0.000643253\" y=\"-0.000321627\"\r\n                                            width=\"43.3724\" height=\"43.3724\" 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.08431\" />\r\n                                            <feGaussianBlur stdDeviation=\"1.08431\" />\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_518_122035\" />\r\n                                            <feBlend mode=\"normal\" in=\"SourceGraphic\"\r\n                                                in2=\"effect1_dropShadow_518_122035\" result=\"shape\" />\r\n                                        </filter>\r\n                                    </defs>\r\n                                </svg>\r\n                            </span>\r\n                        </div>\r\n                    </div>\r\n\r\n                    <ng-container *ngIf=\"!imageFlow\">\r\n                        <!-- Old footfall-only tab container preserved for reference\r\n                        <div *ngIf=\"type === 'footfall' && viewMode === 'grid'\" \r\n                            class=\"d-flex mt-2 mb-2 overflow-x px-0\" [ngClass]=\"splitScreenEnabled ? 'w-50' : 'w-100'\">\r\n                            <div class=\"col text-nowrap\" *ngFor=\"let obj of objectsArray\">\r\n                                <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\r\n                                    <li class=\"nav-item cursor-pointer\">\r\n                                        <a (click)=\"selectedTimes(obj.timeRange)\"\r\n                                            [ngClass]=\"selectedTime === obj?.timeRange ? 'active' : ''\"\r\n                                            class=\"nav-link cursor-pointer no-border mx-3 mb-2\">\r\n                                            {{obj?.timeRange}}<span class=\"mx-2\"\r\n                                                [ngClass]=\"selectedTime === obj?.timeRange ? 'badge-num-primary' :'badge-num-muted'\">\r\n                                                {{ obj?.count ? obj?.count : 0 }}\r\n                                            </span>\r\n                                        </a>\r\n                                    </li>\r\n                                </ul>\r\n                            </div>\r\n                        </div>\r\n                        -->\r\n                        <div *ngIf=\"viewMode === 'grid'\" class=\"d-flex mt-2 mb-2 overflow-x px-0\"\r\n                            [ngClass]=\"splitScreenEnabled ? 'w-50' : 'w-100'\">\r\n                            <div class=\"col text-nowrap\" *ngFor=\"let obj of objectsArray\">\r\n                                <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\r\n                                    <li class=\"nav-item cursor-pointer\">\r\n                                        <a (click)=\"selectedTimes(obj.timeRange)\"\r\n                                            [ngClass]=\"selectedTime === obj?.timeRange ? 'active' : ''\"\r\n                                            class=\"nav-link cursor-pointer no-border mx-3 mb-2\">\r\n                                            {{obj?.timeRange}}<span class=\"mx-2\"\r\n                                                [ngClass]=\"selectedTime === obj?.timeRange ? 'badge-num-primary' :'badge-num-muted'\">\r\n                                                {{ obj?.count ? obj?.count : 0 }}\r\n                                            </span>\r\n                                        </a>\r\n                                    </li>\r\n                                </ul>\r\n                            </div>\r\n                        </div>\r\n                    </ng-container>\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 \" style=\"margin: 64px;border-radius: 8px;\r\nbackground: var(--Gray-50, #F9FAFB);\">\r\n                                <svg width=\"94\" height=\"94\" viewBox=\"0 0 94 94\" fill=\"none\"\r\n                                    xmlns=\"http://www.w3.org/2000/svg\">\r\n                                    <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" fill=\"#DAF1FF\" />\r\n                                    <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" stroke=\"#EAF8FF\"\r\n                                        stroke-width=\"13.3333\" />\r\n                                    <path\r\n                                        d=\"M35.332 51.9999H33.6654C32.7813 51.9999 31.9335 51.6487 31.3083 51.0236C30.6832 50.3985 30.332 49.5506 30.332 48.6666V33.6666C30.332 32.7825 30.6832 31.9347 31.3083 31.3096C31.9335 30.6844 32.7813 30.3333 33.6654 30.3333H48.6654C49.5494 30.3333 50.3973 30.6844 51.0224 31.3096C51.6475 31.9347 51.9987 32.7825 51.9987 33.6666V35.3333M45.332 41.9999H60.332C62.173 41.9999 63.6654 43.4923 63.6654 45.3333V60.3333C63.6654 62.1742 62.173 63.6666 60.332 63.6666H45.332C43.4911 63.6666 41.9987 62.1742 41.9987 60.3333V45.3333C41.9987 43.4923 43.4911 41.9999 45.332 41.9999Z\"\r\n                                        stroke=\"#00A3FF\" stroke-width=\"4\" stroke-linecap=\"round\"\r\n                                        stroke-linejoin=\"round\" />\r\n                                </svg>\r\n                                <div class=\"nodata-title my-3\">\r\n                                    {{ getNoDataMessage(type) }}\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n\r\n                    <!-- Split-screen layout (only shown after clicking an image) -->\r\n                    <div class=\"split-screen-container\" *ngIf=\"splitScreenEnabled && !noData && !loading\">\r\n                        <!-- Left Panel: Thumbnail List + Related Images -->\r\n                        <!-- <div class=\"left-panel w-50\"> img re-render issue fix--> \r\n                        <div class=\"left-panel w-50\" #leftPanelContainer>\r\n                            <!-- Main Images List (hidden when duplicate is selected) -->\r\n                            <ng-container *ngIf=\"(selectedRadioType === '' && !revopsTypeValue) || (selectedRadioType === 'duplicate' && revopsTypeValue) \r\n                                || (selectedRadioType !== 'duplicate' && (revopsTypeValue || !revopsTypeValue))\">\r\n                                <div class=\"thumbnail-list-section\" *ngFor=\"let group of filteredListViewGroups\">\r\n                                    <div class=\"time-range-header\" *ngIf=\"viewMode === 'list'\">\r\n                                        <span class=\"time-range-title\">{{ group?.timeRange }}</span>\r\n                                        <span class=\"time-range-count\">\r\n                                            <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n                                                xmlns=\"http://www.w3.org/2000/svg\">\r\n                                                <g clip-path=\"url(#clip0_2149_23440)\">\r\n                                                    <path\r\n                                                        d=\"M2 9.00077H4.75V9.62577C4.75 9.99045 4.60513 10.3402 4.34727 10.598C4.08941 10.8559 3.73967 11.0008 3.375 11.0008C3.01033 11.0008 2.66059 10.8559 2.40273 10.598C2.14487 10.3402 2 9.99045 2 9.62577V9.00077ZM4 3.06077C5 3.06077 5.5 4.50077 5.5 5.50077C5.5 6.00077 5.25 6.50077 5 7.25077L4.75 8.00077H2C2 7.50077 1.75 6.75077 1.75 5.50077C1.75 4.25077 2.749 3.06077 4 3.06077ZM10.027 7.04977L9.9185 7.66527C9.85117 8.02058 9.64656 8.33507 9.34901 8.5406C9.05146 8.74613 8.68492 8.82616 8.32878 8.76337C7.97263 8.70057 7.65557 8.49999 7.44626 8.20509C7.23695 7.91018 7.15225 7.54469 7.2105 7.18777L7.3185 6.57277L10.027 7.04977ZM9.089 0.853272C10.321 1.07027 11.098 2.41577 10.881 3.64677C10.664 4.87777 10.2875 5.57277 10.201 6.06527L7.4925 5.58777L7.3765 4.80577C7.2605 4.02377 7.1015 3.48777 7.188 2.99577C7.3615 2.01077 8.104 0.679772 9.089 0.853272Z\"\r\n                                                        fill=\"#00A3FF\" />\r\n                                                </g>\r\n                                                <defs>\r\n                                                    <clipPath id=\"clip0_2149_23440\">\r\n                                                        <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n                                                    </clipPath>\r\n                                                </defs>\r\n                                            </svg>{{ group?.data?.length || 0 }}\r\n                                        </span>\r\n                                    </div>\r\n                                    <div class=\"thumbnail-grid\">\r\n                                        <div class=\"thumbnail-item\" *ngFor=\"let obj of group?.data\"\r\n                                            [ngClass]=\"{'selected': selectImageArray?.templd === obj?.templd}\"\r\n                                            (click)=\"selectImageForSplitView(obj)\">\r\n                                            <img class=\"thumbnail-image\" [src]=\"imageUrl + obj?.filePath\"\r\n                                                (error)=\"obj.filePath = null\" alt=\"\" *ngIf=\"obj?.filePath\" />\r\n                                            <div *ngIf=\"!obj?.filePath\" class=\"no-preview\"\r\n                                                style=\"height: 120px; padding: 20px;\">\r\n                                                <span style=\"color: #667085; font-size: 11px;\">No preview</span>\r\n                                            </div>\r\n                                            <div class=\"thumbnail-info\">\r\n                                                <div class=\"tango-id\">Tango ID: {{ obj?.templd }}</div>\r\n                                                <div class=\"entry-time\">Entry Time: {{ obj?.entryTme ||\r\n                                                    obj?.entryTime}}\r\n                                                </div>\r\n                                                <!-- left panel image logo -->\r\n                                                <div class=\"col-md-5 text-end my-2\">\r\n                                                    <!-- Dynamic icon changes -->\r\n                                                    <span *ngIf=\"getIconName(obj?.revopsType) as iconName\">\r\n                                                        <span *ngIf=\"iconName === 'non-tagging'\"\r\n                                                            ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\r\n                                                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n                                                                height=\"21\" viewBox=\"0 0 19 18\" fill=\"none\">\r\n                                                                <path\r\n                                                                    d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\r\n                                                                    stroke=\"#475467\" stroke-width=\"2\"\r\n                                                                    stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                                            </svg>\r\n                                                        </span>\r\n                                                        <span *ngIf=\"iconName ==='houseKeepingTag'\">\r\n                                                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n                                                                height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\">\r\n                                                                <g clip-path=\"url(#clip0_2012_94643)\">\r\n                                                                    <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n                                                                        d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\r\n                                                                        fill=\"#475467\" />\r\n                                                                </g>\r\n                                                                <defs>\r\n                                                                    <clipPath id=\"clip0_2012_94643\">\r\n                                                                        <rect width=\"21\" height=\"20\" fill=\"white\"\r\n                                                                            transform=\"translate(0 0.686035)\" />\r\n                                                                    </clipPath>\r\n                                                                </defs>\r\n                                                            </svg>\r\n                                                        </span>\r\n                                                        <span *ngIf=\"iconName ==='junkTag'\">\r\n                                                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n                                                                height=\"21\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                                                <path\r\n                                                                    d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\r\n                                                                    stroke=\"#475467\" stroke-width=\"2\"\r\n                                                                    stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                                            </svg>\r\n                                                        </span>\r\n                                                        <!-- purple tag -->\r\n                                                        <span *ngIf=\"iconName ==='purpleTag'\">\r\n                                                            <!-- <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" fill=\"none\" viewBox=\"0 0 24 24\">\r\n                                                                <path\r\n                                                                    d=\"M20.7071 13.2929L11.4142 4H4V11.4142L13.2929 20.7071C13.6834 21.0976 14.3166 21.0976 14.7071 20.7071L20.7071 14.7071C21.0976 14.3166 21.0976 13.6834 20.7071 13.2929Z\"\r\n                                                                    stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                                                <path d=\"M7 7H7.01\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n                                                                    stroke-linejoin=\"round\" />\r\n                                                            </svg> -->\r\n                                                            <svg width=\"20\" height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\"\r\n                                                                xmlns=\"http://www.w3.org/2000/svg\">\r\n                                                                <path\r\n                                                                    d=\"M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                                                    fill=\"#EBE9FE\" />\r\n                                                                <path\r\n                                                                    d=\"M5.66406 5.66663H5.67406M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                                                    stroke=\"#7A5AF8\" stroke-width=\"1.33333\"\r\n                                                                    stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                                            </svg>\r\n                                                        </span>\r\n                                                        <!-- orange tag -->\r\n                                                        <span *ngIf=\"iconName ==='orangeTag'\">\r\n                                                            <svg width=\"20\" height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\"\r\n                                                                xmlns=\"http://www.w3.org/2000/svg\">\r\n                                                                <path\r\n                                                                    d=\"M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                                                    fill=\"#FFEAD5\" />\r\n                                                                <path\r\n                                                                    d=\"M5.66406 5.66663H5.67406M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                                                    stroke=\"#FB6514\" stroke-width=\"1.33333\"\r\n                                                                    stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                                            </svg>\r\n                                                        </span>\r\n                                                    </span>\r\n                                                    <!-- <span *ngIf=\"obj?.revopsType ==='non-tagging'\"\r\n                                                        ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\r\n                                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\r\n                                                            viewBox=\"0 0 19 18\" fill=\"none\">\r\n                                                            <path\r\n                                                                d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\r\n                                                                stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                                stroke-linejoin=\"round\" />\r\n                                                        </svg>\r\n                                                    </span> -->\r\n                                                    <span *ngIf=\"obj?.revopsType ==='duplicate'\">\r\n                                                        <svg *ngIf=\"obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\" fill=\"none\">\r\n                                                            <g clip-path=\"url(#clip0_568_103657)\">\r\n                                                                <path\r\n                                                                    d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\r\n                                                                    stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                                            </g>\r\n                                                            <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\r\n                                                            <defs>\r\n                                                                <clipPath id=\"clip0_568_103657\">\r\n                                                                    <rect width=\"19\" height=\"18\" fill=\"white\" />\r\n                                                                </clipPath>\r\n                                                            </defs>\r\n                                                        </svg>\r\n                                                        <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\"\r\n                                                            width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\r\n                                                            <g clip-path=\"url(#clip0_2012_94635)\">\r\n                                                                <path\r\n                                                                    d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\r\n                                                                    stroke=\"#475467\" stroke-width=\"2\"\r\n                                                                    stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                                            </g>\r\n                                                            <defs>\r\n                                                                <clipPath id=\"clip0_2012_94635\">\r\n                                                                    <rect width=\"20\" height=\"20\" fill=\"white\"\r\n                                                                        transform=\"translate(0 0.686035)\" />\r\n                                                                </clipPath>\r\n                                                            </defs>\r\n                                                        </svg>\r\n                                                    </span>\r\n                                                    <span *ngIf=\"obj?.revopsType ==='employee'\">\r\n                                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\r\n                                                            viewBox=\"0 0 20 21\" fill=\"none\">\r\n                                                            <g clip-path=\"url(#clip0_2012_94639)\">\r\n                                                                <path\r\n                                                                    d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\r\n                                                                    stroke=\"#475467\" stroke-width=\"2\"\r\n                                                                    stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                                            </g>\r\n                                                            <defs>\r\n                                                                <clipPath id=\"clip0_2012_94639\">\r\n                                                                    <rect width=\"20\" height=\"20\" fill=\"white\"\r\n                                                                        transform=\"translate(0 0.686035)\" />\r\n                                                                </clipPath>\r\n                                                            </defs>\r\n                                                        </svg>\r\n                                                    </span>\r\n                                                    <!-- <span *ngIf=\"obj?.revopsType ==='houseKeeping'\">\r\n                                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\r\n                                                            viewBox=\"0 0 21 21\" fill=\"none\">\r\n                                                            <g clip-path=\"url(#clip0_2012_94643)\">\r\n                                                                <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n                                                                    d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\r\n                                                                    fill=\"#475467\" />\r\n                                                            </g>\r\n                                                            <defs>\r\n                                                                <clipPath id=\"clip0_2012_94643\">\r\n                                                                    <rect width=\"21\" height=\"20\" fill=\"white\"\r\n                                                                        transform=\"translate(0 0.686035)\" />\r\n                                                                </clipPath>\r\n                                                            </defs>\r\n                                                        </svg>\r\n                                                    </span>\r\n                                                    <span *ngIf=\"obj?.revopsType ==='junk'\">\r\n                                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\r\n                                                            viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                                            <path\r\n                                                                d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\r\n                                                                stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                                stroke-linejoin=\"round\" />\r\n                                                        </svg>\r\n                                                    </span> -->\r\n                                                </div>\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </ng-container>\r\n\r\n                            <!-- left panel Images Section (ONLY shown when duplicate is selected) -->\r\n                           <!-- <div class=\"thumbnail-list-section\" *ngIf=\"selectedRadioType === 'duplicate' && filteredRemainingImagesGroups && filteredRemainingImagesGroups.length > 0\"> -->\r\n                            <div class=\"thumbnail-list-section\"\r\n                                *ngIf=\"selectedRadioType === 'duplicate' && !revopsTypeValue && filteredRemainingImagesGroups && \r\n                                filteredRemainingImagesGroups.length > 0\">\r\n                                <div class=\"thumbnail-list-section\" *ngFor=\"let group of filteredRemainingImagesGroups\">\r\n                                    <div class=\"time-range-header\" style=\"margin-top: 16px;\"\r\n                                        *ngIf=\"viewMode === 'list'\">\r\n                                        <span class=\"time-range-title\">{{ group?.timeRange }}</span>\r\n                                        <span class=\"time-range-count\"><svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\"\r\n                                                fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                                                <g clip-path=\"url(#clip0_2149_23440)\">\r\n                                                    <path\r\n                                                        d=\"M2 9.00077H4.75V9.62577C4.75 9.99045 4.60513 10.3402 4.34727 10.598C4.08941 10.8559 3.73967 11.0008 3.375 11.0008C3.01033 11.0008 2.66059 10.8559 2.40273 10.598C2.14487 10.3402 2 9.99045 2 9.62577V9.00077ZM4 3.06077C5 3.06077 5.5 4.50077 5.5 5.50077C5.5 6.00077 5.25 6.50077 5 7.25077L4.75 8.00077H2C2 7.50077 1.75 6.75077 1.75 5.50077C1.75 4.25077 2.749 3.06077 4 3.06077ZM10.027 7.04977L9.9185 7.66527C9.85117 8.02058 9.64656 8.33507 9.34901 8.5406C9.05146 8.74613 8.68492 8.82616 8.32878 8.76337C7.97263 8.70057 7.65557 8.49999 7.44626 8.20509C7.23695 7.91018 7.15225 7.54469 7.2105 7.18777L7.3185 6.57277L10.027 7.04977ZM9.089 0.853272C10.321 1.07027 11.098 2.41577 10.881 3.64677C10.664 4.87777 10.2875 5.57277 10.201 6.06527L7.4925 5.58777L7.3765 4.80577C7.2605 4.02377 7.1015 3.48777 7.188 2.99577C7.3615 2.01077 8.104 0.679772 9.089 0.853272Z\"\r\n                                                        fill=\"#00A3FF\" />\r\n                                                </g>\r\n                                                <defs>\r\n                                                    <clipPath id=\"clip0_2149_23440\">\r\n                                                        <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n                                                    </clipPath>\r\n                                                </defs>\r\n                                            </svg>{{ group?.data?.length || 0 }}</span>\r\n                                    </div>\r\n                                    <div class=\"thumbnail-grid\">\r\n                                        <div class=\"thumbnail-item\" *ngFor=\"let obj of group?.data\"\r\n                                            [ngClass]=\"{'selected': obj.selected}\">\r\n                                            <div class=\"position-relative\">\r\n                                                <input *ngIf=\"!revopsTypeValue && selectedRadioType === 'duplicate'\"\r\n                                                    type=\"checkbox\" [checked]=\"obj.selected\"\r\n                                                    class=\"position-absolute absolute form-check-input cursor-pointer\"\r\n                                                    style=\"top: 5px; right: 5px; z-index: 2; width: 20px !important; height: 20px !important;\"\r\n                                                    (change)=\"onImageCheckboxChange($event, obj, 'duplicate')\"\r\n                                                    (click)=\"$event.stopPropagation()\"\r\n                                                    [disabled]=\"obj.duplicateImagePath?.length > 0\" />\r\n                                                <img class=\"thumbnail-image cursor-pointer\"\r\n                                                    [src]=\"imageUrl + obj?.filePath\" (error)=\"obj.filePath = null\"\r\n                                                    alt=\"\" *ngIf=\"obj?.filePath\"\r\n                                                    (click)=\"handleImageClick($event, obj, true)\" />\r\n                                                <div *ngIf=\"!obj?.filePath\" class=\"no-preview cursor-pointer\"\r\n                                                    style=\"height: 120px; padding: 20px;\"\r\n                                                    (click)=\"handleImageClick($event, obj, true)\">\r\n                                                    <span style=\"color: #667085; font-size: 11px;\">No preview</span>\r\n                                                </div>\r\n                                                <div class=\"thumbnail-info\">\r\n                                                    <div class=\"tango-id\">Tango ID: {{ obj?.templd || obj?.tempId }}\r\n                                                    </div>\r\n                                                    <div class=\"entry-time\">Entry Time: {{ obj?.entryTme ||\r\n                                                        obj?.entryTime }}</div>\r\n                                                    <div class=\"col-md-5 text-end my-2\">\r\n                                                        <!-- Dynamic icon changes -->\r\n                                                        <span *ngIf=\"getIconName(obj?.revopsType) as iconName\">\r\n                                                            <span *ngIf=\"iconName === 'non-tagging'\"\r\n                                                                ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\r\n                                                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n                                                                    height=\"21\" viewBox=\"0 0 19 18\" fill=\"none\">\r\n                                                                    <path\r\n                                                                        d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\r\n                                                                        stroke=\"#475467\" stroke-width=\"2\"\r\n                                                                        stroke-linecap=\"round\"\r\n                                                                        stroke-linejoin=\"round\" />\r\n                                                                </svg>\r\n                                                            </span>\r\n                                                            <span *ngIf=\"iconName ==='houseKeepingTag'\">\r\n                                                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n                                                                    height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\">\r\n                                                                    <g clip-path=\"url(#clip0_2012_94643)\">\r\n                                                                        <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n                                                                            d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\r\n                                                                            fill=\"#475467\" />\r\n                                                                    </g>\r\n                                                                    <defs>\r\n                                                                        <clipPath id=\"clip0_2012_94643\">\r\n                                                                            <rect width=\"20\" height=\"21\" fill=\"white\"\r\n                                                                                transform=\"translate(0 0.686035)\" />\r\n                                                                        </clipPath>\r\n                                                                    </defs>\r\n                                                                </svg>\r\n                                                            </span>\r\n                                                            <span *ngIf=\"iconName ==='junkTag'\">\r\n                                                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n                                                                    height=\"21\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                                                    <path\r\n                                                                        d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\r\n                                                                        stroke=\"#475467\" stroke-width=\"2\"\r\n                                                                        stroke-linecap=\"round\"\r\n                                                                        stroke-linejoin=\"round\" />\r\n                                                                </svg>\r\n                                                            </span>\r\n                                                            <!-- purple tag -->\r\n                                                            <span *ngIf=\"iconName ==='purpleTag'\">\r\n                                                                <svg width=\"20\" height=\"21\" viewBox=\"0 0 21 21\"\r\n                                                                    fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                                                                    <path\r\n                                                                        d=\"M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                                                        fill=\"#EBE9FE\" />\r\n                                                                    <path\r\n                                                                        d=\"M5.66406 5.66663H5.67406M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                                                        stroke=\"#7A5AF8\" stroke-width=\"1.33333\"\r\n                                                                        stroke-linecap=\"round\"\r\n                                                                        stroke-linejoin=\"round\" />\r\n                                                                </svg>\r\n                                                            </span>\r\n                                                            <!-- orange tag -->\r\n                                                            <span *ngIf=\"iconName ==='orangeTag'\">\r\n                                                                <svg width=\"20\" height=\"21\" viewBox=\"0 0 21 21\"\r\n                                                                    fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                                                                    <path\r\n                                                                        d=\"M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                                                        fill=\"#FFEAD5\" />\r\n                                                                    <path\r\n                                                                        d=\"M5.66406 5.66663H5.67406M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                                                        stroke=\"#FB6514\" stroke-width=\"1.33333\"\r\n                                                                        stroke-linecap=\"round\"\r\n                                                                        stroke-linejoin=\"round\" />\r\n                                                                </svg>\r\n                                                            </span>\r\n                                                        </span>\r\n                                                        <!-- <span *ngIf=\"obj?.revopsType ==='non-tagging'\"\r\n                                                            ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\r\n                                                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\" viewBox=\"0 0 19 18\" fill=\"none\">\r\n                                                                <path\r\n                                                                    d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\r\n                                                                    stroke=\"#475467\" stroke-width=\"2\"\r\n                                                                    stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                                            </svg>\r\n                                                        </span> -->\r\n                                                        <span *ngIf=\"obj?.revopsType ==='duplicate'\">\r\n                                                            <svg *ngIf=\"obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n                                                                viewBox=\"0 0 10 10\" fill=\"none\">\r\n                                                                <g clip-path=\"url(#clip0_568_103657)\">\r\n                                                                    <path\r\n                                                                        d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\r\n                                                                        stroke=\"#475467\" stroke-linecap=\"round\"\r\n                                                                        stroke-linejoin=\"round\" />\r\n                                                                </g>\r\n                                                                <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\r\n                                                                <defs>\r\n                                                                    <clipPath id=\"clip0_568_103657\">\r\n                                                                        <rect width=\"19\" height=\"18\" fill=\"white\" />\r\n                                                                    </clipPath>\r\n                                                                </defs>\r\n                                                            </svg>\r\n                                                            <svg *ngIf=\"!obj?.isParent\"\r\n                                                                xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n                                                                height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\r\n                                                                <g clip-path=\"url(#clip0_2012_94635)\">\r\n                                                                    <path\r\n                                                                        d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\r\n                                                                        stroke=\"#475467\" stroke-width=\"2\"\r\n                                                                        stroke-linecap=\"round\"\r\n                                                                        stroke-linejoin=\"round\" />\r\n                                                                </g>\r\n                                                                <defs>\r\n                                                                    <clipPath id=\"clip0_2012_94635\">\r\n                                                                        <rect width=\"20\" height=\"20\" fill=\"white\"\r\n                                                                            transform=\"translate(0 0.686035)\" />\r\n                                                                    </clipPath>\r\n                                                                </defs>\r\n                                                            </svg>\r\n                                                        </span>\r\n                                                        <span *ngIf=\"obj?.revopsType ==='employee'\">\r\n                                                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n                                                                height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\r\n                                                                <g clip-path=\"url(#clip0_2012_94639)\">\r\n                                                                    <path\r\n                                                                        d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\r\n                                                                        stroke=\"#475467\" stroke-width=\"2\"\r\n                                                                        stroke-linecap=\"round\"\r\n                                                                        stroke-linejoin=\"round\" />\r\n                                                                </g>\r\n                                                                <defs>\r\n                                                                    <clipPath id=\"clip0_2012_94639\">\r\n                                                                        <rect width=\"20\" height=\"20\" fill=\"white\"\r\n                                                                            transform=\"translate(0 0.686035)\" />\r\n                                                                    </clipPath>\r\n                                                                </defs>\r\n                                                            </svg>\r\n                                                        </span>\r\n                                                        <!-- <span *ngIf=\"obj?.revopsType ==='houseKeeping'\">\r\n                                                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\"\r\n                                                                height=\"18\" viewBox=\"0 0 21 21\" fill=\"none\">\r\n                                                                <g clip-path=\"url(#clip0_2012_94643)\">\r\n                                                                    <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n                                                                        d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\r\n                                                                        fill=\"#475467\" />\r\n                                                                </g>\r\n                                                                <defs>\r\n                                                                    <clipPath id=\"clip0_2012_94643\">\r\n                                                                        <rect width=\"21\" height=\"20\" fill=\"white\"\r\n                                                                            transform=\"translate(0 0.686035)\" />\r\n                                                                    </clipPath>\r\n                                                                </defs>\r\n                                                            </svg>\r\n                                                        </span>\r\n                                                        <span *ngIf=\"obj?.revopsType ==='junk'\">\r\n                                                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\"\r\n                                                                height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                                                <path\r\n                                                                    d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\r\n                                                                    stroke=\"#475467\" stroke-width=\"2\"\r\n                                                                    stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                                            </svg>\r\n                                                        </span> -->\r\n                                                    </div>\r\n                                                </div>\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n\r\n                        <!-- Right Panel: Selected Image Details -->\r\n                        <div class=\"right-panel w-50\" *ngIf=\"selectImageArray\">\r\n                            <ng-container\r\n                                *ngTemplateOutlet=\"imageDetailView; context: { $implicit: selectImageArray }\">\r\n                            </ng-container>\r\n                        </div>\r\n                        <div class=\"right-panel\" *ngIf=\"!selectImageArray\"\r\n                            style=\"display: flex; align-items: center; justify-content: center; color: var(--Gray-500, #667085);\">\r\n                            <div style=\"text-align: center;\">\r\n                                <p style=\"font-size: 16px; font-weight: 500;\">Select an image to view details</p>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n\r\n                    <!-- Image Detail View Template for Split-Screen -- Right Panel -->\r\n                    <ng-template #imageDetailView let-obj>\r\n                        <div class=\"border-gray p-3 mb-3\">\r\n                            <div class=\"position-relative\">\r\n                                <img class=\"img-src1\" [src]=\"imageUrl + obj?.filePath\" alt=\"\" *ngIf=\"obj?.filePath\" />\r\n                                <!-- Previous Button -->\r\n                                <button *ngIf=\"obj?.filePath && canNavigatePrevious()\" \r\n                                    class=\"btn btn-sm btn-light position-absolute navigation-btn navigation-btn-left\"\r\n                                    style=\"top: 50%; left: 10px; transform: translateY(-50%); z-index: 10; border-radius: 6px; \r\n                                    width: 26px; height: 26px; display: flex; align-items: center; justify-content: center;\r\n                                    box-shadow: 0 2px 8px rgba(0,0,0,0.15); background: white; border: 1px solid #D0D5DD; padding: 0;\"\r\n                                    (click)=\"navigateFilteredImage('previous')\"\r\n                                    title=\"Previous Image\">\r\n                                    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 22 22\" fill=\"none\" style=\"display: block;\">\r\n                                        <path d=\"M15 18L9 12L15 6\" stroke=\"#344054\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                                    </svg>\r\n                                </button>\r\n                                <!-- Next Button -->\r\n                                <button *ngIf=\"obj?.filePath && canNavigateNext()\" \r\n                                    class=\"btn btn-sm btn-light position-absolute navigation-btn navigation-btn-right\"\r\n                                    style=\"top: 50%; right: 10px; transform: translateY(-50%); z-index: 10; border-radius: 6px; \r\n                                    width: 26px; height: 26px; display: flex; align-items: center; justify-content: center; \r\n                                    box-shadow: 0 2px 8px rgba(0,0,0,0.15); background: white; border: 1px solid #D0D5DD; padding: 0;\"\r\n                                    (click)=\"navigateFilteredImage('next')\"\r\n                                    title=\"Next Image\">\r\n                                    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 22 22\" fill=\"none\" style=\"display: block;\">\r\n                                        <path d=\"M9 18L15 12L9 6\" stroke=\"#344054\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                                    </svg>\r\n                                </button>\r\n                                <!-- Zoom Icon -->\r\n                                <div *ngIf=\"obj?.filePath\" class=\"zoom-icon-button\" (click)=\"openImageNewZoomModal(imageUrl, obj)\">\r\n                                    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"15\" viewBox=\"0 0 20 20\"\r\n                                        fill=\"none\">\r\n                                        <path\r\n                                            d=\"M18.3333 18.3333L15 15M16.6667 9.16667C16.6667 13.3067 13.3067 16.6667 9.16667 16.6667C5.02667 16.6667 1.66667 13.3067 1.66667 9.16667C1.66667 5.02667 5.02667 1.66667 9.16667 1.66667C13.3067 1.66667 16.6667 5.02667 16.6667 9.16667Z\"\r\n                                            stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                            stroke-linejoin=\"round\" />\r\n                                        <path d=\"M9.16667 6.66667V11.6667M6.66667 9.16667H11.6667\" stroke=\"#475467\"\r\n                                            stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                    </svg>\r\n                                </div>\r\n                                <div *ngIf=\"!obj?.filePath\" class=\"no-preview\" style=\"height: 375px;\">\r\n                                    <span class=\"mb-5\">\r\n                                        <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\r\n                                            xmlns=\"http://www.w3.org/2000/svg\">\r\n                                            <g id=\"Group\">\r\n                                                <path id=\"Vector\"\r\n                                                    d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\r\n                                                    stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                    stroke-linejoin=\"round\" />\r\n                                                <path id=\"Vector_2\"\r\n                                                    d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\r\n                                                    stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                    stroke-linejoin=\"round\" />\r\n                                            </g>\r\n                                        </svg>\r\n                                    </span>\r\n                                    <span class=\"header mb-5 text-center\">Preview not available</span>\r\n                                    <span class=\"description mb-5 text-center\">The selected camera is not available at\r\n                                        the moment.</span>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"row px-2 mb-2 mt-3\">\r\n                                <div class=\"col-md-10\">\r\n                                    <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd}}\r\n                                        <span *ngIf=\"obj?.status ==='approved'\" class=\"ms-2\">\r\n                                            <svg style=\"width: 20px; height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\"\r\n                                                width=\"19\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\r\n                                                <rect y=\"0.5\" width=\"19\" height=\"18\" rx=\"5\" fill=\"#D1FADF\" />\r\n                                                <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n                                                    d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\r\n                                                    fill=\"#12B76A\" />\r\n                                            </svg>\r\n                                        </span>\r\n                                        <span *ngIf=\"obj?.status ==='rejected'\" class=\"ms-2\">\r\n                                            <svg style=\"width: 20px; height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\"\r\n                                                width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\r\n                                                <g clip-path=\"url(#clip0_1428_59484)\">\r\n                                                    <path\r\n                                                        d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\r\n                                                        fill=\"#FEE4E2\" />\r\n                                                    <path\r\n                                                        d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\r\n                                                        stroke=\"#D92D20\" stroke-linecap=\"round\"\r\n                                                        stroke-linejoin=\"round\" />\r\n                                                </g>\r\n                                                <defs>\r\n                                                    <clipPath id=\"clip0_1428_59484\">\r\n                                                        <rect width=\"12\" height=\"12\" fill=\"white\"\r\n                                                            transform=\"translate(0.599609 0.5)\" />\r\n                                                    </clipPath>\r\n                                                </defs>\r\n                                            </svg>\r\n                                        </span>\r\n                                    </div>\r\n                                    <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme || obj?.entryTime}}</div>\r\n                                </div>\r\n                                <div class=\"col-md-2 text-end py-3\">\r\n                                    <!-- Dynamic icon changes -->\r\n                                    <span *ngIf=\"getIconName(obj?.revopsType) as iconName\">\r\n                                        <span *ngIf=\"iconName === 'non-tagging'\" ngbTooltip=\"Yet to tag the customer\"\r\n                                            placement=\"top\">\r\n                                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n                                                viewBox=\"0 0 19 18\" fill=\"none\">\r\n                                                <path\r\n                                                    d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\r\n                                                    stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                    stroke-linejoin=\"round\" />\r\n                                            </svg>\r\n                                        </span>\r\n                                        <span *ngIf=\"iconName ==='houseKeepingTag'\">\r\n                                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n                                                viewBox=\"0 0 21 21\" fill=\"none\">\r\n                                                <g clip-path=\"url(#clip0_2012_94643)\">\r\n                                                    <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n                                                        d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\r\n                                                        fill=\"#475467\" />\r\n                                                </g>\r\n                                                <defs>\r\n                                                    <clipPath id=\"clip0_2012_94643\">\r\n                                                        <rect width=\"21\" height=\"20\" fill=\"white\"\r\n                                                            transform=\"translate(0 0.686035)\" />\r\n                                                    </clipPath>\r\n                                                </defs>\r\n                                            </svg>\r\n                                        </span>\r\n                                        <span *ngIf=\"iconName ==='junkTag'\">\r\n                                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n                                                viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                                <path\r\n                                                    d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\r\n                                                    stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                    stroke-linejoin=\"round\" />\r\n                                            </svg>\r\n                                        </span>\r\n                                        <!-- purple tag -->\r\n                                        <span *ngIf=\"iconName ==='purpleTag'\">\r\n                                            <svg width=\"18\" height=\"18\" viewBox=\"0 0 21 21\" fill=\"none\"\r\n                                                xmlns=\"http://www.w3.org/2000/svg\">\r\n                                                <path\r\n                                                    d=\"M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                                    fill=\"#EBE9FE\" />\r\n                                                <path\r\n                                                    d=\"M5.66406 5.66663H5.67406M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                                    stroke=\"#7A5AF8\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n                                                    stroke-linejoin=\"round\" />\r\n                                            </svg>\r\n                                        </span>\r\n                                        <!-- orange tag -->\r\n                                        <span *ngIf=\"iconName ==='orangeTag'\">\r\n                                            <svg width=\"21\" height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\"\r\n                                                xmlns=\"http://www.w3.org/2000/svg\">\r\n                                                <path\r\n                                                    d=\"M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                                    fill=\"#FFEAD5\" />\r\n                                                <path\r\n                                                    d=\"M5.66406 5.66663H5.67406M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                                    stroke=\"#FB6514\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n                                                    stroke-linejoin=\"round\" />\r\n                                            </svg>\r\n                                        </span>\r\n                                    </span>\r\n                                    <!-- <span *ngIf=\"obj?.revopsType ==='non-tagging'\" ngbTooltip=\"Yet to tag the customer\"\r\n                                        placement=\"top\">\r\n                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\r\n                                            viewBox=\"0 0 19 18\" fill=\"none\">\r\n                                            <path\r\n                                                d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\r\n                                                stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                stroke-linejoin=\"round\" />\r\n                                        </svg>\r\n                                    </span> -->\r\n                                    <span *ngIf=\"obj?.revopsType ==='duplicate'\">\r\n                                        <svg *ngIf=\"obj?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\"\r\n                                            fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                                            <g clip-path=\"url(#clip0_568_103657)\">\r\n                                                <path\r\n                                                    d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\r\n                                                    stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                            </g>\r\n                                            <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\r\n                                            <defs>\r\n                                                <clipPath id=\"clip0_568_103657\">\r\n                                                    <rect width=\"19\" height=\"18\" fill=\"white\" />\r\n                                                </clipPath>\r\n                                            </defs>\r\n                                        </svg>\r\n                                        <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n                                            height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\r\n                                            <g clip-path=\"url(#clip0_2012_94635)\">\r\n                                                <path\r\n                                                    d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\r\n                                                    stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                    stroke-linejoin=\"round\" />\r\n                                            </g>\r\n                                            <defs>\r\n                                                <clipPath id=\"clip0_2012_94635\">\r\n                                                    <rect width=\"20\" height=\"20\" fill=\"white\"\r\n                                                        transform=\"translate(0 0.686035)\" />\r\n                                                </clipPath>\r\n                                            </defs>\r\n                                        </svg>\r\n                                    </span>\r\n                                    <span *ngIf=\"obj?.revopsType ==='employee'\">\r\n                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n                                            viewBox=\"0 0 20 21\" fill=\"none\">\r\n                                            <g clip-path=\"url(#clip0_2012_94639)\">\r\n                                                <path\r\n                                                    d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\r\n                                                    stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                    stroke-linejoin=\"round\" />\r\n                                            </g>\r\n                                            <defs>\r\n                                                <clipPath id=\"clip0_2012_94639\">\r\n                                                    <rect width=\"20\" height=\"20\" fill=\"white\"\r\n                                                        transform=\"translate(0 0.686035)\" />\r\n                                                </clipPath>\r\n                                            </defs>\r\n                                        </svg>\r\n                                    </span>\r\n                                    <!-- <span *ngIf=\"obj?.revopsType ==='houseKeeping'\">\r\n                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\r\n                                            viewBox=\"0 0 21 21\" fill=\"none\">\r\n                                            <g clip-path=\"url(#clip0_2012_94643)\">\r\n                                                <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n                                                    d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\r\n                                                    fill=\"#475467\" />\r\n                                            </g>\r\n                                            <defs>\r\n                                                <clipPath id=\"clip0_2012_94643\">\r\n                                                    <rect width=\"21\" height=\"20\" fill=\"white\"\r\n                                                        transform=\"translate(0 0.686035)\" />\r\n                                                </clipPath>\r\n                                            </defs>\r\n                                        </svg>\r\n                                    </span>\r\n                                    <span *ngIf=\"obj?.revopsType ==='junk'\">\r\n                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n                                            viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                            <path\r\n                                                d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\r\n                                                stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                stroke-linejoin=\"round\" />\r\n                                        </svg>\r\n                                    </span> -->\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                        <!-- Tagging Not Available message when date exceeds restriction AND image was never mapped -->\r\n                        <div *ngIf=\"shouldBlockTagging()\" class=\"border-not-gray p-3\">\r\n                            <div class=\"d-flex flex-column align-items-center justify-content-center text-center py-4\">\r\n                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n                                    stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"mb-3\">\r\n                                    <circle cx=\"12\" cy=\"12\" r=\"10\"></circle>\r\n                                    <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"></line>\r\n                                    <line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"></line>\r\n                                </svg>\r\n                                <div class=\"tagging-expired-title mb-2\">Tagging Not Available</div>\r\n                                <div class=\"tagging-expired-message text-muted\">\r\n                                    Users can only tag entries from the last {{ allowTicketCreation }} days. Tagging is not\r\n                                    permitted for records older than {{ allowTicketCreation }} days from today.\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                        <div *ngIf=\"!shouldBlockTagging()\" class=\"border-gray p-3\">\r\n                            <div class=\"row mb-3\">\r\n                                <div class=\"col-md-6 mt-3 title-type\">Select non-shopper type</div>\r\n                                <!-- <div class=\"col-md-6 text-end\" \r\n                                 *ngIf=\"!(users?.role ==='user' && users?.userType ==='client' && selectedRadioType ==='junk')\"> -->\r\n                                <div *ngIf=\"(this.users?.rolespermission[3].modules[0].isAdd && this.users?.rolespermission[3].modules[0].isEdit) || \r\n                                (gs.userAccess | async)?.userType === 'tango'\" class=\"col-md-6 text-end\">\r\n                                    <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\"\r\n                                        class=\"mb-3 d-flex justify-content-end align-items-center gap-2\">\r\n                                        <!-- Clear Tag Button (visible when Edit button OR Save/Cancel buttons are visible) -->\r\n                                        <!-- [disabled]=\"(selectedRadioType === undefined || selectedRadioType === '') || (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0) || !canEnableSaveButton()\" -->\r\n                                        <button\r\n                                            *ngIf=\"revopsTypeValue && editBtnShow && !(selectImageArray?.revopsType === 'duplicate' && !selectImageArray?.isParent)\"\r\n                                            [disabled]=\"!canEnableSaveButton()\"\r\n                                            class=\"btn btn-clear-tag d-inline-flex align-items-center justify-content-center\"\r\n                                            type=\"button\" (click)=\"clearValue()\">\r\n                                            <svg width=\"40\" height=\"40\" viewBox=\"0 0 49 49\" fill=\"none\"\r\n                                                xmlns=\"http://www.w3.org/2000/svg\">\r\n                                                <g filter=\"url(#filter0_d_516_96841)\">\r\n                                                    <rect x=\"2.16797\" y=\"1.08447\" width=\"44.0342\" height=\"44.0284\"\r\n                                                        rx=\"8.67445\" fill=\"#FEF3F2\" />\r\n                                                    <rect x=\"2.71012\" y=\"1.62663\" width=\"42.9499\" height=\"42.9441\"\r\n                                                        rx=\"8.13229\" stroke=\"#FEF3F2\" stroke-width=\"1.08431\" />\r\n                                                    <path\r\n                                                        d=\"M33.4893 21.3613L33.4912 21.3643C34.0533 21.9297 34.369 22.6949 34.3691 23.4922C34.3691 24.2895 34.0533 25.0546 33.4912 25.6201L26.7256 32.3857C26.4454 32.6661 26.1122 32.8882 25.7461 33.04C25.3798 33.1919 24.9873 33.2705 24.5908 33.2705C24.1942 33.2705 23.801 33.1919 23.4346 33.04C23.0686 32.8883 22.7361 32.6659 22.4561 32.3857L20.7676 30.6992L22.3682 29.0986L24.0557 30.7842L24.0566 30.7852C24.1267 30.8553 24.2102 30.9112 24.3018 30.9492C24.3933 30.9872 24.4917 31.0068 24.5908 31.0068C24.6899 31.0068 24.7883 30.9872 24.8799 30.9492C24.9713 30.9113 25.0541 30.8552 25.124 30.7852H25.125L31.8877 24.0215C32.0267 23.8804 32.1055 23.6903 32.1055 23.4922C32.1054 23.2941 32.0267 23.1039 31.8877 22.9629L30.1963 21.2715L31.7979 19.6699L33.4893 21.3613ZM24.6982 12.9336C24.9571 12.9594 25.2011 13.0733 25.3867 13.2588L30.1973 18.0693L28.5957 19.6709L24.1162 15.1914H16.2852V23.0225L20.7666 27.499L19.166 29.0996L14.3535 24.293C14.1411 24.0807 14.0215 23.7925 14.0215 23.4922V14.0596C14.0217 13.4346 14.5283 12.9277 15.1533 12.9277H24.5859L24.6982 12.9336ZM19.8789 17.6436C20.5038 17.6436 21.0103 18.1506 21.0107 18.7754C21.0107 19.4005 20.504 19.9082 19.8789 19.9082H19.8691C19.2442 19.908 18.7373 19.4004 18.7373 18.7754C18.7378 18.1508 19.2445 17.6438 19.8691 17.6436H19.8789Z\"\r\n                                                        fill=\"#B42318\" />\r\n                                                    <path d=\"M33.1699 14.0845L15.1699 32.0845\" stroke=\"#B42318\"\r\n                                                        stroke-width=\"2\" stroke-linecap=\"round\" />\r\n                                                </g>\r\n                                                <defs>\r\n                                                    <filter id=\"filter0_d_516_96841\" x=\"-0.000643253\" y=\"0.000166655\"\r\n                                                        width=\"48.3724\" height=\"48.3655\" 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\"\r\n                                                            result=\"hardAlpha\" />\r\n                                                        <feOffset dy=\"1.08431\" />\r\n                                                        <feGaussianBlur stdDeviation=\"1.08431\" />\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_516_96841\" />\r\n                                                        <feBlend mode=\"normal\" in=\"SourceGraphic\"\r\n                                                            in2=\"effect1_dropShadow_516_96841\" result=\"shape\" />\r\n                                                    </filter>\r\n                                                </defs>\r\n                                            </svg>\r\n                                        </button>\r\n                                        <!-- Cancel and Save Buttons (when !revopsTypeValue) -->\r\n                                        <!-- <button class=\"btn btn-primary\" id=\"alert-toast\"\r\n                                                (click)=\"save(selectedType)\"\r\n                                                [disabled]=\"(selectedRadioType === undefined || selectedRadioType === '') || \r\n                                                (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0) || !canEnableSaveButton()\">\r\n                                                save & Close</button> -->\r\n                                        <div *ngIf=\"!revopsTypeValue\" class=\"d-flex align-items-center gap-2\">\r\n                                            <button class=\"btn btn-outline\" (click)=\"cancel()\">Cancel</button>\r\n                                            <button class=\"btn btn-primary w-10\" id=\"alert-toast\"\r\n                                                (click)=\"save(selectedType)\" [disabled]=\"!canEnableSaveButton() || !enableSaveBtn || selectedType === ''\">\r\n                                                save &amp; Close</button>\r\n                                        </div>\r\n                                        <!-- Edit Button (when revopsTypeValue && editBtnShow) -->\r\n                                        <div\r\n                                            *ngIf=\"revopsTypeValue && editBtnShow && !(selectImageArray?.revopsType === 'duplicate' && !selectImageArray?.isParent)\">\r\n                                            <button class=\"btn btn-outline\" (click)=\"editValue('outside')\"\r\n                                                [disabled]=\"!canEnableSaveButton()\">\r\n                                                <span class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n                                                        height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n                                                        <path\r\n                                                            d=\"M14.6554 1.71047C14.8927 1.47315 15.1745 1.2849 15.4845 1.15646C15.7946 1.02802 16.1269 0.961914 16.4626 0.961914C16.7982 0.961914 17.1305 1.02802 17.4406 1.15646C17.7507 1.2849 18.0324 1.47315 18.2697 1.71047C18.5071 1.94779 18.6953 2.22953 18.8238 2.53961C18.9522 2.84969 19.0183 3.18202 19.0183 3.51765C19.0183 3.85327 18.9522 4.18561 18.8238 4.49568C18.6953 4.80576 18.5071 5.0875 18.2697 5.32482L6.0713 17.5233L1.10156 18.8786L2.45695 13.9089L14.6554 1.71047Z\"\r\n                                                            stroke=\"#344054\" stroke-width=\"1.81079\"\r\n                                                            stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                                    </svg></span>Edit\r\n                                            </button>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"form-check my-15 mb-5\">\r\n                                <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"duplicate\"\r\n                                    id=\"duplicate-split\" [(ngModel)]=\"selectedType\" [value]=\"'duplicate'\"\r\n                                    (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue || isTaggingLimitExceed('duplicate')\">\r\n                                <label class=\"form-check-label\" for=\"duplicate-split\">\r\n                                    <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n                                            viewBox=\"0 0 20 21\" fill=\"none\">\r\n                                            <g clip-path=\"url(#clip0_2012_94635)\">\r\n                                                <path\r\n                                                    d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\r\n                                                    stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                    stroke-linejoin=\"round\" />\r\n                                            </g>\r\n                                            <defs>\r\n                                                <clipPath id=\"clip0_2012_94635\">\r\n                                                    <rect width=\"20\" height=\"20\" fill=\"white\"\r\n                                                        transform=\"translate(0 0.686035)\" />\r\n                                                </clipPath>\r\n                                            </defs>\r\n                                        </svg></span>\r\n                                    <span class=\"ms-5 tag-class\">Duplicate</span>\r\n                                </label>\r\n                                <div class=\"ms-16\" style=\"font-weight: 400;font-size: 14px;line-height: 14px;\" *ngIf=\"selectedRadioType === 'duplicate' \r\n                                && !revopsTypeValue\">\r\n                                    <label class=\"form-label\">Select the duplicates against this image</label>\r\n                                </div>\r\n                            </div>\r\n                            <!-- Parent-duplicate case: show mapped child images when selected image is duplicate parent -->\r\n                            <div *ngIf=\"selectImageArray?.revopsType === 'duplicate' && selectImageArray?.isParent && selectedType === 'duplicate'\r\n                                         && (getFilteredDuplicateImages() && getFilteredDuplicateImages().length > 0)\"\r\n                                class=\"ms-6\">\r\n                                <div class=\"row g-2\">\r\n                                    <div class=\"col-md-4 col-sm-6\" *ngFor=\"let obj of getFilteredDuplicateImages()\">\r\n                                        <div class=\"position-relative border-gray p-2 cursor-pointer\"\r\n                                            [ngClass]=\"{'border-primary': obj.selected || obj.isChecked}\" \r\n                                            (click)=\"handleDuplicateChildImageClick($event, obj, getFilteredDuplicateImages())\">\r\n                                            <div>\r\n                                                <img class=\"img-src w-100\"\r\n                                                    [src]=\"imageUrl + obj?.filePath\" (error)=\"obj.filePath = null\"\r\n                                                    alt=\"\" style=\"max-height: 120px; object-fit: cover;\" />\r\n                                                <input *ngIf=\"!revopsTypeValue\" type=\"checkbox\"\r\n                                                    [checked]=\"obj.selected || obj.isChecked\"\r\n                                                    (change)=\"onImageCheckboxChange($event, obj, 'duplicate')\"\r\n                                                    (click)=\"$event.stopPropagation()\"\r\n                                                    class=\"position-absolute top-10 me-3 end-0 form-check-input cursor-pointer m-1\"\r\n                                                    style=\"z-index: 20; pointer-events: auto; width: 20px !important; height: 20px !important;\" />\r\n                                            </div>\r\n                                            <div *ngIf=\"!obj?.filePath\" class=\"no-preview text-center p-2\">\r\n                                                <small class=\"text-muted\">Preview not available</small>\r\n                                            </div>\r\n                                            \r\n                                            <div class=\"mt-1\">\r\n                                                <div class=\"thumbnail-info\"\r\n                                                    style=\"display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 8px;\">\r\n                                                    <div style=\"display: flex; flex-direction: column; gap: 4px;\">\r\n                                                        <div style=\"color: var(--Gray-900, #101828);font-size: 10px;font-weight: 500; line-height: 16px;\r\n                                                                                    margin-bottom: 2px;\">Tango ID: {{\r\n                                                            obj?.templd || obj?.tempId}}\r\n                                                        </div>\r\n                                                        <div\r\n                                                            style=\"margin: 0; font-size: 11px; font-weight: 400; color: var(--Gray-600, #667085); line-height: 8px;\">\r\n                                                            Entry Time: {{ obj?.entryTme || obj?.entryTime}}</div>\r\n                                                    </div>\r\n                                                    <!-- right panel isparent image logo -->\r\n                                                    <div\r\n                                                        style=\"display: flex; align-items: center; justify-content: flex-end;\">\r\n                                                        <span *ngIf=\"obj?.revopsType ==='duplicate'\">\r\n                                                            <svg *ngIf=\"obj?.isParent\" width=\"19\" height=\"18\"\r\n                                                                viewBox=\"0 0 10 10\" fill=\"none\"\r\n                                                                xmlns=\"http://www.w3.org/2000/svg\">\r\n                                                                <g clip-path=\"url(#clip0_568_103657)\">\r\n                                                                    <path\r\n                                                                        d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\r\n                                                                        stroke=\"#475467\" stroke-linecap=\"round\"\r\n                                                                        stroke-linejoin=\"round\" />\r\n                                                                </g>\r\n                                                                <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\r\n                                                                <defs>\r\n                                                                    <clipPath id=\"clip0_568_103657\">\r\n                                                                        <rect width=\"19\" height=\"18\" fill=\"white\" />\r\n                                                                    </clipPath>\r\n                                                                </defs>\r\n                                                            </svg>\r\n                                                            <svg *ngIf=\"!obj?.isParent\"\r\n                                                                xmlns=\"http://www.w3.org/2000/svg\" width=\"19\"\r\n                                                                height=\"18\" viewBox=\"0 0 20 21\" fill=\"none\">\r\n                                                                <g clip-path=\"url(#clip0_2012_94635)\">\r\n                                                                    <path\r\n                                                                        d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\r\n                                                                        stroke=\"#475467\" stroke-width=\"2\"\r\n                                                                        stroke-linecap=\"round\"\r\n                                                                        stroke-linejoin=\"round\" />\r\n                                                                </g>\r\n                                                                <defs>\r\n                                                                    <clipPath id=\"clip0_2012_94635\">\r\n                                                                        <rect width=\"20\" height=\"20\" fill=\"white\"\r\n                                                                            transform=\"translate(0 0.686035)\" />\r\n                                                                    </clipPath>\r\n                                                                </defs>\r\n                                                            </svg>\r\n                                                        </span>\r\n                                                    </div>\r\n                                                </div>\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n\r\n                            <!-- Child-duplicate case: show mapped parent image when selected image is duplicate child -->\r\n                            <div *ngIf=\"selectImageArray?.revopsType === 'duplicate' && !selectImageArray?.isParent\">\r\n                                <div class=\"ms-6\" *ngIf=\"getParentForSelectedDuplicateChild() as parentImage\">\r\n                                    <!-- Card layout: image on the left, details on the right -->\r\n                                    <div class=\"mapped-parent-card ms-20\">\r\n                                        <div class=\"mapped-parent-image\">\r\n                                            <img class=\"w-100 h-150px\" [src]=\"imageUrl + parentImage?.filePath\"\r\n                                                (error)=\"parentImage.filePath = null\" alt=\"Parent image\" />\r\n                                            <div *ngIf=\"!parentImage?.filePath\" class=\"no-preview text-center p-2\">\r\n                                                <small class=\"text-muted\">Preview not available</small>\r\n                                            </div>\r\n                                        </div>\r\n\r\n                                        <div class=\"mapped-parent-body\">\r\n                                            <div class=\"mapped-parent-container\">\r\n\r\n                                                <div class=\"mapped-parent-left\">\r\n                                                    <div class=\"mapped-parent-title\">\r\n                                                        Tango ID : {{ parentImage?.templd || parentImage?.tempId }}\r\n                                                    </div>\r\n                                                    <div class=\"mapped-parent-subtitle\">\r\n                                                        Entry Time :\r\n                                                        {{ parentImage?.entryTme || parentImage?.entryTime }}\r\n                                                    </div>\r\n                                                </div>\r\n\r\n                                                <div class=\"mapped-parent-right\" style=\"margin: 8px;\">\r\n                                                    <svg width=\"14\" height=\"12\" viewBox=\"0 0 10 10\" fill=\"none\"\r\n                                                        xmlns=\"http://www.w3.org/2000/svg\">\r\n                                                        <g clip-path=\"url(#clip0_568_103657)\">\r\n                                                            <path\r\n                                                                d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\r\n                                                                stroke=\"#475467\" stroke-linecap=\"round\"\r\n                                                                stroke-linejoin=\"round\" />\r\n                                                        </g>\r\n                                                        <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\r\n                                                        <defs>\r\n                                                            <clipPath id=\"clip0_568_103657\">\r\n                                                                <rect width=\"19\" height=\"18\" fill=\"white\" />\r\n                                                            </clipPath>\r\n                                                        </defs>\r\n                                                    </svg>\r\n                                                </div>\r\n                                            </div>\r\n                                            <div class=\"mapped-parent-meta mx-5 mt-10\"\r\n                                                *ngIf=\"parentImage?.duplicateImagePath?.length\">\r\n                                                + {{ parentImage?.duplicateImagePath?.length }} Duplicates tagged\r\n                                            </div>\r\n                                            <div class=\"d-flex justify-content-center\">\r\n                                                <button type=\"button\" class=\"btn btn-link p-0 mapped-parent-viewall\"\r\n                                                    (click)=\"openDuplicateParentPopup(parentImage)\">\r\n                                                    View All\r\n                                                </button>\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n\r\n                            <div class=\"mt-5 warning-box\"\r\n                                *ngIf=\"selectImageArray?.revopsType === 'duplicate' && !selectImageArray?.isParent\">\r\n                                <div class=\"icon\">!</div>\r\n                                <div class=\"content\">\r\n                                    <div class=\"title\">You cannot edit/untag this duplicate</div>\r\n                                    <div class=\"subtitle\">\r\n                                        To edit this image, open the originally tagged image, select Edit, and remove it\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n\r\n\r\n                            <div class=\"form-check my-15\"\r\n                                *ngIf=\"!(selectImageArray?.revopsType === 'duplicate' && !selectImageArray?.isParent)\">\r\n                                <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"employee\"\r\n                                    id=\"employee-split\" [(ngModel)]=\"selectedType\" [value]=\"'employee'\"\r\n                                    (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue || isTaggingLimitExceed('employee')\">\r\n                                <label class=\"form-check-label\" for=\"employee-split\">\r\n                                    <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n                                            viewBox=\"0 0 20 21\" fill=\"none\">\r\n                                            <g clip-path=\"url(#clip0_2012_94639)\">\r\n                                                <path\r\n                                                    d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\r\n                                                    stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                    stroke-linejoin=\"round\" />\r\n                                            </g>\r\n                                            <defs>\r\n                                                <clipPath id=\"clip0_2012_94639\">\r\n                                                    <rect width=\"20\" height=\"20\" fill=\"white\"\r\n                                                        transform=\"translate(0 0.686035)\" />\r\n                                                </clipPath>\r\n                                            </defs>\r\n                                        </svg></span>\r\n                                    <span class=\"ms-5 tag-class\">Employee/Staff</span>\r\n                                </label>\r\n                            </div>\r\n\r\n                            <!-- ============================================ -->\r\n                            <!-- OLD STATIC RADIO BUTTONS (COMMENTED OUT) -->\r\n                            <!-- ============================================ -->\r\n                            <!-- \r\n                            The following static radio buttons have been replaced with dynamic buttons\r\n                            based on configIconList. Keeping this for reference:\r\n                            \r\n                            <div class=\"form-check my-15\">\r\n                                <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"houseKeeping\"\r\n                                    id=\"house-keeping-split\" [(ngModel)]=\"selectedType\" [value]=\"'houseKeeping'\"\r\n                                    (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\r\n                                <label class=\"form-check-label\" for=\"house-keeping-split\">\r\n                                    <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\r\n                                            viewBox=\"0 0 21 21\" fill=\"none\">\r\n                                            <g clip-path=\"url(#clip0_2012_94643)\">\r\n                                                <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n                                                    d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\r\n                                                    fill=\"#475467\" />\r\n                                            </g>\r\n                                            <defs>\r\n                                                <clipPath id=\"clip0_2012_94643\">\r\n                                                    <rect width=\"21\" height=\"20\" fill=\"white\"\r\n                                                        transform=\"translate(0 0.686035)\" />\r\n                                                </clipPath>\r\n                                            </defs>\r\n                                        </svg></span>\r\n                                    <span class=\"ms-5 tag-class\">House Keeping</span>\r\n                                </label>\r\n                            </div>\r\n                            <div class=\"form-check my-15\">\r\n                                <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"junk\" id=\"junk-split\"\r\n                                    [(ngModel)]=\"selectedType\" [value]=\"'junk'\" (change)=\"onRadioChange(selectedType)\"\r\n                                    [disabled]=\"revopsTypeValue\">\r\n                                <label class=\"form-check-label\" for=\"junk-split\">\r\n                                    <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n                                            viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                            <path\r\n                                                d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\r\n                                                stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                stroke-linejoin=\"round\" />\r\n                                        </svg></span>\r\n                                    <span class=\"ms-5 tag-class\">Junk</span>\r\n                                </label>\r\n                            </div>\r\n                            -->\r\n                            <!-- ============================================ -->\r\n                            <!-- END OF OLD STATIC RADIO BUTTONS -->\r\n                            <!-- ============================================ -->\r\n\r\n                            <!-- Dynamic radio buttons based on configIconList -->\r\n                            <ng-container\r\n                                *ngIf=\"!(selectImageArray?.revopsType === 'duplicate' && !selectImageArray?.isParent)\">\r\n                                <div class=\"form-check my-15\"\r\n                                    *ngFor=\"let configItem of getDynamicConfigIcons(); let i = index\">\r\n                                    <input class=\"form-check-input cursor-pointer\" type=\"radio\"\r\n                                        [name]=\"'dynamic-' + configItem?.type\" [id]=\"configItem?.type + '-split'\"\r\n                                        [(ngModel)]=\"selectedType\" [value]=\"configItem?.type\"\r\n                                        (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue || isTaggingLimitExceed(configItem?.type)\">\r\n                                    <label class=\"form-check-label\" [for]=\"configItem?.type + '-split'\">\r\n                                        <span class=\"ms-5\">\r\n                                            <ng-container [ngSwitch]=\"getIconName(configItem?.type)\">\r\n                                                <!-- houseKeepingTag icon -->\r\n                                                <svg *ngSwitchCase=\"'houseKeepingTag'\"\r\n                                                    xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\r\n                                                    viewBox=\"0 0 21 21\" fill=\"none\">\r\n                                                    <g\r\n                                                        [attr.clip-path]=\"'url(#clip0_dynamic_' + configItem?.type + '_' + i + ')'\">\r\n                                                        <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n                                                            d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\r\n                                                            fill=\"#475467\" />\r\n                                                    </g>\r\n                                                    <defs>\r\n                                                        <clipPath\r\n                                                            [attr.id]=\"'clip0_dynamic_' + configItem?.type + '_' + i\">\r\n                                                            <rect width=\"21\" height=\"20\" fill=\"white\"\r\n                                                                transform=\"translate(0 0.686035)\" />\r\n                                                        </clipPath>\r\n                                                    </defs>\r\n                                                </svg>\r\n                                                <!-- junkTag icon -->\r\n                                                <svg *ngSwitchCase=\"'junkTag'\" xmlns=\"http://www.w3.org/2000/svg\"\r\n                                                    width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                                    <path\r\n                                                        d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\r\n                                                        stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                        stroke-linejoin=\"round\" />\r\n                                                </svg>\r\n                                                <!-- purpleTag icon -->\r\n                                                <svg *ngSwitchCase=\"'purpleTag'\" width=\"18\" height=\"18\"\r\n                                                    viewBox=\"0 0 21 21\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                                                    <path\r\n                                                        d=\"M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                                        fill=\"#EBE9FE\" />\r\n                                                    <path\r\n                                                        d=\"M5.66406 5.66663H5.67406M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                                        stroke=\"#7A5AF8\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n                                                        stroke-linejoin=\"round\" />\r\n                                                </svg>\r\n                                                <!-- orangeTag icon -->\r\n\r\n                                                <svg *ngSwitchCase=\"'orangeTag'\" width=\"21\" height=\"21\"\r\n                                                    viewBox=\"0 0 21 21\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                                                    <path\r\n                                                        d=\"M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                                        fill=\"#FFEAD5\" />\r\n                                                    <path\r\n                                                        d=\"M5.66406 5.66663H5.67406M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                                        stroke=\"#FB6514\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n                                                        stroke-linejoin=\"round\" />\r\n                                                </svg>\r\n                                                <!-- Default icon (if iconName doesn't match) -->\r\n                                                <svg *ngSwitchDefault xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n                                                    height=\"18\" fill=\"none\" viewBox=\"0 0 24 24\">\r\n                                                    <path\r\n                                                        d=\"M20.7071 13.2929L11.4142 4H4V11.4142L13.2929 20.7071C13.6834 21.0976 14.3166 21.0976 14.7071 20.7071L20.7071 14.7071C21.0976 14.3166 21.0976 13.6834 20.7071 13.2929Z\"\r\n                                                        stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n                                                        stroke-linejoin=\"round\" />\r\n                                                    <path d=\"M7 7H7.01\" stroke=\"currentColor\" stroke-width=\"1.5\"\r\n                                                        stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                                </svg>\r\n                                            </ng-container>\r\n                                        </span>\r\n                                        <span class=\"ms-5 tag-class\">{{ configItem?.name }}</span>\r\n                                    </label>\r\n                                </div>\r\n                            </ng-container>\r\n\r\n                            <div class=\"mt-3\" *ngIf=\"!revopsTypeValue && \r\n                            !(selectImageArray?.revopsType === 'duplicate' && !selectImageArray?.isParent)\">\r\n                                <label class=\"form-label\">Remarks (Optional)</label>\r\n                                <textarea class=\"form-control\" rows=\"3\" placeholder=\"Comment here\" [(ngModel)]=\"userImgComment\">\r\n                                </textarea>\r\n                            </div>\r\n                            <div class=\"mt-3\" *ngIf=\"revopsTypeValue && \r\n                            !(selectImageArray?.revopsType === 'duplicate' && !selectImageArray?.isParent)\">\r\n                                <p><b>Remarks :</b> {{selectImageArray?.comments}}</p>\r\n                            </div>\r\n                        </div>\r\n                    </ng-template>\r\n\r\n                    <!-- Grid/List View (shown when split-screen is not enabled) -->\r\n                    <div class=\"row px-0 img-traffic contain high-400px scroll-y\"\r\n                        *ngIf=\"viewMode === 'grid' && !noData && !loading && !splitScreenEnabled\">\r\n                        <ng-container *ngFor=\"let obj of imagesArrayData\">\r\n                            <ng-container *ngTemplateOutlet=\"imageCard; context: { $implicit: obj }\"></ng-container>\r\n                        </ng-container>\r\n                    </div>\r\n\r\n                    <div class=\"list-view-wrapper\"\r\n                        *ngIf=\"viewMode === 'list' && !noData && !loading && !splitScreenEnabled\">\r\n                        <div class=\"list-group mb-5\" *ngFor=\"let group of filteredListViewGroups\">\r\n                            <div class=\"list-group-header d-flex align-items-center mb-3\">\r\n                                <div class=\"group-title\">{{ group?.timeRange }}</div>\r\n                                <span class=\"group-count badge badge-light-default ms-2\">\r\n                                    <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\r\n                                        xmlns=\"http://www.w3.org/2000/svg\">\r\n                                        <g clip-path=\"url(#clip0_2149_23440)\">\r\n                                            <path\r\n                                                d=\"M2 9.00077H4.75V9.62577C4.75 9.99045 4.60513 10.3402 4.34727 10.598C4.08941 10.8559 3.73967 11.0008 3.375 11.0008C3.01033 11.0008 2.66059 10.8559 2.40273 10.598C2.14487 10.3402 2 9.99045 2 9.62577V9.00077ZM4 3.06077C5 3.06077 5.5 4.50077 5.5 5.50077C5.5 6.00077 5.25 6.50077 5 7.25077L4.75 8.00077H2C2 7.50077 1.75 6.75077 1.75 5.50077C1.75 4.25077 2.749 3.06077 4 3.06077ZM10.027 7.04977L9.9185 7.66527C9.85117 8.02058 9.64656 8.33507 9.34901 8.5406C9.05146 8.74613 8.68492 8.82616 8.32878 8.76337C7.97263 8.70057 7.65557 8.49999 7.44626 8.20509C7.23695 7.91018 7.15225 7.54469 7.2105 7.18777L7.3185 6.57277L10.027 7.04977ZM9.089 0.853272C10.321 1.07027 11.098 2.41577 10.881 3.64677C10.664 4.87777 10.2875 5.57277 10.201 6.06527L7.4925 5.58777L7.3765 4.80577C7.2605 4.02377 7.1015 3.48777 7.188 2.99577C7.3615 2.01077 8.104 0.679772 9.089 0.853272Z\"\r\n                                                fill=\"#00A3FF\" />\r\n                                        </g>\r\n                                        <defs>\r\n                                            <clipPath id=\"clip0_2149_23440\">\r\n                                                <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n                                            </clipPath>\r\n                                        </defs>\r\n                                    </svg>{{ group?.data?.length || 0 }}\r\n                                </span>\r\n                            </div>\r\n                            <div class=\"row gx-4 list-group-row\">\r\n                                <ng-container *ngFor=\"let obj of group?.data\">\r\n                                    <ng-container\r\n                                        *ngTemplateOutlet=\"imageCard; context: { $implicit: obj }\"></ng-container>\r\n                                </ng-container>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n\r\n                    <ng-template #imageCard let-obj>\r\n                        <!-- main image card selection section-->\r\n                        <!-- <div *ngIf=\"type !== 'duplicate' || (type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\"\r\n                            class=\"col-md-3 p-1 mt-5\"> -->\r\n                        <div *ngIf=\"(type === obj.revopsType) || (type === 'footfall')\" class=\"col-md-3 p-1 mt-5\">\r\n                            <div class=\"mx-0 border-gray cursor-pointer\" (click)=\"selectImageForSplitView(obj)\">\r\n                                <!-- Condition: Only show if not duplicate OR duplicate with non-empty duplicateImagePath -->\r\n                                <ng-container>\r\n                                    <img class=\"img-src\" [src]=\"imageUrl + obj?.filePath\"\r\n                                        (error)=\"obj.filePath = null\" alt=\"\" />\r\n                                </ng-container>\r\n\r\n                                <div *ngIf=\"!obj?.filePath\" class=\"no-preview\">\r\n                                    <span class=\"mb-5\">\r\n                                        <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\r\n                                            xmlns=\"http://www.w3.org/2000/svg\">\r\n                                            <g id=\"Group\">\r\n                                                <path id=\"Vector\"\r\n                                                    d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\r\n                                                    stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                    stroke-linejoin=\"round\" />\r\n                                                <path id=\"Vector_2\"\r\n                                                    d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\r\n                                                    stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                    stroke-linejoin=\"round\" />\r\n                                            </g>\r\n                                        </svg>\r\n\r\n                                    </span>\r\n                                    <span class=\"header mb-5 text-center\">Preview not available</span>\r\n                                    <span class=\"description mb-5 text-center\">The selected camera is not available at\r\n                                        the\r\n                                        moment.</span>\r\n                                </div>\r\n                                <!-- <div *ngIf=\"type !== 'duplicate' || (type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\"\r\n                                class=\"row px-2 mb-2\"> -->\r\n                                <div *ngIf=\"(type === obj.revopsType) || (type === 'footfall')\" class=\"row px-2 mb-2\">\r\n                                    <div class=\"col-md-10\">\r\n                                        <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd}} <span\r\n                                                *ngIf=\"(type === 'duplicate'&& obj.revopsType === 'duplicate' && obj.duplicateImagePath?.length > 0)\"\r\n                                                class=\"mx-2 badge badge-light-primary\">{{obj.duplicateImagePath?.length}}\r\n                                            </span>\r\n                                            <span *ngIf=\"obj?.status ==='approved'\" class=\"ms-2\">\r\n                                                <svg style=\"width: 20px;\r\n                                                                    height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\"\r\n                                                    width=\"19\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\r\n                                                    <rect y=\"0.5\" width=\"19\" height=\"18\" rx=\"5\" fill=\"#D1FADF\" />\r\n                                                    <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n                                                        d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\r\n                                                        fill=\"#12B76A\" />\r\n                                                </svg>\r\n                                            </span>\r\n                                            <span *ngIf=\"obj?.status ==='rejected'\" class=\"ms-2\">\r\n                                                <svg style=\"width: 20px;\r\n                                                                    height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\"\r\n                                                    width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\r\n                                                    <g clip-path=\"url(#clip0_1428_59484)\">\r\n                                                        <path\r\n                                                            d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\r\n                                                            fill=\"#FEE4E2\" />\r\n                                                        <path\r\n                                                            d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\r\n                                                            stroke=\"#D92D20\" stroke-linecap=\"round\"\r\n                                                            stroke-linejoin=\"round\" />\r\n                                                    </g>\r\n                                                    <defs>\r\n                                                        <clipPath id=\"clip0_1428_59484\">\r\n                                                            <rect width=\"12\" height=\"12\" fill=\"white\"\r\n                                                                transform=\"translate(0.599609 0.5)\" />\r\n                                                        </clipPath>\r\n                                                    </defs>\r\n                                                </svg>\r\n                                            </span>\r\n                                        </div>\r\n                                        <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme}}</div>\r\n                                    </div>\r\n                                    <div class=\"col-md-2 text-end py-3\">\r\n                                        <span *ngIf=\"obj?.revopsType ==='duplicate'\">\r\n                                            <svg *ngIf=\"obj?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\"\r\n                                                fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                                                <g clip-path=\"url(#clip0_568_103657)\">\r\n                                                    <path\r\n                                                        d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\r\n                                                        stroke=\"#475467\" stroke-linecap=\"round\"\r\n                                                        stroke-linejoin=\"round\" />\r\n                                                </g>\r\n                                                <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\r\n                                                <defs>\r\n                                                    <clipPath id=\"clip0_568_103657\">\r\n                                                        <rect width=\"19\" height=\"18\" fill=\"white\" />\r\n                                                    </clipPath>\r\n                                                </defs>\r\n                                            </svg>\r\n                                            <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n                                                height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\r\n                                                <g clip-path=\"url(#clip0_2012_94635)\">\r\n                                                    <path\r\n                                                        d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\r\n                                                        stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                        stroke-linejoin=\"round\" />\r\n                                                </g>\r\n                                                <defs>\r\n                                                    <clipPath id=\"clip0_2012_94635\">\r\n                                                        <rect width=\"20\" height=\"20\" fill=\"white\"\r\n                                                            transform=\"translate(0 0.686035)\" />\r\n                                                    </clipPath>\r\n                                                </defs>\r\n                                            </svg>\r\n                                        </span>\r\n                                        <span *ngIf=\"obj?.revopsType ==='employee'\">\r\n                                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n                                                viewBox=\"0 0 20 21\" fill=\"none\">\r\n                                                <g clip-path=\"url(#clip0_2012_94639)\">\r\n                                                    <path\r\n                                                        d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\r\n                                                        stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                        stroke-linejoin=\"round\" />\r\n                                                </g>\r\n                                                <defs>\r\n                                                    <clipPath id=\"clip0_2012_94639\">\r\n                                                        <rect width=\"20\" height=\"20\" fill=\"white\"\r\n                                                            transform=\"translate(0 0.686035)\" />\r\n                                                    </clipPath>\r\n                                                </defs>\r\n                                            </svg>\r\n                                        </span>\r\n\r\n                                        <!-- Dynamic icon changes -->\r\n                                        <span *ngIf=\"getIconName(obj?.revopsType) as iconName\">\r\n                                            <span *ngIf=\"iconName === 'non-tagging'\"\r\n                                                ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\r\n                                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n                                                    viewBox=\"0 0 19 18\" fill=\"none\">\r\n                                                    <path\r\n                                                        d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\r\n                                                        stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                        stroke-linejoin=\"round\" />\r\n                                                </svg>\r\n                                            </span>\r\n                                            <span *ngIf=\"iconName ==='houseKeepingTag'\">\r\n                                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n                                                    viewBox=\"0 0 21 21\" fill=\"none\">\r\n                                                    <g clip-path=\"url(#clip0_2012_94643)\">\r\n                                                        <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n                                                            d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\r\n                                                            fill=\"#475467\" />\r\n                                                    </g>\r\n                                                    <defs>\r\n                                                        <clipPath id=\"clip0_2012_94643\">\r\n                                                            <rect width=\"21\" height=\"20\" fill=\"white\"\r\n                                                                transform=\"translate(0 0.686035)\" />\r\n                                                        </clipPath>\r\n                                                    </defs>\r\n                                                </svg>\r\n                                            </span>\r\n                                            <span *ngIf=\"iconName ==='junkTag'\">\r\n                                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n                                                    viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                                    <path\r\n                                                        d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\r\n                                                        stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                        stroke-linejoin=\"round\" />\r\n                                                </svg>\r\n                                            </span>\r\n                                            <!-- purple tag -->\r\n                                            <span *ngIf=\"iconName ==='purpleTag'\">\r\n                                                <svg width=\"18\" height=\"18\" viewBox=\"0 0 21 21\" fill=\"none\"\r\n                                                    xmlns=\"http://www.w3.org/2000/svg\">\r\n                                                    <path\r\n                                                        d=\"M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                                        fill=\"#EBE9FE\" />\r\n                                                    <path\r\n                                                        d=\"M5.66406 5.66663H5.67406M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                                        stroke=\"#7A5AF8\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n                                                        stroke-linejoin=\"round\" />\r\n                                                </svg>\r\n                                            </span>\r\n                                            <!-- orange tag -->\r\n                                            <span *ngIf=\"iconName ==='orangeTag'\">\r\n                                                <svg width=\"21\" height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\"\r\n                                                    xmlns=\"http://www.w3.org/2000/svg\">\r\n                                                    <path\r\n                                                        d=\"M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                                        fill=\"#FFEAD5\" />\r\n                                                    <path\r\n                                                        d=\"M5.66406 5.66663H5.67406M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                                        stroke=\"#FB6514\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n                                                        stroke-linejoin=\"round\" />\r\n                                                </svg>\r\n                                            </span>\r\n                                        </span>\r\n\r\n\r\n                                        <!-- <span *ngIf=\"obj?.revopsType ==='houseKeeping'\">\r\n                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n                                            viewBox=\"0 0 21 21\" fill=\"none\">\r\n                                            <g clip-path=\"url(#clip0_2012_94643)\">\r\n                                                <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n                                                    d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\r\n                                                    fill=\"#475467\" />\r\n                                            </g>\r\n                                            <defs>\r\n                                                <clipPath id=\"clip0_2012_94643\">\r\n                                                    <rect width=\"21\" height=\"20\" fill=\"white\"\r\n                                                        transform=\"translate(0 0.686035)\" />\r\n                                                </clipPath>\r\n                                            </defs>\r\n                                        </svg>\r\n                                    </span>\r\n                                    <span *ngIf=\"obj?.revopsType ==='junk'\">\r\n                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n                                            viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                            <path\r\n                                                d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\r\n                                                stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                stroke-linejoin=\"round\" />\r\n                                        </svg>\r\n                                    </span>\r\n                                    purple tag\r\n                                    <span *ngIf=\"obj?.revopsType ==='junk'\">\r\n                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n                                            height=\"18\" fill=\"none\" viewBox=\"0 0 24 24\">\r\n                                            <path\r\n                                                d=\"M20.7071 13.2929L11.4142 4H4V11.4142L13.2929 20.7071C13.6834 21.0976 14.3166 21.0976 14.7071 20.7071L20.7071 14.7071C21.0976 14.3166 21.0976 13.6834 20.7071 13.2929Z\"\r\n                                                stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n                                                stroke-linejoin=\"round\" />\r\n                                            <path d=\"M7 7H7.01\" stroke=\"currentColor\" stroke-width=\"1.5\"\r\n                                                stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                        </svg>\r\n                                    </span>\r\n                                    orange tag\r\n                                    <span *ngIf=\"obj?.revopsType ==='junk'\">\r\n                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" fill=\"none\" viewBox=\"0 0 24 24\">\r\n                                            <path\r\n                                                d=\"M20.7071 13.2929L11.4142 4H4V11.4142L13.2929 20.7071C13.6834 21.0976 14.3166 21.0976 14.7071 20.7071L20.7071 14.7071C21.0976 14.3166 21.0976 13.6834 20.7071 13.2929Z\"\r\n                                                stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                            <path d=\"M7 7H7.01\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                        </svg>\r\n                                    </span> -->\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </ng-template>\r\n\r\n                </div>\r\n            </section>\r\n\r\n            <!-- full image View -->\r\n            <section *ngIf=\"imageFlow\">\r\n                <div class=\"row\">\r\n                    <!-- Ticket Block Alert -->\r\n                    <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'block'\" class=\"col-12 mb-3\">\r\n                        <div class=\"ticket-block-alert\">\r\n                            <div class=\"ticket-block-alert-content\">\r\n                                <div class=\"ticket-block-alert-icon\">\r\n                                    <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n                                        xmlns=\"http://www.w3.org/2000/svg\">\r\n                                        <circle cx=\"12\" cy=\"12\" r=\"12\" fill=\"#F04438\" />\r\n                                        <path d=\"M12 8V13\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                            stroke-linejoin=\"round\" />\r\n                                        <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\r\n                                    </svg>\r\n                                </div>\r\n                                <div class=\"ticket-block-alert-text\">\r\n                                    <div class=\"ticket-block-alert-title\">\r\n                                        You cannot raise ticket for next {{ getSelectedDateCardData()?.noOfBlockedDays\r\n                                        || '0' }} days\r\n                                    </div>\r\n                                    <div class=\"ticket-block-alert-description\">\r\n                                        It looks like you have achieved 95% accuracy for the three tickets raised this\r\n                                        month. This limits you from raising more tickets to avoid redundancy.\r\n                                    </div>\r\n                                    <div class=\"ticket-block-alert-action\">\r\n                                        If you still want to raise tickets, <span class=\"ticket-block-alert-link\"\r\n                                            (click)=\"requestReset()\">send request</span> to reset.\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    <!-- Ticket Request Success Alert -->\r\n                    <div *ngIf=\"getSelectedDateCardData()?.raisedStatusEnabled === 'request'\" class=\"col-12 mb-3\">\r\n                        <div class=\"ticket-request-alert\">\r\n                            <div class=\"ticket-request-alert-content\">\r\n                                <div class=\"ticket-request-alert-icon\">\r\n                                    <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n                                        xmlns=\"http://www.w3.org/2000/svg\">\r\n                                        <path d=\"M2 21L23 12L2 3V10L17 12L2 14V21Z\" fill=\"#10B981\" />\r\n                                    </svg>\r\n                                </div>\r\n                                <div class=\"ticket-request-alert-text\">\r\n                                    <div class=\"ticket-request-alert-title\">\r\n                                        Reset Request Sent\r\n                                    </div>\r\n                                    <div class=\"ticket-request-alert-description\">\r\n                                        Your request to enable ticket raising has been submitted. You'll be notified\r\n                                        once it's approved. Please ensure future ticket accuracy remains within the 95%\r\n                                        threshold.\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    <div *ngIf=\"viewMode === 'grid'\" class=\"d-flex mt-2 mb-2 overflow-x px-0\"\r\n                        [ngClass]=\"splitScreenEnabled ? 'w-50' : 'w-100'\">\r\n                        <ng-container *ngTemplateOutlet=\"footfallTrendsTemplate\"></ng-container>\r\n                    </div>\r\n\r\n                    <ng-container *ngTemplateOutlet=\"ticketStatusTemplate\"></ng-container>\r\n                    <span class=\"divider\"></span>\r\n                    <div class=\"d-flex flex-shrink-0 mt-3 justify-content-start align-items-center px-0\">\r\n                        <div *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\"\r\n                            class=\"ms-auto text-end\">\r\n                            {{getTicketStatus()}}\r\n                            <button [disabled]=\"!canEnableButton()\" class=\"btn btn-primary\" type=\"button\"\r\n                                (click)=\"Raised()\">\r\n                                Raise ticket\r\n                            </button>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"nav-group bg-white border-1 btn-group w-auto\">\r\n                        <ng-container *ngIf=\"!(countData?.length > 0)\">\r\n                            <button class=\"btn btn-outline px-6 py-3\"\r\n                                [ngClass]=\"type === 'footfall' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n                                (click)=\"selectPlanTrends('footfall')\">\r\n                                Total Footfall\r\n                                <span\r\n                                    [ngClass]=\"type === 'footfall' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\r\n                                    {{ countData?.footfallCount || 0 }}\r\n                                </span>\r\n                            </button>\r\n\r\n                            <button class=\"btn btn-outline px-6 py-3\"\r\n                                [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n                                (click)=\"selectPlanTrends('non-tagging')\">\r\n                                Non-tags\r\n                                <span\r\n                                    [ngClass]=\"type === 'non-tagging' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\r\n                                    {{ countData?.nonTags || 0 }}\r\n                                </span>\r\n                            </button>\r\n\r\n                            <button class=\"btn btn-outline px-6 py-3\"\r\n                                [ngClass]=\"type === 'duplicate' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n                                (click)=\"selectPlanTrends('duplicate')\">\r\n                                Duplicated\r\n                                <span\r\n                                    [ngClass]=\"type === 'duplicate' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\r\n                                    {{ countData?.duplicate || 0 }}\r\n                                </span>\r\n                            </button>\r\n\r\n                            <button class=\"btn btn-outline px-6 py-3\"\r\n                                [ngClass]=\"type === 'employee' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n                                (click)=\"selectPlanTrends('employee')\">\r\n                                Employee/Staff\r\n                                <span\r\n                                    [ngClass]=\"type === 'employee' ? 'activePlanBtn badge badge-active' : 'inactivePlanBtn badge badge-light-default'\">\r\n                                    {{ countData?.employee || 0 }}\r\n                                </span>\r\n                            </button>\r\n\r\n                            <!-- Dynamic filter radio buttons based on configIconList - 1 -->\r\n                            <button class=\"btn btn-outline px-6 py-3\" *ngFor=\"let configItem of getDynamicConfigIcons()\"\r\n                                [ngClass]=\"type === configItem?.type ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n                                (click)=\"selectPlanTrends(configItem?.type)\">\r\n                                {{ configItem?.name }}\r\n                                <span\r\n                                    [ngClass]=\"type === configItem?.type ? 'badge badge-active activePlanBtn' : 'badge badge-light-default inactivePlanBtn'\">\r\n                                    {{ getTypeCount(configItem?.type) }}\r\n                                </span>\r\n                            </button>\r\n\r\n                            <!-- ============================================ -->\r\n                            <!-- OLD STATIC FILTER BUTTONS (COMMENTED OUT) -->\r\n                            <!-- ============================================ -->\r\n                            <!-- \r\n                            <button class=\"btn btn-outline px-6 py-3\"\r\n                                [ngClass]=\"type === 'junk' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n                                (click)=\"selectPlanTrends('junk')\">\r\n                                Junk\r\n                                <span\r\n                                    [ngClass]=\"type === 'junk' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\r\n                                    {{ countData?.junk || 0 }}\r\n                                </span>\r\n                            </button>\r\n                            <button class=\"btn btn-outline px-6 py-3\"\r\n                                [ngClass]=\"type === 'houseKeeping' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n                                (click)=\"selectPlanTrends('houseKeeping')\">\r\n                                House Keeping\r\n                                <span\r\n                                    [ngClass]=\"type === 'houseKeeping' ? 'badge badge-active activePlanBtn' : ' badge badge-light-default inactivePlanBtn'\">\r\n                                    {{ countData?.houseKeeping || 0 }}\r\n                                </span>\r\n                            </button>\r\n                            -->\r\n                            <!-- ============================================ -->\r\n                            <!-- END OF OLD STATIC FILTER BUTTONS -->\r\n                            <!-- ============================================ -->\r\n\r\n                        </ng-container>\r\n\r\n                    </div>\r\n\r\n                    <div class=\"row mx-0 border-gray img-traffic\" *ngIf=\"!noData && !loading\">\r\n                        <div class=\"col-md-6 p-2  mb-2 mt-5\">\r\n                            <div class=\"position-relative border-gray p-2 \">\r\n                                <!-- Main Image -->\r\n                                <!-- <img class=\"img-src cursor-pointer h-450px\"\r\n                                                        (click)=\"selectedImageArray(imageUrl, selectImageArray)\"\r\n                                                        [src]=\"imageUrl + selectImageArray?.filePath\" appMagnifier alt=\"\"> -->\r\n                                <img class=\"img-src cursor-pointer h-450px\"\r\n                                    (click)=\"selectedImageArray(imageUrl, selectImageArray)\"\r\n                                    [src]=\"imageUrl + selectImageArray?.filePath\" alt=\"\">\r\n\r\n                                <!-- Right arrow button -->\r\n                                <div class=\"row px-2 mb-2\">\r\n                                    <div class=\"col-md-10\">\r\n                                        <div class=\"py-2 img-doc-time\">Tango ID : {{selectImageArray?.templd}}\r\n                                            <span *ngIf=\"selectImageArray?.status ==='approved'\" class=\"ms-2\"><svg\r\n                                                    style=\"width: 20px;\r\n                        height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"11\" viewBox=\"0 0 10 11\"\r\n                                                    fill=\"none\">\r\n                                                    <rect y=\"0.5\" width=\"19\" height=\"18\" rx=\"5\" fill=\"#D1FADF\" />\r\n                                                    <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n                                                        d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\r\n                                                        fill=\"#12B76A\" />\r\n                                                </svg></span>\r\n                                            <span *ngIf=\"selectImageArray?.status ==='rejected'\" class=\"ms-2\"><svg\r\n                                                    style=\"width: 20px;\r\n                        height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\"\r\n                                                    fill=\"none\">\r\n                                                    <g clip-path=\"url(#clip0_1428_59484)\">\r\n                                                        <path\r\n                                                            d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\r\n                                                            fill=\"#FEE4E2\" />\r\n                                                        <path\r\n                                                            d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\r\n                                                            stroke=\"#D92D20\" stroke-linecap=\"round\"\r\n                                                            stroke-linejoin=\"round\" />\r\n                                                    </g>\r\n                                                    <defs>\r\n                                                        <clipPath id=\"clip0_1428_59484\">\r\n                                                            <rect width=\"12\" height=\"12\" fill=\"white\"\r\n                                                                transform=\"translate(0.599609 0.5)\" />\r\n                                                        </clipPath>\r\n                                                    </defs>\r\n                                                </svg></span>\r\n                                        </div>\r\n                                        <div class=\"img-doc-value\">Entry Time : {{(tempModalImage ||\r\n                                            selectImageArray)?.entryTme || (tempModalImage ||\r\n                                            selectImageArray)?.entryTime}}</div>\r\n                                    </div>\r\n                                    <div class=\"col-md-2 text-end py-3\">\r\n                                        <!-- Dynamic icon changes -->\r\n                                        <span *ngIf=\"getIconName(selectImageArray?.revopsType) as iconName\">\r\n                                            <span *ngIf=\"iconName === 'non-tagging'\"\r\n                                                ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\r\n                                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n                                                    viewBox=\"0 0 19 18\" fill=\"none\">\r\n                                                    <path\r\n                                                        d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\r\n                                                        stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                        stroke-linejoin=\"round\" />\r\n                                                </svg>\r\n                                            </span>\r\n                                            <span *ngIf=\"iconName ==='houseKeepingTag'\">\r\n                                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n                                                    viewBox=\"0 0 21 21\" fill=\"none\">\r\n                                                    <g clip-path=\"url(#clip0_2012_94643)\">\r\n                                                        <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n                                                            d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\r\n                                                            fill=\"#475467\" />\r\n                                                    </g>\r\n                                                    <defs>\r\n                                                        <clipPath id=\"clip0_2012_94643\">\r\n                                                            <rect width=\"21\" height=\"20\" fill=\"white\"\r\n                                                                transform=\"translate(0 0.686035)\" />\r\n                                                        </clipPath>\r\n                                                    </defs>\r\n                                                </svg>\r\n                                            </span>\r\n                                            <span *ngIf=\"iconName ==='junkTag'\">\r\n                                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n                                                    viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                                    <path\r\n                                                        d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\r\n                                                        stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                        stroke-linejoin=\"round\" />\r\n                                                </svg>\r\n                                            </span>\r\n                                            <!-- purple tag -->\r\n                                            <span *ngIf=\"iconName ==='purpleTag'\">\r\n                                                <svg width=\"18\" height=\"18\" viewBox=\"0 0 21 21\" fill=\"none\"\r\n                                                    xmlns=\"http://www.w3.org/2000/svg\">\r\n                                                    <path\r\n                                                        d=\"M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                                        fill=\"#EBE9FE\" />\r\n                                                    <path\r\n                                                        d=\"M5.66406 5.66663H5.67406M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                                        stroke=\"#7A5AF8\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n                                                        stroke-linejoin=\"round\" />\r\n                                                </svg>\r\n                                            </span>\r\n                                            <!-- orange tag -->\r\n                                            <span *ngIf=\"iconName ==='orangeTag'\">\r\n                                                <svg width=\"21\" height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\"\r\n                                                    xmlns=\"http://www.w3.org/2000/svg\">\r\n                                                    <path\r\n                                                        d=\"M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                                        fill=\"#FFEAD5\" />\r\n                                                    <path\r\n                                                        d=\"M5.66406 5.66663H5.67406M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                                        stroke=\"#FB6514\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n                                                        stroke-linejoin=\"round\" />\r\n                                                </svg>\r\n                                            </span>\r\n                                        </span>\r\n\r\n                                        <!-- <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='non-tagging'\"\r\n                                            ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\r\n                                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\r\n                                                viewBox=\"0 0 19 18\" fill=\"none\">\r\n                                                <path\r\n                                                    d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\r\n                                                    stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                    stroke-linejoin=\"round\" />\r\n                                            </svg>\r\n                                        </span> -->\r\n                                        <span *ngIf=\"selectImageArray?.revopsType ==='duplicate'\">\r\n                                            <svg *ngIf=\"selectImageArray?.isParent\" width=\"20\" height=\"21\"\r\n                                                viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                                                <g clip-path=\"url(#clip0_568_103657)\">\r\n                                                    <path\r\n                                                        d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\r\n                                                        stroke=\"#475467\" stroke-linecap=\"round\"\r\n                                                        stroke-linejoin=\"round\" />\r\n                                                </g>\r\n                                                <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\r\n                                                <defs>\r\n                                                    <clipPath id=\"clip0_568_103657\">\r\n                                                        <rect width=\"19\" height=\"18\" fill=\"white\" />\r\n                                                    </clipPath>\r\n                                                </defs>\r\n                                            </svg>\r\n                                            <svg *ngIf=\"!selectImageArray?.isParent\" xmlns=\"http://www.w3.org/2000/svg\"\r\n                                                width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\r\n                                                <g clip-path=\"url(#clip0_2012_94635)\">\r\n                                                    <path\r\n                                                        d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\r\n                                                        stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                        stroke-linejoin=\"round\" />\r\n                                                </g>\r\n                                                <defs>\r\n                                                    <clipPath id=\"clip0_2012_94635\">\r\n                                                        <rect width=\"20\" height=\"20\" fill=\"white\"\r\n                                                            transform=\"translate(0 0.686035)\" />\r\n                                                    </clipPath>\r\n                                                </defs>\r\n                                            </svg>\r\n                                        </span>\r\n                                        <!-- <span *ngIf=\"selectImageArray?.revopsType ==='employee'\">\r\n                                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n                                                viewBox=\"0 0 20 21\" fill=\"none\">\r\n                                                <g clip-path=\"url(#clip0_2012_94639)\">\r\n                                                    <path\r\n                                                        d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\r\n                                                        stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                        stroke-linejoin=\"round\" />\r\n                                                </g>\r\n                                                <defs>\r\n                                                    <clipPath id=\"clip0_2012_94639\">\r\n                                                        <rect width=\"20\" height=\"20\" fill=\"white\"\r\n                                                            transform=\"translate(0 0.686035)\" />\r\n                                                    </clipPath>\r\n                                                </defs>\r\n                                            </svg>\r\n                                        </span>\r\n                                        <span *ngIf=\"selectImageArray?.revopsType ==='houseKeeping'\">\r\n                                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\r\n                                                viewBox=\"0 0 21 21\" fill=\"none\">\r\n                                                <g clip-path=\"url(#clip0_2012_94643)\">\r\n                                                    <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n                                                        d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\r\n                                                        fill=\"#475467\" />\r\n                                                </g>\r\n                                                <defs>\r\n                                                    <clipPath id=\"clip0_2012_94643\">\r\n                                                        <rect width=\"21\" height=\"20\" fill=\"white\"\r\n                                                            transform=\"translate(0 0.686035)\" />\r\n                                                    </clipPath>\r\n                                                </defs>\r\n                                            </svg>\r\n                                        </span>\r\n                                        <span *ngIf=\"selectImageArray?.revopsType === 'junk'\">\r\n                                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\r\n                                                viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                                <path\r\n                                                    d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\r\n                                                    stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                    stroke-linejoin=\"round\" />\r\n                                            </svg>\r\n                                        </span> -->\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n\r\n                        <div class=\"col-md-6 p-2 mb-2  mt-5\">\r\n                            <!-- Tagging Not Available message when date exceeds restriction AND image was never mapped -->\r\n                            <div *ngIf=\"shouldBlockTagging()\" class=\"mx-2\">\r\n                                <div class=\"border-gray p-3\">\r\n                                    <div class=\"d-flex flex-column align-items-center justify-content-center text-center py-4\">\r\n                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n                                            stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"mb-3\">\r\n                                            <circle cx=\"12\" cy=\"12\" r=\"10\"></circle>\r\n                                            <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"></line>\r\n                                            <line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"></line>\r\n                                        </svg>\r\n                                        <div class=\"tagging-expired-title mb-2\">Tagging Not Available</div>\r\n                                        <div class=\"tagging-expired-message text-muted\">\r\n                                            Users can only tag entries from the last {{ allowTicketCreation }} days. Tagging is not\r\n                                            permitted for records older than {{ allowTicketCreation }} days from today.\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <div *ngIf=\"!shouldBlockTagging()\" class=\"mx-2 \">\r\n                                <div class=\"row\">\r\n                                    <div class=\"col-md-6 title-type\">\r\n                                        Select non-shopper type\r\n                                    </div>\r\n                                    <!-- <section class=\"col-md-6 text-end\"\r\n                                                            *ngIf=\"!(users?.role ==='user' && users?.userType ==='client' && selectedRadioType ==='junk')\"> -->\r\n                                    <section *ngIf=\"(this.users?.rolespermission[3].modules[0].isAdd && this.users?.rolespermission[3].modules[0].isEdit) || \r\n                                    (gs.userAccess | async)?.userType === 'tango'\" class=\"col-md-6 text-end\">\r\n\r\n                                        <div *ngIf=\"!revopsTypeValue\" class=\"mb-5 text-end\" role=\"group\">\r\n                                            <div\r\n                                                *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\">\r\n\r\n                                                <button [disabled]=\"\r\n                                                            (selectedRadioType === undefined || selectedRadioType === '') ||\r\n                                                            (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0) ||\r\n                                                            !canEnableSaveButton()\r\n                                                            \" class=\"btn btn-default\" type=\"button\"\r\n                                                    (click)=\"clearValue()\">Clear</button>\r\n                                                <button class=\"btn btn-outline me-2\" (click)=\"cancel()\">Cancel</button>\r\n                                                <!-- (selectedRadioType === undefined || selectedRadioType === '') ||\r\n                                                            (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0) ||\r\n                                                            !canEnableSaveButton() -->\r\n                                                <button class=\"btn btn-primary\" id=\"alert-toast\"\r\n                                                    (click)=\"save(selectedType)\"\r\n                                                    [disabled]=\"!canEnableSaveButton() || selectedDuplicateImagesList.length === 0\">\r\n                                                    save &amp; Close\r\n                                                </button>\r\n                                            </div>\r\n                                        </div>\r\n\r\n                                        <!-- <div *ngIf=\"!(users?.role ==='user' && users?.userType ==='client' && selectedRadioType ==='junk')\"> -->\r\n                                        <!-- <div *ngIf=\"selectedRadioType ==='junk'\"> -->\r\n                                        <ng-container *ngIf=\"editBtnShow\">\r\n                                            <div *ngIf=\"revopsTypeValue\" class=\"mb-5 text-end\" role=\"group\">\r\n                                                <button\r\n                                                    *ngIf=\"!getTicketStatuses().includes('open') && !getTicketStatuses().includes('closed')\"\r\n                                                    class=\"btn btn-outline me-2\" (click)=\"editValue(null)\"\r\n                                                    [disabled]=\"!canEnableSaveButton()\"><span class=\"me-2\"><svg\r\n                                                            xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n                                                            viewBox=\"0 0 20 20\" fill=\"none\">\r\n                                                            <path\r\n                                                                d=\"M14.6554 1.71047C14.8927 1.47315 15.1745 1.2849 15.4845 1.15646C15.7946 1.02802 16.1269 0.961914 16.4626 0.961914C16.7982 0.961914 17.1305 1.02802 17.4406 1.15646C17.7507 1.2849 18.0324 1.47315 18.2697 1.71047C18.5071 1.94779 18.6953 2.22953 18.8238 2.53961C18.9522 2.84969 19.0183 3.18202 19.0183 3.51765C19.0183 3.85327 18.9522 4.18561 18.8238 4.49568C18.6953 4.80576 18.5071 5.0875 18.2697 5.32482L6.0713 17.5233L1.10156 18.8786L2.45695 13.9089L14.6554 1.71047Z\"\r\n                                                                stroke=\"#344054\" stroke-width=\"1.81079\"\r\n                                                                stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                                        </svg></span>Edit</button>\r\n\r\n                                            </div>\r\n                                        </ng-container>\r\n                                        <!-- </div> -->\r\n                                    </section>\r\n\r\n                                </div>\r\n                                <div class=\"form-check my-15\">\r\n                                    <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"duplicate\"\r\n                                        id=\"duplicate\" [(ngModel)]=\"selectedType\" [value]=\"'duplicate'\"\r\n                                        (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue || isTaggingLimitExceed('duplicate')\">\r\n                                    <label class=\"form-check-label\" for=\"duplicate\">\r\n                                        <span class=\"ms-5\">\r\n                                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n                                                viewBox=\"0 0 20 21\" fill=\"none\">\r\n                                                <g clip-path=\"url(#clip0_2012_94635)\">\r\n                                                    <path\r\n                                                        d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\r\n                                                        stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                        stroke-linejoin=\"round\" />\r\n                                                </g>\r\n                                                <defs>\r\n                                                    <clipPath id=\"clip0_2012_94635\">\r\n                                                        <rect width=\"20\" height=\"20\" fill=\"white\"\r\n                                                            transform=\"translate(0 0.686035)\" />\r\n                                                    </clipPath>\r\n                                                </defs>\r\n                                            </svg>\r\n                                        </span>\r\n                                        <span class=\"ms-5 tag-class\">Duplicate</span>\r\n                                    </label>\r\n                                </div>\r\n                                <div class=\"form-check my-15\">\r\n                                    <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"employee\"\r\n                                        id=\"employee\" [(ngModel)]=\"selectedType\" [value]=\"'employee'\"\r\n                                        (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue || isTaggingLimitExceed('employee')\">\r\n                                    <label class=\"form-check-label\" for=\"employee\">\r\n                                        <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n                                                height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\r\n                                                <g clip-path=\"url(#clip0_2012_94639)\">\r\n                                                    <path\r\n                                                        d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\r\n                                                        stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                        stroke-linejoin=\"round\" />\r\n                                                </g>\r\n                                                <defs>\r\n                                                    <clipPath id=\"clip0_2012_94639\">\r\n                                                        <rect width=\"20\" height=\"20\" fill=\"white\"\r\n                                                            transform=\"translate(0 0.686035)\" />\r\n                                                    </clipPath>\r\n                                                </defs>\r\n                                            </svg></span>\r\n                                        <span class=\"ms-5 tag-class\">Employee/Staff</span>\r\n                                    </label>\r\n                                </div>\r\n                                <!-- Dynamic radio buttons based on configIconList 1 -->\r\n                                <div class=\"form-check my-15\"\r\n                                    *ngFor=\"let configItem of getDynamicConfigIcons(); let i = index\">\r\n                                    <input class=\"form-check-input cursor-pointer\" type=\"radio\"\r\n                                        name=\"dynamic-radio-modal\" [id]=\"configItem?.type + '-modal'\"\r\n                                        [(ngModel)]=\"selectedType\" [value]=\"configItem?.type\"\r\n                                        (change)=\"onRadioChange(selectedType)\"\r\n                                        [disabled]=\"(configItem?.type === 'junk' && users?.role ==='user' && users?.userType ==='client') || revopsTypeValue || isTaggingLimitExceed(configItem?.type)\">\r\n                                    <label class=\"form-check-label\" [for]=\"configItem?.type + '-modal'\">\r\n                                        <span class=\"ms-5\">\r\n                                            <ng-container [ngSwitch]=\"getIconName(configItem?.type)\">\r\n                                                <!-- houseKeepingTag icon -->\r\n                                                <svg *ngSwitchCase=\"'houseKeepingTag'\"\r\n                                                    xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\r\n                                                    viewBox=\"0 0 21 21\" fill=\"none\">\r\n                                                    <g\r\n                                                        [attr.clip-path]=\"'url(#clip0_dynamic_modal_' + configItem?.type + '_' + i + ')'\">\r\n                                                        <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n                                                            d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\r\n                                                            fill=\"#475467\" />\r\n                                                    </g>\r\n                                                    <defs>\r\n                                                        <clipPath\r\n                                                            [attr.id]=\"'clip0_dynamic_modal_' + configItem?.type + '_' + i\">\r\n                                                            <rect width=\"21\" height=\"20\" fill=\"white\"\r\n                                                                transform=\"translate(0 0.686035)\" />\r\n                                                        </clipPath>\r\n                                                    </defs>\r\n                                                </svg>\r\n                                                <!-- junkTag icon -->\r\n                                                <svg *ngSwitchCase=\"'junkTag'\" xmlns=\"http://www.w3.org/2000/svg\"\r\n                                                    width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                                    <path\r\n                                                        d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\r\n                                                        stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                        stroke-linejoin=\"round\" />\r\n                                                </svg>\r\n                                                <!-- purpleTag icon -->\r\n                                                <svg *ngSwitchCase=\"'purpleTag'\" width=\"18\" height=\"18\"\r\n                                                    viewBox=\"0 0 21 21\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                                                    <path\r\n                                                        d=\"M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                                        fill=\"#EBE9FE\" />\r\n                                                    <path\r\n                                                        d=\"M5.66406 5.66663H5.67406M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                                        stroke=\"#7A5AF8\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n                                                        stroke-linejoin=\"round\" />\r\n                                                </svg>\r\n                                                <!-- orangeTag icon -->\r\n                                                <svg *ngSwitchCase=\"'orangeTag'\" width=\"21\" height=\"21\"\r\n                                                    viewBox=\"0 0 21 21\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                                                    <path\r\n                                                        d=\"M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                                        fill=\"#FFEAD5\" />\r\n                                                    <path\r\n                                                        d=\"M5.66406 5.66663H5.67406M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                                        stroke=\"#FB6514\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n                                                        stroke-linejoin=\"round\" />\r\n                                                </svg>\r\n                                                <!-- Default icon (if iconName doesn't match) -->\r\n                                                <svg *ngSwitchDefault xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n                                                    height=\"18\" fill=\"none\" viewBox=\"0 0 24 24\">\r\n                                                    <path\r\n                                                        d=\"M20.7071 13.2929L11.4142 4H4V11.4142L13.2929 20.7071C13.6834 21.0976 14.3166 21.0976 14.7071 20.7071L20.7071 14.7071C21.0976 14.3166 21.0976 13.6834 20.7071 13.2929Z\"\r\n                                                        stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n                                                        stroke-linejoin=\"round\" />\r\n                                                    <path d=\"M7 7H7.01\" stroke=\"currentColor\" stroke-width=\"1.5\"\r\n                                                        stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                                </svg>\r\n                                            </ng-container>\r\n                                        </span>\r\n                                        <span class=\"ms-5 tag-class\">{{ configItem?.name }}</span>\r\n                                    </label>\r\n                                </div>\r\n\r\n                                <!-- ============================================ -->\r\n                                <!-- OLD STATIC RADIO BUTTONS (COMMENTED OUT) -->\r\n                                <!-- ============================================ -->\r\n                                <!-- \r\n                            <div class=\"form-check my-15\">\r\n                                <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"house-keeping\"\r\n                                    id=\"house-keeping\" [(ngModel)]=\"selectedType\" [value]=\"'houseKeeping'\"\r\n                                    (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\">\r\n                                <label class=\"form-check-label\" for=\"house-keeping\">\r\n                                    <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\"\r\n                                            height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\">\r\n                                            <g clip-path=\"url(#clip0_2012_94643)\">\r\n                                                <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n                                                    d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\r\n                                                    fill=\"#475467\" />\r\n                                            </g>\r\n                                            <defs>\r\n                                                <clipPath id=\"clip0_2012_94643\">\r\n                                                    <rect width=\"21\" height=\"20\" fill=\"white\"\r\n                                                        transform=\"translate(0 0.686035)\" />\r\n                                                </clipPath>\r\n                                            </defs>\r\n                                        </svg></span>\r\n                                    <span class=\"ms-5 tag-class\"> House Keeping</span>\r\n                                </label>\r\n                            </div>\r\n                            <div class=\"form-check my-15\">\r\n                                <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"junk\" id=\"junk\"\r\n                                    [(ngModel)]=\"selectedType\" [value]=\"'junk'\"\r\n                                    (change)=\"onRadioChange(selectedType)\"\r\n                                    [disabled]=\"users?.role ==='user' && this.users?.userType ==='client' || revopsTypeValue\">\r\n                                <label class=\"form-check-label\" for=\"junk\">\r\n                                    <span class=\"ms-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\r\n                                            height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                            <path\r\n                                                d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\r\n                                                stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                stroke-linejoin=\"round\" />\r\n                                        </svg></span>\r\n                                    <span class=\"ms-5 tag-class\"> Junk</span>\r\n                                </label>\r\n                            </div>\r\n                            -->\r\n                                <!-- ============================================ -->\r\n                                <!-- END OF OLD STATIC RADIO BUTTONS -->\r\n                                <!-- ============================================ -->\r\n                                 <!-- comments -->\r\n                                <!-- <div class=\"mt-3\" *ngIf=\"showComments || selectedType === ''\"> -->\r\n                                <!-- <div class=\"mt-3\">\r\n                                    <label class=\"form-label\">Remarks (Optional)</label>\r\n                                    <textarea class=\"form-control\" rows=\"3\" placeholder=\"Comment here\"\r\n                                        [(ngModel)]=\"userImgComment\"></textarea>\r\n                                </div> -->\r\n                                <!-- <div class=\"mt-3\" *ngIf=\"!showComments && selectedType !== ''\"> -->\r\n                                <!-- <div class=\"mt-3\">\r\n                                    <p><b>Remarks :</b> {{selectImageArray?.comments}}</p>\r\n                                </div> -->\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n\r\n\r\n                    <div class=\"row px-0 img-traffic mt-3 high-400px scroll-y\">\r\n                        <div class=\"col-md-3 border-gray mx-2 p-2 mt-5\" *ngFor=\"let obj of remainingImageArray\">\r\n                            <div class=\"position-relative\">\r\n                                <input *ngIf=\"!revopsTypeValue && selectedRadioType === 'duplicate'\" type=\"checkbox\"\r\n                                    [checked]=\"obj.selected\"\r\n                                    class=\"position-absolute absolute form-check-input cursor-pointer\"\r\n                                    (change)=\"onImageCheckboxChange($event, obj, 'duplicate')\"\r\n                                    [disabled]=\"obj.duplicateImagePath?.length > 0\" />\r\n                                <img class=\"img-src\"\r\n                                    [ngClass]=\"selectedRadioType !== 'duplicate' ? 'cursor-pointer' : 'cursor-pointer'\"\r\n                                    [src]=\"imageUrl + obj?.filePath\" (error)=\"obj.filePath = null\" alt=\"\"\r\n                                    (click)=\"handleImageClick($event, obj, true)\" />\r\n\r\n                                <div *ngIf=\"!obj?.filePath\" class=\"no-preview\">\r\n                                    <span class=\"mb-5\">\r\n                                        <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\r\n                                            xmlns=\"http://www.w3.org/2000/svg\">\r\n                                            <g id=\"Group\">\r\n                                                <path id=\"Vector\"\r\n                                                    d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\r\n                                                    stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                    stroke-linejoin=\"round\" />\r\n                                                <path id=\"Vector_2\"\r\n                                                    d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\r\n                                                    stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                    stroke-linejoin=\"round\" />\r\n                                            </g>\r\n                                        </svg>\r\n\r\n                                    </span>\r\n                                    <span class=\"header mb-5 text-center\">Preview not available</span>\r\n                                    <span class=\"description mb-5 text-center\">The selected camera is not available at\r\n                                        the\r\n                                        moment.</span>\r\n                                </div>\r\n                                <div class=\"row px-2 mb-2\">\r\n                                    <div class=\"col-md-10\">\r\n                                        <div class=\"py-2 img-doc-time\">Tango ID : {{obj?.templd ? obj?.templd :\r\n                                            obj?.tempId}}\r\n                                            <span *ngIf=\"obj?.status ==='approved'\" class=\"ms-2\"><svg style=\"width: 20px;\r\n    height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\r\n                                                    <rect y=\"0.5\" width=\"19\" height=\"18\" rx=\"5\" fill=\"#D1FADF\" />\r\n                                                    <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n                                                        d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\r\n                                                        fill=\"#12B76A\" />\r\n                                                </svg></span>\r\n                                            <span *ngIf=\"obj?.status ==='rejected'\" class=\"ms-2\"><svg style=\"width: 20px;\r\n    height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\r\n                                                    <g clip-path=\"url(#clip0_1428_59484)\">\r\n                                                        <path\r\n                                                            d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\r\n                                                            fill=\"#FEE4E2\" />\r\n                                                        <path\r\n                                                            d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\r\n                                                            stroke=\"#D92D20\" stroke-linecap=\"round\"\r\n                                                            stroke-linejoin=\"round\" />\r\n                                                    </g>\r\n                                                    <defs>\r\n                                                        <clipPath id=\"clip0_1428_59484\">\r\n                                                            <rect width=\"12\" height=\"12\" fill=\"white\"\r\n                                                                transform=\"translate(0.599609 0.5)\" />\r\n                                                        </clipPath>\r\n                                                    </defs>\r\n                                                </svg></span>\r\n                                        </div>\r\n                                        <div class=\"img-doc-value\">Entry Time : {{obj?.entryTme ? obj?.entryTme\r\n                                            :obj?.entryTime}}</div>\r\n                                    </div>\r\n                                    <div class=\"col-md-2 text-end py-3\">\r\n                                        <span *ngIf=\"getIconName(obj?.revopsType) as iconName\">\r\n                                            <span *ngIf=\"iconName === 'non-tagging'\"\r\n                                                ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\r\n                                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n                                                    viewBox=\"0 0 19 18\" fill=\"none\">\r\n                                                    <path\r\n                                                        d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\r\n                                                        stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                        stroke-linejoin=\"round\" />\r\n                                                </svg>\r\n                                            </span>\r\n                                            <span *ngIf=\"iconName ==='houseKeepingTag'\">\r\n                                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n                                                    viewBox=\"0 0 21 21\" fill=\"none\">\r\n                                                    <g clip-path=\"url(#clip0_2012_94643)\">\r\n                                                        <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n                                                            d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\r\n                                                            fill=\"#475467\" />\r\n                                                    </g>\r\n                                                    <defs>\r\n                                                        <clipPath id=\"clip0_2012_94643\">\r\n                                                            <rect width=\"21\" height=\"20\" fill=\"white\"\r\n                                                                transform=\"translate(0 0.686035)\" />\r\n                                                        </clipPath>\r\n                                                    </defs>\r\n                                                </svg>\r\n                                            </span>\r\n                                            <span *ngIf=\"iconName ==='junkTag'\">\r\n                                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n                                                    viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                                    <path\r\n                                                        d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\r\n                                                        stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                        stroke-linejoin=\"round\" />\r\n                                                </svg>\r\n                                            </span>\r\n                                            <!-- purple tag -->\r\n                                            <span *ngIf=\"iconName ==='purpleTag'\">\r\n                                                <svg width=\"18\" height=\"18\" viewBox=\"0 0 21 21\" fill=\"none\"\r\n                                                    xmlns=\"http://www.w3.org/2000/svg\">\r\n                                                    <path\r\n                                                        d=\"M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                                        fill=\"#EBE9FE\" />\r\n                                                    <path\r\n                                                        d=\"M5.66406 5.66663H5.67406M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                                        stroke=\"#7A5AF8\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n                                                        stroke-linejoin=\"round\" />\r\n                                                </svg>\r\n                                            </span>\r\n                                            <!-- orange tag -->\r\n                                            <span *ngIf=\"iconName ==='orangeTag'\">\r\n                                                <svg width=\"21\" height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\"\r\n                                                    xmlns=\"http://www.w3.org/2000/svg\">\r\n                                                    <path\r\n                                                        d=\"M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                                        fill=\"#FFEAD5\" />\r\n                                                    <path\r\n                                                        d=\"M5.66406 5.66663H5.67406M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                                        stroke=\"#FB6514\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n                                                        stroke-linejoin=\"round\" />\r\n                                                </svg>\r\n                                            </span>\r\n                                        </span>\r\n                                        <!-- <span *ngIf=\"obj?.revopsType ==='non-tagging'\"\r\n                                            ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\r\n                                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\"\r\n                                                viewBox=\"0 0 19 18\" fill=\"none\">\r\n                                                <path\r\n                                                    d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\r\n                                                    stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                    stroke-linejoin=\"round\" />\r\n                                            </svg>\r\n                                        </span> -->\r\n                                        <span *ngIf=\"obj?.revopsType ==='duplicate'\">\r\n                                            <svg *ngIf=\"obj?.isParent\" width=\"20\" height=\"21\" viewBox=\"0 0 10 10\"\r\n                                                fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                                                <g clip-path=\"url(#clip0_568_103657)\">\r\n                                                    <path\r\n                                                        d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\r\n                                                        stroke=\"#475467\" stroke-linecap=\"round\"\r\n                                                        stroke-linejoin=\"round\" />\r\n                                                </g>\r\n                                                <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\r\n                                                <defs>\r\n                                                    <clipPath id=\"clip0_568_103657\">\r\n                                                        <rect width=\"19\" height=\"18\" fill=\"white\" />\r\n                                                    </clipPath>\r\n                                                </defs>\r\n                                            </svg>\r\n                                            <svg *ngIf=\"!obj?.isParent\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n                                                height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\r\n                                                <g clip-path=\"url(#clip0_2012_94635)\">\r\n                                                    <path\r\n                                                        d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\r\n                                                        stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                        stroke-linejoin=\"round\" />\r\n                                                </g>\r\n                                                <defs>\r\n                                                    <clipPath id=\"clip0_2012_94635\">\r\n                                                        <rect width=\"20\" height=\"20\" fill=\"white\"\r\n                                                            transform=\"translate(0 0.686035)\" />\r\n                                                    </clipPath>\r\n                                                </defs>\r\n                                            </svg>\r\n                                        </span>\r\n                                        <span *ngIf=\"obj?.revopsType ==='employee'\">\r\n                                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\"\r\n                                                viewBox=\"0 0 20 21\" fill=\"none\">\r\n                                                <g clip-path=\"url(#clip0_2012_94639)\">\r\n                                                    <path\r\n                                                        d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\r\n                                                        stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                        stroke-linejoin=\"round\" />\r\n                                                </g>\r\n                                                <defs>\r\n                                                    <clipPath id=\"clip0_2012_94639\">\r\n                                                        <rect width=\"20\" height=\"20\" fill=\"white\"\r\n                                                            transform=\"translate(0 0.686035)\" />\r\n                                                    </clipPath>\r\n                                                </defs>\r\n                                            </svg>\r\n                                        </span>\r\n                                        <!-- <span *ngIf=\"obj?.revopsType ==='houseKeeping'\">\r\n                                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\"\r\n                                                viewBox=\"0 0 21 21\" fill=\"none\">\r\n                                                <g clip-path=\"url(#clip0_2012_94643)\">\r\n                                                    <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n                                                        d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\r\n                                                        fill=\"#475467\" />\r\n                                                </g>\r\n                                                <defs>\r\n                                                    <clipPath id=\"clip0_2012_94643\">\r\n                                                        <rect width=\"21\" height=\"20\" fill=\"white\"\r\n                                                            transform=\"translate(0 0.686035)\" />\r\n                                                    </clipPath>\r\n                                                </defs>\r\n                                            </svg>\r\n                                        </span>\r\n                                        <span *ngIf=\"obj?.revopsType ==='junk'\">\r\n                                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n                                                viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                                <path\r\n                                                    d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\r\n                                                    stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                    stroke-linejoin=\"round\" />\r\n                                            </svg>\r\n                                        </span> -->\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n\r\n                </div>\r\n            </section>\r\n        </div>\r\n    </section>\r\n</div>\r\n\r\n\r\n<ng-template #zoomPopup let-model>\r\n    <div class=\"p-4 m-4\">\r\n        <div class=\"modal-header border-0 p-0 w-100 flex-column align-items-start\">\r\n            <span *ngIf=\"popupType === 'non-tagging'\" class=\"my-3\">\r\n\r\n                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\r\n                    <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\r\n                    <g clip-path=\"url(#clip0_2088_98337)\">\r\n                        <path\r\n                            d=\"M29.1693 13.3333V18.3333M29.1693 18.3333H24.1693M29.1693 18.3333L25.3026 14.7C24.407 13.8039 23.299 13.1493 22.0819 12.7973C20.8649 12.4453 19.5785 12.4073 18.3428 12.6869C17.1072 12.9665 15.9624 13.5545 15.0155 14.3962C14.0685 15.2378 13.3502 16.3056 12.9276 17.5M10.8359 26.6666V21.6666M10.8359 21.6666H15.8359M10.8359 21.6666L14.7026 25.3C15.5982 26.1961 16.7062 26.8506 17.9233 27.2027C19.1403 27.5547 20.4267 27.5927 21.6624 27.3131C22.898 27.0335 24.0428 26.4455 24.9897 25.6038C25.9367 24.7621 26.655 23.6943 27.0776 22.5\"\r\n                            stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                    </g>\r\n                    <defs>\r\n                        <clipPath id=\"clip0_2088_98337\">\r\n                            <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(10 10)\" />\r\n                        </clipPath>\r\n                    </defs>\r\n                </svg>\r\n            </span>\r\n            <!-- Heading -->\r\n            <h5 class=\"modal-title mb-2\">\r\n                <span *ngIf=\"popupType === 'employee'\">Tagging as employee/staff </span>\r\n                <span *ngIf=\"popupType === 'duplicate'\">Tagging as duplicates </span>\r\n                <span *ngIf=\"popupType === 'non-tagging'\">Clear duplicates</span>\r\n                <!-- Dynamic popup messages based on configIconList -->\r\n                <span *ngIf=\"isDynamicPopupType(popupType)\">Tagging as {{ getDynamicPopupName(popupType) | titlecase }}\r\n                </span>\r\n            </h5>\r\n            <p class=\"mb-3\">\r\n                <span *ngIf=\"popupType === 'employee'\">Are you sure you want to tag this as employee/staff?</span>\r\n                <span *ngIf=\"popupType === 'duplicate'\">Are you sure you want to tag this as duplicates? </span>\r\n                <span *ngIf=\"popupType === 'non-tagging'\">This will remove tagged duplicates and move them to\r\n                    'Non-tag'.</span>\r\n                <!-- Dynamic popup messages based on configIconList -->\r\n                <span *ngIf=\"isDynamicPopupType(popupType)\">Are you sure you want to tag this as {{\r\n                    getDynamicPopupName(popupType) | titlecase }}?</span>\r\n            </p>\r\n        </div>\r\n\r\n        <div class=\"w-100 mt-5 d-flex justify-content-end\">\r\n            <button class=\"btn btn-outline me-2\" (click)=\"cancelSubmit()\">Cancel</button>\r\n            <button *ngIf=\"popupType !== 'non-tagging'\" class=\"btn btn-primary\" (click)=\"submitValue(popupType)\">\r\n                Yes, Tag\r\n            </button>\r\n            <button *ngIf=\"popupType === 'non-tagging'\" class=\"btn btn-primary\" (click)=\"submitValue(popupType)\">\r\n                Yes, clear\r\n            </button>\r\n        </div>\r\n    </div>\r\n</ng-template>\r\n\r\n\r\n<ng-template #raisedPopup let-model>\r\n    <div class=\"p-4 m-4\">\r\n        <div class=\"modal-header border-0 p-0 w-100 flex-column align-items-start\">\r\n            <span class=\"my-3\">\r\n\r\n                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\r\n                    <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\r\n                    <path\r\n                        d=\"M21.251 11.0806C21.7405 11.0699 22.2153 11.2487 22.5762 11.5796L23.4922 12.4204C23.8089 12.7097 23.893 13.1017 23.8652 13.4263V13.4272C23.836 13.7478 23.6954 14.0592 23.4785 14.2944C23.3699 14.413 23.2865 14.5525 23.2314 14.7036C23.1764 14.8548 23.1512 15.0155 23.1582 15.1763C23.1652 15.337 23.2035 15.4953 23.2715 15.6411C23.3394 15.7869 23.4362 15.9172 23.5547 16.0259C23.6733 16.1346 23.8117 16.2198 23.9629 16.2749C24.1141 16.33 24.2748 16.3541 24.4355 16.3472C24.5961 16.3402 24.7537 16.3017 24.8994 16.2339C25.0089 16.1829 25.1106 16.116 25.2002 16.0356L25.3701 15.8657C25.5759 15.6748 25.8385 15.5408 26.1152 15.4907C26.2972 15.4546 26.485 15.4617 26.6641 15.5103C26.8439 15.5591 27.0103 15.649 27.1494 15.7729L27.1514 15.7749L28.2598 16.7905C28.445 16.9605 28.5948 17.1658 28.7002 17.394C28.8056 17.6223 28.8648 17.8694 28.874 18.1206C28.8832 18.372 28.8423 18.6234 28.7539 18.8589C28.6655 19.0941 28.5316 19.3096 28.3594 19.4927L20.1113 28.2583C19.937 28.4434 19.7268 28.5912 19.4941 28.6938C19.2614 28.7965 19.0102 28.8522 18.7559 28.856C18.5016 28.8597 18.2493 28.8119 18.0137 28.7163C17.7779 28.6206 17.5636 28.4784 17.3838 28.2983L16.2539 27.1685C15.7511 26.6656 15.8832 25.9552 16.1514 25.5542L16.2061 25.4644C16.3241 25.2486 16.3742 25.0008 16.3496 24.7544C16.3214 24.4731 16.197 24.2102 15.9971 24.0103C15.7971 23.8103 15.5343 23.6859 15.2529 23.6577C14.9715 23.6297 14.6887 23.6995 14.4531 23.856H14.4521C14.0494 24.1222 13.3407 24.2552 12.8379 23.7515L11.6797 22.5933C11.5034 22.4169 11.364 22.2074 11.2686 21.9771C11.1731 21.7467 11.1231 21.4999 11.123 21.2505C11.123 21.001 11.1731 20.7535 11.2686 20.5229C11.364 20.2926 11.5034 20.0831 11.6797 19.9067L19.9492 11.6362C20.2954 11.2902 20.7616 11.0912 21.251 11.0806ZM21.2783 12.3804C21.1237 12.3838 20.9765 12.4468 20.8672 12.5562L12.5967 20.8257C12.5409 20.8814 12.497 20.9482 12.4668 21.021C12.4367 21.0938 12.4209 21.1717 12.4209 21.2505C12.4209 21.3292 12.4367 21.4073 12.4668 21.48C12.497 21.5528 12.541 21.6196 12.5967 21.6753L13.7061 22.7837L13.7314 22.772C14.2169 22.4485 14.7993 22.3035 15.3799 22.3608C15.9608 22.4183 16.5042 22.6747 16.917 23.0874C17.3298 23.5002 17.587 24.0436 17.6445 24.6245C17.702 25.2055 17.5565 25.7892 17.2324 26.2749L17.2305 26.2759C17.2261 26.2822 17.2226 26.2893 17.2197 26.2964L18.3018 27.3804C18.3585 27.4372 18.4266 27.482 18.501 27.5122C18.5755 27.5425 18.6559 27.5574 18.7363 27.5562C18.8166 27.5549 18.8963 27.5378 18.9697 27.5054C19.043 27.4729 19.1091 27.4261 19.1641 27.3677L27.4131 18.6021C27.4673 18.5442 27.5093 18.4761 27.5371 18.4019C27.5649 18.3276 27.5781 18.2487 27.5752 18.1694C27.5722 18.0902 27.5538 18.0119 27.5205 17.9399C27.4872 17.8679 27.4394 17.8032 27.3809 17.7495L26.3223 16.7778C26.2925 16.7885 26.2648 16.8053 26.2432 16.8286C26.0217 17.0788 25.7529 17.2827 25.4521 17.4282C25.15 17.5743 24.8214 17.6585 24.4863 17.6763C24.1511 17.694 23.815 17.6452 23.499 17.5317C23.1832 17.4183 22.8928 17.2429 22.6455 17.0161C22.3982 16.7893 22.1988 16.5153 22.0586 16.2104C21.9183 15.9055 21.8404 15.5752 21.8291 15.2397C21.8178 14.9043 21.8737 14.57 21.9932 14.2563C22.1121 13.9442 22.2915 13.6587 22.5215 13.4165L22.5547 13.3657C22.5594 13.3552 22.5607 13.3437 22.5635 13.3325L21.6973 12.5386V12.5376C21.5833 12.4331 21.4329 12.377 21.2783 12.3804Z\"\r\n                        fill=\"#00A3FF\" stroke=\"#00A3FF\" stroke-width=\"0.3\" />\r\n                </svg>\r\n            </span>\r\n            <!-- Heading -->\r\n            <h5 class=\"modal-title mb-2\">\r\n                <span>Raise tickets for the following</span>\r\n\r\n            </h5>\r\n            <p class=\"mb-3\">\r\n                <span>Raising a ticket for footfall count issues. Make sure all records are identified for\r\n                    validation.</span>\r\n\r\n\r\n            </p>\r\n        </div>\r\n        <div class=\"row\">\r\n            <div class=\"col-md-3 my-4\" *ngFor=\"let item of configIconList\">\r\n                <div class=\"border border-1 rounded p-3 h-100\">\r\n                    <div class=\"fw-semibold fs-5 mb-2\">\r\n                        {{getCount(item?.type) }}\r\n                    </div>\r\n                    <div class=\"fw-semibold text-muted fs-6 mt-2\">\r\n                        {{item?.name}}\r\n                    </div>\r\n                </div>\r\n            </div>\r\n\r\n\r\n\r\n            <!-- Dynamic types from configIconList (excluding duplicate and employee) -->\r\n            <!-- <ng-container *ngIf=\"configIconList && configIconList.length > 0\">\r\n                <div class=\"col-md-3 my-4\" *ngFor=\"let configItem of configIconList\">\r\n                    <ng-container *ngIf=\"configItem?.type && configItem?.type !== 'duplicate' && configItem?.type !== 'employee'\">\r\n                        <div class=\"border border-1 rounded p-3 h-100\">\r\n                            <div class=\"fw-semibold fs-5 mb-2\">\r\n                                {{getRaisedPayloadCount(configItem.type)}}\r\n                            </div>\r\n                            <div class=\"fw-semibold text-muted fs-6 mt-2\">\r\n                                {{configItem?.name || configItem?.type}}\r\n                            </div>\r\n                        </div>\r\n                    </ng-container>\r\n                </div>\r\n            </ng-container> -->\r\n        </div>\r\n\r\n        <!-- Label and Textarea -->\r\n        <div class=\"my-3\">\r\n            <label class=\"form-label\">Description (Optional)</label>\r\n            <textarea rows=\"3\" [(ngModel)]=\"commentText\" class=\"form-control\"\r\n                placeholder=\"Enter description\"></textarea>\r\n        </div>\r\n        <div class=\"w-100 mt-5 d-flex justify-content-end\">\r\n\r\n            <button class=\"btn btn-outline w-50 me-2\" (click)=\"cancelRasied()\">Cancel</button>\r\n            <button class=\"btn btn-primary w-50\" (click)=\"submitRaised()\">\r\n                Raise Ticket\r\n            </button>\r\n        </div>\r\n    </div>\r\n</ng-template>\r\n\r\n<!-- Separate duplicate parent popup (child duplicate flow) -->\r\n<ng-template #duplicateParentPopup let-modal>\r\n    <div class=\"duplicate-parent-modal p-5\">\r\n        <div class=\"duplicate-parent-header d-flex justify-content-between align-items-center\">\r\n            <div>\r\n                <div class=\"duplicate-parent-title mb-1\">\r\n                    Tango ID : {{ duplicateParentContext?.templd || duplicateParentContext?.tempId }}\r\n                </div>\r\n                <div class=\"duplicate-parent-subtitle\">\r\n                    Entry Time : {{ duplicateParentContext?.entryTme || duplicateParentContext?.entryTime }}\r\n                </div>\r\n            </div>\r\n            <div class=\"d-flex align-items-center gap-3\">\r\n                <svg *ngIf=\"duplicateParentContext?.isParent\" width=\"16\" height=\"16\" viewBox=\"0 0 10 10\" fill=\"none\"\r\n                    xmlns=\"http://www.w3.org/2000/svg\">\r\n                    <g clip-path=\"url(#clip0_568_103657)\">\r\n                        <path\r\n                            d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\r\n                            stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                    </g>\r\n                    <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\r\n                    <defs>\r\n                        <clipPath id=\"clip0_568_103657\">\r\n                            <rect width=\"19\" height=\"18\" fill=\"white\" />\r\n                        </clipPath>\r\n                    </defs>\r\n                </svg>\r\n                <button type=\"button\" style=\"transform: scale(1.15);\" class=\"btn-close\" aria-label=\"Close\"\r\n                    (click)=\"closeDuplicateParentPopup(modal)\"></button>\r\n            </div>\r\n        </div>\r\n\r\n        <div class=\"duplicate-parent-main-image mb-4\">\r\n            <img [src]=\"imageUrl + duplicateParentContext?.filePath\" (error)=\"duplicateParentContext.filePath = null\"\r\n                alt=\"Parent image\" />\r\n        </div>\r\n\r\n        <div class=\"duplicate-parent-content\">\r\n            <div class=\"row\">\r\n\r\n                <div class=\"col-md-6\">\r\n                    <div class=\"mb-2 fs-3 fw-semibold\">Non-shopper</div>\r\n                    <div class=\"mb-2 text-muted small\">\r\n                        Select the non-shopper type for this ID.\r\n                    </div>\r\n                </div>\r\n\r\n                <!-- save options -->\r\n                <div class=\"col-md-6 text-end\">\r\n                    <div class=\"mb-2 d-flex justify-content-end align-items-center gap-2\">\r\n                        <div *ngIf=\"!isDuplicateParentEditMode\" class=\"d-flex align-items-center gap-2\">\r\n                            <button\r\n                                [disabled]=\"!canEnableSaveButton()\"\r\n                                class=\"btn btn-clear-tag d-inline-flex align-items-center justify-content-center\"\r\n                                type=\"button\" (click)=\"clearValue()\">\r\n                                <svg width=\"40\" height=\"40\" viewBox=\"0 0 49 49\" fill=\"none\"\r\n                                    xmlns=\"http://www.w3.org/2000/svg\">\r\n                                    <g filter=\"url(#filter0_d_516_96841)\">\r\n                                        <rect x=\"2.16797\" y=\"1.08447\" width=\"44.0342\" height=\"44.0284\" rx=\"8.67445\"\r\n                                            fill=\"#FEF3F2\" />\r\n                                        <rect x=\"2.71012\" y=\"1.62663\" width=\"42.9499\" height=\"42.9441\" rx=\"8.13229\"\r\n                                            stroke=\"#FEF3F2\" stroke-width=\"1.08431\" />\r\n                                        <path\r\n                                            d=\"M33.4893 21.3613L33.4912 21.3643C34.0533 21.9297 34.369 22.6949 34.3691 23.4922C34.3691 24.2895 34.0533 25.0546 33.4912 25.6201L26.7256 32.3857C26.4454 32.6661 26.1122 32.8882 25.7461 33.04C25.3798 33.1919 24.9873 33.2705 24.5908 33.2705C24.1942 33.2705 23.801 33.1919 23.4346 33.04C23.0686 32.8883 22.7361 32.6659 22.4561 32.3857L20.7676 30.6992L22.3682 29.0986L24.0557 30.7842L24.0566 30.7852C24.1267 30.8553 24.2102 30.9112 24.3018 30.9492C24.3933 30.9872 24.4917 31.0068 24.5908 31.0068C24.6899 31.0068 24.7883 30.9872 24.8799 30.9492C24.9713 30.9113 25.0541 30.8552 25.124 30.7852H25.125L31.8877 24.0215C32.0267 23.8804 32.1055 23.6903 32.1055 23.4922C32.1054 23.2941 32.0267 23.1039 31.8877 22.9629L30.1963 21.2715L31.7979 19.6699L33.4893 21.3613ZM24.6982 12.9336C24.9571 12.9594 25.2011 13.0733 25.3867 13.2588L30.1973 18.0693L28.5957 19.6709L24.1162 15.1914H16.2852V23.0225L20.7666 27.499L19.166 29.0996L14.3535 24.293C14.1411 24.0807 14.0215 23.7925 14.0215 23.4922V14.0596C14.0217 13.4346 14.5283 12.9277 15.1533 12.9277H24.5859L24.6982 12.9336ZM19.8789 17.6436C20.5038 17.6436 21.0103 18.1506 21.0107 18.7754C21.0107 19.4005 20.504 19.9082 19.8789 19.9082H19.8691C19.2442 19.908 18.7373 19.4004 18.7373 18.7754C18.7378 18.1508 19.2445 17.6438 19.8691 17.6436H19.8789Z\"\r\n                                            fill=\"#B42318\" />\r\n                                        <path d=\"M33.1699 14.0845L15.1699 32.0845\" stroke=\"#B42318\" stroke-width=\"2\"\r\n                                            stroke-linecap=\"round\" />\r\n                                    </g>\r\n                                    <defs>\r\n                                        <filter id=\"filter0_d_516_96841\" x=\"-0.000643253\" y=\"0.000166655\"\r\n                                            width=\"48.3724\" height=\"48.3655\" 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.08431\" />\r\n                                            <feGaussianBlur stdDeviation=\"1.08431\" />\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_516_96841\" />\r\n                                            <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_516_96841\"\r\n                                                result=\"shape\" />\r\n                                        </filter>\r\n                                    </defs>\r\n                                </svg>\r\n                            </button>\r\n                            <button class=\"btn btn-outline\" (click)=\"editDuplicateParent()\"\r\n                                [disabled]=\"!canEnableSaveButton()\">\r\n                                <span 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                                        <path\r\n                                            d=\"M14.6554 1.71047C14.8927 1.47315 15.1745 1.2849 15.4845 1.15646C15.7946 1.02802 16.1269 0.961914 16.4626 0.961914C16.7982 0.961914 17.1305 1.02802 17.4406 1.15646C17.7507 1.2849 18.0324 1.47315 18.2697 1.71047C18.5071 1.94779 18.6953 2.22953 18.8238 2.53961C18.9522 2.84969 19.0183 3.18202 19.0183 3.51765C19.0183 3.85327 18.9522 4.18561 18.8238 4.49568C18.6953 4.80576 18.5071 5.0875 18.2697 5.32482L6.0713 17.5233L1.10156 18.8786L2.45695 13.9089L14.6554 1.71047Z\"\r\n                                            stroke=\"#344054\" stroke-width=\"1.81079\" stroke-linecap=\"round\"\r\n                                            stroke-linejoin=\"round\" />\r\n                                    </svg></span>Edit\r\n                            </button>\r\n                        </div>\r\n                        <div *ngIf=\"isDuplicateParentEditMode\" class=\"d-flex align-items-center gap-2\">\r\n                            <button class=\"btn btn-outline\" (click)=\"closeDuplicateParentPopup(modal)\">Cancel</button>\r\n                            <button class=\"btn btn-primary w-10\" id=\"alert-toast\"\r\n                                (click)=\"saveAndCloseDuplicateParentPopup(modal)\"\r\n                                [disabled]=\"!canEnableSaveButton() || (selectedRadioType === 'duplicate' && selectedDuplicateImagesList.length === 0)\">\r\n                                Save &amp; Close</button>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n\r\n            <!-- <div class=\"w-100 mt-2 d-flex justify-content-end\">\r\n                    <button type=\"button\" class=\"btn btn-outline w-10 me-2\" (click)=\"modal.dismiss('cancel')\">\r\n                        Cancel\r\n                    </button>\r\n                    <button type=\"button\" class=\"btn btn-primary w-10\" (click)=\"saveDuplicateParentPopup()\">\r\n                        save &amp; Close\r\n                    </button>\r\n                </div> -->\r\n            <!-- Non-shopper type radios (same options as main popup) -->\r\n            <div class=\"mb-3\">\r\n                <div class=\"form-check my-5\">\r\n                    <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"duplicate-parent-duplicate\"\r\n                        id=\"duplicate-parent-duplicate\" [(ngModel)]=\"selectedType\" [value]=\"'duplicate'\"\r\n                        (change)=\"onRadioChange(selectedType)\" [disabled]=\"!isDuplicateParentEditMode || isTaggingLimitExceed('duplicate')\" />\r\n                    <label class=\"form-check-label\" for=\"duplicate-parent-duplicate\">\r\n                        <span class=\"ms-5\">\r\n                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\r\n                                fill=\"none\">\r\n                                <g clip-path=\"url(#clip0_2012_94635)\">\r\n                                    <path\r\n                                        d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\r\n                                        stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                        stroke-linejoin=\"round\" />\r\n                                </g>\r\n                            </svg>\r\n                        </span>\r\n                        <span class=\"ms-5 tag-class\">Duplicate</span>\r\n                    </label>\r\n                </div>\r\n                <!-- related images from parent-->\r\n                <div class=\"mb-3\"\r\n                    *ngIf=\"(duplicateParentContext?.revopsType === 'duplicate' || duplicateParentContext?.isParent) && duplicateChildrenList?.length && selectedType === 'duplicate'\">\r\n                    <div class=\"duplicate-parent-children-row\">\r\n                        <div class=\"duplicate-child-card\" *ngFor=\"let child of duplicateChildrenList\">\r\n                            <div class=\"cursor-pointer\" (click)=\"handleDuplicateChildImageClick($event, child, duplicateChildrenList)\">\r\n                                <div class=\"position-relative\">\r\n                                    <input type=\"checkbox\" class=\"form-check-input duplicate-child-checkbox\" [checked]=\"child.selected\"\r\n                                        [disabled]=\"!isDuplicateParentEditMode\"\r\n                                        (change)=\"onPopupDuplicateCheckboxChange($event, child)\"\r\n                                        (click)=\"$event.stopPropagation()\" />\r\n                                    <img [src]=\"imageUrl + child?.filePath\" (error)=\"child.filePath = null\"\r\n                                        alt=\"Duplicate image\" />\r\n                                </div>\r\n                                <div class=\"duplicate-child-info my-2\">\r\n                                    <div class=\"mapped-parent-container\">\r\n                \r\n                                        <div class=\"mapped-parent-left ms-2\">\r\n                                            <div class=\"duplicate-child-id my-1\">\r\n                                                Tango ID : {{ child?.templd || child?.tempId }}\r\n                                            </div>\r\n                                            <div class=\"duplicate-child-time my-1\">\r\n                                                Entry Time : {{ child?.entryTme || child?.entryTime }}\r\n                                            </div>\r\n                                        </div>\r\n                                        <div class=\"mapped-parent-right me-2\">\r\n                                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"10\" viewBox=\"0 0 10 10\"\r\n                                                fill=\"none\">\r\n                                                <g clip-path=\"url(#clip0_1687_83472)\">\r\n                                                    <path\r\n                                                        d=\"M2.08301 6.24992H1.66634C1.44533 6.24992 1.23337 6.16212 1.07709 6.00584C0.920805 5.84956 0.833008 5.6376 0.833008 5.41659V1.66659C0.833008 1.44557 0.920805 1.23361 1.07709 1.07733C1.23337 0.921049 1.44533 0.833252 1.66634 0.833252H5.41634C5.63735 0.833252 5.84932 0.921049 6.0056 1.07733C6.16188 1.23361 6.24967 1.44557 6.24967 1.66659V2.08325M4.58301 3.74992H8.33301C8.79324 3.74992 9.16634 4.12301 9.16634 4.58325V8.33325C9.16634 8.79349 8.79324 9.16659 8.33301 9.16659H4.58301C4.12277 9.16659 3.74967 8.79349 3.74967 8.33325V4.58325C3.74967 4.12301 4.12277 3.74992 4.58301 3.74992Z\"\r\n                                                        stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                                </g>\r\n                                                <defs>\r\n                                                    <clipPath id=\"clip0_1687_83472\">\r\n                                                        <rect width=\"10\" height=\"10\" fill=\"white\" />\r\n                                                    </clipPath>\r\n                                                </defs>\r\n                                            </svg>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n\r\n                <div class=\"form-check my-15\">\r\n                    <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"duplicate-parent-employee\"\r\n                        id=\"duplicate-parent-employee\" [(ngModel)]=\"selectedType\" [value]=\"'employee'\"\r\n                        (change)=\"onRadioChange(selectedType)\" [disabled]=\"!isDuplicateParentEditMode || isTaggingLimitExceed('employee')\" />\r\n                    <label class=\"form-check-label\" for=\"duplicate-parent-employee\">\r\n                        <span class=\"ms-5\">\r\n                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\r\n                                fill=\"none\">\r\n                                <g clip-path=\"url(#clip0_2012_94639)\">\r\n                                    <path\r\n                                        d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\r\n                                        stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                        stroke-linejoin=\"round\" />\r\n                                </g>\r\n                            </svg>\r\n                        </span>\r\n                        <span class=\"ms-5 tag-class\">Employee/Staff</span>\r\n                    </label>\r\n                </div>\r\n\r\n                <!-- Dynamic filter radio buttons based on configIconList 2 -->\r\n                <div class=\"form-check my-15\" *ngFor=\"let configItem of getDynamicConfigIcons()\">\r\n                    <input class=\"form-check-input cursor-pointer\" type=\"radio\"\r\n                        [name]=\"'duplicate-parent-' + configItem?.type\" [id]=\"'duplicate-parent-' + configItem?.type\"\r\n                        [(ngModel)]=\"selectedType\" [value]=\"configItem?.type\" (change)=\"onRadioChange(selectedType)\"\r\n                        [disabled]=\"!isDuplicateParentEditMode || isTaggingLimitExceed(configItem?.type)\" />\r\n                    <label class=\"form-check-label\" [for]=\"'duplicate-parent-' + configItem?.type\">\r\n                        <span class=\"ms-5\">\r\n                            <ng-container [ngSwitch]=\"getIconName(configItem?.type)\">\r\n                                <!-- houseKeepingTag icon -->\r\n                                <svg *ngSwitchCase=\"'houseKeepingTag'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"21\"\r\n                                    height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\">\r\n                                    <g [attr.clip-path]=\"'url(#clip0_duplicate_parent_' + configItem?.type + ')'\">\r\n                                        <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n                                            d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\r\n                                            fill=\"#475467\" />\r\n                                    </g>\r\n                                    <defs>\r\n                                        <clipPath [attr.id]=\"'clip0_duplicate_parent_' + configItem?.type\">\r\n                                            <rect width=\"21\" height=\"20\" fill=\"white\"\r\n                                                transform=\"translate(0 0.686035)\" />\r\n                                        </clipPath>\r\n                                    </defs>\r\n                                </svg>\r\n                                <!-- junkTag icon -->\r\n                                <svg *ngSwitchCase=\"'junkTag'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n                                    viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                    <path\r\n                                        d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\r\n                                        stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                        stroke-linejoin=\"round\" />\r\n                                </svg>\r\n                                <!-- purpleTag icon -->\r\n                                <svg *ngSwitchCase=\"'purpleTag'\" width=\"18\" height=\"18\" viewBox=\"0 0 21 21\" fill=\"none\"\r\n                                    xmlns=\"http://www.w3.org/2000/svg\">\r\n                                    <path\r\n                                        d=\"M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                        fill=\"#EBE9FE\" />\r\n                                    <path\r\n                                        d=\"M5.66406 5.66663H5.67406M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                        stroke=\"#7A5AF8\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n                                        stroke-linejoin=\"round\" />\r\n                                </svg>\r\n                                <!-- orangeTag icon -->\r\n                                <svg *ngSwitchCase=\"'orangeTag'\" width=\"21\" height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\"\r\n                                    xmlns=\"http://www.w3.org/2000/svg\">\r\n                                    <path\r\n                                        d=\"M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                        fill=\"#FFEAD5\" />\r\n                                    <path\r\n                                        d=\"M5.66406 5.66663H5.67406M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                        stroke=\"#FB6514\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n                                        stroke-linejoin=\"round\" />\r\n                                </svg>\r\n                                <!-- Default icon (if iconName doesn't match) -->\r\n                                <svg *ngSwitchDefault xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n                                    fill=\"none\" viewBox=\"0 0 24 24\">\r\n                                    <path\r\n                                        d=\"M20.7071 13.2929L11.4142 4H4V11.4142L13.2929 20.7071C13.6834 21.0976 14.3166 21.0976 14.7071 20.7071L20.7071 14.7071C21.0976 14.3166 21.0976 13.6834 20.7071 13.2929Z\"\r\n                                        stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n                                        stroke-linejoin=\"round\" />\r\n                                    <path d=\"M7 7H7.01\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n                                        stroke-linejoin=\"round\" />\r\n                                </svg>\r\n                            </ng-container>\r\n                        </span>\r\n                        <span class=\"ms-5 tag-class\">{{ configItem?.name || configItem?.type }}</span>\r\n                    </label>\r\n                </div>\r\n\r\n                <!-- <div class=\"form-check my-15\">\r\n                    <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"duplicate-parent-house-keeping\"\r\n                        id=\"duplicate-parent-house-keeping\" [(ngModel)]=\"selectedType\" [value]=\"'houseKeeping'\"\r\n                        (change)=\"onRadioChange(selectedType)\" [disabled]=\"revopsTypeValue\" />\r\n                    <label class=\"form-check-label\" for=\"duplicate-parent-house-keeping\">\r\n                        <span class=\"ms-5\">\r\n                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\" viewBox=\"0 0 21 21\"\r\n                                fill=\"none\">\r\n                                <g clip-path=\"url(#clip0_2012_94643)\">\r\n                                    <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n                                        d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\r\n                                        fill=\"#475467\" />\r\n                                </g>\r\n                            </svg>\r\n                        </span>\r\n                        <span class=\"ms-5 tag-class\">House Keeping</span>\r\n                    </label>\r\n                </div>\r\n\r\n                <div class=\"form-check my-15\">\r\n                    <input class=\"form-check-input cursor-pointer\" type=\"radio\" name=\"duplicate-parent-junk\"\r\n                        id=\"duplicate-parent-junk\" [(ngModel)]=\"selectedType\" [value]=\"'junk'\"\r\n                        (change)=\"onRadioChange(selectedType)\"\r\n                        [disabled]=\"users?.role === 'user' && this.users?.userType === 'client' || revopsTypeValue\" />\r\n                    <label class=\"form-check-label\" for=\"duplicate-parent-junk\">\r\n                        <span class=\"ms-5\">\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                                <path\r\n                                    d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\r\n                                    stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                            </svg>\r\n                        </span>\r\n                        <span class=\"ms-5 tag-class\">Junk</span>\r\n                    </label>\r\n                </div> -->\r\n            </div>\r\n            <!-- Remarks for this parent -->\r\n            <!-- <div class=\"mt-3\" *ngIf=\"isDuplicateParentEditMode && (showComments || selectedType === '')\"> -->\r\n                <div class=\"mt-3\" *ngIf=\"isDuplicateParentEditMode && enableSaveBtn\">\r\n                    <label class=\"form-label\">Remarks (Optional)</label>\r\n                    <textarea class=\"form-control\" rows=\"3\" placeholder=\"Comment here\" [(ngModel)]=\"userImgComment\">\r\n                                    </textarea>\r\n                </div>\r\n                <!-- <div class=\"mt-3\" *ngIf=\"!isDuplicateParentEditMode || (!showComments && selectedType !== '')\"> -->\r\n                <div class=\"mt-3\" *ngIf=\"!isDuplicateParentEditMode || !enableSaveBtn\">\r\n                    <p><b>Remarks :</b> {{duplicateParentContext?.comments}}</p>\r\n                </div>\r\n\r\n        </div>\r\n    </div>\r\n</ng-template>\r\n\r\n\r\n<ng-template #imagePopup let-modal>\r\n    <div class=\"mx-4\">\r\n        <div class=\"row\">\r\n            <div class=\" p-2  mb-2 mt-5\">\r\n                <div *ngIf=\"isModalOpen\" class=\"position-relative border-gray p-2 \">\r\n                    <!-- Left Navigation Button -->\r\n                    <button *ngIf=\"isNavEnabled\" [disabled]=\"!canNavigateLeftModal\" (click)=\"navigateModalImage('left')\"\r\n                        class=\"btn btn-light position-absolute start-0 top-50 translate-middle-y\"\r\n                        [class.disabled]=\"!canNavigateLeftModal\" [style.opacity]=\"canNavigateLeftModal ? '0.9' : '0.4'\"\r\n                        [style.cursor]=\"canNavigateLeftModal ? 'pointer' : 'not-allowed'\" [style.z-index]=\"'10'\"\r\n                        [style.left]=\"'10px'\" [style.padding]=\"'8px 12px'\" [style.font-size]=\"'18px'\"\r\n                        [style.font-weight]=\"'bold'\" [attr.aria-disabled]=\"!canNavigateLeftModal\"\r\n                        [attr.aria-label]=\"'Previous image'\">\r\n                        ◀\r\n                    </button>\r\n\r\n                    <!-- Main Image Container with Checkbox -->\r\n                    <div class=\"position-relative\">\r\n                        <!-- Checkbox for duplicate selection in modal -->\r\n\r\n                        <input\r\n                            *ngIf=\"!revopsTypeValue && selectedRadioType === 'duplicate'||isDuplicateParentEditMode&& selectedRadioType === 'duplicate'\"\r\n                            type=\"checkbox\"\r\n                            [checked]=\"(tempModalImage || selectImageArray)?.selected || (tempModalImage || selectImageArray)?.isChecked\"\r\n                            class=\"position-absolute form-check-input cursor-pointer\"\r\n                            style=\"top: 15px; right: 15px; z-index: 11; width: 22px !important; height: 22px !important;\"\r\n                            (change)=\"onImageCheckboxChange($event, (tempModalImage || selectImageArray), 'duplicate')\"\r\n                            (click)=\"$event.stopPropagation()\"\r\n                            [disabled]=\"(tempModalImage || selectImageArray)?.duplicateImagePath?.length > 0\" />\r\n\r\n                        <!-- Main Image -->\r\n                        <img class=\" cursor-pointer w-100 h-525px\"\r\n                            [src]=\"imageUrl + (tempModalImage?.filePath || selectImageArray?.filePath)\" alt=\"\">\r\n                    </div>\r\n\r\n                    <!-- Right Navigation Button -->\r\n                    <button *ngIf=\"isNavEnabled\" [disabled]=\"!canNavigateRightModal\"\r\n                        (click)=\"navigateModalImage('right')\"\r\n                        class=\"btn btn-light position-absolute end-0 top-50 translate-middle-y\"\r\n                        [class.disabled]=\"!canNavigateRightModal\"\r\n                        [style.opacity]=\"canNavigateRightModal ? '0.9' : '0.4'\"\r\n                        [style.cursor]=\"canNavigateRightModal ? 'pointer' : 'not-allowed'\" [style.z-index]=\"'10'\"\r\n                        [style.right]=\"'10px'\" [style.padding]=\"'8px 12px'\" [style.font-size]=\"'18px'\"\r\n                        [style.font-weight]=\"'bold'\" [attr.aria-disabled]=\"!canNavigateRightModal\"\r\n                        [attr.aria-label]=\"'Next image'\">\r\n                        ▶\r\n                    </button>\r\n\r\n                    <!-- Right arrow button -->\r\n                    <div class=\"row px-2 mb-2\">\r\n                        <div class=\"col-md-10\">\r\n                            <div class=\"py-2 img-doc-time\">Tango ID : {{(tempModalImage || selectImageArray)?.templd ||\r\n                                (tempModalImage || selectImageArray)?.tempId}}\r\n                                <span *ngIf=\"(tempModalImage || selectImageArray)?.status ==='approved'\"\r\n                                    class=\"ms-2\"><svg style=\"width: 20px;\r\n    height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\r\n                                        <rect y=\"0.5\" width=\"19\" height=\"18\" rx=\"5\" fill=\"#D1FADF\" />\r\n                                        <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n                                            d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\r\n                                            fill=\"#12B76A\" />\r\n                                    </svg></span>\r\n                                <span *ngIf=\"(tempModalImage || selectImageArray)?.status ==='rejected'\"\r\n                                    class=\"ms-2\"><svg style=\"width: 20px;\r\n    height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\r\n                                        <g clip-path=\"url(#clip0_1428_59484)\">\r\n                                            <path\r\n                                                d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\r\n                                                fill=\"#FEE4E2\" />\r\n                                            <path\r\n                                                d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\r\n                                                stroke=\"#D92D20\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                        </g>\r\n                                        <defs>\r\n                                            <clipPath id=\"clip0_1428_59484\">\r\n                                                <rect width=\"12\" height=\"12\" fill=\"white\"\r\n                                                    transform=\"translate(0.599609 0.5)\" />\r\n                                            </clipPath>\r\n                                        </defs>\r\n                                    </svg>\r\n                                </span>\r\n                            </div>\r\n                            <div class=\"img-doc-value\">Entry Time : {{(tempModalImage || selectImageArray)?.entryTme ||\r\n                                (tempModalImage || selectImageArray)?.entryTime}}</div>\r\n                        </div>\r\n                        <div class=\"col-md-2 text-end py-3\">\r\n                            <!-- Dynamic icon changes -->\r\n                            <span *ngIf=\"getIconName((tempModalImage || selectImageArray)?.revopsType) as iconName\">\r\n                                <span *ngIf=\"iconName === 'non-tagging'\" ngbTooltip=\"Yet to tag the customer\"\r\n                                    placement=\"top\">\r\n                                    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\" viewBox=\"0 0 19 18\"\r\n                                        fill=\"none\">\r\n                                        <path\r\n                                            d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\r\n                                            stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                            stroke-linejoin=\"round\" />\r\n                                    </svg>\r\n                                </span>\r\n                                <span *ngIf=\"iconName ==='houseKeepingTag'\">\r\n                                    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\" viewBox=\"0 0 21 21\"\r\n                                        fill=\"none\">\r\n                                        <g clip-path=\"url(#clip0_2012_94643)\">\r\n                                            <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n                                                d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\r\n                                                fill=\"#475467\" />\r\n                                        </g>\r\n                                        <defs>\r\n                                            <clipPath id=\"clip0_2012_94643\">\r\n                                                <rect width=\"21\" height=\"20\" fill=\"white\"\r\n                                                    transform=\"translate(0 0.686035)\" />\r\n                                            </clipPath>\r\n                                        </defs>\r\n                                    </svg>\r\n                                </span>\r\n                                <span *ngIf=\"iconName ==='junkTag'\">\r\n                                    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\" viewBox=\"0 0 24 24\"\r\n                                        fill=\"none\">\r\n                                        <path\r\n                                            d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\r\n                                            stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                            stroke-linejoin=\"round\" />\r\n                                    </svg>\r\n                                </span>\r\n                                <!-- purple tag -->\r\n                                <span *ngIf=\"iconName ==='purpleTag'\">\r\n                                    <svg width=\"18\" height=\"18\" viewBox=\"0 0 21 21\" fill=\"none\"\r\n                                        xmlns=\"http://www.w3.org/2000/svg\">\r\n                                        <path\r\n                                            d=\"M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                            fill=\"#EBE9FE\" />\r\n                                        <path\r\n                                            d=\"M5.66406 5.66663H5.67406M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                            stroke=\"#7A5AF8\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n                                            stroke-linejoin=\"round\" />\r\n                                    </svg>\r\n                                </span>\r\n                                <!-- orange tag -->\r\n                                <span *ngIf=\"iconName ==='orangeTag'\">\r\n                                    <svg width=\"21\" height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\"\r\n                                        xmlns=\"http://www.w3.org/2000/svg\">\r\n                                        <path\r\n                                            d=\"M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                            fill=\"#FFEAD5\" />\r\n                                        <path\r\n                                            d=\"M5.66406 5.66663H5.67406M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                            stroke=\"#FB6514\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n                                            stroke-linejoin=\"round\" />\r\n                                    </svg>\r\n                                </span>\r\n                            </span>\r\n                            <!-- <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='non-tagging'\"\r\n                                ngbTooltip=\"Yet to tag the customer\" placement=\"top\">\r\n                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\" viewBox=\"0 0 19 18\"\r\n                                    fill=\"none\">\r\n                                    <path\r\n                                        d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\r\n                                        stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                        stroke-linejoin=\"round\" />\r\n                                </svg>\r\n                            </span> -->\r\n                            <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='duplicate'\">\r\n                                <svg *ngIf=\"(tempModalImage || selectImageArray)?.isParent\" width=\"20\" height=\"21\"\r\n                                    viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                                    <g clip-path=\"url(#clip0_568_103657)\">\r\n                                        <path\r\n                                            d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\r\n                                            stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                    </g>\r\n                                    <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\r\n                                    <defs>\r\n                                        <clipPath id=\"clip0_568_103657\">\r\n                                            <rect width=\"19\" height=\"18\" fill=\"white\" />\r\n                                        </clipPath>\r\n                                    </defs>\r\n                                </svg>\r\n                                <svg *ngIf=\"!(tempModalImage || selectImageArray)?.isParent\"\r\n                                    xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\r\n                                    fill=\"none\">\r\n                                    <g clip-path=\"url(#clip0_2012_94635)\">\r\n                                        <path\r\n                                            d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\r\n                                            stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                            stroke-linejoin=\"round\" />\r\n                                    </g>\r\n                                    <defs>\r\n                                        <clipPath id=\"clip0_2012_94635\">\r\n                                            <rect width=\"20\" height=\"20\" fill=\"white\"\r\n                                                transform=\"translate(0 0.686035)\" />\r\n                                        </clipPath>\r\n                                    </defs>\r\n                                </svg>\r\n                            </span>\r\n                            <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='employee'\">\r\n                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\r\n                                    fill=\"none\">\r\n                                    <g clip-path=\"url(#clip0_2012_94639)\">\r\n                                        <path\r\n                                            d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\r\n                                            stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                            stroke-linejoin=\"round\" />\r\n                                    </g>\r\n                                    <defs>\r\n                                        <clipPath id=\"clip0_2012_94639\">\r\n                                            <rect width=\"20\" height=\"20\" fill=\"white\"\r\n                                                transform=\"translate(0 0.686035)\" />\r\n                                        </clipPath>\r\n                                    </defs>\r\n                                </svg>\r\n                            </span>\r\n                            <!-- <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='houseKeeping'\">\r\n                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"21\" viewBox=\"0 0 21 21\"\r\n                                    fill=\"none\">\r\n                                    <g clip-path=\"url(#clip0_2012_94643)\">\r\n                                        <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n                                            d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\r\n                                            fill=\"#475467\" />\r\n                                    </g>\r\n                                    <defs>\r\n                                        <clipPath id=\"clip0_2012_94643\">\r\n                                            <rect width=\"21\" height=\"20\" fill=\"white\"\r\n                                                transform=\"translate(0 0.686035)\" />\r\n                                        </clipPath>\r\n                                    </defs>\r\n                                </svg>\r\n                            </span>\r\n                            <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType === 'junk'\">\r\n                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\" viewBox=\"0 0 24 24\"\r\n                                    fill=\"none\">\r\n                                    <path\r\n                                        d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\r\n                                        stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                        stroke-linejoin=\"round\" />\r\n                                </svg>\r\n                            </span> -->\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n\r\n        <!-- <div class=\"modal-footer py-2 px-0\"> -->\r\n        <div class=\"w-100 py-2 mb-2 px-0 d-flex justify-content-end\">\r\n            <button class=\"btn btn-primary me-2\"\r\n                *ngIf=\"!revopsTypeValue && selectedRadioType === 'duplicate'||isDuplicateParentEditMode && selectedRadioType === 'duplicate'\"\r\n                (click)=\"saveDuplicateImagesFromModal()\"\r\n                [disabled]=\"selectedRadioType === 'duplicate' && (!selectedDuplicateImagesList || selectedDuplicateImagesList.length === 0)\">\r\n                Save\r\n            </button>\r\n            <button class=\"btn btn-outline\" (click)=\"closeImage()\">Close</button>\r\n        </div>\r\n        <!-- </div> -->\r\n    </div>\r\n</ng-template>\r\n\r\n<!-- Footfall Trends Template -->\r\n<ng-template #footfallTrendsTemplate>\r\n    <div class=\"row w-100 mb-1 g-1\">\r\n        <!-- Total Footfall Card -->\r\n        <div class=\"col-md-3\">\r\n            <div class=\"metric-card\">\r\n                <div class=\"metric-header\">\r\n                    <div class=\"d-flex align-items-center gap-2\">\r\n                        <span class=\"metric-title\">Total Footfall</span>\r\n                        <svg placement=\"top\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n                            viewBox=\"0 0 24 24\" fill=\"none\">\r\n                            <path\r\n                                d=\"M4 18H9.5V19.25C9.5 19.9793 9.21027 20.6788 8.69454 21.1945C8.17882 21.7103 7.47935 22 6.75 22C6.02065 22 5.32118 21.7103 4.80546 21.1945C4.28973 20.6788 4 19.9793 4 19.25V18ZM8 6.11999C10 6.11999 11 8.99999 11 11C11 12 10.5 13 10 14.5L9.5 16H4C4 15 3.5 13.5 3.5 11C3.5 8.49999 5.498 6.11999 8 6.11999ZM20.054 14.098L19.837 15.329C19.7023 16.0396 19.2931 16.6686 18.698 17.0796C18.1029 17.4907 17.3698 17.6508 16.6576 17.5252C15.9453 17.3996 15.3111 16.9984 14.8925 16.4086C14.4739 15.8188 14.3045 15.0878 14.421 14.374L14.637 13.144L20.054 14.098ZM18.178 1.70499C20.642 2.13899 22.196 4.82999 21.762 7.29199C21.328 9.75399 20.575 11.144 20.402 12.129L14.985 11.174L14.753 9.60999C14.521 8.04599 14.203 6.97399 14.376 5.98999C14.723 4.01999 16.208 1.35799 18.178 1.70499Z\"\r\n                                fill=\"#00A3FF\" />\r\n                        </svg>\r\n                    </div>\r\n                </div>\r\n                <div class=\"metric-value\">{{ getCurrentFootfall() || 0 }}</div>\r\n                <!-- [ngClass]=\"getFootfallPercentageChange() >= 0 ? 'up' : 'down'\" -->\r\n                <div class=\"metric-trend\">\r\n                    <!-- Up arrow for positive values -->\r\n                    <svg *ngIf=\"getFootfallPercentageChange() >= 0\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n                        fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                        <path\r\n                            d=\"M15.3327 3.99998L8.99935 10.3333L5.66602 6.99998L0.666016 12M15.3327 3.99998H11.3327M15.3327 3.99998V7.99998\"\r\n                            stroke=\"#039855\" stroke-width=\"1.18681\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                    </svg>\r\n                    <!-- Down arrow for negative values -->\r\n                    <svg *ngIf=\"getFootfallPercentageChange() < 0\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n                        fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                        <g clip-path=\"url(#clip0_1018_36555)\">\r\n                            <path\r\n                                d=\"M13.4173 10.5L7.87565 4.95833L4.95898 7.875L0.583984 3.5M13.4173 10.5H9.91732M13.4173 10.5V7\"\r\n                                stroke=\"#D92D20\" stroke-width=\"1.18681\" stroke-linecap=\"round\"\r\n                                stroke-linejoin=\"round\" />\r\n                        </g>\r\n                        <defs>\r\n                            <clipPath id=\"clip0_1018_36555\">\r\n                                <rect width=\"14\" height=\"14\" fill=\"white\" transform=\"matrix(1 0 0 -1 0 14)\" />\r\n                            </clipPath>\r\n                        </defs>\r\n                    </svg>\r\n                    <span\r\n                        [style.color]=\"getFootfallPercentageChange() >= 0 ? '#039855' : '#D92D20'\">{{Math.abs(getFootfallPercentageChange())\r\n                        }}% </span>\r\n                    <span style=\"font-weight: 400;font-size: 12px;line-height: 18px;\">vs Yesterday</span>\r\n                </div>\r\n            </div>\r\n        </div>\r\n        <!-- Total Downtime Card -->\r\n        <div class=\"col-md-3\">\r\n            <div class=\"metric-card\">\r\n                <div class=\"metric-header\">\r\n                    <div class=\"d-flex align-items-center gap-2\">\r\n                        <span class=\"metric-title\">Total Downtime</span>\r\n                        <div class=\"downtime-icons\">\r\n                            <svg width=\"40\" height=\"41\" viewBox=\"0 0 40 41\" fill=\"none\"\r\n                                xmlns=\"http://www.w3.org/2000/svg\">\r\n                                <rect y=\"0.5\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\r\n                                <path\r\n                                    d=\"M21.9004 12.1675C22.9958 12.1675 24.0423 12.3918 24.9977 12.7987C25.9889 13.2207 26.8809 13.8402 27.6279 14.6087C28.3734 15.3756 28.9756 16.2931 29.3857 17.3162C29.7813 18.299 29.9993 19.3756 29.9993 20.5008C29.9993 21.6277 29.7813 22.7043 29.3857 23.6871C28.9756 24.7068 28.3734 25.6244 27.6263 26.3929C26.8809 27.1598 25.9889 27.7793 24.9945 28.2012C24.0391 28.6081 22.9925 28.8325 21.8988 28.8325C20.8034 28.8325 19.7568 28.6081 18.8014 28.2012C17.8102 27.7793 16.9183 27.1598 16.1729 26.3929L16.1712 26.3912C15.4242 25.6227 14.8236 24.7052 14.4134 23.6871C14.2865 23.3707 14.1774 23.0459 14.0879 22.7127C14.2572 22.7294 14.4297 22.7378 14.6038 22.7378C14.9342 22.7378 15.2565 22.7076 15.5706 22.649C15.6227 22.8098 15.6797 22.9688 15.7415 23.1246C16.0785 23.9617 16.5732 24.7152 17.1885 25.3481C17.8037 25.981 18.5378 26.49 19.3499 26.8366C20.1328 27.1698 20.9938 27.3557 21.8988 27.3557C22.8037 27.3557 23.6631 27.1715 24.4476 26.8366C25.2614 26.49 25.9938 25.981 26.6091 25.3481C27.2243 24.7152 27.7191 23.9601 28.056 23.1246C28.3799 22.3192 28.5605 21.4334 28.5605 20.5025C28.5605 19.5715 28.3815 18.6875 28.056 17.8804C27.7191 17.0432 27.2243 16.2898 26.6091 15.6569C25.9938 15.024 25.2598 14.5149 24.4476 14.1684C23.6647 13.8352 22.8037 13.6493 21.8988 13.6493C20.9938 13.6493 20.1344 13.8335 19.3499 14.1684C19.2799 14.1985 19.21 14.2303 19.1416 14.2621C18.8747 13.8301 18.5524 13.4383 18.1829 13.0984C18.3848 12.9913 18.5915 12.8925 18.8014 12.8021C19.7601 12.3918 20.805 12.1675 21.9004 12.1675ZM20.971 16.5393C20.971 16.335 21.0524 16.1508 21.181 16.0169C21.3112 15.8829 21.4902 15.8009 21.6888 15.8009C21.8874 15.8009 22.0664 15.8829 22.1966 16.0169C22.3268 16.1508 22.4066 16.335 22.4066 16.5393V20.4271L25.2305 22.1501C25.3997 22.2539 25.5137 22.4196 25.5592 22.6021C25.6048 22.7847 25.5837 22.9856 25.4827 23.1597V23.1614C25.3818 23.3355 25.2207 23.4527 25.0433 23.4996C24.8659 23.5465 24.6706 23.5247 24.5013 23.4209H24.4997L21.3405 21.4937C21.2314 21.4318 21.1419 21.3413 21.0768 21.2342C21.0101 21.122 20.971 20.9897 20.971 20.8491V16.5393Z\"\r\n                                    fill=\"#667085\" />\r\n                                <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n                                    d=\"M14.3913 12.6095C16.8164 12.6095 18.7826 14.6321 18.7826 17.1269C18.7826 19.6218 16.8164 21.6444 14.3913 21.6444C11.9661 21.6444 10 19.6218 10 17.1269C10 14.6321 11.9661 12.6095 14.3913 12.6095ZM14.3913 19.7172L16.748 16.7201H15.2848V15.1261H13.4977V16.7201H12.0345L14.3913 19.7172Z\"\r\n                                    fill=\"#F04438\" />\r\n                            </svg>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <!-- <div class=\"metric-value\">{{ getFormattedDowntime() || '-' }}</div> -->\r\n                <div class=\"metric-value\" [innerHTML]=\"getFormattedDowntimeHTML() || '-'\"></div>\r\n                <div class=\"metric-trend metric-trend-placeholder\"></div>\r\n                <!-- <div class=\"metric-tag success\" *ngIf=\"hasDowntime()\"> -->\r\n                <!-- <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                        <path d=\"M11.6667 3.5L5.25 9.91667L2.33334 7\" stroke=\"#10B981\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                    </svg> -->\r\n                <!-- <span>Issue submitted</span>\r\n                    <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                        <path d=\"M4.5 2.5L7.5 5.5L10.5 2.5\" stroke=\"#10B981\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                    </svg> -->\r\n                <!-- </div> -->\r\n            </div>\r\n        </div>\r\n\r\n        <!-- Ticket Status Card -->\r\n        <div class=\"col-md-3\">\r\n            <div class=\"metric-card\">\r\n                <div class=\"metric-header\">\r\n                    <span class=\"metric-title\">Ticket status</span>\r\n                </div>\r\n                <div class=\"metric-value\" [ngClass]=\"{\r\n                        'ticket-status-raised': getTicketStatus() !== '-' && getTicketStatus()?.toLowerCase() !== 'closed' && getTicketStatus()?.toLowerCase() !== 'auto-closed',\r\n                        'ticket-status-closed': getTicketStatus()?.toLowerCase() === 'closed' || getTicketStatus()?.toLowerCase() === 'auto-closed',\r\n                    }\">\r\n                    {{ getTicketStatus() === '-' ? '-' : (getTicketStatus()?.toLowerCase() === 'closed' ? 'Ticket closed' : (getTicketStatus()?.toLowerCase() === 'auto-closed' ? 'Ticket auto-closed' : 'Ticket raised')) }}\r\n                </div>\r\n                  <span class=\"auto-closed\" *ngIf=\"getTicketStatus()?.toLowerCase() === 'auto-closed'\"><svg  xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-describedby=\"ngb-tooltip-14\"><g  clip-path=\"url(#clip0_3352_688)\"><path  d=\"M7.9987 10.6667V8.00004M7.9987 5.33337H8.00536M14.6654 8.00004C14.6654 11.6819 11.6806 14.6667 7.9987 14.6667C4.3168 14.6667 1.33203 11.6819 1.33203 8.00004C1.33203 4.31814 4.3168 1.33337 7.9987 1.33337C11.6806 1.33337 14.6654 4.31814 14.6654 8.00004Z\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path></g><defs ><clipPath  id=\"clip0_3352_688\"><rect  width=\"16\" height=\"16\" fill=\"white\"></rect></clipPath></defs></svg>\r\n                            Ticket auto-closed as accuracy exceeded {{getRvpsList?.config?.autoCloseAccuracy}}</span>\r\n                <div class=\"metric-trend metric-trend-placeholder\"></div>\r\n            </div>\r\n        </div>\r\n        <!-- <span class=\"divider\"></span> -->\r\n    </div>\r\n</ng-template>\r\n\r\n<ng-template #resetRequestPopup let-model>\r\n    <div class=\"p-6\">\r\n        <div class=\"modal-header border-0 p-0 w-100\">\r\n            <h5 class=\"modal-title mb-3 fw-bold\" style=\"font-size: 18px;color: #1D2939;font-weight: 600 !important;\">\r\n                Reset request\r\n            </h5>\r\n        </div>\r\n        <div class=\"modal-body p-0\" style=\"font-weight: 400;font-size: 16px;color: #1D2939;\">\r\n            <p class=\"mb-3\">\r\n                 Are you sure you want to request re-enabling footfall tickets that have been disabled for this month?\r\n            </p>\r\n        </div>\r\n        <div class=\"modal-footer border-0 p-0 mt-4 d-flex justify-content-end gap-2\">\r\n            <button type=\"button\" class=\"btn btn-outline\" (click)=\"cancelResetRequest()\">\r\n                Cancel\r\n            </button>\r\n            <button type=\"button\" class=\"btn btn-primary\" (click)=\"submitResetRequest()\">\r\n                Send Request\r\n            </button>\r\n        </div>\r\n    </div>\r\n</ng-template>\r\n\r\n<ng-template #ticketStatusTemplate let-model>\r\n    <!-- Ticket Review Card (shown when ticket status is raised) -->\r\n    <div class=\"col-12 mb-3\" *ngIf=\"isTicketRaised() && getTaggingData('tagging')\">\r\n        <div class=\"ticket-review-card\">\r\n            <!-- Actual Footfall Header -->\r\n            <div class=\"actual-footfall-header\">\r\n                <span class=\"actual-footfall-number\">{{ getTaggingData('tagging')?.footfall || 0 }}</span>\r\n                <span class=\"actual-footfall-label\">Actual Footfall</span>\r\n            </div>\r\n            <!-- Ticket Created By Section -->\r\n            <div class=\"ticket-creator-section\"\r\n                *ngIf=\"getTaggingData('tagging')?.createdByEmail || getTaggingData('tagging')?.createdAt\">\r\n                <div class=\"d-flex align-items-center gap-2\">\r\n                    <!-- <div class=\"creator-avatar\" *ngIf=\"getTaggingData()?.createdByEmail?.profilePicture\">\r\n                        <img [src]=\"getTaggingData()?.createdByEmail?.profilePicture\" alt=\"Profile\" />\r\n                    </div> -->\r\n                    <div class=\"creator-avatar-placeholder\"\r\n                        *ngIf=\"!getTaggingData('tagging')?.createdByEmail?.profilePicture\">\r\n                        <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                            <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#EAF8FF\" />\r\n                            <path\r\n                                d=\"M16 10C17.6569 10 19 11.3431 19 13C19 14.6569 17.6569 16 16 16C14.3431 16 13 14.6569 13 13C13 11.3431 14.3431 10 16 10Z\"\r\n                                fill=\"#00A3FF\" />\r\n                            <path d=\"M11 22C11 19.2386 13.2386 17 16 17C18.7614 17 21 19.2386 21 22V23H11V22Z\"\r\n                                fill=\"#00A3FF\" />\r\n                        </svg>\r\n                    </div>\r\n                    <div class=\"creator-info\">\r\n                        <div class=\"creator-label\">Ticket created by</div>\r\n                        <div class=\"creator-details\">\r\n                            <span class=\"creator-email\">{{ getTaggingData('tagging')?.createdByEmail ||\r\n                                getTaggingData('tagging')?.createdByEmail || 'N/A' }}</span>\r\n                            <span class=\"creator-separator\" *ngIf=\"getTaggingData('tagging')?.createdAt\">•</span>\r\n                            <span class=\"creator-time\" *ngIf=\"getTaggingData('tagging')?.createdAt\">{{\r\n                                getTaggingData('tagging')?.createdAt | date:'h:mm:ss a - d MMM yyyy' }}</span>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n\r\n            <!-- Ticket Revised Footfall and Metrics -->\r\n            <div class=\"revised-footfall-section\">\r\n                <div class=\"metrics-row\">\r\n                    <div class=\"metric-item\">\r\n                        <div class=\"metric-number\">\r\n                            {{ getTaggingData('tagging')?.revicedFootfall || 0 }}\r\n                        </div>\r\n                        <div class=\"metric-label\">Revised footfall</div>\r\n                    </div>\r\n                    <div class=\"metric-item\">\r\n                        <div class=\"metric-number blue-text\">\r\n                            {{ getTaggingData('tagging')?.revicedPerc || 0 }}%\r\n                            <span class=\"metric-arrow\">{{ getTaggingData('tagging')?.isUp ? '↑' : '↓'}}</span>\r\n                        </div>\r\n                        <div style=\"padding-left: 41px;\" class=\"metric-label\">Accuracy</div>\r\n                    </div>\r\n                    <!-- <div class=\"metric-item\">\r\n                        <div class=\"metric-number\">{{ getRevisionCalculation('tagging')}}%</div>\r\n                        <div class=\"metric-label\">Ticket%</div>\r\n                    </div> -->\r\n                    <div class=\"metric-divider\"></div>\r\n                    <div class=\"metric-item\">\r\n                        <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'duplicate') }}</div>\r\n                        <div class=\"metric-label\">Duplicates</div>\r\n                    </div>\r\n                    <div class=\"metric-item\">\r\n                        <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'employee') }}</div>\r\n                        <div class=\"metric-label\">Employee/Staff</div>\r\n                    </div>\r\n                    <!-- Dynamic metrics from configIconList (excluding duplicate & employee) -->\r\n                    <ng-container *ngIf=\"configIconList && configIconList.length > 0\">\r\n                        <ng-container *ngFor=\"let configItem of configIconList\">\r\n                            <div class=\"metric-item\"\r\n                                *ngIf=\"configItem?.type && configItem?.type !== 'duplicate' && configItem?.type !== 'employee'\">\r\n                                <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), configItem.type)\r\n                                    }}</div>\r\n                                <div class=\"metric-label\">{{ configItem?.name || configItem?.type }}</div>\r\n                            </div>\r\n                        </ng-container>\r\n                    </ng-container>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n\r\n    <!-- Ticket Final revision Card (shown when ticket status is closed) -->\r\n    <div class=\"col-12 mb-3\" *ngIf=\"(isTicketClosed() || isTicketAutoClosed()) && getTaggingData('finalRevision')\">\r\n        <div class=\"ticket-review-card\">\r\n            <!-- Ticket card section in revision start -->\r\n\r\n            <!-- Actual Footfall Header -->\r\n            <div class=\"actual-footfall-header\">\r\n                <span class=\"actual-footfall-number\">{{ getTaggingData('tagging')?.footfall || 0 }}</span>\r\n                <span class=\"actual-footfall-label\">Actual Footfall</span>\r\n            </div>\r\n            <!-- Ticket Created By Section -->\r\n            <div class=\"ticket-creator-section\"\r\n                *ngIf=\"getTaggingData('tagging')?.createdByEmail || getTaggingData('tagging')?.createdAt\">\r\n                <div class=\"d-flex align-items-center gap-2\">\r\n                    <!-- <div class=\"creator-avatar\" *ngIf=\"getTaggingData()?.createdByEmail?.profilePicture\">\r\n                        <img [src]=\"getTaggingData()?.createdByEmail?.profilePicture\" alt=\"Profile\" />\r\n                    </div> -->\r\n                    <div class=\"creator-avatar-placeholder\"\r\n                        *ngIf=\"!getTaggingData('tagging')?.createdByEmail?.profilePicture\">\r\n                        <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                            <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"#EAF8FF\" />\r\n                            <path\r\n                                d=\"M16 10C17.6569 10 19 11.3431 19 13C19 14.6569 17.6569 16 16 16C14.3431 16 13 14.6569 13 13C13 11.3431 14.3431 10 16 10Z\"\r\n                                fill=\"#00A3FF\" />\r\n                            <path d=\"M11 22C11 19.2386 13.2386 17 16 17C18.7614 17 21 19.2386 21 22V23H11V22Z\"\r\n                                fill=\"#00A3FF\" />\r\n                        </svg>\r\n                    </div>\r\n                    <div class=\"creator-info\">\r\n                        <div class=\"creator-label\">Ticket created by</div>\r\n                        <div class=\"creator-details\">\r\n                            <span class=\"creator-email\">{{ getTaggingData('tagging')?.createdByEmail ||\r\n                                getTaggingData('tagging')?.createdByEmail || 'N/A' }}</span>\r\n                            <span class=\"creator-separator\" *ngIf=\"getTaggingData('tagging')?.createdAt\">•</span>\r\n                            <span class=\"creator-time\" *ngIf=\"getTaggingData('tagging')?.createdAt\">{{\r\n                                getTaggingData('tagging')?.createdAt | date:'h:mm:ss a - d MMM yyyy' }}</span>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n\r\n            <!-- Ticket Revised Footfall and Metrics -->\r\n            <div class=\"revised-footfall-section\">\r\n                <div class=\"metrics-row\">\r\n                    <div class=\"metric-item\">\r\n                        <div class=\"metric-number\">\r\n                            {{ getTaggingData('tagging')?.revicedFootfall || 0 }}\r\n                        </div>\r\n                        <div class=\"metric-label\">Revised footfall</div>\r\n                    </div>\r\n                    <div class=\"metric-item\">\r\n                        <div class=\"metric-number blue-text\">\r\n                            {{ getTaggingData('tagging')?.revicedPerc || 0 }}%\r\n                            <span class=\"metric-arrow\">{{ getTaggingData('tagging')?.isUp ? '↑' : '↓'}}</span>\r\n                        </div>\r\n                        <div style=\"padding-left: 41px;\" class=\"metric-label\">Accuracy</div>\r\n                    </div>\r\n                    <!-- <div class=\"metric-item\">\r\n                        <div class=\"metric-number\">{{ getRevisionCalculation('tagging')}}%</div>\r\n                        <div class=\"metric-label\">Ticket%</div>\r\n                    </div> -->\r\n                    <div class=\"metric-item\">\r\n                        <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'duplicate') }}</div>\r\n                        <div class=\"metric-label\">Duplicates</div>\r\n                    </div>\r\n                    <div class=\"metric-item\">\r\n                        <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), 'employee') }}</div>\r\n                        <div class=\"metric-label\">Employee/Staff</div>\r\n                    </div>\r\n                    <!-- Dynamic metrics from configIconList (excluding duplicate & employee) -->\r\n                    <ng-container *ngIf=\"configIconList && configIconList.length > 0\">\r\n                        <ng-container *ngFor=\"let configItem of configIconList\">\r\n                            <div class=\"metric-item\"\r\n                                *ngIf=\"configItem?.type && configItem?.type !== 'duplicate' && configItem?.type !== 'employee'\">\r\n                                <div class=\"metric-number\">{{ getCountByType(getTaggingData('tagging'), configItem.type)\r\n                                    }}</div>\r\n                                <div class=\"metric-label\">{{ configItem?.name || configItem?.type }}</div>\r\n                            </div>\r\n                        </ng-container>\r\n                    </ng-container>\r\n                </div>\r\n            </div>\r\n            <!-- Ticket card section in revision end -->\r\n\r\n            <!-- Final Revision Section -->\r\n            <div class=\"revision-section\">\r\n                <div class=\"revision-title\">Final revision</div>\r\n                <div *ngIf=\"headerData?.client ==='11'\" class=\"final-revision-note\">\r\n                    <span *ngIf=\"getTicketStatus()?.toLowerCase() !== 'auto-closed'\">\r\n                        Please reach <a [href]=\"'mailto:' + revisionMailTo\" class=\"email-link\">{{ revisionMailTo }}</a> for\r\n                        any further\r\n                        discrepancies\r\n                    </span>\r\n                </div>\r\n                <div *ngIf=\"headerData?.client !=='11'\" class=\"final-revision-note\">\r\n                    <span *ngIf=\"getTicketStatus()?.toLowerCase() !== 'auto-closed' && revisionRoleText\">\r\n                        Please reach {{ revisionRoleText }} {{ revisionMailTo }} for\r\n                        any further\r\n                        discrepancies\r\n                    </span>\r\n                </div>\r\n                <div class=\"revised-footfall-section\">\r\n                    <div class=\"metrics-row\">\r\n                        <div class=\"metric-item\">\r\n                            <div class=\"metric-number\">\r\n                                {{ getTaggingData('finalRevision')?.revicedFootfall || 0 }}\r\n                            </div>\r\n                            <div class=\"metric-label\">Revised footfall</div>\r\n                        </div>\r\n                        <div class=\"metric-item\">\r\n                            <div class=\"metric-number blue-text\">\r\n                                {{ getTaggingData('finalRevision')?.revicedPerc || 0}}%\r\n                                <span class=\"metric-arrow\">{{ getTaggingData('finalRevision')?.isUp ? '↑' : '↓'}}</span>\r\n                            </div>\r\n                            <div style=\"padding-left: 41px;\" class=\"metric-label\">Accuracy</div>\r\n                        </div>\r\n                        <!-- <div class=\"metric-item\">\r\n                            <div class=\"metric-number\">{{ getRevisionCalculation('finalRevision')}}%</div>\r\n                            <div class=\"metric-label\">Ticket%</div>\r\n                        </div> -->\r\n                        <div class=\"metric-item\">\r\n                            <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalRevision'), 'duplicate')\r\n                                }}\r\n                            </div>\r\n                            <div class=\"metric-label\">Duplicates</div>\r\n                        </div>\r\n                        <div class=\"metric-item\">\r\n                            <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalRevision'), 'employee') }}\r\n                            </div>\r\n                            <div class=\"metric-label\">Employee/Staff</div>\r\n                        </div>\r\n                        <!-- Dynamic metrics from configIconList (excluding duplicate & employee) -->\r\n                        <ng-container *ngIf=\"configIconList && configIconList.length > 0\">\r\n                            <ng-container *ngFor=\"let configItem of configIconList\">\r\n                                <div class=\"metric-item\"\r\n                                    *ngIf=\"configItem?.type && configItem?.type !== 'duplicate' && configItem?.type !== 'employee'\">\r\n                                    <div class=\"metric-number\">{{ getCountByType(getTaggingData('finalRevision'),\r\n                                        configItem.type) }}</div>\r\n                                    <div class=\"metric-label\">{{ configItem?.name || configItem?.type }}</div>\r\n                                </div>\r\n                            </ng-container>\r\n                        </ng-container>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</ng-template>\r\n\r\n<ng-template #parentChildImgConfirmationModel let-model>\r\n    <div class=\"p-4 m-4\">\r\n        <div class=\"modal-header border-0 p-0 w-100 flex-column align-items-start\">\r\n            <span class=\"my-3\">\r\n                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\r\n                    <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\r\n                    <g clip-path=\"url(#clip0_2088_98337)\">\r\n                        <path\r\n                            d=\"M29.1693 13.3333V18.3333M29.1693 18.3333H24.1693M29.1693 18.3333L25.3026 14.7C24.407 13.8039 23.299 13.1493 22.0819 12.7973C20.8649 12.4453 19.5785 12.4073 18.3428 12.6869C17.1072 12.9665 15.9624 13.5545 15.0155 14.3962C14.0685 15.2378 13.3502 16.3056 12.9276 17.5M10.8359 26.6666V21.6666M10.8359 21.6666H15.8359M10.8359 21.6666L14.7026 25.3C15.5982 26.1961 16.7062 26.8506 17.9233 27.2027C19.1403 27.5547 20.4267 27.5927 21.6624 27.3131C22.898 27.0335 24.0428 26.4455 24.9897 25.6038C25.9367 24.7621 26.655 23.6943 27.0776 22.5\"\r\n                            stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                    </g>\r\n                    <defs>\r\n                        <clipPath id=\"clip0_2088_98337\">\r\n                            <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(10 10)\" />\r\n                        </clipPath>\r\n                    </defs>\r\n                </svg>\r\n            </span>\r\n\r\n            <p class=\"mb-3\">\r\n                <span>This will remove tagged duplicates and move them to 'Non-tag'.</span>\r\n            </p>\r\n        </div>\r\n\r\n        <div class=\"w-100 mt-5 d-flex justify-content-end\">\r\n            <button class=\"btn btn-outline me-2\" (click)=\"cancelSubmit()\">Cancel</button>\r\n            <button class=\"btn btn-primary\" (click)=\"confirmParentChildUntag(model)\">\r\n                Yes, clear\r\n            </button>\r\n        </div>\r\n    </div>\r\n</ng-template>\r\n\r\n<ng-template #imageNewPopup let-model>\r\n    <div class=\"mx-4\">\r\n        <div class=\"row\">\r\n            <div class=\"p-2 mb-2 mt-5\">\r\n                <p style=\"font-weight: 600;font-size: 18px;line-height: 16px;\">\r\n                    {{(tempModalImage || selectImageArray)?.revopsType | titlecase}}\r\n                </p>\r\n                <div *ngIf=\"isModalOpen\" class=\"position-relative border-gray p-2 \">\r\n                    <div class=\"position-relative\">\r\n                        <!-- Main Image -->\r\n                        <img class=\"w-100 h-525px\"\r\n                            [src]=\"imageUrl + (tempModalImage?.filePath || selectImageArray?.filePath)\" alt=\"\">\r\n                        <!-- Previous Button -->\r\n                        <button *ngIf=\"(tempModalImage?.filePath || selectImageArray?.filePath) && canNavigatePrevious()\" \r\n                            class=\"btn btn-sm btn-light position-absolute navigation-btn navigation-btn-left\"\r\n                            style=\"top: 50%; left: 10px; transform: translateY(-50%); z-index: 10; border-radius: 6px; \r\n                            width: 26px; height: 26px; display: flex; align-items: center; justify-content: center;\r\n                            box-shadow: 0 2px 8px rgba(0,0,0,0.15); background: white; border: 1px solid #D0D5DD; padding: 0;\"\r\n                            (click)=\"navigateFilteredImage('previous')\"\r\n                            title=\"Previous Image\">\r\n                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 22 22\" fill=\"none\" style=\"display: block;\">\r\n                                <path d=\"M15 18L9 12L15 6\" stroke=\"#344054\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                            </svg>\r\n                        </button>\r\n                        <!-- Next Button -->\r\n                        <button *ngIf=\"(tempModalImage?.filePath || selectImageArray?.filePath) && canNavigateNext()\" \r\n                            class=\"btn btn-sm btn-light position-absolute navigation-btn navigation-btn-right\"\r\n                            style=\"top: 50%; right: 10px; transform: translateY(-50%); z-index: 10; border-radius: 6px; \r\n                            width: 26px; height: 26px; display: flex; align-items: center; justify-content: center; \r\n                            box-shadow: 0 2px 8px rgba(0,0,0,0.15); background: white; border: 1px solid #D0D5DD; padding: 0;\"\r\n                            (click)=\"navigateFilteredImage('next')\"\r\n                            title=\"Next Image\">\r\n                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 22 22\" fill=\"none\" style=\"display: block;\">\r\n                                <path d=\"M9 18L15 12L9 6\" stroke=\"#344054\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                            </svg>\r\n                        </button>\r\n                    </div>\r\n                    <!-- Right arrow button -->\r\n                    <div class=\"row px-2 mb-2\">\r\n                        <div class=\"col-md-10\">\r\n                            <div class=\"py-2 img-doc-time\">Tango ID : {{(tempModalImage || selectImageArray)?.templd ||\r\n                                (tempModalImage || selectImageArray)?.tempId}}\r\n                                <span *ngIf=\"(tempModalImage || selectImageArray)?.status ==='approved'\"\r\n                                    class=\"ms-2\"><svg style=\"width: 20px;\r\n    height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"11\" viewBox=\"0 0 10 11\" fill=\"none\">\r\n                                        <rect y=\"0.5\" width=\"19\" height=\"18\" rx=\"5\" fill=\"#D1FADF\" />\r\n                                        <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n                                            d=\"M7.1222 3.57919L4.13887 6.45836L3.3472 5.61253C3.20137 5.47503 2.9722 5.46669 2.80553 5.58336C2.64303 5.70419 2.5972 5.91669 2.6972 6.08753L3.6347 7.61253C3.72637 7.75419 3.8847 7.84169 4.06387 7.84169C4.2347 7.84169 4.3972 7.75419 4.48887 7.61253C4.63887 7.41669 7.50137 4.00419 7.50137 4.00419C7.87637 3.62086 7.4222 3.28336 7.1222 3.57503V3.57919Z\"\r\n                                            fill=\"#12B76A\" />\r\n                                    </svg></span>\r\n                                <span *ngIf=\"(tempModalImage || selectImageArray)?.status ==='rejected'\"\r\n                                    class=\"ms-2\"><svg style=\"width: 20px;\r\n    height: 20px;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\r\n                                        <g clip-path=\"url(#clip0_1428_59484)\">\r\n                                            <path\r\n                                                d=\"M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\r\n                                                fill=\"#FEE4E2\" />\r\n                                            <path\r\n                                                d=\"M8.09961 5L5.09961 8M5.09961 5L8.09961 8M4.52961 1.5H8.66961L11.5996 4.43V8.57L8.66961 11.5H4.52961L1.59961 8.57V4.43L4.52961 1.5Z\"\r\n                                                stroke=\"#D92D20\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                        </g>\r\n                                        <defs>\r\n                                            <clipPath id=\"clip0_1428_59484\">\r\n                                                <rect width=\"12\" height=\"12\" fill=\"white\"\r\n                                                    transform=\"translate(0.599609 0.5)\" />\r\n                                            </clipPath>\r\n                                        </defs>\r\n                                    </svg>\r\n                                </span>\r\n                            </div>\r\n                            <div class=\"img-doc-value\">Entry Time: {{(tempModalImage || selectImageArray)?.entryTme ||\r\n                                (tempModalImage || selectImageArray)?.entryTime}}</div>\r\n                        </div>\r\n                        <div class=\"col-md-2 text-end py-3\">\r\n                            <!-- Dynamic icon changes -->\r\n                            <span *ngIf=\"getIconName((tempModalImage || selectImageArray)?.revopsType) as iconName\">\r\n                                <span *ngIf=\"iconName === 'non-tagging'\" ngbTooltip=\"Yet to tag the customer\"\r\n                                    placement=\"top\">\r\n                                    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\" viewBox=\"0 0 19 18\"\r\n                                        fill=\"none\">\r\n                                        <path\r\n                                            d=\"M6.02344 5.625H6.03094M16.2159 10.4325L10.8384 15.81C10.6991 15.9495 10.5337 16.0601 10.3516 16.1356C10.1695 16.2111 9.97431 16.2499 9.77719 16.2499C9.58006 16.2499 9.38487 16.2111 9.20278 16.1356C9.02068 16.0601 8.85525 15.9495 8.71594 15.81L2.27344 9.375V1.875H9.77344L16.2159 8.3175C16.4953 8.59854 16.6521 8.97872 16.6521 9.375C16.6521 9.77128 16.4953 10.1515 16.2159 10.4325Z\"\r\n                                            stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                            stroke-linejoin=\"round\" />\r\n                                    </svg>\r\n                                </span>\r\n                                <span *ngIf=\"iconName ==='houseKeepingTag'\">\r\n                                    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\" viewBox=\"0 0 21 21\"\r\n                                        fill=\"none\">\r\n                                        <g clip-path=\"url(#clip0_2012_94643)\">\r\n                                            <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n                                                d=\"M9.26219 1.36722C10.1777 0.458974 11.662 0.458974 12.5776 1.36722L20.3133 9.04153C21.2287 9.9498 21.2287 11.4223 20.3133 12.3306L12.5776 20.0049C11.662 20.9131 10.1777 20.9131 9.26219 20.0049L7.05166 17.8119L5.02538 19.8221C4.10987 20.7303 2.62553 20.7303 1.71002 19.8221C0.79451 18.9139 0.79451 17.4413 1.71002 16.5331L3.7363 14.5229L1.52648 12.3306C0.610966 11.4223 0.610966 9.9498 1.52648 9.04153L9.26219 1.36722ZM11.4724 2.46357C11.1672 2.16082 10.6724 2.16082 10.3672 2.46357L4.84145 7.94556L13.6823 16.7163L19.2081 11.2342C19.5133 10.9315 19.5133 10.4406 19.2081 10.1379L15.3399 6.30032L14.0505 7.5794C13.7453 7.88214 13.2506 7.88214 12.9455 7.5794C12.6403 7.27664 12.6403 6.78579 12.9455 6.48305L14.2347 5.20397L13.1299 4.10786L9.99872 7.21418C9.69354 7.51692 9.19873 7.51692 8.89356 7.21418C8.58838 6.91143 8.58838 6.42058 8.89356 6.11783L12.0247 3.01151L11.4724 2.46357ZM12.5771 17.8125L3.73633 9.04191L2.6316 10.1379C2.32642 10.4406 2.32642 10.9315 2.6316 11.2342L10.3672 18.9085C10.6724 19.2113 11.1672 19.2113 11.4724 18.9085L12.5771 17.8125ZM4.84132 15.6192L2.81514 17.6294C2.50997 17.9321 2.50997 18.423 2.81514 18.7258C3.12031 19.0285 3.61509 19.0285 3.92026 18.7258L5.94644 16.7156L4.84132 15.6192Z\"\r\n                                                fill=\"#475467\" />\r\n                                        </g>\r\n                                        <defs>\r\n                                            <clipPath id=\"clip0_2012_94643\">\r\n                                                <rect width=\"21\" height=\"20\" fill=\"white\"\r\n                                                    transform=\"translate(0 0.686035)\" />\r\n                                            </clipPath>\r\n                                        </defs>\r\n                                    </svg>\r\n                                </span>\r\n                                <span *ngIf=\"iconName ==='junkTag'\">\r\n                                    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"18\" viewBox=\"0 0 24 24\"\r\n                                        fill=\"none\">\r\n                                        <path\r\n                                            d=\"M3 6H5M5 6H21M5 6V20C5 20.5304 5.21071 21.0391 5.58579 21.4142C5.96086 21.7893 6.46957 22 7 22H17C17.5304 22 18.0391 21.7893 18.4142 21.4142C18.7893 21.0391 19 20.5304 19 20V6H5ZM8 6V4C8 3.46957 8.21071 2.96086 8.58579 2.58579C8.96086 2.21071 9.46957 2 10 2H14C14.5304 2 15.0391 2.21071 15.4142 2.58579C15.7893 2.96086 16 3.46957 16 4V6M10 11V17M14 11V17\"\r\n                                            stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                            stroke-linejoin=\"round\" />\r\n                                    </svg>\r\n                                </span>\r\n                                <!-- purple tag -->\r\n                                <span *ngIf=\"iconName ==='purpleTag'\">\r\n                                    <svg width=\"18\" height=\"18\" viewBox=\"0 0 21 21\" fill=\"none\"\r\n                                        xmlns=\"http://www.w3.org/2000/svg\">\r\n                                        <path\r\n                                            d=\"M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                            fill=\"#EBE9FE\" />\r\n                                        <path\r\n                                            d=\"M5.66406 5.66663H5.67406M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                            stroke=\"#7A5AF8\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n                                            stroke-linejoin=\"round\" />\r\n                                    </svg>\r\n                                </span>\r\n                                <!-- orange tag -->\r\n                                <span *ngIf=\"iconName ==='orangeTag'\">\r\n                                    <svg width=\"21\" height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\"\r\n                                        xmlns=\"http://www.w3.org/2000/svg\">\r\n                                        <path\r\n                                            d=\"M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                            fill=\"#FFEAD5\" />\r\n                                        <path\r\n                                            d=\"M5.66406 5.66663H5.67406M19.2541 12.0766L12.0841 19.2466C11.8983 19.4326 11.6777 19.5801 11.4349 19.6807C11.1921 19.7814 10.9319 19.8332 10.6691 19.8332C10.4062 19.8332 10.146 19.7814 9.90318 19.6807C9.66039 19.5801 9.43981 19.4326 9.25406 19.2466L0.664062 10.6666V0.666626H10.6641L19.2541 9.25663C19.6266 9.63135 19.8356 10.1383 19.8356 10.6666C19.8356 11.195 19.6266 11.7019 19.2541 12.0766Z\"\r\n                                            stroke=\"#FB6514\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n                                            stroke-linejoin=\"round\" />\r\n                                    </svg>\r\n                                </span>\r\n                            </span>\r\n\r\n                            <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='duplicate'\">\r\n                                <svg *ngIf=\"(tempModalImage || selectImageArray)?.isParent\" width=\"20\" height=\"21\"\r\n                                    viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                                    <g clip-path=\"url(#clip0_568_103657)\">\r\n                                        <path\r\n                                            d=\"M2.08398 6.25001H1.66732C1.4463 6.25001 1.23434 6.16221 1.07806 6.00593C0.921782 5.84965 0.833984 5.63769 0.833984 5.41668V1.66668C0.833984 1.44566 0.921782 1.2337 1.07806 1.07742C1.23434 0.921141 1.4463 0.833344 1.66732 0.833344H5.41732C5.63833 0.833344 5.85029 0.921141 6.00657 1.07742C6.16285 1.2337 6.25065 1.44566 6.25065 1.66668V2.08334M4.58398 3.75001H8.33398C8.79422 3.75001 9.16732 4.12311 9.16732 4.58334V8.33334C9.16732 8.79358 8.79422 9.16668 8.33398 9.16668H4.58398C4.12375 9.16668 3.75065 8.79358 3.75065 8.33334V4.58334C3.75065 4.12311 4.12375 3.75001 4.58398 3.75001Z\"\r\n                                            stroke=\"#475467\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                    </g>\r\n                                    <rect x=\"4\" y=\"4\" width=\"5\" height=\"5\" fill=\"#475467\" />\r\n                                    <defs>\r\n                                        <clipPath id=\"clip0_568_103657\">\r\n                                            <rect width=\"19\" height=\"18\" fill=\"white\" />\r\n                                        </clipPath>\r\n                                    </defs>\r\n                                </svg>\r\n                                <svg *ngIf=\"!(tempModalImage || selectImageArray)?.isParent\"\r\n                                    xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\r\n                                    fill=\"none\">\r\n                                    <g clip-path=\"url(#clip0_2012_94635)\">\r\n                                        <path\r\n                                            d=\"M4.16797 13.1859H3.33464C2.89261 13.1859 2.46868 13.0103 2.15612 12.6977C1.84356 12.3852 1.66797 11.9612 1.66797 11.5192V4.01921C1.66797 3.57718 1.84356 3.15326 2.15612 2.84069C2.46868 2.52813 2.89261 2.35254 3.33464 2.35254H10.8346C11.2767 2.35254 11.7006 2.52813 12.0131 2.84069C12.3257 3.15326 12.5013 3.57718 12.5013 4.01921V4.85254M9.16797 8.18587H16.668C17.5884 8.18587 18.3346 8.93206 18.3346 9.85254V17.3525C18.3346 18.273 17.5884 19.0192 16.668 19.0192H9.16797C8.24749 19.0192 7.5013 18.273 7.5013 17.3525V9.85254C7.5013 8.93206 8.24749 8.18587 9.16797 8.18587Z\"\r\n                                            stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                            stroke-linejoin=\"round\" />\r\n                                    </g>\r\n                                    <defs>\r\n                                        <clipPath id=\"clip0_2012_94635\">\r\n                                            <rect width=\"20\" height=\"20\" fill=\"white\"\r\n                                                transform=\"translate(0 0.686035)\" />\r\n                                        </clipPath>\r\n                                    </defs>\r\n                                </svg>\r\n                            </span>\r\n                            <span *ngIf=\"(tempModalImage || selectImageArray)?.revopsType ==='employee'\">\r\n                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\"\r\n                                    fill=\"none\">\r\n                                    <g clip-path=\"url(#clip0_2012_94639)\">\r\n                                        <path\r\n                                            d=\"M14.1654 18.186V16.5194C14.1654 15.6353 13.8142 14.7875 13.1891 14.1623C12.5639 13.5372 11.7161 13.186 10.832 13.186H4.16536C3.28131 13.186 2.43346 13.5372 1.80834 14.1623C1.18322 14.7875 0.832031 15.6353 0.832031 16.5194V18.186M19.1654 18.186V16.5194C19.1648 15.7808 18.919 15.0633 18.4665 14.4796C18.014 13.8959 17.3805 13.479 16.6654 13.2944M13.332 3.29437C14.049 3.47795 14.6846 3.89495 15.1384 4.47963C15.5922 5.0643 15.8386 5.78339 15.8386 6.52354C15.8386 7.26368 15.5922 7.98277 15.1384 8.56744C14.6846 9.15212 14.049 9.56912 13.332 9.7527M10.832 6.51937C10.832 8.36032 9.33965 9.8527 7.4987 9.8527C5.65775 9.8527 4.16536 8.36032 4.16536 6.51937C4.16536 4.67842 5.65775 3.18604 7.4987 3.18604C9.33965 3.18604 10.832 4.67842 10.832 6.51937Z\"\r\n                                            stroke=\"#475467\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                            stroke-linejoin=\"round\" />\r\n                                    </g>\r\n                                    <defs>\r\n                                        <clipPath id=\"clip0_2012_94639\">\r\n                                            <rect width=\"20\" height=\"20\" fill=\"white\"\r\n                                                transform=\"translate(0 0.686035)\" />\r\n                                        </clipPath>\r\n                                    </defs>\r\n                                </svg>\r\n                            </span>\r\n\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n\r\n        <div class=\"modal-footer py-2 px-0\">\r\n            <button class=\"btn btn-outline\" (click)=\"model.close('ok')\">Close</button>\r\n        </div>\r\n    </div>\r\n</ng-template>","import {\r\n  Component,\r\n  OnInit,\r\n  OnDestroy,\r\n  NgZone,\r\n  ElementRef,\r\n  Renderer2,\r\n  ViewChild,\r\n  ChangeDetectorRef,\r\n  HostListener, AfterViewInit\r\n} from \"@angular/core\";\r\nimport * as am5 from \"@amcharts/amcharts5\";\r\nimport * as am5xy from \"@amcharts/amcharts5/xy\";\r\nimport am5themes_Animated from \"@amcharts/amcharts5/themes/Animated\";\r\nimport am5themes_Responsive from \"@amcharts/amcharts5/themes/Responsive\";\r\nimport * as am5percent from \"@amcharts/amcharts5/percent\";\r\nimport { TrafficService } from \"../../services/traffic.service\";\r\nimport { Subject, Subscription, takeUntil, filter } from 'rxjs';\r\nimport { NgbModal, NgbTooltip } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { GlobalStateService } from \"tango-app-ui-global\";\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { Router } from \"@angular/router\";\r\nimport { ExcelService } from \"../../services/excel.service\";\r\nimport * as mapboxgl from 'mapbox-gl';\r\nimport { ToastService } from \"tango-app-ui-shared\";\r\nimport { VideoUrlComponent } from \"../video-url/video-url.component\";\r\nimport * as bootstrap from \"bootstrap\";\r\nimport { FormBuilder, FormControl } from \"@angular/forms\";\r\nimport dayjs from 'dayjs';\r\n\r\n@Component({\r\n  selector: \"lib-traffic-analysis\",\r\n  templateUrl: \"./traffic-analysis.component.html\",\r\n  styleUrl: \"./traffic-analysis.component.scss\",\r\n})\r\nexport class TrafficAnalysisComponent implements OnInit, OnDestroy, AfterViewInit {\r\n  private lineroot: am5.Root;\r\n  private bouncedlineroot: am5.Root;\r\n  private potentialBuyerslineroot: am5.Root;\r\n  private engagerslineroot: am5.Root;\r\n  sortedColumn: any;\r\n  sortDirection: any;\r\n  private chart: any;\r\n  private tooltipElement: HTMLElement;\r\n  private readonly destroy$ = new Subject();\r\n  getCardData: any = [];\r\n  heatMapData: any = [];\r\n  getCardGraphData: any;\r\n  getSummaryTableData: any;\r\n  itemsPerPage = 10;\r\n  currentPage = 1;\r\n  totalItems = 1;\r\n  paginationSizes:any[] = [];\r\n  pageSize = 10;\r\n  offset: number = 0;\r\n  limit: number = 10;\r\n  getRecapVideoData: any;\r\n  tableobj: any;\r\n  heatMaproot: am5.Root;\r\n  valueType=\"actual\"\r\n  dateType=\"weekly\";\r\n  points:any = [];\r\n  headerData: any;\r\n  typeValue: any ='sum';\r\n  valueConversionRate: any;\r\n  conversionValue: any='';\r\n  searchValue: any;\r\n  loading: boolean =true;\r\n  noData: boolean =false;\r\n  cardloading: boolean =true;\r\n  cardNodata: boolean =false;\r\n  heatloading = true\r\n  heatnoData = false\r\n  storeIdarray: any =[];\r\n  getRecapData: any=[];\r\n  form: any;\r\n    form1: any;\r\n  dateLength: number;\r\n  performancenoData: boolean =false;\r\n  performanceLoading: boolean =true;\r\n  zoneDwellTimeSplitData: any=[];\r\n  storeOperationData: any=[];\r\n  footfallName: string='Actual Footfall';\r\n  bounceLabel: any;\r\n  footfallLabel: any;\r\n  colValue: any;\r\n  recaplaoding: boolean;\r\n  recapnoData: boolean;\r\n  recapsGrouped: any[]=[];\r\n  isAverage: boolean = false; // Toggle state for the switch\r\n  isDisabled: boolean =false;\r\n  zoneLoading = true;\r\n zoneNoData = false;\r\n  clientData: any;\r\n  featureConfig: any;\r\n  nob: boolean;\r\n  forecast: any;\r\n  maxFootfall: any;\r\n  minFootfall: any;\r\n  isConversion : boolean = false;\r\n  topStoresSelectControl: FormControl;\r\n  showReportProcessingCard: boolean = true;\r\n  yesterdayDate: string = '';\r\n  dataProcessedLoading = true;\r\n  isAverageFootfall = false;\r\n  isFootfallView:any;\r\n  @HostListener('document:click', ['$event'])\r\n  handleClickOutside(event: MouseEvent) {\r\n    const clickedInside = (event.target as HTMLElement).closest('.tooltip-popup, .label');\r\n    if (!clickedInside) {\r\n      this.activeTooltip = null;\r\n    }\r\n  }\r\n  activeTooltip: string | null = null;\r\n\r\n  auLocations: any[] = [];\r\n  mapOptions: google.maps.MapOptions = {\r\n    mapId: \"DEMO_MAP_ID\",\r\n    center: { lat: 0, lng: 0 },  // Initial center\r\n    zoom: 1,\r\n  };\r\n\r\n  performanceData:any = [];\r\n  mpaloading =true;\r\n  mapnoData = false;\r\n  footfalldatasets = [\r\n    { value: 'footfall', label: 'Footfall' },\r\n    { value: 'bounced', label: 'Bounced Footfall' },\r\n    { value: 'engager', label: 'Engagers' },\r\n    { value: 'missedOpportunity', label: 'Missed Opportunity' },\r\n    { value: 'potentialBuyer', label: 'Potential Buyer' },\r\n    { value: 'conversion', label: 'Conversion' }\r\n  ];\r\n  bouncedatasets = [\r\n    { value: 'footfall', label: 'Footfall' },\r\n    { value: 'bounced', label: 'Bounced Footfall' },\r\n    { value: 'engager', label: 'Engagers' },\r\n    { value: 'missedOpportunity', label: 'Missed Opportunity' },\r\n    { value: 'potentialBuyer', label: 'Potential Buyer' },\r\n    { value: 'conversion', label: 'Conversion' }\r\n  ];\r\n  topStores = [\r\n    { value: '5', label: 'Top 5 Stores' },\r\n    { value: '10', label: 'Top 10 Stores' },\r\n    { value: '15', label: 'Top 15 Stores' },\r\n  ];\r\n  constructor(\r\n    private zone: NgZone,\r\n    private el: ElementRef,\r\n    private renderer: Renderer2,private router:Router,private excelService: ExcelService,\r\n    private service: TrafficService,public gs: GlobalStateService, private fb:FormBuilder,\r\n    private cd: ChangeDetectorRef,private toast:ToastService, private modalService: NgbModal,\r\n  ) {\r\n \r\n         this.form = this.fb.group({\r\n           selectValue: new FormControl('') // Initialize as FormControl\r\n         });\r\n\r\n          this.form1 = this.fb.group({\r\n           selectValue: new FormControl('') // Initialize as FormControl\r\n         });\r\n  }\r\n  @ViewChild(\"t\", { static: false }) tooltip: NgbTooltip;\r\n  tooltipValue: string;\r\n  bounceValue1:any;\r\n  clientAPIData:any;\r\n  users:any;\r\n   sub2:Subscription | undefined\r\n   private isInitialized: boolean = false;\r\n   processType=\"missedopportunities\"\r\n   trendtypeValue: any ='average';\r\n   normalize:any;\r\n   isVMS: boolean = false;\r\n   mapKeyUrl:any;\r\n  ngOnInit(): void {\r\n    (mapboxgl as any).accessToken = 'pk.eyJ1IjoiYmFsYWppdGFuZ28iLCJhIjoiY20wZ2xiem55MDFxYTJ3b21zb3FjNHdwayJ9.nnIIzt7OeYlYHufGE8lFWQ';\r\n    this.offset = 0;\r\n    this.limit=10;\r\n    const userData: any = JSON.parse(localStorage.getItem(\"user-info\") || \"{}\");\r\n    this.users = userData;\r\n    this.topStoresSelectControl = new FormControl('5');\r\n  this.service.mapKeyUrl = this.mapKeyUrl;\r\n    // const clientData:any = JSON.parse(localStorage.getItem(\"client-details\") || \"{}\");\r\n    // this.clientData = clientData\r\n    // const clientAPIData:any = JSON.parse(localStorage.getItem(\"clientAPI-details\") || \"{}\");\r\n    // this.clientAPIData = clientAPIData\r\n    this.gs?.dataRangeValue\r\n      ?.pipe(takeUntil(this.destroy$),debounceTime(300),)\r\n      .subscribe((data: any) => {\r\n        if(data){\r\n          this.headerData = data;\r\n          this.valueConversionRate='';\r\n          this.dateLength = getDaysBetweenDates(data?.date.startDate, data?.date.endDate);\r\n          if (this.dateLength > 28)\r\n            this.dateType = \"monthly\";\r\n          else if (this.dateLength > 5)\r\n            this.dateType = \"weekly\";\r\n          else if(this.dateLength === 0)\r\n            this.dateType = \"weekly\";\r\n          this.valueType=\"actual\";\r\n          this.typeValue=\"sum\"\r\n          this.isAverage = false\r\n          this.isAverageFootfall = false\r\n          this.checkTodayReportStatus();\r\n          \r\n        }\r\n      });\r\n    \r\n  }  \r\n  \r\n  checkTodayReportStatus(): void {\r\n    this.dataProcessedLoading = true;\r\n    const reportParams = {\r\n      clientId: this.headerData?.client,\r\n      fromDate: this.headerData?.date?.startDate,\r\n      toDate: this.headerData?.date?.endDate\r\n    };\r\n    this.service.getCheckTodayReportStatus(reportParams)\r\n    .pipe(takeUntil(this.destroy$))\r\n    .subscribe({\r\n      next: (res: any) => {\r\n        this.dataProcessedLoading = false\r\n        this.showReportProcessingCard = res?.data?.reportSendStatus === true;\r\n        this.yesterdayDate = res?.data?.yesterday || '';\r\n        if (!this.showReportProcessingCard) {\r\n          this.initializeDashboardData()\r\n        }\r\n        this.cd.detectChanges();\r\n      },\r\n      error: (err) => {\r\n        // this.initializeDashboardData()\r\n        this.showReportProcessingCard = false;\r\n        this.dataProcessedLoading = false;\r\n        this.cd.detectChanges();\r\n      }\r\n    });\r\n    }\r\n\r\n    initializeDashboardData(): void {\r\n      this.dataProcessedLoading = true\r\n        this.sub2 = this.service?.getBrandDetails(this.users?.clientId ? this.users?.clientId:this.headerData?.client).pipe(takeUntil(this.destroy$)).subscribe({\r\n          next: (res:any) => {\r\n            if(res && res.code === 200){\r\n              this.dataProcessedLoading = false\r\n              this.clientData = res?.data;\r\n              this.featureConfig = this.clientData?.featureConfigs;\r\n              this.isFootfallView = this.featureConfig?.isFootfallView || false;\r\n              this.normalize = this.clientData?.featureConfigs?.isNormalized;\r\n              this.storeIdarray = this.headerData?.stores.filter((store: any) => store.checked).map((store: any) => store.storeId)\r\n              // Client 455, Store 26: always show full single-store traffic view\r\n              if (this.headerData?.client === '455' && this.storeIdarray.length === 1 && this.storeIdarray[0] === '455-26') {\r\n                this.isFootfallView = false;\r\n              }\r\n              this.tableobj = {\r\n                fromDate: this.headerData?.date.startDate,\r\n                toDate: this.headerData?.date.endDate,\r\n                storeId: this.headerData?.stores.filter((store: any) => store.checked).map((store: any) => store.storeId),\r\n                clientId: this.headerData?.client ? this.headerData?.client :'',\r\n                valueType: this.valueType,\r\n                nob:this.clientData.featureConfigs.isNOB,\r\n                dateType: this.dateType,\r\n                normalize: this.normalize\r\n                };\r\n              if (this.isFootfallView) {\r\n                this.getFootfallCard();\r\n                this.getMissedOpportunityCard();\r\n                 this.getTable();\r\n                  this.getZoneValue();\r\n                   if(this.storeIdarray.length === 1){\r\n                    this.getRecap();\r\n                   }\r\n              }else{\r\n                  this.getVlues();\r\n                if (!this.isInitialized) {\r\n                  this.isInitialized = true;\r\n                    this.isConversion =this.clientData.featureConfigs.isNOB\r\n              \r\n                  this.service?.togglenob(this.clientData.featureConfigs.isNOB);\r\n                  this.service?.toggleAverage(false);\r\n                }\r\n                this.isVMS  = this.clientData?.featureConfigs?.isVMS || false;\r\n                // Client 455, Store 26: show old image directory (lib-image-doc)\r\n                if (this.headerData?.client === '455' && this.storeIdarray.length === 1 && this.storeIdarray[0] === '455-26') {\r\n                  this.isVMS = false;\r\n                }\r\n                this.setConversionValue();\r\n                this.dataProcessedLoading = false\r\n                // this.conversionValue = this.clientData.featureConfigs.isNOB\r\n                // ? \"NoB Derived\"\r\n                // : this.clientData?.featureConfigs\r\n                //     ?.missedOpportunityCalculation === 'engagers-conversion'\r\n                // ? \"engagers\"\r\n                // : \"footfall\";\r\n                this.getFunnal();\r\n                this.getTable();\r\n                this.performance();\r\n                if(this.normalize === true){  \r\n                  this.zoneDwellTimeSplitData =[];\r\n                  this.zoneLoading = false;\r\n                  this.zoneNoData = true;\r\n                  this.storeOperationData =[];\r\n                  this.auLocations =[];\r\n                  this.mpaloading =false;\r\n                  this.mapnoData= true;\r\n                } else{\r\n                this.getZone();\r\n                this.getZoneValue();\r\n                this.getMap();\r\n                }\r\n                this.getIntial();\r\n                \r\n                this.nob = !!this.clientData?.featureConfigs?.isNOB;\r\n            \r\n                // this.conversionValue = this.nob ? 'NoB Derived' : this.clientData?.featureConfigs?.missedOpportunityCalculation ==='\"engagers-conversion\"' ? 'conversion': 'footfall' ;\r\n                // this.conversionValue = this.nob ? 'NoB Derived' : 'footfall';\r\n             \r\n                 this.objData = {\r\n                          fromDate: this.headerData?.date?.startDate,\r\n                          toDate: this.headerData?.date?.endDate,\r\n                          storeId: this.headerData?.stores.filter((store: any) => store.checked).map((store: any) => store.storeId),\r\n                          clientId: this.headerData?.client,\r\n                          processType: this.processType,\r\n                          dateType: this.type,\r\n                          filterBy: this.trendtypeValue,\r\n                          limit: 31,\r\n                          offset: 0,\r\n                          valueType: this.valueType,\r\n                          nob:this.nob,\r\n                          normalize: this.normalize\r\n                        };\r\n                        if (this.storeIdarray?.length === 1) {\r\n                          if(this.normalize === true){\r\n                            this.getRecapVideoData =[]\r\n                            this.recaplaoding =false;\r\n                            this.recapnoData =true;\r\n                          } else {\r\n                  this.getRecap();\r\n                          }\r\n                          this.trendtypeValue = 'actual';\r\n                          this.service?.togglenormalize(this.normalize);\r\n                        } else {\r\n                          this.trendtypeValue = 'average';\r\n                        }\r\n                        // Call the API after objData is fully prepared\r\n                        this.footfallTrend();\r\n                      \r\n                      this.dateLength = getDaysBetweenDates(this.headerData?.date.startDate, this.headerData?.date.endDate);\r\n                      if (this.headerData?.client === '452') {\r\n                        this.datasets = this.datasets.filter(item => item.value !== 'potentialBuyer');\r\n                      \r\n                        const conversionItem = this.datasets.find(item => item.value === 'conversion');\r\n                        if (conversionItem) {\r\n                          const convValue = this.clientData?.featureConfigs?.conversion?.value ?? 'X';\r\n                          conversionItem.label = `More than ${convValue} mins`;\r\n                        }\r\n                      \r\n                        const missedItem = this.datasets.find(item => item.value === 'missedopportunities');\r\n                        if (missedItem) {\r\n                          const from = this.clientData?.featureConfigs?.missedOpportunityFrom?.value ?? 'X';\r\n                          const to = this.clientData?.featureConfigs?.missedOpportunityTo?.value ?? 'Y';\r\n                          missedItem.label = `${from} - ${to} mins`;\r\n                        }\r\n                      }\r\n       \r\n                      const initialValue = this.getInitialValue();\r\n                       const selectControl = this.form.get('selectValue') as FormControl;\r\n        if (selectControl) {\r\n          selectControl.setValue(initialValue);\r\n        } \r\n                      this.form1.get('selectValue')?.setValue(initialValue);\r\n                      this.form1 = this.fb.group({\r\n                        topStoresSelectControl: this.topStoresSelectControl\r\n                      });\r\n                      this.topStoresSelectControl.valueChanges\r\n                    .pipe(takeUntil(this.destroy$))\r\n                    .subscribe((value: any) => {\r\n                      if (value !== undefined && value !== null && value !== '') {\r\n                        this.onValueChangeTopStores(value);\r\n                      }\r\n                    });\r\n                        this.detailedCharts= false;\r\n                        //   this.selectedTabs('footfall');\r\n                        //   this.cd.detectChanges();\r\n                        // } else {\r\n                        //   this.selectedTab = \"traffic\"\r\n                        //   this.footfallValue = \"traffic\";\r\n                        //   this.selctedValue ='Traffic Analysis';\r\n                        //   this.selectedTabs('traffic');\r\n                        // }\r\n                      this.datasetsCard = [\r\n                        { value: this.footfallValue, label: this.selctedValue },\r\n                        { value: \"demographic\", label: \"Demographic Analysis\" },\r\n                        { value: \"buyer\", label: \"Buyer Analysis\" },\r\n                      ];\r\n                      this.trafficData = [\r\n                        { value: 7, label: \"Last 7 Days\" },\r\n                        { value: 30, label: \"Last 30 Days\" },\r\n                      ];\r\n                      this.footfallDate =this.trafficData[0].value\r\n                      this.objDataTraffic = {\r\n                        fromDate: this.headerData?.date?.startDate,\r\n                        toDate: this.headerData?.date?.endDate,\r\n                        storeId: this.headerData?.stores.filter((store:any) => store.checked).map((store:any) => store.storeId),\r\n                        clientId:this.headerData?.client,\r\n                        processType: 'footfall',\r\n                        normalizedData: false,\r\n                        valueType :this.valueType,\r\n                        nob:this.nob,\r\n                        normalize: this.normalize\r\n                      };\r\n                      if(this.headerData?.client ==='459'){\r\n                        this.selectedTab = \"footfall\"\r\n                        this.footfallValue = \"footfall\";\r\n                        this.selctedValue ='Footfall Analysis';\r\n                        this.selectedTabs('footfall');\r\n                      } else {\r\n                        this.selectedTab = \"traffic\"\r\n                        this.footfallValue = \"traffic\";\r\n                        this.selctedValue ='Traffic Analysis';\r\n                        this.selectedTabs('traffic');\r\n                      }\r\n                      \r\n                      this.chartNoData = false;\r\n                      this.chartloading = true;\r\n                      \r\n                      // this.cd?.detectChanges();\r\n                // localStorage.setItem(\"clientAPI-details\", JSON.stringify(this.clientData?.clientApi));\r\n              }\r\n            }\r\n            this.sub2?.unsubscribe()\r\n          },\r\n          error: (error) => {\r\n            this.sub2?.unsubscribe()\r\n            this.dataProcessedLoading = false\r\n          }\r\n        })\r\n        this.cd.detectChanges();\r\n      // Only process the latest data after debounce time\r\n      // this.initMap();\r\n      this.tooltipValue = \"Default Tooltip Text\";\r\n        if (this.storeIdarray?.length === 1 && this.headerData?.date?.startDate === this.headerData?.date?.endDate) {\r\n          this.isDisabled = true\r\n        } else {\r\n          this.isDisabled = false\r\n        }\r\n\r\n        \r\n    }\r\n    \r\n\r\n  setConversionValue() {\r\n    const conversionType = this.clientData?.featureConfigs?.conversionCalculation;\r\n    const isNOB = this.clientData?.featureConfigs?.isNOB;\r\n  \r\n    if (isNOB) {\r\n      switch (conversionType) {\r\n        case 'footfall-count':\r\n          this.conversionValue = 'footfall';\r\n          break;\r\n        case 'engagers-count':\r\n          this.conversionValue = 'engagers';\r\n          break;\r\n        case 'billable-entities':\r\n          this.conversionValue = 'Potential Buyers';\r\n          break;\r\n        default:\r\n          this.conversionValue = 'footfall';\r\n      }\r\n    } else {\r\n      this.conversionValue = 'footfall';\r\n    }\r\n  }\r\n  \r\n  isRelevantConversion(value: string): boolean {\r\n    return ['footfall', 'engagers', 'Potential Buyers', 'NoB Derived'].includes(value);\r\n  }\r\n  getVlues() {\r\n    if (this.headerData?.client === '452') {\r\n      this.footfalldatasets = [\r\n        { value: 'footfall', label: 'Footfall' },\r\n        { value: 'bounced', label: `Less than ${this.featureConfig?.bouncedLimit.value} mins Footfall` },\r\n        { value: 'engager', label: `More than ${this.featureConfig?.bouncedLimit.value} mins` },\r\n        { value: 'missedOpportunity', label: `${this.featureConfig?.missedOpportunityFrom.value} - ${this.featureConfig?.missedOpportunityTo.value} mins` },\r\n        { value: 'conversion', label: `More than ${this.featureConfig?.conversion.value} mins` }\r\n      ];\r\n      this.bouncedatasets = [\r\n        { value: 'footfall', label: 'Footfall' },\r\n        { value: 'bounced', label: `Less than ${this.featureConfig?.bouncedLimit.value} mins Footfall` },\r\n        { value: 'engager', label: `More than ${this.featureConfig?.bouncedLimit.value} mins` },\r\n        { value: 'missedOpportunity', label: `${this.featureConfig?.missedOpportunityFrom.value}-${this.featureConfig?.missedOpportunityTo.value} mins` },\r\n        { value: 'conversion', label: `More than ${this.featureConfig?.conversion.value} mins` }\r\n      ];\r\n    } \r\n\r\n    this.footfallValue1 = this.footfalldatasets[0].value;\r\n    this.bounceValue1 = this.bouncedatasets[1].value;\r\n    this.footfallLabel = this.footfalldatasets[0].label;\r\n    this.bounceLabel = this.bouncedatasets[1].label;\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    // Initialize tooltips after the view is initialized\r\n    const tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle=\"tooltip\"]'));\r\n    tooltipTriggerList.forEach(function (tooltipTriggerEl) {\r\n      new bootstrap.Tooltip(tooltipTriggerEl);\r\n    });\r\n  }\r\n  getFilteredBounceDatasets() {\r\n    return this.bouncedatasets.filter(dataset => dataset.value !== this.footfallValue1);\r\n  }\r\n  \r\n  // Filter the footfall options when the bounceValue changes\r\n  getFilteredFootfallDatasets() {\r\n    return this.footfalldatasets.filter(dataset => dataset.value !== this.bounceValue1);\r\n  }\r\n  footfallValue1='footfall'\r\n  onValueChange(evt: any) {\r\n    this.footfallValue1 = evt.target.value;\r\nif(evt.target.value == 'footfall')\r\n  this.footfallLabel = 'Footfall'\r\nelse if(evt.target.value == 'bounced')\r\n  this.footfallLabel = this.headerData?.client === '452'?`Less than ${this.featureConfig?.bouncedLimit.value} mins Footfall`: 'Bounced Footfall'\r\nelse if(evt.target.value == 'engager')\r\n  this.footfallLabel = this.headerData?.client === '452'?`More than ${this.featureConfig?.bouncedLimit.value} mins`: 'Engagers'\r\nelse if(evt.target.value == 'missedOpportunity')\r\n  this.footfallLabel = this.headerData?.client === '452'?`${this.featureConfig?.missedOpportunityFrom.value}-${this.featureConfig?.missedOpportunityTo.value} mins`: 'Missed Opportunity'\r\nelse if(evt.target.value == 'potentialBuyer')\r\n  this.footfallLabel = 'Potential Buyer'\r\nelse if(evt.target.value == 'conversion')\r\n  this.footfallLabel = this.headerData?.client === '452'?`More than ${this.featureConfig?.conversion.value} mins`: 'conversion'\r\n    if(this.footfallValue1 !== this.bounceValue1)\r\n      this.performance();\r\n    else \r\n    this.toast.getErrorToast('Same value not filtered')\r\n  }\r\n  onBounceChange(evt: any) {\r\n    this.bounceValue1 = evt.target.value;\r\n    if(evt.target.value == 'footfall')\r\n      this.bounceLabel = 'Footfall'\r\n    else if(evt.target.value == 'bounced')\r\n      this.bounceLabel = this.headerData?.client === '452'?`Less than ${this.featureConfig?.bouncedLimit.value} mins Footfall`: 'Bounced Footfall'\r\n    else if(evt.target.value == 'engager')\r\n      this.bounceLabel = this.headerData?.client === '452'?`More than ${this.featureConfig?.bouncedLimit.value} mins`: 'Engagers'\r\n    else if(evt.target.value == 'missedOpportunity')\r\n      this.bounceLabel = this.headerData?.client === '452'?`${this.featureConfig?.missedOpportunityFrom.value}-${this.featureConfig?.missedOpportunityTo.value} mins`: 'Missed Opportunity'\r\n    else if(evt.target.value == 'potentialBuyer')\r\n      this.bounceLabel = 'Potential Buyer'\r\n    else if(evt.target.value == 'conversion')\r\n      this.bounceLabel = this.headerData?.client === '452' ? `More than ${this.featureConfig?.conversion.value} mins` : 'conversion'\r\n    if(this.footfallValue1 !== this.bounceValue1)\r\n    this.performance();\r\n  else \r\n  this.toast.getErrorToast('Same value not filtered')\r\n  }\r\n  convertPercentToPixels(percent: string, maxPercent: number, baseDimension: number): number {\r\n    // Remove the '%' sign and parse the value\r\n    const value = parseFloat(percent.replace('%', ''));\r\n    if (isNaN(value)) return 0;\r\n  \r\n    // Calculate pixel value based on the maximum percentage and base dimension\r\n    return (value / maxPercent) * baseDimension;\r\n  }\r\n  \r\n\r\n  getMaxPercentage(data: any[], field: string): number {\r\n    // Extract and return the maximum percentage value from the field\r\n    return Math.max(...data.map(item => parseFloat(item[field]) || 0));\r\n  }\r\n  \r\n  // normalizeData(data: any[]): any[] {\r\n  //   const maxTopPercent = Math.max(...data.map(item => parseFloat(item.top.replace('%', ''))));\r\n  //   const maxLeftPercent = Math.max(...data.map(item => parseFloat(item.left.replace('%', ''))));\r\n  \r\n  //   return data.map(item => ({\r\n  //     ...item,\r\n  //     top: this.scalePercent(item.top, maxTopPercent) + '%',\r\n  //     left: this.scalePercent(item.left, maxLeftPercent) + '%'\r\n  //   }));\r\n  // }\r\n  \r\n  scalePercent(percent: string, maxPercent: number): string {\r\n    const percentValue = parseFloat(percent.replace('%', ''));\r\n    return ((percentValue / maxPercent) * 100).toFixed(2);\r\n  }\r\n// Toggle the tooltip display\r\ntoggleTooltip(pointName: string) {\r\n  this.activeTooltip = this.activeTooltip === pointName ? null : pointName;\r\n}\r\n\r\nperformance(){\r\n  this.performanceLoading = true;\r\n  this.performancenoData = false;\r\n  let obj = {\r\n    clientId:this.headerData?.client,\r\n    fromDate: this.headerData?.date.startDate,\r\n    toDate: this.headerData?.date.endDate,\r\n    normalize: this.normalize,\r\n    storeId: this.headerData?.stores.filter((store:any) => store.checked).map((store:any) => store.storeId),\r\n   processtype1: this.footfallValue1,\r\n   processtype2 : this.bounceValue1,\r\n   topStores: parseInt(this.topStoresSelectControl.value),\r\n  };\r\n  this.service.performanceMatrix(obj).pipe(takeUntil(this.destroy$))\r\n  ?.subscribe({\r\n    next: (res: any) => {\r\n      if (res && res.code === 200) {\r\n        this.performanceData = res?.data?.performanceData\r\n        // this.performanceData = this.normalizeData(this.performanceData);\r\n        // Calculate maximum percentages\r\n        // const maxTop = Math.max(...this.performanceData.map((item:any) => parseFloat(item.top.replace('%', ''))));\r\n        // const maxLeft = Math.max(...this.performanceData.map((item:any) => parseFloat(item.left.replace('%', ''))));\r\n        \r\n        // Convert performance data to pixel values\r\n        this.points = this.performanceData.map((data: any) => ({\r\n          name: data.storeName,\r\n          storeId: data.storeId,\r\n          avgFootfall: data.avg,\r\n          openTime: data.avgOpenTime,\r\n          closeTime: data.avgCloseTime,\r\n          top: data.top, // Assuming 500px as the base height\r\n          left: data.left  // Assuming 1000px as the base width\r\n        })); \r\n        this.performanceLoading = false;\r\n        this.performancenoData = false;\r\n      } else {\r\n        this.performanceLoading = false;\r\n        this.performancenoData = true;\r\n      }\r\n      }\r\n    })\r\n  }\r\n\r\n  onValueChangeTopStores(selected: any): void {\r\n    const parsedValue = parseInt(selected?.value ?? selected, 10);\r\n    if (!isNaN(parsedValue)) {\r\n      this.performance();\r\n    }\r\n  }\r\n  getTooltipText(): string {\r\n    // Logic to determine the tooltip text\r\n    return \"Dynamic Tooltip Text \" + new Date().toLocaleTimeString();\r\n  }\r\n\r\n  getFunnal(){\r\n    this.tableobj.valueType= this.valueType,\r\n     this.tableobj.fromDate = this.headerData?.date.startDate;\r\n     this.tableobj.toDate = this.headerData?.date.endDate;\r\n     if(this.conversionValue === 'footfall'){\r\n      this.tableobj.conversiontype = 'footfall-count';\r\n     } if (this.conversionValue === 'engagers'){\r\n      this.tableobj.conversiontype = 'engagers-count';\r\n     }if (this.conversionValue === 'Potential Buyers'){\r\n      this.tableobj.conversiontype = 'billable-count';\r\n     } if (this.conversionValue === 'NoB Derived'){\r\n      this.tableobj.conversiontype = 'nob';\r\n     }\r\n     \r\n    delete this.tableobj.offset;\r\n    delete this.tableobj.recapVideoDate;\r\n    delete this.tableobj.limit; \r\n    delete this.tableobj.export;\r\n    delete this.tableobj.sort;\r\n    delete this.tableobj.sortBy;\r\n    this.heatloading = true;\r\n    this.heatnoData = false;\r\n   delete this.tableobj.dateType\r\n    this.service\r\n      .getFunnelCards(this.tableobj)\r\n      .pipe(takeUntil(this.destroy$))\r\n      ?.subscribe({\r\n        next: (res: any) => {\r\n          if (res && res.code === 200) {\r\n            // this.getCardData = res?.data?.card;\r\n            this.heatMapData = res?.data?.funnelChart;\r\n           \r\n            this.heatMap();\r\n            this.cd.detectChanges();\r\n          } else {\r\n            this.getCardData =[];\r\n            this.heatMapData =[];\r\n          this.heatloading = false\r\n          this.heatnoData = true\r\n          }\r\n        },\r\n        error: (err: any) => {\r\n          this.getCardData =[];\r\n          this.heatMapData =[];\r\n          this.cd.detectChanges();\r\n        },\r\n        complete: () => {},\r\n      });\r\n  }\r\n  getFootfallCardData:any=[];\r\n  getConversionCardData:any=[];\r\n  getBouncedCardData:any =[];\r\n  getEngagersCardData:any=[];\r\n  getPotentialBuyersCardData:any =[];\r\n  getMissedOpportunityData:any =[];\r\n  getPotentialBuyersData:any=[];\r\n  getIntial(){\r\n    delete this.tableobj.recapVideoDate;\r\n    delete this.tableobj.sort;\r\n    delete this.tableobj.sortBy;\r\n    (this.tableobj.valueType = this.valueType),\r\n    (this.tableobj.fromDate = this.headerData?.date.startDate);\r\n  this.tableobj.toDate = this.headerData?.date.endDate;\r\n  this.getFootfallCard();\r\n  this.getConversionCard();\r\n  this.getBouncedCard();\r\n  this.getEngagersCard();\r\n  this.getPotentialBuyersCard();\r\n  this.getMissedOpportunityCard();\r\n  this.getPotentialBuyers();\r\n  }\r\n  footfallloading =true;\r\n  footfallNodata =false;\r\n  getFootfallCard(){\r\n    this.footfallloading =true;\r\n    this.footfallNodata =false;\r\n    delete this.tableobj?.offset;\r\n    delete this.tableobj?.limit;\r\n    delete this.tableobj?.export;\r\n    this.tableobj.dateType = this.dateType;\r\n    console.log(\"🚀 ~ TrafficAnalysisComponent ~ getFootfallCard ~ this.tableobj:\", this.tableobj)\r\n    this.service\r\n      .getFootdfallCardList(this.tableobj)\r\n      .pipe(takeUntil(this.destroy$))\r\n      ?.subscribe({\r\n        next: (res: any) => {\r\n          if (res && res.code === 200) {\r\n            this.getFootfallCardData = res?.data;\r\n          if(this.getFootfallCardData?.data?.footfall?.data.length){\r\n            this.footfalllineCharts();\r\n            this.footfallloading =false;\r\n            this.footfallNodata =false;\r\n          } else {\r\n          this.getFootfallCardData =[];\r\n          this.footfallloading =false;\r\n          this.footfallNodata =true;\r\n          }\r\n          } else { \r\n          this.getFootfallCardData =[];\r\n          this.footfallloading =false;\r\n          this.footfallNodata =true;\r\n        }\r\n      },\r\n      error: (err: any) => {\r\n        this.getFootfallCardData =[];\r\n        this.footfallloading =false;\r\n        this.footfallNodata =true;\r\n        this.cd.detectChanges();\r\n      }, \r\n      })\r\n  }\r\n  setConversionType(conversionValue: string): string {\r\n    const map: Record<string, string> = {\r\n      'footfall': 'footfall-count',\r\n      'engagers': 'engagers-count',\r\n      'Potential Buyers': 'billable-count',\r\n      'NoB Derived': 'nob',\r\n    };\r\n    return map[conversionValue] || '';\r\n  }\r\n  \r\n  getConversionCard(){\r\n    const { tableobj } = this;\r\n    delete tableobj.offset;\r\n    delete tableobj.limit;\r\n    delete tableobj.export;\r\n    tableobj.dateType = this.dateType;\r\n    tableobj.conversiontype = this.setConversionType(this.conversionValue);\r\n       this.service\r\n         .getConversionCardList(this.tableobj)\r\n         .pipe(takeUntil(this.destroy$))\r\n         ?.subscribe({\r\n           next: (res: any) => {\r\n             if (res && res.code === 200) {\r\n               this.getConversionCardData = res?.data;\r\n              //  if (this.nob) {\r\n              //   this.valueConversionRate = this.getConversionCardData?.conversion?.nob?.nob;\r\n              //   this.conversionValue = 'NoB Derived';\r\n              // } else if (this.clientData?.featureConfigs?.missedOpportunityCalculation === 'engagers-conversion') {\r\n              //   this.valueConversionRate = this.getConversionCardData?.conversion?.engagers?.rate;\r\n              //   this.conversionValue = 'engagers';\r\n              // } else {\r\n              //   this.valueConversionRate = this.getConversionCardData?.conversion?.footfall?.rate;\r\n              //   this.conversionValue = 'footfall';\r\n              // }\r\n\r\n              const conversionType = this.clientData?.featureConfigs?.conversionCalculation;\r\n              const isNOB = this.nob;\r\n            \r\n              if (isNOB) {\r\n                switch (conversionType) {\r\n                  case 'footfall-count':\r\n                    this.valueConversionRate = this.getConversionCardData?.conversion?.footfall?.rate;\r\n                    this.conversionValue = 'footfall';\r\n                    break;\r\n                  case 'engagers-count':\r\n                    this.valueConversionRate = this.getConversionCardData?.conversion?.engagers?.rate;\r\n                    this.conversionValue = 'engagers';\r\n                    break;\r\n                  case 'billable-entities':\r\n                    this.valueConversionRate = this.getConversionCardData?.conversion?.potentialBuyers?.rate;\r\n                    this.conversionValue = 'Potential Buyers';\r\n                    break;\r\n                  default:\r\n                    this.setDefaultConversion();\r\n                }\r\n              } else {\r\n                this.setDefaultConversion();\r\n              }\r\n             } else { \r\n              this.getConversionCardData =[];\r\n           }\r\n         },\r\n         error: (err: any) => {\r\n           this.getConversionCardData =[];\r\n           this.cd.detectChanges();\r\n         }, \r\n         })\r\n     }\r\n\r\n     setDefaultConversion() {\r\n      this.valueConversionRate = this.getConversionCardData?.conversion?.footfall?.rate;\r\n      this.conversionValue = 'footfall';\r\n    }\r\n     getConversionCard1(){\r\n      const { tableobj } = this;\r\n  delete tableobj.offset;\r\n  delete tableobj.limit;\r\n  delete tableobj.export;\r\n  tableobj.dateType = this.dateType;\r\n  tableobj.conversiontype = this.setConversionType(this.conversionValue);\r\n         this.service\r\n           .getConversionCardList(this.tableobj)\r\n           .pipe(takeUntil(this.destroy$))\r\n           ?.subscribe({\r\n             next: (res: any) => {\r\n               if (res && res.code === 200) {\r\n                 this.getConversionCardData = res?.data;\r\n                 if(this.conversionValue === 'footfall'){\r\n                  this.tableobj.conversiontype = 'footfall-count';  this.valueConversionRate = this.getConversionCardData?.conversion?.footfall?.rate;\r\n                 }  if (this.conversionValue === 'engagers'){\r\n                  this.tableobj.conversiontype = 'engagers-count'; \r\n                  this.valueConversionRate = this.getConversionCardData?.conversion?.engagers?.rate;\r\n                 }if (this.conversionValue === 'Potential Buyers'){\r\n                  this.tableobj.conversiontype = 'billable-count'; \r\n                  this.valueConversionRate = this.getConversionCardData?.conversion?.potentialBuyers?.rate;\r\n                 } if (this.conversionValue === 'NoB Derived'){\r\n                  this.tableobj.conversiontype = 'nob'; this.valueConversionRate = this.getConversionCardData?.conversion?.nob?.nob;\r\n                 }\r\n               } else { \r\n                this.getConversionCardData =[];\r\n             }\r\n           },\r\n           error: (err: any) => {\r\n             this.getConversionCardData =[];\r\n             this.cd.detectChanges();\r\n           }, \r\n           })\r\n       }\r\n     bouncedNodata =false;\r\n     getBouncedCard(){\r\n      delete this.tableobj.offset;\r\n      delete this.tableobj.limit;\r\n      delete this.tableobj.export;\r\n      this.tableobj.dateType= this.dateType;\r\n      this.service\r\n        .getBouncedCardList(this.tableobj)\r\n        .pipe(takeUntil(this.destroy$))\r\n        ?.subscribe({\r\n          next: (res: any) => {\r\n            if (res && res.code === 200) {\r\n              this.getBouncedCardData = res?.data;\r\n              if(this.getBouncedCardData?.data?.bounced?.data.length){\r\n              this.bouncedlineCharts();\r\n              this.bouncedNodata =false;\r\n              } else{\r\n                this.getBouncedCardData =[];\r\n                this.bouncedNodata =true;\r\n              }\r\n            } else { \r\n              this.bouncedNodata =true;\r\n              this.getBouncedCardData =[];\r\n          }\r\n        },\r\n        error: (err: any) => {\r\n          this.getBouncedCardData =[];\r\n          this.bouncedNodata =true;\r\n          this.cd.detectChanges();\r\n        }, \r\n        }) \r\n    }\r\n    engagersNodata =false;\r\n    getEngagersCard(){\r\n      delete this.tableobj.offset;\r\n      delete this.tableobj.limit;\r\n      delete this.tableobj.export;\r\n      this.tableobj.dateType= this.dateType;\r\n      this.service\r\n        .getEngagersCardList(this.tableobj)\r\n        .pipe(takeUntil(this.destroy$))\r\n        ?.subscribe({\r\n          next: (res: any) => {\r\n            if (res && res.code === 200) {\r\n              this.getEngagersCardData = res?.data;\r\n              if(this.getEngagersCardData?.data?.engagers?.data.length){\r\n              this.engagerslineCharts();\r\n              this.engagersNodata =false;\r\n              } else {\r\n                this.getEngagersCardData =[];\r\n              this.engagersNodata =true;\r\n              }\r\n            } else { \r\n              this.getEngagersCardData =[];\r\n              this.engagersNodata =true;\r\n          }\r\n        },\r\n        error: (err: any) => {\r\n          this.getEngagersCardData =[];\r\n          this.engagersNodata =true;\r\n          this.cd.detectChanges();\r\n        }, \r\n        })\r\n    }\r\n    getMissedOpportunityCard(){\r\n      this.tableobj.country = this.headerData?.country.filter((countries:any) => countries.checked).map((countries:any) => countries.country);\r\n      delete this.tableobj.offset;\r\n      delete this.tableobj.limit;\r\n      delete this.tableobj.export;\r\n      this.tableobj.dateType= this.dateType;\r\n      this.service\r\n      .getMissedOpportunityCardList(this.tableobj)\r\n      .pipe(takeUntil(this.destroy$))\r\n      ?.subscribe({\r\n        next: (res: any) => {\r\n          if (res && res.code === 200) {\r\n            this.getMissedOpportunityData = res?.data;\r\n          } else { \r\n            this.getMissedOpportunityData =[];\r\n        }\r\n      },\r\n      error: (err: any) => {\r\n        this.getMissedOpportunityData =[];\r\n        this.cd.detectChanges();\r\n      }, \r\n      })\r\n    }\r\n    potentialNodata =false;\r\n    getPotentialBuyersCard(){\r\n      delete this.tableobj.offset;\r\n      delete this.tableobj.limit;\r\n      delete this.tableobj.export;\r\n      this.tableobj.dateType= this.dateType;\r\n      this.service\r\n        .getPotentialBuyersCardList(this.tableobj)\r\n        .pipe(takeUntil(this.destroy$))\r\n        ?.subscribe({\r\n          next: (res: any) => {\r\n            if (res && res.code === 200) {\r\n              this.getPotentialBuyersCardData = res?.data;\r\n              if(this.getPotentialBuyersCardData?.data?.potentialBuyers?.data.length){\r\n              this.potentiallineCharts();\r\n              this.potentialNodata =false;\r\n              } else { \r\n                this.getPotentialBuyersCardData =[];\r\n                this.potentialNodata =true;\r\n            }\r\n            }  else { \r\n              this.getPotentialBuyersCardData =[];\r\n              this.potentialNodata =true;\r\n          }\r\n        },\r\n        error: (err: any) => {\r\n          this.getPotentialBuyersCardData =[];\r\n          this.potentialNodata =true;\r\n          this.cd.detectChanges();\r\n        }, \r\n        })\r\n    }\r\n\r\n    getPotentialBuyers(){\r\n      delete this.tableobj.offset;\r\n      delete this.tableobj.limit;\r\n      delete this.tableobj.export;\r\n      this.tableobj.dateType= this.dateType;\r\n      this.service\r\n      .getPotentialBuyersDistributionCardList(this.tableobj)\r\n      .pipe(takeUntil(this.destroy$))\r\n      ?.subscribe({\r\n        next: (res: any) => {\r\n          if (res && res.code === 200) {\r\n            this.getPotentialBuyersData = res?.data?.card;\r\n          }  else { \r\n            this.getPotentialBuyersData =[];\r\n        }\r\n      },\r\n      error: (err: any) => {\r\n        this.getPotentialBuyersData =[];\r\n        this.cd.detectChanges();\r\n      }, \r\n      })\r\n    }\r\n\r\n\r\n  getRecap() {\r\n    this.recaplaoding =true;\r\n    this.recapnoData =false;\r\n    delete this.tableobj.processType; delete this.tableobj.normalizedData;\r\n     delete this.tableobj.dateType; delete this.tableobj.fromDate;\r\n     delete this.tableobj.toDate; delete this.tableobj.valueType; delete this.tableobj.processType;\r\n     delete this.tableobj.search; delete this.tableobj.offset;\r\n     delete this.tableobj.limit; delete this.tableobj.sortBy; delete this.tableobj.sort;\r\n     delete this.tableobj.export;\r\n     delete this.tableobj.normalize;\r\n     this.tableobj.recapVideoDate = this.headerData?.date.endDate;\r\n    this.service\r\n      .getRecapVideo(this.tableobj)\r\n      .pipe(takeUntil(this.destroy$))\r\n      ?.subscribe({\r\n        next: (res: any) => {\r\n          if (res && res.code === 200) {\r\n            this.getRecapVideoData = res?.data;\r\n            this.getRecapData = res?.data?.recapVideoData;\r\n            this.groupRecaps();\r\n            if(!this.getRecapData.length){\r\n              this.recaplaoding =false;\r\n            this.recapnoData =true;\r\n            } else {\r\n              this.recaplaoding =false;\r\n            this.recapnoData =false;\r\n            }\r\n            this.cd.detectChanges();    \r\n          } else{\r\n            this.getRecapVideoData =[]\r\n            this.recaplaoding =false;\r\n            this.recapnoData =true;\r\n          }\r\n        },\r\n        error: (err: any) => {\r\n          this.cd.detectChanges();\r\n          this.recaplaoding =false;\r\n          this.recapnoData =true;\r\n        },\r\n        complete: () => {},\r\n      });\r\n  }\r\n  groupRecaps() {\r\n    this.recapsGrouped = [];\r\n    let groupSize = this.getRecapData.length === 1 ? 1 : 2;\r\n    for (let i = 0; i < this.getRecapData.length; i += groupSize) {\r\n      this.recapsGrouped.push(this.getRecapData.slice(i, i + groupSize));\r\n    }\r\n    this.colValue = this.getRecapData.length === 1 ? 'col-md-12' : 'col-md-6';\r\n  }\r\n  videoClick(obj:any){\r\n    const modalRef = this.modalService.open(VideoUrlComponent, {\r\n      centered: true,\r\n      size: \"lg\",\r\n      scrollable: true,\r\n    });\r\n    modalRef.componentInstance.videoUrl = obj;\r\n    modalRef.componentInstance.date= this.headerData?.date?.endDate\r\n    modalRef.result.then((result: any) => {});\r\n  }\r\n  previousValue: any = null;\r\n  changeValue(method: any) {\r\n      this.previousValue = method;\r\n      if (this.previousValue === 'potentialBuyers') {\r\n        this.conversionValue = 'Potential Buyers';\r\n      } else {\r\n        this.conversionValue = method;\r\n      }\r\n   \r\n      const isConversion = this.isConversion === true;\r\n      const conversionTypeMap: any = {\r\n        footfall: {\r\n          rate: this.getConversionCardData?.conversion?.footfall?.rate,\r\n          type: 'footfall-count',\r\n          nob: isConversion ? true : false\r\n        },\r\n        engagers: {\r\n          rate: this.getConversionCardData?.conversion?.engagers?.rate,\r\n          type: 'engagers-count',\r\n          nob: isConversion ? true : false\r\n        },\r\n        potentialBuyers: {\r\n          rate: this.getConversionCardData?.conversion?.potentialBuyers?.rate,\r\n          type: 'billable-count',\r\n          nob: isConversion ? true : false\r\n        },\r\n        'NoB Derived': {\r\n          rate: this.getConversionCardData?.conversion?.nob?.nob,\r\n          type: 'nob',\r\n          nob: true // always true for NoB Derived\r\n        }\r\n      };\r\n      \r\n      const data = conversionTypeMap[this.previousValue];\r\n      \r\n      if (data) {\r\n        this.valueConversionRate = data.rate;\r\n        this.tableobj.nob = data.nob;\r\n        this.objData.nob = data.nob;\r\n        this.objDataTraffic.nob = data.nob;\r\n        this.nob = data.nob;\r\n        this.tableobj.conversiontype = data.type;\r\n      }\r\n      \r\n      // this.service.togglenob(this.tableobj.nob);\r\n      this.getFunnal(); \r\n      if(this.tableobj.nob ===false)\r\n      this.getConversionCard1(); \r\n      this.tableobj.fromDate= this.headerData?.date.startDate,\r\n      this.tableobj.toDate= this.headerData?.date.endDate,\r\n      this.tableobj.search = this.searchValue;\r\n      delete this.tableobj.recapVideoDate;\r\n      this.getTable();\r\n     this.footfallTrend();\r\n     if(this.headerData?.client ==='459'){\r\n      this.selectedTab = \"footfall\"\r\n      this.footfallValue = \"footfall\";\r\n      this.selctedValue ='Footfall Analysis';\r\n      this.selectedTabs('footfall');\r\n    } else {\r\n      this.selectedTab = \"traffic\"\r\n      this.footfallValue = \"traffic\";\r\n      this.selctedValue ='Traffic Analysis';\r\n      this.selectedTabs('traffic');\r\n    }\r\n   \r\n    // }\r\n  }\r\n \r\n\r\n  getTable() {\r\n    this.limit =10;\r\n    this.tableobj.offset = this.offset = this.currentPage -1;\r\n    this.loading = true;\r\n    this.noData = false;\r\n    delete this.tableobj.processType;\r\n    delete this.tableobj.normalizedData;\r\n    delete this.tableobj.dateType;\r\n    (this.tableobj.limit = this.limit);\r\n    (this.tableobj.search = this.searchValue), \r\n     (this.tableobj.valueType = this.typeValue); \r\n     (this.tableobj.conversiontype = this.tableobj.conversiontype);\r\n     this.tableobj.export = false;\r\n     this.service\r\n      .getSummaryTableList(this.tableobj)\r\n      ?.pipe(takeUntil(this.destroy$))\r\n      ?.subscribe({\r\n        next: (res: any) => {\r\n          if (res && res.code === 200) {\r\n            if(res?.data.summaryData.length ===0){\r\n              this.getSummaryTableData =[]\r\n              this.loading = false;\r\n              this.noData = true;\r\n              this.totalItems = 0; \r\n            } else {\r\n            this.getSummaryTableData = res?.data.summaryData;\r\n            this.totalItems = res.data?.totalCount;\r\n        this.storeCode =res.data?.storeCodeStatus\r\n            this.setPaginationSizes();\r\n            this.loading = false;\r\n            this.noData = false;\r\n            }\r\n          } else {\r\n            this.getSummaryTableData =[]\r\n            this.loading = false;\r\n            this.noData = true;\r\n            this.totalItems = 0; \r\n          }\r\n          this.cd.detectChanges();\r\n        },\r\n        error: (err: any) => {\r\n          this.cd.detectChanges();\r\n        },\r\n        complete: () => {},\r\n      });\r\n  }\r\n  searchData() {\r\n    this.tableobj.fromDate= this.headerData?.date.startDate,\r\n    this.tableobj.toDate= this.headerData?.date.endDate,\r\n    this.tableobj.search = this.searchValue;\r\n    delete this.tableobj.recapVideoDate;\r\n    (this.tableobj.conversiontype = this.tableobj.conversiontype);\r\n    this.tableobj.export = false;\r\n    this.offset = 1;\r\n    this.tableobj.offset = this.offset -1;\r\n    this.limit=10;\r\n    this.getTable();\r\n  }\r\n\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  storeCode:any=false;\r\n  onPageChange(pageOffset: number) {\r\n    this.loading = true;\r\n    this.noData = false;\r\n    this.offset = Number(pageOffset);\r\n    this.tableobj.offset = this.offset -1;\r\n    (this.tableobj.limit = this.limit),\r\n    (this.tableobj.search = this.searchValue), \r\n     (this.tableobj.valueType = this.typeValue);\r\n    this.tableobj.fromDate= this.headerData?.date.startDate,\r\n    this.tableobj.toDate= this.headerData?.date.endDate,\r\n    this.tableobj.search = this.searchValue;\r\n    (this.tableobj.conversiontype = this.tableobj.conversiontype);\r\n    delete this.tableobj.recapVideoDate;\r\n    this.tableobj.export = false;\r\n    this.service\r\n    .getSummaryTableList(this.tableobj)\r\n    ?.pipe(takeUntil(this.destroy$))\r\n    ?.subscribe({\r\n      next: (res: any) => {\r\n        if (res && res.code === 200) {\r\n          if(res?.data.summaryData.length ===0){\r\n            this.getSummaryTableData =[]\r\n            this.loading = false;\r\n            this.noData = true;\r\n            this.totalItems = 0; \r\n          } else {\r\n          this.getSummaryTableData = res?.data.summaryData;\r\n          this.totalItems = res.data?.totalCount;\r\n          this.storeCode =res.data?.storeCodeStatus\r\n          this.loading = false;\r\n          this.noData = false;\r\n          }\r\n        } else {\r\n          this.getSummaryTableData =[]\r\n          this.loading = false;\r\n          this.noData = true;\r\n          this.totalItems = 0; \r\n        }\r\n      },\r\n      error: (err: any) => {\r\n        this.cd.detectChanges();\r\n      },\r\n      complete: () => {},\r\n    });\r\n  }\r\n\r\n  onPageSizeChange(pageSize: number) {\r\n    this.loading = true;\r\n    this.noData = false;\r\n    this.pageSize = Number(pageSize);\r\n    this.limit = Number(pageSize);\r\n    this.currentPage = 1;\r\n    this.offset = 0;\r\n    this.tableobj.offset = this.offset;\r\n    (this.tableobj.limit = this.limit),\r\n    (this.tableobj.valueType = this.typeValue);\r\n    this.tableobj.fromDate= this.headerData?.date.startDate,\r\n    this.tableobj.toDate= this.headerData?.date.endDate,\r\n    this.tableobj.search = this.searchValue;\r\n    (this.tableobj.conversiontype = this.tableobj.conversiontype);\r\n    delete this.tableobj.recapVideoDate;\r\n    this.tableobj.export = false;\r\n    this.service\r\n    .getSummaryTableList(this.tableobj)\r\n    ?.pipe(takeUntil(this.destroy$))\r\n    ?.subscribe({\r\n      next: (res: any) => {\r\n        if (res && res.code === 200) {\r\n          if(res?.data.summaryData.length ===0){\r\n            this.getSummaryTableData =[]\r\n            this.loading = false;\r\n            this.noData = true;\r\n            this.totalItems = 0; \r\n          } else {\r\n          this.getSummaryTableData = res?.data.summaryData;\r\n          this.totalItems = res.data?.totalCount;\r\n  this.storeCode =res.data?.storeCodeStatus\r\n          this.loading = false;\r\n          this.noData = false;\r\n          }\r\n        } else {\r\n          this.getSummaryTableData =[]\r\n          this.loading = false;\r\n          this.noData = true;\r\n          this.totalItems = 0; \r\n        }\r\n      },\r\n      error: (err: any) => {\r\n        this.cd.detectChanges();\r\n      },\r\n      complete: () => {},\r\n    });\r\n  }\r\n\r\n  onValueType(type:any){\r\n    this.tableobj.fromDate= this.headerData.date.startDate,\r\n    this.tableobj.toDate= this.headerData.date.endDate,\r\n    delete this.tableobj.recapVideoDate;\r\n    this.tableobj.export = false;\r\n     this.typeValue =type;\r\n    this.tableobj.valueType =type;\r\n    (this.tableobj.conversiontype = this.tableobj.conversiontype);\r\n    this.getTable();\r\n  }\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next(true);\r\n    this.destroy$.complete();\r\n    this.zone.runOutsideAngular(() => {\r\n      if (this.lineroot) {\r\n        this.lineroot.dispose();\r\n      }\r\n      if (this.bouncedlineroot) {\r\n        this.bouncedlineroot.dispose();\r\n      }\r\n      if (this.potentialBuyerslineroot) {\r\n        this.potentialBuyerslineroot.dispose();\r\n      }\r\n      if (this.engagerslineroot) {\r\n        this.engagerslineroot.dispose();\r\n      }\r\n      if (this.heatMaproot) {\r\n        this.heatMaproot.dispose();\r\n      } if (this.rootTrends) {\r\n        this.rootTrends.dispose();\r\n      }\r\n      if (this.dwellRoot) {\r\n        this.dwellRoot.dispose();\r\n      }\r\n      if (this.intervalId) {\r\n        clearInterval(this.intervalId);\r\n      }\r\n    });\r\n  }\r\n  // card line Charts Start\r\n\r\n  footfalllineCharts() {\r\n    setTimeout(() => {\r\n      const chartDiv = document.getElementById(\"Footfall\");\r\n      if (!chartDiv) {\r\n        return;\r\n      }\r\n      if (this.lineroot) {\r\n        this.lineroot.dispose();\r\n      }\r\n    let root: any;\r\n    root = am5.Root.new(\"Footfall\");\r\n    root.setThemes([\r\n      am5themes_Animated.new(root),\r\n      am5themes_Responsive.new(root),\r\n    ]);\r\n    let chart = root.container.children.push(\r\n      am5xy.XYChart.new(root, {\r\n        panX: true,\r\n        panY: true,\r\n        wheelX: \"panX\",\r\n        wheelY: \"zoomX\",\r\n        pinchZoomX: true,\r\n      })\r\n    );\r\n\r\n    // Add data\r\n    let data = this.getFootfallCardData?.data?.footfall?.data.map((item: any) => ({\r\n      date: new Date(item.date).getTime(), // Convert date string to timestamp\r\n      value: Number(item.value),\r\n    }));\r\n     // Ensure that data has at least 2 points for line chart\r\n     if (data.length === 1) {\r\n      const duplicatePoint = { ...data[0] }; // Clone the existing point\r\n      duplicatePoint.date += 1; // Add a small offset to the date\r\n      data.push(duplicatePoint); // Add the duplicate point to data\r\n    }\r\n    let cursor = chart.set(\r\n      \"cursor\",\r\n      am5xy.XYCursor.new(root, {\r\n        behavior: \"none\",\r\n      })\r\n    );\r\n    cursor.lineY.set(\"visible\", false);\r\n    // Create axes\r\n    let xAxis = chart.xAxes.push(\r\n      am5xy.DateAxis.new(root, {\r\n        maxDeviation: 0.5,\r\n        baseInterval: { timeUnit: \"day\", count: 1 },\r\n        renderer: am5xy.AxisRendererX.new(root, { }),\r\n      })\r\n    );\r\n    xAxis.get(\"renderer\").grid.template.set(\"forceHidden\", true);\r\n    xAxis.get(\"renderer\").labels.template.set(\"forceHidden\", true);\r\n\r\n    let yAxis = chart.yAxes.push(\r\n      am5xy.ValueAxis.new(root, {\r\n        renderer: am5xy.AxisRendererY.new(root, { }),\r\n      })\r\n    );\r\n    yAxis.get(\"renderer\").grid.template.set(\"forceHidden\", true);\r\n    yAxis.get(\"renderer\").labels.template.set(\"forceHidden\", true);\r\n\r\n    // Create series\r\n    let series = chart.series.push(\r\n      am5xy.LineSeries.new(root, {\r\n        name: \"Series\",\r\n        xAxis: xAxis,\r\n        yAxis: yAxis,\r\n        valueYField: \"value\",\r\n        valueXField: \"date\",\r\n        stroke: am5.color(0x00a3ff), // Set the line color here (red in this case)\r\n      })\r\n    );\r\n    series.bullets.push(function () {\r\n      let bulletCircle = am5.Circle.new(root, {\r\n        radius: 0,\r\n        fill: series.get(\"fill\")\r\n      });\r\n      return am5.Bullet.new(root, {\r\n        sprite: bulletCircle\r\n      })\r\n    })\r\n    series.data.setAll(data);\r\n    series.set(\r\n      \"tooltip\",\r\n      am5.Tooltip.new(root, {\r\n        labelText: \"{valueY}\",\r\n        getFillFromSprite: false, // Prevents the tooltip from inheriting color from the sprite\r\n        background: am5.Rectangle.new(root, {\r\n          fill: am5.color(0xdaf1ff), // Set the tooltip background color here (blue in this case)\r\n        }),\r\n      })\r\n    );\r\n    this.lineroot = root;\r\n  },0)\r\n  }\r\n  bouncedlineCharts() {\r\n    setTimeout(() => {\r\n      const chartDiv = document.getElementById(\"BouncedRate\");\r\n      if (!chartDiv) {\r\n        return;\r\n      }\r\n      if (this.bouncedlineroot) {\r\n        this.bouncedlineroot.dispose();\r\n      }\r\n    let root: any;\r\n    root = am5.Root.new(\"BouncedRate\");\r\n    root.setThemes([\r\n      am5themes_Animated.new(root),\r\n      am5themes_Responsive.new(root),\r\n    ]);\r\n    let chart = root.container.children.push(\r\n      am5xy.XYChart.new(root, {\r\n        panX: true,\r\n        panY: true,\r\n        wheelX: \"panX\",\r\n        wheelY: \"zoomX\",\r\n        pinchZoomX: true,\r\n      })\r\n    );\r\n\r\n    // Add data\r\n    let data = this.getBouncedCardData?.data?.bounced?.data.map((item: any) => ({\r\n      date: new Date(item.date).getTime(), // Convert date string to timestamp\r\n      value: Number(item.value),\r\n    }));\r\n    let cursor = chart.set(\r\n      \"cursor\",\r\n      am5xy.XYCursor.new(root, {\r\n        behavior: \"none\",\r\n      })\r\n    );\r\n    cursor.lineY.set(\"visible\", false);\r\n    // Create axes\r\n    let xAxis = chart.xAxes.push(\r\n      am5xy.DateAxis.new(root, {\r\n        maxDeviation: 0.2,\r\n        baseInterval: { timeUnit: \"day\", count: 1 },\r\n        renderer: am5xy.AxisRendererX.new(root, { minorGridEnabled: true }),\r\n      })\r\n    );\r\n    xAxis.get(\"renderer\").grid.template.set(\"forceHidden\", true);\r\n    xAxis.get(\"renderer\").labels.template.set(\"forceHidden\", true);\r\n\r\n    let yAxis = chart.yAxes.push(\r\n      am5xy.ValueAxis.new(root, {\r\n        renderer: am5xy.AxisRendererY.new(root, { pan: \"zoom\" }),\r\n      })\r\n    );\r\n    yAxis.get(\"renderer\").grid.template.set(\"forceHidden\", true);\r\n    yAxis.get(\"renderer\").labels.template.set(\"forceHidden\", true);\r\n\r\n    // Create series\r\n    let series = chart.series.push(\r\n      am5xy.LineSeries.new(root, {\r\n        name: \"Series\",\r\n        xAxis: xAxis,\r\n        yAxis: yAxis,\r\n        valueYField: \"value\",\r\n        valueXField: \"date\",\r\n        stroke: am5.color(0x00a3ff), // Set the line color here (red in this case)\r\n      })\r\n    );\r\n    series.bullets.push(function () {\r\n      let bulletCircle = am5.Circle.new(root, {\r\n        radius: 0,\r\n        fill: series.get(\"fill\")\r\n      });\r\n      return am5.Bullet.new(root, {\r\n        sprite: bulletCircle\r\n      })\r\n    })\r\n    series.data.setAll(data);\r\n    series.set(\r\n      \"tooltip\",\r\n      am5.Tooltip.new(root, {\r\n        labelText: \"{valueY}\",\r\n        getFillFromSprite: false, // Prevents the tooltip from inheriting color from the sprite\r\n        background: am5.Rectangle.new(root, {\r\n          fill: am5.color(0xdaf1ff), // Set the tooltip background color here (blue in this case)\r\n        }),\r\n      })\r\n    );\r\n    this.bouncedlineroot = root;\r\n  },0)\r\n  }\r\n\r\n  potentiallineCharts() {\r\n    setTimeout(() => {\r\n      const chartDiv = document.getElementById(\"PotentialBuyers\");\r\n      if (!chartDiv) {\r\n        return;\r\n      }\r\n      if (this.potentialBuyerslineroot) {\r\n        this.potentialBuyerslineroot.dispose();\r\n      }\r\n    let root: any;\r\n    root = am5.Root.new(\"PotentialBuyers\");\r\n    root.setThemes([\r\n      am5themes_Animated.new(root),\r\n      am5themes_Responsive.new(root),\r\n    ]);\r\n    let chart = root.container.children.push(\r\n      am5xy.XYChart.new(root, {\r\n        panX: true,\r\n        panY: true,\r\n        wheelX: \"panX\",\r\n        wheelY: \"zoomX\",\r\n        pinchZoomX: true,\r\n      })\r\n    );\r\n\r\n    // Add data\r\n    let data = this.getPotentialBuyersCardData?.data?.potentialBuyers?.data.map(\r\n      (item: any) => ({\r\n        date: new Date(item.date).getTime(), // Convert date string to timestamp\r\n        value: Number(item.value),\r\n      })\r\n    );\r\n    let cursor = chart.set(\r\n      \"cursor\",\r\n      am5xy.XYCursor.new(root, {\r\n        behavior: \"none\",\r\n      })\r\n    );\r\n    cursor.lineY.set(\"visible\", false);\r\n    // Create axes\r\n    let xAxis = chart.xAxes.push(\r\n      am5xy.DateAxis.new(root, {\r\n        maxDeviation: 0.2,\r\n        baseInterval: { timeUnit: \"day\", count: 1 },\r\n        renderer: am5xy.AxisRendererX.new(root, { minorGridEnabled: true }),\r\n      })\r\n    );\r\n    xAxis.get(\"renderer\").grid.template.set(\"forceHidden\", true);\r\n    xAxis.get(\"renderer\").labels.template.set(\"forceHidden\", true);\r\n\r\n    let yAxis = chart.yAxes.push(\r\n      am5xy.ValueAxis.new(root, {\r\n        renderer: am5xy.AxisRendererY.new(root, { pan: \"zoom\" }),\r\n      })\r\n    );\r\n    yAxis.get(\"renderer\").grid.template.set(\"forceHidden\", true);\r\n    yAxis.get(\"renderer\").labels.template.set(\"forceHidden\", true);\r\n\r\n    // Create series\r\n    let series = chart.series.push(\r\n      am5xy.LineSeries.new(root, {\r\n        name: \"Series\",\r\n        xAxis: xAxis,\r\n        yAxis: yAxis,\r\n        valueYField: \"value\",\r\n        valueXField: \"date\",\r\n        stroke: am5.color(0x00a3ff), // Set the line color here (red in this case)\r\n      })\r\n    );\r\n    series.bullets.push(function () {\r\n      let bulletCircle = am5.Circle.new(root, {\r\n        radius: 0,\r\n        fill: series.get(\"fill\")\r\n      });\r\n      return am5.Bullet.new(root, {\r\n        sprite: bulletCircle\r\n      })\r\n    })\r\n    series.data.setAll(data);\r\n    series.set(\r\n      \"tooltip\",\r\n      am5.Tooltip.new(root, {\r\n        labelText: \"{valueY}\",\r\n        getFillFromSprite: false, // Prevents the tooltip from inheriting color from the sprite\r\n        background: am5.Rectangle.new(root, {\r\n          fill: am5.color(0xdaf1ff), // Set the tooltip background color here (blue in this case)\r\n        }),\r\n      })\r\n    );\r\n    this.potentialBuyerslineroot = root;\r\n  },0)\r\n  }\r\n\r\n  engagerslineCharts() {\r\n    setTimeout(() => {\r\n      const chartDiv = document.getElementById(\"engagers\");\r\n      if (!chartDiv) {\r\n        return;\r\n      }\r\n      if (this.engagerslineroot) {\r\n        this.engagerslineroot.dispose();\r\n      }\r\n    let root: any;\r\n    root = am5.Root.new(\"engagers\");\r\n    root.setThemes([\r\n      am5themes_Animated.new(root),\r\n      am5themes_Responsive.new(root),\r\n    ]);\r\n    let chart = root.container.children.push(\r\n      am5xy.XYChart.new(root, {\r\n        panX: true,\r\n        panY: true,\r\n        wheelX: \"panX\",\r\n        wheelY: \"zoomX\",\r\n        pinchZoomX: true,\r\n      })\r\n    );\r\n\r\n    // Add data\r\n    let data = this.getEngagersCardData?.data?.engagers?.data.map((item: any) => ({\r\n      date: new Date(item.date).getTime(), // Convert date string to timestamp\r\n      value: Number(item.value),\r\n    }));\r\n    let cursor = chart.set(\r\n      \"cursor\",\r\n      am5xy.XYCursor.new(root, {\r\n        behavior: \"none\",\r\n      })\r\n    );\r\n    cursor.lineY.set(\"visible\", false);\r\n    // Create axes\r\n    let xAxis = chart.xAxes.push(\r\n      am5xy.DateAxis.new(root, {\r\n        maxDeviation: 0.2,\r\n        baseInterval: { timeUnit: \"day\", count: 1 },\r\n        renderer: am5xy.AxisRendererX.new(root, { minorGridEnabled: true }),\r\n      })\r\n    );\r\n    xAxis.get(\"renderer\").grid.template.set(\"forceHidden\", true);\r\n    xAxis.get(\"renderer\").labels.template.set(\"forceHidden\", true);\r\n\r\n    let yAxis = chart.yAxes.push(\r\n      am5xy.ValueAxis.new(root, {\r\n        renderer: am5xy.AxisRendererY.new(root, { pan: \"zoom\" }),\r\n      })\r\n    );\r\n    yAxis.get(\"renderer\").grid.template.set(\"forceHidden\", true);\r\n    yAxis.get(\"renderer\").labels.template.set(\"forceHidden\", true);\r\n\r\n    // Create series\r\n    let series = chart.series.push(\r\n      am5xy.LineSeries.new(root, {\r\n        name: \"Series\",\r\n        xAxis: xAxis,\r\n        yAxis: yAxis,\r\n        valueYField: \"value\",\r\n        valueXField: \"date\",\r\n        stroke: am5.color(0x00a3ff), // Set the line color here (red in this case)\r\n      })\r\n    );\r\n    series.bullets.push(function () {\r\n      let bulletCircle = am5.Circle.new(root, {\r\n        radius: 0,\r\n        fill: series.get(\"fill\")\r\n      });\r\n      return am5.Bullet.new(root, {\r\n        sprite: bulletCircle\r\n      })\r\n    })\r\n    series.data.setAll(data);\r\n    series.set(\r\n      \"tooltip\",\r\n      am5.Tooltip.new(root, {\r\n        labelText: \"{valueY}\",\r\n        getFillFromSprite: false, // Prevents the tooltip from inheriting color from the sprite\r\n        background: am5.Rectangle.new(root, {\r\n          fill: am5.color(0xdaf1ff), // Set the tooltip background color here (blue in this case)\r\n        }),\r\n      })\r\n    );\r\n    this.engagerslineroot = root;\r\n  },0)\r\n  }\r\n  // card line Charts End\r\n\r\n  heatMap() {\r\n    this.heatloading = false\r\n    this.heatnoData = false\r\n    setTimeout(() => {\r\n      const chartDiv = document.getElementById(\"chartdiv\");\r\n      if (!chartDiv) {\r\n        return;\r\n      }\r\n      if (this.heatMaproot) {\r\n        this.heatMaproot.dispose();\r\n      }\r\n    let root = am5.Root.new(\"chartdiv\");\r\n    root.setThemes([am5themes_Animated.new(root)]);\r\n\r\n    let chart = root.container.children.push(\r\n      am5percent.SlicedChart.new(root, {\r\n        layout: root.verticalLayout,\r\n      })\r\n    );\r\n  \r\n      let data = this.heatMapData;\r\n    if (this.headerData?.client === '452') {\r\n      data = data.filter((item: any) => item.category !== 'Potential Buyers');\r\n      data = data.map((item:any) => {\r\n        const category = item.category.toLowerCase();\r\n      \r\n        const updatedCategory =\r\n          category === 'engagers'\r\n            ? `More than ${this.featureConfig?.bouncedLimit.value} mins`\r\n            : category === 'bounced'\r\n            ? `Less than ${this.featureConfig?.bouncedLimit.value} mins`\r\n            : category === 'conversion'\r\n            ? `More than ${this.featureConfig?.conversion.value} mins`\r\n            : category === 'footfall'\r\n            ? 'Footfall'\r\n            : `${this.featureConfig?.missedOpportunityFrom.value}-${this.featureConfig?.missedOpportunityTo.value} mins`;\r\n      \r\n        return {\r\n          ...item,\r\n          category: updatedCategory,\r\n        };\r\n      });\r\n      }\r\n      \r\n    data.sort((a:any, b:any) => b.value - a.value);\r\n    let series = chart.series.push(\r\n      am5percent.FunnelSeries.new(root, {\r\n        alignLabels: false,\r\n        orientation: \"horizontal\",\r\n        valueField: \"value\",\r\n        categoryField: \"category\",\r\n        bottomRatio: 1,\r\n      })\r\n    );\r\n\r\n      \r\n    series.data.setAll(data);\r\n    series.appear();\r\n    // Update the label template to include the percentage\r\n    series.labels.template.setAll({\r\n      populateText: true,\r\n      text: \"{category} ({count}%)\\n\\n{value}\",\r\n      fontSize:\"13px\",\r\n      fontWeight:\"400\",\r\n      textAlign:\"center\"\r\n    });\r\n      \r\n    this.heatMaproot = root;\r\n    chart.appear(1000, 100);\r\n  },0);\r\n\r\n  }\r\n\r\n  type: any = \"weekly\";\r\n  selectPlan(type: any) {\r\n    this.type = type;\r\n  }\r\n\r\n  // Toggle function for the switch\r\n  toggleAverage(evt:any) {\r\n    // this.tableobj.nob =true;\r\n    this.isAverage = evt.target.checked;\r\n    this.service.toggleAverage(this.isAverage);\r\n    this.service?.togglenob(this.tableobj.nob);\r\n    this.tableobj.fromDate= this.headerData.date.startDate,\r\n    this.tableobj.toDate= this.headerData.date.endDate,\r\n    delete this.tableobj.recapVideoDate;\r\n    delete this.tableobj.limit; delete this.tableobj.export;\r\n    delete this.tableobj.offset;\r\n    if(this.isAverage === true){\r\n    this.valueType = 'average';\r\n     this.footfallName = 'Avg. Footfall'\r\n   this.tableobj.valueType =this.valueType;\r\n   this.objData.valueType =this.valueType;\r\n   this.objDataTraffic.valueType =this.valueType;\r\n  //  this.conversionValue = '';\r\n   this.typeValue='average';\r\n  //  this.valueConversionRate = this.getCardData?.conversion?.rate;\r\n  }  else {\r\n     this.footfallName = 'Actual Footfall'\r\n     this.valueType='actual';\r\n    this.tableobj.valueType ='actual';\r\n    this.objData.valueType ='actual';\r\n    this.objDataTraffic.valueType ='actual';\r\n    this.typeValue='sum';\r\n\r\n    // this.valueConversionRate = this.getCardData?.conversion?.rate;\r\n  }   \r\n  if (this.nob && this.clientData?.featureConfigs?.conversionCalculation === 'footfall-count') {\r\n    this.valueConversionRate = this.getConversionCardData?.conversion?.footfall?.rate;\r\n    this.conversionValue = 'footfall';\r\n  } else if (this.nob && this.clientData?.featureConfigs?.conversionCalculation === 'engagers-count') {\r\n    this.valueConversionRate = this.getConversionCardData?.conversion?.engagers?.rate;\r\n    this.conversionValue = 'engagers';\r\n  } else if (this.nob && this.clientData?.featureConfigs?.conversionCalculation === 'billable-entities') {\r\n    this.valueConversionRate = this.getConversionCardData?.conversion?.potentialBuyers?.rate;\r\n    this.conversionValue = 'Potential Buyers';\r\n  }\r\n//   if(this.tableobj.nob){\r\n//     this.valueConversionRate = this.getConversionCardData?.conversion?.nob.nob;\r\n//   this.conversionValue ='NoB Derived'\r\n// } else if (this.clientData?.featureConfigs?.missedOpportunityCalculation === 'engagers-conversion') {\r\n//   this.valueConversionRate = this.getConversionCardData?.conversion?.engagers?.rate;\r\n//   this.conversionValue = 'engagers';\r\n// } else {\r\n//   this.valueConversionRate = this.getConversionCardData?.conversion?.footfall?.rate;\r\n//   this.conversionValue = 'footfall';\r\n// }\r\n  this.previousValue = 'footfall'; \r\n  this.tableobj.normalize = this.normalize\r\n\r\n    this.getFunnal();\r\n    this.getFootfallCard();\r\n    this.getConversionCard();\r\n    this.getBouncedCard();\r\n    this.getEngagersCard();\r\n    this.getPotentialBuyersCard();\r\n    this.getMissedOpportunityCard();\r\n    this.getPotentialBuyers();\r\n    this.getTable();\r\n    this.footfallTrend();\r\n    if(this.headerData?.client ==='459'){\r\n      this.selectedTab = \"footfall\"\r\n      this.footfallValue = \"footfall\";\r\n      this.selctedValue ='Footfall Analysis';\r\n    this.selectedTabs('footfall');\r\n    } else {\r\n      this.selectedTab = \"traffic\"\r\n      this.footfallValue = \"traffic\";\r\n      this.selctedValue ='Traffic Analysis';\r\n      this.selectedTabs('traffic');\r\n    }\r\n   \r\n    this.cd.detectChanges();\r\n  }\r\n  toggleAverageFootfall(evt:any) {\r\n    // this.tableobj.nob =true;\r\n    this.isAverageFootfall = evt.target.checked;\r\n    this.tableobj.fromDate= this.headerData.date.startDate,\r\n    this.tableobj.toDate= this.headerData.date.endDate,\r\n    delete this.tableobj.recapVideoDate;\r\n    delete this.tableobj.limit; delete this.tableobj.export;\r\n    delete this.tableobj.offset;\r\n    if(this.isAverageFootfall === true){\r\n    this.valueType = 'average';\r\n     this.footfallName = 'Avg. Footfall'\r\n   this.tableobj.valueType =this.valueType;\r\n   this.typeValue='average';\r\n  }  else {\r\n     this.footfallName = 'Actual Footfall'\r\n     this.valueType='actual';\r\n    this.tableobj.valueType ='actual';\r\n\r\n  }   \r\n  this.tableobj.normalize = this.normalize\r\n    this.getFootfallCard();\r\n    this.getMissedOpportunityCard();\r\n   \r\n   \r\n    this.cd.detectChanges();\r\n  }\r\n  \r\n  toggleConversion(evt:any){\r\n    this.isConversion = evt.target.checked; \r\n    this.tableobj.normalize = this.normalize\r\n    if(this.conversionValue === 'footfall'){\r\n      this.tableobj.conversiontype = 'footfall-count';\r\n     } if (this.conversionValue === 'engagers'){\r\n      this.tableobj.conversiontype = 'engagers-count';\r\n     }if (this.conversionValue === 'Potential Buyers'){\r\n      this.tableobj.conversiontype = 'billable-count';\r\n     } if (this.conversionValue === 'NoB Derived'){\r\n      this.tableobj.conversiontype = 'nob';\r\n     }\r\n    if(this.isConversion ==true){\r\n      this.tableobj.nob = true;\r\n      this.objData.nob = true;\r\n      this.objDataTraffic.nob = true; this.nob =true;\r\n    }  else {\r\n      if(this.tableobj.conversiontype === 'nob'){\r\n        this.tableobj.nob = true;\r\n      this.objData.nob = true;\r\n      this.objDataTraffic.nob = true; this.nob =true; \r\n      } else {\r\n      this.nob =false;\r\n      this.tableobj.nob = false;\r\n      this.objData.nob = false;\r\n      this.objDataTraffic.nob = false;\r\n      }\r\n    }\r\n    this.getFunnal();    \r\n    this.getConversionCard1(); \r\n    this.getMissedOpportunityCard();\r\n    this.getTable();\r\n    this.footfallTrend(); \r\n   \r\n    this.selectedTab = \"traffic\"\r\n    this.footfallValue = \"traffic\";\r\n    this.selctedValue ='Traffic Analysis';\r\n    this.selectedTabs('traffic');\r\n  }\r\n\r\n  cameraView(){\r\n    this.storeIdarray = this.headerData?.stores.filter((store:any) => store.checked).map((store:any) => store.storeId)\r\n    let data: any = JSON.parse(localStorage.getItem(\"header-filters\") || \"\");\r\n    data.store = this.storeIdarray[0];\r\n    localStorage.setItem(\"header-filters\", JSON.stringify(data));\r\n    this.gs.dataRangeValue.next(data);\r\n    this.router.navigate([\"/manage/stores/cameras\"], {\r\n      queryParams: { storeId: this.storeIdarray[0]},\r\n    });\r\n  }\r\n  navigatecameraView(storeId:any){\r\n    let data: any = JSON.parse(localStorage.getItem(\"header-filters\") || \"\");\r\n    data.store = storeId;\r\n    localStorage.setItem(\"header-filters\", JSON.stringify(data));\r\n    this.gs.dataRangeValue.next(data);\r\n    this.router.navigate([\"/manage/stores/cameras\"], {\r\n      queryParams: { storeId: storeId},\r\n    });\r\n  }\r\n\r\n  exportXLSX() {\r\n    this.tableobj.offset = 0;\r\n    this.tableobj.limit = 10000;\r\n    (this.tableobj.valueType = this.typeValue);\r\n    this.tableobj.fromDate= this.headerData.date.startDate,\r\n    this.tableobj.toDate= this.headerData.date.endDate,\r\n    this.tableobj.search = this.searchValue;\r\n    this.tableobj.export = true;\r\n    this.tableobj.normalize = this.normalize\r\n    delete this.tableobj.recapVideoDate;\r\n    this.service\r\n    .getSummaryTableListExport(this.tableobj)\r\n    ?.pipe(takeUntil(this.destroy$))\r\n    ?.subscribe({\r\n      next: (res: any) => {\r\n        if (res) {\r\n          this.excelService.saveAsExcelFile(res, \"Traffic Summary Table \");\r\n        } else {\r\n        }\r\n      },\r\n      error: () => {},\r\n    });\r\n    this.tableobj.limit = this.limit;\r\n    this.tableobj.export = false;\r\n  }\r\n\r\n  onSort(column: string) {\r\n    if (this.sortedColumn === column) {\r\n      this.sortDirection = this.sortDirection === 1 ? -1 : 1;\r\n    } else {\r\n      this.sortedColumn = column;\r\n      this.sortDirection = 1;\r\n    }\r\n    this.tableobj.fromDate= this.headerData.date.startDate,\r\n    this.tableobj.toDate= this.headerData.date.endDate,\r\n    delete this.tableobj.recapVideoDate;\r\n    this.tableobj.sortBy = this.sortDirection, //[1->asc, -1->DEsc]\r\n    this.tableobj.sort = this.sortedColumn, // Column Name\r\n    this.getTable();\r\n  }\r\n\r\n  getMap() {\r\n    this.mpaloading =true;\r\n    this.mapnoData= false;\r\n    const obj = {\r\n      clientId: this.headerData?.client,\r\n      storeDate: this.headerData?.date?.endDate,\r\n      storeId: this.storeIdarray\r\n    };\r\n\r\n    this.service.geMaps(obj)?.pipe(takeUntil(this.destroy$))\r\n      .subscribe({\r\n        next: (res: any) => {\r\n          if(res && res.code === 200){\r\n          // if (res && res.data && res.data.storeData) {\r\n            this.auLocations = res.data.storeData;\r\n          \r\n            // Update mapOptions center if needed\r\n            if (this.auLocations.length > 0) {\r\n              const firstLocation = this.auLocations[0];\r\n              if (firstLocation && typeof firstLocation.lat === 'number' && typeof firstLocation.lng === 'number') {\r\n                this.mapOptions = {\r\n                  ...this.mapOptions,\r\n                  center: { lat: firstLocation.lat, lng: firstLocation.lng }\r\n                };\r\n                setTimeout(() => {  this.getData(); },100)\r\n                this.cd.detectChanges();\r\n              } else {}\r\n            } else {}\r\n          // }\r\n          this.mpaloading =false;\r\n          this.mapnoData= false;\r\n          } else if(res === null){\r\n            this.mapnoData= true;\r\n            this.mpaloading =false;\r\n          } else {\r\n            this.auLocations =[];\r\n            this.mpaloading =false;\r\n            this.mapnoData= true;\r\n          }\r\n        \r\n        },\r\n        error: (err) => {\r\n          this.auLocations =[];\r\n          this.mpaloading =false;\r\n            this.mapnoData= true;\r\n        }\r\n      });\r\n  }\r\n  map: mapboxgl.Map;\r\n  private checkMapContainerInterval: any;\r\n  getData() {\r\n    this.checkMapContainerInterval = setTimeout(() => {\r\n      const mapContainer = this.el.nativeElement.querySelector('#map');\r\n      if (mapContainer) {\r\n        clearInterval(this.checkMapContainerInterval);\r\n        this.initializeMap(mapContainer);\r\n      } else {\r\n        clearInterval(this.checkMapContainerInterval);\r\n        this.initializeMap(mapContainer);\r\n      }\r\n    }, 100);\r\n\r\n  }\r\n  initializeMap(mapContainer: HTMLElement){\r\n    setTimeout(() => {  \r\n      const mapContainer = document.getElementById('map');\r\n      if (!mapContainer) {\r\n        return;\r\n      }\r\n    // Check that locations exist before proceeding\r\n    if (this.auLocations?.length === 0) {\r\n      return;\r\n    }\r\n  \r\n    const geojson = {\r\n      'type': 'FeatureCollection',\r\n      'features': this.auLocations.map((store, index) => ({\r\n        'type': 'Feature',\r\n        'properties': {\r\n          'storeName': store.storeName,         // Store name\r\n          'imageId': 1011 + index,              // Dynamic image ID\r\n          'iconSize': [60, 60],                 // Adjust icon size as needed\r\n          'footfall': store.avgFootfall,        // Footfall data\r\n          'openTime': store.openTime,           // Open time\r\n          'closeTime': store.closeTime,         // Close time\r\n        },\r\n        'geometry': {\r\n          'type': 'Point',\r\n          'coordinates': [store.lng, store.lat]  // Coordinates from store data\r\n        }\r\n      }))\r\n    };\r\n  \r\n    // Dynamically set map center based on the first location\r\n    const firstLocation = this.auLocations[0];\r\n \r\n    this.map = new mapboxgl.Map({\r\n      container: 'map',\r\n      style: 'mapbox://styles/mapbox/streets-v12',\r\n      center: [firstLocation.lng, firstLocation.lat], // Center map on the first location\r\n      zoom: 10, // Adjust this value (1 = world view, 20 = building view)\r\n      maxZoom: 20, // Optional: Limit max zoom level\r\n      minZoom: 1   // Optional: Limit min zoom level\r\n    });\r\n  \r\n    // Add markers to the map\r\n    geojson.features.forEach((feature, featureIndex) => {\r\n      const { properties, geometry } = feature;\r\n      const store = this.auLocations[featureIndex];\r\n      const el = document.createElement('div');\r\n      const width = properties.iconSize[0];\r\n      const height = properties.iconSize[1];\r\n      el.className = 'marker';\r\n      el.innerHTML = `\r\n      <div class=\"marker-icon\" style=\"background-color: white; width: ${width}px; height: ${height}px; display: flex; justify-content: center; align-items: center;\r\n      color: var(--Gray-700, #344054);\r\ntext-align: center;\r\nfont-family: Inter;\r\nfont-size: 9.007px;\r\nfont-style: normal;\r\nfont-weight: 600;\r\nline-height: 13px;\">\r\n        <div class=\"marker-content\" style=\"display: flex; flex-direction: column; align-items: center;\">\r\n          <svg class=\"mb-1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\r\n            <path d=\"M1.33654 3.3637L1.29658 3.42611C0.877698 4.16701 1.32493 5.10335 2.12931 5.21076C2.20218 5.21967 2.26999 5.22438 2.33625 5.22438C2.77021 5.22438 3.1539 5.03821 3.42132 4.74793L3.83666 4.2971L4.25059 4.74923C4.51476 5.03778 4.89758 5.22438 5.33448 5.22438C5.76941 5.22438 6.15443 5.03752 6.41837 4.74923L6.83359 4.29568L7.24882 4.74923C7.51275 5.03752 7.89777 5.22438 8.33271 5.22438C8.76764 5.22438 9.15266 5.03752 9.4166 4.74923L9.83182 4.29568L10.247 4.74923C10.511 5.03752 10.896 5.22438 11.3309 5.22438C11.395 5.22438 11.4649 5.21966 11.5372 5.21083C12.3593 5.09875 12.808 4.11225 12.3286 3.36408C12.3286 3.36403 12.3285 3.36399 12.3285 3.36395L11.0088 1.30621L11.0081 1.30511C10.9967 1.28722 10.9686 1.26804 10.9332 1.26804H2.72942C2.69403 1.26804 2.66589 1.28722 2.65448 1.30511L2.65401 1.30584L1.33654 3.3637ZM11.0731 7.06667V9.41753V9.98049H10.5101H3.15248H2.58952V9.41753V7.06702C2.50678 7.07318 2.42308 7.07634 2.33855 7.07634C2.30679 7.07634 2.27525 7.07587 2.24392 7.07495V9.41753V10.8696C2.24392 11.3526 2.64467 11.7587 3.15248 11.7587H10.5101C11.0179 11.7587 11.4187 11.3526 11.4187 10.8696V9.41753V7.07509C11.3888 7.07591 11.3587 7.07634 11.3286 7.07634C11.2428 7.07634 11.1575 7.07308 11.0731 7.06667Z\" stroke=\"#101828\" stroke-width=\"1.12592\"/>\r\n          </svg>\r\n          <div class=\"marker-label\" style=\"font-size: 10px; text-align: center;\">\r\n            ${properties.storeName}\r\n          </div>\r\n        </div>\r\n      </div>\r\n    `;\r\n      // el.style.backgroundImage = `url(https://picsum.photos/id/${properties.imageId}/${width}/${height})`;\r\n      el.style.width = `${width}px`;\r\n      el.style.height = `${height}px`;\r\n      el.style.backgroundSize = '100%';\r\n  \r\n      // Create a popup instance with the feature properties\r\n      const popup = new mapboxgl.Popup({ offset: 25 })  \r\n      // Use the coordinates from the feature\r\n      const coordinates: [number, number] = geometry.coordinates as [number, number];\r\n      el.addEventListener('click', () => {\r\n        this.adjustLayout(store);\r\n      });\r\n      // Add markers to the map\r\n      new mapboxgl.Marker(el)\r\n        .setLngLat(coordinates)\r\n        .setPopup(popup)  // Attach the popup to the marker\r\n        .addTo(this.map);\r\n    });\r\n    \r\n  },100)\r\n  }\r\n  adjustLayout(data: any) {\r\n    const datavalue: any = JSON.parse(\r\n      localStorage.getItem(\"header-filters\") || \"{}\"\r\n    );\r\n    const matchedStores = datavalue.stores.filter((store: any) => store.checked && store.storeId === data.storeId);\r\n    // Update the balance stores (those not in the matched stores) to set their checked property to false\r\n    datavalue.stores.forEach((store: any) => {\r\n      if (!matchedStores.some((matchedStore:any) => matchedStore.storeId === store.storeId)) {\r\n        store.checked = false;\r\n      }\r\n    }); \r\n    datavalue.store = data.storeId;\r\n    localStorage.setItem(\"header-filters\", JSON.stringify(datavalue));\r\n    this.cd.detectChanges()\r\n    this.gs.dataRangeValue.next(datavalue)\r\n    this.gs.manageRefreshTrigger.next(true);\r\n   \r\n  }\r\n  exporeView(){\r\nthis.router.navigate(['/manage/traffic/explore'])\r\n  }\r\n  dateValue(type:any){\r\n    delete this.tableobj.limit; delete this.tableobj.export;\r\n    delete this.tableobj.offset;\r\n    this.tableobj.fromDate= this.headerData.date.startDate,\r\n    this.tableobj.toDate= this.headerData.date.endDate,\r\n    delete this.tableobj.recapVideoDate;\r\n    this.dateType = type;\r\n    this.tableobj.dateType= this.dateType;\r\n    this.tableobj.valueType  = this.valueType\r\n    this.getFootfallCard();\r\n    this.getConversionCard();\r\n    this.getBouncedCard();\r\n    this.getEngagersCard();\r\n    this.getPotentialBuyersCard();\r\n    this.getMissedOpportunityCard();\r\n    this.getPotentialBuyers();\r\n  }\r\n\r\n\r\n  getZone(){\r\n    this.zoneLoading = true;\r\n    this.zoneNoData = false;\r\n    const obj = {\r\n      clientId: this.headerData?.client,\r\n      fromDate: this.headerData?.date?.startDate,\r\n    toDate: this.headerData?.date?.endDate,\r\n      storeId: this.storeIdarray\r\n    };\r\n\r\n    this.service.zoneDwellTime(obj)?.pipe(takeUntil(this.destroy$))\r\n      .subscribe({\r\n        next: (res: any) => {\r\n          if(res && res.code === 200){\r\n            this.zoneDwellTimeSplitData = res.data.zoneDwellTimeSplitData;\r\n            this.zoneLoading = false;\r\n            this.zoneNoData = false;\r\n          } else{\r\n            this.zoneDwellTimeSplitData =[];\r\n            this.zoneLoading = false;\r\n            this.zoneNoData = true;\r\n          }\r\n        },\r\n        error: (err) => {\r\n          this.zoneDwellTimeSplitData=[];\r\n        }\r\n\r\n      })\r\n    \r\n  }\r\n  getZoneValue(){\r\n    const obj = {\r\n      clientId: this.headerData?.client,\r\n      fromDate: this.headerData?.date?.startDate,\r\n    toDate: this.headerData?.date?.endDate,\r\n      storeId: this.storeIdarray\r\n    };\r\n\r\n    this.service.storeOperation(obj)?.pipe(takeUntil(this.destroy$))\r\n      .subscribe({\r\n        next: (res: any) => {\r\n          if(res && res.code === 200){\r\n            this.storeOperationData = res.data.storeOperationData[0];\r\n          } else{\r\n            this.storeOperationData =[];\r\n          }\r\n        },\r\n        error: (err) => {\r\n          this.storeOperationData=[];\r\n        }\r\n\r\n      })\r\n    \r\n  }\r\n  onDateChange(event:any){\r\n    this.detailedCharts = false;\r\n    this.footfallDate = event.target.value;\r\n    this.objDataTraffic.dateRange =Number(this.footfallDate);\r\n this.getDwell();\r\n this.trafficDwell();\r\n  }\r\n  storeView(data:any){\r\n    if(this.storeIdarray?.length>1){\r\n      const datavalue: any = JSON.parse(\r\n        localStorage.getItem(\"header-filters\") || \"{}\"\r\n      );\r\n      const matchedStores = datavalue.stores.filter((store: any) => store.checked && store.storeId === data);\r\n      // Update the balance stores (those not in the matched stores) to set their checked property to false\r\n      datavalue.stores.forEach((store: any) => {\r\n        if (!matchedStores.some((matchedStore:any) => matchedStore.storeId === store.storeId)) {\r\n          store.checked = false;\r\n        }\r\n      }); \r\n      datavalue.store = data;\r\n      localStorage.setItem(\"header-filters\", JSON.stringify(datavalue));\r\n      this.cd.detectChanges()\r\n      this.gs.dataRangeValue.next(datavalue)\r\n      this.gs.manageRefreshTrigger.next(true);\r\n    }\r\n  }\r\n  goToZone(){\r\n    this.router.navigate([\"/manage/zones/v1\"]); \r\n\r\n  }\r\n\r\n  currentIndex: number = 0;\r\n  intervalId: any;\r\n\r\n\r\n  prevSlide() {\r\n    if (this.currentIndex > 0) {\r\n      this.currentIndex--;\r\n    }\r\n  }\r\n\r\n  nextSlide() {\r\n    if (this.currentIndex < this.recapsGrouped.length - 1) {\r\n      this.currentIndex++;\r\n    }\r\n  }\r\n\r\n  goToSlide(index: number) {\r\n    if (index >= 0 && index < this.recapsGrouped.length) {\r\n      this.currentIndex = index;\r\n    }\r\n  }\r\n  \r\n  nobUpload(){\r\n    this.router.navigate([\"/manage/traffic/nob\"]); \r\n  }\r\n  goToLoss(){\r\n    this.router.navigate([\"/manage/settings/brand-detail\"]); \r\n  }\r\n\r\n// footfall trend parts\r\n\r\ngetDateValues: any;\r\nchartTrends: any;\r\nrootTrends: any;\r\nyAxis: any;\r\nxAxis: any; \r\nlegend: any;\r\n@ViewChild('tooltipContainer') tooltipContainer: ElementRef<HTMLDivElement>;\r\ntooltipData: any;\r\ngetFootfallTrendData:any=[];\r\nobjData:any;\r\ndatasets = [\r\n  { value: 'missedopportunities', label: 'Missed Opportunity' },\r\n  { value: 'potentialBuyer', label: 'Potential Buyer' },\r\n  { value: 'conversion', label: 'Conversion' },\r\n  { value: '', label: 'No Filter' }\r\n];\r\n\r\nitemsPerPageTrends = 10;\r\ncurrentPageTrends = 1;\r\ntotalItemsTrends = 1;\r\npaginationSizesTrends: number[] = [];\r\npageSizeTrends = 31;\r\noffsetTrends : number = 0;\r\nlimitTrends : number = 31;\r\nselectValue= new FormControl(\"dataset1\");\r\nloadingTrends =true;\r\nnoDataTrends =false;\r\n  getInitialValue(): string {\r\n    // For example, selecting the second item in the dataset\r\n    return this.datasets[0].value; // Change as needed\r\n  }\r\n  onValueChangetrend(selectedId: any) {\r\n    this.objData.processType = selectedId,\r\n    this.footfallTrend();\r\n  }\r\n  get selectControl(): FormControl {\r\n    return this.form.get('selectValue') as FormControl;\r\n  }\r\n  @HostListener('document:click', ['$event'])\r\n  onClick(event: MouseEvent): void {\r\n    const tooltipElement = this.tooltipContainer?.nativeElement;\r\n\r\n    // Check if the click was outside the tooltip\r\n    if (tooltipElement && !tooltipElement.contains(event.target as Node) && this.tooltipVisible) {\r\n      this.hideTooltip();\r\n    }\r\n    this.show =false;\r\n  }\r\nfootfallTrend(){ \r\n  this.offsetTrends =0;\r\n  this.limitTrends =31;\r\n  this.loadingTrends =true;\r\n  this.noDataTrends =false;\r\n  (this.objData.conversiontype = this.tableobj.conversiontype);\r\n  this.service\r\n  .getfootfallTrend(this.objData)\r\n  .pipe(takeUntil(this.destroy$))\r\n  ?.subscribe({\r\n    next: (res: any) => {\r\n      if (res && res.code === 200) {\r\n        this.getFootfallTrendData = res?.data?.footfallTrendData;\r\n        this.getDateValues = res?.data;\r\n        this.totalItemsTrends = res.data?.totalCount;\r\n        this.setPaginationSizeTrends();\r\n        this.createChart() // Call with a delay to ensure the element is in the DOM\r\n        this.cd.detectChanges(); \r\n        this.loadingTrends =false;\r\n        this.noDataTrends =false;\r\n      } else {\r\n        this.loadingTrends =false;\r\n        this.noDataTrends =true;\r\n        this.getFootfallTrendData =[];\r\n      }\r\n    },\r\n    error: (err: any) => {\r\n      this.cd.detectChanges();\r\n    },\r\n    complete: () => {},\r\n  });\r\n  \r\n}\r\nsetPaginationSizeTrends() {\r\n  if (this.totalItemsTrends > 31 ) {\r\n    if(this.objData.forecast && this.totalItemsTrends > 31){\r\n      // Forecast adds future buckets (actual + forecast) — show ALL items on one page\r\n      // so nothing is cut off (was hardcoded 60, which dropped items when total > 60).\r\n      this.paginationSizesTrends = [this.totalItemsTrends];\r\n    } else {\r\n    this.paginationSizesTrends = [31];\r\n    }\r\n  } else {\r\n    this.paginationSizesTrends = [this.totalItemsTrends]; // Just one option if less than 10\r\n  }\r\n  this.pageSizeTrends = this.paginationSizesTrends[0];\r\n}\r\nonPageChangeTrends(pageOffsetTrends: number) {\r\n  this.offsetTrends = Number(pageOffsetTrends);\r\n  this.objData.offset = this.offsetTrends -1;\r\n  this.objData.limit = this.limitTrends;\r\n  this.service\r\n  .getfootfallTrend(this.objData)\r\n  .pipe(takeUntil(this.destroy$))\r\n  ?.subscribe({\r\n    next: (res: any) => {\r\n      if (res && res.code === 200) {\r\n        this.getFootfallTrendData = res?.data.footfallTrendData;\r\n        \r\n        this.getDateValues = res?.data;\r\n        this.totalItemsTrends = res.data?.totalCount;\r\n        this.createChart() // Call with a delay to ensure the element is in the DOM\r\n        this.cd.detectChanges(); \r\n\r\n      } else {\r\n        this.loading =false;\r\n        this.noData =true;\r\n      }\r\n    },\r\n    error: (err: any) => {\r\n      this.cd.detectChanges();\r\n    },\r\n    complete: () => {},\r\n  });\r\n  \r\n}\r\n\r\nonPageSizeChangeTrends(pageSizeTrends: number) {\r\n  this.pageSizeTrends = Number(pageSizeTrends);\r\n  this.limitTrends = Number(pageSizeTrends);\r\n  this.currentPageTrends = 1;\r\n  this.offsetTrends = 0;\r\n  this.objData.offset = this.offsetTrends;\r\n  this.objData.limit = this.limitTrends;\r\n  this.footfallTrend();\r\n}\r\n createChart() {\r\n    this.loadingTrends =false;\r\n    this.noDataTrends =false;\r\n    setTimeout(() => {\r\n      const chartDiv = document.getElementById(\"Footfalltrend\");\r\n      if (!chartDiv) {\r\n        return;\r\n      }\r\n      if (this.rootTrends) {\r\n        this.rootTrends.dispose();\r\n      }\r\n    this.rootTrends  = am5.Root.new('Footfalltrend');\r\n    this.rootTrends.setThemes([am5themes_Animated.new(this.rootTrends)]);\r\n\r\n    this.chartTrends = this.rootTrends.container.children.push(\r\n      am5xy.XYChart.new(this.rootTrends, {\r\n        panX: false,\r\n        panY: false,\r\n        wheelX: 'panX',\r\n        wheelY: 'zoomX',\r\n        layout: this.rootTrends.verticalLayout\r\n      })\r\n    );\r\n\r\n    this.chartTrends.set(\"scrollbarX\", am5.Scrollbar.new(this.rootTrends, {\r\n      orientation: \"horizontal\"\r\n    }));\r\n    let xRenderer = am5xy.AxisRendererX.new(this.rootTrends, {\r\n      minGridDistance: 20,\r\n      minorGridEnabled: true,\r\n    });\r\n    xRenderer.labels.template.setAll({\r\n      rotation: -45,\r\n      centerY: am5.p50,\r\n      centerX: am5.p100,\r\n      paddingRight: 5,\r\n    });\r\n    // xRenderer.grid.template.setAll({\r\n    //   location: 1,\r\n    // });\r\n    const xAxis = this.chartTrends.xAxes.push(\r\n      am5xy.CategoryAxis.new(this.rootTrends, {\r\n        categoryField: 'storeName',\r\n        renderer:xRenderer,\r\n        tooltip: am5.Tooltip.new(this.rootTrends, { labelText: \"{fullStoreName}\"})\r\n      })\r\n    );\r\n    this.getFootfallTrendData.sort((a: any, b: any) => {\r\n      // Parse storeName as a Date and compare\r\n      const dateA = new Date(a.storeName);\r\n      const dateB = new Date(b.storeName);\r\n      \r\n      // Sort in ascending order (oldest to newest)\r\n      return dateA.getTime() - dateB.getTime();\r\n    });\r\n    this.getFootfallTrendData = this.getFootfallTrendData?.map(\r\n      (item: any) => ({\r\n        fullStoreName: item.storeName, // Full store name\r\n        storeName: item.storeName, // item.storeName.length > 20 ? item.storeName.slice(0, 20) + '...' : Shortened for xAxis\r\n        footfall: Number(item.footfall_count),\r\n        conversion: Number(item.conversion_count),\r\n        bounced: Number(item.bounced_count),\r\n        engagers: Number(item.engagers_count),\r\n        missedopportunities: Number(item.missedOpportunity_count),\r\n        potential: Number(item.potentialBuyers_count),\r\n        bounced_count:item.bounced_count,\r\n        avgDwellTime:item.avgDwellTime,\r\n        down_time:item.down_time,\r\n        engagers_count:item.engagers_count,\r\n        footfall_count:item.footfall_count,\r\n        missedOpportunity_count:item.missedOpportunity_count,\r\n        footfall_count_avg:item.footfall_count_avg,\r\n        bounced_footfall_count_avg:item.bounced_footfall_count_avg,\r\n        missedOpportunity_count_avg:item.missedOpportunity_count_avg,\r\n        engagers_count_avg:item.engagers_count_avg,\r\n        conversionRate: item.conversionRate,\r\n        forecast: item.forecast,\r\n      })\r\n    );\r\n   \r\n    xAxis.data?.setAll(this.getFootfallTrendData); \r\n    const yAxis = this.chartTrends.yAxes.push(\r\n      am5xy.ValueAxis.new(this.rootTrends, {\r\n        min:0,\r\n        renderer: am5xy.AxisRendererY.new(this.rootTrends, {})\r\n      })\r\n    );\r\n    // yAxis.get(\"renderer\").grid.template.set(\"forceHidden\", true);\r\n    // yAxis.get(\"renderer\").labels.template.set(\"forceHidden\", true);\r\n    // Set the title of the y-axis\r\n    yAxis.children.unshift(am5.Label.new(this.rootTrends, {\r\n      rotation: -90,\r\n      // text: 'Footfall', //capitalizeFirstLetter(this.objData.processType), // Capitalize the first letter\r\n      y: am5.p50,\r\n      centerX: am5.p50,\r\n      fontFamily: \"Arial\", // Set font family\r\n      fontSize: \"14px\",    // Set font size\r\n      fill: am5.color(0x000000) // Set text color (optional)\r\n    }));\r\nif(this.objData.processType ==='potentialBuyer')\r\n  this.objData.processType ='potential'\r\n// if(this.objData.processType ==='missedopportunities')\r\n//   this.objData.processType ='Missed Opportunity'\r\nconst capitalizeTitle = (text: string): string => {\r\n  return text\r\n    .split(' ')\r\n    .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\r\n    .join(' ');\r\n};\r\n\r\n// Example usage\r\nconst processTypeTitle = capitalizeTitle(this.objData.processType);\r\n    // this.createColumnSeries('Footfall', 'footfall', xAxis, yAxis, false, am5.color(0x67b7dc));\r\n    this.createColumnSeries('Bounced', 'bounced', xAxis, yAxis, true, am5.color(0x67b7dc));\r\n    this.createColumnSeries('Engagers', 'engagers', xAxis, yAxis, true, am5.color(0x6794dc));\r\n    // 6771dc\r\n    // this.createColumnSeries('Missed Opportunity', 'missedopportunities', xAxis, yAxis, true, am5.color(0x6794dc));\r\n    // this.createColumnSeries('Potential Buyer', 'potential', xAxis, yAxis, true, am5.color(0xdc69cf));\r\n    // this.createColumnSeries('Conversion', 'conversion', xAxis, yAxis, true, am5.color(0x6771dc));\r\n    if(this.objData.processType !=='' ){\r\n      const myColor = am5.color(0x00FF00);\r\n    this.createLineSeries(processTypeTitle, this.objData.processType, xAxis, yAxis, myColor);\r\n    }\r\n    const legend = this.chartTrends.children.push(\r\n      am5.Legend.new(this.rootTrends, {\r\n        centerX: am5.p50,\r\n        x: am5.p50\r\n      })\r\n    );\r\n\r\n    legend.data.setAll(this.chartTrends.series.values);\r\n\r\n    this.chartTrends.set('cursor', am5xy.XYCursor.new(this.rootTrends, {\r\n      behavior: 'none'\r\n    }));\r\n\r\n    this.chartTrends.series.each((series: any) => {\r\n      if (series.columns) {\r\n        series.columns.template.set(\"interactive\", true);\r\n        series.columns.template.events.on(\"click\", (ev: any) => {\r\n          const data = ev.target.dataItem.dataContext;\r\n          const { clientX, clientY } = ev.originalEvent;\r\n          this.showTooltip(data, clientX, clientY);\r\n        });\r\n      }\r\n    });\r\n    this.chartTrends.appear(1000, 100);\r\n  },100)\r\n  }\r\n\r\n  tooltipVisible = false;\r\n  showTooltip(data: any, x: number, y: number): void {\r\n    this.tooltipVisible = false;\r\n    this.tooltipData = data;\r\n    const tooltipElement = this.tooltipContainer?.nativeElement;\r\n  \r\n    // Set tooltip content and make it visible to calculate dimensions\r\n    tooltipElement.style.display = 'block';\r\n    tooltipElement.style.visibility = 'hidden'; // Make it invisible but still present in the DOM\r\n  \r\n    // Force a reflow to ensure dimensions are up-to-date\r\n    tooltipElement.style.position = 'absolute';\r\n    \r\n    // Wait for the next event loop to get accurate dimensions\r\n    setTimeout(() => {\r\n      const tooltipWidth = tooltipElement.offsetWidth;\r\n      const tooltipHeight = tooltipElement.offsetHeight;\r\n      const screenWidth = window.innerWidth;\r\n      const screenHeight = window.innerHeight;\r\n  \r\n      // Calculate if there is enough space on the right side, otherwise place it on the left\r\n      if (x + tooltipWidth > screenWidth) {\r\n        tooltipElement.style.left = `${x - tooltipWidth}px`;\r\n      } else {\r\n        tooltipElement.style.left = `${x}px`;\r\n      }\r\n  \r\n      // Calculate if there is enough space at the bottom, otherwise place it at the top\r\n      if (y + tooltipHeight > screenHeight) {\r\n        tooltipElement.style.top = `${y - tooltipHeight}px`;\r\n      } else {\r\n        tooltipElement.style.top = `${y}px`;\r\n      }\r\n  \r\n      tooltipElement.style.visibility = 'visible'; // Make it visible again\r\n      this.tooltipVisible = true;\r\n    }, 0);\r\n  }\r\n  selectPlanTrends(type: any) {\r\n    this.type = type;\r\n    this.objData.dateType =type;\r\n    if(type ==='monthly' && this.storeIdarray?.length === 1)\r\n    this.objData.limit= 60;\r\n  else \r\n  this.objData.limit= 31;\r\n    this.objData.offset= 0;\r\n    this.footfallTrend();\r\n    // this.updateChartData();\r\n  }\r\n  hideTooltip(): void {\r\n    this.tooltipVisible = false;\r\n    const tooltipElement = this.tooltipContainer?.nativeElement;\r\n    tooltipElement.style.display = 'none';\r\n  }\r\n\r\n  createColumnSeries(\r\n    name: string,\r\n    fieldName: string,\r\n    xAxis: am5xy.CategoryAxis<am5xy.AxisRenderer>,\r\n    yAxis: am5xy.ValueAxis<am5xy.AxisRenderer>,\r\n    stacked: boolean,\r\n    color: am5.Color\r\n  ): void {\r\n\r\n    if (this.headerData?.client === '452') {\r\n      if (name === 'Bounced') {\r\n        name = `Less than ${this.clientData?.featureConfigs?.bouncedLimit?.value ?? 'X'} mins`;\r\n      }\r\n      if (name === 'Engagers') {\r\n        name = `More than ${this.clientData?.featureConfigs?.bouncedLimit?.value ?? 'X'} mins`;\r\n      }\r\n    }\r\n    const series = this.chartTrends.series.push(\r\n      am5xy.ColumnSeries.new(this.rootTrends, {\r\n        name: name,\r\n        xAxis: xAxis,\r\n        yAxis: yAxis,\r\n        valueYField: fieldName,\r\n        categoryXField: 'storeName',\r\n        stacked: stacked,\r\n      })\r\n    );\r\n    this.getFootfallTrendData = this.getFootfallTrendData.map((item: any) => {\r\n      return {\r\n        ...item,\r\n        dynamicColumn: {\r\n          fillOpacity: item.columnSettings?.fillOpacity ?? 0.8,\r\n          strokeDasharray: Array.isArray(item.columnSettings?.strokeDasharray)\r\n            ? item.columnSettings.strokeDasharray\r\n            : item.columnSettings?.strokeDasharray ? item.columnSettings.strokeDasharray.split(',').map(Number) : [5, 5],\r\n          strokeWidth: item.columnSettings?.strokeWidth ?? 3\r\n        }\r\n      };\r\n    });\r\n  \r\n    // Set data for series\r\n    series.data.setAll(this.getFootfallTrendData);\r\n  \r\n    // Adapters to apply custom column settings\r\n    series.columns.template.adapters.add(\"fillOpacity\", (fillOpacity: any, target: any) => {\r\n      const dataItem = target.dataItem?.dataContext as any;\r\n      if (dataItem?.forecast && dataItem?.dynamicColumn) { \r\n        return dataItem.dynamicColumn.fillOpacity ?? fillOpacity; \r\n      }\r\n      return fillOpacity; // Default opacity\r\n    });\r\n  \r\n    series.columns.template.adapters.add(\"strokeDasharray\", (strokeDasharray: any, target: any) => {\r\n      const dataItem = target.dataItem?.dataContext as any;\r\n      if (dataItem?.forecast && dataItem?.dynamicColumn) { \r\n        return dataItem.dynamicColumn.strokeDasharray ?? strokeDasharray; \r\n      }\r\n      return strokeDasharray; // Default dash array\r\n    });\r\n  \r\n    series.columns.template.adapters.add(\"strokeWidth\", (strokeWidth: any, target: any) => {\r\n      const dataItem = target.dataItem?.dataContext as any;\r\n      if (dataItem?.forecast && dataItem?.dynamicColumn) { \r\n        return dataItem.dynamicColumn.strokeWidth ?? strokeWidth; \r\n      }\r\n      return strokeWidth; // Default stroke width\r\n    });\r\n  \r\n    // Set default color and stroke for the columns\r\n    series.columns.template.setAll({\r\n      fill: color, // Set fill color\r\n      stroke: color // Set stroke color\r\n    });\r\n  \r\n    // Add labels to the columns\r\n    series.bullets.push(() => {\r\n      return am5.Bullet.new(this.rootTrends, {\r\n        sprite: am5.Label.new(this.rootTrends, {\r\n          text: \"{valueY}\",\r\n          fill: this.rootTrends.interfaceColors.get(\"alternativeText\"),\r\n          centerY: am5.p50,\r\n          centerX: am5.p50,\r\n          populateText: true,\r\n          fontSize: 12  // Reduce font size\r\n        })\r\n      });\r\n    });\r\n \r\n    series.appear();\r\n  }\r\n  \r\n  \r\n\r\n\r\n\r\n  createLineSeries(\r\n    name: string,\r\n    fieldName: string,\r\n    xAxis: am5xy.CategoryAxis<am5xy.AxisRenderer>,\r\n    yAxis: am5xy.ValueAxis<am5xy.AxisRenderer>,\r\n    color: am5.Color\r\n  ): void {\r\n    if (this.headerData?.client === '452') {\r\n      if (name === 'Conversion') {\r\n        name = `More than ${this.clientData?.featureConfigs?.conversion?.value ?? 'X'} mins`;\r\n      }\r\n    \r\n      if (name === 'Missedopportunities') {\r\n        name = `${this.clientData?.featureConfigs?.missedOpportunityFrom?.value ?? 'X'} - ${this.clientData?.featureConfigs?.missedOpportunityTo?.value ?? 'Y'} mins`;\r\n      }\r\n    \r\n    } else {\r\n      if (name === 'Missedopportunities') {\r\n        name = 'Missed Opportunity';\r\n      }\r\n    \r\n      if (name === 'Potential' || name === 'potentialBuyer') {\r\n        name = 'Potential Buyer';\r\n      }\r\n    }\r\n    \r\n    const series = this.chartTrends.series.push(\r\n      am5xy.LineSeries.new(this.rootTrends, {\r\n        name: name,\r\n        xAxis: xAxis,\r\n        yAxis: yAxis,\r\n        valueYField: fieldName,\r\n        categoryXField: 'storeName',\r\n        tooltip: am5.Tooltip.new(this.rootTrends, {\r\n          pointerOrientation: \"horizontal\",\r\n          labelText: \"Total Footfall: {footfall}\\n{name}: {valueY} \",\r\n          background: am5.Rectangle.new(this.rootTrends, {\r\n            fill: am5.color(0x00FF00) // Set the desired tooltip background color\r\n          })\r\n        })\r\n      })\r\n    );\r\n  \r\n    // Apply default stroke settings for the line series\r\n    series.strokes.template.setAll({\r\n      strokeWidth: 2,\r\n      stroke: am5.color(0x00FF00), // Default stroke color\r\n      templateField: \"strokeSettings\", // Refer to strokeSettings for dynamic updates\r\n      fontSize: 12 // Reduce font size for labels\r\n    });\r\n  \r\n    // Map dynamic settings for forecast=true items\r\n    this.getFootfallTrendData = this.getFootfallTrendData.map((item: any) => {\r\n      return {\r\n        ...item,\r\n        dynamicLine: {\r\n          stroke: item.strokeSettings?.stroke ?? am5.color(0x00FF00), // Default to green if not specified\r\n          strokeWidth: item.strokeSettings?.strokeWidth ?? 5,\r\n          strokeDasharray: Array.isArray(item.strokeSettings?.strokeDasharray)\r\n            ? item.strokeSettings.strokeDasharray\r\n            : item.strokeSettings?.strokeDasharray\r\n            ? item.strokeSettings.strokeDasharray.split(',').map(Number)\r\n            : [5, 5] // Default dash array\r\n        }\r\n      };\r\n    });\r\n  \r\n    // Set data for series\r\n    series.data.setAll(this.getFootfallTrendData);\r\n  \r\n  // Adapter to apply custom stroke settings based on forecast\r\n  series.strokes.template.adapters.add(\"stroke\", (stroke: any, target: any) => {\r\n    const dataItem = target.dataItem?.dataContext as any;\r\n    if (dataItem?.forecast && dataItem?.dynamicLine) {\r\n      return dataItem.dynamicLine.stroke ?? stroke; // Apply dynamic stroke if forecast is true\r\n    }\r\n    return stroke; // Default stroke\r\n  });\r\n\r\n  series.strokes.template.adapters.add(\"strokeWidth\", (strokeWidth: any, target: any) => {\r\n    const dataItem = target.dataItem?.dataContext as any;\r\n    if (dataItem?.forecast && dataItem?.dynamicLine) {\r\n      return dataItem.dynamicLine.strokeWidth ?? strokeWidth; // Apply dynamic stroke width\r\n    }\r\n    return strokeWidth; // Default stroke width\r\n  });\r\n\r\n  series.strokes.template.adapters.add(\"strokeDasharray\", (strokeDasharray: any, target: any) => {\r\n    const dataItem = target.dataItem?.dataContext as any;\r\n    if (dataItem?.forecast && dataItem?.dynamicLine) {\r\n      // Ensure the dash array is a valid array of numbers for proper rendering\r\n      return Array.isArray(dataItem.dynamicLine.strokeDasharray)\r\n        ? dataItem.dynamicLine.strokeDasharray // Use if already in array format\r\n        : dataItem.dynamicLine.strokeDasharray\r\n        ? dataItem.dynamicLine.strokeDasharray.split(',').map(Number) // Convert string to array\r\n        : [5, 5]; // Default dash array\r\n    }\r\n    return strokeDasharray; // Default stroke dash array if no custom setting\r\n  });\r\n\r\n  \r\n    // Add bullets (markers) to the line series\r\n    series.bullets.push(() => {\r\n      return am5.Bullet.new(this.rootTrends, {\r\n        sprite: am5.Circle.new(this.rootTrends, {\r\n          strokeWidth: 1,\r\n          stroke: am5.color(0x00FF00),\r\n          radius: 3, // Increase radius for visibility\r\n          fill: this.rootTrends.interfaceColors.get(\"background\")\r\n        })\r\n      });\r\n    });\r\n  \r\n    // Trigger the appearance of the series\r\n    series.appear();\r\n  \r\n    // Log the series data for debugging\r\n  }\r\n  \r\n  show: boolean =false;\r\n  producttrailDropdown(event: MouseEvent) {\r\n    event.stopPropagation();\r\n    this.show =true;\r\n  }\r\n  changeStatus(type:any){\r\nthis.trendtypeValue = type;\r\nthis.objData.filterBy =type;\r\nthis.footfallTrend();\r\nthis.show =false;\r\n  }\r\n\r\n\r\n\r\n  // traffic overall card and charts\r\n\r\n  private root!: am5.Root;\r\n  // private chart: am5xy.XYChart;\r\n  private series: am5xy.ColumnSeries;\r\n  private root2: am5.Root;\r\n  private chart2: am5xy.XYChart;\r\n  private series2: am5xy.ColumnSeries;\r\n  detailedRoot: am5.Root;\r\n  detailedChart: am5xy.XYChart;\r\n  detailedSeries: am5xy.ColumnSeries;\r\n  dayjs =dayjs\r\n  heatMapRoot: am5.Root;\r\n  heatMapChart: am5xy.XYChart;\r\n  heatMapSeries: am5xy.ColumnSeries;\r\n  dwellRoot: am5.Root;\r\n  dwellChart: am5xy.XYChart;\r\n  dwellSeries: am5xy.ColumnSeries;\r\n  demoGraphicsData: any;\r\n  demoGraphicsroot: any;\r\n  buyersroot:any;\r\n\r\n  data: any;\r\n  currentData: any;\r\n  currentData2: any;\r\n  detailedCharts: boolean = false;\r\n  date: any;\r\n  value: any;\r\n  footfallValue: string = \"traffic\";\r\n  demoGraphicsChartInstance: any;\r\n  buyersChartInstance:any;\r\n  selectedTab: any = \"traffic\";\r\n  getOverallCardData: any = [];\r\n  // objData: any;\r\n  getOverallHourlyData: any;\r\n  hourBucketValue: number = 1;\r\n  hourBucketOptions: any = [\r\n    { value: 1, label: \"1 Hour\" },\r\n    { value: 2, label: \"2 Hour\" },\r\n    { value: 3, label: \"3 Hour\" },\r\n    { value: 4, label: \"4 Hour\" },\r\n  ];\r\n  getOverallChartData: any=[];\r\n  getSingleChartData: any;\r\n  buyersData: any;\r\n  getDensityDwellData: any;\r\n  trafficData:any= [];\r\n  footfallDate: any;\r\n  selctedValue:any ='Footfall Analysis';\r\n  chartNoData: boolean =false;\r\n  chartloading: boolean =true;\r\n  totalCount: any;\r\n  demoGraphicsSeries: any;\r\n\r\n  itemsPerPageTrafficCard = 10;\r\n  currentPageTrafficCard = 1;\r\n  totalItemsTrafficCard = 1;\r\n  paginationSizesTrafficCard: number[] = [];\r\n  pageSizeTrafficCard:any=20;\r\n  offsetTrafficCard: number = 0;\r\n  limitTrafficCard: number = 20;\r\n  demoNoData =false;\r\n  demoloading =false;\r\n  buyersNoData =false;\r\n  buyersloading =false;\r\n  datasetsCard:any =[];\r\n  processTypeNew:any;\r\n  selectedTabs(type: any) {\r\n    this.detailedCharts = false;\r\n    this.selectedTab = type;\r\n    this.objDataTraffic.processType = type;\r\n    this.processTypeNew = type;\r\n    this.objDataTraffic.valueType =this.valueType;\r\n    this.objDataTraffic.country = this.headerData?.country.filter((countries:any) => countries.checked).map((countries:any) => countries.country),\r\n    this.objDataTraffic.storeId = this.headerData.stores.filter((store:any) => store.checked).map((store:any) => store.storeId);\r\n   if(this.selectedTab === 'traffic'){\r\n   this.getDwell(); this.trafficDwell();\r\n    this.cd.detectChanges();\r\n   } else{\r\n    if(this.selectedTab === \"footfall\"){\r\n      this.footfallValue = \"footfall\";\r\n      this.selctedValue ='Footfall Analysis'\r\n    } else if(this.selectedTab === \"conversion\"){\r\n      this.footfallValue = \"conversion\";\r\n      this.selctedValue = this.headerData?.client === '452' ? `More than ${this.featureConfig?.conversion.value} mins Analysis` : 'Conversion Analysis'\r\n    } else if(this.selectedTab === \"engagers\"){\r\n      this.footfallValue = \"engagers\";\r\n      this.selctedValue = this.headerData?.client === '452' ? `More than ${this.featureConfig?.bouncedLimit.value} mins Analysis` : 'Engagers Analysis'\r\n    } else if(this.selectedTab === \"bounced\"){\r\n      this.footfallValue = \"bounced\";\r\n      this.selctedValue = this.headerData?.client === '452' ? `Less than ${this.featureConfig?.bouncedLimit.value} mins Analysis` :'Bounced Analysis'\r\n    } else if(this.selectedTab === \"potentialBuyers\"){\r\n      this.footfallValue = \"potentialBuyers\";\r\n      this.selctedValue ='Potential Buyer Analysis'\r\n    } else if(this.selectedTab === \"missedOpportunity\"){\r\n      this.footfallValue = \"missedOpportunity\";\r\n      this.selctedValue = this.headerData?.client === '452' ? `${this.featureConfig?.missedOpportunityFrom.value}-${this.featureConfig?.missedOpportunityTo.value} mins Analysis` :'Missed Opportunity Analysis' \r\n    } \r\n    if(this.objDataTraffic.nob === true && this.selectedTab === \"conversion\"){\r\n      this.selectedTab = \"conversion\"\r\n       this.footfallValue = \"conversion\";\r\n      this.selctedValue ='Conversion Analysis'\r\n      this.datasetsCard = [\r\n        { value: this.selectedTab, label: this.selctedValue },\r\n      ];\r\n      this.objDataTraffic.limit =20,\r\n      this.overallCard();\r\n      this.overallChart();\r\n    } else {\r\n      if (this.headerData?.client === '452') {\r\n        this.datasetsCard = [\r\n          { value: this.selectedTab, label: this.selctedValue },\r\n          { value: \"demographic\", label: \"Demographic Analysis\" }\r\n        ]\r\n      } else {\r\n        this.datasetsCard = [\r\n          { value: this.selectedTab, label: this.selctedValue },\r\n          { value: \"demographic\", label: \"Demographic Analysis\" },\r\n      ]\r\n      if(this.selectedTab !='missedOpportunity'){\r\n        this.datasetsCard.push({ value: \"buyer\", label: \"Buyer Analysis\" },)\r\n      }\r\n    }\r\n    this.objDataTraffic.limit =20,\r\n    this.overallCard();\r\n    this.overallHourlyChart();\r\n    this.overallChart();\r\n  }\r\n  this.cd.detectChanges();\r\n  }\r\n  }\r\n  getFootfallDensityDwellData:any =[];\r\n  trafficDwell(){\r\n    this.chartNoData = false;\r\n    this.chartloading = true;\r\n    delete this.objDataTraffic.limit;\r\n    delete this.objDataTraffic.offset;\r\n    delete this.objDataTraffic.processType;\r\n    delete this.objDataTraffic.hourFormat;\r\n    delete this.objDataTraffic.normalizedData\r\n    this.objDataTraffic.dateRange =Number(this.footfallDate);\r\n    this.service\r\n      .getTrafficDensityDwell(this.objDataTraffic)\r\n      .pipe(takeUntil(this.destroy$))\r\n      ?.subscribe({\r\n        next: (res: any) => {\r\n          if (res && res.code === 200) {\r\n            this.getFootfallDensityDwellData = res?.data;\r\n            this.trafficHeatChart();\r\n            this.chartNoData = false;\r\n            this.chartloading = false;\r\n            this.cd.detectChanges();\r\n          } else if(!res || res.code === 204){\r\n            this.chartNoData = true;\r\n            this.chartloading = false;\r\n            this.getFootfallDensityDwellData =[];\r\n          }\r\n        },\r\n        error: (err: any) => {\r\n          this.chartNoData = true;\r\n          this.chartloading = false;\r\n          this.getFootfallDensityDwellData =[];\r\n          this.cd.detectChanges();\r\n        },\r\n        complete: () => {},\r\n      }); \r\n  }\r\n  chartDwellNoData = false;\r\n      chartDwellloading = true;\r\n   getDwell(){\r\n      this.chartDwellNoData = false;\r\n      this.chartDwellloading = true;\r\n      delete this.objDataTraffic.limit;\r\n      delete this.objDataTraffic.offset;\r\n      delete this.objDataTraffic.processType;\r\n      delete this.objDataTraffic.hourFormat;\r\n      delete this.objDataTraffic.normalizedData;\r\n      this.objDataTraffic.dateRange =Number(this.footfallDate);\r\n      this.service\r\n        .getDensityDwell(this.objDataTraffic)\r\n        .pipe(takeUntil(this.destroy$))\r\n        ?.subscribe({\r\n          next: (res: any) => {\r\n            if (res && res?.code === 200) {\r\n              this.getDensityDwellData = res?.data;\r\n              if(this.getDensityDwellData?.dwellTimeSplit?.length >0){\r\n                this.getDwellChart();\r\n                this.chartDwellNoData = false;\r\n                this.chartDwellloading = false;\r\n                this.cd.detectChanges();\r\n              } else {\r\n                this.chartDwellNoData = true;\r\n              this.chartDwellloading = false;\r\n              }\r\n            } else if(!res || res.code === 204){\r\n              this.chartDwellNoData = true;\r\n              this.chartDwellloading = false;\r\n              this.getDensityDwellData =[];\r\n            }\r\n          },\r\n          error: (err: any) => {\r\n            this.chartNoData = true;\r\n            this.chartloading = false;\r\n            this.cd.detectChanges();\r\n            this.getDensityDwellData =[];\r\n          },\r\n          complete: () => {},\r\n        });\r\n    }\r\n    initChart(): void {\r\n      this.chartNoData = false;\r\n      this.chartloading = false;\r\n      setTimeout(() => {\r\n        const chartDiv = document.getElementById(\"testGraphics\");\r\n        if (!chartDiv) {\r\n          return;\r\n        }\r\n        if (this.root) {\r\n          this.root.dispose();\r\n        }\r\n        this.root = am5.Root.new(\"testGraphics\");\r\n  \r\n        // Set themes\r\n        // this.root.setThemes([am5themes_Animated.new(this.root)]);\r\n        // const totalCount = this.totalCount;\r\n        // const dynamicWidth = Math.max(800, totalCount * 50); // Minimum 800px or 50px per item\r\n        // Create chart\r\n        this.chart = this.root.container.children.push(\r\n          am5xy.XYChart.new(this.root, {\r\n            panX: true,\r\n            panY: true,\r\n            wheelX: \"panX\",\r\n            wheelY: \"zoomX\",\r\n            pinchZoomX: true,\r\n            paddingLeft: 0,\r\n            paddingRight: 1,\r\n            width: am5.percent(100), // Let the chart take full width\r\n          })\r\n        );\r\n        // this.chart.plotContainer.setAll({\r\n        //   minWidth: dynamicWidth, // Set dynamic min width for scrolling\r\n        // });\r\n        // Add cursor\r\n        let cursor = this.chart.set(\"cursor\", am5xy.XYCursor.new(this.root, {}));\r\n        cursor.lineY.set(\"visible\", false);\r\n  \r\n        // Create axes\r\n        let xRenderer = am5xy.AxisRendererX.new(this.root, {\r\n          minGridDistance: 30,\r\n          minorGridEnabled: true,\r\n        });\r\n  \r\n        xRenderer.labels.template.setAll({\r\n          rotation: -45,\r\n          centerY: am5.p50,\r\n          centerX: am5.p100,\r\n          paddingRight: 5,\r\n        });\r\n  \r\n        xRenderer.grid.template.setAll({\r\n          location: 1,\r\n        });\r\n        // Add scrollbar\r\n        this.chart.set(\r\n          \"scrollbarX\",\r\n          am5.Scrollbar.new(this.root, {\r\n            orientation: \"horizontal\",\r\n          })\r\n        );\r\n        let xAxis = this.chart.xAxes.push(\r\n          am5xy.CategoryAxis.new(this.root, {\r\n            maxDeviation: 0.3,\r\n            categoryField: \"storeName\",\r\n            renderer: xRenderer,\r\n            // tooltip: am5.Tooltip.new(this.root, {labelText: \"{fullStoreName}\"}),\r\n          })\r\n        );\r\n  \r\n        let yRenderer = am5xy.AxisRendererY.new(this.root, {\r\n          strokeOpacity: 0.1,\r\n        });\r\n  \r\n        let yAxis = this.chart.yAxes.push(\r\n          am5xy.ValueAxis.new(this.root, {\r\n            maxDeviation: 0.3,\r\n            renderer: yRenderer,\r\n          })\r\n        );\r\n        let data = this.getOverallChartData?.storeData?.map(\r\n          (item: any) => ({\r\n            fullStoreName: item.storeName, // Full store name\r\n      storeName:  item.storeName, // item.storeName.length > 20 ? item.storeName.slice(0, 20) + '...' : Shortened for xAxis\r\n      value: Number(item.count),\r\n      storeId: item.storeId\r\n          })\r\n        );\r\n\r\n   if(this.headerData.client ==='452'){\r\n        if(this.objDataTraffic.processType === \"conversion\"){\r\n          this.processTypeNew = this.headerData?.client === '452' ? `More than ${this.featureConfig?.conversion.value} mins ` : 'Conversion'\r\n        } if(this.objDataTraffic.processType === \"engagers\"){\r\n       \r\n          this.processTypeNew = this.headerData?.client === '452' ? `More than ${this.featureConfig?.bouncedLimit.value} mins` : 'Engagers'\r\n        } if(this.objDataTraffic.processType === \"bounced\"){\r\n          this.footfallValue = \"bounced\";\r\n          this.processTypeNew = this.headerData?.client === '452' ? `Less than ${this.featureConfig?.bouncedLimit.value} mins` :'Bounced'\r\n        }\r\n         if(this.objDataTraffic.processType === \"missedOpportunity\"){\r\n          this.processTypeNew = this.headerData?.client === '452' ? `${this.featureConfig?.missedOpportunityFrom.value}-${this.featureConfig?.missedOpportunityTo.value} mins` :'Missed Opportunity' \r\n        } \r\n      } else {\r\n        this.processTypeNew = this.objDataTraffic.processType\r\n      }\r\n    \r\n        // Create series\r\n        this.series = this.chart.series.push(\r\n          am5xy.ColumnSeries.new(this.root, {\r\n            name: \"Series 1\",\r\n            xAxis: xAxis,\r\n            yAxis: yAxis,\r\n            valueYField: \"value\",\r\n            categoryXField: \"storeName\",\r\n            tooltip: am5.Tooltip.new(this.root, {\r\n              labelText: `${(this.processTypeNew)}, {fullStoreName}: {valueY}`,\r\n            }),\r\n          })\r\n        );\r\n        xAxis.data.setAll(data);\r\n        this.series.columns.template.setAll({ strokeOpacity: 0 });\r\n        this.series.columns.template.events.on(\"click\", (ev: any) => {\r\n          const dataItem = ev.target.dataItem.dataContext;\r\n          this.handleBarClick(dataItem);\r\n        });\r\n  \r\n        this.series.columns.template.setAll({ strokeOpacity: 0 });\r\n  \r\n        this.series.data.setAll(data);\r\n    // Set width for chart container to enable scrolling\r\n    // const totalCount = this.totalCount;\r\n    // const itemWidth = 50; // Width of each item, adjust as needed\r\n    // const minWidth = totalCount * itemWidth; // Calculate total width\r\n    // chartDiv.style.width = `${Math.max(minWidth, 1024)}px`; // Minimum width of 800px\r\n        // Make stuff animate on load\r\n        this.series.appear(1000);\r\n        this.chart.appear(1000, 100);\r\n      }, 0);\r\n    }\r\n  \r\n    capitalizeTitle(text: string): string {\r\n      return text\r\n        .toLowerCase() // Ensure the string is in lowercase first\r\n        .split(' ')    // Split the string into words\r\n        .map(word => word.charAt(0).toUpperCase() + word.slice(1)) // Capitalize the first letter of each word\r\n        .join(' ');    // Join the words back together\r\n    }\r\n    getRangeColor(rate: number): am5.Color {\r\n      let color: am5.Color;\r\n      if (rate >= 0 && rate <= 10) {\r\n        color = am5.color(0xEAF8FF);\r\n      } else if (rate > 10 && rate <= 20) {\r\n        color = am5.color(0xCCE9FE);\r\n      } else if (rate > 20 && rate <= 30) {\r\n        color = am5.color(0xB0D6FC);\r\n      } else if (rate > 30 && rate <= 40) {\r\n        color = am5.color(0x94C2FA);\r\n      } else if (rate > 40 && rate <= 55) {\r\n        color = am5.color(0x78A9F8);\r\n      } else if (rate > 55 && rate <= 75) {\r\n        color = am5.color(0x99D2FD);  \r\n      } else if (rate > 75 && rate <= 90) {\r\n        color = am5.color(0x66BCFD);    \r\n      }  else if (rate > 90 && rate <= 100) {\r\n        color = am5.color(0x3460F3);  \r\n      } else {\r\n        color = am5.color(0xFFF);\r\n      }\r\n      return color;\r\n    }\r\n    initHeatChart(skipLoading: boolean = false) {\r\n      if (!skipLoading) {\r\n        this.chartNoData = false;\r\n        this.chartloading = false;\r\n      }\r\n      setTimeout(() => {\r\n        const chartDiv = document.getElementById(\"heatmapchart\");\r\n        if (!chartDiv) {\r\n          return;\r\n        }\r\n        if (this.root2) {\r\n          this.root2.dispose();\r\n        }\r\n        // Create root element\r\n        this.root2 = am5.Root.new(\"heatmapchart\");\r\n  \r\n        this.root2.container.setAll({\r\n          width: am5.percent(100),\r\n        });\r\n  \r\n        // Set themes\r\n        this.root2.setThemes([\r\n          am5themes_Animated.new(this.root2),\r\n          am5themes_Responsive.new(this.root2),\r\n        ]);\r\n  \r\n        // Create chart\r\n        this.chart2 = this.root2.container.children.push(\r\n          am5xy.XYChart.new(this.root2, {\r\n            panX: false,\r\n            panY: false,\r\n            wheelX: \"none\",\r\n            wheelY: \"none\",\r\n            paddingLeft: 0,\r\n            layout: this.root2.verticalLayout,\r\n          })\r\n        );\r\n  \r\n        // Create axes and their renderers\r\n        const yRenderer = am5xy.AxisRendererY.new(this.root2, {\r\n          minGridDistance: 20,\r\n          inversed: true,\r\n          opposite: true,\r\n          minorGridEnabled: true,\r\n        });\r\n  \r\n        yRenderer.grid.template.set(\"visible\", false);\r\n  \r\n        const yAxis = this.chart2.yAxes.push(\r\n          am5xy.CategoryAxis.new(this.root2, {\r\n            renderer: yRenderer,\r\n            categoryField: \"time\",\r\n          })\r\n        );\r\n  \r\n        const xRenderer = am5xy.AxisRendererX.new(this.root2, {\r\n          minGridDistance: 30,\r\n          opposite: true,\r\n          minorGridEnabled: true,\r\n        });\r\n  \r\n        xRenderer.grid.template.set(\"visible\", false);\r\n        // Hide the on-chart \"Hourly Data\" category label; the panel header already\r\n        // shows the \"Hourly Data\" title, so the axis label is a duplicate.\r\n        xRenderer.labels.template.set(\"visible\", false);\r\n\r\n        const xAxis = this.chart2.xAxes.push(\r\n          am5xy.CategoryAxis.new(this.root2, {\r\n            renderer: xRenderer,\r\n            categoryField: \"weekday\",\r\n          })\r\n        );\r\n  \r\n        // Create series\r\n        this.series2 = this.chart2.series.push(\r\n          am5xy.ColumnSeries.new(this.root2, {\r\n            calculateAggregates: true,\r\n            stroke: am5.color(0xffffff),\r\n            clustered: false,\r\n            xAxis: xAxis,\r\n            yAxis: yAxis,\r\n            categoryXField: \"weekday\",\r\n            categoryYField: \"time\",\r\n            valueField: \"rate\",\r\n          })\r\n        );\r\n        this.series2.columns.template.setAll({\r\n          tooltipText: \"{rate}%\",\r\n          strokeOpacity: 1,\r\n          strokeWidth: 2,\r\n          width: am5.percent(100),\r\n          height: am5.percent(100),\r\n          fill: am5.color(0xffffff), // Default color for columns\r\n        });\r\n        \r\n        // Apply range-based color rules for each data item\r\n        this.series2.columns.template.adapters.add(\"fill\", (fill, target) => {\r\n          const dataItem = target.dataItem?.dataContext as ChartDataItem; // Cast dataContext to ChartDataItem\r\n          if (dataItem && dataItem.rate !== undefined) {\r\n            return this.getRangeColor(dataItem.rate); // Get color based on rate\r\n          }\r\n          return fill;\r\n        });\r\n  \r\n        this.series2.bullets.push(() => {\r\n          return am5.Bullet.new(this.root2, {\r\n            sprite: am5.Label.new(this.root2, {\r\n              text: \"{rate.formatNumber('#.#')}%\",\r\n              fill: am5.color(0x000000),\r\n              centerY: am5.p50,\r\n              centerX: am5.p50,\r\n              populateText: true,\r\n              fontSize: 12, // Reduce font size\r\n            }),\r\n          });\r\n        });\r\n  \r\n        // Set data\r\n        const data = this.getOverallHourlyData?.map((item: any) => ({\r\n          ...item,\r\n          weekday: \"Hourly Data\",\r\n        }));\r\n        this.series2.data.setAll(data);\r\n  \r\n        // Auto-populate X and Y axis category data\r\n        const times: string[] = [];\r\n        am5.array.each(data, function (row: any) {\r\n          if (times.indexOf(row.time) === -1) {\r\n            times.push(row.time);\r\n          }\r\n        });\r\n  \r\n        xAxis.data.setAll([{ weekday: \"Hourly Data\" }]); // Set single category for x-axis\r\n        yAxis.data.setAll(\r\n          times.map(function (item) {\r\n            return { time: item };\r\n          })\r\n        );\r\n  \r\n        this.chart2.appear(1000, 100);\r\n      }, 0);\r\n    }\r\n  \r\n    onDatasetChange(event: any): void {\r\n      this.detailedCharts = false;\r\n      // const target = event.target as HTMLSelectElement;\r\n      this.footfallValue = event;\r\n      if (this.footfallValue === \"footfall\" ||  this.footfallValue === \"conversion\"\r\n        ||  this.footfallValue === \"engagers\" ||  this.footfallValue === \"bounced\"\r\n        ||  this.footfallValue === \"potentialBuyer\" ||  this.footfallValue === \"missedOpportunity\") {\r\n        if (this.root) {\r\n          this.root.dispose();\r\n        }\r\n        this.overallHourlyChart();\r\n        this.overallChart();\r\n      } else if (this.footfallValue === \"demographic\") {\r\n        // Dispose of any previous charts to avoid duplicates\r\n        if (this.demoGraphicsroot) {\r\n          this.demoGraphicsroot.dispose();\r\n        }\r\n        this.getDemoGraphics();\r\n      } \r\n      else if (this.footfallValue === \"buyer\" && this.selectedTab != 'missedOpportunity') {\r\n        // Dispose of any previous charts to avoid duplicates\r\n        if (this.buyersroot) {\r\n          this.buyersroot.dispose();\r\n        }\r\n        this.getBuyers();\r\n      } \r\n      this.cd.detectChanges();\r\n    }\r\n  \r\n   backToFootfall() {\r\n    this.objDataTraffic.limit =20,\r\n     this.objDataTraffic.storeId = this.headerData.stores.filter((store:any) => store.checked).map((store:any) => store.storeId),\r\n     this.detailedCharts = false;\r\n     this.overallHourlyChart();\r\n     this.overallChart();\r\n   }\r\n \r\n   getDemoGraphics(){\r\n     delete this.objDataTraffic.limit;\r\n     delete this.objDataTraffic.offset;\r\n     this.demoNoData =false;\r\n     this.demoloading = true;\r\n     this.service\r\n     .getDemoGraphicsChart(this.objDataTraffic)\r\n     .pipe(takeUntil(this.destroy$))\r\n     ?.subscribe({\r\n       next: (res: any) => {\r\n         if (res && res.code === 200) {\r\n           this.demoGraphicsData = res?.data.demographicData;\r\n           \r\n           this.demoGraphicsChart();\r\n           this.cd.detectChanges(); \r\n           // Call with a delay to ensure the element is in the DOM\r\n            this.demoNoData =false;\r\n            this.demoloading = false;\r\n         } else {\r\n           this.demoNoData =true;\r\n           this.demoloading = false;\r\n         }\r\n       },\r\n       error: (err: any) => {\r\n         this.cd.detectChanges();\r\n       },\r\n       complete: () => {},\r\n     });\r\n     \r\n   }\r\n   demoGraphicsChart(): void {\r\n     this.chartNoData = false;\r\n     this.chartloading = false;\r\n     this.demoNoData =false;\r\n     this.demoloading = false;\r\n     setTimeout(() => {\r\n       const demoGraphicsDiv = document.getElementById(\"demoGraphics\");\r\n       if (!demoGraphicsDiv) {\r\n         return;\r\n       }\r\n       // Dispose of previous chart if it exists\r\n       if (this.demoGraphicsroot) {\r\n         this.demoGraphicsroot.dispose();\r\n       }\r\n \r\n       // Create a new chart\r\n       this.demoGraphicsroot = am5.Root.new(demoGraphicsDiv);\r\n       this.demoGraphicsroot.setThemes([\r\n         am5themes_Animated.new(this.demoGraphicsroot),\r\n       ]);\r\n \r\n       this.demoGraphicsChartInstance =\r\n         this.demoGraphicsroot.container.children.push(\r\n           am5xy.XYChart.new(this.demoGraphicsroot, {\r\n             panX: false,\r\n             panY: false,\r\n             paddingLeft: 0,\r\n             wheelX: \"panX\",\r\n             wheelY: \"zoomX\",\r\n             layout: this.demoGraphicsroot.verticalLayout,\r\n           })\r\n         );\r\n \r\n       let xRenderer = am5xy.AxisRendererX.new(this.demoGraphicsroot, {\r\n         cellStartLocation: 0.1,\r\n         cellEndLocation: 0.9,\r\n         minorGridEnabled: true,\r\n       });\r\n \r\n       let xAxis = this.demoGraphicsChartInstance.xAxes.push(\r\n         am5xy.CategoryAxis.new(this.demoGraphicsroot, {\r\n           categoryField: \"age\",\r\n           renderer: xRenderer,\r\n           tooltip: am5.Tooltip.new(this.demoGraphicsroot, {}),\r\n         })\r\n       );\r\n       this.demoGraphicsData = this.demoGraphicsData?.map(\r\n         (item: any) => ({\r\n           age: item.age,\r\n           count: Number(item.count),\r\n           maleCount: Number(item.maleCount),\r\n           femaleCount: Number(item.femaleCount),\r\n         })\r\n       );\r\n       xRenderer.grid.template.setAll({ location: 1 });\r\n       xAxis.data.setAll(this.demoGraphicsData);\r\n \r\n       let yAxis = this.demoGraphicsChartInstance.yAxes.push(\r\n         am5xy.ValueAxis.new(this.demoGraphicsroot, {\r\n           renderer: am5xy.AxisRendererY.new(this.demoGraphicsroot, {\r\n             strokeOpacity: 0.1,\r\n           }),\r\n         })\r\n       );\r\n      // Add legend\r\n     let legend = this.demoGraphicsChartInstance.children.push(\r\n       am5.Legend.new(this.demoGraphicsroot, {\r\n         x: am5.p100,    // Align to 100% width (right side)\r\n         y: am5.p0,      // Align to the top\r\n         centerX: am5.p100,  // Align the center of the legend to its right\r\n         centerY: am5.p0,    // Align the top of the legend to the top of the chart\r\n       })\r\n     );\r\n \r\n     // Create the series and add each to the legend\r\n     const maleSeries = this.makeSeries(\"Male\", \"maleCount\", xAxis, yAxis);\r\n     const femaleSeries = this.makeSeries(\"Female\", \"femaleCount\", xAxis, yAxis);\r\n \r\n     legend.data.setAll([maleSeries, femaleSeries]);\r\n       this.demoGraphicsChartInstance.appear(1000, 100);\r\n \r\n     },\r\n            0);\r\n \r\n   }\r\n   makeSeries(\r\n     name: any,\r\n     fieldName: any,\r\n     xAxis: am5xy.CategoryAxis<am5xy.AxisRenderer>,\r\n     yAxis: am5xy.ValueAxis<am5xy.AxisRenderer>\r\n   ) {\r\n     let series = this.demoGraphicsChartInstance.series.push(\r\n       am5xy.ColumnSeries.new(this.demoGraphicsroot, {\r\n         name: name,\r\n         xAxis: xAxis,\r\n         yAxis: yAxis,\r\n         valueYField: fieldName,\r\n         categoryXField: \"age\",\r\n       })\r\n     );\r\n   \r\n     series.columns.template.setAll({\r\n       tooltipText: \"{name}, {categoryX}: {valueY}\",\r\n       width: am5.percent(90),\r\n       tooltipY: 0,\r\n       strokeOpacity: 0,\r\n     });\r\n   \r\n     series.data.setAll(this.demoGraphicsData);\r\n     series.appear();\r\n   \r\n     return series;  // Return the series to add it to the legend\r\n   }\r\n   getBuyers(){\r\n     delete this.objDataTraffic.limit;\r\n     delete this.objDataTraffic.offset;\r\n     this.buyersloading = true;\r\n     this.buyersNoData =false;\r\n     this.service\r\n     .getBuyersChart(this.objDataTraffic)\r\n     .pipe(takeUntil(this.destroy$))\r\n     ?.subscribe({\r\n       next: (res: any) => {\r\n         if (res && res.code === 200) {\r\n           this.buyersData = res?.data.buyerData;\r\n          \r\n          this.getBuyersChart(); // Call with a delay to ensure the element is in the DOM\r\n          this.cd.detectChanges(); \r\n          this.buyersNoData =false;\r\n          this.buyersloading = false;\r\n         } else{\r\n           this.buyersloading = false;\r\n           this.buyersNoData =true;\r\n         }\r\n       },\r\n       error: (err: any) => {\r\n         this.cd.detectChanges();\r\n       },\r\n       complete: () => {},\r\n     });\r\n   }\r\n   getBuyersChart(): void {\r\n     this.chartNoData = false;\r\n     this.chartloading = false;\r\n     this.buyersNoData =false;\r\n     this.buyersloading = false;\r\n     setTimeout(() => {\r\n     const buyersDiv = document.getElementById(\"buyersCharts\");\r\n     if (!buyersDiv) {\r\n       return;\r\n     }\r\n \r\n     // Dispose of previous chart if it exists\r\n     if (this.buyersroot) {\r\n       this.buyersroot.dispose();\r\n     }\r\n \r\n     // Create a new chart\r\n     this.buyersroot = am5.Root.new(buyersDiv);\r\n     this.buyersroot.setThemes([\r\n       am5themes_Animated.new(this.buyersroot),\r\n     ]);\r\n \r\n     this.buyersChartInstance =\r\n       this.buyersroot.container.children.push(\r\n         am5xy.XYChart.new(this.buyersroot, {\r\n           panX: false,\r\n           panY: false,\r\n           paddingLeft: 0,\r\n           wheelX: \"panX\",\r\n           wheelY: \"zoomX\",\r\n           layout: this.buyersroot.verticalLayout,\r\n         })\r\n       );\r\n \r\n     let xRenderer = am5xy.AxisRendererX.new(this.buyersroot, {\r\n       cellStartLocation: 0.1,\r\n       cellEndLocation: 0.9,\r\n       minorGridEnabled: true,\r\n     });\r\n \r\n     let xAxis = this.buyersChartInstance.xAxes.push(\r\n       am5xy.CategoryAxis.new(this.buyersroot, {\r\n         categoryField: \"age\",\r\n         renderer: xRenderer,\r\n         tooltip: am5.Tooltip.new(this.buyersroot, {}),\r\n       })\r\n     );\r\n     this.buyersData = this.buyersData?.map(\r\n       (item: any) => ({\r\n         age: item.age,\r\n         singleCount: Number(item.singleCount),\r\n         groupCount: Number(item.groupCount),\r\n       })\r\n     );\r\n     xRenderer.grid.template.setAll({ location: 1 });\r\n     xAxis.data.setAll(this.buyersData);\r\n \r\n     let yAxis = this.buyersChartInstance.yAxes.push(\r\n       am5xy.ValueAxis.new(this.buyersroot, {\r\n         renderer: am5xy.AxisRendererY.new(this.buyersroot, {\r\n           strokeOpacity: 0.1,\r\n         }),\r\n       })\r\n     );\r\n     let legend = this.buyersChartInstance.children.push(\r\n       am5.Legend.new(this.buyersroot, {\r\n         x: am5.p100,    // Align to 100% width (right side)\r\n     y: am5.p0,      // Align to the top\r\n     centerX: am5.p100,  // Align the center of the legend to its right\r\n     centerY: am5.p0,    // Align the top of the legend to the top of the chart\r\n       })\r\n     );\r\n     \r\n   const singleCount =  this.getBuyerSeries(\"Single\", \"singleCount\", xAxis, yAxis);\r\n   const groupCount =  this.getBuyerSeries(\"Group\", \"groupCount\", xAxis, yAxis);\r\n     legend.data.setAll([singleCount, groupCount]);\r\n     this.buyersChartInstance.appear(1000, 100);\r\n   },0);\r\n }\r\n getBuyerSeries(\r\n   name: string,\r\n   fieldName: string,\r\n   xAxis: am5xy.CategoryAxis<am5xy.AxisRenderer>,\r\n   yAxis: am5xy.ValueAxis<am5xy.AxisRenderer>\r\n ) {\r\n   let series = this.buyersChartInstance.series.push(\r\n     am5xy.ColumnSeries.new(this.buyersroot, {\r\n       name: name,\r\n       xAxis: xAxis,\r\n       yAxis: yAxis,\r\n       valueYField: fieldName,\r\n       categoryXField: \"age\",  // Assuming \"age\" is the category field\r\n     })\r\n   );\r\n \r\n   series.columns.template.setAll({\r\n     tooltipText: \"{name}: {valueY}\",\r\n     width: am5.percent(90),\r\n     tooltipY: 0,\r\n     strokeOpacity: 0,\r\n   });\r\n \r\n   series.data.setAll(this.buyersData);  // Assuming you have buyersData\r\n \r\n   return series;  // Return the series for legend\r\n \r\n }\r\n objDataTraffic:any={};\r\n    overallCard() {\r\n      (this.objDataTraffic.limit = 10), (this.objDataTraffic.offset = 0);\r\n      (this.objDataTraffic.conversiontype = this.tableobj.conversiontype);\r\n      delete this.objDataTraffic.normalizedData;\r\n      delete this.objDataTraffic.revenue;\r\n      delete this.objDataTraffic.hourFormat;\r\n      delete this.objDataTraffic.dateRange;\r\n      this.service\r\n        .getOverallCards(this.objDataTraffic)\r\n        .pipe(takeUntil(this.destroy$))\r\n        ?.subscribe({\r\n          next: (res: any) => {\r\n            if (res && res.code === 200) {           \r\n                this.getOverallCardData = res?.data; \r\n            }\r\n          },\r\n          error: (err: any) => {\r\n            this.cd.detectChanges();\r\n          },\r\n          complete: () => {},\r\n        });\r\n    }\r\n  \r\n    get selectedHourBucketLabel(): string {\r\n      const opt = this.hourBucketOptions?.find((o: any) => o.value === this.hourBucketValue);\r\n      return opt ? opt.label : \"1 Hour\";\r\n    }\r\n    onHourBucketChange(value: number): void {\r\n      if (this.hourBucketValue === value) {\r\n        return;\r\n      }\r\n      this.hourBucketValue = value;\r\n      // Only refetch the hourly heatmap. Pass skipLoading so the shared\r\n      // chartloading flag isn't toggled, otherwise the *ngIf wrapping the whole\r\n      // footfall section unmounts the center chart (#testGraphics) and it never\r\n      // repaints (only the heatmap is re-rendered on a bucket change).\r\n      this.overallHourlyChart(true);\r\n    }\r\n    overallHourlyChart(skipLoading: boolean = false) {\r\n      if (!skipLoading) {\r\n        this.chartNoData = false;\r\n        this.chartloading = true;\r\n      }\r\n      (this.objDataTraffic.limit = 10), (this.objDataTraffic.offset = 0);\r\n      delete this.objDataTraffic.normalizedData;\r\n      delete this.objDataTraffic.revenue;\r\n  delete this.objDataTraffic.hourFormat\r\n      delete this.objDataTraffic.dateRange;\r\n      this.objDataTraffic.country = this.headerData?.country.filter((countries:any) => countries.checked).map((countries:any) => countries.country);\r\n      // hourBucket is only valid for the hourly chart API. Send it on a copy so it\r\n      // never leaks into the shared objDataTraffic used by overallChart_v3 etc.\r\n      const hourlyRequestData = { ...this.objDataTraffic, hourBucket: this.hourBucketValue };\r\n      this.service\r\n        .getOverallHourlyChart(hourlyRequestData)\r\n        .pipe(takeUntil(this.destroy$))\r\n        ?.subscribe({\r\n          next: (res: any) => {\r\n            if (res && res.code === 200) {\r\n              if(res?.data?.hourlyData?.length > 0){\r\n                if (!skipLoading) {\r\n                  this.chartNoData = false;\r\n                  this.chartloading = false;\r\n                }\r\n                this.getOverallHourlyData = res?.data?.hourlyData;\r\n                this.initHeatChart(skipLoading);\r\n              } else{\r\n                // On a bucket change keep the section mounted (don't flip the\r\n                // shared no-data flag, which would unmount the center chart);\r\n                // just clear and repaint an empty heatmap.\r\n                if (!skipLoading) {\r\n                  this.chartNoData = true;\r\n                  this.chartloading = false;\r\n                }\r\n                this.getOverallHourlyData=[];\r\n                if (skipLoading) {\r\n                  this.initHeatChart(skipLoading);\r\n                }\r\n              }\r\n\r\n              this.cd.detectChanges();\r\n            } else {\r\n              if (!skipLoading) {\r\n                this.chartNoData = true;\r\n                this.chartloading = false;\r\n              }\r\n              this.getOverallHourlyData=[];\r\n            }\r\n          },\r\n          error: (err: any) => {\r\n            this.cd.detectChanges();\r\n          },\r\n          complete: () => {},\r\n        });\r\n    }\r\n    overallChart() {\r\n      this.offsetTrafficCard =0;\r\n      this.limitTrafficCard =20;\r\n      this.chartNoData = false;\r\n      this.chartloading = true;\r\n      (this.objDataTraffic.limit = 20), (this.objDataTraffic.offset = 0);\r\n      delete this.objDataTraffic.normalizedData;\r\n      delete this.objDataTraffic.revenue;\r\n      delete this.objDataTraffic.hourFormat;\r\n      delete this.objDataTraffic.dateRange;\r\n      this.service\r\n        .getOverallChart(this.objDataTraffic)\r\n        .pipe(takeUntil(this.destroy$),debounceTime(300))\r\n        ?.subscribe({\r\n          next: (res: any) => {\r\n            if (res && res.code === 200) {\r\n              this.getOverallChartData = res?.data;\r\n              this.totalItemsTrafficCard = res.data.totalCount\r\n              this.chartNoData = false;\r\n              this.chartloading = false;\r\n              this.initChart();\r\n        this.setPaginationSizesTrafficCard();\r\n              this.cd.detectChanges();\r\n            } else {\r\n              this.chartNoData = true;\r\n              this.chartloading = false;\r\n            }\r\n          },\r\n          error: (err: any) => {\r\n            this.cd.detectChanges();\r\n          },\r\n          complete: () => {},\r\n        });\r\n    }\r\n    setPaginationSizesTrafficCard() {\r\n      if (this.totalItemsTrafficCard > 20) {\r\n        this.paginationSizesTrafficCard = [20];\r\n      } else {\r\n        this.paginationSizesTrafficCard = [this.totalItemsTrafficCard]; // Just one option if less than 10\r\n      }\r\n      this.pageSizeTrafficCard = this.paginationSizesTrafficCard[0];\r\n    }\r\n    onPageChangeTrafficCard(pageOffset: number) {\r\n      this.offsetTrafficCard = Number(pageOffset);\r\n      this.objDataTraffic.offset = this.offsetTrafficCard -1;\r\n      this.objDataTraffic.limit = this.limitTrafficCard;\r\n      delete this.objDataTraffic.normalizedData;\r\n      delete this.objDataTraffic.revenue;\r\n      delete this.objDataTraffic.hourFormat;\r\n      delete this.objDataTraffic.dateRange;\r\n      this.service\r\n      .getOverallChart(this.objDataTraffic)\r\n      .pipe(takeUntil(this.destroy$),debounceTime(300))\r\n      ?.subscribe({\r\n        next: (res: any) => {\r\n          if (res && res.code === 200) {\r\n            this.getOverallChartData = res?.data;\r\n            this.totalItemsTrafficCard = res.data.totalCount\r\n            this.chartNoData = false;\r\n            this.chartloading = false;\r\n            this.initChart();\r\n            this.cd.detectChanges();\r\n          } else {\r\n            this.chartNoData = true;\r\n            this.chartloading = false;\r\n          }\r\n        },\r\n        error: (err: any) => {\r\n          this.cd.detectChanges();\r\n        },\r\n        complete: () => {},\r\n      });\r\n    }\r\n  \r\n    onPageSizeChangeTrafficCard(pageSize: number) {\r\n      this.pageSizeTrafficCard = Number(pageSize);\r\n      this.limitTrafficCard = Number(pageSize);\r\n      this.currentPageTrafficCard = 1;\r\n      this.offsetTrafficCard = 0;\r\n      this.objDataTraffic.offset = this.offsetTrafficCard;\r\n      this.objDataTraffic.limit = this.limitTrafficCard;\r\n      this.overallChart();\r\n    }\r\n\r\n    trafficHeatChart() {\r\n      this.chartNoData = false;\r\n      this.chartloading = false;\r\n    \r\n      setTimeout(() => {\r\n        const chartDiv = document.getElementById(\"trafficHeatmapChart\");\r\n        if (!chartDiv) {\r\n          return;\r\n        }\r\n    \r\n        // Dispose of the previous chart instance if it exists\r\n        if (this.heatMapRoot) {\r\n          this.heatMapRoot.dispose();\r\n        }\r\n    \r\n        // Initialize the chart root\r\n        this.heatMapRoot = am5.Root.new(\"trafficHeatmapChart\");\r\n        this.heatMapRoot.container.setAll({\r\n          width: am5.percent(100),\r\n        });\r\n    \r\n        // Apply themes\r\n        this.heatMapRoot.setThemes([\r\n          am5themes_Animated.new(this.heatMapRoot),\r\n          am5themes_Responsive.new(this.heatMapRoot),\r\n        ]);\r\n    \r\n        // Create the chart\r\n        this.heatMapChart = this.heatMapRoot.container.children.push(\r\n          am5xy.XYChart.new(this.heatMapRoot, {\r\n            panX: false,\r\n            panY: false,\r\n            wheelX: \"none\",\r\n            wheelY: \"none\",\r\n            paddingLeft: 0,\r\n            layout: this.heatMapRoot.verticalLayout,\r\n          })\r\n        );\r\n    \r\n        // Create Y-axis\r\n        const yRenderer = am5xy.AxisRendererY.new(this.heatMapRoot, {\r\n          visible: false,\r\n          minGridDistance: 30,\r\n          inversed: true,\r\n          minorGridEnabled: true,\r\n        });\r\n        yRenderer.grid.template.set(\"visible\", false);\r\n    \r\n        const yAxis = this.heatMapChart.yAxes.push(\r\n          am5xy.CategoryAxis.new(this.heatMapRoot, {\r\n            maxDeviation: 0,\r\n            renderer: yRenderer,\r\n            categoryField: \"hour\",\r\n          })\r\n        );\r\n    \r\n        // Create X-axis\r\n        const xRenderer = am5xy.AxisRendererX.new(this.heatMapRoot, {\r\n          visible: false,\r\n          minGridDistance: 30,\r\n          minorGridEnabled: true,\r\n        });\r\n        xRenderer.grid.template.set(\"visible\", false);\r\n    \r\n        const xAxis = this.heatMapChart.xAxes.push(\r\n          am5xy.CategoryAxis.new(this.heatMapRoot, {\r\n            renderer: xRenderer,\r\n            categoryField: \"weekday\",\r\n          })\r\n        );\r\n    \r\n        // Add Y-axis label\r\n        yAxis.children.unshift(\r\n          am5.Label.new(this.heatMapRoot, {\r\n            rotation: -90,\r\n            text: \"Hours\",\r\n            y: am5.p50,\r\n            centerX: am5.p50,\r\n            fontFamily: \"Arial\",\r\n            fontSize: \"14px\",\r\n            fill: am5.color(0x000000),\r\n          })\r\n        );\r\n    \r\n        // Create series\r\n        this.heatMapSeries = this.heatMapChart.series.push(\r\n          am5xy.ColumnSeries.new(this.heatMapRoot, {\r\n            calculateAggregates: true,\r\n            stroke: am5.color(0xffffff),\r\n            clustered: false,\r\n            xAxis: xAxis,\r\n            yAxis: yAxis,\r\n            categoryXField: \"weekday\",\r\n            categoryYField: \"hour\",\r\n            valueField: \"value\",\r\n          })\r\n        );\r\n        \r\n        // Configure column appearance\r\n        this.heatMapSeries.columns.template.setAll({\r\n          tooltipText: \"{value}\",\r\n          strokeOpacity: 1,\r\n          strokeWidth: 2,\r\n          width: am5.percent(100),\r\n          height: am5.percent(100),\r\n        });\r\n\r\n        this.heatMapSeries.columns.template.adapters.add(\"fill\", (fill, target) => {\r\n          const dataItem = target.dataItem?.dataContext as { value: number };\r\n          return dataItem && dataItem.value !== undefined ? this.getRangeColorDynamic(dataItem.value) : fill;\r\n        });\r\n    \r\n        // Set column color based on value\r\n            // this.heatMapSeries.columns.template.adapters.add(\"fill\", (fill, target) => {\r\n            //   const dataItem = target.dataItem?.dataContext as { value: number };\r\n            //   return dataItem && dataItem.value !== undefined ? this.getRangeColor1(dataItem.value) : fill;\r\n            // });\r\n        \r\n    \r\n        // Add bullet for value labels\r\n        this.heatMapSeries.bullets.push(() => {\r\n          return am5.Bullet.new(this.heatMapRoot, {\r\n            sprite: am5.Label.new(this.heatMapRoot, {\r\n              text: \"{value}\",\r\n              fill: am5.color(0x000000),\r\n              centerY: am5.p50,\r\n              centerX: am5.p50,\r\n              populateText: true,\r\n              fontSize: 12,\r\n            }),\r\n          });\r\n        });\r\n    \r\n        // Prepare and sort data for the chart\r\n        const heatMapData: any[] = [];\r\n        if (this.getFootfallDensityDwellData && this.getFootfallDensityDwellData.trafficDensity) {\r\n          Object.keys(this.getFootfallDensityDwellData.trafficDensity).forEach(hour => {\r\n            this.getFootfallDensityDwellData.trafficDensity[hour].forEach((dayData: any) => {\r\n              heatMapData.push({\r\n                hour: dayData.time,\r\n                weekday: dayData.day,\r\n                value: parseInt(dayData.footfallCount, 10), // Ensure integer parsing\r\n              });\r\n            });\r\n          });\r\n        } else {\r\n          console.error(\"Traffic density data is undefined or null.\");\r\n        }\r\n        \r\n        // Set data to the series\r\n        this.heatMapSeries.data.setAll(heatMapData);\r\n\r\n        const visibleValues = this.heatMapSeries.data.values.map((d:any) => d.value);\r\n\r\n        this.maxFootfall = Math.max(...visibleValues);\r\n        this.minFootfall = Math.min(...visibleValues);\r\n\r\n        // Extract unique weekdays and hours, sorted\r\n        const weekdays: string[] = Array.from(new Set(heatMapData.map(row => row.weekday)));\r\n        const hours: string[] = Array.from(new Set(heatMapData.map(row => row.hour)))\r\n          .sort((a, b) => a.localeCompare(b));\r\n    \r\n        // Set axis data\r\n        xAxis.data.setAll(\r\n          weekdays.map(item => ({ weekday: item }))\r\n        );\r\n    \r\n        yAxis.data.setAll(\r\n          hours.map(item => ({ hour: item }))\r\n        );\r\n    \r\n        // Finalize chart appearance\r\n        this.heatMapChart.appear(1000, 100);\r\n    \r\n        // Ensure the root is assigned correctly\r\n        this.heatMapRoot = this.heatMapRoot;\r\n    \r\n      }, 0);\r\n  }\r\n  \r\n\r\n  getRangeColorDynamic(footfallCount: number): am5.Color {\r\n    let minFootfall = this.minFootfall ?? 0;\r\n    let maxFootfall = this.maxFootfall ?? 1;\r\n  \r\n    if (maxFootfall === minFootfall) return am5.color(0x008edf); // Prevent division by zero\r\n    const normalizedValue = (footfallCount - minFootfall) / (maxFootfall - minFootfall);\r\n    const clampedValue = Math.min(Math.max(normalizedValue, 0), 0.5);\r\n    const adjustedValue = Math.pow(clampedValue, 0.5);  // Increase power to darken faster\r\n    const baseColor = am5.color(0x008edf);  // Starting color (light blue)\r\n    const adjustedColor = am5.Color.lighten(baseColor, 1 - adjustedValue);\r\n    return adjustedColor;\r\n  }\r\n\r\n\r\n    getRangeColor1(footfallCount: number): am5.Color {\r\n      let maxFootfall:any;\r\n      const minFootfall = 0;  // minimum expected footfall\r\n      if(this.objDataTraffic.dateRange =30)\r\n      maxFootfall = 3500;\r\n    else \r\n    maxFootfall = 750;\r\n      const normalizedValue = (footfallCount - minFootfall) / (maxFootfall - minFootfall);\r\n      const clampedValue = Math.min(Math.max(normalizedValue, 0), 0.5);\r\n      const adjustedValue = Math.pow(clampedValue, 0.5);  // Increase power to darken faster\r\n      const baseColor = am5.color(0x008edf);  // Starting color (light blue)\r\n      const adjustedColor = am5.Color.lighten(baseColor, 1 - adjustedValue);\r\n      return adjustedColor;\r\n    }\r\n    \r\n    \r\n      getDwellChart() {\r\n        this.chartDwellNoData = false;\r\n      this.chartDwellloading = true;\r\n        setTimeout(() => {\r\n          const chartDiv = document.getElementById(\"dwellBarChart\");\r\n          if (!chartDiv) {\r\n            return;\r\n          }\r\n          if (this.dwellRoot) {\r\n            this.dwellRoot.dispose();\r\n          }\r\n          // Create root element\r\n          this.dwellRoot = am5.Root.new(\"dwellBarChart\");\r\n    \r\n          // Set themes\r\n          this.dwellRoot.setThemes([am5themes_Animated.new(this.dwellRoot)]);\r\n    \r\n          // Create chart\r\n          this.dwellChart = this.dwellRoot.container.children.push(\r\n            am5xy.XYChart.new(this.dwellRoot, {\r\n              panX: false,\r\n              panY: false,\r\n              wheelX: \"panX\",\r\n              wheelY: \"zoomX\",\r\n              paddingLeft: 0,\r\n              layout: this.dwellRoot.verticalLayout,\r\n            })\r\n          );\r\n    \r\n         let data = this.getDensityDwellData.dwellTimeSplit?.map(\r\n            (item: any) => ({\r\n              year: (item.dwell_time) + \" Mins\",\r\n              maleCount: Number(item.maleCount_value),\r\n              maleCustom: Number(item.maleCount),\r\n              femaleCount: Number(item.femaleCount_value),\r\n              femaleCustom: Number(item.femaleCount)\r\n            })\r\n          );\r\n              \r\n          // Create axes\r\n          let xRenderer = am5xy.AxisRendererX.new(this.dwellRoot, {\r\n            minGridDistance: 30,\r\n            minorGridEnabled: true,\r\n          });\r\n          let xAxis = this.dwellChart.xAxes.push(\r\n            am5xy.CategoryAxis.new(this.dwellRoot, {\r\n              categoryField: \"year\",\r\n              renderer: xRenderer,\r\n              tooltip: am5.Tooltip.new(this.dwellRoot, {}),\r\n            })\r\n          );\r\n    \r\n          xRenderer.grid.template.setAll({\r\n            location: 1,\r\n          });\r\n    \r\n          xAxis.data?.setAll(data);\r\n    \r\n          let yAxis = this.dwellChart.yAxes.push(\r\n            am5xy.ValueAxis.new(this.dwellRoot, {\r\n              min: 0,\r\n              renderer: am5xy.AxisRendererY.new(this.dwellRoot, {\r\n                strokeOpacity: 0.1,\r\n              }),\r\n            })\r\n          );\r\n    \r\n          // Add legend\r\n          let legend = this.dwellChart.children.push(\r\n            am5.Legend.new(this.dwellRoot, {\r\n              centerX: am5.p50,\r\n              x: am5.p50,\r\n            })\r\n          );\r\n    \r\n          // Add series\r\n          // const \r\n         \r\n          this.makeSeries1(\"Male\", \"maleCount\", xAxis, yAxis, data, legend);\r\n          this.makeSeries1(\"Female\", \"femaleCount\", xAxis, yAxis, data, legend);\r\n          // Make stuff animate on load\r\n          this.dwellChart.appear(1000, 100);\r\n        }, 100);\r\n      }\r\n      makeSeries1(name: string, fieldName: string, xAxis: any, yAxis: any, data: any, legend: any) {\r\n        let series = this.dwellChart.series.push(\r\n          am5xy.ColumnSeries.new(this.dwellRoot, {\r\n            name: name,\r\n            stacked: true,\r\n            xAxis: xAxis,\r\n            yAxis: yAxis,\r\n            valueYField: fieldName,\r\n            categoryXField: \"year\",\r\n          })\r\n        );\r\n      \r\n        series.columns.template.setAll({\r\n          tooltipText: `[bold]{name}[/]\\n{categoryX},\\nFootfall %: {customValue}%`,\r\n          tooltipY: am5.percent(10),\r\n        });\r\n      \r\n        if (data?.length) {\r\n          const enhancedData = data.map((d: any) => ({\r\n            ...d,\r\n            customValue: d[fieldName === \"maleCount\" ? \"maleCustom\" : \"femaleCustom\"]\r\n          }));\r\n          series.data.setAll(enhancedData);\r\n        }\r\n      \r\n        series.bullets.push(() => {\r\n          let label = am5.Label.new(this.dwellRoot, {\r\n            text: \"{valueY}\",\r\n            fill: this.dwellRoot.interfaceColors.get(\"alternativeText\"),\r\n            centerY: am5.p50,\r\n            centerX: am5.p50,\r\n            populateText: true,\r\n          });\r\n      \r\n          label.adapters.add(\"visible\", (visible, target) => {\r\n            const value = (target.dataItem?.dataContext as any)?.[fieldName];\r\n            return value !== 0;\r\n          });\r\n      \r\n          return am5.Bullet.new(this.dwellRoot, {\r\n            sprite: label,\r\n          });\r\n        });\r\n      \r\n        if (legend) {\r\n          legend.data.push(series);\r\n        }\r\n      }\r\n      \r\n      \r\n      \r\n      storeName:any;\r\n      storeId:any;\r\n      formatDate(dateString: string): string {\r\n        return this.dayjs(dateString).format('DD MMM');  // Output: '01 Jan'\r\n      }\r\n        handleBarClick(dataItem: any): void {\r\n          this.storeName = dataItem.fullStoreName;\r\n          this.storeId = dataItem.storeId\r\n          this.objDataTraffic.storeId =[dataItem.storeId],\r\n          this.objDataTraffic.limit =31,\r\n          this.service\r\n            .getSingleStoreChart(this.objDataTraffic)\r\n            .pipe(takeUntil(this.destroy$))\r\n            ?.subscribe({\r\n              next: (res: any) => {\r\n                if (res && res.code === 200) {\r\n                  this.getSingleChartData = res?.data.storeData;\r\n                  this.detailedCharts = true;\r\n                  this.cd.detectChanges(); \r\n                  setTimeout(() => this.getSingleStore(), 0); // Call with a delay to ensure the element is in the DOM\r\n                }\r\n              },\r\n              error: (err: any) => {\r\n                this.cd.detectChanges();\r\n              },\r\n              complete: () => {},\r\n            });\r\n            \r\n        }\r\n\r\n        getSingleStore(){\r\n            const chartDiv = document.getElementById(\"detailedChartDiv\");\r\n            if (!chartDiv) {\r\n              return;\r\n            }\r\n        \r\n            if (this.detailedRoot) {\r\n              this.detailedRoot.dispose();\r\n            }\r\n          \r\n            this.detailedRoot = am5.Root.new(\"detailedChartDiv\");\r\n            this.detailedRoot.setThemes([\r\n              am5themes_Animated.new(this.detailedRoot),\r\n            ]);\r\n        \r\n            this.detailedChart = this.detailedRoot.container.children.push(\r\n              am5xy.XYChart.new(this.detailedRoot, {\r\n                panX: false,\r\n                panY: false,\r\n                wheelX: \"panX\",\r\n                wheelY: \"zoomX\",\r\n                paddingLeft: 0,\r\n              })\r\n            );\r\n        \r\n            // Add cursor\r\n            let cursor = this.detailedChart.set(\r\n              \"cursor\",\r\n              am5xy.XYCursor.new(this.detailedRoot, {})\r\n            );\r\n            cursor.lineY.set(\"visible\", false);\r\n        \r\n            // Create axes\r\n            let xRenderer = am5xy.AxisRendererX.new(this.detailedRoot, {\r\n              minGridDistance: 30,\r\n              minorGridEnabled: true,\r\n            });\r\n        \r\n            xRenderer.labels.template.setAll({\r\n              rotation: -90,\r\n              centerY: am5.p50,\r\n              centerX: am5.p100,\r\n              paddingRight: 15,\r\n            });\r\n        \r\n            xRenderer.grid.template.setAll({\r\n              location: 1,\r\n            });\r\n            // Add scrollbar\r\n            this.detailedChart.set(\r\n              \"scrollbarX\",\r\n              am5.Scrollbar.new(this.detailedRoot, {\r\n                orientation: \"horizontal\",\r\n              })\r\n            );\r\n            let xAxis = this.detailedChart.xAxes.push(\r\n              am5xy.CategoryAxis.new(this.detailedRoot, {\r\n                maxDeviation: 0.3,\r\n                categoryField: \"date\",\r\n                renderer: xRenderer,\r\n                tooltip: am5.Tooltip.new(this.detailedRoot, {}),\r\n              })\r\n            );\r\n        \r\n            let yRenderer = am5xy.AxisRendererY.new(this.detailedRoot, {\r\n              strokeOpacity: 0.1,\r\n            });\r\n        \r\n            let yAxis = this.detailedChart.yAxes.push(\r\n              am5xy.ValueAxis.new(this.detailedRoot, {\r\n                maxDeviation: 0.3,\r\n                renderer: yRenderer,\r\n              })\r\n            );\r\n            \r\n            let data = this.getSingleChartData.map((item: any) => ({\r\n              date: this.formatDate(item.date), // Convert date string to timestamp\r\n              value: Number(item.count), // Use `count` as `value`\r\n            }));\r\n            data.sort((a: any, b: any) => {\r\n              // Parse storeName as a Date and compare\r\n              const dateA = new Date(a.date);\r\n              const dateB = new Date(b.date);\r\n              \r\n              // Sort in ascending order (oldest to newest)\r\n              return dateA.getTime() - dateB.getTime();\r\n            });\r\n            // Create series\r\n            this.detailedSeries = this.detailedChart.series.push(\r\n              am5xy.ColumnSeries.new(this.detailedRoot, {\r\n                name: \"Series 2\",\r\n                xAxis: xAxis,\r\n                yAxis: yAxis,\r\n                valueYField: \"value\",\r\n                sequencedInterpolation: true,\r\n                categoryXField: \"date\",\r\n                tooltip: am5.Tooltip.new(this.detailedRoot, {\r\n                  labelText: \"{valueY}\",\r\n                }),\r\n              })\r\n            );\r\n            this.detailedSeries.columns.template.setAll({ strokeOpacity: 0 });\r\n            xAxis.data.setAll(data);\r\n            this.detailedSeries.data.setAll(data);\r\n            this.detailedSeries.appear(1000);\r\n            this.detailedChart.appear(1000, 100);\r\n        }\r\n\r\n        forecastApi(evt:any){\r\n          if(evt.target.checked){\r\n            this.objData.forecast = true\r\n            this.objData.normalize = false\r\n            this.objData.nob = false\r\n            this.objData.filterBy = 'average'\r\n          } else {\r\n            this.objData.forecast = false\r\n            this.objData.normalize = this.clientData?.featureConfigs?.isNormalized\r\n            this.objData.nob = false\r\n            this.objData.filterBy = 'average'\r\n          }\r\n          this.footfallTrend();\r\n        }\r\n        toggleNormalizeffonly(evt:any){\r\n          this.normalize =evt.target.checked;\r\n           this.tableobj.normalize = this.normalize   \r\n           this.tableobj.fromDate = this.headerData?.date.startDate;\r\n           this.tableobj.toDate = this.headerData?.date.endDate;\r\n           delete this.tableobj.recapVideoDate;       \r\n           this.tableobj.valueType =this.valueType\r\n           console.log(\"🚀 ~ TrafficAnalysisComponent ~ toggleNormalizeffonly ~ this.tableobj:\", this.tableobj)\r\n           this.getFootfallCard();\r\n           this.getMissedOpportunityCard();\r\n            this.getTable();\r\n            this.getZoneValue();\r\n        }\r\n\r\n        toggleNormalize(evt:any){\r\n          this.normalize =evt.target.checked;\r\n          this.tableobj.normalize = this.normalize\r\n          this.objData.normalize = this.normalize\r\n          this.objDataTraffic.normalize = this.normalize\r\n          // this.tableobj.forecast = false\r\n          this.objData.forecast = false;\r\n          this.forecast =false;\r\n          // this.objDataTraffic.forecast = false\r\n          this.conversionValue = this.nob\r\n              ? \"NoB Derived\"\r\n              : this.clientData?.featureConfigs\r\n                  ?.missedOpportunityCalculation === 'engagers-conversion'\r\n              ? \"engagers\"\r\n              : \"footfall\";\r\n          this.getFunnal();\r\n          this.getFootfallCard();\r\n          this.getConversionCard();\r\n          this.getBouncedCard();\r\n          this.getEngagersCard();\r\n          this.getPotentialBuyersCard();\r\n          this.getMissedOpportunityCard();\r\n          this.getPotentialBuyers();\r\n          this.performance();\r\n          this.getTable();\r\n          this.footfallTrend();\r\n          if(this.headerData?.client ==='459'){\r\n            this.selectedTab = \"footfall\"\r\n            this.footfallValue = \"footfall\";\r\n            this.selctedValue ='Footfall Analysis';\r\n            this.selectedTabs('footfall');\r\n          } else {\r\n            this.selectedTab = \"traffic\"\r\n            this.footfallValue = \"traffic\";\r\n            this.selctedValue ='Traffic Analysis';\r\n            this.selectedTabs('traffic');\r\n          }\r\n          if(this.normalize === true){\r\n          this.zoneDwellTimeSplitData =[];\r\n            this.zoneLoading = false;\r\n            this.zoneNoData = true;\r\n            this.storeOperationData =[];\r\n            this.auLocations =[];\r\n            this.mpaloading =false;\r\n            this.mapnoData= true;\r\n            this.forecast =false;\r\n            this.objData.forecast = false;\r\n            if(this.storeIdarray.length === 1){\r\n            this.getRecapVideoData =[]\r\n            this.recaplaoding =false;\r\n            this.recapnoData =true;\r\n            this.service?.togglenormalize(this.normalize);\r\n            }\r\n          } else {\r\n            this.getZone(); this.getZoneValue();\r\n            this.getMap();\r\n            if(this.storeIdarray.length === 1){\r\n            this.getRecap();\r\n            this.service?.togglenormalize(this.normalize);\r\n            }\r\n          }\r\n          this.cd.detectChanges();\r\n        }\r\n\r\n      exportDensity(){\r\n        let obj ={\r\n           fromDate: this.getDensityDwellData?.fromDate,\r\n              toDate: this.getDensityDwellData?.toDate,\r\n                dateRange: this.objDataTraffic?.dateRange,\r\n              storeId:  this.storeIdarray,\r\n              clientId: this.headerData?.client,\r\n              export:true,\r\n              module:\"footfall\"\r\n        }\r\n        \r\n        this.service\r\n              .getTrafficDensityExport(obj)\r\n              .pipe(takeUntil(this.destroy$))\r\n              ?.subscribe({\r\n                next: (res: any) => {\r\n                  if (res) {\r\n                  this.excelService.saveAsExcelFile(res, \"Traffic Density Table \");\r\n                  } else {\r\n                this.toast.getErrorToast(res);\r\n                  }\r\n                }, error: (err: any) => {\r\n                   const errorMessage = err?.error?.message || err?.error?.error || err?.message;\r\n              this.toast.getErrorToast(errorMessage);\r\n                }\r\n              })\r\n      }\r\n      \r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\ninterface DataContext {\r\n  category: string;\r\n  value: number;\r\n  count: number;\r\n}\r\nfunction getDaysBetweenDates(fromDate: string, toDate: string): number {\r\n  // Parse the date strings into Date objects\r\n  const start = new Date(fromDate);\r\n  const end = new Date(toDate);\r\n\r\n  // Calculate the difference in milliseconds\r\n  const differenceInMs = end.getTime() - start.getTime();\r\n\r\n  // Convert milliseconds to days (1 day = 86400000 milliseconds)\r\n  const millisecondsPerDay = 86400000;\r\n  const differenceInDays = Math.floor(differenceInMs / millisecondsPerDay);\r\n\r\n  return differenceInDays;\r\n}\r\n\r\ninterface ChartDataItem {\r\n  rate: number;\r\n  count: number;\r\n  time: string;\r\n}\r\n\r\n\r\n\r\n\r\n\r\n// getCard() {\r\n//   this.tableobj.valueType= this.valueType,\r\n//   this.tableobj.fromDate = this.headerData?.date.startDate;\r\n//   this.tableobj.toDate = this.headerData?.date.endDate;\r\n//  delete this.tableobj.offset;\r\n//  delete this.tableobj.recapVideoDate;\r\n//  delete this.tableobj.limit; \r\n//  delete this.tableobj.sort;\r\n//  delete this.tableobj.sortBy;\r\n//  delete this.tableobj.export;\r\n//   this.heatloading = true;\r\n//   this.heatnoData = false;\r\n//  delete this.tableobj.dateType\r\n//   this.service\r\n//     .getCardList(this.tableobj)\r\n//     .pipe(takeUntil(this.destroy$))\r\n//     ?.subscribe({\r\n//       next: (res: any) => {\r\n//         if (res && res.code === 200) {\r\n//           this.getCardData = res?.data?.card;\r\n//           // this.heatMapData = res?.data?.funnelChart;\r\n         \r\n//           this.cd.detectChanges();\r\n//         } else {\r\n//           this.getCardData =[];\r\n//           this.heatMapData =[];\r\n//         this.heatloading = false\r\n//         this.heatnoData = true\r\n//         }\r\n//       },\r\n//       error: (err: any) => {\r\n//         this.getCardData =[];\r\n//         this.heatMapData =[];\r\n//         this.cd.detectChanges();\r\n//       },\r\n//       complete: () => {},\r\n//     });\r\n// }\r\n\r\n// getCardGraph() {\r\n//   this.cardloading =true;\r\n//   this.cardNodata =false;\r\n//   delete this.tableobj.normalizedData;\r\n//   delete this.tableobj.processType;\r\n//   this.tableobj.dateType = this.dateType;\r\n//   delete this.tableobj.sort;\r\n//   delete this.tableobj.sortBy;\r\n//   this.service\r\n//     .getCardGraphList(this.tableobj)\r\n//     .pipe(takeUntil(this.destroy$))\r\n//     ?.subscribe({\r\n//       next: (res: any) => {\r\n//         if (res && res.code === 200) {\r\n//           this.getCardGraphData = res?.data;\r\n//           if(this.nob){\r\n//             this.valueConversionRate = this.getCardGraphData?.conversion?.nob.nob;\r\n//           this.conversionValue ='NoB Derived'\r\n//           }else { \r\n//           this.valueConversionRate =  this.getCardGraphData?.conversion?.footfall.rate;\r\n//            this.conversionValue ='footfall'\r\n//           }\r\n//           this.cardloading =false;\r\n//           this.cardNodata =false;           \r\n//           this.cd.detectChanges();\r\n//         } else if(!res || res.code === 204){\r\n//           this.getCardGraphData=[];\r\n//           this.cardloading =false;\r\n//           this.cardNodata =true;\r\n//         }\r\n//       },\r\n//       error: (err: any) => {\r\n//         this.cd.detectChanges();\r\n//       },\r\n//       complete: () => {},\r\n//     });\r\n// }\r\n","<script>\r\n    (g => { var h, a, k, p = \"The Google Maps JavaScript API\", c = \"google\", l = \"importLibrary\", q = \"__ib__\", m = document, b = window; b = b[c] || (b[c] = {}); var d = b.maps || (b.maps = {}), r = new Set, e = new URLSearchParams, u = () => h || (h = new Promise(async (f, n) => { await (a = m.createElement(\"script\")); e.set(\"libraries\", [...r] + \"\"); for (k in g) e.set(k.replace(/[A-Z]/g, t => \"_\" + t[0].toLowerCase()), g[k]); e.set(\"callback\", c + \".maps.\" + q); a.src = `https://maps.${c}apis.com/maps/api/js?` + e; d[q] = f; a.onerror = () => h = n(Error(p + \" could not load.\")); a.nonce = m.querySelector(\"script[nonce]\")?.nonce || \"\"; m.head.append(a) })); d[l] ? console.warn(p + \" only loads once. Ignoring:\", g) : d[l] = (f, ...n) => r.add(f) && u().then(() => d[l](f, ...n)) })({\r\n        v: \"weekly\",\r\n        key: { mapKeyUrl }\r\n    });\r\n</script>\r\n<link href='https://api.mapbox.com/mapbox-gl-js/v2.15.0/mapbox-gl.css' rel='stylesheet' />\r\n<script src='https://api.mapbox.com/mapbox-gl-js/v2.15.0/mapbox-gl.js'></script>\r\n\r\n<div *ngIf=\"!showReportProcessingCard && !dataProcessedLoading && !isFootfallView\" class=\"row\">\r\n    <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango' || clientData?.featureConfigs?.isNormalized\"\r\n        class=\"col-md-12 text-end\">\r\n        <div class=\"form-check form-switch my-2\" style=\"float: right !important;\">\r\n            <input class=\"form-check-input cursor-pointer\" type=\"checkbox\" id=\"flexSwitchCheckDefault\"\r\n                [checked]=\"normalize\" (change)=\"toggleNormalize($event)\"><span class=\"normalize-text\">View Normalized\r\n                Data</span>\r\n        </div>\r\n    </div>\r\n    <div class=\"col-md-7 h-100\">\r\n        <div class=\"row\">\r\n            <div class=\"col-md-8 \">\r\n                <div class=\"card card-border h-100\">\r\n                    <div class=\"row position-relative\">\r\n                        <div class=\"col-md-6\">\r\n                            <div class=\"px-0\">\r\n                                <div class=\"card-header ellipse1 border-0 px-3\">\r\n                                    <!-- -->\r\n                                    <h3 class=\"card-title align-items-start flex-column\" [ngbTooltip]=\"footfallTooltip\"\r\n                                        placement=\"right\">\r\n                                        <!-- Display footfall count or '--' if not available -->\r\n                                        <span class=\"card-label header\">{{\r\n                                            getFootfallCardData?.card?.footfall?.count.toLocaleString('en-IN') ?? '--'\r\n                                            }}</span>\r\n                                        <span class=\"sub-header\">{{footfallName}}</span>\r\n                                    </h3>\r\n\r\n                                    <!-- Switch toggle -->\r\n                                    <div class=\"card-toolbar\">\r\n                                        <div class=\"col-md-12 text-end\">\r\n                                            <div class=\"form-check form-switch text-end\">\r\n                                                <input class=\"form-check-input mt-1 cursor-pointer\" type=\"checkbox\"\r\n                                                    id=\"flexSwitchCheckDefault\" [(ngModel)]=\"isAverage\"\r\n                                                    (change)=\"toggleAverage($event)\" [disabled]=\"isDisabled\">\r\n                                            </div>\r\n                                            <div *ngIf=\"isAverage\" class=\"form-check-label mt-5\">Average</div>\r\n                                            <div *ngIf=\"!isAverage\" class=\"form-check-label mt-5\">Actual</div>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                                <ng-template #footfallTooltip>\r\n                                    <div class=\"tooltip-content\">\r\n                                        <h5 class=\"tooltip-title text-start\">Footfall</h5>\r\n                                        <p class=\"text-start\">Total unique walk-ins into the selected stores.</p>\r\n                                        <h4 class=\"text-start\">{{getCardData?.footfall?.count}}</h4>\r\n                                    </div>\r\n                                </ng-template>\r\n                                <div class=\"card-body p-0\">\r\n\r\n                                    <section>\r\n                                        <div class=\"row\">\r\n                                            <div class=\"col-md-10 pe-0\">\r\n                                                <div [class.d-none]=\"!footfallloading\" class=\"text-center d-flex justify-content-center align-items-center\" >\r\n                                                    <img class=\"loader-img\" src=\"assets/tango/layout/Loader.gif\">\r\n                                                </div>\r\n                                                <div *ngIf=\"footfallNodata\" class=\"row\">\r\n\r\n                                                    <div\r\n                                                        class=\"card-body pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n                                                        <img class=\"footimg-nodata1\"\r\n                                                            src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n                                                        <div class=\"nodata-title1\">No data found</div>\r\n                                                        <!-- <div class=\"nodata-sub\">There is no result for this conversion funnel</div> -->\r\n                                                    </div>\r\n\r\n                                                </div>\r\n                                                <div [class.d-none]=\"footfallNodata || footfallloading\" class=\"text-center\" id=\"Footfall\"></div>\r\n                                            </div>\r\n                                            <div class=\"col-md-2 mt-3\">\r\n                                                <div class=\"mt-1 cursor-pointer fs-5\"\r\n                                                    [ngClass]=\"dateType ==='daily' ? 'text-primary' :''\"\r\n                                                    (click)=\"dateValue('daily')\">1D</div>\r\n                                                <div class=\"mt-1 cursor-pointer fs-5\"\r\n                                                    [ngClass]=\"dateType ==='weekly' ? 'text-primary' :''\"\r\n                                                    (click)=\"dateValue('weekly')\">1W</div>\r\n                                                <div class=\"mt-1 cursor-pointer fs-5\"\r\n                                                    [ngClass]=\"dateType ==='monthly' ? 'text-primary' :''\"\r\n                                                    (click)=\"dateValue('monthly')\">1M</div>\r\n                                            </div>\r\n                                        </div>\r\n                                    </section>\r\n                                </div>\r\n                                <div class=\"card-footer ms-2 p-0\">\r\n                                    <div class=\"col-md-12 mt-3\">\r\n                                        <span class=\"mt-2\">\r\n                                            <svg *ngIf=\"!getFootfallCardData?.data?.footfall?.PreviousVariation\"\r\n                                                xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n                                                viewBox=\"0 0 18 18\" fill=\"none\">\r\n                                                <g clip-path=\"url(#clip0_2328_4654)\">\r\n                                                    <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n                                                        stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n                                                        stroke-linejoin=\"round\" />\r\n                                                </g>\r\n                                                <defs>\r\n                                                    <clipPath id=\"clip0_2328_4654\">\r\n                                                        <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n                                                    </clipPath>\r\n                                                </defs>\r\n                                            </svg>\r\n                                            <svg *ngIf=\"getFootfallCardData?.data?.footfall?.PreviousVariation\"\r\n                                                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\"\r\n                                                        stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n                                                        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                                        </span>\r\n                                        <span *ngIf=\"getFootfallCardData?.data?.footfall?.PreviousData ===0\"\r\n                                            class=\"percent-value ms-2\">0%</span>\r\n                                        <span class=\"mt-2 ms-2\"><span class=\"percent-value\"\r\n                                                *ngIf=\"getFootfallCardData?.data?.footfall?.PreviousData !==0\">{{getFootfallCardData?.data?.footfall?.PreviousData\r\n                                                ? getFootfallCardData?.data?.footfall?.PreviousData:'--'}}%</span><span\r\n                                                class=\"week-font\"> vs Previous <span\r\n                                                    *ngIf=\"dateType ==='daily'\">day</span><span\r\n                                                    *ngIf=\"dateType ==='weekly'\">week</span> <span\r\n                                                    *ngIf=\"dateType ==='monthly'\">month</span> </span>\r\n\r\n                                        </span>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <!-- <div>\r\n                    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n                        <path d=\"M6 12L10 8L6 4\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                        </svg>\r\n                        </div> -->\r\n                        </div>\r\n                        <div class=\"position-absolute left-50\">\r\n                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n                                fill=\"none\">\r\n                                <path d=\"M6 12L10 8L6 4\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                    stroke-linejoin=\"round\" />\r\n                            </svg>\r\n                        </div>\r\n                        <div class=\"col-md-6\">\r\n\r\n                            <div class=\"px-2\">\r\n                                <div class=\"card-header ellipse1 border-0 ps-2 pe-0\" triggers=\"mouseenter:mouseleave\"\r\n                                    [ngbTooltip]=\"conversionTooltip\" placement=\"right\">\r\n\r\n                                    <h3 class=\"card-title align-items-start flex-column w-100\">\r\n                                        <div class=\"row w-100\">\r\n                                            <div class=\"col-md-8 text-nowrap\">\r\n                                                <span class=\"card-label header\"\r\n                                                    *ngIf=\"valueConversionRate === 0\">0%</span>\r\n                                                <span class=\"card-label header\"\r\n                                                    *ngIf=\"valueConversionRate !== 0\">{{valueConversionRate ?\r\n                                                    valueConversionRate : '--'}}%</span>\r\n                                                <span *ngIf=\"isConversion\" class=\"sub-header fw-bold\">Conversion</span>\r\n                                            </div>\r\n                                            <div class=\"col-md-4 d-flex justify-content-end align-items-end pe-0\">\r\n                                                <div class=\"form-check form-switch cursor-pointer\">\r\n                                                    <input class=\"form-check-input cursor-pointer\" type=\"checkbox\"\r\n                                                        id=\"Conversion\" [(ngModel)]=\"isConversion\"\r\n                                                        (change)=\"toggleConversion($event)\">\r\n\r\n                                                </div>\r\n                                            </div>\r\n                                        </div>\r\n\r\n\r\n                                        <span class=\"sub-header mt-1\"><span *ngIf=\"headerData?.client === '452'\">More\r\n                                                than {{clientData?.featureConfigs?.conversion?.value}} mins Rate</span>\r\n                                        </span>\r\n                                        <ng-container *ngIf=\"headerData?.client !== '452'\">\r\n                                            <span *ngIf=\"!isConversion\" class=\"sub-header\">Conversion\r\n\r\n                                                <span\r\n                                                    *ngIf=\"conversionValue === 'footfall' || conversionValue === 'engagers' || conversionValue === 'Potential Buyers' || conversionValue === 'NoB Derived'\">\r\n                                                    - <span *ngIf=\"conversionValue === 'NoB Derived'; else otherValues\">\r\n                                                        NoB Derived\r\n                                                    </span>\r\n                                                    <ng-template #otherValues>\r\n                                                        {{ conversionValue | titlecase }}\r\n                                                    </ng-template>\r\n\r\n                                                </span>\r\n\r\n                                            </span><span *ngIf=\"isConversion\" class=\"sub-header\">\r\n\r\n                                                <span\r\n                                                    *ngIf=\"conversionValue === 'footfall' || conversionValue === 'engagers' || conversionValue === 'Potential Buyers' || conversionValue === 'NoB Derived'\">\r\n                                                    <span *ngIf=\"conversionValue === 'NoB Derived'; else otherValues\">\r\n                                                        Conversion - NoB Derived\r\n                                                    </span>\r\n                                                    <ng-template #otherValues>\r\n                                                        {{ conversionValue | titlecase }} - NoB Derived\r\n                                                    </ng-template>\r\n\r\n                                                </span>\r\n\r\n                                            </span></ng-container>\r\n                                    </h3>\r\n\r\n                                </div>\r\n\r\n                                <ng-template #conversionTooltip>\r\n                                    <div class=\"tooltip-content\">\r\n                                        <h5 class=\"tooltip-title text-start\" *ngIf=\"headerData?.client !== '452'\">\r\n                                            Conversion Rate</h5>\r\n                                        <p class=\"text-start\">Total % of {{conversionValue}} who spent more than\r\n                                            {{clientData?.featureConfigs?.conversion?.value}} mins in the store.\r\n                                        </p>\r\n\r\n                                    </div>\r\n                                </ng-template>\r\n                                <div class=\"card-body p-0\">\r\n                                    <div class=\"h-100px pt-10 px-3 row\">\r\n                                        <span class=\"h-50px col-md-3\">\r\n                                            <svg class=\"cursor-pointer\" *ngIf=\"conversionValue !=='footfall'\"\r\n                                                placement=\"top\" ngbTooltip=\"Footfall\" (click)=\"changeValue('footfall')\"\r\n                                                xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n                                                viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                                <path\r\n                                                    d=\"M4 18H9.5V19.25C9.5 19.9793 9.21027 20.6788 8.69454 21.1945C8.17882 21.7103 7.47935 22 6.75 22C6.02065 22 5.32118 21.7103 4.80546 21.1945C4.28973 20.6788 4 19.9793 4 19.25V18ZM8 6.11999C10 6.11999 11 8.99999 11 11C11 12 10.5 13 10 14.5L9.5 16H4C4 15 3.5 13.5 3.5 11C3.5 8.49999 5.498 6.11999 8 6.11999ZM20.054 14.098L19.837 15.329C19.7023 16.0396 19.2931 16.6686 18.698 17.0796C18.1029 17.4907 17.3698 17.6508 16.6576 17.5252C15.9453 17.3996 15.3111 16.9984 14.8925 16.4086C14.4739 15.8188 14.3045 15.0878 14.421 14.374L14.637 13.144L20.054 14.098ZM18.178 1.70499C20.642 2.13899 22.196 4.82999 21.762 7.29199C21.328 9.75399 20.575 11.144 20.402 12.129L14.985 11.174L14.753 9.60999C14.521 8.04599 14.203 6.97399 14.376 5.98999C14.723 4.01999 16.208 1.35799 18.178 1.70499Z\"\r\n                                                    fill=\"#98A2B3\" />\r\n                                            </svg>\r\n                                            <svg placement=\"top\" ngbTooltip=\"Footfall\"\r\n                                                *ngIf=\"conversionValue ==='footfall'\" xmlns=\"http://www.w3.org/2000/svg\"\r\n                                                width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                                <path\r\n                                                    d=\"M4 18H9.5V19.25C9.5 19.9793 9.21027 20.6788 8.69454 21.1945C8.17882 21.7103 7.47935 22 6.75 22C6.02065 22 5.32118 21.7103 4.80546 21.1945C4.28973 20.6788 4 19.9793 4 19.25V18ZM8 6.11999C10 6.11999 11 8.99999 11 11C11 12 10.5 13 10 14.5L9.5 16H4C4 15 3.5 13.5 3.5 11C3.5 8.49999 5.498 6.11999 8 6.11999ZM20.054 14.098L19.837 15.329C19.7023 16.0396 19.2931 16.6686 18.698 17.0796C18.1029 17.4907 17.3698 17.6508 16.6576 17.5252C15.9453 17.3996 15.3111 16.9984 14.8925 16.4086C14.4739 15.8188 14.3045 15.0878 14.421 14.374L14.637 13.144L20.054 14.098ZM18.178 1.70499C20.642 2.13899 22.196 4.82999 21.762 7.29199C21.328 9.75399 20.575 11.144 20.402 12.129L14.985 11.174L14.753 9.60999C14.521 8.04599 14.203 6.97399 14.376 5.98999C14.723 4.01999 16.208 1.35799 18.178 1.70499Z\"\r\n                                                    fill=\"#00A3FF\" />\r\n                                            </svg>\r\n                                        </span>\r\n                                        <span class=\"h-50px col-md-3\">\r\n                                            <svg placement=\"top\"\r\n                                                [ngbTooltip]=\"headerData?.client === '452' ? 'More than '+ featureConfig?.bouncedLimit.value +' mins' : 'Engagers'\"\r\n                                                class=\"cursor-pointer\" *ngIf=\"conversionValue !=='engagers'\"\r\n                                                (click)=\"changeValue('engagers')\" xmlns=\"http://www.w3.org/2000/svg\"\r\n                                                width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                                <path\r\n                                                    d=\"M17 21V19C17 17.9391 16.5786 16.9217 15.8284 16.1716C15.0783 15.4214 14.0609 15 13 15H5C3.93913 15 2.92172 15.4214 2.17157 16.1716C1.42143 16.9217 1 17.9391 1 19V21M23 21V19C22.9993 18.1137 22.7044 17.2528 22.1614 16.5523C21.6184 15.8519 20.8581 15.3516 20 15.13M16 3.13C16.8604 3.3503 17.623 3.8507 18.1676 4.55231C18.7122 5.25392 19.0078 6.11683 19.0078 7.005C19.0078 7.89317 18.7122 8.75608 18.1676 9.45769C17.623 10.1593 16.8604 10.6597 16 10.88M13 7C13 9.20914 11.2091 11 9 11C6.79086 11 5 9.20914 5 7C5 4.79086 6.79086 3 9 3C11.2091 3 13 4.79086 13 7Z\"\r\n                                                    stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                    stroke-linejoin=\"round\" />\r\n                                            </svg>\r\n                                            <svg placement=\"top\"\r\n                                                [ngbTooltip]=\"headerData?.client === '452' ? 'More than '+ featureConfig?.bouncedLimit.value +' mins' : 'Engagers'\"\r\n                                                *ngIf=\"conversionValue ==='engagers'\" xmlns=\"http://www.w3.org/2000/svg\"\r\n                                                width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                                <path\r\n                                                    d=\"M17 21V19C17 17.9391 16.5786 16.9217 15.8284 16.1716C15.0783 15.4214 14.0609 15 13 15H5C3.93913 15 2.92172 15.4214 2.17157 16.1716C1.42143 16.9217 1 17.9391 1 19V21M23 21V19C22.9993 18.1137 22.7044 17.2528 22.1614 16.5523C21.6184 15.8519 20.8581 15.3516 20 15.13M16 3.13C16.8604 3.3503 17.623 3.8507 18.1676 4.55231C18.7122 5.25392 19.0078 6.11683 19.0078 7.005C19.0078 7.89317 18.7122 8.75608 18.1676 9.45769C17.623 10.1593 16.8604 10.6597 16 10.88M13 7C13 9.20914 11.2091 11 9 11C6.79086 11 5 9.20914 5 7C5 4.79086 6.79086 3 9 3C11.2091 3 13 4.79086 13 7Z\"\r\n                                                    stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                    stroke-linejoin=\"round\" />\r\n                                            </svg>\r\n                                        </span>\r\n                                        <span *ngIf=\"headerData?.client !== '452'\" class=\"h-50px col-md-3\">\r\n                                            <svg placement=\"top\" ngbTooltip=\"Potential Buyers\" class=\"cursor-pointer\"\r\n                                                *ngIf=\"conversionValue !=='Potential Buyers'\"\r\n                                                (click)=\"changeValue('potentialBuyers')\"\r\n                                                xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n                                                viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                                <path opacity=\"0.3\"\r\n                                                    d=\"M20.0039 18.002H4.00391C3.40391 18.002 3.00391 17.602 3.00391 17.002V7.00195C3.00391 6.40195 3.40391 6.00195 4.00391 6.00195H20.0039C20.6039 6.00195 21.0039 6.40195 21.0039 7.00195V17.002C21.0039 17.602 20.6039 18.002 20.0039 18.002ZM12.0039 8.00195C10.3039 8.00195 9.00391 9.80195 9.00391 12.002C9.00391 14.202 10.3039 16.002 12.0039 16.002C13.7039 16.002 15.0039 14.202 15.0039 12.002C15.0039 9.80195 13.7039 8.00195 12.0039 8.00195Z\"\r\n                                                    fill=\"#98A2B3\" />\r\n                                                <path\r\n                                                    d=\"M18.0039 6.00195H20.0039C20.6039 6.00195 21.0039 6.40195 21.0039 7.00195V9.00195C19.3039 9.00195 18.0039 7.70195 18.0039 6.00195ZM6.00391 6.00195H4.00391C3.40391 6.00195 3.00391 6.40195 3.00391 7.00195V9.00195C4.70391 9.00195 6.00391 7.70195 6.00391 6.00195ZM21.0039 17.002V15.002C19.3039 15.002 18.0039 16.302 18.0039 18.002H20.0039C20.6039 18.002 21.0039 17.602 21.0039 17.002ZM3.00391 15.002V17.002C3.00391 17.602 3.40391 18.002 4.00391 18.002H6.00391C6.00391 16.302 4.70391 15.002 3.00391 15.002Z\"\r\n                                                    fill=\"#98A2B3\" />\r\n                                            </svg>\r\n                                            <svg placement=\"top\" ngbTooltip=\"Potential Buyers\"\r\n                                                *ngIf=\"conversionValue ==='Potential Buyers'\"\r\n                                                xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n                                                viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                                <path opacity=\"0.3\"\r\n                                                    d=\"M20.0039 18.002H4.00391C3.40391 18.002 3.00391 17.602 3.00391 17.002V7.00195C3.00391 6.40195 3.40391 6.00195 4.00391 6.00195H20.0039C20.6039 6.00195 21.0039 6.40195 21.0039 7.00195V17.002C21.0039 17.602 20.6039 18.002 20.0039 18.002ZM12.0039 8.00195C10.3039 8.00195 9.00391 9.80195 9.00391 12.002C9.00391 14.202 10.3039 16.002 12.0039 16.002C13.7039 16.002 15.0039 14.202 15.0039 12.002C15.0039 9.80195 13.7039 8.00195 12.0039 8.00195Z\"\r\n                                                    fill=\"#00A3FF\" />\r\n                                                <path\r\n                                                    d=\"M18.0039 6.00195H20.0039C20.6039 6.00195 21.0039 6.40195 21.0039 7.00195V9.00195C19.3039 9.00195 18.0039 7.70195 18.0039 6.00195ZM6.00391 6.00195H4.00391C3.40391 6.00195 3.00391 6.40195 3.00391 7.00195V9.00195C4.70391 9.00195 6.00391 7.70195 6.00391 6.00195ZM21.0039 17.002V15.002C19.3039 15.002 18.0039 16.302 18.0039 18.002H20.0039C20.6039 18.002 21.0039 17.602 21.0039 17.002ZM3.00391 15.002V17.002C3.00391 17.602 3.40391 18.002 4.00391 18.002H6.00391C6.00391 16.302 4.70391 15.002 3.00391 15.002Z\"\r\n                                                    fill=\"#00A3FF\" />\r\n                                            </svg>\r\n                                        </span>\r\n                                        <!-- <span class=\"h-50px col-md-3\">\r\n                                    <svg placement=\"top\" ngbTooltip=\"NoB Derived\" class=\"cursor-pointer\" *ngIf=\"conversionValue !=='NoB Derived'\" (click)=\"changeValue('NoB Derived')\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                        <path opacity=\"0.3\"\r\n                                            d=\"M18.0039 21.6005C16.3039 21.6005 15.0039 20.3005 15.0039 18.6005V2.5005C15.0039 2.2005 14.6039 2.00045 14.3039 2.20045L13.0039 3.60048L11.7039 2.30049C11.3039 1.90049 10.7039 1.90049 10.3039 2.30049L9.00391 3.60048L7.70392 2.30049C7.30392 1.90049 6.7039 1.90049 6.3039 2.30049L5.00391 3.60048L3.70392 2.30049C3.50392 2.10049 3.00391 2.2005 3.00391 3.5005V18.6005C3.00391 20.3005 4.30391 21.6005 6.00391 21.6005H18.0039Z\"\r\n                                            fill=\"#98A2B3\" />\r\n                                        <path\r\n                                            d=\"M12.0059 12.5972H11.0059C10.4059 12.5972 10.0059 12.1972 10.0059 11.5972C10.0059 10.9972 10.4059 10.5972 11.0059 10.5972H12.0059C12.6059 10.5972 13.0059 10.9972 13.0059 11.5972C13.0059 12.1972 12.6059 12.5972 12.0059 12.5972ZM9.00586 11.5972C9.00586 10.9972 8.60586 10.5972 8.00586 10.5972H6.00586C5.40586 10.5972 5.00586 10.9972 5.00586 11.5972C5.00586 12.1972 5.40586 12.5972 6.00586 12.5972H8.00586C8.60586 12.5972 9.00586 12.1972 9.00586 11.5972ZM9.00586 7.59717C9.00586 6.99717 8.60586 6.59717 8.00586 6.59717H6.00586C5.40586 6.59717 5.00586 6.99717 5.00586 7.59717C5.00586 8.19717 5.40586 8.59717 6.00586 8.59717H8.00586C8.60586 8.59717 9.00586 8.19717 9.00586 7.59717ZM13.0059 7.59717C13.0059 6.99717 12.6059 6.59717 12.0059 6.59717H11.0059C10.4059 6.59717 10.0059 6.99717 10.0059 7.59717C10.0059 8.19717 10.4059 8.59717 11.0059 8.59717H12.0059C12.6059 8.59717 13.0059 8.19717 13.0059 7.59717ZM13.0059 15.5972C13.0059 14.9972 12.6059 14.5972 12.0059 14.5972H10.0059C9.40586 14.5972 9.00586 14.9972 9.00586 15.5972C9.00586 16.1972 9.40586 16.5972 10.0059 16.5972H12.0059C12.6059 16.5972 13.0059 16.1972 13.0059 15.5972Z\"\r\n                                            fill=\"#98A2B3\" />\r\n                                        <path\r\n                                            d=\"M15.002 18.5971C15.002 20.2971 16.302 21.5971 18.002 21.5971C19.702 21.5971 21.002 20.2971 21.002 18.5971V12.4971C21.002 12.1971 20.602 11.9971 20.302 12.1971L19.002 13.5971L17.702 12.2971C17.302 11.8971 16.702 11.8971 16.302 12.2971L15.002 13.5971V18.5971Z\"\r\n                                            fill=\"#98A2B3\" />\r\n                                    </svg>\r\n                                    <svg placement=\"top\" ngbTooltip=\"NoB Derived\" *ngIf=\"conversionValue ==='NoB Derived'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                        <path opacity=\"0.3\"\r\n                                            d=\"M18.0039 21.6005C16.3039 21.6005 15.0039 20.3005 15.0039 18.6005V2.5005C15.0039 2.2005 14.6039 2.00045 14.3039 2.20045L13.0039 3.60048L11.7039 2.30049C11.3039 1.90049 10.7039 1.90049 10.3039 2.30049L9.00391 3.60048L7.70392 2.30049C7.30392 1.90049 6.7039 1.90049 6.3039 2.30049L5.00391 3.60048L3.70392 2.30049C3.50392 2.10049 3.00391 2.2005 3.00391 3.5005V18.6005C3.00391 20.3005 4.30391 21.6005 6.00391 21.6005H18.0039Z\"\r\n                                            fill=\"#00A3FF\" />\r\n                                        <path\r\n                                            d=\"M12.0059 12.5972H11.0059C10.4059 12.5972 10.0059 12.1972 10.0059 11.5972C10.0059 10.9972 10.4059 10.5972 11.0059 10.5972H12.0059C12.6059 10.5972 13.0059 10.9972 13.0059 11.5972C13.0059 12.1972 12.6059 12.5972 12.0059 12.5972ZM9.00586 11.5972C9.00586 10.9972 8.60586 10.5972 8.00586 10.5972H6.00586C5.40586 10.5972 5.00586 10.9972 5.00586 11.5972C5.00586 12.1972 5.40586 12.5972 6.00586 12.5972H8.00586C8.60586 12.5972 9.00586 12.1972 9.00586 11.5972ZM9.00586 7.59717C9.00586 6.99717 8.60586 6.59717 8.00586 6.59717H6.00586C5.40586 6.59717 5.00586 6.99717 5.00586 7.59717C5.00586 8.19717 5.40586 8.59717 6.00586 8.59717H8.00586C8.60586 8.59717 9.00586 8.19717 9.00586 7.59717ZM13.0059 7.59717C13.0059 6.99717 12.6059 6.59717 12.0059 6.59717H11.0059C10.4059 6.59717 10.0059 6.99717 10.0059 7.59717C10.0059 8.19717 10.4059 8.59717 11.0059 8.59717H12.0059C12.6059 8.59717 13.0059 8.19717 13.0059 7.59717ZM13.0059 15.5972C13.0059 14.9972 12.6059 14.5972 12.0059 14.5972H10.0059C9.40586 14.5972 9.00586 14.9972 9.00586 15.5972C9.00586 16.1972 9.40586 16.5972 10.0059 16.5972H12.0059C12.6059 16.5972 13.0059 16.1972 13.0059 15.5972Z\"\r\n                                            fill=\"#00A3FF\" />\r\n                                        <path\r\n                                            d=\"M15.002 18.5971C15.002 20.2971 16.302 21.5971 18.002 21.5971C19.702 21.5971 21.002 20.2971 21.002 18.5971V12.4971C21.002 12.1971 20.602 11.9971 20.302 12.1971L19.002 13.5971L17.702 12.2971C17.302 11.8971 16.702 11.8971 16.302 12.2971L15.002 13.5971V18.5971Z\"\r\n                                            fill=\"#00A3FF\" />\r\n                                    </svg>\r\n                                    </span> -->\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"card-footer ms-3 p-0\">\r\n                                    <div class=\"col-md-12\">\r\n                                        <div class=\"row pe-0\">\r\n                                            <span class=\"mt-2 col-md-1\">\r\n                                                <svg *ngIf=\"(conversionValue ==='footfall' && !getConversionCardData?.conversion?.footfall.PreviousVariation) || (conversionValue ==='engagers' && !getConversionCardData?.conversion?.engagers.PreviousVariation) || (conversionValue ==='Potential Buyers' && !getConversionCardData?.conversion?.potentialBuyers.PreviousVariation) || (conversionValue ==='NoB Derived' && !getConversionCardData?.conversion?.nob.PreviousVariation)\"\r\n                                                    xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n                                                    viewBox=\"0 0 18 18\" fill=\"none\">\r\n                                                    <g clip-path=\"url(#clip0_2328_4654)\">\r\n                                                        <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n                                                            stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n                                                            stroke-linejoin=\"round\" />\r\n                                                    </g>\r\n                                                    <defs>\r\n                                                        <clipPath id=\"clip0_2328_4654\">\r\n                                                            <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n                                                        </clipPath>\r\n                                                    </defs>\r\n                                                </svg>\r\n                                                <svg *ngIf=\"(conversionValue ==='footfall' && getConversionCardData?.conversion?.footfall.PreviousVariation) || (conversionValue ==='engagers' && getConversionCardData?.conversion?.engagers.PreviousVariation) || (conversionValue ==='Potential Buyers' && getConversionCardData?.conversion?.potentialBuyers.PreviousVariation) || (conversionValue ==='NoB Derived' && getConversionCardData?.conversion?.nob.PreviousVariation)\"\r\n                                                    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\"\r\n                                                            stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n                                                            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                                            </span>\r\n\r\n                                            <span class=\"mt-2 col-md-9 pe-0\">\r\n                                                <span\r\n                                                    *ngIf=\"conversionValue ==='footfall' && getConversionCardData?.conversion?.footfall.PreviousData ===0\"\r\n                                                    class=\"percent-value\">0%</span>\r\n                                                <span\r\n                                                    *ngIf=\"conversionValue ==='footfall' && getConversionCardData?.conversion?.footfall.PreviousData !==0\"\r\n                                                    class=\"percent-value\">{{getConversionCardData?.conversion?.footfall.PreviousData\r\n                                                    ?\r\n                                                    getConversionCardData?.conversion?.footfall.PreviousData:'--'}}%</span>\r\n                                                <span\r\n                                                    *ngIf=\"conversionValue ==='engagers' && getConversionCardData?.conversion?.engagers.PreviousData ===0\"\r\n                                                    class=\"percent-value\">0%</span>\r\n\r\n                                                <span\r\n                                                    *ngIf=\"conversionValue ==='engagers' && getConversionCardData?.conversion?.engagers.PreviousData !==0\"\r\n                                                    class=\"percent-value\">{{getConversionCardData?.conversion?.engagers.PreviousData\r\n                                                    ?\r\n                                                    getConversionCardData?.conversion?.engagers.PreviousData:'--'}}%</span>\r\n\r\n                                                <span\r\n                                                    *ngIf=\"conversionValue ==='Potential Buyers' && getConversionCardData?.conversion?.potentialBuyers.PreviousData ===0\"\r\n                                                    class=\"percent-value\">0%</span>\r\n                                                <span\r\n                                                    *ngIf=\"conversionValue ==='Potential Buyers' && getConversionCardData?.conversion?.potentialBuyers.PreviousData !==0\"\r\n                                                    class=\"percent-value\">{{getConversionCardData?.conversion?.potentialBuyers.PreviousData\r\n                                                    ?\r\n                                                    getConversionCardData?.conversion?.potentialBuyers.PreviousData:'--'}}%</span>\r\n                                                <span\r\n                                                    *ngIf=\"conversionValue ==='NoB Derived' && getConversionCardData?.conversion?.nob.PreviousData ===0\"\r\n                                                    class=\"percent-value\">0%</span>\r\n                                                <span\r\n                                                    *ngIf=\"conversionValue ==='NoB Derived' && getConversionCardData?.conversion?.nob.PreviousData !==0\"\r\n                                                    class=\"percent-value\">{{getConversionCardData?.conversion?.nob.PreviousData\r\n                                                    ? getConversionCardData?.conversion?.nob.PreviousData:'--'}}%</span>\r\n                                                <!-- <span *ngIf=\"conversionValue ==='NoB Derived'\" class=\"percent-value\">--%</span> -->\r\n                                                <!-- <span *ngIf=\"conversionValue ==='' && getConversionCardData?.conversion?.PreviousData ===0\" class=\"percent-value\">0%</span>\r\n\r\n                                                <span *ngIf=\"conversionValue ==='' && getConversionCardData?.conversion?.PreviousData !==0\"  class=\"percent-value\">{{getCardGraphData?.conversion?.PreviousData ? getCardGraphData?.conversion?.PreviousData:'--'}}%</span> -->\r\n\r\n                                                <span class=\"week-font\"> vs Previous <span\r\n                                                        *ngIf=\"dateType ==='daily'\">day</span><span\r\n                                                        *ngIf=\"dateType ==='weekly'\">week</span> <span\r\n                                                        *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n                                            </span>\r\n                                            <span *ngIf=\"clientData?.featureConfigs?.isNOB\"\r\n                                                class=\"col-md-2 px-0 cursor-pointer\" (click)=\"nobUpload()\"><svg\r\n                                                    placement=\"top\" ngbTooltip=\"Upload NoB\" width=\"32\" height=\"32\"\r\n                                                    viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                                                    <g filter=\"url(#filter0_d_6160_4394)\">\r\n                                                        <rect x=\"2\" y=\"1\" width=\"28\" height=\"28\" rx=\"6.22222\"\r\n                                                            fill=\"#EAF8FF\" />\r\n                                                        <rect x=\"2.38889\" y=\"1.38889\" width=\"27.2222\" height=\"27.2222\"\r\n                                                            rx=\"5.83333\" stroke=\"#EAF8FF\" stroke-width=\"0.777778\" />\r\n                                                        <g clip-path=\"url(#clip0_6160_4394)\">\r\n                                                            <path\r\n                                                                d=\"M18.5929 17.5926L16.0003 15M16.0003 15L13.4077 17.5926M16.0003 15V20.8333M21.4382 19.1417C22.0704 18.797 22.5698 18.2517 22.8576 17.5917C23.1454 16.9317 23.2052 16.1947 23.0276 15.4969C22.85 14.7992 22.4451 14.1804 21.8768 13.7384C21.3085 13.2963 20.6092 13.056 19.8892 13.0556H19.0725C18.8763 12.2967 18.5107 11.5923 18.003 10.9951C17.4954 10.3979 16.859 9.92362 16.1416 9.60782C15.4243 9.29201 14.6447 9.14293 13.8615 9.17179C13.0782 9.20065 12.3117 9.40669 11.6196 9.77443C10.9274 10.1422 10.3276 10.662 9.86531 11.2949C9.40299 11.9278 9.09016 12.6573 8.95035 13.4285C8.81054 14.1997 8.84738 14.9926 9.0581 15.7475C9.26881 16.5024 9.64793 17.1997 10.1669 17.7871\"\r\n                                                                stroke=\"#009BF3\" stroke-width=\"1.29889\"\r\n                                                                stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                                        </g>\r\n                                                    </g>\r\n                                                    <defs>\r\n                                                        <filter id=\"filter0_d_6160_4394\" x=\"0.444444\" y=\"0.222222\"\r\n                                                            width=\"31.1111\" height=\"31.1111\"\r\n                                                            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\"\r\n                                                                result=\"hardAlpha\" />\r\n                                                            <feOffset dy=\"0.777778\" />\r\n                                                            <feGaussianBlur stdDeviation=\"0.777778\" />\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_6160_4394\" />\r\n                                                            <feBlend mode=\"normal\" in=\"SourceGraphic\"\r\n                                                                in2=\"effect1_dropShadow_6160_4394\" result=\"shape\" />\r\n                                                        </filter>\r\n                                                        <clipPath id=\"clip0_6160_4394\">\r\n                                                            <rect width=\"15.5556\" height=\"15.5556\" fill=\"white\"\r\n                                                                transform=\"translate(8.22266 7.22223)\" />\r\n                                                        </clipPath>\r\n                                                    </defs>\r\n                                                </svg></span>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n\r\n                        </div>\r\n\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div class=\"col-md-4\">\r\n                <div class=\"card card-border h-100\">\r\n                    <div class=\"card-header ellipse1 border-0 px-3\" [ngbTooltip]=\"bouncedTooltip\" placement=\"right\">\r\n                        <!-- -->\r\n                        <h3 class=\"card-title align-items-start flex-column \">\r\n                            <span class=\"card-label header\">{{getBouncedCardData?.card?.bounced?.rate ?\r\n                                getBouncedCardData?.card?.bounced?.rate :'--'}}%</span>\r\n                            <span class=\"sub-header\"><span *ngIf=\"headerData?.client !== '452'\">Bounced </span> <span\r\n                                    *ngIf=\"headerData?.client === '452'\">Less than\r\n                                    {{clientData?.featureConfigs?.bouncedLimit?.value}} mins </span> Rate</span>\r\n                        </h3>\r\n                    </div>\r\n                    <ng-template #bouncedTooltip>\r\n                        <div class=\"tooltip-content\">\r\n                            <h5 class=\"tooltip-title text-start\" *ngIf=\"headerData?.client !== '452'\">Bounced Rate</h5>\r\n                            <p class=\"text-start\">Total walk-ins who spent less than\r\n                                {{clientData?.featureConfigs?.bouncedLimit?.value}} mins.\r\n                            </p>\r\n\r\n                        </div>\r\n                    </ng-template>\r\n                    <div class=\"card-body p-0\">\r\n                        <div *ngIf=\"bouncedNodata\" class=\"row\">\r\n                            <div class=\"col-lg-12 mb-3\">\r\n                                <div\r\n                                    class=\"card-body pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n                                    <img class=\"img-nodata1\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n                                    <div class=\"nodata-title1\">No data found</div>\r\n                                    <!-- <div class=\"nodata-sub\">There is no result for this conversion funnel</div> -->\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                        <div *ngIf=\"!bouncedNodata\" class=\"text-center\" id=\"BouncedRate\"></div>\r\n                    </div>\r\n                    <div class=\"card-footer ms-2 p-0\">\r\n                        <div class=\"col-md-12\">\r\n                            <span class=\"mt-2\">\r\n                                <svg *ngIf=\"getBouncedCardData?.data?.bounced?.PreviousVariation\"\r\n                                    xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\"\r\n                                    fill=\"none\">\r\n                                    <g clip-path=\"url(#clip0_2328_4654)\">\r\n                                        <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#039855\"\r\n                                            stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                    </g>\r\n                                    <defs>\r\n                                        <clipPath id=\"clip0_2328_4654\">\r\n                                            <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n                                        </clipPath>\r\n                                    </defs>\r\n                                </svg>\r\n                                 <svg *ngIf=\"!getBouncedCardData?.data?.bounced?.PreviousVariation\"\r\n                                    xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\"\r\n                                    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=\"#D92D20\"\r\n                                            stroke-width=\"1.5\" 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=\"getBouncedCardData?.data?.bounced?.PreviousVariation\"\r\n                                    xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\"\r\n                                    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\"\r\n                                            stroke-width=\"1.5\" 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                            </span>\r\n                            <span class=\"mt-2 ms-2\">\r\n                                <span *ngIf=\"getBouncedCardData?.data?.bounced?.PreviousData ===0\"\r\n                                    class=\"percent-value\">0%</span>\r\n                                <span *ngIf=\"getBouncedCardData?.data?.bounced?.PreviousData !==0\"\r\n                                    class=\"percent-value\">{{getBouncedCardData?.data?.bounced?.PreviousData ?\r\n                                    getBouncedCardData?.data?.bounced?.PreviousData:'--'}}%</span>\r\n                                <span class=\"week-font\">\r\n                                    vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span\r\n                                        *ngIf=\"dateType ==='weekly'\">week</span> <span\r\n                                        *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n                            </span>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div class=\"col-md-4 mt-3\">\r\n                <div class=\"card card-border h-100\">\r\n                    <div class=\"card-header ellipse1 border-0 px-3\" [ngbTooltip]=\"engagersTooltip\" placement=\"right\">\r\n                        <!--  -->\r\n                        <h3 class=\"card-title align-items-start flex-column \">\r\n                            <span class=\"card-label header\">{{getEngagersCardData?.card?.engagers?.rate ?\r\n                                getEngagersCardData?.card?.engagers?.rate :'--'}}%</span>\r\n                            <span class=\"sub-header\"><span *ngIf=\"headerData?.client !== '452'\">Engagers</span> <span\r\n                                    *ngIf=\"headerData?.client === '452'\">More than\r\n                                    {{clientData?.featureConfigs?.bouncedLimit?.value}} mins</span> Rate</span>\r\n                        </h3>\r\n                    </div>\r\n                    <ng-template #engagersTooltip>\r\n                        <div class=\"tooltip-content\">\r\n                            <h5 class=\"tooltip-title text-start\" *ngIf=\"headerData?.client !== '452'\">Engagers Rate</h5>\r\n                            <p class=\"text-start\">Total walk-ins who spent more than\r\n                                {{clientData?.featureConfigs?.bouncedLimit?.value}} mins into the selected stores.\r\n                            </p>\r\n                        </div>\r\n                    </ng-template>\r\n                    <div class=\"card-body p-0\">\r\n                        <div *ngIf=\"engagersNodata\" class=\"row\">\r\n                            <div class=\"col-lg-12 mb-3\">\r\n                                <div\r\n                                    class=\"card-body pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n                                    <img class=\"img-nodata1\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n                                    <div class=\"nodata-title1\">No data found</div>\r\n                                    <!-- <div class=\"nodata-sub\">There is no result for this conversion funnel</div> -->\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                        <div *ngIf=\"!engagersNodata\" class=\"text-center\" id=\"engagers\"></div>\r\n                    </div>\r\n                    <div class=\"card-footer ms-2 p-0\">\r\n                        <div class=\"col-md-12\">\r\n                            <span class=\"mt-2\">\r\n                                <svg *ngIf=\"!getEngagersCardData?.data?.engagers?.PreviousVariation\"\r\n                                    xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\"\r\n                                    fill=\"none\">\r\n                                    <g clip-path=\"url(#clip0_2328_4654)\">\r\n                                        <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\"\r\n                                            stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                    </g>\r\n                                    <defs>\r\n                                        <clipPath id=\"clip0_2328_4654\">\r\n                                            <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n                                        </clipPath>\r\n                                    </defs>\r\n                                </svg>\r\n                                <svg *ngIf=\"getEngagersCardData?.data?.engagers?.PreviousVariation\"\r\n                                    xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\"\r\n                                    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\"\r\n                                            stroke-width=\"1.5\" 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                            </span>\r\n                            <span class=\"mt-2 ms-2\">\r\n                                <span *ngIf=\"getEngagersCardData?.data?.engagers?.PreviousData ===0\"\r\n                                    class=\"percent-value\">0%</span>\r\n                                <span *ngIf=\"getEngagersCardData?.data?.engagers?.PreviousData !==0\"\r\n                                    class=\"percent-value\">{{getEngagersCardData?.data?.engagers?.PreviousData ?\r\n                                    getEngagersCardData?.data?.engagers?.PreviousData:'--'}}%</span>\r\n                                <span class=\"week-font\">\r\n                                    vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span\r\n                                        *ngIf=\"dateType ==='weekly'\">week</span> <span\r\n                                        *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n                            </span>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div class=\"col-md-4 mt-3\">\r\n                <div class=\"card card-border h-100\">\r\n                    <div *ngIf=\"headerData?.client === '452'\" class=\"card-header ellipse1 border-0 px-3\">\r\n                        <h3 class=\"card-title align-items-start flex-column\">\r\n                            <span class=\"card-label header\">{{getMissedOpportunityData?.card?.missedopportunities?.rate\r\n                                ? getMissedOpportunityData?.card?.missedopportunities?.rate :'--'}}%</span>\r\n                            <span class=\"sub-header\"><span *ngIf=\"headerData?.client !== '452'\">Missed\r\n                                    Opportunities</span><span\r\n                                    *ngIf=\"headerData?.client === '452'\">{{clientData?.featureConfigs?.missedOpportunityFrom?.value}}\r\n                                    - {{clientData?.featureConfigs?.missedOpportunityTo?.value}} mins</span></span>\r\n                        </h3>\r\n                    </div>\r\n                    <div *ngIf=\"headerData?.client !== '452'\" class=\"card-header ellipse1 border-0 px-3\"\r\n                        [ngbTooltip]=\"missedTooltip\" placement=\"right\">\r\n                        <h3 class=\"card-title align-items-start flex-column\">\r\n                            <span class=\"card-label header\">{{getMissedOpportunityData?.card?.missedopportunities?.rate\r\n                                ? getMissedOpportunityData?.card?.missedopportunities?.rate :'--'}}%</span>\r\n                            <span class=\"sub-header\"><span *ngIf=\"headerData?.client !== '452'\">Missed\r\n                                    Opportunities</span><span\r\n                                    *ngIf=\"headerData?.client === '452'\">{{clientData?.featureConfigs?.missedOpportunityFrom?.value}}\r\n                                    - {{clientData?.featureConfigs?.missedOpportunityTo?.value}} mins</span></span>\r\n                        </h3>\r\n                    </div>\r\n                    <ng-template #missedTooltip>\r\n                        <div class=\"tooltip-content\">\r\n                            <h5 class=\"tooltip-title text-start\" *ngIf=\"headerData?.client !== '452'\">Missed\r\n                                Opportunities</h5>\r\n                            <p *ngIf=\"headerData?.client !== '452'\" class=\"text-start\">The difference between <span\r\n                                    *ngIf=\"clientData?.featureConfigs?.missedOpportunityCalculation === 'engagers-conversion' || \r\n                                                    clientData?.featureConfigs?.missedOpportunityCalculation === 'group-conversion'\">\r\n                                    {{ clientData?.featureConfigs?.missedOpportunityCalculation ===\r\n                                    'engagers-conversion' ? 'engagers and conversions,' : 'potential and conversions,'\r\n                                    }}\r\n                                </span>\r\n                                showing potential loss.</p>\r\n                            <p *ngIf=\"headerData?.client === '452'\" class=\"text-start\">The difference between <span\r\n                                    *ngIf=\"clientData?.featureConfigs?.missedOpportunityCalculation === 'engagers-conversion' || \r\n                            clientData?.featureConfigs?.missedOpportunityCalculation === 'group-conversion'\">\r\n                                    {{\r\n                                    clientData?.featureConfigs?.missedOpportunityCalculation === 'engagers-conversion'\r\n                                    ? ('More than ' + featureConfig?.bouncedLimit?.value + ' mins and More than ' +\r\n                                    featureConfig?.conversion?.value + ' mins')\r\n                                    : ('potential and More than '+ featureConfig?.conversion?.value+ ' mins')\r\n                                    }}\r\n                                </span>\r\n                                showing potential loss.</p>\r\n\r\n                        </div>\r\n                    </ng-template>\r\n                    <div class=\"card-body p-0 h-90px mt-3 mx-3\">\r\n                        <div *ngIf=\"headerData?.client !=='452'\" class=\"row\">\r\n                            <div class=\"col-md-9\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n                                <!-- <div class=\"my-2\"><span class=\"card-label header\">\r\n                            <span class=\"me-1\">{{getMissedOpportunityData?.card?.revenue?.currency}}</span>\r\n                            {{getMissedOpportunityData?.card?.revenue?.value.toLocaleString('en-IN') ?? '--'}}</span></div> -->\r\n\r\n                                <div class=\"my-2\">\r\n                                    <span class=\"card-label header\">\r\n                                        <span>\r\n                                            {{ getMissedOpportunityData?.card?.revenue?.currency }}</span>&nbsp;\r\n                                        <span\r\n                                            [ngStyle]=\"{\r\n                                    'font-size': (getMissedOpportunityData?.card?.revenue?.value?.length > 6 ? '18px' : '20px')}\">\r\n                                            {{ getMissedOpportunityData?.card?.revenue?.value ?\r\n                                            (getMissedOpportunityData?.card?.revenue?.value | number) : '--' }}</span>\r\n                                    </span>\r\n                                </div>\r\n\r\n\r\n                                <!-- <div class=\"my-2\" *ngIf=\"getMissedOpportunityData?.card?.revenue?.currency ==='aed'\"> <span class=\"card-label header\"><span class=\"me-1\">د.إ</span> {{getMissedOpportunityData?.card?.revenue?.value.toLocaleString('en-IN') ?? '--'}}</span></div>  \r\n                        <div class=\"my-2\" *ngIf=\"getMissedOpportunityData?.card?.revenue?.currency ==='inr'\"> <span class=\"card-label header1\"  [ngStyle]=\"{\r\n                                    'font-size': (getMissedOpportunityData?.card?.revenue?.value.toLocaleString('en-IN')?.length > 6 ? '18px' : '20px')}\"><span class=\"me-1\">₹</span>{{getMissedOpportunityData?.card?.revenue?.value.toLocaleString('en-IN') ?? '--'}}</span></div> -->\r\n                                <div class=\"my-1\"><span class=\"sub-header\"\r\n                                        *ngIf=\"headerData?.client !== '452'\">Potential Revenue Loss </span></div>\r\n                            </div>\r\n                            <div class=\"col-md-3 mt-5\"><svg class=\"cursor-pointer\" (click)=\"goToLoss()\"\r\n                                    xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\"\r\n                                    fill=\"none\">\r\n                                    <g filter=\"url(#filter0_d_3885_2531)\">\r\n                                        <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"#EAF8FF\" />\r\n                                        <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#EAF8FF\" />\r\n                                        <g clip-path=\"url(#clip0_3885_2531)\">\r\n                                            <path\r\n                                                d=\"M27.4585 17.2251C27.8133 18.8556 27.6707 20.5614 27.0505 22.1027L25.8593 21.3838L26.017 26.097L30 23.8834L28.717 23.1086C30.7171 18.4823 29.0726 12.9333 24.7799 10.3407C23.3328 9.46633 21.6918 9.00406 20.0206 9.00003C18.3494 8.99599 16.7064 9.45033 15.2555 10.3177L16.2049 12.0544C17.5933 11.2249 19.1953 10.8712 20.7858 11.043C22.3764 11.2149 23.8754 11.9036 25.0723 13.0125C26.2692 14.1214 27.1037 15.5946 27.4585 17.2251Z\"\r\n                                                fill=\"#00A3FF\" />\r\n                                            <path\r\n                                                d=\"M12.5402 20.7759C12.1854 19.1452 12.3282 17.4392 12.9485 15.8978L14.1398 16.6167L13.982 11.9035L10 14.1181L11.283 14.8909C9.28199 19.5182 10.9264 25.0662 15.2192 27.6588C16.6661 28.5333 18.3071 28.9958 19.9783 29C21.6495 29.0042 23.2926 28.55 24.7435 27.6828L23.7951 25.9461C22.4067 26.776 20.8045 27.13 19.2138 26.9583C17.623 26.7867 16.1237 26.0979 14.9267 24.989C13.7296 23.88 12.895 22.4066 12.5402 20.7759Z\"\r\n                                                fill=\"#00A3FF\" />\r\n                                            <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n                                                d=\"M21.0372 13.003C21.0372 12.5514 20.6871 12.1852 20.2552 12.1852C19.8234 12.1852 19.4733 12.5514 19.4733 13.003V14.3659H18.952C18.2607 14.3659 17.5978 14.653 17.109 15.1642C16.6201 15.6754 16.3455 16.3687 16.3455 17.0916C16.3455 17.8146 16.6201 18.5079 17.109 19.0191C17.5978 19.5302 18.2607 19.8174 18.952 19.8174H19.4733V21.998H17.1275C16.6956 21.998 16.3455 22.3641 16.3455 22.8158C16.3455 23.2674 16.6956 23.6335 17.1275 23.6335H19.4733V24.9964C19.4733 25.448 19.8234 25.8141 20.2552 25.8141C20.6871 25.8141 21.0372 25.448 21.0372 24.9964V23.6335H21.5585C22.2498 23.6335 22.9127 23.3463 23.4015 22.8351C23.8903 22.324 24.1649 21.6306 24.1649 20.9077C24.1649 20.1848 23.8903 19.4915 23.4015 18.9803C22.9127 18.4691 22.2498 18.182 21.5585 18.182H21.0372V16.0013H22.8617C23.2936 16.0013 23.6437 15.6352 23.6437 15.1836C23.6437 14.732 23.2936 14.3659 22.8617 14.3659H21.0372V13.003ZM18.952 16.0013H19.4733V18.182H18.952C18.6755 18.182 18.4103 18.0671 18.2148 17.8626C18.0193 17.6581 17.9094 17.3808 17.9094 17.0916C17.9094 16.8025 18.0193 16.5252 18.2148 16.3207C18.4103 16.1162 18.6755 16.0013 18.952 16.0013ZM21.0372 21.998V19.8174H21.5585C21.835 19.8174 22.1002 19.9323 22.2957 20.1368C22.4912 20.3412 22.6011 20.6186 22.6011 20.9077C22.6011 21.1969 22.4912 21.4742 22.2957 21.6787C22.1002 21.8832 21.835 21.998 21.5585 21.998H21.0372Z\"\r\n                                                fill=\"#00A3FF\" />\r\n                                        </g>\r\n                                    </g>\r\n                                    <defs>\r\n                                        <filter id=\"filter0_d_3885_2531\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\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_3885_2531\" />\r\n                                            <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_3885_2531\"\r\n                                                result=\"shape\" />\r\n                                        </filter>\r\n                                        <clipPath id=\"clip0_3885_2531\">\r\n                                            <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(10 9)\" />\r\n                                        </clipPath>\r\n                                    </defs>\r\n                                </svg></div>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"card-footer ms-2 p-0\">\r\n                        <div class=\"col-md-12\">\r\n                            <span class=\"mt-2\">\r\n                                <svg *ngIf=\"getMissedOpportunityData?.data?.missedopportunities?.PreviousVariation\"\r\n                                    xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\"\r\n                                    fill=\"none\">\r\n                                    <g clip-path=\"url(#clip0_2328_4654)\">\r\n                                        <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#039855\"\r\n                                            stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                    </g>\r\n                                    <defs>\r\n                                        <clipPath id=\"clip0_2328_4654\">\r\n                                            <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n                                        </clipPath>\r\n                                    </defs>\r\n                                </svg>\r\n                                <svg *ngIf=\"!getMissedOpportunityData?.data?.missedopportunities?.PreviousVariation\"\r\n                                    xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\"\r\n                                    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=\"#D92D20\"\r\n                                            stroke-width=\"1.5\" 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                            </span>\r\n                            <span class=\"ms-2 mt-2\">\r\n                                <span *ngIf=\"getMissedOpportunityData?.data?.missedopportunities?.PreviousData ===0\"\r\n                                    class=\"percent-value\">0%</span>\r\n                                <span *ngIf=\"getMissedOpportunityData?.data?.missedopportunities?.PreviousData !==0\"\r\n                                    class=\"percent-value\">{{getMissedOpportunityData?.data?.missedopportunities?.PreviousData\r\n                                    ? getMissedOpportunityData?.data?.missedopportunities?.PreviousData:'--'}}%</span>\r\n                                <span class=\"week-font\">\r\n                                    vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span\r\n                                        *ngIf=\"dateType ==='weekly'\">week</span> <span\r\n                                        *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n                            </span>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div class=\"col-md-4 mt-3 h-100\">\r\n                <div class=\"card card-border mb-5 py-0\">\r\n                    <div class=\"card-body p-0 h-90px mt-3 mx-3\" [ngbTooltip]=\"dwellTooltip\" placement=\"right\">\r\n                        <div class=\"d-flex align-items-center me-2\">\r\n                            <div class=\"mt-3 flex-shrink-0\">\r\n                                <svg width=\"40\" height=\"41\" viewBox=\"0 0 40 41\" fill=\"none\"\r\n                                    xmlns=\"http://www.w3.org/2000/svg\">\r\n                                    <rect y=\"0.5\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\r\n                                    <path\r\n                                        d=\"M17.6382 12.8922C17.6382 12.6835 17.7212 12.4833 17.8688 12.3357C18.0164 12.1881 18.2165 12.1052 18.4253 12.1052H21.5734C21.7822 12.1052 21.9823 12.1881 22.1299 12.3357C22.2775 12.4833 22.3605 12.6835 22.3605 12.8922C22.3605 13.1009 22.2775 13.3011 22.1299 13.4487C21.9823 13.5963 21.7822 13.6792 21.5734 13.6792H20.7864V14.7286L20.7853 14.7716C22.1156 14.9174 23.3767 15.4398 24.4204 16.2775L24.4277 16.2712L25.2148 15.4842C25.311 15.3806 25.4333 15.3048 25.569 15.2649C25.7046 15.2251 25.8485 15.2225 25.9855 15.2575C26.1224 15.2925 26.2474 15.3638 26.3472 15.4639C26.4471 15.564 26.5181 15.6892 26.5527 15.8263C26.5877 15.9631 26.5852 16.1068 26.5455 16.2423C26.5058 16.3778 26.4304 16.5002 26.3271 16.5965L25.5401 17.3836L25.5338 17.3909C26.3662 18.4331 26.8875 19.6891 27.0377 21.0144C27.1878 22.3397 26.9607 23.6805 26.3824 24.8825C25.8042 26.0845 24.8983 27.0987 23.7691 27.8086C22.6399 28.5184 21.3332 28.895 19.9993 28.895C18.6655 28.895 17.3588 28.5184 16.2296 27.8086C15.1004 27.0987 14.1945 26.0845 13.6163 24.8825C13.038 23.6805 12.8109 22.3397 12.961 21.0144C13.1112 19.6891 13.6325 18.4331 14.4649 17.3909L14.4586 17.3836L13.6716 16.5965C13.5324 16.4474 13.4566 16.25 13.4601 16.046C13.4636 15.842 13.5462 15.6473 13.6905 15.5031C13.8347 15.3588 14.0294 15.2762 14.2334 15.2727C14.4374 15.2692 14.6348 15.345 14.7839 15.4842L15.571 16.2712L15.5783 16.2775C16.6217 15.44 17.8824 14.9176 19.2123 14.7716V13.6792H18.4253C18.2165 13.6792 18.0164 13.5963 17.8688 13.4487C17.7212 13.3011 17.6382 13.1009 17.6382 12.8922ZM19.9993 27.3212C21.4606 27.3211 22.862 26.7404 23.8952 25.7071C24.9284 24.6737 25.5087 23.2722 25.5086 21.8109C25.5085 20.3496 24.9278 18.9482 23.8945 17.915C22.8611 16.8819 21.4596 16.3015 19.9983 16.3016C18.537 16.3018 17.1356 16.8824 16.1025 17.9158C15.0693 18.9492 14.4889 20.3507 14.489 21.8119C14.4892 23.2732 15.0698 24.6746 16.1032 25.7078C17.1366 26.741 18.5381 27.3213 19.9993 27.3212ZM20.4076 20.2903L21.8032 18.8947C21.8758 18.8195 21.9626 18.7595 22.0586 18.7182C22.1546 18.6769 22.2579 18.6551 22.3624 18.6542C22.4669 18.6532 22.5705 18.6731 22.6673 18.7126C22.764 18.7521 22.8519 18.8105 22.9259 18.8844C22.9998 18.9582 23.0583 19.0461 23.0979 19.1428C23.1375 19.2395 23.1575 19.3431 23.1566 19.4476C23.1557 19.5521 23.1341 19.6554 23.0929 19.7515C23.0517 19.8475 22.9918 19.9344 22.9166 20.007L21.521 21.4037C21.583 21.6371 21.5906 21.8815 21.5432 22.1182C21.4958 22.355 21.3948 22.5777 21.2478 22.7692C21.1008 22.9607 20.9118 23.1159 20.6953 23.2228C20.4789 23.3298 20.2408 23.3856 19.9993 23.386C19.7766 23.3841 19.5567 23.3349 19.3544 23.2416C19.1521 23.1483 18.9718 23.0131 18.8257 22.845C18.6795 22.6768 18.5707 22.4796 18.5066 22.2662C18.4424 22.0528 18.4243 21.8283 18.4534 21.6074C18.4825 21.3865 18.5582 21.1743 18.6755 20.9849C18.7928 20.7955 18.949 20.6332 19.1338 20.5086C19.3185 20.3841 19.5276 20.3003 19.7472 20.2626C19.9668 20.225 20.1919 20.2344 20.4076 20.2903Z\"\r\n                                        fill=\"#667085\" />\r\n                                </svg>\r\n                            </div>\r\n                            <div class=\"mx-3 mt-1\">\r\n                                <div class=\"my-1 card-label header\"\r\n                                    *ngIf=\"getMissedOpportunityData?.card?.avgDwellTime === 0\">0 mins</div>\r\n                                <div class=\"my-1 card-label header\"\r\n                                    *ngIf=\"getMissedOpportunityData?.card?.avgDwellTime !== 0\">\r\n                                    {{getMissedOpportunityData?.card?.avgDwellTime ?\r\n                                    getMissedOpportunityData?.card?.avgDwellTime :'--'}} mins\r\n                                </div>\r\n                                <div class=\"sub-header\">Avg Dwell Time</div>\r\n                            </div>\r\n\r\n                        </div>\r\n\r\n                    </div>\r\n                    <ng-template #dwellTooltip>\r\n                        <div class=\"tooltip-content\">\r\n                            <h5 class=\"tooltip-title text-start\">Avg Dwell Time</h5>\r\n                            <p class=\"text-start\">Average time spent by {{headerData?.client === '452' ? 'More than '+\r\n                                featureConfig?.bouncedLimit.value +' mins' : 'engagers'}} in the selected stores.</p>\r\n                        </div>\r\n                    </ng-template>\r\n                </div>\r\n                <div class=\"card card-border py-0\">\r\n                    <div class=\"card-body p-0 h-90px mt-3 mx-3\" [ngbTooltip]=\"downTooltip\" placement=\"right\">\r\n                        <div class=\"d-flex align-items-center me-2\">\r\n                            <div class=\"flex-shrink-0 mt-3\">\r\n                                <svg width=\"40\" height=\"41\" viewBox=\"0 0 40 41\" fill=\"none\"\r\n                                    xmlns=\"http://www.w3.org/2000/svg\">\r\n                                    <rect y=\"0.5\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\r\n                                    <path\r\n                                        d=\"M21.9004 12.1675C22.9958 12.1675 24.0423 12.3918 24.9977 12.7987C25.9889 13.2207 26.8809 13.8402 27.6279 14.6087C28.3734 15.3756 28.9756 16.2931 29.3857 17.3162C29.7813 18.299 29.9993 19.3756 29.9993 20.5008C29.9993 21.6277 29.7813 22.7043 29.3857 23.6871C28.9756 24.7068 28.3734 25.6244 27.6263 26.3929C26.8809 27.1598 25.9889 27.7793 24.9945 28.2012C24.0391 28.6081 22.9925 28.8325 21.8988 28.8325C20.8034 28.8325 19.7568 28.6081 18.8014 28.2012C17.8102 27.7793 16.9183 27.1598 16.1729 26.3929L16.1712 26.3912C15.4242 25.6227 14.8236 24.7052 14.4134 23.6871C14.2865 23.3707 14.1774 23.0459 14.0879 22.7127C14.2572 22.7294 14.4297 22.7378 14.6038 22.7378C14.9342 22.7378 15.2565 22.7076 15.5706 22.649C15.6227 22.8098 15.6797 22.9688 15.7415 23.1246C16.0785 23.9617 16.5732 24.7152 17.1885 25.3481C17.8037 25.981 18.5378 26.49 19.3499 26.8366C20.1328 27.1698 20.9938 27.3557 21.8988 27.3557C22.8037 27.3557 23.6631 27.1715 24.4476 26.8366C25.2614 26.49 25.9938 25.981 26.6091 25.3481C27.2243 24.7152 27.7191 23.9601 28.056 23.1246C28.3799 22.3192 28.5605 21.4334 28.5605 20.5025C28.5605 19.5715 28.3815 18.6875 28.056 17.8804C27.7191 17.0432 27.2243 16.2898 26.6091 15.6569C25.9938 15.024 25.2598 14.5149 24.4476 14.1684C23.6647 13.8352 22.8037 13.6493 21.8988 13.6493C20.9938 13.6493 20.1344 13.8335 19.3499 14.1684C19.2799 14.1985 19.21 14.2303 19.1416 14.2621C18.8747 13.8301 18.5524 13.4383 18.1829 13.0984C18.3848 12.9913 18.5915 12.8925 18.8014 12.8021C19.7601 12.3918 20.805 12.1675 21.9004 12.1675ZM20.971 16.5393C20.971 16.335 21.0524 16.1508 21.181 16.0169C21.3112 15.8829 21.4902 15.8009 21.6888 15.8009C21.8874 15.8009 22.0664 15.8829 22.1966 16.0169C22.3268 16.1508 22.4066 16.335 22.4066 16.5393V20.4271L25.2305 22.1501C25.3997 22.2539 25.5137 22.4196 25.5592 22.6021C25.6048 22.7847 25.5837 22.9856 25.4827 23.1597V23.1614C25.3818 23.3355 25.2207 23.4527 25.0433 23.4996C24.8659 23.5465 24.6706 23.5247 24.5013 23.4209H24.4997L21.3405 21.4937C21.2314 21.4318 21.1419 21.3413 21.0768 21.2342C21.0101 21.122 20.971 20.9897 20.971 20.8491V16.5393Z\"\r\n                                        fill=\"#667085\" />\r\n                                    <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n                                        d=\"M14.3913 12.6095C16.8164 12.6095 18.7826 14.6321 18.7826 17.1269C18.7826 19.6218 16.8164 21.6444 14.3913 21.6444C11.9661 21.6444 10 19.6218 10 17.1269C10 14.6321 11.9661 12.6095 14.3913 12.6095ZM14.3913 19.7172L16.748 16.7201H15.2848V15.1261H13.4977V16.7201H12.0345L14.3913 19.7172Z\"\r\n                                        fill=\"#F04438\" />\r\n                                </svg>\r\n                            </div>\r\n                            <div class=\"mx-3 mt-1\">\r\n                                <div class=\"my-1 card-label header\"\r\n                                    *ngIf=\"getMissedOpportunityData?.card?.avgDownTime === 0\">0 mins</div>\r\n                                <div class=\"my-1 card-label header\"\r\n                                    *ngIf=\"getMissedOpportunityData?.card?.avgDownTime !== 0\">\r\n                                    {{getMissedOpportunityData?.card?.avgDownTime ?\r\n                                    getMissedOpportunityData?.card?.avgDownTime :'--'}} mins\r\n                                </div>\r\n                                <div class=\"sub-header\">Avg Down Time</div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    <ng-template #downTooltip>\r\n                        <div class=\"tooltip-content\">\r\n                            <h5 class=\"tooltip-title text-start\">Avg Down Time</h5>\r\n                            <p class=\"text-start\">Average camera & network downtime for the selected stores.</p>\r\n                        </div>\r\n                    </ng-template>\r\n                </div>\r\n            </div>\r\n            <div *ngIf=\"headerData?.client !== '452'\" class=\"col-md-4 mt-3 position-relative\">\r\n                <div class=\"card card-border h-100\">\r\n                    <div class=\"card-header ellipse1 border-0 px-3\" [ngbTooltip]=\"potentialTooltip\" placement=\"right\">\r\n                        <h3 class=\"card-title align-items-start flex-column \">\r\n                            <span class=\"card-label header\">{{getPotentialBuyersCardData?.card?.potentialBuyers?.rate ?\r\n                                getPotentialBuyersCardData?.card?.potentialBuyers?.rate :'--'}}%</span>\r\n                            <span class=\"sub-header \">Potential Buyers</span>\r\n                        </h3>\r\n                    </div>\r\n                    <ng-template #potentialTooltip>\r\n                        <div class=\"tooltip-content\">\r\n                            <h5 class=\"tooltip-title text-start\">Potential Buyers</h5>\r\n                            <p class=\"text-start\">Number of groups entering the store.</p>\r\n                        </div>\r\n                    </ng-template>\r\n                    <div class=\"card-body p-0\">\r\n                        <div *ngIf=\"potentialNodata\" class=\"row\">\r\n                            <div class=\"col-lg-12 mb-3\">\r\n                                <div\r\n                                    class=\"card-body pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n                                    <img class=\"img-nodata1\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n                                    <div class=\"nodata-title1\">No data found</div>\r\n                                    <!-- <div class=\"nodata-sub\">There is no result for this conversion funnel</div> -->\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                        <div *ngIf=\"!potentialNodata\" class=\"text-center\" id=\"PotentialBuyers\"></div>\r\n                    </div>\r\n                    <div class=\"card-footer ms-2 p-0\">\r\n                        <div class=\"col-md-12\">\r\n                            <span class=\"mt-2\">\r\n                                <svg *ngIf=\"!getPotentialBuyersCardData?.data?.potentialBuyers?.PreviousVariation\"\r\n                                    xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\"\r\n                                    fill=\"none\">\r\n                                    <g clip-path=\"url(#clip0_2328_4654)\">\r\n                                        <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\" stroke=\"#D92D20\"\r\n                                            stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                    </g>\r\n                                    <defs>\r\n                                        <clipPath id=\"clip0_2328_4654\">\r\n                                            <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n                                        </clipPath>\r\n                                    </defs>\r\n                                </svg>\r\n                                <svg *ngIf=\"getPotentialBuyersCardData?.data?.potentialBuyers?.PreviousVariation\"\r\n                                    xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\"\r\n                                    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\"\r\n                                            stroke-width=\"1.5\" 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                            </span>\r\n                            <span class=\"mt-2 ms-2\">\r\n                                <span *ngIf=\"getPotentialBuyersCardData?.data?.potentialBuyers?.PreviousData ===0\"\r\n                                    class=\"percent-value\">0%</span>\r\n                                <span *ngIf=\"getPotentialBuyersCardData?.data?.potentialBuyers?.PreviousData !==0\"\r\n                                    class=\"percent-value\">{{getPotentialBuyersCardData?.data?.potentialBuyers?.PreviousData\r\n                                    ? getPotentialBuyersCardData?.data?.potentialBuyers?.PreviousData:'--'}}%</span>\r\n                                <span class=\"week-font\">\r\n                                    vs Previous <span *ngIf=\"dateType ==='daily'\">day</span><span\r\n                                        *ngIf=\"dateType ==='weekly'\">week</span> <span\r\n                                        *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n                            </span>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div class=\"position-absolute end-0\">\r\n                    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n                        <path d=\"M6 12L10 8L6 4\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                            stroke-linejoin=\"round\" />\r\n                    </svg>\r\n                </div>\r\n            </div>\r\n            <div *ngIf=\"headerData?.client !== '452'\" class=\"col-md-8 mt-3\">\r\n                <div class=\"card card-border h-100\">\r\n                    <div class=\"row\">\r\n                        <div class=\"col-md-12\">\r\n                            <div class=\"px-2\">\r\n                                <div class=\"card-header ellipse1 border-0 px-3\" [ngbTooltip]=\"potentialBuyerTooltip\"\r\n                                    placement=\"right\">\r\n                                    <h3 class=\"card-title align-items-start flex-column \">\r\n                                        <span class=\"card-label header\">Potential Buyer Distribution</span>\r\n                                        <span class=\"sub-header\">Category-wise</span>\r\n                                    </h3>\r\n                                </div>\r\n                                <ng-template #potentialBuyerTooltip>\r\n                                    <div class=\"tooltip-content\">\r\n                                        <h5 class=\"tooltip-title text-start\">Potential Buyer Distribution</h5>\r\n                                        <p class=\"text-start\">Average group size, along with the count of individuals\r\n                                            versus groups entering the store.</p>\r\n                                    </div>\r\n                                </ng-template>\r\n                                <div class=\"row\">\r\n                                    <div class=\"col-md-9\">\r\n                                        <div class=\"row\">\r\n                                            <div class=\"col-md-6 px-0\">\r\n                                                <div class=\"card-body p-0\">\r\n                                                    <div class=\"text-start ms-10  mt-7 mb-3\"><span><svg\r\n                                                                xmlns=\"http://www.w3.org/2000/svg\" width=\"25\"\r\n                                                                height=\"24\" viewBox=\"0 0 25 24\" fill=\"none\">\r\n                                                                <path\r\n                                                                    d=\"M20.25 21V19C20.25 17.9391 19.8286 16.9217 19.0784 16.1716C18.3283 15.4214 17.3109 15 16.25 15H8.25C7.18913 15 6.17172 15.4214 5.42157 16.1716C4.67143 16.9217 4.25 17.9391 4.25 19V21M16.25 7C16.25 9.20914 14.4591 11 12.25 11C10.0409 11 8.25 9.20914 8.25 7C8.25 4.79086 10.0409 3 12.25 3C14.4591 3 16.25 4.79086 16.25 7Z\"\r\n                                                                    stroke=\"#98A2B3\" stroke-width=\"2\"\r\n                                                                    stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                                            </svg></span><span\r\n                                                            *ngIf=\"getPotentialBuyersData?.potentialBuyers?.potentialBuyersSingle?.count !== 0\"\r\n                                                            class=\"left-card-count mt-2 ms-1\">{{getPotentialBuyersData?.potentialBuyers?.potentialBuyersSingle?.count\r\n                                                            ?\r\n                                                            getPotentialBuyersData?.potentialBuyers?.potentialBuyersSingle?.count.toLocaleString('en-IN'):'--'}}</span>\r\n                                                        <span\r\n                                                            *ngIf=\"getPotentialBuyersData?.potentialBuyers?.potentialBuyersSingle?.count === 0\"\r\n                                                            class=\"left-card-count mt-2 ms-1\">0</span><span\r\n                                                            class=\"left-card-count-header ms-1\">Single</span>\r\n                                                    </div>\r\n                                                    <div class=\"text-start ms-15 mb-3\"><span\r\n                                                            class=\"badge badge-light-default week-font\" [class.invisible]=\"headerData?.client === '528'\">{{getPotentialBuyersData?.potentialBuyers?.potentialBuyersSingle?.ageGroup\r\n                                                            ?\r\n                                                            getPotentialBuyersData?.potentialBuyers?.potentialBuyersSingle?.ageGroup:'--'}}\r\n                                                            age</span></div>\r\n                                                </div>\r\n                                                <div class=\"card-footer ms-2 p-0\">\r\n                                                    <div class=\"col-md-12\">\r\n                                                        <span class=\"mt-2\">\r\n                                                            <svg *ngIf=\"!getPotentialBuyersData?.potentialBuyers?.potentialBuyersSingle?.PreviousVariation\"\r\n                                                                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_2328_4654)\">\r\n                                                                    <path\r\n                                                                        d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n                                                                        stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n                                                                        stroke-linecap=\"round\"\r\n                                                                        stroke-linejoin=\"round\" />\r\n                                                                </g>\r\n                                                                <defs>\r\n                                                                    <clipPath id=\"clip0_2328_4654\">\r\n                                                                        <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n                                                                    </clipPath>\r\n                                                                </defs>\r\n                                                            </svg>\r\n                                                            <svg *ngIf=\"getPotentialBuyersData?.potentialBuyers?.potentialBuyersSingle?.PreviousVariation\"\r\n                                                                xmlns=\"http://www.w3.org/2000/svg\" width=\"12\"\r\n                                                                height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n                                                                <g clip-path=\"url(#clip0_3216_118)\">\r\n                                                                    <path\r\n                                                                        d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\"\r\n                                                                        stroke=\"#039855\" stroke-width=\"1.5\"\r\n                                                                        stroke-linecap=\"round\"\r\n                                                                        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                                                        </span>\r\n                                                        <span class=\"mt-2 ms-2\">\r\n                                                            <span\r\n                                                                *ngIf=\"getPotentialBuyersData?.potentialBuyers?.potentialBuyersSingle?.PreviousData ===0\"\r\n                                                                class=\"percent-value\">0%</span>\r\n                                                            <span\r\n                                                                *ngIf=\"getPotentialBuyersData?.potentialBuyers?.potentialBuyersSingle?.PreviousData !==0\"\r\n                                                                class=\"percent-value\">{{getPotentialBuyersData?.potentialBuyers?.potentialBuyersSingle?.PreviousData\r\n                                                                ?\r\n                                                                getPotentialBuyersData?.potentialBuyers?.potentialBuyersSingle?.PreviousData:'--'}}%</span>\r\n                                                            <span class=\"week-font\"> vs Previous <span\r\n                                                                    *ngIf=\"dateType ==='daily'\">day</span><span\r\n                                                                    *ngIf=\"dateType ==='weekly'\">week</span> <span\r\n                                                                    *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n                                                        </span>\r\n                                                    </div>\r\n                                                </div>\r\n                                            </div>\r\n                                            <div class=\"col-md-6 px-0 position-relative\">\r\n                                                <div class=\"card-body p-0\">\r\n                                                    <div class=\"text-start ms-10 mt-7 mb-3\"><span> <svg width=\"26\"\r\n                                                                height=\"24\" viewBox=\"0 0 26 24\" fill=\"none\"\r\n                                                                xmlns=\"http://www.w3.org/2000/svg\">\r\n                                                                <rect width=\"26\" height=\"24\" fill=\"#DCDCDC\" />\r\n                                                                <rect x=\"-460.5\" y=\"-340.5\" width=\"783\" height=\"1947\"\r\n                                                                    rx=\"4.5\" stroke=\"#9747FF\" stroke-dasharray=\"10 5\" />\r\n                                                                <mask id=\"path-2-inside-1_707_13106\" fill=\"white\">\r\n                                                                    <path\r\n                                                                        d=\"M-189 -89C-189 -95.6274 -183.627 -101 -177 -101H295C301.627 -101 307 -95.6274 307 -89V85C307 91.6274 301.627 97 295 97H-177C-183.627 97 -189 91.6274 -189 85V-89Z\" />\r\n                                                                </mask>\r\n                                                                <path\r\n                                                                    d=\"M-189 -89C-189 -95.6274 -183.627 -101 -177 -101H295C301.627 -101 307 -95.6274 307 -89V85C307 91.6274 301.627 97 295 97H-177C-183.627 97 -189 91.6274 -189 85V-89Z\"\r\n                                                                    fill=\"white\" />\r\n                                                                <path\r\n                                                                    d=\"M-190 -89C-190 -96.1797 -184.18 -102 -177 -102H294C301.18 -102 307 -96.1797 307 -89C307 -95.0751 301.627 -100 295 -100H-177C-183.075 -100 -188 -95.0751 -188 -89H-190ZM307 85C307 92.1797 301.18 98 294 98H-177C-184.18 98 -190 92.1797 -190 85H-188C-188 91.0751 -183.075 96 -177 96H295C301.627 96 307 91.0751 307 85ZM-177 98C-184.18 98 -190 92.1797 -190 85V-89C-190 -96.1797 -184.18 -102 -177 -102V-100C-183.075 -100 -188 -95.0751 -188 -89V85C-188 91.0751 -183.075 96 -177 96V98ZM307 -101V97V-101Z\"\r\n                                                                    fill=\"#D0D5DD\"\r\n                                                                    mask=\"url(#path-2-inside-1_707_13106)\" />\r\n                                                                <mask id=\"path-6-inside-2_707_13106\" fill=\"white\">\r\n                                                                    <path\r\n                                                                        d=\"M7.71064 7.38462C8.19552 7.38462 8.67565 7.28911 9.12362 7.10356C9.57159 6.918 9.97863 6.64603 10.3215 6.30316C10.6644 5.9603 10.9363 5.55326 11.1219 5.10529C11.3074 4.65732 11.4029 4.17719 11.4029 3.69231C11.4029 3.20743 11.3074 2.72729 11.1219 2.27932C10.9363 1.83135 10.6644 1.42431 10.3215 1.08145C9.97863 0.73859 9.57159 0.466616 9.12362 0.28106C8.67565 0.0955043 8.19552 -7.22529e-09 7.71064 0C6.73138 1.45921e-08 5.79222 0.38901 5.09978 1.08145C4.40734 1.77389 4.01833 2.71305 4.01833 3.69231C4.01833 4.67157 4.40734 5.61072 5.09978 6.30316C5.79222 6.99561 6.73138 7.38462 7.71064 7.38462ZM18.7876 7.38462C19.2724 7.38462 19.7526 7.28911 20.2005 7.10356C20.6485 6.918 21.0556 6.64603 21.3984 6.30316C21.7413 5.9603 22.0133 5.55326 22.1988 5.10529C22.3844 4.65732 22.4799 4.17719 22.4799 3.69231C22.4799 3.20743 22.3844 2.72729 22.1988 2.27932C22.0133 1.83135 21.7413 1.42431 21.3984 1.08145C21.0556 0.73859 20.6485 0.466616 20.2005 0.28106C19.7526 0.0955043 19.2724 -7.22529e-09 18.7876 0C17.8083 1.45921e-08 16.8691 0.38901 16.1767 1.08145C15.4843 1.77389 15.0953 2.71305 15.0953 3.69231C15.0953 4.67157 15.4843 5.61072 16.1767 6.30316C16.8691 6.99561 17.8083 7.38462 18.7876 7.38462ZM0.941406 10.736C0.941406 10.4575 0.996258 10.1818 1.10283 9.92448C1.2094 9.66719 1.3656 9.43342 1.56252 9.2365C1.75944 9.03958 1.99321 8.88338 2.2505 8.77681C2.50778 8.67024 2.78354 8.61539 3.06202 8.61539H8.98448C8.55169 9.36345 8.32452 10.2127 8.32602 11.0769C8.32519 11.7755 8.47341 12.4662 8.76079 13.1029C9.04816 13.7396 9.46807 14.3077 9.99248 14.7692H8.60048C8.01418 14.7687 7.43803 14.9222 6.92969 15.2144C6.42134 15.5065 5.99864 15.927 5.70387 16.4338C3.7211 16.0449 2.51618 15.0782 1.81464 13.992C0.941406 12.64 0.941406 11.2431 0.941406 11.0012V10.736ZM17.8977 14.7692C18.484 14.7687 19.0602 14.9222 19.5685 15.2144C20.0769 15.5065 20.4996 15.927 20.7943 16.4338C22.7771 16.0449 23.982 15.0782 24.6836 13.992C25.5568 12.64 25.5568 11.2431 25.5568 11.0012V10.7366C25.5569 10.4581 25.5021 10.1823 25.3955 9.9249C25.289 9.66755 25.1328 9.4337 24.9359 9.23672C24.739 9.03973 24.5052 8.88348 24.2478 8.77687C23.9905 8.67026 23.7147 8.61539 23.4362 8.61539H17.5137C17.9465 9.36345 18.1737 10.2127 18.1722 11.0769C18.173 11.7755 18.0248 12.4662 17.7374 13.1029C17.45 13.7396 17.0301 14.3077 16.5057 14.7692H17.8977ZM16.9414 11.0769C16.9414 12.0562 16.5524 12.9953 15.86 13.6878C15.1675 14.3802 14.2284 14.7692 13.2491 14.7692C12.2698 14.7692 11.3307 14.3802 10.6382 13.6878C9.9458 12.9953 9.55679 12.0562 9.55679 11.0769C9.55679 10.0977 9.9458 9.15851 10.6382 8.46607C11.3307 7.77363 12.2698 7.38462 13.2491 7.38462C14.2284 7.38462 15.1675 7.77363 15.86 8.46607C16.5524 9.15851 16.9414 10.0977 16.9414 11.0769ZM6.47987 18.1206C6.47987 17.5582 6.70329 17.0188 7.10098 16.6211C7.49867 16.2234 8.03806 16 8.60048 16H17.8977C18.4601 16 18.9995 16.2234 19.3972 16.6211C19.7949 17.0188 20.0183 17.5582 20.0183 18.1206V18.3858C20.0183 18.6283 20.0183 20.0246 19.1451 21.3766C18.2325 22.7895 16.4694 24 13.2491 24C10.0288 24 8.26571 22.7895 7.3531 21.3766C6.47987 20.0246 6.47987 18.6277 6.47987 18.3858V18.1206Z\" />\r\n                                                                </mask>\r\n                                                                <path\r\n                                                                    d=\"M7.71064 7.38462C8.19552 7.38462 8.67565 7.28911 9.12362 7.10356C9.57159 6.918 9.97863 6.64603 10.3215 6.30316C10.6644 5.9603 10.9363 5.55326 11.1219 5.10529C11.3074 4.65732 11.4029 4.17719 11.4029 3.69231C11.4029 3.20743 11.3074 2.72729 11.1219 2.27932C10.9363 1.83135 10.6644 1.42431 10.3215 1.08145C9.97863 0.73859 9.57159 0.466616 9.12362 0.28106C8.67565 0.0955043 8.19552 -7.22529e-09 7.71064 0C6.73138 1.45921e-08 5.79222 0.38901 5.09978 1.08145C4.40734 1.77389 4.01833 2.71305 4.01833 3.69231C4.01833 4.67157 4.40734 5.61072 5.09978 6.30316C5.79222 6.99561 6.73138 7.38462 7.71064 7.38462ZM18.7876 7.38462C19.2724 7.38462 19.7526 7.28911 20.2005 7.10356C20.6485 6.918 21.0556 6.64603 21.3984 6.30316C21.7413 5.9603 22.0133 5.55326 22.1988 5.10529C22.3844 4.65732 22.4799 4.17719 22.4799 3.69231C22.4799 3.20743 22.3844 2.72729 22.1988 2.27932C22.0133 1.83135 21.7413 1.42431 21.3984 1.08145C21.0556 0.73859 20.6485 0.466616 20.2005 0.28106C19.7526 0.0955043 19.2724 -7.22529e-09 18.7876 0C17.8083 1.45921e-08 16.8691 0.38901 16.1767 1.08145C15.4843 1.77389 15.0953 2.71305 15.0953 3.69231C15.0953 4.67157 15.4843 5.61072 16.1767 6.30316C16.8691 6.99561 17.8083 7.38462 18.7876 7.38462ZM0.941406 10.736C0.941406 10.4575 0.996258 10.1818 1.10283 9.92448C1.2094 9.66719 1.3656 9.43342 1.56252 9.2365C1.75944 9.03958 1.99321 8.88338 2.2505 8.77681C2.50778 8.67024 2.78354 8.61539 3.06202 8.61539H8.98448C8.55169 9.36345 8.32452 10.2127 8.32602 11.0769C8.32519 11.7755 8.47341 12.4662 8.76079 13.1029C9.04816 13.7396 9.46807 14.3077 9.99248 14.7692H8.60048C8.01418 14.7687 7.43803 14.9222 6.92969 15.2144C6.42134 15.5065 5.99864 15.927 5.70387 16.4338C3.7211 16.0449 2.51618 15.0782 1.81464 13.992C0.941406 12.64 0.941406 11.2431 0.941406 11.0012V10.736ZM17.8977 14.7692C18.484 14.7687 19.0602 14.9222 19.5685 15.2144C20.0769 15.5065 20.4996 15.927 20.7943 16.4338C22.7771 16.0449 23.982 15.0782 24.6836 13.992C25.5568 12.64 25.5568 11.2431 25.5568 11.0012V10.7366C25.5569 10.4581 25.5021 10.1823 25.3955 9.9249C25.289 9.66755 25.1328 9.4337 24.9359 9.23672C24.739 9.03973 24.5052 8.88348 24.2478 8.77687C23.9905 8.67026 23.7147 8.61539 23.4362 8.61539H17.5137C17.9465 9.36345 18.1737 10.2127 18.1722 11.0769C18.173 11.7755 18.0248 12.4662 17.7374 13.1029C17.45 13.7396 17.0301 14.3077 16.5057 14.7692H17.8977ZM16.9414 11.0769C16.9414 12.0562 16.5524 12.9953 15.86 13.6878C15.1675 14.3802 14.2284 14.7692 13.2491 14.7692C12.2698 14.7692 11.3307 14.3802 10.6382 13.6878C9.9458 12.9953 9.55679 12.0562 9.55679 11.0769C9.55679 10.0977 9.9458 9.15851 10.6382 8.46607C11.3307 7.77363 12.2698 7.38462 13.2491 7.38462C14.2284 7.38462 15.1675 7.77363 15.86 8.46607C16.5524 9.15851 16.9414 10.0977 16.9414 11.0769ZM6.47987 18.1206C6.47987 17.5582 6.70329 17.0188 7.10098 16.6211C7.49867 16.2234 8.03806 16 8.60048 16H17.8977C18.4601 16 18.9995 16.2234 19.3972 16.6211C19.7949 17.0188 20.0183 17.5582 20.0183 18.1206V18.3858C20.0183 18.6283 20.0183 20.0246 19.1451 21.3766C18.2325 22.7895 16.4694 24 13.2491 24C10.0288 24 8.26571 22.7895 7.3531 21.3766C6.47987 20.0246 6.47987 18.6277 6.47987 18.3858V18.1206Z\"\r\n                                                                    stroke=\"#98A2B3\" stroke-width=\"3\"\r\n                                                                    mask=\"url(#path-6-inside-2_707_13106)\" />\r\n                                                            </svg></span><span\r\n                                                            *ngIf=\"getPotentialBuyersData?.potentialBuyers?.potentialBuyersGroup?.count !==0\"\r\n                                                            class=\"left-card-count ms-1 mt-2\">{{getPotentialBuyersData?.potentialBuyers?.potentialBuyersGroup?.count\r\n                                                            ?\r\n                                                            getPotentialBuyersData?.potentialBuyers?.potentialBuyersGroup?.count.toLocaleString('en-IN'):'--'}}</span>\r\n                                                        <span\r\n                                                            *ngIf=\"getPotentialBuyersData?.potentialBuyers?.potentialBuyersGroup?.count ===0\"\r\n                                                            class=\"left-card-count ms-1 mt-2\">0</span>\r\n                                                        <span class=\"left-card-count-header ms-1\">Group</span>\r\n                                                    </div>\r\n                                                    <div class=\"text-start ms-15 mb-3\"><span\r\n                                                            class=\"badge badge-light-default week-font\" [class.invisible]=\"headerData?.client === '528'\">{{getPotentialBuyersData?.potentialBuyers?.potentialBuyersGroup?.ageGroup\r\n                                                            ?\r\n                                                            getPotentialBuyersData?.potentialBuyers?.potentialBuyersGroup?.ageGroup:'--'}}\r\n                                                            age</span></div>\r\n\r\n                                                </div>\r\n                                                <div class=\"card-footer ms-2 p-0\">\r\n                                                    <div class=\"col-md-12\">\r\n                                                        <span class=\"mt-2\">\r\n                                                            <svg *ngIf=\"!getPotentialBuyersData?.potentialBuyers?.potentialBuyersGroup?.PreviousVariation\"\r\n                                                                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_2328_4654)\">\r\n                                                                    <path\r\n                                                                        d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n                                                                        stroke=\"#D92D20\" stroke-width=\"1.5\"\r\n                                                                        stroke-linecap=\"round\"\r\n                                                                        stroke-linejoin=\"round\" />\r\n                                                                </g>\r\n                                                                <defs>\r\n                                                                    <clipPath id=\"clip0_2328_4654\">\r\n                                                                        <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n                                                                    </clipPath>\r\n                                                                </defs>\r\n                                                            </svg>\r\n                                                            <svg *ngIf=\"getPotentialBuyersData?.potentialBuyers?.potentialBuyersGroup?.PreviousVariation\"\r\n                                                                xmlns=\"http://www.w3.org/2000/svg\" width=\"12\"\r\n                                                                height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n                                                                <g clip-path=\"url(#clip0_3216_118)\">\r\n                                                                    <path\r\n                                                                        d=\"M11.5 3L6.75 7.75L4.25 5.25L0.5 9M11.5 3H8.5M11.5 3V6\"\r\n                                                                        stroke=\"#039855\" stroke-width=\"1.5\"\r\n                                                                        stroke-linecap=\"round\"\r\n                                                                        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                                                        </span>\r\n                                                        <span class=\"mt-2 ms-2\">\r\n                                                            <span\r\n                                                                *ngIf=\"getPotentialBuyersData?.potentialBuyers?.potentialBuyersGroup?.PreviousData ===0\"\r\n                                                                class=\"percent-value\">0%</span>\r\n                                                            <span\r\n                                                                *ngIf=\"getPotentialBuyersData?.potentialBuyers?.potentialBuyersGroup?.PreviousData !==0\"\r\n                                                                class=\"percent-value\">{{getPotentialBuyersData?.potentialBuyers?.potentialBuyersGroup?.PreviousData\r\n                                                                ?\r\n                                                                getPotentialBuyersData?.potentialBuyers?.potentialBuyersGroup?.PreviousData:'--'}}%</span>\r\n                                                            <span class=\"week-font\"> vs Previous <span\r\n                                                                    *ngIf=\"dateType ==='daily'\">day</span><span\r\n                                                                    *ngIf=\"dateType ==='weekly'\">week</span> <span\r\n                                                                    *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n                                                        </span>\r\n                                                    </div>\r\n                                                </div>\r\n\r\n                                                <div class=\"position-absolute mt-5 end-0\">\r\n                                                    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n                                                        viewBox=\"0 0 16 16\" fill=\"none\">\r\n                                                        <path d=\"M6 12L10 8L6 4\" stroke=\"#98A2B3\" stroke-width=\"2\"\r\n                                                            stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                                    </svg>\r\n                                                </div>\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                    <div class=\"col-md-3 px-0\">\r\n                                        <div class=\"card-body p-0\">\r\n                                            <div class=\"text-center mt-7 mb-3\"><span\r\n                                                    *ngIf=\"getPotentialBuyersData?.potentialBuyers?.potentialBuyersPersons?.count !== 0\"\r\n                                                    class=\"left-card-count mt-2\">{{getPotentialBuyersData?.potentialBuyers?.potentialBuyersPersons?.count\r\n                                                    ?\r\n                                                    getPotentialBuyersData?.potentialBuyers?.potentialBuyersPersons?.count.toLocaleString('en-IN'):'--'}}</span>\r\n                                                <span\r\n                                                    *ngIf=\"getPotentialBuyersData?.potentialBuyers?.potentialBuyersPersons?.count === 0\"\r\n                                                    class=\"left-card-count mt-2\">0</span><span\r\n                                                    class=\"left-card-count-header ms-1\">Persons</span>\r\n                                            </div>\r\n\r\n                                            <div class=\"text-center mb-3\"><span\r\n                                                    class=\"badge badge-light-default week-font\" [class.invisible]=\"headerData?.client === '528'\">{{getPotentialBuyersData?.potentialBuyers?.potentialBuyersPersons?.ageGroup\r\n                                                    ?\r\n                                                    getPotentialBuyersData.potentialBuyers?.potentialBuyersPersons?.ageGroup:'--'}}\r\n                                                    age</span>\r\n                                            </div>\r\n\r\n                                        </div>\r\n                                        <div class=\"card-footer text-center p-0\">\r\n                                            <div class=\"col-md-12\">\r\n                                                <span class=\"mt-2 ms-2\"><span class=\"percent-value\"></span><span\r\n                                                        class=\"ms-2 week-font\"> Avg. Group size</span>\r\n\r\n                                                </span>\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <!-- <div>\r\n                    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n                        <path d=\"M6 12L10 8L6 4\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                        </svg>\r\n                        </div> -->\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n\r\n        </div>\r\n\r\n    </div>\r\n    <div class=\"col-md-5 h-100\">\r\n        <div class=\"card mb-3\">\r\n            <div class=\"card-header border-0 pt-3 ps-5\">\r\n                <h3 class=\"card-title align-items-start flex-column\">\r\n                    <span class=\"title-text\"><span *ngIf=\"headerData?.client !== '452'\">Conversion</span> Funnel\r\n                        <span *ngIf=\"headerData?.client !== '452'\"> <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n                                height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" placement=\"top\"\r\n                                ngbTooltip=\"Total opportunity of sales conversion versus total walkins\">\r\n                                <g clip-path=\"url(#clip0_1432_80035)\">\r\n                                    <path\r\n                                        d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\"\r\n                                        stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                        stroke-linejoin=\"round\" />\r\n                                </g>\r\n                                <defs>\r\n                                    <clipPath id=\"clip0_1432_80035\">\r\n                                        <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n                                    </clipPath>\r\n                                </defs>\r\n                            </svg></span>\r\n                        <span *ngIf=\"headerData?.client === '452'\">\r\n                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n                                fill=\"none\" placement=\"top\"\r\n                                [ngbTooltip]=\"'Total opportunity of sales More than ' + clientData?.featureConfigs?.conversion?.value + ' mins versus total walkins'\">\r\n                                <g clip-path=\"url(#clip0_1432_80035)\">\r\n                                    <path\r\n                                        d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\"\r\n                                        stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                        stroke-linejoin=\"round\" />\r\n                                </g>\r\n                                <defs>\r\n                                    <clipPath id=\"clip0_1432_80035\">\r\n                                        <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n                                    </clipPath>\r\n                                </defs>\r\n                            </svg>\r\n                        </span>\r\n                    </span>\r\n                    <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} –\r\n                        {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n                </h3>\r\n\r\n            </div>\r\n\r\n            <div class=\"card-body p-0\">\r\n                <div *ngIf=\"heatloading\" class=\"row loader d-flex justify-content-center align-items-center h-275px\">\r\n                    <div class=\"shimmer pt-0\">\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 title\"></div>\r\n                            <div class=\"stroke animate link\"></div>\r\n                            <div class=\"stroke animate link\"></div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div *ngIf=\"heatnoData\" 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\" 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 <span\r\n                                    *ngIf=\"headerData?.client !=='452'\">conversion</span> funnel</div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div *ngIf=\"!heatloading && !heatnoData\" class=\"text-center mb-3\" id=\"chartdiv\"></div>\r\n            </div>\r\n        </div>\r\n\r\n        <div *ngIf=\"mpaloading && storeIdarray?.length > 1 || mapnoData && storeIdarray?.length > 1 || !storeIdarray?.length\"\r\n            class=\"card\">\r\n            <div class=\"card-header border-0 pt-3 ps-7 pe-0\">\r\n                <h3 class=\"card-title align-items-start flex-column\">\r\n                    <span class=\"title-text\">Explore</span>\r\n                </h3>\r\n\r\n            </div>\r\n            <div *ngIf=\"mpaloading\" class=\"row loader d-flex justify-content-center align-items-center h-225px\">\r\n                <div class=\"shimmer pt-0\">\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 title\"></div>\r\n                        <div class=\"stroke animate link\"></div>\r\n\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div *ngIf=\"mapnoData\" class=\"row px-3\">\r\n                <div class=\"col-md-12\">\r\n                    <div *ngIf=\"normalize\"\r\n                        class=\"card-body d-flex justify-content-center mb-10 align-items-center flex-column\">\r\n                        <img class=\"img-map1\" src=\"./assets/tango/Icons/not-applicable.svg\" alt=\"\">\r\n                        <div class=\"nodata-title mt-3\">Data Not Found</div>\r\n                        <div class=\"nodata-sub\">Normalized data is not applicable</div>\r\n                    </div>\r\n                    <div *ngIf=\"!normalize\"\r\n                        class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n                        <img class=\"img-map\" 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 Store map</div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n        <div *ngIf=\"!mpaloading && !mapnoData && storeIdarray?.length > 1\" class=\"card\">\r\n            <div class=\"card-header border-0 pt-3 ps-7 pe-0\">\r\n                <h3 class=\"card-title align-items-start flex-column\">\r\n                    <span class=\"title-text\">Explore</span>\r\n                </h3>\r\n                <div class=\"card-toolbar mt-0\">\r\n\r\n                    <button *ngIf=\"!mpaloading && !mapnoData\" type=\"button\" (click)=\"exporeView()\"\r\n                        class=\"btn me-8 btn-light-primary1 rounded-3 text-nowrap border-val\">\r\n                        <span class=\"ms-2\">Explore</span>\r\n                    </button>\r\n                </div>\r\n\r\n            </div>\r\n\r\n            <div *ngIf=\"!mapnoData\" class=\"card-body col-md-12 pt-0 pb-5 ps-7\">\r\n                <div id=\"map\" class=\"w-100\"></div>\r\n            </div>\r\n        </div>\r\n        <div *ngIf=\"storeIdarray?.length === 1\" class=\"card pb-2\">\r\n            <div class=\"card-header border-0 pt-3 ps-5 pe-0\">\r\n                <h3 class=\"card-title align-items-start flex-column\">\r\n                    <span class=\"title-text\">Recap Video\r\n                        <svg placement=\"right\"\r\n                            ngbTooltip=\"A quick recap of the store activity along with the avg tech infrastructure downtime status\"\r\n                            xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n                            <g clip-path=\"url(#clip0_1432_80035)\">\r\n                                <path\r\n                                    d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\"\r\n                                    stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                            </g>\r\n                            <defs>\r\n                                <clipPath id=\"clip0_1432_80035\">\r\n                                    <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n                                </clipPath>\r\n                            </defs>\r\n                        </svg>\r\n                    </span>\r\n                    <span class=\"text-sub mb-2\">Dated: {{headerData?.date?.endDate | date:' dd MMM,yyyy'}}</span>\r\n                </h3>\r\n                <div class=\"card-toolbar mt-0\">\r\n                    <button type=\"button\"\r\n                        class=\"btn btn-default btn-outline btn-outline-default rounded-3 text-nowrap border-val text-start disabled-button\">\r\n                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"14\" viewBox=\"0 0 16 14\" fill=\"none\">\r\n                            <g id=\"Group\">\r\n                                <path id=\"Vector\"\r\n                                    d=\"M9.51953 0.333984C10.3958 0.333984 11.2331 0.513477 11.9974 0.838974C12.7904 1.17653 13.5039 1.67214 14.1016 2.28697C14.6979 2.90046 15.1797 3.6345 15.5078 4.45293C15.8242 5.23922 15.9987 6.10051 15.9987 7.00065C15.9987 7.90213 15.8242 8.76343 15.5078 9.54971C15.1797 10.3655 14.6979 11.0995 14.1003 11.7143C13.5039 12.3278 12.7904 12.8234 11.9948 13.161C11.2305 13.4865 10.3932 13.666 9.51823 13.666C8.64193 13.666 7.80469 13.4865 7.04036 13.161C6.2474 12.8234 5.53385 12.3278 4.9375 11.7143L4.9362 11.713C4.33854 11.0982 3.85807 10.3641 3.52995 9.54971C3.42839 9.29655 3.34115 9.03668 3.26953 8.77013C3.40495 8.78352 3.54297 8.79022 3.68229 8.79022C3.94661 8.79022 4.20443 8.76611 4.45573 8.71922C4.4974 8.84782 4.54297 8.97507 4.59245 9.09964C4.86198 9.76939 5.25781 10.3722 5.75 10.8785C6.24219 11.3848 6.82943 11.792 7.47917 12.0693C8.10547 12.3359 8.79427 12.4845 9.51823 12.4845C10.2422 12.4845 10.9297 12.3372 11.5573 12.0693C12.2083 11.792 12.7943 11.3848 13.2865 10.8785C13.7786 10.3722 14.1745 9.76805 14.444 9.09964C14.7031 8.45534 14.8477 7.74675 14.8477 7.00199C14.8477 6.25723 14.7044 5.54998 14.444 4.90434C14.1745 4.23459 13.7786 3.63182 13.2865 3.12549C12.7943 2.61916 12.207 2.21196 11.5573 1.93468C10.931 1.66812 10.2422 1.51944 9.51823 1.51944C8.79427 1.51944 8.10677 1.66678 7.47917 1.93468C7.42318 1.95879 7.36719 1.98424 7.3125 2.00969C7.09896 1.6641 6.84115 1.35066 6.54557 1.07874C6.70703 0.993016 6.8724 0.913986 7.04036 0.841653C7.80729 0.513477 8.64323 0.333984 9.51953 0.333984ZM8.77604 3.83141C8.77604 3.66799 8.84115 3.52064 8.94401 3.41348C9.04818 3.30632 9.19141 3.24069 9.35026 3.24069C9.50911 3.24069 9.65234 3.30632 9.75651 3.41348C9.86068 3.52064 9.92448 3.66799 9.92448 3.83141V6.94171L12.1836 8.32005C12.319 8.4031 12.4102 8.53571 12.4466 8.68172C12.4831 8.82772 12.4661 8.98846 12.3854 9.12777V9.12911C12.3047 9.26842 12.1758 9.36218 12.0339 9.39969C11.8919 9.43719 11.7357 9.41978 11.6003 9.33673H11.599L9.07161 7.79497C8.98438 7.74541 8.91276 7.67308 8.86068 7.58735C8.80729 7.4976 8.77604 7.39178 8.77604 7.27927V3.83141Z\"\r\n                                    fill=\"#667085\" />\r\n                                <path id=\"Vector_2\" fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n                                    d=\"M3.51302 0.687622C5.45312 0.687622 7.02604 2.30573 7.02604 4.30158C7.02604 6.29743 5.45312 7.91554 3.51302 7.91554C1.57292 7.91554 0 6.29743 0 4.30158C0 2.30573 1.57292 0.687622 3.51302 0.687622ZM3.51302 6.37378L5.39844 3.97608H4.22786V2.70088H2.79818V3.97608H1.6276L3.51302 6.37378Z\"\r\n                                    fill=\"#F04438\" />\r\n                            </g>\r\n                        </svg>\r\n                        <span class=\"ms-2\" *ngIf=\"getRecapVideoData?.downTime === 0\">0 Mins</span>\r\n                        <span class=\"ms-2\" *ngIf=\"getRecapVideoData?.downTime !== 0\">{{getRecapVideoData?.downTime ??\r\n                            '--'}} Mins</span>\r\n                    </button>\r\n                    <button type=\"button\"\r\n                        class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val disabled-button\">\r\n                        <svg *ngIf=\"getRecapVideoData?.health ==='GOOD'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n                            height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n                            <g id=\"Frame\">\r\n                                <path id=\"Vector\"\r\n                                    d=\"M13.4349 2.5C14.8238 2.5 15.9871 3.01389 16.9249 4.04167C17.8627 5.06944 18.3313 6.29167 18.3307 7.70833C18.3307 7.95833 18.3168 8.205 18.2891 8.44833C18.2613 8.69167 18.2127 8.93111 18.1432 9.16667H12.9349L11.5182 7.04167C11.4488 6.93056 11.3516 6.84028 11.2266 6.77083C11.1016 6.70139 10.9696 6.66667 10.8307 6.66667C10.6502 6.66667 10.4868 6.72222 10.3407 6.83333C10.1946 6.94444 10.0941 7.08333 10.0391 7.25L8.91406 10.625L8.1849 9.54167C8.11545 9.43056 8.01823 9.34028 7.89323 9.27083C7.76823 9.20139 7.63628 9.16667 7.4974 9.16667H1.85156C1.78212 8.93056 1.73351 8.69083 1.70573 8.4475C1.67795 8.20417 1.66406 7.96472 1.66406 7.72917C1.66406 6.29861 2.12934 5.06944 3.0599 4.04167C3.99045 3.01389 5.15017 2.5 6.53906 2.5C7.20573 2.5 7.83434 2.63194 8.4249 2.89583C9.01545 3.15972 9.53962 3.52778 9.9974 4C10.4418 3.52778 10.9593 3.15972 11.5499 2.89583C12.1405 2.63194 12.7688 2.5 13.4349 2.5ZM9.9974 17.5C9.7474 17.5 9.50767 17.4547 9.27823 17.3642C9.04878 17.2736 8.84406 17.1383 8.66406 16.9583L3.08073 11.3542C2.9974 11.2708 2.92101 11.1875 2.85156 11.1042C2.78212 11.0208 2.71267 10.9306 2.64323 10.8333H7.03906L8.45573 12.9583C8.52517 13.0694 8.6224 13.1597 8.7474 13.2292C8.8724 13.2986 9.00434 13.3333 9.14323 13.3333C9.32378 13.3333 9.49045 13.2778 9.64323 13.1667C9.79601 13.0556 9.90017 12.9167 9.95573 12.75L11.0807 9.375L11.7891 10.4583C11.8724 10.5694 11.9766 10.6597 12.1016 10.7292C12.2266 10.7986 12.3585 10.8333 12.4974 10.8333H17.3307L17.1224 11.0833L16.9141 11.3333L11.3099 16.9583C11.1293 17.1389 10.928 17.2744 10.7057 17.365C10.4835 17.4556 10.2474 17.5006 9.9974 17.5Z\"\r\n                                    fill=\"#12B76A\" />\r\n                            </g>\r\n                        </svg>\r\n                        <svg *ngIf=\"getRecapVideoData?.health ==='AVERAGE'\" xmlns=\"http://www.w3.org/2000/svg\"\r\n                            width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n                            <g id=\"Frame\">\r\n                                <path id=\"Vector\"\r\n                                    d=\"M13.4349 2.5C14.8238 2.5 15.9871 3.01389 16.9249 4.04167C17.8627 5.06944 18.3313 6.29167 18.3307 7.70833C18.3307 7.95833 18.3168 8.205 18.2891 8.44833C18.2613 8.69167 18.2127 8.93111 18.1432 9.16667H12.9349L11.5182 7.04167C11.4488 6.93056 11.3516 6.84028 11.2266 6.77083C11.1016 6.70139 10.9696 6.66667 10.8307 6.66667C10.6502 6.66667 10.4868 6.72222 10.3407 6.83333C10.1946 6.94444 10.0941 7.08333 10.0391 7.25L8.91406 10.625L8.1849 9.54167C8.11545 9.43056 8.01823 9.34028 7.89323 9.27083C7.76823 9.20139 7.63628 9.16667 7.4974 9.16667H1.85156C1.78212 8.93056 1.73351 8.69083 1.70573 8.4475C1.67795 8.20417 1.66406 7.96472 1.66406 7.72917C1.66406 6.29861 2.12934 5.06944 3.0599 4.04167C3.99045 3.01389 5.15017 2.5 6.53906 2.5C7.20573 2.5 7.83434 2.63194 8.4249 2.89583C9.01545 3.15972 9.53962 3.52778 9.9974 4C10.4418 3.52778 10.9593 3.15972 11.5499 2.89583C12.1405 2.63194 12.7688 2.5 13.4349 2.5ZM9.9974 17.5C9.7474 17.5 9.50767 17.4547 9.27823 17.3642C9.04878 17.2736 8.84406 17.1383 8.66406 16.9583L3.08073 11.3542C2.9974 11.2708 2.92101 11.1875 2.85156 11.1042C2.78212 11.0208 2.71267 10.9306 2.64323 10.8333H7.03906L8.45573 12.9583C8.52517 13.0694 8.6224 13.1597 8.7474 13.2292C8.8724 13.2986 9.00434 13.3333 9.14323 13.3333C9.32378 13.3333 9.49045 13.2778 9.64323 13.1667C9.79601 13.0556 9.90017 12.9167 9.95573 12.75L11.0807 9.375L11.7891 10.4583C11.8724 10.5694 11.9766 10.6597 12.1016 10.7292C12.2266 10.7986 12.3585 10.8333 12.4974 10.8333H17.3307L17.1224 11.0833L16.9141 11.3333L11.3099 16.9583C11.1293 17.1389 10.928 17.2744 10.7057 17.365C10.4835 17.4556 10.2474 17.5006 9.9974 17.5Z\"\r\n                                    fill=\"#FACC15\" />\r\n                            </g>\r\n                        </svg>\r\n                        <svg *ngIf=\"getRecapVideoData?.health ==='BAD'\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n                            height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n                            <g id=\"Frame\">\r\n                                <path id=\"Vector\"\r\n                                    d=\"M13.4349 2.5C14.8238 2.5 15.9871 3.01389 16.9249 4.04167C17.8627 5.06944 18.3313 6.29167 18.3307 7.70833C18.3307 7.95833 18.3168 8.205 18.2891 8.44833C18.2613 8.69167 18.2127 8.93111 18.1432 9.16667H12.9349L11.5182 7.04167C11.4488 6.93056 11.3516 6.84028 11.2266 6.77083C11.1016 6.70139 10.9696 6.66667 10.8307 6.66667C10.6502 6.66667 10.4868 6.72222 10.3407 6.83333C10.1946 6.94444 10.0941 7.08333 10.0391 7.25L8.91406 10.625L8.1849 9.54167C8.11545 9.43056 8.01823 9.34028 7.89323 9.27083C7.76823 9.20139 7.63628 9.16667 7.4974 9.16667H1.85156C1.78212 8.93056 1.73351 8.69083 1.70573 8.4475C1.67795 8.20417 1.66406 7.96472 1.66406 7.72917C1.66406 6.29861 2.12934 5.06944 3.0599 4.04167C3.99045 3.01389 5.15017 2.5 6.53906 2.5C7.20573 2.5 7.83434 2.63194 8.4249 2.89583C9.01545 3.15972 9.53962 3.52778 9.9974 4C10.4418 3.52778 10.9593 3.15972 11.5499 2.89583C12.1405 2.63194 12.7688 2.5 13.4349 2.5ZM9.9974 17.5C9.7474 17.5 9.50767 17.4547 9.27823 17.3642C9.04878 17.2736 8.84406 17.1383 8.66406 16.9583L3.08073 11.3542C2.9974 11.2708 2.92101 11.1875 2.85156 11.1042C2.78212 11.0208 2.71267 10.9306 2.64323 10.8333H7.03906L8.45573 12.9583C8.52517 13.0694 8.6224 13.1597 8.7474 13.2292C8.8724 13.2986 9.00434 13.3333 9.14323 13.3333C9.32378 13.3333 9.49045 13.2778 9.64323 13.1667C9.79601 13.0556 9.90017 12.9167 9.95573 12.75L11.0807 9.375L11.7891 10.4583C11.8724 10.5694 11.9766 10.6597 12.1016 10.7292C12.2266 10.7986 12.3585 10.8333 12.4974 10.8333H17.3307L17.1224 11.0833L16.9141 11.3333L11.3099 16.9583C11.1293 17.1389 10.928 17.2744 10.7057 17.365C10.4835 17.4556 10.2474 17.5006 9.9974 17.5Z\"\r\n                                    fill=\"#F04438\" />\r\n                            </g>\r\n                        </svg>\r\n                        <span class=\"ms-2\">{{getRecapVideoData?.health ?? '--'}}</span>\r\n                    </button>\r\n                    <!-- <button type=\"button\" (click)=\"cameraView()\"\r\n                        class=\"btn mx-2 btn-light-primary1 rounded-3 text-nowrap border-val\">\r\n                        <span class=\"ms-2\">Live View</span>\r\n                    </button> -->\r\n                </div>\r\n\r\n            </div>\r\n            <div *ngIf=\"recaplaoding\" class=\"row loader d-flex justify-content-center align-items-center h-225px\">\r\n                <div class=\"shimmer pt-0\">\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 title\"></div>\r\n                        <div class=\"stroke animate link\"></div>\r\n\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div *ngIf=\"recapnoData\" class=\"row px-3\">\r\n                <div class=\"col-md-12\">\r\n                    <div *ngIf=\"normalize\"\r\n                        class=\"card-body d-flex justify-content-center mb-10 align-items-center flex-column\">\r\n                        <img class=\"img-map1\" src=\"./assets/tango/Icons/not-applicable.svg\" alt=\"\">\r\n                        <div class=\"nodata-title mt-3\">Data Not Found</div>\r\n                        <div class=\"nodata-sub\">Normalized data is not applicable</div>\r\n                    </div>\r\n                    <div *ngIf=\"!normalize\"\r\n                        class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n                        <img class=\"img-map-recap\" 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 Recap video</div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div *ngIf=\"!recaplaoding && !recapnoData\" class=\"card-body p-0\">\r\n                <div class=\"row mx-3\">\r\n\r\n                    <div class=\"carousel\">\r\n                        <div class=\"carousel-inner\">\r\n                            <div class=\"carousel-item\" *ngFor=\"let group of recapsGrouped; let i = index\"\r\n                                [class.active]=\"i === currentIndex\">\r\n                                <div class=\"row\">\r\n                                    <div *ngFor=\"let pair of group\" [ngClass]=\"colValue\">\r\n                                        <img [src]=\"pair.thumbImage\" (click)=\"videoClick(pair)\"\r\n                                            class=\"image-thumb mb-8 d-block w-100 cursor-pointer\"\r\n                                            alt=\"Image {{ i + 1 }}\" />\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n\r\n                        <!-- Conditionally display Previous button -->\r\n                        <button class=\"carousel-control-prev\" *ngIf=\"currentIndex > 0\" (click)=\"prevSlide()\">\r\n                            <span class=\"carousel-control-prev-icon\"></span>\r\n                        </button>\r\n\r\n                        <!-- Conditionally display Next button -->\r\n                        <button class=\"carousel-control-next\" *ngIf=\"currentIndex < recapsGrouped.length - 1\"\r\n                            (click)=\"nextSlide()\">\r\n                            <span class=\"carousel-control-next-icon\"></span>\r\n                        </button>\r\n\r\n                        <!-- Navigation Dots -->\r\n                        <div *ngIf=\"recapsGrouped.length > 1\" class=\"row\">\r\n                            <ul class=\"carousel-indicators\">\r\n                                <li *ngFor=\"let group of recapsGrouped; let i = index\"\r\n                                    [class.active]=\"i === currentIndex\" (click)=\"goToSlide(i)\">\r\n                                </li>\r\n                            </ul>\r\n                        </div>\r\n\r\n                    </div>\r\n\r\n\r\n                    <!-- <video controls autoplay class=\"recap-img p-3\" [src]=\"getRecapData?.videoURL\"> -->\r\n                    <!-- <source  type=\"video/mp4\"> -->\r\n                    <!-- <source [src]=\"getRecapData?.videoURL\" type=\"video/ogg\"> -->\r\n                    <!-- </video> -->\r\n                    <!-- <div #mapContainer style=\"height:230px;\"></div> -->\r\n                    <!-- <div class=\"col-md-6 mb-3\"><img src=\"assets/tango/Images/recap.svg\" alt=\"\" class=\"recap-img\"></div>\r\n                        <div class=\"col-md-6 mb-3\"><img src=\"assets/tango/Images/recap.svg\" alt=\"\" class=\"recap-img\"></div> -->\r\n\r\n                </div>\r\n            </div>\r\n        </div>\r\n\r\n    </div>\r\n    <div class=\"col-md-12 mt-3\">\r\n\r\n        <!-- footfall trend charts -->\r\n        <div *ngIf=\"!(storeIdarray?.length === 1 && (storeIdarray[0] === '459-2' || storeIdarray[0] === '459-4'))\"\r\n            class=\"card\">\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=\"card-label1 mb-2\">Footfall Trend</span>\r\n                    <span class=\"text-sub mb-2\">Based on {{getDateValues?.fromDate | date:'dd MMM, yyyy'}} –\r\n                        {{getDateValues?.toDate | date:'dd MMM, yyyy'}}</span>\r\n                </h3>\r\n                <div class=\"card-toolbar text-nowrap\">\r\n                    <div class=\"d-flex\">\r\n                        <div class=\"d-flex align-items-center position-relative my-1\">\r\n                            <!--begin::Nav group-->\r\n                            <div class=\"nav-group nav-group-outline border-1 btn-group p-0\">\r\n                                <button class=\"btn btn-outline px-6 py-3\"\r\n                                    [ngClass]=\"type === 'daily' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n                                    (click)=\"selectPlanTrends('daily')\">\r\n                                    Day\r\n                                </button>\r\n                                <!-- Month Button -->\r\n\r\n\r\n                                <!-- Week Button -->\r\n                                <button class=\"btn btn-outline px-6 py-3\"\r\n                                    [ngClass]=\"type === 'weekly' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n                                    (click)=\"selectPlanTrends('weekly')\">\r\n                                    Week\r\n                                </button>\r\n\r\n                                <!-- Day Button, visible only if dateLength is valid and type is either 'weekly' or 'daily' -->\r\n                                <button class=\"btn btn-outline px-6 py-3\"\r\n                                    [ngClass]=\"type === 'monthly' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n                                    (click)=\"selectPlanTrends('monthly')\">\r\n                                    Month\r\n                                </button>\r\n\r\n                            </div>\r\n                            <!--end::Nav group-->\r\n                            <div class=\"d-flex\">\r\n                                <span class=\"mx-2 mt-3 dropselect\">Trend</span>\r\n\r\n                                <form [formGroup]=\"form\">\r\n                                    <lib-reactive-select [formControl]=\"selectControl\" [idField]=\"'value'\"\r\n                                        [nameField]=\"'label'\" [data]=\"datasets\" class=\"w-100\"\r\n                                        (valueChange)=\"onValueChangetrend($event)\">\r\n                                    </lib-reactive-select>\r\n                                </form>\r\n                                <!-- <select class=\"form-select form-select-sm\" (change)=\"onDatasetChange($event)\">\r\n                                    <option *ngFor=\"let dataset of datasets\" [value]=\"dataset.value\">{{ dataset.label }}\r\n                                    </option>\r\n                                </select> -->\r\n                            </div>\r\n                            <div class=\"d-flex mt-1 ms-3\">\r\n                                <section *ngIf=\"storeIdarray?.length === 1\">\r\n                                    <span class=\"d-flex ms-1 dropselect mt-2 cursor-pointer text-nowrap fs-5\">Forecast\r\n                                        <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_2645_27459)\">\r\n                                                <path\r\n                                                    d=\"M3.33398 1.33331L3.46065 1.95998C3.55142 2.40998 3.75683 2.82893 4.05699 3.17628C4.35715 3.52362 4.74189 3.78759 5.17398 3.94265L5.33398 3.99998L5.17398 4.05731C4.74189 4.21237 4.35715 4.47634 4.05699 4.82368C3.75683 5.17103 3.55142 5.58998 3.46065 6.03998L3.33398 6.66665L3.20732 6.03998C3.11654 5.58998 2.91114 5.17103 2.61098 4.82368C2.31082 4.47634 1.92607 4.21237 1.49398 4.05731L1.33398 3.99998L1.49398 3.94265C1.92607 3.78759 2.31082 3.52362 2.61098 3.17628C2.91114 2.82893 3.11654 2.40998 3.20732 1.95998L3.33398 1.33331ZM5.33398 10.6666L5.48732 11.5173C5.52713 11.7392 5.62256 11.9474 5.76468 12.1224C5.9068 12.2974 6.09098 12.4335 6.29998 12.518L6.66732 12.6666L6.29998 12.8153C6.09094 12.8997 5.90668 13.0356 5.76445 13.2105C5.62221 13.3854 5.52663 13.5935 5.48665 13.8153L5.33398 14.6666L5.18065 13.816C5.14084 13.5941 5.04541 13.3859 4.90329 13.2109C4.76117 13.0359 4.57699 12.8998 4.36798 12.8153L4.00065 12.6666L4.36798 12.518C4.57703 12.4336 4.76129 12.2977 4.90352 12.1228C5.04576 11.9479 5.14133 11.7398 5.18132 11.518L5.33398 10.6666ZM10.6673 1.99998L11.038 3.76931C11.2269 4.67137 11.6463 5.50908 12.2554 6.20076C12.8645 6.89244 13.6424 7.41448 14.5133 7.71598L15.334 7.99998L14.5133 8.28398C13.6424 8.58548 12.8645 9.10752 12.2554 9.7992C11.6463 10.4909 11.2269 11.3286 11.038 12.2306L10.6673 14L10.2967 12.2306C10.1077 11.3286 9.6883 10.4909 9.07922 9.7992C8.47015 9.10752 7.69223 8.58548 6.82132 8.28398L6.00065 7.99998L6.82132 7.71598C7.69223 7.41448 8.47015 6.89244 9.07922 6.20076C9.6883 5.50908 10.1077 4.67137 10.2967 3.76931L10.6673 1.99998Z\"\r\n                                                    stroke=\"#344054\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n                                                    stroke-linejoin=\"round\" />\r\n                                            </g>\r\n                                            <defs>\r\n                                                <clipPath id=\"clip0_2645_27459\">\r\n                                                    <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n                                                </clipPath>\r\n                                            </defs>\r\n                                        </svg>\r\n\r\n                                        <span class=\"form-check form-switch mx-3\">\r\n                                            <input class=\"form-check-input  cursor-pointer\" type=\"checkbox\"\r\n                                                [(ngModel)]=\"forecast\" (click)=\"forecastApi($event)\">\r\n                                        </span>\r\n\r\n                                    </span>\r\n                                </section>\r\n                                <div *ngIf=\"!objData?.forecast\" class=\"position-relative cursor-pointer\">\r\n                                    <div class=\"ms-1\" (click)=\"producttrailDropdown($event)\">\r\n                                        <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n                                            xmlns=\"http://www.w3.org/2000/svg\">\r\n                                            <path d=\"M5 10H15M2.5 5H17.5M7.5 15H12.5\" stroke=\"#344054\"\r\n                                                stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                        </svg>\r\n\r\n                                    </div>\r\n                                </div>\r\n                                <div *ngIf=\"show\"\r\n                                    class=\"card py-2 w-200px position-absolute productdrop top-20 end-1 mt-10 z-3\">\r\n                                    <ul *ngIf=\"!objData?.forecast\" class=\"list-unstyled mb-2\">\r\n                                        <!-- <li class=\"producttext px-5 items cursor-pointer py-4\" [ngClass]=\"trendtypeValue ==='normalize' ? 'bg-forcast':''\" type=\"button\"\r\n                                        (click)=\"changeStatus('normalize')\">Normalize\r\n                                            <svg class=\"text-end ms-20\" *ngIf=\"trendtypeValue ==='normalize' ? 'bg-forcast':''\" xmlns=\"http://www.w3.org/2000/svg\"\r\n                                                width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n                                                <path d=\"M13.3327 4L5.99935 11.3333L2.66602 8\" stroke=\"#344054\" stroke-width=\"1.5\"\r\n                                                    stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                            </svg>\r\n                                       </li> -->\r\n                                        <li *ngIf=\"storeIdarray?.length === 1\"\r\n                                            class=\"producttext px-5 items cursor-pointer py-4\"\r\n                                            [ngClass]=\"trendtypeValue ==='actual' ? 'bg-forcast':''\" type=\"button\"\r\n                                            (click)=\"changeStatus('actual')\">Actual\r\n                                            <svg class=\"text-end ms-20\"\r\n                                                *ngIf=\"trendtypeValue ==='actual' ? 'bg-forcast':''\"\r\n                                                xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n                                                viewBox=\"0 0 16 16\" fill=\"none\">\r\n                                                <path d=\"M13.3327 4L5.99935 11.3333L2.66602 8\" stroke=\"#344054\"\r\n                                                    stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                            </svg>\r\n                                        </li>\r\n                                        <li *ngIf=\"storeIdarray?.length > 1\"\r\n                                            class=\"producttext px-5 items cursor-pointer py-4\"\r\n                                            [ngClass]=\"trendtypeValue ==='average' ? 'bg-forcast':''\" type=\"button\"\r\n                                            (click)=\"changeStatus('average')\">Average\r\n                                            <span> <svg class=\"text-end ms-20\"\r\n                                                    *ngIf=\"trendtypeValue ==='average' ? 'bg-forcast':''\"\r\n                                                    xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n                                                    viewBox=\"0 0 16 16\" fill=\"none\">\r\n                                                    <path d=\"M13.3327 4L5.99935 11.3333L2.66602 8\" stroke=\"#344054\"\r\n                                                        stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n                                                        stroke-linejoin=\"round\" />\r\n                                                </svg></span>\r\n                                        </li>\r\n                                        <!-- <li class=\"producttext px-5 items cursor-pointer py-4\" [ngClass]=\"trendtypeValue ==='target' ? 'bg-forcast':''\" type=\"button\"\r\n                                    (click)=\"changeStatus('target')\">Target\r\n                                            <svg class=\"text-end ms-20\" *ngIf=\"trendtypeValue ==='target' ? 'bg-forcast':''\" xmlns=\"http://www.w3.org/2000/svg\"\r\n                                            width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n                                            <path d=\"M13.3327 4L5.99935 11.3333L2.66602 8\" stroke=\"#344054\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n                                                stroke-linejoin=\"round\" />\r\n                                        </svg></li> -->\r\n\r\n                                        <li class=\"producttext px-5 items cursor-pointer py-4\"\r\n                                            [ngClass]=\"trendtypeValue ==='weekends' ? 'bg-forcast':''\" type=\"button\"\r\n                                            (click)=\"changeStatus('weekends')\">Weekends\r\n                                            <svg class=\"text-end ms-20\"\r\n                                                *ngIf=\"trendtypeValue ==='weekends' ? 'bg-forcast':''\"\r\n                                                xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n                                                viewBox=\"0 0 16 16\" fill=\"none\">\r\n                                                <path d=\"M13.3327 4L5.99935 11.3333L2.66602 8\" stroke=\"#344054\"\r\n                                                    stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                            </svg>\r\n                                        </li>\r\n\r\n                                        <li class=\"producttext px-5 items cursor-pointer py-4\"\r\n                                            [ngClass]=\"trendtypeValue ==='weekdays' ? 'bg-forcast':''\" type=\"button\"\r\n                                            (click)=\"changeStatus('weekdays')\">Weekdays\r\n                                            <svg class=\"text-end ms-20\"\r\n                                                *ngIf=\"trendtypeValue ==='weekdays' ? 'bg-forcast':''\"\r\n                                                xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n                                                viewBox=\"0 0 16 16\" fill=\"none\">\r\n                                                <path d=\"M13.3327 4L5.99935 11.3333L2.66602 8\" stroke=\"#344054\"\r\n                                                    stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                            </svg>\r\n                                        </li>\r\n                                    </ul>\r\n                                </div>\r\n                            </div>\r\n\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div *ngIf=\"loadingTrends\" 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=\"noDataTrends\" 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\" 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 footfall trend</div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div class=\"card-body p-0\" *ngIf=\"!noDataTrends && !loadingTrends\">\r\n                <div class=\"text-center px-3\" id=\"Footfalltrend\"></div>\r\n\r\n\r\n                <div #tooltipContainer class=\"tooltip-container\">\r\n                    <div class=\"tooltip-content\" *ngIf=\"tooltipData\">\r\n                        <div class=\"content p-5\">\r\n                            <!-- <div class=\"container\">\r\n                            <span class=\"title text-start\">{{tooltipData.fullStoreName}}</Span>\r\n                            <span>Sum</span>\r\n                            <span>Avg</span>\r\n                          </div> -->\r\n\r\n                            <!-- Table for counts and rates in horizontal format -->\r\n                            <table class=\"table table-horizontal trens\">\r\n                                <thead>\r\n                                    <tr>\r\n                                        <th class=\"title text-start px-3\">{{tooltipData.fullStoreName}}</th>\r\n                                        <th class=\"title text-end\">Sum</th>\r\n\r\n                                        <ng-container *ngIf=\"storeIdarray?.length !== 1\">\r\n                                            <th *ngIf=\"type !== 'daily'\" class=\"title text-end\">Avg</th>\r\n                                        </ng-container>\r\n                                    </tr>\r\n                                </thead>\r\n                                <tbody>\r\n                                    <!-- Counts Section -->\r\n                                    <tr>\r\n                                        <td class=\"trend-label\" style=\"line-height: 10px !important\">Total Footfall</td>\r\n                                        <td class=\"value\" style=\"line-height: 10px !important\">\r\n                                            {{tooltipData.footfall_count}}\r\n                                        </td>\r\n                                        <ng-container *ngIf=\"storeIdarray?.length !== 1\">\r\n                                            <td *ngIf=\"type !== 'daily'\" class=\"value\"\r\n                                                style=\"line-height: 10px !important\">{{tooltipData.footfall_count_avg}}\r\n                                            </td>\r\n                                        </ng-container>\r\n                                    </tr>\r\n                                    <tr>\r\n                                        <td class=\"trend-label\" style=\"line-height: 10px !important\"><span\r\n                                                *ngIf=\"headerData?.client === '452'\">Less than\r\n                                                {{clientData?.featureConfigs?.bouncedLimit?.value}} mins</span> <span\r\n                                                *ngIf=\"headerData?.client !== '452'\">Bounced Footfall</span></td>\r\n                                        <td class=\"value\" style=\"line-height: 10px !important\">\r\n                                            {{tooltipData.bounced_count}}\r\n                                        </td>\r\n                                        <ng-container *ngIf=\"storeIdarray?.length !== 1\">\r\n                                            <td *ngIf=\"type !== 'daily'\" class=\"value\"\r\n                                                style=\"line-height: 10px !important\">\r\n                                                {{tooltipData.bounced_footfall_count_avg}}\r\n                                            </td>\r\n                                        </ng-container>\r\n                                    </tr>\r\n                                    <tr>\r\n                                        <td class=\"trend-label\" style=\"line-height: 10px !important\"><span\r\n                                                *ngIf=\"headerData?.client === '452'\">More than\r\n                                                {{clientData?.featureConfigs?.bouncedLimit?.value}} mins</span> <span\r\n                                                *ngIf=\"headerData?.client !== '452'\">Engagers</span></td>\r\n                                        <td class=\"value\" style=\"line-height: 10px !important\">\r\n                                            {{tooltipData.engagers_count}}\r\n                                        </td>\r\n                                        <ng-container *ngIf=\"storeIdarray?.length !== 1\">\r\n                                            <td *ngIf=\"type !== 'daily'\" class=\"value\"\r\n                                                style=\"line-height: 10px !important\">{{tooltipData.engagers_count_avg}}\r\n                                            </td>\r\n                                        </ng-container>\r\n                                    </tr>\r\n                                    <tr>\r\n                                        <td class=\"trend-label\" style=\"line-height: 10px !important\"><span\r\n                                                *ngIf=\"headerData?.client === '452'\">{{clientData?.featureConfigs?.missedOpportunityFrom?.value}}\r\n                                                - {{clientData?.featureConfigs?.missedOpportunityTo?.value}} mins</span>\r\n                                            <span *ngIf=\"headerData?.client !== '452'\">Missed Opportunities</span>\r\n                                        </td>\r\n                                        <td class=\"value\" style=\"line-height: 10px !important\">\r\n                                            {{tooltipData.missedOpportunity_count}}\r\n                                        </td>\r\n                                        <ng-container *ngIf=\"storeIdarray?.length !== 1\">\r\n                                            <td *ngIf=\"type !== 'daily'\" class=\"value\"\r\n                                                style=\"line-height: 10px !important\">\r\n                                                {{tooltipData.missedOpportunity_count_avg}}\r\n                                            </td>\r\n                                        </ng-container>\r\n                                    </tr>\r\n                                    <tr style=\"line-height: 10px !important\">\r\n                                        <td class=\"trend-label\" style=\"line-height: 10px !important\">Down Time</td>\r\n                                        <td class=\"value\" style=\"line-height: 10px !important\">{{tooltipData.down_time ?\r\n                                            tooltipData.down_time :'--'}}</td>\r\n                                        <ng-container *ngIf=\"storeIdarray?.length !== 1\">\r\n                                            <td *ngIf=\"type !== 'daily'\" class=\"value\"\r\n                                                style=\"line-height: 10px !important\">{{tooltipData.down_time}}</td>\r\n                                        </ng-container>\r\n                                    </tr>\r\n\r\n                                    <!-- Rates Section -->\r\n                                    <tr>\r\n                                        <td class=\"trend-label\" style=\"line-height: 10px !important\">Dwell Time</td>\r\n                                        <td class=\"value text-nowrap\" style=\"line-height: 10px !important\">\r\n                                            {{tooltipData.avgDwellTime.toFixed(0)}} Mins\r\n                                        </td>\r\n                                        <ng-container *ngIf=\"storeIdarray?.length !== 1\">\r\n                                            <td *ngIf=\"type !== 'daily'\" class=\"value text-nowrap\"\r\n                                                style=\"line-height: 10px !important\">\r\n                                                {{tooltipData.avgDwellTime.toFixed(0)}} Mins\r\n                                            </td>\r\n                                        </ng-container>\r\n                                    </tr>\r\n                                    <tr>\r\n                                        <td class=\"trend-label\" style=\"line-height: 10px !important\"><span\r\n                                                *ngIf=\"headerData?.client === '452'\"> More than\r\n                                                {{clientData?.featureConfigs?.conversion?.value}} mins Rate</span><span\r\n                                                *ngIf=\"headerData?.client !== '452'\">Conversion</span></td>\r\n                                        <td class=\"value\" style=\"line-height: 10px !important\">\r\n                                            {{tooltipData.conversionRate.toFixed(0)}}%\r\n                                        </td>\r\n                                        <ng-container *ngIf=\"storeIdarray?.length !== 1\">\r\n                                            <td *ngIf=\"type !== 'daily'\" class=\"value\"\r\n                                                style=\"line-height: 10px !important\">\r\n                                                {{tooltipData.conversionRate.toFixed(0)}}%\r\n                                            </td>\r\n                                        </ng-container>\r\n                                    </tr>\r\n                                </tbody>\r\n                            </table>\r\n                        </div>\r\n                    </div>\r\n\r\n                </div>\r\n\r\n\r\n                <lib-pagination [itemsPerPage]=\"pageSizeTrends\" [currentPage]=\"offsetTrends\"\r\n                    [totalItems]=\"totalItemsTrends\" [paginationSizes]=\"paginationSizesTrends\"\r\n                    [pageSize]=\"pageSizeTrends\" (pageChange)=\"onPageChangeTrends($event)\"\r\n                    (pageSizeChange)=\"onPageSizeChangeTrends($event)\"></lib-pagination>\r\n\r\n            </div>\r\n        </div>\r\n\r\n        <!-- <lib-traffic-charts class=\"my-2\"></lib-traffic-charts> -->\r\n        <div *ngIf=\"!(storeIdarray?.length === 1 && (storeIdarray[0] === '459-2' || storeIdarray[0] === '459-4'))\"\r\n            class=\"card mt-3\">\r\n            <div class=\"card-header my-3 mx-2\">\r\n                <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\r\n                    <li *ngIf=\"this.headerData?.client !=='459'\" class=\"nav-item nav-item1\"\r\n                        (click)=\"selectedTabs('traffic')\"><a [ngClass]=\"selectedTab ==='traffic' ? 'active' :''\"\r\n                            class=\"nav-link nav-link1 cursor-pointer no-border me-6 \">Traffic & Dwell</a>\r\n                    </li>\r\n                    <li class=\"nav-item nav-item1\" (click)=\"selectedTabs('footfall')\">\r\n                        <a [ngClass]=\"selectedTab ==='footfall' ? 'active' :''\"\r\n                            class=\"nav-link nav-link1 cursor-pointer me-6\">Footfall</a>\r\n                    </li>\r\n                    <li class=\"nav-item nav-item1\" (click)=\"selectedTabs('bounced')\"><a\r\n                            [ngClass]=\"selectedTab ==='bounced' ? 'active' :''\"\r\n                            class=\"nav-link nav-link1 cursor-pointer no-border me-6 \">{{headerData?.client ==='452' ?\r\n                            'Less than '+ featureConfig?.bouncedLimit.value+ ' mins' : 'Bounced'}} Footfall</a>\r\n                    </li>\r\n                    <li class=\"nav-item nav-item1\" (click)=\"selectedTabs('engagers')\">\r\n                        <a [ngClass]=\"selectedTab ==='engagers' ? 'active' :''\"\r\n                            class=\"nav-link nav-link1 cursor-pointer me-6\">{{headerData?.client ==='452' ? 'More than '+\r\n                            featureConfig?.bouncedLimit.value +' mins' : 'Engagers'}}</a>\r\n                    </li>\r\n\r\n\r\n                    <li class=\"nav-item nav-item1\" (click)=\"selectedTabs('missedOpportunity')\">\r\n                        <a [ngClass]=\"selectedTab ==='missedOpportunity' ? 'active' :''\"\r\n                            class=\"nav-link nav-link1 cursor-pointer me-6\">{{headerData?.client ==='452' ?\r\n                            featureConfig?.missedOpportunityFrom.value+' - '+ featureConfig?.missedOpportunityTo.value+\r\n                            ' mins':'Missed Opportunity'}}</a>\r\n                    </li>\r\n                    <li *ngIf=\"headerData?.client !== '452'\" class=\"nav-item nav-item1\"\r\n                        (click)=\"selectedTabs('potentialBuyers')\">\r\n                        <a [ngClass]=\"selectedTab ==='potentialBuyers' ? 'active' :''\"\r\n                            class=\"nav-link nav-link1 cursor-pointer me-6\">Potential Buyer</a>\r\n                    </li>\r\n                    <li class=\"nav-item nav-item1\" (click)=\"selectedTabs('conversion')\"><a\r\n                            [ngClass]=\"selectedTab ==='conversion' ? 'active' :''\"\r\n                            class=\"nav-link nav-link1 cursor-pointer no-border me-6 \">{{headerData?.client === '452' ?\r\n                            'More than '+ featureConfig?.conversion.value + ' mins':'Conversion'}}</a>\r\n                    </li>\r\n                </ul>\r\n            </div>\r\n\r\n            <div class=\"card-body\">\r\n                <div *ngIf=\"chartloading\" 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=\"chartNoData\" 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\" 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 <span>{{headerData?.client ==='452' ?\r\n                                    'Analysis' : selctedValue}}</span></div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div class=\"row\">\r\n                    <div class=\"col-md-2 h-100\" *ngIf=\"!chartloading && !chartNoData\">\r\n                        <div *ngIf=\"selectedTab ==='traffic'\" class=\"left-bar\">\r\n\r\n                            <div class=\"my-7\">\r\n                                <div class=\"d-flex align-items-center my-10 me-2\">\r\n                                    <div class=\"flex-shrink-0 mt-3\">\r\n                                        <span class=\"w-100\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\r\n                                                height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\">\r\n                                                <path d=\"M13 2.125L3 14.125H12L11 22.125L21 10.125H12L13 2.125Z\"\r\n                                                    stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                    stroke-linejoin=\"round\" />\r\n                                            </svg></span>\r\n                                    </div>\r\n                                    <div class=\"mx-3 mt-1\">\r\n                                        <div class=\"my-1 card-label left-card-count\">\r\n                                            {{getDensityDwellData?.densityDwellCard?.busiestDay ?\r\n                                            getDensityDwellData?.densityDwellCard?.busiestDay :'--'}}\r\n                                        </div>\r\n                                        <div class=\"left-card-count-header\">Busiest Day</div>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"d-flex align-items-center my-10 me-2\">\r\n                                    <div class=\"flex-shrink-0 mt-3\">\r\n                                        <span class=\"w-100\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\r\n                                                height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\">\r\n                                                <path d=\"M13 2.125L3 14.125H12L11 22.125L21 10.125H12L13 2.125Z\"\r\n                                                    stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                    stroke-linejoin=\"round\" />\r\n                                            </svg></span>\r\n                                    </div>\r\n                                    <div class=\"mx-3 mt-1\">\r\n                                        <div class=\"my-1 card-label left-card-count\">\r\n                                            {{getDensityDwellData?.densityDwellCard?.busiestTime ?\r\n                                            getDensityDwellData?.densityDwellCard?.busiestTime :'--'}}\r\n                                        </div>\r\n                                        <div class=\"left-card-count-header\">Busiest Time</div>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"d-flex align-items-center my-10 me-2\">\r\n                                    <div class=\"flex-shrink-0 mt-3\">\r\n                                        <span class=\"w-100\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\r\n                                                height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\">\r\n                                                <path d=\"M13 2.125L3 14.125H12L11 22.125L21 10.125H12L13 2.125Z\"\r\n                                                    stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                    stroke-linejoin=\"round\" />\r\n                                            </svg></span>\r\n                                    </div>\r\n                                    <div class=\"mx-3 mt-1\">\r\n                                        <div class=\"my-1 card-label left-card-count\">\r\n                                            {{getDensityDwellData?.densityDwellCard?.avgDwellTime ?\r\n                                            getDensityDwellData?.densityDwellCard?.avgDwellTime :'--'}} Mins\r\n                                        </div>\r\n                                        <div class=\"left-card-count-header\">Avg Dwell Time</div>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"d-flex align-items-center my-10 me-2\">\r\n                                    <div class=\"flex-shrink-0 mt-3\">\r\n                                        <span class=\"w-100\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\r\n                                                height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\">\r\n                                                <path d=\"M13 2.125L3 14.125H12L11 22.125L21 10.125H12L13 2.125Z\"\r\n                                                    stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                    stroke-linejoin=\"round\" />\r\n                                            </svg></span>\r\n                                    </div>\r\n                                    <div class=\"mx-3 mt-1\">\r\n                                        <div class=\"my-1 card-label left-card-count\">\r\n                                            {{getDensityDwellData?.densityDwellCard?.maleRate ?\r\n                                            getDensityDwellData?.densityDwellCard?.maleRate :'--'}}%\r\n                                        </div>\r\n                                        <div class=\"left-card-count-header\">Male</div>\r\n                                    </div>\r\n                                    <div class=\"mx-3 mt-1\">\r\n                                        <div class=\"my-1 card-label left-card-count\">\r\n                                            {{getDensityDwellData?.densityDwellCard?.femaleRate ?\r\n                                            getDensityDwellData?.densityDwellCard?.femaleRate :'--'}}%\r\n                                        </div>\r\n                                        <div class=\"left-card-count-header\">Female</div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                        <div *ngIf=\"selectedTab ==='footfall'\" class=\"left-bar\">\r\n                            <div class=\"top-header text-center\">\r\n                                <div class=\"left-bar-count\" [ngStyle]=\"{\r\n                                    'font-size': (getOverallCardData?.footfallCard?.footfallCount.toLocaleString()?.length > 5 ? '24px' : '36px') \r\n                                  }\">\r\n                                    {{getOverallCardData?.footfallCard?.footfallCount ?\r\n                                    getOverallCardData?.footfallCard?.footfallCount.toLocaleString('en-IN') :'--'}}\r\n                                </div>\r\n                                <div class=\"left-bar-title\">Footfall Count</div>\r\n\r\n                            </div>\r\n                            <span class=\"w-100\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"174\" height=\"2\"\r\n                                    viewBox=\"0 0 194 2\" fill=\"none\">\r\n                                    <path opacity=\"0.4\" d=\"M1 1L193 1\" stroke=\"#99DAFF\" stroke-linecap=\"round\" />\r\n                                </svg></span>\r\n                            <div class=\"my-5\">\r\n                                <div class=\"d-flex align-items-center my-5 me-2\">\r\n                                    <div class=\"flex-shrink-0 mt-3\">\r\n                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n                                            viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                            <path\r\n                                                d=\"M20 21V19C20 17.9391 19.5786 16.9217 18.8284 16.1716C18.0783 15.4214 17.0609 15 16 15H8C6.93913 15 5.92172 15.4214 5.17157 16.1716C4.42143 16.9217 4 17.9391 4 19V21M16 7C16 9.20914 14.2091 11 12 11C9.79086 11 8 9.20914 8 7C8 4.79086 9.79086 3 12 3C14.2091 3 16 4.79086 16 7Z\"\r\n                                                stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                stroke-linejoin=\"round\" />\r\n                                        </svg>\r\n                                    </div>\r\n                                    <div class=\"mx-3 mt-1\">\r\n                                        <div class=\"my-1 card-label left-card-count\">\r\n                                            {{getOverallCardData?.footfallCard?.singleCount ?\r\n                                            getOverallCardData?.footfallCard?.singleCount.toLocaleString('en-IN')\r\n                                            :'--'}}\r\n                                        </div>\r\n                                        <div class=\"left-card-count-header\">Single</div>\r\n                                    </div>\r\n                                </div>\r\n                                <div *ngIf=\"headerData.client !=='452'\" class=\"d-flex align-items-center my-5 me-2\">\r\n                                    <div class=\"flex-shrink-0 mt-3\">\r\n                                        <svg width=\"26\" height=\"24\" viewBox=\"0 0 26 24\" fill=\"none\"\r\n                                            xmlns=\"http://www.w3.org/2000/svg\">\r\n                                            <rect width=\"26\" height=\"24\" fill=\"#DCDCDC\" />\r\n                                            <rect x=\"-460.5\" y=\"-340.5\" width=\"783\" height=\"1947\" rx=\"4.5\"\r\n                                                stroke=\"#9747FF\" stroke-dasharray=\"10 5\" />\r\n                                            <mask id=\"path-2-inside-1_707_13106\" fill=\"white\">\r\n                                                <path\r\n                                                    d=\"M-189 -89C-189 -95.6274 -183.627 -101 -177 -101H295C301.627 -101 307 -95.6274 307 -89V85C307 91.6274 301.627 97 295 97H-177C-183.627 97 -189 91.6274 -189 85V-89Z\" />\r\n                                            </mask>\r\n                                            <path\r\n                                                d=\"M-189 -89C-189 -95.6274 -183.627 -101 -177 -101H295C301.627 -101 307 -95.6274 307 -89V85C307 91.6274 301.627 97 295 97H-177C-183.627 97 -189 91.6274 -189 85V-89Z\"\r\n                                                fill=\"white\" />\r\n                                            <path\r\n                                                d=\"M-190 -89C-190 -96.1797 -184.18 -102 -177 -102H294C301.18 -102 307 -96.1797 307 -89C307 -95.0751 301.627 -100 295 -100H-177C-183.075 -100 -188 -95.0751 -188 -89H-190ZM307 85C307 92.1797 301.18 98 294 98H-177C-184.18 98 -190 92.1797 -190 85H-188C-188 91.0751 -183.075 96 -177 96H295C301.627 96 307 91.0751 307 85ZM-177 98C-184.18 98 -190 92.1797 -190 85V-89C-190 -96.1797 -184.18 -102 -177 -102V-100C-183.075 -100 -188 -95.0751 -188 -89V85C-188 91.0751 -183.075 96 -177 96V98ZM307 -101V97V-101Z\"\r\n                                                fill=\"#D0D5DD\" mask=\"url(#path-2-inside-1_707_13106)\" />\r\n                                            <mask id=\"path-6-inside-2_707_13106\" fill=\"white\">\r\n                                                <path\r\n                                                    d=\"M7.71064 7.38462C8.19552 7.38462 8.67565 7.28911 9.12362 7.10356C9.57159 6.918 9.97863 6.64603 10.3215 6.30316C10.6644 5.9603 10.9363 5.55326 11.1219 5.10529C11.3074 4.65732 11.4029 4.17719 11.4029 3.69231C11.4029 3.20743 11.3074 2.72729 11.1219 2.27932C10.9363 1.83135 10.6644 1.42431 10.3215 1.08145C9.97863 0.73859 9.57159 0.466616 9.12362 0.28106C8.67565 0.0955043 8.19552 -7.22529e-09 7.71064 0C6.73138 1.45921e-08 5.79222 0.38901 5.09978 1.08145C4.40734 1.77389 4.01833 2.71305 4.01833 3.69231C4.01833 4.67157 4.40734 5.61072 5.09978 6.30316C5.79222 6.99561 6.73138 7.38462 7.71064 7.38462ZM18.7876 7.38462C19.2724 7.38462 19.7526 7.28911 20.2005 7.10356C20.6485 6.918 21.0556 6.64603 21.3984 6.30316C21.7413 5.9603 22.0133 5.55326 22.1988 5.10529C22.3844 4.65732 22.4799 4.17719 22.4799 3.69231C22.4799 3.20743 22.3844 2.72729 22.1988 2.27932C22.0133 1.83135 21.7413 1.42431 21.3984 1.08145C21.0556 0.73859 20.6485 0.466616 20.2005 0.28106C19.7526 0.0955043 19.2724 -7.22529e-09 18.7876 0C17.8083 1.45921e-08 16.8691 0.38901 16.1767 1.08145C15.4843 1.77389 15.0953 2.71305 15.0953 3.69231C15.0953 4.67157 15.4843 5.61072 16.1767 6.30316C16.8691 6.99561 17.8083 7.38462 18.7876 7.38462ZM0.941406 10.736C0.941406 10.4575 0.996258 10.1818 1.10283 9.92448C1.2094 9.66719 1.3656 9.43342 1.56252 9.2365C1.75944 9.03958 1.99321 8.88338 2.2505 8.77681C2.50778 8.67024 2.78354 8.61539 3.06202 8.61539H8.98448C8.55169 9.36345 8.32452 10.2127 8.32602 11.0769C8.32519 11.7755 8.47341 12.4662 8.76079 13.1029C9.04816 13.7396 9.46807 14.3077 9.99248 14.7692H8.60048C8.01418 14.7687 7.43803 14.9222 6.92969 15.2144C6.42134 15.5065 5.99864 15.927 5.70387 16.4338C3.7211 16.0449 2.51618 15.0782 1.81464 13.992C0.941406 12.64 0.941406 11.2431 0.941406 11.0012V10.736ZM17.8977 14.7692C18.484 14.7687 19.0602 14.9222 19.5685 15.2144C20.0769 15.5065 20.4996 15.927 20.7943 16.4338C22.7771 16.0449 23.982 15.0782 24.6836 13.992C25.5568 12.64 25.5568 11.2431 25.5568 11.0012V10.7366C25.5569 10.4581 25.5021 10.1823 25.3955 9.9249C25.289 9.66755 25.1328 9.4337 24.9359 9.23672C24.739 9.03973 24.5052 8.88348 24.2478 8.77687C23.9905 8.67026 23.7147 8.61539 23.4362 8.61539H17.5137C17.9465 9.36345 18.1737 10.2127 18.1722 11.0769C18.173 11.7755 18.0248 12.4662 17.7374 13.1029C17.45 13.7396 17.0301 14.3077 16.5057 14.7692H17.8977ZM16.9414 11.0769C16.9414 12.0562 16.5524 12.9953 15.86 13.6878C15.1675 14.3802 14.2284 14.7692 13.2491 14.7692C12.2698 14.7692 11.3307 14.3802 10.6382 13.6878C9.9458 12.9953 9.55679 12.0562 9.55679 11.0769C9.55679 10.0977 9.9458 9.15851 10.6382 8.46607C11.3307 7.77363 12.2698 7.38462 13.2491 7.38462C14.2284 7.38462 15.1675 7.77363 15.86 8.46607C16.5524 9.15851 16.9414 10.0977 16.9414 11.0769ZM6.47987 18.1206C6.47987 17.5582 6.70329 17.0188 7.10098 16.6211C7.49867 16.2234 8.03806 16 8.60048 16H17.8977C18.4601 16 18.9995 16.2234 19.3972 16.6211C19.7949 17.0188 20.0183 17.5582 20.0183 18.1206V18.3858C20.0183 18.6283 20.0183 20.0246 19.1451 21.3766C18.2325 22.7895 16.4694 24 13.2491 24C10.0288 24 8.26571 22.7895 7.3531 21.3766C6.47987 20.0246 6.47987 18.6277 6.47987 18.3858V18.1206Z\" />\r\n                                            </mask>\r\n                                            <path\r\n                                                d=\"M7.71064 7.38462C8.19552 7.38462 8.67565 7.28911 9.12362 7.10356C9.57159 6.918 9.97863 6.64603 10.3215 6.30316C10.6644 5.9603 10.9363 5.55326 11.1219 5.10529C11.3074 4.65732 11.4029 4.17719 11.4029 3.69231C11.4029 3.20743 11.3074 2.72729 11.1219 2.27932C10.9363 1.83135 10.6644 1.42431 10.3215 1.08145C9.97863 0.73859 9.57159 0.466616 9.12362 0.28106C8.67565 0.0955043 8.19552 -7.22529e-09 7.71064 0C6.73138 1.45921e-08 5.79222 0.38901 5.09978 1.08145C4.40734 1.77389 4.01833 2.71305 4.01833 3.69231C4.01833 4.67157 4.40734 5.61072 5.09978 6.30316C5.79222 6.99561 6.73138 7.38462 7.71064 7.38462ZM18.7876 7.38462C19.2724 7.38462 19.7526 7.28911 20.2005 7.10356C20.6485 6.918 21.0556 6.64603 21.3984 6.30316C21.7413 5.9603 22.0133 5.55326 22.1988 5.10529C22.3844 4.65732 22.4799 4.17719 22.4799 3.69231C22.4799 3.20743 22.3844 2.72729 22.1988 2.27932C22.0133 1.83135 21.7413 1.42431 21.3984 1.08145C21.0556 0.73859 20.6485 0.466616 20.2005 0.28106C19.7526 0.0955043 19.2724 -7.22529e-09 18.7876 0C17.8083 1.45921e-08 16.8691 0.38901 16.1767 1.08145C15.4843 1.77389 15.0953 2.71305 15.0953 3.69231C15.0953 4.67157 15.4843 5.61072 16.1767 6.30316C16.8691 6.99561 17.8083 7.38462 18.7876 7.38462ZM0.941406 10.736C0.941406 10.4575 0.996258 10.1818 1.10283 9.92448C1.2094 9.66719 1.3656 9.43342 1.56252 9.2365C1.75944 9.03958 1.99321 8.88338 2.2505 8.77681C2.50778 8.67024 2.78354 8.61539 3.06202 8.61539H8.98448C8.55169 9.36345 8.32452 10.2127 8.32602 11.0769C8.32519 11.7755 8.47341 12.4662 8.76079 13.1029C9.04816 13.7396 9.46807 14.3077 9.99248 14.7692H8.60048C8.01418 14.7687 7.43803 14.9222 6.92969 15.2144C6.42134 15.5065 5.99864 15.927 5.70387 16.4338C3.7211 16.0449 2.51618 15.0782 1.81464 13.992C0.941406 12.64 0.941406 11.2431 0.941406 11.0012V10.736ZM17.8977 14.7692C18.484 14.7687 19.0602 14.9222 19.5685 15.2144C20.0769 15.5065 20.4996 15.927 20.7943 16.4338C22.7771 16.0449 23.982 15.0782 24.6836 13.992C25.5568 12.64 25.5568 11.2431 25.5568 11.0012V10.7366C25.5569 10.4581 25.5021 10.1823 25.3955 9.9249C25.289 9.66755 25.1328 9.4337 24.9359 9.23672C24.739 9.03973 24.5052 8.88348 24.2478 8.77687C23.9905 8.67026 23.7147 8.61539 23.4362 8.61539H17.5137C17.9465 9.36345 18.1737 10.2127 18.1722 11.0769C18.173 11.7755 18.0248 12.4662 17.7374 13.1029C17.45 13.7396 17.0301 14.3077 16.5057 14.7692H17.8977ZM16.9414 11.0769C16.9414 12.0562 16.5524 12.9953 15.86 13.6878C15.1675 14.3802 14.2284 14.7692 13.2491 14.7692C12.2698 14.7692 11.3307 14.3802 10.6382 13.6878C9.9458 12.9953 9.55679 12.0562 9.55679 11.0769C9.55679 10.0977 9.9458 9.15851 10.6382 8.46607C11.3307 7.77363 12.2698 7.38462 13.2491 7.38462C14.2284 7.38462 15.1675 7.77363 15.86 8.46607C16.5524 9.15851 16.9414 10.0977 16.9414 11.0769ZM6.47987 18.1206C6.47987 17.5582 6.70329 17.0188 7.10098 16.6211C7.49867 16.2234 8.03806 16 8.60048 16H17.8977C18.4601 16 18.9995 16.2234 19.3972 16.6211C19.7949 17.0188 20.0183 17.5582 20.0183 18.1206V18.3858C20.0183 18.6283 20.0183 20.0246 19.1451 21.3766C18.2325 22.7895 16.4694 24 13.2491 24C10.0288 24 8.26571 22.7895 7.3531 21.3766C6.47987 20.0246 6.47987 18.6277 6.47987 18.3858V18.1206Z\"\r\n                                                stroke=\"#98A2B3\" stroke-width=\"3\"\r\n                                                mask=\"url(#path-6-inside-2_707_13106)\" />\r\n                                        </svg>\r\n                                    </div>\r\n                                    <div class=\"mx-3 mt-1\">\r\n                                        <div class=\"my-1 card-label left-card-count\">\r\n                                            {{getOverallCardData?.footfallCard?.groupCount ?\r\n                                            getOverallCardData?.footfallCard?.groupCount.toLocaleString('en-IN') :'--'}}\r\n                                        </div>\r\n                                        <div class=\"left-card-count-header\">Group Footfall</div>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"d-flex align-items-center my-5 me-2\">\r\n                                    <div class=\"flex-shrink-0 mt-3\">\r\n                                        <svg width=\"26\" height=\"24\" viewBox=\"0 0 26 24\" fill=\"none\"\r\n                                            xmlns=\"http://www.w3.org/2000/svg\">\r\n                                            <rect width=\"26\" height=\"24\" fill=\"#DCDCDC\" />\r\n                                            <rect x=\"-460.5\" y=\"-340.5\" width=\"783\" height=\"1947\" rx=\"4.5\"\r\n                                                stroke=\"#9747FF\" stroke-dasharray=\"10 5\" />\r\n                                            <mask id=\"path-2-inside-1_707_13106\" fill=\"white\">\r\n                                                <path\r\n                                                    d=\"M-189 -89C-189 -95.6274 -183.627 -101 -177 -101H295C301.627 -101 307 -95.6274 307 -89V85C307 91.6274 301.627 97 295 97H-177C-183.627 97 -189 91.6274 -189 85V-89Z\" />\r\n                                            </mask>\r\n                                            <path\r\n                                                d=\"M-189 -89C-189 -95.6274 -183.627 -101 -177 -101H295C301.627 -101 307 -95.6274 307 -89V85C307 91.6274 301.627 97 295 97H-177C-183.627 97 -189 91.6274 -189 85V-89Z\"\r\n                                                fill=\"white\" />\r\n                                            <path\r\n                                                d=\"M-190 -89C-190 -96.1797 -184.18 -102 -177 -102H294C301.18 -102 307 -96.1797 307 -89C307 -95.0751 301.627 -100 295 -100H-177C-183.075 -100 -188 -95.0751 -188 -89H-190ZM307 85C307 92.1797 301.18 98 294 98H-177C-184.18 98 -190 92.1797 -190 85H-188C-188 91.0751 -183.075 96 -177 96H295C301.627 96 307 91.0751 307 85ZM-177 98C-184.18 98 -190 92.1797 -190 85V-89C-190 -96.1797 -184.18 -102 -177 -102V-100C-183.075 -100 -188 -95.0751 -188 -89V85C-188 91.0751 -183.075 96 -177 96V98ZM307 -101V97V-101Z\"\r\n                                                fill=\"#D0D5DD\" mask=\"url(#path-2-inside-1_707_13106)\" />\r\n                                            <mask id=\"path-6-inside-2_707_13106\" fill=\"white\">\r\n                                                <path\r\n                                                    d=\"M7.71064 7.38462C8.19552 7.38462 8.67565 7.28911 9.12362 7.10356C9.57159 6.918 9.97863 6.64603 10.3215 6.30316C10.6644 5.9603 10.9363 5.55326 11.1219 5.10529C11.3074 4.65732 11.4029 4.17719 11.4029 3.69231C11.4029 3.20743 11.3074 2.72729 11.1219 2.27932C10.9363 1.83135 10.6644 1.42431 10.3215 1.08145C9.97863 0.73859 9.57159 0.466616 9.12362 0.28106C8.67565 0.0955043 8.19552 -7.22529e-09 7.71064 0C6.73138 1.45921e-08 5.79222 0.38901 5.09978 1.08145C4.40734 1.77389 4.01833 2.71305 4.01833 3.69231C4.01833 4.67157 4.40734 5.61072 5.09978 6.30316C5.79222 6.99561 6.73138 7.38462 7.71064 7.38462ZM18.7876 7.38462C19.2724 7.38462 19.7526 7.28911 20.2005 7.10356C20.6485 6.918 21.0556 6.64603 21.3984 6.30316C21.7413 5.9603 22.0133 5.55326 22.1988 5.10529C22.3844 4.65732 22.4799 4.17719 22.4799 3.69231C22.4799 3.20743 22.3844 2.72729 22.1988 2.27932C22.0133 1.83135 21.7413 1.42431 21.3984 1.08145C21.0556 0.73859 20.6485 0.466616 20.2005 0.28106C19.7526 0.0955043 19.2724 -7.22529e-09 18.7876 0C17.8083 1.45921e-08 16.8691 0.38901 16.1767 1.08145C15.4843 1.77389 15.0953 2.71305 15.0953 3.69231C15.0953 4.67157 15.4843 5.61072 16.1767 6.30316C16.8691 6.99561 17.8083 7.38462 18.7876 7.38462ZM0.941406 10.736C0.941406 10.4575 0.996258 10.1818 1.10283 9.92448C1.2094 9.66719 1.3656 9.43342 1.56252 9.2365C1.75944 9.03958 1.99321 8.88338 2.2505 8.77681C2.50778 8.67024 2.78354 8.61539 3.06202 8.61539H8.98448C8.55169 9.36345 8.32452 10.2127 8.32602 11.0769C8.32519 11.7755 8.47341 12.4662 8.76079 13.1029C9.04816 13.7396 9.46807 14.3077 9.99248 14.7692H8.60048C8.01418 14.7687 7.43803 14.9222 6.92969 15.2144C6.42134 15.5065 5.99864 15.927 5.70387 16.4338C3.7211 16.0449 2.51618 15.0782 1.81464 13.992C0.941406 12.64 0.941406 11.2431 0.941406 11.0012V10.736ZM17.8977 14.7692C18.484 14.7687 19.0602 14.9222 19.5685 15.2144C20.0769 15.5065 20.4996 15.927 20.7943 16.4338C22.7771 16.0449 23.982 15.0782 24.6836 13.992C25.5568 12.64 25.5568 11.2431 25.5568 11.0012V10.7366C25.5569 10.4581 25.5021 10.1823 25.3955 9.9249C25.289 9.66755 25.1328 9.4337 24.9359 9.23672C24.739 9.03973 24.5052 8.88348 24.2478 8.77687C23.9905 8.67026 23.7147 8.61539 23.4362 8.61539H17.5137C17.9465 9.36345 18.1737 10.2127 18.1722 11.0769C18.173 11.7755 18.0248 12.4662 17.7374 13.1029C17.45 13.7396 17.0301 14.3077 16.5057 14.7692H17.8977ZM16.9414 11.0769C16.9414 12.0562 16.5524 12.9953 15.86 13.6878C15.1675 14.3802 14.2284 14.7692 13.2491 14.7692C12.2698 14.7692 11.3307 14.3802 10.6382 13.6878C9.9458 12.9953 9.55679 12.0562 9.55679 11.0769C9.55679 10.0977 9.9458 9.15851 10.6382 8.46607C11.3307 7.77363 12.2698 7.38462 13.2491 7.38462C14.2284 7.38462 15.1675 7.77363 15.86 8.46607C16.5524 9.15851 16.9414 10.0977 16.9414 11.0769ZM6.47987 18.1206C6.47987 17.5582 6.70329 17.0188 7.10098 16.6211C7.49867 16.2234 8.03806 16 8.60048 16H17.8977C18.4601 16 18.9995 16.2234 19.3972 16.6211C19.7949 17.0188 20.0183 17.5582 20.0183 18.1206V18.3858C20.0183 18.6283 20.0183 20.0246 19.1451 21.3766C18.2325 22.7895 16.4694 24 13.2491 24C10.0288 24 8.26571 22.7895 7.3531 21.3766C6.47987 20.0246 6.47987 18.6277 6.47987 18.3858V18.1206Z\" />\r\n                                            </mask>\r\n                                            <path\r\n                                                d=\"M7.71064 7.38462C8.19552 7.38462 8.67565 7.28911 9.12362 7.10356C9.57159 6.918 9.97863 6.64603 10.3215 6.30316C10.6644 5.9603 10.9363 5.55326 11.1219 5.10529C11.3074 4.65732 11.4029 4.17719 11.4029 3.69231C11.4029 3.20743 11.3074 2.72729 11.1219 2.27932C10.9363 1.83135 10.6644 1.42431 10.3215 1.08145C9.97863 0.73859 9.57159 0.466616 9.12362 0.28106C8.67565 0.0955043 8.19552 -7.22529e-09 7.71064 0C6.73138 1.45921e-08 5.79222 0.38901 5.09978 1.08145C4.40734 1.77389 4.01833 2.71305 4.01833 3.69231C4.01833 4.67157 4.40734 5.61072 5.09978 6.30316C5.79222 6.99561 6.73138 7.38462 7.71064 7.38462ZM18.7876 7.38462C19.2724 7.38462 19.7526 7.28911 20.2005 7.10356C20.6485 6.918 21.0556 6.64603 21.3984 6.30316C21.7413 5.9603 22.0133 5.55326 22.1988 5.10529C22.3844 4.65732 22.4799 4.17719 22.4799 3.69231C22.4799 3.20743 22.3844 2.72729 22.1988 2.27932C22.0133 1.83135 21.7413 1.42431 21.3984 1.08145C21.0556 0.73859 20.6485 0.466616 20.2005 0.28106C19.7526 0.0955043 19.2724 -7.22529e-09 18.7876 0C17.8083 1.45921e-08 16.8691 0.38901 16.1767 1.08145C15.4843 1.77389 15.0953 2.71305 15.0953 3.69231C15.0953 4.67157 15.4843 5.61072 16.1767 6.30316C16.8691 6.99561 17.8083 7.38462 18.7876 7.38462ZM0.941406 10.736C0.941406 10.4575 0.996258 10.1818 1.10283 9.92448C1.2094 9.66719 1.3656 9.43342 1.56252 9.2365C1.75944 9.03958 1.99321 8.88338 2.2505 8.77681C2.50778 8.67024 2.78354 8.61539 3.06202 8.61539H8.98448C8.55169 9.36345 8.32452 10.2127 8.32602 11.0769C8.32519 11.7755 8.47341 12.4662 8.76079 13.1029C9.04816 13.7396 9.46807 14.3077 9.99248 14.7692H8.60048C8.01418 14.7687 7.43803 14.9222 6.92969 15.2144C6.42134 15.5065 5.99864 15.927 5.70387 16.4338C3.7211 16.0449 2.51618 15.0782 1.81464 13.992C0.941406 12.64 0.941406 11.2431 0.941406 11.0012V10.736ZM17.8977 14.7692C18.484 14.7687 19.0602 14.9222 19.5685 15.2144C20.0769 15.5065 20.4996 15.927 20.7943 16.4338C22.7771 16.0449 23.982 15.0782 24.6836 13.992C25.5568 12.64 25.5568 11.2431 25.5568 11.0012V10.7366C25.5569 10.4581 25.5021 10.1823 25.3955 9.9249C25.289 9.66755 25.1328 9.4337 24.9359 9.23672C24.739 9.03973 24.5052 8.88348 24.2478 8.77687C23.9905 8.67026 23.7147 8.61539 23.4362 8.61539H17.5137C17.9465 9.36345 18.1737 10.2127 18.1722 11.0769C18.173 11.7755 18.0248 12.4662 17.7374 13.1029C17.45 13.7396 17.0301 14.3077 16.5057 14.7692H17.8977ZM16.9414 11.0769C16.9414 12.0562 16.5524 12.9953 15.86 13.6878C15.1675 14.3802 14.2284 14.7692 13.2491 14.7692C12.2698 14.7692 11.3307 14.3802 10.6382 13.6878C9.9458 12.9953 9.55679 12.0562 9.55679 11.0769C9.55679 10.0977 9.9458 9.15851 10.6382 8.46607C11.3307 7.77363 12.2698 7.38462 13.2491 7.38462C14.2284 7.38462 15.1675 7.77363 15.86 8.46607C16.5524 9.15851 16.9414 10.0977 16.9414 11.0769ZM6.47987 18.1206C6.47987 17.5582 6.70329 17.0188 7.10098 16.6211C7.49867 16.2234 8.03806 16 8.60048 16H17.8977C18.4601 16 18.9995 16.2234 19.3972 16.6211C19.7949 17.0188 20.0183 17.5582 20.0183 18.1206V18.3858C20.0183 18.6283 20.0183 20.0246 19.1451 21.3766C18.2325 22.7895 16.4694 24 13.2491 24C10.0288 24 8.26571 22.7895 7.3531 21.3766C6.47987 20.0246 6.47987 18.6277 6.47987 18.3858V18.1206Z\"\r\n                                                stroke=\"#98A2B3\" stroke-width=\"3\"\r\n                                                mask=\"url(#path-6-inside-2_707_13106)\" />\r\n                                        </svg>\r\n                                    </div>\r\n                                    <div class=\"mx-3 mt-1\">\r\n                                        <div class=\"my-1 card-label left-card-count\">\r\n                                            {{getOverallCardData?.footfallCard?.ageGroup ?\r\n                                            getOverallCardData?.footfallCard?.ageGroup :'--'}}\r\n                                        </div>\r\n                                        <div class=\"left-card-count-header\">Most Common Age</div>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"d-flex align-items-center my-5 me-2\">\r\n                                    <div class=\"flex-shrink-0 mt-3\">\r\n                                        <svg width=\"26\" height=\"24\" viewBox=\"0 0 26 24\" fill=\"none\"\r\n                                            xmlns=\"http://www.w3.org/2000/svg\">\r\n                                            <rect width=\"26\" height=\"24\" fill=\"#DCDCDC\" />\r\n                                            <rect x=\"-460.5\" y=\"-340.5\" width=\"783\" height=\"1947\" rx=\"4.5\"\r\n                                                stroke=\"#9747FF\" stroke-dasharray=\"10 5\" />\r\n                                            <mask id=\"path-2-inside-1_707_13106\" fill=\"white\">\r\n                                                <path\r\n                                                    d=\"M-189 -89C-189 -95.6274 -183.627 -101 -177 -101H295C301.627 -101 307 -95.6274 307 -89V85C307 91.6274 301.627 97 295 97H-177C-183.627 97 -189 91.6274 -189 85V-89Z\" />\r\n                                            </mask>\r\n                                            <path\r\n                                                d=\"M-189 -89C-189 -95.6274 -183.627 -101 -177 -101H295C301.627 -101 307 -95.6274 307 -89V85C307 91.6274 301.627 97 295 97H-177C-183.627 97 -189 91.6274 -189 85V-89Z\"\r\n                                                fill=\"white\" />\r\n                                            <path\r\n                                                d=\"M-190 -89C-190 -96.1797 -184.18 -102 -177 -102H294C301.18 -102 307 -96.1797 307 -89C307 -95.0751 301.627 -100 295 -100H-177C-183.075 -100 -188 -95.0751 -188 -89H-190ZM307 85C307 92.1797 301.18 98 294 98H-177C-184.18 98 -190 92.1797 -190 85H-188C-188 91.0751 -183.075 96 -177 96H295C301.627 96 307 91.0751 307 85ZM-177 98C-184.18 98 -190 92.1797 -190 85V-89C-190 -96.1797 -184.18 -102 -177 -102V-100C-183.075 -100 -188 -95.0751 -188 -89V85C-188 91.0751 -183.075 96 -177 96V98ZM307 -101V97V-101Z\"\r\n                                                fill=\"#D0D5DD\" mask=\"url(#path-2-inside-1_707_13106)\" />\r\n                                            <mask id=\"path-6-inside-2_707_13106\" fill=\"white\">\r\n                                                <path\r\n                                                    d=\"M7.71064 7.38462C8.19552 7.38462 8.67565 7.28911 9.12362 7.10356C9.57159 6.918 9.97863 6.64603 10.3215 6.30316C10.6644 5.9603 10.9363 5.55326 11.1219 5.10529C11.3074 4.65732 11.4029 4.17719 11.4029 3.69231C11.4029 3.20743 11.3074 2.72729 11.1219 2.27932C10.9363 1.83135 10.6644 1.42431 10.3215 1.08145C9.97863 0.73859 9.57159 0.466616 9.12362 0.28106C8.67565 0.0955043 8.19552 -7.22529e-09 7.71064 0C6.73138 1.45921e-08 5.79222 0.38901 5.09978 1.08145C4.40734 1.77389 4.01833 2.71305 4.01833 3.69231C4.01833 4.67157 4.40734 5.61072 5.09978 6.30316C5.79222 6.99561 6.73138 7.38462 7.71064 7.38462ZM18.7876 7.38462C19.2724 7.38462 19.7526 7.28911 20.2005 7.10356C20.6485 6.918 21.0556 6.64603 21.3984 6.30316C21.7413 5.9603 22.0133 5.55326 22.1988 5.10529C22.3844 4.65732 22.4799 4.17719 22.4799 3.69231C22.4799 3.20743 22.3844 2.72729 22.1988 2.27932C22.0133 1.83135 21.7413 1.42431 21.3984 1.08145C21.0556 0.73859 20.6485 0.466616 20.2005 0.28106C19.7526 0.0955043 19.2724 -7.22529e-09 18.7876 0C17.8083 1.45921e-08 16.8691 0.38901 16.1767 1.08145C15.4843 1.77389 15.0953 2.71305 15.0953 3.69231C15.0953 4.67157 15.4843 5.61072 16.1767 6.30316C16.8691 6.99561 17.8083 7.38462 18.7876 7.38462ZM0.941406 10.736C0.941406 10.4575 0.996258 10.1818 1.10283 9.92448C1.2094 9.66719 1.3656 9.43342 1.56252 9.2365C1.75944 9.03958 1.99321 8.88338 2.2505 8.77681C2.50778 8.67024 2.78354 8.61539 3.06202 8.61539H8.98448C8.55169 9.36345 8.32452 10.2127 8.32602 11.0769C8.32519 11.7755 8.47341 12.4662 8.76079 13.1029C9.04816 13.7396 9.46807 14.3077 9.99248 14.7692H8.60048C8.01418 14.7687 7.43803 14.9222 6.92969 15.2144C6.42134 15.5065 5.99864 15.927 5.70387 16.4338C3.7211 16.0449 2.51618 15.0782 1.81464 13.992C0.941406 12.64 0.941406 11.2431 0.941406 11.0012V10.736ZM17.8977 14.7692C18.484 14.7687 19.0602 14.9222 19.5685 15.2144C20.0769 15.5065 20.4996 15.927 20.7943 16.4338C22.7771 16.0449 23.982 15.0782 24.6836 13.992C25.5568 12.64 25.5568 11.2431 25.5568 11.0012V10.7366C25.5569 10.4581 25.5021 10.1823 25.3955 9.9249C25.289 9.66755 25.1328 9.4337 24.9359 9.23672C24.739 9.03973 24.5052 8.88348 24.2478 8.77687C23.9905 8.67026 23.7147 8.61539 23.4362 8.61539H17.5137C17.9465 9.36345 18.1737 10.2127 18.1722 11.0769C18.173 11.7755 18.0248 12.4662 17.7374 13.1029C17.45 13.7396 17.0301 14.3077 16.5057 14.7692H17.8977ZM16.9414 11.0769C16.9414 12.0562 16.5524 12.9953 15.86 13.6878C15.1675 14.3802 14.2284 14.7692 13.2491 14.7692C12.2698 14.7692 11.3307 14.3802 10.6382 13.6878C9.9458 12.9953 9.55679 12.0562 9.55679 11.0769C9.55679 10.0977 9.9458 9.15851 10.6382 8.46607C11.3307 7.77363 12.2698 7.38462 13.2491 7.38462C14.2284 7.38462 15.1675 7.77363 15.86 8.46607C16.5524 9.15851 16.9414 10.0977 16.9414 11.0769ZM6.47987 18.1206C6.47987 17.5582 6.70329 17.0188 7.10098 16.6211C7.49867 16.2234 8.03806 16 8.60048 16H17.8977C18.4601 16 18.9995 16.2234 19.3972 16.6211C19.7949 17.0188 20.0183 17.5582 20.0183 18.1206V18.3858C20.0183 18.6283 20.0183 20.0246 19.1451 21.3766C18.2325 22.7895 16.4694 24 13.2491 24C10.0288 24 8.26571 22.7895 7.3531 21.3766C6.47987 20.0246 6.47987 18.6277 6.47987 18.3858V18.1206Z\" />\r\n                                            </mask>\r\n                                            <path\r\n                                                d=\"M7.71064 7.38462C8.19552 7.38462 8.67565 7.28911 9.12362 7.10356C9.57159 6.918 9.97863 6.64603 10.3215 6.30316C10.6644 5.9603 10.9363 5.55326 11.1219 5.10529C11.3074 4.65732 11.4029 4.17719 11.4029 3.69231C11.4029 3.20743 11.3074 2.72729 11.1219 2.27932C10.9363 1.83135 10.6644 1.42431 10.3215 1.08145C9.97863 0.73859 9.57159 0.466616 9.12362 0.28106C8.67565 0.0955043 8.19552 -7.22529e-09 7.71064 0C6.73138 1.45921e-08 5.79222 0.38901 5.09978 1.08145C4.40734 1.77389 4.01833 2.71305 4.01833 3.69231C4.01833 4.67157 4.40734 5.61072 5.09978 6.30316C5.79222 6.99561 6.73138 7.38462 7.71064 7.38462ZM18.7876 7.38462C19.2724 7.38462 19.7526 7.28911 20.2005 7.10356C20.6485 6.918 21.0556 6.64603 21.3984 6.30316C21.7413 5.9603 22.0133 5.55326 22.1988 5.10529C22.3844 4.65732 22.4799 4.17719 22.4799 3.69231C22.4799 3.20743 22.3844 2.72729 22.1988 2.27932C22.0133 1.83135 21.7413 1.42431 21.3984 1.08145C21.0556 0.73859 20.6485 0.466616 20.2005 0.28106C19.7526 0.0955043 19.2724 -7.22529e-09 18.7876 0C17.8083 1.45921e-08 16.8691 0.38901 16.1767 1.08145C15.4843 1.77389 15.0953 2.71305 15.0953 3.69231C15.0953 4.67157 15.4843 5.61072 16.1767 6.30316C16.8691 6.99561 17.8083 7.38462 18.7876 7.38462ZM0.941406 10.736C0.941406 10.4575 0.996258 10.1818 1.10283 9.92448C1.2094 9.66719 1.3656 9.43342 1.56252 9.2365C1.75944 9.03958 1.99321 8.88338 2.2505 8.77681C2.50778 8.67024 2.78354 8.61539 3.06202 8.61539H8.98448C8.55169 9.36345 8.32452 10.2127 8.32602 11.0769C8.32519 11.7755 8.47341 12.4662 8.76079 13.1029C9.04816 13.7396 9.46807 14.3077 9.99248 14.7692H8.60048C8.01418 14.7687 7.43803 14.9222 6.92969 15.2144C6.42134 15.5065 5.99864 15.927 5.70387 16.4338C3.7211 16.0449 2.51618 15.0782 1.81464 13.992C0.941406 12.64 0.941406 11.2431 0.941406 11.0012V10.736ZM17.8977 14.7692C18.484 14.7687 19.0602 14.9222 19.5685 15.2144C20.0769 15.5065 20.4996 15.927 20.7943 16.4338C22.7771 16.0449 23.982 15.0782 24.6836 13.992C25.5568 12.64 25.5568 11.2431 25.5568 11.0012V10.7366C25.5569 10.4581 25.5021 10.1823 25.3955 9.9249C25.289 9.66755 25.1328 9.4337 24.9359 9.23672C24.739 9.03973 24.5052 8.88348 24.2478 8.77687C23.9905 8.67026 23.7147 8.61539 23.4362 8.61539H17.5137C17.9465 9.36345 18.1737 10.2127 18.1722 11.0769C18.173 11.7755 18.0248 12.4662 17.7374 13.1029C17.45 13.7396 17.0301 14.3077 16.5057 14.7692H17.8977ZM16.9414 11.0769C16.9414 12.0562 16.5524 12.9953 15.86 13.6878C15.1675 14.3802 14.2284 14.7692 13.2491 14.7692C12.2698 14.7692 11.3307 14.3802 10.6382 13.6878C9.9458 12.9953 9.55679 12.0562 9.55679 11.0769C9.55679 10.0977 9.9458 9.15851 10.6382 8.46607C11.3307 7.77363 12.2698 7.38462 13.2491 7.38462C14.2284 7.38462 15.1675 7.77363 15.86 8.46607C16.5524 9.15851 16.9414 10.0977 16.9414 11.0769ZM6.47987 18.1206C6.47987 17.5582 6.70329 17.0188 7.10098 16.6211C7.49867 16.2234 8.03806 16 8.60048 16H17.8977C18.4601 16 18.9995 16.2234 19.3972 16.6211C19.7949 17.0188 20.0183 17.5582 20.0183 18.1206V18.3858C20.0183 18.6283 20.0183 20.0246 19.1451 21.3766C18.2325 22.7895 16.4694 24 13.2491 24C10.0288 24 8.26571 22.7895 7.3531 21.3766C6.47987 20.0246 6.47987 18.6277 6.47987 18.3858V18.1206Z\"\r\n                                                stroke=\"#98A2B3\" stroke-width=\"3\"\r\n                                                mask=\"url(#path-6-inside-2_707_13106)\" />\r\n                                        </svg>\r\n                                    </div>\r\n                                    <div class=\"mx-3 mt-1\">\r\n                                        <div class=\"my-1 card-label left-card-count\">\r\n                                            {{getOverallCardData?.footfallCard?.maleRate ?\r\n                                            getOverallCardData?.footfallCard?.maleRate :'--'}}%\r\n                                        </div>\r\n                                        <div class=\"left-card-count-header\">Male</div>\r\n                                    </div>\r\n                                    <div class=\"mx-3 mt-1\">\r\n                                        <div class=\"my-1 card-label left-card-count\">\r\n                                            {{getOverallCardData?.footfallCard?.femaleRate ?\r\n                                            getOverallCardData?.footfallCard?.femaleRate :'--'}}%\r\n                                        </div>\r\n                                        <div class=\"left-card-count-header\">Female</div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                        <div *ngIf=\"selectedTab ==='conversion'\" class=\"left-bar\">\r\n                            <div class=\"top-header text-center\">\r\n                                <div class=\"left-bar-count\" [ngStyle]=\"{\r\n                                    'font-size': (getOverallCardData?.conversionCard?.conversionCount.toLocaleString()?.length > 5 ? '24px' : '36px') \r\n                                  }\">{{getOverallCardData?.conversionCard?.conversionCount ?\r\n                                    getOverallCardData?.conversionCard?.conversionCount.toLocaleString('en-IN') :'--'}}\r\n                                </div>\r\n                                <div class=\"left-bar-title\">{{headerData?.client ==='452' ? 'More than '+\r\n                                    featureConfig?.conversion.value+ ' mins' :'Conversion'}} Count</div>\r\n\r\n                            </div>\r\n                            <span class=\"w-100\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"174\" height=\"2\"\r\n                                    viewBox=\"0 0 194 2\" fill=\"none\">\r\n                                    <path opacity=\"0.4\" d=\"M1 1L193 1\" stroke=\"#99DAFF\" stroke-linecap=\"round\" />\r\n                                </svg></span>\r\n                            <div class=\"my-5\">\r\n                                <div class=\"d-flex align-items-center my-5 me-2\">\r\n                                    <div class=\"flex-shrink-0 mt-3\">\r\n                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n                                            viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                            <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\"\r\n                                                stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                        </svg>\r\n                                    </div>\r\n                                    <div class=\"mx-3 mt-1\">\r\n                                        <div class=\"my-1 card-label left-card-count\">\r\n                                            {{getOverallCardData?.conversionCard?.conversionRate ?\r\n                                            getOverallCardData?.conversionCard?.conversionRate :'--'}}%\r\n                                        </div>\r\n                                        <div class=\"left-card-count-header\">{{headerData?.client ==='452' ? 'More than '\r\n                                            + featureConfig?.conversion.value + ' mins' :'Conversion'}} Rate</div>\r\n                                    </div>\r\n                                </div>\r\n                                <div *ngIf=\"this.objDataTraffic.nob === false\"\r\n                                    class=\"d-flex align-items-center my-5 me-2\">\r\n                                    <div class=\"flex-shrink-0 mt-3\">\r\n                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n                                            viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                            <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\"\r\n                                                stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                        </svg>\r\n                                    </div>\r\n                                    <div class=\"mx-3 mt-1\">\r\n                                        <div class=\"my-1 card-label left-card-count\">\r\n                                            {{getOverallCardData?.conversionCard?.minRate ?\r\n                                            getOverallCardData?.conversionCard?.minRate :'--'}}%\r\n                                        </div>\r\n                                        <div class=\"left-card-count-header\">5 - 15 Mins</div>\r\n                                    </div>\r\n                                </div>\r\n                                <div *ngIf=\"this.objDataTraffic.nob === false\"\r\n                                    class=\"d-flex align-items-center my-5 me-2\">\r\n                                    <div class=\"flex-shrink-0 mt-3\">\r\n                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n                                            viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                            <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\"\r\n                                                stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                        </svg>\r\n                                    </div>\r\n                                    <div class=\"mx-3 mt-1\">\r\n                                        <div class=\"my-1 card-label left-card-count\">\r\n                                            {{getOverallCardData?.conversionCard?.maxRate ?\r\n                                            getOverallCardData?.conversionCard?.maxRate :'--'}}%\r\n                                        </div>\r\n                                        <div class=\"left-card-count-header\">15 - 60 Mins</div>\r\n                                    </div>\r\n                                </div>\r\n                                <div *ngIf=\"this.objDataTraffic.nob === false\"\r\n                                    class=\"d-flex align-items-center my-5 me-2\">\r\n                                    <div class=\"flex-shrink-0 mt-3\">\r\n                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n                                            viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                            <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\"\r\n                                                stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                        </svg>\r\n                                    </div>\r\n                                    <div class=\"mx-3 mt-1\">\r\n                                        <div class=\"my-1 card-label left-card-count\">\r\n                                            {{getOverallCardData?.conversionCard?.averageRate ?\r\n                                            getOverallCardData?.conversionCard?.averageRate :'--'}}%\r\n                                        </div>\r\n                                        <div class=\"left-card-count-header\">1 Hr or more</div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                        <div *ngIf=\"selectedTab ==='engagers'\" class=\"left-bar\">\r\n                            <div class=\"top-header text-center\">\r\n                                <div class=\"left-bar-count\" [ngStyle]=\"{\r\n                                    'font-size': (getOverallCardData?.engagersCard?.engagersCount.toLocaleString()?.length > 5 ? '24px' : '36px') \r\n                                  }\">{{getOverallCardData?.engagersCard?.engagersCount ?\r\n                                    getOverallCardData?.engagersCard?.engagersCount.toLocaleString('en-IN') :'--'}}\r\n                                </div>\r\n                                <div class=\"left-bar-title\">{{headerData?.client ==='452' ? 'More than ' +\r\n                                    featureConfig?.bouncedLimit.value + ' mins' :'Engagers'}} Count</div>\r\n\r\n                            </div>\r\n                            <div class=\"my-5\">\r\n                                <div class=\"d-flex align-items-center my-5 me-2\">\r\n                                    <div class=\"flex-shrink-0 mt-3\">\r\n                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n                                            viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                            <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\"\r\n                                                stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                        </svg>\r\n                                    </div>\r\n                                    <div class=\"mx-3 mt-1\">\r\n                                        <div class=\"my-1 card-label left-card-count\">\r\n                                            {{getOverallCardData?.engagersCard?.engagersRate ?\r\n                                            getOverallCardData?.engagersCard?.engagersRate :'--'}}%\r\n                                        </div>\r\n                                        <div class=\"left-card-count-header\">{{headerData?.client ==='452' ? 'More than '\r\n                                            + featureConfig?.bouncedLimit.value + ' mins' :'Engagers'}} Rate</div>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"d-flex align-items-center my-5 me-2\">\r\n                                    <div class=\"flex-shrink-0 mt-3\">\r\n                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n                                            viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                            <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\"\r\n                                                stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                        </svg>\r\n                                    </div>\r\n                                    <div class=\"mx-3 mt-1\">\r\n                                        <div class=\"my-1 card-label left-card-count\">\r\n                                            {{getOverallCardData?.engagersCard?.avgDwellTime ?\r\n                                            getOverallCardData?.engagersCard?.avgDwellTime :'--'}} Mins\r\n                                        </div>\r\n                                        <div class=\"left-card-count-header\">Avg dwell Time</div>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"d-flex align-items-center my-5 me-2\">\r\n                                    <div class=\"flex-shrink-0 mt-3\">\r\n                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n                                            viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                            <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\"\r\n                                                stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                        </svg>\r\n                                    </div>\r\n                                    <div class=\"mx-3 mt-1\">\r\n                                        <div class=\"my-1 card-label left-card-count\">\r\n                                            {{getOverallCardData?.engagersCard?.highEngagementZone ?\r\n                                            getOverallCardData?.engagersCard?.highEngagementZone :'--'}}\r\n                                        </div>\r\n                                        <div class=\"left-card-count-header\">High Engagement Zone</div>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"d-flex align-items-center my-5 me-2\">\r\n                                    <div class=\"flex-shrink-0 mt-3\">\r\n                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n                                            viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                            <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\"\r\n                                                stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                        </svg>\r\n                                    </div>\r\n                                    <div class=\"mx-3 mt-1\">\r\n                                        <div class=\"my-1 card-label left-card-count\">\r\n                                            {{getOverallCardData?.engagersCard?.lowEngagementZone ?\r\n                                            getOverallCardData?.engagersCard?.lowEngagementZone :'--'}}\r\n                                        </div>\r\n                                        <div class=\"left-card-count-header\">Low Engagement Zone</div>\r\n                                    </div>\r\n\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                        <div *ngIf=\"selectedTab ==='bounced'\" class=\"left-bar\">\r\n                            <div class=\"top-header text-center\">\r\n                                <div class=\"left-bar-count\" [ngStyle]=\"{\r\n                                    'font-size': (getOverallCardData?.bouncedCard?.bouncedCount.toLocaleString()?.length > 5 ? '24px' : '36px') \r\n                                  }\">{{getOverallCardData?.bouncedCard?.bouncedCount ?\r\n                                    getOverallCardData?.bouncedCard?.bouncedCount.toLocaleString('en-IN') :'--'}}</div>\r\n                                <div class=\"left-bar-title\">{{headerData?.client ==='452' ? 'Less than ' +\r\n                                    featureConfig?.bouncedLimit.value + ' mins':'Bounced'}} Count</div>\r\n\r\n                            </div>\r\n                            <div class=\"my-5\">\r\n                                <div class=\"d-flex align-items-center my-5 me-2\">\r\n                                    <div class=\"flex-shrink-0 mt-3\">\r\n                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n                                            viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                            <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\"\r\n                                                stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                        </svg>\r\n                                    </div>\r\n                                    <div class=\"mx-3 mt-1\">\r\n                                        <div class=\"my-1 card-label left-card-count\">\r\n                                            {{getOverallCardData?.bouncedCard?.bouncedRate ?\r\n                                            getOverallCardData?.bouncedCard?.bouncedRate :'--'}}%\r\n                                        </div>\r\n                                        <div class=\"left-card-count-header\">{{headerData?.client ==='452' ? 'Less than '\r\n                                            + featureConfig?.bouncedLimit.value+' mins':'Bounced'}} Rate</div>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"d-flex align-items-center my-5 me-2\">\r\n                                    <div class=\"flex-shrink-0 mt-3\">\r\n                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n                                            viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                            <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\"\r\n                                                stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                        </svg>\r\n                                    </div>\r\n                                    <div class=\"mx-3 mt-1\">\r\n                                        <div class=\"my-1 card-label left-card-count\">\r\n                                            {{getOverallCardData?.bouncedCard?.peakBouncedHour ?\r\n                                            getOverallCardData?.bouncedCard?.peakBouncedHour :'--'}}\r\n                                        </div>\r\n                                        <div class=\"left-card-count-header\">Peak {{headerData?.client ==='452' ? 'Less\r\n                                            than '+ featureConfig?.bouncedLimit.value + ' mins':'Bounced'}}</div>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"d-flex align-items-center my-5 me-2\">\r\n                                    <div class=\"flex-shrink-0 mt-3\">\r\n                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n                                            viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                            <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\"\r\n                                                stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                        </svg>\r\n                                    </div>\r\n                                    <div class=\"mx-3 mt-1\">\r\n                                        <div class=\"my-1 card-label left-card-count\">\r\n                                            {{getOverallCardData?.bouncedCard?.mostCommonAge ?\r\n                                            getOverallCardData?.bouncedCard?.mostCommonAge :'--'}}\r\n                                        </div>\r\n                                        <div class=\"left-card-count-header\">Most Common Age</div>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"d-flex align-items-center my-5 me-2\">\r\n                                    <div class=\"flex-shrink-0 mt-3\">\r\n                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n                                            viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                            <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\"\r\n                                                stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                        </svg>\r\n                                    </div>\r\n                                    <div class=\"mx-3 mt-1\">\r\n                                        <div class=\"my-1 card-label left-card-count\">\r\n                                            {{getOverallCardData?.bouncedCard?.maleRate ?\r\n                                            getOverallCardData?.bouncedCard?.maleRate :'--'}} %\r\n                                        </div>\r\n                                        <div class=\"left-card-count-header\">Male</div>\r\n                                    </div>\r\n                                    <div class=\"mx-3 mt-1\">\r\n                                        <div class=\"my-1 card-label left-card-count\">\r\n                                            {{getOverallCardData?.bouncedCard?.femaleRate ?\r\n                                            getOverallCardData?.bouncedCard?.femaleRate :'--'}} %\r\n                                        </div>\r\n                                        <div class=\"left-card-count-header\">Female</div>\r\n                                    </div>\r\n\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                        <div *ngIf=\"selectedTab ==='potentialBuyers'\" class=\"left-bar\">\r\n                            <div class=\"top-header text-center\">\r\n                                <div class=\"left-bar-count\" [ngStyle]=\"{\r\n                                    'font-size': (getOverallCardData?.potentialBuyersCard?.potentialBuyersCount.toLocaleString()?.length > 5 ? '24px' : '36px') \r\n                                  }\">{{getOverallCardData?.potentialBuyersCard?.potentialBuyersCount ?\r\n                                    getOverallCardData?.potentialBuyersCard?.potentialBuyersCount.toLocaleString('en-IN')\r\n                                    :'--'}}</div>\r\n                                <div class=\"left-bar-title\">Potential Buyers</div>\r\n\r\n                            </div>\r\n                            <div class=\"my-5\">\r\n                                <div class=\"d-flex align-items-center my-5 me-2\">\r\n                                    <div class=\"flex-shrink-0 mt-3\">\r\n                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n                                            viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                            <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\"\r\n                                                stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                        </svg>\r\n                                    </div>\r\n                                    <div class=\"mx-3 mt-1\">\r\n                                        <div class=\"my-1 card-label left-card-count\">\r\n                                            {{getOverallCardData?.potentialBuyersCard?.potentialBuyersRate ?\r\n                                            getOverallCardData?.potentialBuyersCard?.potentialBuyersRate :'--'}}%\r\n                                        </div>\r\n                                        <div class=\"left-card-count-header\">Buyers Rate</div>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"d-flex align-items-center my-5 me-2\">\r\n                                    <div class=\"flex-shrink-0 mt-3\">\r\n                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n                                            viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                            <path\r\n                                                d=\"M20 21V19C20 17.9391 19.5786 16.9217 18.8284 16.1716C18.0783 15.4214 17.0609 15 16 15H8C6.93913 15 5.92172 15.4214 5.17157 16.1716C4.42143 16.9217 4 17.9391 4 19V21M16 7C16 9.20914 14.2091 11 12 11C9.79086 11 8 9.20914 8 7C8 4.79086 9.79086 3 12 3C14.2091 3 16 4.79086 16 7Z\"\r\n                                                stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                stroke-linejoin=\"round\" />\r\n                                        </svg>\r\n                                    </div>\r\n                                    <div class=\"mx-3 mt-1\">\r\n                                        <div class=\"my-1 card-label left-card-count\">\r\n                                            {{getOverallCardData?.potentialBuyersCard?.singleCount ?\r\n                                            getOverallCardData?.potentialBuyersCard?.singleCount.toLocaleString('en-IN')\r\n                                            :'--'}}\r\n                                        </div>\r\n                                        <div class=\"left-card-count-header\">Single</div>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"d-flex align-items-center my-5 me-2\">\r\n                                    <div class=\"flex-shrink-0 mt-3\">\r\n                                        <svg width=\"26\" height=\"24\" viewBox=\"0 0 26 24\" fill=\"none\"\r\n                                            xmlns=\"http://www.w3.org/2000/svg\">\r\n                                            <rect width=\"26\" height=\"24\" fill=\"#DCDCDC\" />\r\n                                            <rect x=\"-460.5\" y=\"-340.5\" width=\"783\" height=\"1947\" rx=\"4.5\"\r\n                                                stroke=\"#9747FF\" stroke-dasharray=\"10 5\" />\r\n                                            <mask id=\"path-2-inside-1_707_13106\" fill=\"white\">\r\n                                                <path\r\n                                                    d=\"M-189 -89C-189 -95.6274 -183.627 -101 -177 -101H295C301.627 -101 307 -95.6274 307 -89V85C307 91.6274 301.627 97 295 97H-177C-183.627 97 -189 91.6274 -189 85V-89Z\" />\r\n                                            </mask>\r\n                                            <path\r\n                                                d=\"M-189 -89C-189 -95.6274 -183.627 -101 -177 -101H295C301.627 -101 307 -95.6274 307 -89V85C307 91.6274 301.627 97 295 97H-177C-183.627 97 -189 91.6274 -189 85V-89Z\"\r\n                                                fill=\"white\" />\r\n                                            <path\r\n                                                d=\"M-190 -89C-190 -96.1797 -184.18 -102 -177 -102H294C301.18 -102 307 -96.1797 307 -89C307 -95.0751 301.627 -100 295 -100H-177C-183.075 -100 -188 -95.0751 -188 -89H-190ZM307 85C307 92.1797 301.18 98 294 98H-177C-184.18 98 -190 92.1797 -190 85H-188C-188 91.0751 -183.075 96 -177 96H295C301.627 96 307 91.0751 307 85ZM-177 98C-184.18 98 -190 92.1797 -190 85V-89C-190 -96.1797 -184.18 -102 -177 -102V-100C-183.075 -100 -188 -95.0751 -188 -89V85C-188 91.0751 -183.075 96 -177 96V98ZM307 -101V97V-101Z\"\r\n                                                fill=\"#D0D5DD\" mask=\"url(#path-2-inside-1_707_13106)\" />\r\n                                            <mask id=\"path-6-inside-2_707_13106\" fill=\"white\">\r\n                                                <path\r\n                                                    d=\"M7.71064 7.38462C8.19552 7.38462 8.67565 7.28911 9.12362 7.10356C9.57159 6.918 9.97863 6.64603 10.3215 6.30316C10.6644 5.9603 10.9363 5.55326 11.1219 5.10529C11.3074 4.65732 11.4029 4.17719 11.4029 3.69231C11.4029 3.20743 11.3074 2.72729 11.1219 2.27932C10.9363 1.83135 10.6644 1.42431 10.3215 1.08145C9.97863 0.73859 9.57159 0.466616 9.12362 0.28106C8.67565 0.0955043 8.19552 -7.22529e-09 7.71064 0C6.73138 1.45921e-08 5.79222 0.38901 5.09978 1.08145C4.40734 1.77389 4.01833 2.71305 4.01833 3.69231C4.01833 4.67157 4.40734 5.61072 5.09978 6.30316C5.79222 6.99561 6.73138 7.38462 7.71064 7.38462ZM18.7876 7.38462C19.2724 7.38462 19.7526 7.28911 20.2005 7.10356C20.6485 6.918 21.0556 6.64603 21.3984 6.30316C21.7413 5.9603 22.0133 5.55326 22.1988 5.10529C22.3844 4.65732 22.4799 4.17719 22.4799 3.69231C22.4799 3.20743 22.3844 2.72729 22.1988 2.27932C22.0133 1.83135 21.7413 1.42431 21.3984 1.08145C21.0556 0.73859 20.6485 0.466616 20.2005 0.28106C19.7526 0.0955043 19.2724 -7.22529e-09 18.7876 0C17.8083 1.45921e-08 16.8691 0.38901 16.1767 1.08145C15.4843 1.77389 15.0953 2.71305 15.0953 3.69231C15.0953 4.67157 15.4843 5.61072 16.1767 6.30316C16.8691 6.99561 17.8083 7.38462 18.7876 7.38462ZM0.941406 10.736C0.941406 10.4575 0.996258 10.1818 1.10283 9.92448C1.2094 9.66719 1.3656 9.43342 1.56252 9.2365C1.75944 9.03958 1.99321 8.88338 2.2505 8.77681C2.50778 8.67024 2.78354 8.61539 3.06202 8.61539H8.98448C8.55169 9.36345 8.32452 10.2127 8.32602 11.0769C8.32519 11.7755 8.47341 12.4662 8.76079 13.1029C9.04816 13.7396 9.46807 14.3077 9.99248 14.7692H8.60048C8.01418 14.7687 7.43803 14.9222 6.92969 15.2144C6.42134 15.5065 5.99864 15.927 5.70387 16.4338C3.7211 16.0449 2.51618 15.0782 1.81464 13.992C0.941406 12.64 0.941406 11.2431 0.941406 11.0012V10.736ZM17.8977 14.7692C18.484 14.7687 19.0602 14.9222 19.5685 15.2144C20.0769 15.5065 20.4996 15.927 20.7943 16.4338C22.7771 16.0449 23.982 15.0782 24.6836 13.992C25.5568 12.64 25.5568 11.2431 25.5568 11.0012V10.7366C25.5569 10.4581 25.5021 10.1823 25.3955 9.9249C25.289 9.66755 25.1328 9.4337 24.9359 9.23672C24.739 9.03973 24.5052 8.88348 24.2478 8.77687C23.9905 8.67026 23.7147 8.61539 23.4362 8.61539H17.5137C17.9465 9.36345 18.1737 10.2127 18.1722 11.0769C18.173 11.7755 18.0248 12.4662 17.7374 13.1029C17.45 13.7396 17.0301 14.3077 16.5057 14.7692H17.8977ZM16.9414 11.0769C16.9414 12.0562 16.5524 12.9953 15.86 13.6878C15.1675 14.3802 14.2284 14.7692 13.2491 14.7692C12.2698 14.7692 11.3307 14.3802 10.6382 13.6878C9.9458 12.9953 9.55679 12.0562 9.55679 11.0769C9.55679 10.0977 9.9458 9.15851 10.6382 8.46607C11.3307 7.77363 12.2698 7.38462 13.2491 7.38462C14.2284 7.38462 15.1675 7.77363 15.86 8.46607C16.5524 9.15851 16.9414 10.0977 16.9414 11.0769ZM6.47987 18.1206C6.47987 17.5582 6.70329 17.0188 7.10098 16.6211C7.49867 16.2234 8.03806 16 8.60048 16H17.8977C18.4601 16 18.9995 16.2234 19.3972 16.6211C19.7949 17.0188 20.0183 17.5582 20.0183 18.1206V18.3858C20.0183 18.6283 20.0183 20.0246 19.1451 21.3766C18.2325 22.7895 16.4694 24 13.2491 24C10.0288 24 8.26571 22.7895 7.3531 21.3766C6.47987 20.0246 6.47987 18.6277 6.47987 18.3858V18.1206Z\" />\r\n                                            </mask>\r\n                                            <path\r\n                                                d=\"M7.71064 7.38462C8.19552 7.38462 8.67565 7.28911 9.12362 7.10356C9.57159 6.918 9.97863 6.64603 10.3215 6.30316C10.6644 5.9603 10.9363 5.55326 11.1219 5.10529C11.3074 4.65732 11.4029 4.17719 11.4029 3.69231C11.4029 3.20743 11.3074 2.72729 11.1219 2.27932C10.9363 1.83135 10.6644 1.42431 10.3215 1.08145C9.97863 0.73859 9.57159 0.466616 9.12362 0.28106C8.67565 0.0955043 8.19552 -7.22529e-09 7.71064 0C6.73138 1.45921e-08 5.79222 0.38901 5.09978 1.08145C4.40734 1.77389 4.01833 2.71305 4.01833 3.69231C4.01833 4.67157 4.40734 5.61072 5.09978 6.30316C5.79222 6.99561 6.73138 7.38462 7.71064 7.38462ZM18.7876 7.38462C19.2724 7.38462 19.7526 7.28911 20.2005 7.10356C20.6485 6.918 21.0556 6.64603 21.3984 6.30316C21.7413 5.9603 22.0133 5.55326 22.1988 5.10529C22.3844 4.65732 22.4799 4.17719 22.4799 3.69231C22.4799 3.20743 22.3844 2.72729 22.1988 2.27932C22.0133 1.83135 21.7413 1.42431 21.3984 1.08145C21.0556 0.73859 20.6485 0.466616 20.2005 0.28106C19.7526 0.0955043 19.2724 -7.22529e-09 18.7876 0C17.8083 1.45921e-08 16.8691 0.38901 16.1767 1.08145C15.4843 1.77389 15.0953 2.71305 15.0953 3.69231C15.0953 4.67157 15.4843 5.61072 16.1767 6.30316C16.8691 6.99561 17.8083 7.38462 18.7876 7.38462ZM0.941406 10.736C0.941406 10.4575 0.996258 10.1818 1.10283 9.92448C1.2094 9.66719 1.3656 9.43342 1.56252 9.2365C1.75944 9.03958 1.99321 8.88338 2.2505 8.77681C2.50778 8.67024 2.78354 8.61539 3.06202 8.61539H8.98448C8.55169 9.36345 8.32452 10.2127 8.32602 11.0769C8.32519 11.7755 8.47341 12.4662 8.76079 13.1029C9.04816 13.7396 9.46807 14.3077 9.99248 14.7692H8.60048C8.01418 14.7687 7.43803 14.9222 6.92969 15.2144C6.42134 15.5065 5.99864 15.927 5.70387 16.4338C3.7211 16.0449 2.51618 15.0782 1.81464 13.992C0.941406 12.64 0.941406 11.2431 0.941406 11.0012V10.736ZM17.8977 14.7692C18.484 14.7687 19.0602 14.9222 19.5685 15.2144C20.0769 15.5065 20.4996 15.927 20.7943 16.4338C22.7771 16.0449 23.982 15.0782 24.6836 13.992C25.5568 12.64 25.5568 11.2431 25.5568 11.0012V10.7366C25.5569 10.4581 25.5021 10.1823 25.3955 9.9249C25.289 9.66755 25.1328 9.4337 24.9359 9.23672C24.739 9.03973 24.5052 8.88348 24.2478 8.77687C23.9905 8.67026 23.7147 8.61539 23.4362 8.61539H17.5137C17.9465 9.36345 18.1737 10.2127 18.1722 11.0769C18.173 11.7755 18.0248 12.4662 17.7374 13.1029C17.45 13.7396 17.0301 14.3077 16.5057 14.7692H17.8977ZM16.9414 11.0769C16.9414 12.0562 16.5524 12.9953 15.86 13.6878C15.1675 14.3802 14.2284 14.7692 13.2491 14.7692C12.2698 14.7692 11.3307 14.3802 10.6382 13.6878C9.9458 12.9953 9.55679 12.0562 9.55679 11.0769C9.55679 10.0977 9.9458 9.15851 10.6382 8.46607C11.3307 7.77363 12.2698 7.38462 13.2491 7.38462C14.2284 7.38462 15.1675 7.77363 15.86 8.46607C16.5524 9.15851 16.9414 10.0977 16.9414 11.0769ZM6.47987 18.1206C6.47987 17.5582 6.70329 17.0188 7.10098 16.6211C7.49867 16.2234 8.03806 16 8.60048 16H17.8977C18.4601 16 18.9995 16.2234 19.3972 16.6211C19.7949 17.0188 20.0183 17.5582 20.0183 18.1206V18.3858C20.0183 18.6283 20.0183 20.0246 19.1451 21.3766C18.2325 22.7895 16.4694 24 13.2491 24C10.0288 24 8.26571 22.7895 7.3531 21.3766C6.47987 20.0246 6.47987 18.6277 6.47987 18.3858V18.1206Z\"\r\n                                                stroke=\"#98A2B3\" stroke-width=\"3\"\r\n                                                mask=\"url(#path-6-inside-2_707_13106)\" />\r\n                                        </svg>\r\n                                    </div>\r\n                                    <div class=\"mx-3 mt-1\">\r\n                                        <div class=\"my-1 card-label left-card-count\">\r\n                                            {{getOverallCardData?.potentialBuyersCard?.groupCount ?\r\n                                            getOverallCardData?.potentialBuyersCard?.groupCount.toLocaleString('en-IN')\r\n                                            :'--'}}\r\n                                        </div>\r\n                                        <div class=\"left-card-count-header\">Group</div>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"d-flex align-items-center my-5 me-2\">\r\n                                    <div class=\"flex-shrink-0 mt-3\">\r\n                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n                                            viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                            <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\"\r\n                                                stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                        </svg>\r\n                                    </div>\r\n                                    <div class=\"mx-3 mt-1\">\r\n                                        <div class=\"my-1 card-label left-card-count\">\r\n                                            {{getOverallCardData?.potentialBuyersCard?.mostCommonAge ?\r\n                                            getOverallCardData?.potentialBuyersCard?.mostCommonAge :'--'}}\r\n                                        </div>\r\n                                        <div class=\"left-card-count-header\">Most Common Age</div>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"d-flex align-items-center my-5 me-2\">\r\n                                    <div class=\"flex-shrink-0 mt-3\">\r\n                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n                                            viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                            <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\"\r\n                                                stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                        </svg>\r\n                                    </div>\r\n                                    <div class=\"mx-3 mt-1\">\r\n                                        <div class=\"my-1 card-label left-card-count\">\r\n                                            {{getOverallCardData?.potentialBuyersCard?.maleRate ?\r\n                                            getOverallCardData?.potentialBuyersCard?.maleRate :'--'}} %\r\n                                        </div>\r\n                                        <div class=\"left-card-count-header\">Male</div>\r\n                                    </div>\r\n                                    <div class=\"mx-3 mt-1\">\r\n                                        <div class=\"my-1 card-label left-card-count\">\r\n                                            {{getOverallCardData?.potentialBuyersCard?.femaleRate ?\r\n                                            getOverallCardData?.potentialBuyersCard?.femaleRate :'--'}} %\r\n                                        </div>\r\n                                        <div class=\"left-card-count-header\">Female</div>\r\n                                    </div>\r\n\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                        <div *ngIf=\"selectedTab ==='missedOpportunity'\" class=\"left-bar\">\r\n                            <div class=\"top-header text-center\">\r\n                                <div class=\"left-bar-count\" [ngStyle]=\"{\r\n                                    'font-size': (getOverallCardData?.missedOpportunityCard?.missedOpportunityCount.toLocaleString()?.length > 5 ? '24px' : '36px') \r\n                                  }\">{{getOverallCardData?.missedOpportunityCard?.missedOpportunityCount ?\r\n                                    getOverallCardData?.missedOpportunityCard?.missedOpportunityCount.toLocaleString('en-IN')\r\n                                    :'--'}}</div>\r\n                                <div class=\"left-bar-title\">{{headerData?.client ==='452' ?\r\n                                    featureConfig?.missedOpportunityFrom.value+' - '+\r\n                                    featureConfig?.missedOpportunityTo.value + ' mins' :'Missed opportunity'}} Count\r\n                                </div>\r\n\r\n                            </div>\r\n                            <div class=\"my-5\">\r\n                                <div class=\"d-flex align-items-center my-5 me-2\">\r\n                                    <div class=\"flex-shrink-0 mt-3\">\r\n                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n                                            viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                            <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\"\r\n                                                stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                        </svg>\r\n                                    </div>\r\n                                    <div class=\"mx-3 mt-1\">\r\n                                        <div class=\"my-1 card-label left-card-count\">\r\n                                            {{getOverallCardData?.missedOpportunityCard?.missedOpportunityRate ?\r\n                                            getOverallCardData?.missedOpportunityCard?.missedOpportunityRate :'--'}}%\r\n                                        </div>\r\n                                        <div class=\"left-card-count-header\">{{headerData?.client ==='452' ?\r\n                                            featureConfig?.missedOpportunityFrom.value+ ' - '\r\n                                            +featureConfig?.missedOpportunityTo.value + ' mins' :'Missed opportunity'}}\r\n                                            Rate</div>\r\n                                    </div>\r\n                                </div>\r\n                                <div *ngIf=\"headerData?.client !=='452'\" class=\"d-flex align-items-center my-5 me-2\">\r\n                                    <div class=\"flex-shrink-0 mt-3\">\r\n                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n                                            viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                            <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\"\r\n                                                stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                        </svg>\r\n                                    </div>\r\n                                    <div class=\"mx-3 mt-1\">\r\n                                        <div class=\"my-2\">\r\n                                            <span class=\"card-label header\">\r\n                                                <span>\r\n                                                    {{ getOverallCardData?.missedOpportunityCard?.currency\r\n                                                    }}</span>&nbsp;\r\n                                                <span>\r\n                                                    {{getOverallCardData?.missedOpportunityCard?.potentialRevenueLoss ?\r\n                                                    (getOverallCardData?.missedOpportunityCard?.potentialRevenueLoss |\r\n                                                    number) :'--'}}</span>\r\n                                            </span>\r\n                                        </div>\r\n\r\n                                        <!-- <div class=\"my-1 card-label left-card-count\" [ngStyle]=\"{\r\n                                    'font-size': (getOverallCardData?.missedOpportunityCard?.potentialRevenueLoss.toLocaleString()?.length > 8 ? '16px' : '18px')}\"><span class=\"me-1\" *ngIf=\"getOverallCardData?.missedOpportunityCard?.currency ==='inr'\">₹</span>\r\n                                            <span class=\"me-1\" *ngIf=\"getOverallCardData?.missedOpportunityCard?.currency ==='dollar'\">$</span>\r\n                                            <span class=\"me-1\" *ngIf=\"getOverallCardData?.missedOpportunityCard?.currency ==='aed'\">د.إ</span>\r\n                                            {{getOverallCardData?.missedOpportunityCard?.potentialRevenueLoss ?\r\n                                            getOverallCardData?.missedOpportunityCard?.potentialRevenueLoss.toLocaleString('en-IN') :'--'}}</div>-->\r\n                                        <div class=\"left-card-count-header\">Potential Revenue Loss </div>\r\n                                    </div>\r\n                                </div>\r\n\r\n                                <div class=\"d-flex align-items-center my-5\">\r\n                                    <div class=\"flex-shrink-0 mt-3\">\r\n                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n                                            viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                            <path\r\n                                                d=\"M20 21V19C20 17.9391 19.5786 16.9217 18.8284 16.1716C18.0783 15.4214 17.0609 15 16 15H8C6.93913 15 5.92172 15.4214 5.17157 16.1716C4.42143 16.9217 4 17.9391 4 19V21M16 7C16 9.20914 14.2091 11 12 11C9.79086 11 8 9.20914 8 7C8 4.79086 9.79086 3 12 3C14.2091 3 16 4.79086 16 7Z\"\r\n                                                stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                stroke-linejoin=\"round\" />\r\n                                        </svg>\r\n                                    </div>\r\n                                    <div class=\"mx-1 mt-1\">\r\n                                        <div class=\"my-1 card-label left-card-count\">\r\n                                            {{getOverallCardData?.missedOpportunityCard?.singleCount ?\r\n                                            getOverallCardData?.missedOpportunityCard?.singleCount.toLocaleString('en-IN'):'--'}}\r\n                                        </div>\r\n                                        <div class=\"left-card-count-header\">Single</div>\r\n                                    </div>\r\n                                    <div class=\"flex-shrink-0 mx-2 mt-3\">\r\n                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"24\"\r\n                                            viewBox=\"0 0 25 24\" fill=\"none\">\r\n                                            <path\r\n                                                d=\"M7.65918 16.75H16.9561C17.3196 16.75 17.6687 16.8943 17.9258 17.1514C18.1828 17.4084 18.3271 17.7576 18.3271 18.1211V18.3857C18.3271 18.5793 18.3255 19.6579 17.7061 20.751L17.5732 20.9697C16.8194 22.1367 15.3137 23.25 12.3076 23.25C9.48936 23.25 7.98996 22.2714 7.19238 21.1875L7.04199 20.9697C6.29027 19.8059 6.28809 18.5916 6.28809 18.3857V18.1211C6.28809 17.8031 6.39884 17.4958 6.59863 17.252L6.68945 17.1514C6.94649 16.8943 7.29567 16.75 7.65918 16.75ZM2.12109 9.36523H6.89941C6.72501 9.91652 6.63397 10.4931 6.63477 11.0762C6.63395 11.7809 6.76481 12.4786 7.01953 13.1338L7.13574 13.4111C7.23121 13.6227 7.34086 13.8271 7.46094 14.0244C6.90154 14.0511 6.3539 14.192 5.85156 14.4385L5.61426 14.5645C5.15716 14.8272 4.757 15.175 4.43359 15.5869C3.03674 15.2155 2.16361 14.5166 1.61914 13.7549L1.50293 13.585C0.751358 12.4212 0.75 11.2069 0.75 11.001V10.7363C0.75 10.6012 0.769513 10.4667 0.808594 10.3379L0.854492 10.2119C0.906154 10.0872 0.975225 9.9702 1.06055 9.86621L1.15137 9.7666C1.24685 9.67113 1.35596 9.59076 1.47461 9.52734L1.5957 9.46973C1.76199 9.40085 1.9411 9.36523 2.12109 9.36523ZM22.4951 9.36523C22.6301 9.36527 22.7639 9.38577 22.8926 9.4248L23.0195 9.46973C23.1443 9.52142 23.2603 9.5914 23.3643 9.67676L23.4639 9.7666C23.5592 9.86201 23.6397 9.97132 23.7031 10.0898L23.7607 10.2119C23.8296 10.3782 23.8653 10.5563 23.8652 10.7363V11.001C23.8652 11.194 23.8637 12.2731 23.2441 13.3662L23.1123 13.585C22.5785 14.4114 21.6815 15.1881 20.1807 15.5869C19.8573 15.1752 19.4579 14.8271 19.001 14.5645C18.436 14.2398 17.8024 14.0552 17.1533 14.0244C17.2215 13.9124 17.2883 13.7994 17.3486 13.6826L17.4795 13.4111C17.7692 12.7691 17.936 12.0796 17.9727 11.3779L17.9805 11.0762C17.9813 10.4931 17.8902 9.91653 17.7158 9.36523H22.4951ZM12.3076 8.13477C12.9905 8.13477 13.6493 8.37169 14.1729 8.80078L14.3887 8.99609C14.9404 9.54788 15.25 10.2968 15.25 11.0771C15.2499 11.7597 15.0128 12.4179 14.584 12.9414L14.3887 13.1572C13.8369 13.709 13.088 14.0195 12.3076 14.0195C11.6249 14.0195 10.9669 13.7815 10.4434 13.3525L10.2275 13.1572C9.6758 12.6055 9.36529 11.8574 9.36523 11.0771C9.36523 10.3944 9.60229 9.73548 10.0312 9.21191L10.2275 8.99609C10.7793 8.44453 11.5275 8.13479 12.3076 8.13477ZM6.76953 0.75C7.05927 0.750029 7.34678 0.79317 7.62305 0.876953L7.89551 0.973633C8.1633 1.08457 8.41249 1.23475 8.63574 1.41797L8.84961 1.61133C9.05449 1.81621 9.22813 2.0501 9.36426 2.30469L9.4873 2.56641C9.63517 2.92338 9.71191 3.30599 9.71191 3.69238C9.7119 4.07875 9.63516 4.4614 9.4873 4.81836C9.37642 5.08601 9.22704 5.33543 9.04395 5.55859L8.84961 5.77246C8.57641 6.04566 8.25245 6.26327 7.89551 6.41113C7.53862 6.55896 7.15582 6.63473 6.76953 6.63477L6.47852 6.62012C5.90119 6.56281 5.35308 6.33643 4.9043 5.96875L4.68848 5.77246C4.13689 5.22072 3.82717 4.47256 3.82715 3.69238C3.82715 3.00948 4.06406 2.35076 4.49316 1.82715L4.68848 1.61133C5.17129 1.12856 5.80498 0.831508 6.47852 0.764648L6.76953 0.75ZM17.8457 0.75C18.1356 0.75 18.4238 0.7931 18.7002 0.876953L18.9717 0.973633C19.2396 1.0846 19.4896 1.23467 19.7129 1.41797L19.9268 1.61133C20.1316 1.81612 20.3043 2.05022 20.4404 2.30469L20.5645 2.56641C20.7123 2.92337 20.7881 3.30601 20.7881 3.69238C20.7881 4.07875 20.7123 4.46141 20.5645 4.81836C20.4536 5.086 20.3042 5.33543 20.1211 5.55859L19.9268 5.77246C19.6535 6.04568 19.3287 6.26327 18.9717 6.41113C18.6149 6.55885 18.2319 6.63477 17.8457 6.63477L17.5557 6.62012C16.9783 6.56285 16.4303 6.33641 15.9814 5.96875L15.7656 5.77246C15.214 5.22071 14.9043 4.47262 14.9043 3.69238C14.9043 3.00943 15.1411 2.35077 15.5703 1.82715L15.7656 1.61133C16.2485 1.12857 16.8821 0.83146 17.5557 0.764648L17.8457 0.75Z\"\r\n                                                stroke=\"#98A2B3\" stroke-width=\"1.5\" />\r\n                                        </svg>\r\n                                    </div>\r\n                                    <div class=\"mx-1 mt-1\">\r\n                                        <div class=\"my-1 card-label left-card-count\">\r\n                                            {{getOverallCardData?.missedOpportunityCard?.groupCount ?\r\n                                            getOverallCardData?.missedOpportunityCard?.groupCount.toLocaleString('en-IN'):'--'}}\r\n                                        </div>\r\n                                        <div class=\"left-card-count-header\">Group</div>\r\n                                    </div>\r\n\r\n                                </div>\r\n\r\n                                <div class=\"d-flex align-items-center my-5 me-2\">\r\n                                    <div class=\"flex-shrink-0 mt-3\">\r\n                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n                                            viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                            <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\"\r\n                                                stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                        </svg>\r\n                                    </div>\r\n                                    <div class=\"mx-3 mt-1\">\r\n                                        <div class=\"my-1 card-label left-card-count\">\r\n                                            {{getOverallCardData?.missedOpportunityCard?.lowConversionZone ?\r\n                                            getOverallCardData?.missedOpportunityCard?.lowConversionZone :'--'}}\r\n                                        </div>\r\n                                        <div class=\"left-card-count-header\">Low Conversion Zone</div>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"d-flex align-items-center my-5 me-2\">\r\n                                    <div class=\"flex-shrink-0 mt-3\">\r\n                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n                                            viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                            <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\"\r\n                                                stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                        </svg>\r\n                                    </div>\r\n                                    <div class=\"mx-3 mt-1\">\r\n                                        <div class=\"my-1 card-label left-card-count\">\r\n                                            {{getOverallCardData?.missedOpportunityCard?.mostCommonAge ?\r\n                                            getOverallCardData?.missedOpportunityCard?.mostCommonAge :'--'}}\r\n                                        </div>\r\n                                        <div class=\"left-card-count-header\">Most Common Age</div>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"d-flex align-items-center my-5 me-2\">\r\n                                    <div class=\"flex-shrink-0 mt-3\">\r\n                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n                                            viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                            <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\"\r\n                                                stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                        </svg>\r\n                                    </div>\r\n                                    <div class=\"mx-3 mt-1\">\r\n                                        <div class=\"my-1 card-label left-card-count\">\r\n                                            {{getOverallCardData?.missedOpportunityCard?.maleRate ?\r\n                                            getOverallCardData?.missedOpportunityCard?.maleRate :'--'}} %\r\n                                        </div>\r\n                                        <div class=\"left-card-count-header\">Male</div>\r\n                                    </div>\r\n                                    <div class=\"mx-3 mt-1\">\r\n                                        <div class=\"my-1 card-label left-card-count\">\r\n                                            {{getOverallCardData?.missedOpportunityCard?.femaleRate ?\r\n                                            getOverallCardData?.missedOpportunityCard?.femaleRate :'--'}} %\r\n                                        </div>\r\n                                        <div class=\"left-card-count-header\">Female</div>\r\n                                    </div>\r\n\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n\r\n                    <div *ngIf=\"selectedTab ==='traffic' && !chartloading && !chartNoData\" class=\"col-md-10 h-100 \">\r\n                        <div class=\"row px-0\">\r\n\r\n                            <div class=\"col-md-6 mt-3 px-0\">\r\n\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=\"card-label\">Traffic Density <svg placement=\"right\"\r\n                                                ngbTooltip=\"Traffic analysis distribution across the days\"\r\n                                                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_3352_688)\">\r\n                                                    <path\r\n                                                        d=\"M7.9987 10.6667V8.00004M7.9987 5.33337H8.00536M14.6654 8.00004C14.6654 11.6819 11.6806 14.6667 7.9987 14.6667C4.3168 14.6667 1.33203 11.6819 1.33203 8.00004C1.33203 4.31814 4.3168 1.33337 7.9987 1.33337C11.6806 1.33337 14.6654 4.31814 14.6654 8.00004Z\"\r\n                                                        stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                        stroke-linejoin=\"round\" />\r\n                                                </g>\r\n                                                <defs>\r\n                                                    <clipPath id=\"clip0_3352_688\">\r\n                                                        <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n                                                    </clipPath>\r\n                                                </defs>\r\n                                            </svg></span>\r\n\r\n                                        <span class=\"text-sub mb-2\">Based on {{getDensityDwellData?.fromDate | date:'dd\r\n                                            MMM, yyyy'}} – {{getDensityDwellData?.toDate | date:'dd MMM, yyyy'}}\r\n                                        </span>\r\n                                    </h3>\r\n                                    <div class=\"card-toolbar text-nowrap\">\r\n                                        <button *ngIf=\"!chartloading && !chartNoData\" type=\"button\"\r\n                                            (click)=\"exportDensity()\"\r\n                                            class=\"btn btn-default p-3 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\"\r\n                                                viewBox=\"0 0 20 20\" fill=\"none\">\r\n                                                <path\r\n                                                    d=\"M8.125 13.125H16.3563L14.7438 14.7438L15.625 15.625L18.75 12.5L15.625 9.375L14.7438 10.2562L16.3563 11.875H8.125V13.125Z\"\r\n                                                    fill=\"black\" />\r\n                                                <path\r\n                                                    d=\"M13.75 8.75001V6.25001C13.7505 6.16776 13.7347 6.08622 13.7036 6.01007C13.6725 5.93392 13.6267 5.86466 13.5688 5.80626L9.19375 1.43126C9.13535 1.37333 9.06609 1.32751 8.98994 1.2964C8.91379 1.2653 8.83225 1.24953 8.75 1.25001H2.5C2.16848 1.25001 1.85054 1.38171 1.61612 1.61613C1.3817 1.85055 1.25 2.16849 1.25 2.50001V17.5C1.25 17.8315 1.3817 18.1495 1.61612 18.3839C1.85054 18.6183 2.16848 18.75 2.5 18.75H12.5C12.8315 18.75 13.1495 18.6183 13.3839 18.3839C13.6183 18.1495 13.75 17.8315 13.75 17.5V16.25H12.5V17.5H2.5V2.50001H7.5V6.25001C7.5 6.58153 7.6317 6.89947 7.86612 7.13389C8.10054 7.36831 8.41848 7.50001 8.75 7.50001H12.5V8.75001H13.75ZM8.75 6.25001V2.75626L12.2438 6.25001H8.75Z\"\r\n                                                    fill=\"black\" />\r\n                                            </svg></button>\r\n                                    </div>\r\n\r\n\r\n                                </div>\r\n                                <div id=\"trafficHeatmapChart\"></div>\r\n                            </div>\r\n                            <div class=\"col-md-6 mt-3 px-0\">\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=\"card-label\">Dwell Time Split <svg placement=\"right\"\r\n                                                ngbTooltip=\"Time-distributed footfall with demographics\"\r\n                                                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_3352_688)\">\r\n                                                    <path\r\n                                                        d=\"M7.9987 10.6667V8.00004M7.9987 5.33337H8.00536M14.6654 8.00004C14.6654 11.6819 11.6806 14.6667 7.9987 14.6667C4.3168 14.6667 1.33203 11.6819 1.33203 8.00004C1.33203 4.31814 4.3168 1.33337 7.9987 1.33337C11.6806 1.33337 14.6654 4.31814 14.6654 8.00004Z\"\r\n                                                        stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                        stroke-linejoin=\"round\" />\r\n                                                </g>\r\n                                                <defs>\r\n                                                    <clipPath id=\"clip0_3352_688\">\r\n                                                        <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n                                                    </clipPath>\r\n                                                </defs>\r\n                                            </svg></span>\r\n                                        <span class=\"text-sub mb-2\">Based on {{getDensityDwellData?.fromDate | date:'dd\r\n                                            MMM, yyyy'}} – {{getDensityDwellData?.toDate | date:'dd MMM, yyyy'}}\r\n                                        </span>\r\n\r\n                                    </h3>\r\n                                    <div class=\"card-toolbar text-nowrap\">\r\n                                        <select class=\"form-select form-select-sm w-auto dropselect\" id=\"dateSelect\"\r\n                                            (change)=\"onDateChange($event)\" [(ngModel)]=\"footfallDate\">\r\n                                            <option *ngFor=\"let dataset of trafficData\" [value]=\"dataset.value\">{{\r\n                                                dataset.label }}</option>\r\n                                        </select>\r\n                                    </div>\r\n                                </div>\r\n                                <div *ngIf=\"!chartDwellNoData && !chartDwellloading\">\r\n                                    <div id=\"dwellBarChart\"></div>\r\n                                </div>\r\n                                <div *ngIf=\"chartDwellNoData\" class=\"row\">\r\n                                    <div class=\"col-lg-12 mt-20 mb-6\">\r\n                                        <div\r\n                                            class=\" mt-20 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 Dwell Time Split</div>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    <div *ngIf=\"!chartloading && !chartNoData && (selectedTab ==='footfall' || selectedTab ==='conversion' || selectedTab ==='engagers' || selectedTab ==='bounced' || selectedTab ==='potentialBuyers' || selectedTab ==='missedOpportunity')\"\r\n                        class=\"col-md-10 h-100 right-bar border-1\">\r\n\r\n\r\n                        <div *ngIf=\"(footfallValue ==='footfall' || footfallValue ==='conversion' || footfallValue ==='engagers'\r\n                        || footfallValue ==='missedOpportunity' || footfallValue ==='potentialBuyers' || footfallValue ==='bounced' || footfallValue ==='demographic' || footfallValue ==='buyer') && !detailedCharts\"\r\n                            class=\"row\">\r\n                            <div *ngIf=\"selectedTab !=='potentialBuyers'\">\r\n                                <ul\r\n                                    class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap my-2 mx-2\">\r\n                                    <li class=\"nav-item nav-item1\" *ngFor=\"let dataset of datasetsCard\"\r\n                                        (click)=\"onDatasetChange(dataset.value)\">\r\n                                        <a [ngClass]=\"footfallValue ===dataset.value ? 'active' :''\"\r\n                                            class=\"nav-link nav-link1 cursor-pointer me-6\">{{ dataset.label }}</a>\r\n                                    </li>\r\n                                </ul>\r\n                                <!-- <ul class=\"nav nav-tabs\">\r\n                                <li class=\"nav-item\" >\r\n                                    <a class=\"nav-link\" [class.active]=\"selectedTab === dataset.label\">{{ dataset.label }}</a>\r\n                                </li>\r\n                            </ul> -->\r\n                                <!-- <select class=\"form-select form-select-sm w-auto m-3 dropselect\" id=\"datasetSelect\" [(ngModel)]=\"footfallValue\"\r\n                            (change)=\"onDatasetChange($event)\">\r\n                            <option *ngFor=\"let dataset of datasets\" [value]=\"dataset.value\">{{ dataset.label }}</option>\r\n                        </select>  -->\r\n\r\n                            </div>\r\n                            <div class=\"left-bar-title fw-bold mt-5 mb-2 ms-3\" *ngIf=\"selectedTab ==='potentialBuyers'\">\r\n                                {{selctedValue}}\r\n                            </div>\r\n                            <span class=\"ms-3 text-sub\">Based on {{headerData?.date?.startDate | date:'dd MMM, yyyy'}} –\r\n                                {{headerData?.date?.endDate | date:'dd MMM, yyyy'}} </span>\r\n                            <div *ngIf=\"footfallValue ==='demographic' && !detailedCharts\" class=\"col-md-12\">\r\n                                <div *ngIf=\"!demoNoData && !demoloading\">\r\n                                    <div class=\"text-center\" id=\"demoGraphics\"></div>\r\n                                </div>\r\n                                <div *ngIf=\"demoloading\"\r\n                                    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=\"demoNoData\" class=\"row\">\r\n                                    <div class=\"col-lg-12 mb-3\">\r\n                                        <div\r\n                                            class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n                                            <img class=\"demo-img-nodata\" 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 Demographic Analysis\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <div *ngIf=\"footfallValue ==='buyer' && !detailedCharts\" class=\"col-md-12\">\r\n                                <div *ngIf=\"!buyersNoData && !buyersloading\">\r\n                                    <div class=\"text-center\" id=\"buyersCharts\"></div>\r\n\r\n                                </div>\r\n                                <div *ngIf=\"buyersloading\"\r\n                                    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=\"buyersNoData\" class=\"row\">\r\n                                    <div class=\"col-lg-12 mb-3\">\r\n                                        <div\r\n                                            class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n                                            <img class=\"demo-img-nodata\" 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 Buyer Analysis</div>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <section *ngIf=\"this.objDataTraffic.nob === true && selectedTab ==='conversion'\">\r\n                                <div class=\"text-center mt-3 mx-3\" id=\"testGraphics\"></div>\r\n                                <lib-pagination [itemsPerPage]=\"pageSizeTrafficCard\" [currentPage]=\"offsetTrafficCard\"\r\n                                    [totalItems]=\"totalItemsTrafficCard\" [paginationSizes]=\"paginationSizesTrafficCard\"\r\n                                    [pageSize]=\"pageSizeTrafficCard\" (pageChange)=\"onPageChangeTrafficCard($event)\"\r\n                                    (pageSizeChange)=\"onPageSizeChangeTrafficCard($event)\"></lib-pagination>\r\n                            </section>\r\n                            <section\r\n                                *ngIf=\"(this.objDataTraffic.nob === true && selectedTab !=='conversion' || this.objDataTraffic.nob === false) \">\r\n                                <div *ngIf=\"footfallValue ==='footfall' || footfallValue ==='conversion' || footfallValue ==='engagers' \r\n                            || footfallValue ==='missedOpportunity' || footfallValue ==='potentialBuyers' || footfallValue ==='bounced' && !detailedCharts\"\r\n                                    class=\"chart-container px-3 mt-3\">\r\n                                    <div class=\"text-center\" id=\"testGraphics\"></div>\r\n                                    <lib-pagination [itemsPerPage]=\"pageSizeTrafficCard\"\r\n                                        [currentPage]=\"offsetTrafficCard\" [totalItems]=\"totalItemsTrafficCard\"\r\n                                        [paginationSizes]=\"paginationSizesTrafficCard\" [pageSize]=\"pageSizeTrafficCard\"\r\n                                        (pageChange)=\"onPageChangeTrafficCard($event)\"\r\n                                        (pageSizeChange)=\"onPageSizeChangeTrafficCard($event)\"></lib-pagination>\r\n                                </div>\r\n                                <div *ngIf=\"footfallValue ==='footfall' || footfallValue ==='conversion' || footfallValue ==='engagers'\r\n                            || footfallValue ==='missedOpportunity' || footfallValue ==='potentialBuyers' || footfallValue ==='bounced' && !detailedCharts\"\r\n                                    class=\"heatmap-container element\">\r\n                                    <div class=\"d-flex justify-content-between align-items-center mb-2 px-2\">\r\n                                        <span class=\"fw-bold\">Hourly Data</span>\r\n                                        <div class=\"hour-bucket-dropdown\" ngbDropdown placement=\"bottom-end\">\r\n                                            <button type=\"button\" class=\"hour-bucket-toggle\" ngbDropdownToggle>\r\n                                                <span>{{ selectedHourBucketLabel }}</span>\r\n                                                <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n                                                    xmlns=\"http://www.w3.org/2000/svg\">\r\n                                                    <path d=\"M6 9l6 6 6-6\" stroke=\"currentColor\" stroke-width=\"2\"\r\n                                                        stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                                </svg>\r\n                                            </button>\r\n                                            <div ngbDropdownMenu class=\"hour-bucket-menu\">\r\n                                                <button type=\"button\" class=\"hour-bucket-item\" ngbDropdownItem\r\n                                                    *ngFor=\"let opt of hourBucketOptions\"\r\n                                                    [class.active]=\"opt.value === hourBucketValue\"\r\n                                                    (click)=\"onHourBucketChange(opt.value)\">\r\n                                                    {{ opt.label }}\r\n                                                </button>\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                    <div id=\"heatmapchart\"></div>\r\n                                </div>\r\n                            </section>\r\n\r\n                            <!-- <div *ngIf=\"footfallValue ==='footfall' || footfallValue ==='conversion' || footfallValue ==='engagers'\r\n                        || footfallValue ==='missedOpportunity' || footfallValue ==='potentialBuyers' || footfallValue ==='bounced' && !detailedCharts\" class=\"col-md-9 chart-container mt-3\">\r\n                                <div class=\"text-center\" id=\"testGraphics\"></div>\r\n                            </div>\r\n                            <div *ngIf=\"footfallValue ==='footfall' || footfallValue ==='conversion' || footfallValue ==='engagers'\r\n                        || footfallValue ==='missedOpportunity' || footfallValue ==='potentialBuyers' || footfallValue ==='bounced' && !detailedCharts\" class=\"col-md-3 mt-3 me-0 pe-0\">\r\n                                <div id=\"heatmapchart\"></div>\r\n                            </div> -->\r\n\r\n                        </div>\r\n                        <div *ngIf=\"detailedCharts\" class=\"row\">\r\n                            <div class=\"d-flex align-items-center my-5 me-2\">\r\n                                <div class=\"flex-shrink-0 mt-3\">\r\n                                    <span class=\"cursor-pointer\" (click)=\"backToFootfall()\">\r\n                                        <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\r\n                                            xmlns=\"http://www.w3.org/2000/svg\">\r\n                                            <g filter=\"url(#filter0_d_2585_7036)\">\r\n                                                <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\r\n                                                <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\"\r\n                                                    stroke=\"#D0D5DD\" />\r\n                                                <path\r\n                                                    d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\r\n                                                    stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n                                                    stroke-linejoin=\"round\" />\r\n                                            </g>\r\n                                            <defs>\r\n                                                <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\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\"\r\n                                                        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_2585_7036\" />\r\n                                                    <feBlend mode=\"normal\" in=\"SourceGraphic\"\r\n                                                        in2=\"effect1_dropShadow_2585_7036\" result=\"shape\" />\r\n                                                </filter>\r\n                                            </defs>\r\n                                        </svg>\r\n                                    </span>\r\n                                </div>\r\n                                <div class=\"mx-3 mt-1\">\r\n                                    <div class=\"my-1 card-label left-card-count\"><span\r\n                                            class=\"text-primary cursor-pointer text-decoration-underline\"\r\n                                            (click)=\"storeView(storeId)\">{{storeName}}</span><span class=\"ms-2\">Footfall\r\n                                            Trend</span></div>\r\n                                    <div class=\"left-card-count-header text-sub\">Based on {{headerData?.date?.startDate\r\n                                        | date:'dd MMM, yyyy'}} - {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"col-md-12 mx-5\">\r\n                                <div class=\"text-center\" id=\"detailedChartDiv\"></div>\r\n                            </div>\r\n                        </div>\r\n\r\n                    </div>\r\n                </div>\r\n\r\n            </div>\r\n        </div>\r\n        <!-- <lib-traffic-card-charts class=\"my-2\"></lib-traffic-card-charts> -->\r\n        <div *ngIf=\"isVMS\">\r\n            <lib-img-rvps\r\n                *ngIf=\"storeIdarray?.length === 1 && (clientData?.featureConfigs?.isFootfallDirectory&&!clientData?.featureConfigs?.isFootfallDirectoryonlyTango || (gs.userAccess | async)?.userType === 'tango')\"\r\n                class=\"my-2\"></lib-img-rvps>\r\n        </div>\r\n        <div *ngIf=\"headerData?.client !=='452' && !isVMS\">\r\n            <lib-image-doc\r\n                *ngIf=\"storeIdarray?.length === 1 && (clientData?.featureConfigs?.isFootfallDirectory&&!clientData?.featureConfigs?.isFootfallDirectoryonlyTango || (gs.userAccess | async)?.userType === 'tango')\"\r\n                class=\"my-2\"></lib-image-doc>\r\n        </div>\r\n    </div>\r\n    <div *ngIf=\"storeIdarray?.length > 1\" class=\"col-md-6 mt-3\">\r\n        <div class=\"card h-100\">\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\">Performance Matrix\r\n                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"\r\n                            placement=\"right\" ngbTooltip=\"Store performance based on metrics selected\">\r\n                            <g clip-path=\"url(#clip0_1432_80035)\">\r\n                                <path\r\n                                    d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\"\r\n                                    stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                            </g>\r\n                            <defs>\r\n                                <clipPath id=\"clip0_1432_80035\">\r\n                                    <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n                                </clipPath>\r\n                            </defs>\r\n                        </svg>\r\n                    </span>\r\n                    <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} –\r\n                        {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n                </h3>\r\n                <div class=\"card-toolbar\">\r\n                    <form [formGroup]=\"form1\">\r\n                        <lib-reactive-select [formControl]=\"topStoresSelectControl\" [idField]=\"'value'\"\r\n                            [nameField]=\"'label'\" [data]=\"topStores\" class=\"w-100\"\r\n                            (valueChange)=\"onValueChangeTopStores($event?.value)\">\r\n                        </lib-reactive-select>\r\n\r\n                    </form>\r\n                </div>\r\n            </div>\r\n            <div class=\"row mx-3 align-items-center w-75\">\r\n                <div class=\"d-flex align-items-center ms-3\">\r\n                    <select class=\"form-select-sm form-select me-2 dropselect\" [(ngModel)]=\"footfallValue1\"\r\n                        (change)=\"onValueChange($event)\">\r\n                        <option *ngFor=\"let obj of getFilteredFootfallDatasets()\" [id]=\"obj.label\" [value]=\"obj.value\">\r\n                            {{obj.label}}\r\n                        </option>\r\n                    </select>\r\n                    <span class=\"mx-2\">Vs</span>\r\n                    <select class=\"form-select-sm form-select ms-2 dropselect\" [(ngModel)]=\"bounceValue1\"\r\n                        (change)=\"onBounceChange($event)\">\r\n                        <option *ngFor=\"let obj of getFilteredBounceDatasets()\" [id]=\"obj.label\" [value]=\"obj.value\">\r\n                            {{obj.label}}\r\n                        </option>\r\n\r\n                    </select>\r\n                </div>\r\n            </div>\r\n            <div *ngIf=\"performanceLoading\" 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=\"performancenoData\" class=\"row\">\r\n                <div class=\"col-lg-12 mt-20 mb-6\">\r\n                    <div class=\" mt-20 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 *ngIf=\"headerData?.client !=='452'\" class=\"nodata-sub\">There is no result for this\r\n                            {{footfallLabel | titlecase}} vs {{bounceLabel | titlecase}}\r\n                        </div>\r\n                        <div *ngIf=\"headerData?.client ==='452'\" class=\"nodata-sub\">There is no result for this\r\n                            Performance Matrix</div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div *ngIf=\"!performanceLoading && !performancenoData\" class=\"card-body\">\r\n\r\n                <div class=\"quadrant-chart\">\r\n                    <div class=\"axis-labels\">\r\n                        <!-- X Axis Label -->\r\n                        <div class=\"x-axis-label\">\r\n                            <span>{{bounceLabel | titlecase}} -></span>\r\n                        </div>\r\n                        <!-- Y Axis Label -->\r\n                        <div class=\"y-axis-label\">\r\n                            <span>{{footfallLabel | titlecase}} -></span>\r\n                        </div>\r\n                    </div>\r\n                    <!-- Top Left Quadrant -->\r\n                    <div class=\"quadrant\" id=\"q1\">\r\n                        <span *ngIf=\"headerData?.client !=='452'\" class=\"label1\">High <span\r\n                                *ngIf=\"footfallLabel==='Bounced Footfall'\">{{headerData?.client ==='452'?'Less than '+\r\n                                featureConfig?.bouncedLimit.value+ ' mins':'Bounce'}}</span><span\r\n                                *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, Low\r\n                            <span *ngIf=\"bounceLabel==='Bounced Footfall'\">{{headerData?.client ==='452'?'Less than '+\r\n                                featureConfig?.bouncedLimit.value+ ' mins':'Bounce'}}</span><span\r\n                                *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel | titlecase}}</span></span>\r\n                        <span *ngIf=\"headerData?.client ==='452'\" class=\"label1\"><span\r\n                                *ngIf=\"footfallLabel==='Footfall'\">High </span> <span\r\n                                *ngIf=\"footfallLabel==='Bounced Footfall'\">{{headerData?.client ==='452'?'Less than '+\r\n                                featureConfig?.bouncedLimit.value+ ' mins':'Bounce'}}</span><span\r\n                                *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, <span\r\n                                *ngIf=\"bounceLabel==='Footfall'\">Low </span> <span\r\n                                *ngIf=\"bounceLabel==='Bounced Footfall'\">{{headerData?.client ==='452'?'Less than '+\r\n                                featureConfig?.bouncedLimit.value+ ' mins':'Bounce'}}</span><span\r\n                                *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel | titlecase}}</span></span>\r\n                    </div>\r\n\r\n                    <!-- Top Right Quadrant -->\r\n                    <div class=\"quadrant\" id=\"q2\">\r\n                        <span *ngIf=\"headerData?.client !=='452'\" class=\"label1\">High <span\r\n                                *ngIf=\"footfallLabel==='Bounced Footfall'\">{{headerData?.client ==='452'?'Less than '+\r\n                                featureConfig?.bouncedLimit.value+ ' mins':'Bounce'}}</span><span\r\n                                *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, High\r\n                            <span *ngIf=\"bounceLabel==='Bounced Footfall'\">{{headerData?.client ==='452'?'Less than\r\n                                '+featureConfig?.bouncedLimit.value+ ' mins':'Bounce'}}</span><span\r\n                                *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel | titlecase}}</span></span>\r\n                        <span *ngIf=\"headerData?.client ==='452'\" class=\"label1\"><span\r\n                                *ngIf=\"footfallLabel==='Footfall'\">High </span> <span\r\n                                *ngIf=\"footfallLabel==='Bounced Footfall'\">{{headerData?.client ==='452'?'Less than '+\r\n                                featureConfig?.bouncedLimit.value+ ' mins':'Bounce'}}</span><span\r\n                                *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, <span\r\n                                *ngIf=\"bounceLabel==='Footfall'\">High </span> <span\r\n                                *ngIf=\"bounceLabel==='Bounced Footfall'\">{{headerData?.client ==='452'?'Less than\r\n                                '+featureConfig?.bouncedLimit.value+ ' mins':'Bounce'}}</span><span\r\n                                *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel | titlecase}}</span></span>\r\n                    </div>\r\n\r\n                    <!-- Bottom Left Quadrant -->\r\n                    <div class=\"quadrant\" id=\"q3\">\r\n                        <span *ngIf=\"headerData?.client !=='452'\" class=\"label1\">Low <span\r\n                                *ngIf=\"footfallLabel==='Bounced Footfall'\">{{headerData?.client ==='452'?'Less than '+\r\n                                featureConfig?.bouncedLimit.value+ ' mins':'Bounce'}}</span><span\r\n                                *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, Low\r\n                            <span *ngIf=\"bounceLabel==='Bounced Footfall'\">{{headerData?.client ==='452'?'Less than '+\r\n                                featureConfig?.bouncedLimit.value+ ' mins':'Bounce'}}</span><span\r\n                                *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel | titlecase}}</span></span>\r\n                        <span *ngIf=\"headerData?.client ==='452'\" class=\"label1\"><span\r\n                                *ngIf=\"footfallLabel==='Footfall'\">Low </span> <span\r\n                                *ngIf=\"footfallLabel==='Bounced Footfall'\">{{headerData?.client ==='452'?'Less than '+\r\n                                featureConfig?.bouncedLimit.value+ ' mins':'Bounce'}}</span><span\r\n                                *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, <span\r\n                                *ngIf=\"bounceLabel==='Footfall'\">Low </span> <span\r\n                                *ngIf=\"bounceLabel==='Bounced Footfall'\">{{headerData?.client ==='452'?'Less than '+\r\n                                featureConfig?.bouncedLimit.value+ ' mins':'Bounce'}}</span><span\r\n                                *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel | titlecase}}</span></span>\r\n\r\n                    </div>\r\n\r\n                    <!-- Bottom Right Quadrant -->\r\n                    <div class=\"quadrant\" id=\"q4\">\r\n                        <span *ngIf=\"headerData?.client !=='452'\" class=\"label1\">Low <span\r\n                                *ngIf=\"footfallLabel==='Bounced Footfall'\">{{headerData?.client ==='452'?'Less than '+\r\n                                featureConfig?.bouncedLimit.value+ ' mins':'Bounce'}}</span><span\r\n                                *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, High\r\n                            <span *ngIf=\"bounceLabel==='Bounced Footfall'\">{{headerData?.client ==='452'?'Less than '+\r\n                                featureConfig?.bouncedLimit.value+ ' mins':'Bounce'}}</span><span\r\n                                *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel| titlecase}}</span></span>\r\n                        <span *ngIf=\"headerData?.client ==='452'\" class=\"label1\"><span\r\n                                *ngIf=\"footfallLabel==='Footfall'\">Low </span> <span\r\n                                *ngIf=\"footfallLabel==='Bounced Footfall'\">{{headerData?.client ==='452'?'Less than '+\r\n                                featureConfig?.bouncedLimit.value+ ' mins':'Bounce'}}</span><span\r\n                                *ngIf=\"footfallLabel !=='Bounced Footfall'\">{{footfallLabel | titlecase}}</span>, <span\r\n                                *ngIf=\"bounceLabel==='Footfall'\">High </span> <span\r\n                                *ngIf=\"bounceLabel==='Bounced Footfall'\">{{headerData?.client ==='452'?'Less than '+\r\n                                featureConfig?.bouncedLimit.value+ ' mins':'Bounce'}}</span><span\r\n                                *ngIf=\"bounceLabel !=='Bounced Footfall'\">{{bounceLabel| titlecase}}</span></span>\r\n                    </div>\r\n\r\n                    <div *ngFor=\"let point of points\" class=\"point\"\r\n                        [ngStyle]=\"{'top': point.top + '%', 'left': point.left + '%'}\">\r\n                        <div class=\"text-center\" (click)=\"toggleTooltip(point.name)\">\r\n                            <div class=\"dot\"></div>\r\n                            <!-- Clickable label that toggles the tooltip -->\r\n                            <div class=\"label mt-4\" style=\"font-size: 10px !important;\" [attr.title]=\"point.name\">\r\n                                <!-- {{ point.name }} -->\r\n                                {{ point.name.length > 7 ? (point.name | slice:0:7) + '..' : point.name }}\r\n                            </div>\r\n                        </div>\r\n                        <!-- Custom Tooltip Popup -->\r\n                        <div class=\"tooltip-popup z-5\" *ngIf=\"activeTooltip === point.name\">\r\n                            <div class=\"tooltip-content\">\r\n                                <h3 class=\"text-white cursor-pointer\" (click)=\"storeView(point.storeId)\">{{ point.name\r\n                                    }}</h3>\r\n                                <p>Avg {{footfallLabel | titlecase}}: {{ point.avgFootfall }}</p>\r\n                                <p class=\"my-2\">Open Time: <strong>{{ point.openTime }}</strong></p>\r\n                                <p>Close Time: <strong>{{ point.closeTime }}</strong></p>\r\n                            </div>\r\n                            <div class=\"tooltip-arrow\"></div>\r\n                        </div>\r\n                    </div>\r\n                    <!-- Add more points here -->\r\n                </div>\r\n\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div *ngIf=\"storeIdarray?.length > 1\" class=\"col-md-6 mt-3\">\r\n        <div class=\"card\">\r\n            <div class=\"card-header px-5 border-0 pt-3\">\r\n                <h3 class=\"card-title align-items-start flex-column\">\r\n                    <span class=\"title-text mb-2\">Zone Dwell Time Split\r\n                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"\r\n                            placement=\"right\"\r\n                            ngbTooltip=\"Overall zone concentration and average dwell time across selected stores\">\r\n                            <g clip-path=\"url(#clip0_1432_80035)\">\r\n                                <path\r\n                                    d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\"\r\n                                    stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                            </g>\r\n                            <defs>\r\n                                <clipPath id=\"clip0_1432_80035\">\r\n                                    <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n                                </clipPath>\r\n                            </defs>\r\n                        </svg>\r\n                    </span>\r\n                    <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} –\r\n                        {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n                </h3>\r\n                <div class=\"card-toolbar\">\r\n                    <button type=\"button\" (click)=\"goToZone()\"\r\n                        class=\"btn btn-light-primary1 rounded-3 text-nowrap border-val\">\r\n                        <span class=\"ms-2\">Go to Zones</span>\r\n                    </button>\r\n\r\n                </div>\r\n            </div>\r\n            <div calss=\"card-body\">\r\n                <div *ngIf=\"!zoneLoading && !zoneNoData\" class=\"image-container position-relative\">\r\n                    <img src=\"assets/tango/Images/zone-img.svg\" alt=\"Store Layout\"\r\n                        class=\"px-5 img-src my-3 background-image\" />\r\n                    <!-- <img *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName ==='Overall Store'\" src=\"assets/tango/Images/zone-img1.svg\" alt=\"Store Layout\" class=\"px-5 img-src my-3 background-image\" /> -->\r\n                    <!-- <div class=\"centered\">Centered</div> -->\r\n                    <!-- <div class=\"overlay-content\" *ngFor=\"let point of zoneDwellTimeSplitData\"> -->\r\n                    <div *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName !=='Overall Store'\" class=\"top-zone\">\r\n                        <div class=\"text-center text-zone\">{{zoneDwellTimeSplitData[0]?.zoneName ?\r\n                            zoneDwellTimeSplitData[0]?.zoneName :'Front'}}</div>\r\n                        <span class=\"text-zone-val\"> Conc: {{ zoneDwellTimeSplitData[0]?.concentrationRate !==null ?\r\n                            zoneDwellTimeSplitData[0]?.concentrationRate:'--' }}% </span>\r\n                        <span class=\"text-zone-val\">Dwell time: {{ zoneDwellTimeSplitData[0]?.dwellTime !==null ?\r\n                            zoneDwellTimeSplitData[0]?.dwellTime :'--' }} Mins</span>\r\n                    </div>\r\n                    <div *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName ==='Overall Store'\" class=\"centered-zone\">\r\n                        <div class=\"text-center text-zone\">{{zoneDwellTimeSplitData[0]?.zoneName ?\r\n                            zoneDwellTimeSplitData[0]?.zoneName :'Front'}}</div>\r\n                        <span class=\"text-zone-val\"> Conc: {{ zoneDwellTimeSplitData[0]?.concentrationRate !==null ?\r\n                            zoneDwellTimeSplitData[0]?.concentrationRate:'--' }}% </span>\r\n                        <span class=\"text-zone-val\">Dwell time: {{ zoneDwellTimeSplitData[0]?.dwellTime !==null ?\r\n                            zoneDwellTimeSplitData[0]?.dwellTime:'--' }} Mins</span>\r\n                    </div>\r\n                    <div *ngIf=\"zoneDwellTimeSplitData[0]?.zoneName !=='Overall Store'\" class=\"bottom-zone \">\r\n                        <div class=\"text-center text-zone\">{{zoneDwellTimeSplitData[1]?.zoneName ?\r\n                            zoneDwellTimeSplitData[2]?.zoneName : 'Back'}}</div>\r\n                        <span class=\"text-zone-val\"> Conc: {{ zoneDwellTimeSplitData[1]?.concentrationRate !==null ?\r\n                            zoneDwellTimeSplitData[2]?.concentrationRate:'--' }}% </span>\r\n                        <span class=\"text-zone-val\">Dwell time: {{ zoneDwellTimeSplitData[1]?.dwellTime !==null ?\r\n                            zoneDwellTimeSplitData[2]?.dwellTime:'--'}} Mins</span>\r\n                    </div>\r\n                    <!-- </div> -->\r\n                </div>\r\n                <div *ngIf=\"zoneLoading\" 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=\"zoneNoData\" class=\"row\">\r\n                    <div class=\"col-lg-12 mb-6 \">\r\n                        <div *ngIf=\"normalize\"\r\n                            class=\"mt-5 card-body right-bar py-20 mx-5 d-flex justify-content-center align-items-center flex-column\">\r\n                            <img class=\"img-nodata-zone\" src=\"./assets/tango/Icons/not-applicable.svg\" alt=\"\">\r\n                            <div class=\"nodata-title mt-3\">Data Not Found</div>\r\n                            <div class=\"nodata-sub\">Normalized data is not applicable</div>\r\n                        </div>\r\n                        <div *ngIf=\"!normalize\"\r\n                            class=\"mt-5 card-body right-bar py-20 mx-5 d-flex justify-content-center align-items-center flex-column\">\r\n                            <img class=\"img-nodata-zone\" 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 Zone Dwell Time Split</div>\r\n\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <!-- <img class=\"px-5 img-src mb-3\" src=\"assets/tango/Images/zone-img.svg\" alt=\"\"> -->\r\n            </div>\r\n            <div class=\"card-header px-5 border-0 pt-3\">\r\n                <h3 class=\"card-title align-items-start flex-column\">\r\n                    <span class=\"title-text mb-2\">Store Operations\r\n                        <span>\r\n                            <svg ngbTooltip=\"Avg store open & close time across the selected stores\" placement=\"top\"\r\n                                xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n                                fill=\"none\">\r\n                                <g clip-path=\"url(#clip0_1432_80035)\">\r\n                                    <path\r\n                                        d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\"\r\n                                        stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                        stroke-linejoin=\"round\" />\r\n                                </g>\r\n                                <defs>\r\n                                    <clipPath id=\"clip0_1432_80035\">\r\n                                        <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n                                    </clipPath>\r\n                                </defs>\r\n                            </svg>\r\n                        </span>\r\n                    </span>\r\n                    <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} –\r\n                        {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n                </h3>\r\n                <div class=\"card-toolbar\">\r\n                    <!-- <button  type=\"button\"\r\n            class=\"btn btn-light-primary1 rounded-3 text-nowrap border-val\">\r\n            <span class=\"ms-2\">Go to Trax</span>\r\n        </button> -->\r\n                </div>\r\n            </div>\r\n            <div class=\"card-body\">\r\n                <div class=\"row\">\r\n                    <div class=\"col-md-3 text-center mb-3\">\r\n                        <div class=\"row\">\r\n                            <div class=\"col-md-12\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n                                <div class=\"my-2\"> <span\r\n                                        class=\"left-card-count-title\">{{storeOperationData?.overall?.avgOpenTime\r\n                                        ?storeOperationData?.overall?.avgOpenTime:'--' }}</span></div>\r\n                                <div class=\"\"><span class=\"sub-header\">Avg. Open Time</span></div>\r\n                            </div>\r\n\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"col-md-6 mt-5 mb-3\">\r\n                        <svg width=\"326\" height=\"2\" viewBox=\"0 0 326 2\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                            <line y1=\"0.75\" x2=\"356\" y2=\"0.75\" stroke=\"#D0D5DD\" />\r\n                        </svg>\r\n                    </div>\r\n                    <div class=\"col-md-3 text-center mb-3\">\r\n                        <div class=\"row\">\r\n                            <div class=\"col-md-12\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n                                <div class=\"my-2\"> <span\r\n                                        class=\"left-card-count-title\">{{storeOperationData?.overall?.avgCloseTime\r\n                                        ?storeOperationData?.overall?.avgCloseTime:'--' }}</span></div>\r\n                                <div class=\"\"><span class=\"sub-header\">Avg. Close Time</span></div>\r\n                            </div>\r\n\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"col-md-6 mt-3\">\r\n                        <div class=\"card card-border h-100\">\r\n                            <div class=\"card-header ellipse1 border-0 px-3\">\r\n                                <h3 class=\"card-title align-items-start flex-column \">\r\n                                    <span class=\"left-card-count-header1 text-decoration-underline cursor-pointer\"\r\n                                        (click)=\"storeView(storeOperationData?.topLateOpen?.storeId)\">{{storeOperationData?.topLateOpen?.storeName\r\n                                        ?\r\n                                        storeOperationData?.topLateOpen?.storeName :'--'}}</span>\r\n                                    <span class=\"sub-header mt-2\">Top Late Open</span>\r\n                                </h3>\r\n                            </div>\r\n                            <div class=\"card-body p-0 h-75px mt-3 mx-3\">\r\n                                <div class=\"row\">\r\n                                    <div class=\"col-md-12\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n                                        <div class=\"my-1\"> <span\r\n                                                class=\"left-card-count-header1\">{{storeOperationData?.topLateOpen?.avgStoreOpenTime\r\n                                                ?storeOperationData?.topLateOpen?.avgStoreOpenTime:'--' }}</span></div>\r\n                                        <span class=\"sub-header\">Avg. Store Opening Time</span>\r\n                                    </div>\r\n\r\n                                </div>\r\n                            </div>\r\n\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"col-md-6 mt-3\">\r\n                        <div class=\"card card-border h-100\">\r\n                            <div class=\"card-header ellipse1 border-0 px-3\">\r\n                                <h3 class=\"card-title align-items-start flex-column \">\r\n                                    <span class=\"left-card-count-header1 text-decoration-underline cursor-pointer\"\r\n                                        (click)=\"storeView(storeOperationData?.topEarlyClose?.storeId)\">{{storeOperationData?.topEarlyClose?.storeName\r\n                                        ?\r\n                                        storeOperationData?.topEarlyClose?.storeName :'--'}}</span>\r\n                                    <span class=\"sub-header mt-2\">Top Early Close</span>\r\n                                </h3>\r\n                            </div>\r\n                            <div class=\"card-body p-0 h-75px mt-3 mx-3\">\r\n                                <div class=\"row\">\r\n                                    <div class=\"col-md-12\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n                                        <div class=\"my-1\"> <span\r\n                                                class=\"left-card-count-header1\">{{storeOperationData?.topEarlyClose?.avgStoreCloseTime\r\n                                                ?storeOperationData?.topEarlyClose?.avgStoreCloseTime:'--' }}</span>\r\n                                        </div>\r\n                                        <span class=\"sub-header\">Avg. Store Closing Time</span>\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 *ngIf=\"!(storeIdarray?.length === 1 && (storeIdarray[0] === '459-2' || storeIdarray[0] === '459-4'))\"\r\n        class=\"col-md-12 mt-3\">\r\n        <div class=\"card mb-5\">\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\">Summary Table</span>\r\n                    <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} –\r\n                        {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n                </h3>\r\n                <div class=\"card-toolbar\">\r\n                    <div class=\"d-flex\">\r\n                        <div class=\"d-flex align-items-center position-relative my-1\">\r\n                            <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n                                    fill=\"none\">\r\n                                    <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n                                        transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n                                    <path\r\n                                        d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n                                        fill=\"currentColor\"></path>\r\n                                </svg>\r\n                            </span>\r\n                            <input (change)=\"searchData()\" [(ngModel)]=\"searchValue\" type=\"text\"\r\n                                class=\"form-control ps-14 me-2\" autocomplete=\"off\" placeholder=\"Search\" />\r\n                            <!-- filter Start -->\r\n                            <!-- <lib-filters [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters> -->\r\n                            <!-- filter End -->\r\n                            <!-- Sum Button -->\r\n                            <section\r\n                                *ngIf=\"(storeIdarray?.length > 1 && headerData?.date?.startDate !== headerData?.date?.endDate) && !noData && !loading\">\r\n                                <button type=\"button\" (click)=\"onValueType('sum')\"\r\n                                    class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"\r\n                                    [ngClass]=\"{'btn-light btn-primary text-white': typeValue === 'sum'}\">\r\n                                    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n                                        fill=\"none\" [ngStyle]=\"{'stroke': typeValue === 'sum' ? '#FFFFFF' : '#344054'}\">\r\n                                        <path d=\"M9.99935 4.16675V15.8334M4.16602 10.0001H15.8327\" stroke-width=\"1.67\"\r\n                                            stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                    </svg>\r\n                                    <span class=\"ms-2\" [ngClass]=\"{'text-white': typeValue === 'sum'}\">Sum</span>\r\n                                </button>\r\n                            </section>\r\n\r\n                            <!-- Average Button -->\r\n                            <section *ngIf=\"(storeIdarray?.length > 1 && headerData?.date?.startDate !== headerData?.date?.endDate) \r\n && !noData && !loading\">\r\n                                <button type=\"button\" (click)=\"onValueType('average')\"\r\n                                    class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"\r\n                                    [ngClass]=\"{'btn-light btn-primary text-white': typeValue === 'average'}\">\r\n                                    <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n                                        xmlns=\"http://www.w3.org/2000/svg\"\r\n                                        [ngStyle]=\"{'stroke': typeValue === 'average' ? '#FFFFFF' : '#101828'}\">\r\n                                        <path\r\n                                            d=\"M17.5 17.5H8.33333C5.58333 17.5 4.20833 17.5 3.35417 16.6458C2.5 15.7917 2.5 14.4167 2.5 11.6667V2.5M5 10H5.0075M7.49917 10H7.50583M9.9975 10H10.0042M12.4958 10H12.5033M14.9942 10H15.0017M17.4925 10H17.5\"\r\n                                            stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                        <path\r\n                                            d=\"M5 5.83341C5.56083 4.89841 6.3225 4.16675 7.49417 4.16675C12.4467 4.16675 9.6625 14.1667 14.985 14.1667C16.165 14.1667 16.9217 13.4301 17.5 12.5001\"\r\n                                            stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                    </svg>\r\n                                    <span class=\"ms-2\"\r\n                                        [ngClass]=\"{'text-white': typeValue === 'average'}\">Average</span>\r\n                                </button>\r\n                            </section>\r\n\r\n                            <button *ngIf=\"!noData && !loading\" type=\"button\" (click)=\"exportXLSX()\"\r\n                                class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n                                    xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n                                    fill=\"none\">\r\n                                    <path\r\n                                        d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n                                        stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n                                        stroke-linejoin=\"round\" />\r\n                                </svg><span class=\"ms-2\">Export</span> </button>\r\n\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div *ngIf=\"loading\" class=\"row loader  d-flex justify-content-center align-items-center\">\r\n                <div class=\"shimmer\">\r\n                    <div class=\"wrapper\">\r\n                        <div class=\"stroke animate title\"></div>\r\n                        <div class=\"stroke animate link\"></div>\r\n                        <div class=\"stroke animate description\"></div>\r\n                    </div>\r\n                </div>\r\n                <div class=\"shimmer\">\r\n                    <div class=\"wrapper\">\r\n                        <div class=\"stroke animate title\"></div>\r\n                        <div class=\"stroke animate link\"></div>\r\n                        <div class=\"stroke animate description\"></div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div *ngIf=\"noData\" class=\"row\">\r\n                <div class=\"col-lg-12 mb-3\">\r\n                    <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n                        <img class=\"img-nodata-table\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n                        <div class=\"nodata-title\">No data found</div>\r\n                        <div class=\"nodata-sub\">There is no result for this summary table</div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div *ngIf=\"!noData && !loading\" calss=\"card-body\">\r\n                <div class=\"table-responsive\">\r\n                    <table class=\"w-100 table bottom-border text-nowrap\">\r\n                        <thead>\r\n                            <tr>\r\n                                <th class=\"cursor-pointer\">\r\n                                    <span class=\"cursor-pointer\" (click)=\"onSort('storeName')\">Store Name <svg\r\n                                            [ngClass]=\"sortedColumn === 'storeName' && sortDirection === 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>\r\n                                </th>\r\n                                <th class=\"cursor-pointer\">\r\n                                    <span class=\"cursor-pointer\" (click)=\"onSort('storeId')\">Store ID <svg\r\n                                            [ngClass]=\"sortedColumn === 'storeId' && sortDirection === 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 === 'storeId' ? '#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=\"storeCode\" class=\"cursor-pointer\">\r\n                                    <span class=\"cursor-pointer\" (click)=\"onSort('storeCode')\">Store Code <svg\r\n                                            [ngClass]=\"sortedColumn === 'storeCode' && sortDirection === 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 === 'storeCode' ? '#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=\"storeIdarray?.length === 1\" class=\"cursor-pointer\">\r\n                                    <span class=\"cursor-pointer\" (click)=\"onSort('date')\">Date <svg\r\n                                            [ngClass]=\"sortedColumn === 'date' && sortDirection === 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 === '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 class=\"cursor-pointer\">\r\n                                    <span class=\"cursor-pointer\" (click)=\"onSort('footfallCount')\">Footfall <svg\r\n                                            [ngClass]=\"sortedColumn === 'footfallCount' && sortDirection === 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 === 'footfallCount' ? '#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=\"cursor-pointer\">\r\n                                    <span class=\"cursor-pointer\" (click)=\"onSort('bouncedCount')\">{{headerData?.client\r\n                                        ==='452'?'Less than '+ this.featureConfig?.bouncedLimit.value +'\r\n                                        mins':'Bounced'}} Footfall<svg\r\n                                            [ngClass]=\"sortedColumn === 'bouncedCount' && sortDirection === 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 === 'bouncedCount' ? '#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=\"cursor-pointer\">\r\n                                    <span class=\"cursor-pointer\" (click)=\"onSort('engagersCount')\">{{headerData?.client\r\n                                        ==='452'? 'More than '+ featureConfig?.bouncedLimit.value +' mins':'Engagers'}}\r\n                                        <svg [ngClass]=\"sortedColumn === 'engagersCount' && sortDirection === 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 === 'engagersCount' ? '#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=\"cursor-pointer\">\r\n                                    <span class=\"cursor-pointer\"\r\n                                        (click)=\"onSort('missedOpportunityCount')\">{{headerData?.client ==='452'?\r\n                                        featureConfig?.missedOpportunityFrom.value + ' - '\r\n                                        +featureConfig?.missedOpportunityTo.value +' mins':'Missed Opportunity'}}<svg\r\n                                            [ngClass]=\"sortedColumn === 'missedOpportunityCount' && sortDirection === 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 === 'missedOpportunityCount' ? '#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=\"headerData?.client !=='452'\" class=\"cursor-pointer\">\r\n                                    <span class=\"cursor-pointer\" (click)=\"onSort('potentialBuyersCount')\">Potential\r\n                                        Buyers <svg\r\n                                            [ngClass]=\"sortedColumn === 'potentialBuyersCount' && sortDirection === 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 === 'potentialBuyersCount' ? '#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=\"cursor-pointer\">\r\n                                    <span class=\"cursor-pointer\" (click)=\"onSort('conversionRate')\">{{headerData?.client\r\n                                        ==='452'?'More than '+ featureConfig?.conversion.value + ' mins':'Conversion'}}\r\n                                        Rate <svg\r\n                                            [ngClass]=\"sortedColumn === 'conversionRate' && sortDirection === 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 === 'conversionRate' ? '#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=\"cursor-pointer\">\r\n                                    <span class=\"cursor-pointer\" (click)=\"onSort('NOBCount')\">NOB Count <svg\r\n                                            [ngClass]=\"sortedColumn === 'NOBCount' && sortDirection === 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 === 'NOBCount' ? '#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=\"cursor-pointer\">\r\n                                    <span class=\"cursor-pointer\" (click)=\"onSort('avgDwellTime')\">Avg.Dwell Time <svg\r\n                                            [ngClass]=\"sortedColumn === 'avgDwellTime' && sortDirection === 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 === 'avgDwellTime' ? '#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=\"cursor-pointer\">\r\n                                    <span class=\"cursor-pointer\" (click)=\"onSort('avgInfraDowntime')\">Avg.Infra DownTime\r\n                                        <svg [ngClass]=\"sortedColumn === 'avgInfraDowntime' && sortDirection === 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 === 'avgInfraDowntime' ? '#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=\"cursor-pointer\">\r\n                                    <span class=\"cursor-pointer\" (click)=\"onSort('passerBy_count')\">Passer By<svg\r\n                                            [ngClass]=\"sortedColumn === 'passerBy_count' && sortDirection === 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 === 'passerBy_count' ? '#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=\"cursor-pointer\">\r\n                                    <span class=\"cursor-pointer\" (click)=\"onSort('below12')\">Below12 <svg\r\n                                            [ngClass]=\"sortedColumn === 'below12' && sortDirection === 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 === 'below12' ? '#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=\"cursor-pointer\">\r\n                                    <span class=\"cursor-pointer\" (click)=\"onSort('13-19')\">13-19 <svg\r\n                                            [ngClass]=\"sortedColumn === '13-19' && sortDirection === 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 === '13-19' ? '#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=\"cursor-pointer\">\r\n                                    <span class=\"cursor-pointer\" (click)=\"onSort('20-30')\">20-30 <svg\r\n                                            [ngClass]=\"sortedColumn === '20-30' && sortDirection === 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 === '20-30' ? '#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=\"headerData?.client ==='193'\" class=\"cursor-pointer\">\r\n                                    <span class=\"cursor-pointer\" (click)=\"onSort('31-40')\">31-40 <svg\r\n                                            [ngClass]=\"sortedColumn === '31-40' && sortDirection === 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 === '31-40' ? '#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=\"headerData?.client ==='193'\" class=\"cursor-pointer\">\r\n                                    <span class=\"cursor-pointer\" (click)=\"onSort('41-50')\">41-50 <svg\r\n                                            [ngClass]=\"sortedColumn === '41-50' && sortDirection === 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 === '41-50' ? '#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=\"headerData?.client ==='193'\" class=\"cursor-pointer\">\r\n                                    <span class=\"cursor-pointer\" (click)=\"onSort('51-60')\">51-60 <svg\r\n                                            [ngClass]=\"sortedColumn === '51-60' && sortDirection === 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 === '51-60' ? '#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=\"headerData?.client !=='193'\" class=\"cursor-pointer\">\r\n                                    <span class=\"cursor-pointer\" (click)=\"onSort('31-45')\">31-45 <svg\r\n                                            [ngClass]=\"sortedColumn === '31-45' && sortDirection === 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 === '31-45' ? '#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=\"headerData?.client !=='193'\" class=\"cursor-pointer\">\r\n                                    <span class=\"cursor-pointer\" (click)=\"onSort('46-59')\">46-59 <svg\r\n                                            [ngClass]=\"sortedColumn === '46-59' && sortDirection === 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 === '46-59' ? '#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=\"cursor-pointer\">\r\n                                    <span class=\"cursor-pointer\" (click)=\"onSort('60 above')\">60 above <svg\r\n                                            [ngClass]=\"sortedColumn === '60 above' && sortDirection === 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 === '60 above' ? '#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=\"cursor-pointer\">\r\n                                    <span class=\"cursor-pointer\" (click)=\"onSort('male')\">Male <svg\r\n                                            [ngClass]=\"sortedColumn === 'male' && sortDirection === 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 === 'male' ? '#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=\"cursor-pointer\">\r\n                                    <span class=\"cursor-pointer\" (click)=\"onSort('female')\">Female <svg\r\n                                            [ngClass]=\"sortedColumn === 'female' && sortDirection === 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 === 'female' ? '#00A3FF' : '#667085'\"\r\n                                                stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                        </svg></span>\r\n                                </th>\r\n                            </tr>\r\n                        </thead>\r\n                        <tbody>\r\n                            <tr *ngFor=\"let obj of getSummaryTableData;let i=index;\">\r\n                                <!-- (click)=\"storeView(obj)\" -->\r\n                                <td class=\"text-primary text-capitalize text-decoration-underline cursor-pointer\"\r\n                                    (click)=\"storeView(obj.storeId)\">{{obj.storeName}}</td>\r\n                                <td>{{obj.storeId}}</td>\r\n                                <td *ngIf=\"storeCode\">\r\n                                    {{ obj.storeCode !== null && obj.storeCode !== '' ? obj.storeCode : '-' }}\r\n                                </td>\r\n                                <td *ngIf=\"obj?.date\">{{obj?.date | date:'MMM dd, yyyy'}}</td>\r\n                                <td>{{obj.footfallCount}}</td>\r\n                                <td>{{obj.bouncedCount}}</td>\r\n                                <td>{{obj.engagersCount}}</td>\r\n                                <td>{{obj.missedOpportunityCount}}</td>\r\n                                <td *ngIf=\"headerData?.client !=='452'\">{{obj.potentialBuyersCount}}</td>\r\n                                <td>{{obj.conversionRate}}%</td>\r\n                                <td>{{obj.NOBCount}}</td>\r\n                                <td>{{obj.avgDwellTime}}</td>\r\n                                <td>{{obj.avgInfraDowntime}}</td>\r\n                                <td>{{obj.passerBy_count}}</td>\r\n                                <td>{{obj.below12}}</td>\r\n                                <td>{{obj['13-19']}}</td>\r\n                                <td>{{obj['20-30']}}</td>\r\n                                <td *ngIf=\"headerData?.client ==='193'\">{{obj['31-40']}}</td>\r\n                                <td *ngIf=\"headerData?.client ==='193'\">{{obj[\"41-50\"]}}</td>\r\n                                <td *ngIf=\"headerData?.client ==='193'\">{{obj[\"51-60\"]}}</td>\r\n                                <td *ngIf=\"headerData?.client !=='193'\">{{obj['31-45']}}</td>\r\n                                <td *ngIf=\"headerData?.client !=='193'\">{{obj[\"46-59\"]}}</td>\r\n                                <td>{{obj[\"60 above\"]}}</td>\r\n                                <td>{{obj.male}}</td>\r\n                                <td>{{obj.female}}</td>\r\n                            </tr>\r\n                        </tbody>\r\n                    </table>\r\n                </div>\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>\r\n    </div>\r\n\r\n</div>\r\n\r\n<div *ngIf=\"showReportProcessingCard && !dataProcessedLoading\" class=\"row px-3\">\r\n    <div class=\"card dataprocessed pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n        <img class=\"dataprocessedgif\" src=\"./assets/tango/Icons/data_analyse_gif.gif\" alt=\"\">\r\n        <div class=\"dataprocessed-title\">Data being Processed</div>\r\n        <div class=\"dataprocessed-sub\">Data for the selected date {{ yesterdayDate }}, is currently being processed and\r\n            will be available shortly.</div>\r\n        <div class=\"dataprocessed-sub\"> If you wish to view data for other dates, Remove {{ yesterdayDate }} from your\r\n            selection or choose a different date range.</div>\r\n    </div>\r\n\r\n</div>\r\n<div *ngIf=\"dataProcessedLoading\" 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=\"!showReportProcessingCard && !dataProcessedLoading && isFootfallView\" class=\"row\">\r\n    <div *ngIf=\"(gs.userAccess | async)?.userType === 'tango' || clientData?.featureConfigs?.isNormalized\"\r\n        class=\"col-md-12 text-end\">\r\n        <div class=\"form-check form-switch my-2\" style=\"float: right !important;\">\r\n            <input class=\"form-check-input cursor-pointer\" type=\"checkbox\" id=\"flexSwitchCheckDefault\"\r\n                [checked]=\"normalize\" (change)=\"toggleNormalizeffonly($event)\"><span class=\"normalize-text\">View\r\n                Normalized\r\n                Data</span>\r\n        </div>\r\n    </div>\r\n    <div class=\"row gx-3\" *ngIf=\"storeIdarray?.length>1\">\r\n        <div class=\"col-md-2\">\r\n            <div class=\"card card-border h-100\">\r\n                <div class=\"row h-100 position-relative\">\r\n                    <div class=\"col-md-12\">\r\n                        <div class=\"px-0\">\r\n                            <div class=\"card-header ellipse1 border-0 px-3 \">\r\n                                <div class=\"sm-zoom-80 w-100 d-flex justify-content-between\">\r\n                                    <!-- -->\r\n                                    <h3 class=\"card-title align-items-start flex-column\" [ngbTooltip]=\"footfallTooltip\"\r\n                                        placement=\"right\">\r\n                                        <!-- Display footfall count or '--' if not available -->\r\n                                        <span class=\"card-label header\">{{ getFootfallCardData?.card?.footfall?.count ?\r\n                                            getFootfallCardData?.card?.footfall?.count.toLocaleString('en-IN') : '--'\r\n                                            }}</span>\r\n                                        <span class=\"sub-header\">{{footfallName}}</span>\r\n                                    </h3>\r\n    \r\n                                    <!-- Switch toggle -->\r\n                                    <div class=\"card-toolbar\">\r\n                                        <div class=\"col-md-12 text-end\">\r\n                                            <div class=\"form-check form-switch text-end\">\r\n                                                <input class=\"form-check-input mt-1 cursor-pointer\" type=\"checkbox\"\r\n                                                    id=\"flexSwitchCheckDefault\" [(ngModel)]=\"isAverageFootfall\"\r\n                                                    (change)=\"toggleAverageFootfall($event)\" [disabled]=\"isDisabled\">\r\n                                            </div>\r\n                                            <div *ngIf=\"isAverageFootfall\" class=\"form-check-label mt-5\">Average</div>\r\n                                            <div *ngIf=\"!isAverageFootfall\" class=\"form-check-label mt-5\">Actual</div>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <ng-template #footfallTooltip>\r\n                                <div class=\"tooltip-content\">\r\n                                    <h5 class=\"tooltip-title text-start\">Footfall</h5>\r\n                                    <p class=\"text-start\">Total unique walk-ins into the selected stores.</p>\r\n                                    <h4 class=\"text-start\">{{getCardData?.footfall?.count}}</h4>\r\n                                </div>\r\n                            </ng-template>\r\n                            <div class=\"card-body p-0\">\r\n                                <section>\r\n                                    <div class=\"row\">\r\n                                        <div class=\"col-md-9 pe-0\">\r\n                                            <div [class.d-none]=\"!footfallloading\" class=\"text-center d-flex justify-content-center align-items-center\" style=\"height:100px\">\r\n                                                <img class=\"loader-img\" src=\"assets/tango/layout/Loader.gif\">\r\n                                            </div>\r\n                                            <div *ngIf=\"footfallNodata\" class=\"row\">\r\n\r\n                                                <div\r\n                                                    class=\"card-body pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n                                                    <img class=\"footimg-nodata1\" src=\"./assets/tango/Icons/Nodata1.svg\"\r\n                                                        alt=\"\">\r\n                                                    <div class=\"nodata-title1\">No data found</div>\r\n                                                    <!-- <div class=\"nodata-sub\">There is no result for this conversion funnel</div> -->\r\n                                                </div>\r\n\r\n                                            </div>\r\n                                            <div [class.d-none]=\"footfallNodata || footfallloading\" class=\"text-center\" id=\"Footfall\"></div>\r\n                                        </div>\r\n                                        <div class=\"col-md-3 mt-3 avgweekly\">\r\n                                            <div class=\"mt-1 cursor-pointer fs-5\"\r\n                                                [ngClass]=\"dateType ==='daily' ? 'text-primary' :''\"\r\n                                                (click)=\"dateValue('daily')\">1D</div>\r\n                                            <div class=\"mt-1 cursor-pointer fs-5\"\r\n                                                [ngClass]=\"dateType ==='weekly' ? 'text-primary' :''\"\r\n                                                (click)=\"dateValue('weekly')\">1W</div>\r\n                                            <div class=\"mt-1 cursor-pointer fs-5\"\r\n                                                [ngClass]=\"dateType ==='monthly' ? 'text-primary' :''\"\r\n                                                (click)=\"dateValue('monthly')\">1M</div>\r\n                                        </div>\r\n                                    </div>\r\n                                </section>\r\n                            </div>\r\n                            <div class=\"card-footer ms-2 p-0\">\r\n                                <div class=\"col-md-12 mt-3\">\r\n                                    <span class=\"mt-2\">\r\n                                        <svg *ngIf=\"!getFootfallCardData?.data?.footfall?.PreviousVariation\"\r\n                                            xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n                                            viewBox=\"0 0 18 18\" fill=\"none\">\r\n                                            <g clip-path=\"url(#clip0_2328_4654)\">\r\n                                                <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n                                                    stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n                                                    stroke-linejoin=\"round\" />\r\n                                            </g>\r\n                                            <defs>\r\n                                                <clipPath id=\"clip0_2328_4654\">\r\n                                                    <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n                                                </clipPath>\r\n                                            </defs>\r\n                                        </svg>\r\n                                        <svg *ngIf=\"getFootfallCardData?.data?.footfall?.PreviousVariation\"\r\n                                            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\"\r\n                                                    stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n                                                    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                                    </span>\r\n                                    <span *ngIf=\"getFootfallCardData?.data?.footfall?.PreviousData ===0\"\r\n                                        class=\"percent-value ms-2\">0%</span>\r\n                                    <span class=\"mt-2 ms-2\"><span class=\"percent-value\"\r\n                                            *ngIf=\"getFootfallCardData?.data?.footfall?.PreviousData !==0\">{{getFootfallCardData?.data?.footfall?.PreviousData\r\n                                            ? getFootfallCardData?.data?.footfall?.PreviousData:'--'}}%</span><span\r\n                                            class=\"week-font\"> vs Previous <span\r\n                                                *ngIf=\"dateType ==='daily'\">day</span><span\r\n                                                *ngIf=\"dateType ==='weekly'\">week</span> <span\r\n                                                *ngIf=\"dateType ==='monthly'\">month</span> </span>\r\n\r\n                                    </span>\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-md-3\">\r\n            <div class=\"card card-border h-100\">\r\n                <div class=\"card-body p-0\">\r\n                    <div class=\"card-header ellipse1 border-0 px-3\">\r\n                        <!-- -->\r\n                        <h3 class=\"card-title align-items-start flex-column\" [ngbTooltip]=\"downTooltip\"\r\n                            placement=\"right\">\r\n                            <span class=\"sub-headernew\">Avg Downtime</span>\r\n                        </h3>\r\n                    </div>\r\n                    <div class=\"d-flex align-items-center me-2\">\r\n\r\n                        <div class=\"mx-3 mt-3\">\r\n                            <div class=\"my-1 card-label header\"\r\n                                *ngIf=\"getMissedOpportunityData?.card?.avgDownTime === 0\">0 mins</div>\r\n                            <div class=\"my-1 \" *ngIf=\"getMissedOpportunityData?.card?.avgDownTime !== 0\"><span\r\n                                    class=\"card-label header\">{{getMissedOpportunityData?.card?.avgDownTime ?\r\n                                    getMissedOpportunityData?.card?.avgDownTime :'--'}} mins </span><span class=\"mt-2\">\r\n                                    <svg *ngIf=\"!getMissedOpportunityData?.data?.max_downtime_store?.PreviousVariation\"\r\n                                        xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\"\r\n                                        fill=\"none\">\r\n                                        <g clip-path=\"url(#clip0_2328_4654)\">\r\n                                            <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n                                                stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n                                                stroke-linejoin=\"round\" />\r\n                                        </g>\r\n                                        <defs>\r\n                                            <clipPath id=\"clip0_2328_4654\">\r\n                                                <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n                                            </clipPath>\r\n                                        </defs>\r\n                                    </svg>\r\n                                    <svg *ngIf=\"getMissedOpportunityData?.data?.max_downtime_store?.PreviousVariation\"\r\n                                        xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\"\r\n                                        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\"\r\n                                                stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n                                                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                                </span>\r\n                                <span class=\"mt-2 ms-2\">\r\n                                    <span *ngIf=\"getMissedOpportunityData?.data?.max_downtime_store?.PreviousData ===0\"\r\n                                        class=\"percent-value\">0%</span>\r\n                                    <span *ngIf=\"getMissedOpportunityData?.data?.max_downtime_store?.PreviousData !==0\"\r\n                                        class=\"percent-value\">{{getMissedOpportunityData?.data?.max_downtime_store?.PreviousData\r\n                                        ?\r\n                                        getMissedOpportunityData?.data?.max_downtime_store?.PreviousData:'--'}}%</span>\r\n                                    <span class=\"week-font\"> vs Previous <span\r\n                                            *ngIf=\"dateType ==='daily'\">day</span><span\r\n                                            *ngIf=\"dateType ==='weekly'\">week</span> <span\r\n                                            *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n                                </span>\r\n                            </div>\r\n                            <!-- <div class=\"sub-header\">Avg Down Time </div> -->\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"mx-3 mt-9\">\r\n                         <div  *ngIf=\"getMissedOpportunityData?.card?.avgDownTime && getMissedOpportunityData?.card?.avgDownTime !== 0 \" class=\"card-label header text-decoration-underline cursor-pointer\"\r\n                            (click)=\"storeView(getMissedOpportunityData?.data?.max_downtime_store?.store_id)\">\r\n                            {{getMissedOpportunityData?.data?.max_downtime_store?.store_name}}</div>\r\n                            <div  *ngIf=\"!getMissedOpportunityData?.card?.avgDownTime || getMissedOpportunityData?.card?.avgDownTime === 0\" class=\"header\">Not Available</div>\r\n                        <div class=\"sub-header\">Highest Downtime Store</div>\r\n                    </div>\r\n                </div>\r\n                <ng-template #downTooltip>\r\n                    <div class=\"tooltip-content\">\r\n                        <h5 class=\"tooltip-title text-start\">Avg Down Time</h5>\r\n                        <p class=\"text-start\">Average camera & network downtime for the selected stores.</p>\r\n                    </div>\r\n                </ng-template>\r\n            </div>\r\n        </div>\r\n        <div class=\"col-md-7\">\r\n            <div class=\"card card-border h-100\">\r\n                <div class=\"row gx-1\">\r\n                    <div class=\"col-md-6\">\r\n                        <div class=\"card-body p-0 d-flex flex-column h-100\">\r\n                            <div class=\"d-flex align-items-center gap-3 me-3\">\r\n                                <div class=\"card-header ellipse1 border-0 px-3\">\r\n                                    <h3 class=\"card-title align-items-start flex-column\">\r\n                                        <span class=\"sub-headernew\">Store Operations <span>\r\n                                                <svg ngbTooltip=\"Avg store open & close time across the selected stores\"\r\n                                                    placement=\"top\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n                                                    height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n                                                    <g clip-path=\"url(#clip0_1432_80035)\">\r\n                                                        <path\r\n                                                            d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\"\r\n                                                            stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                            stroke-linejoin=\"round\" />\r\n                                                    </g>\r\n                                                    <defs>\r\n                                                        <clipPath id=\"clip0_1432_80035\">\r\n                                                            <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n                                                        </clipPath>\r\n                                                    </defs>\r\n                                                </svg>\r\n                                            </span></span>\r\n                                    </h3>\r\n                                </div>\r\n\r\n                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"6\" height=\"10\" viewBox=\"0 0 6 10\"\r\n                                    fill=\"none\">\r\n                                    <path d=\"M1 9L5 5L1 1\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                        stroke-linejoin=\"round\" />\r\n                                </svg>\r\n                            </div>\r\n                            <div class=\"d-flex align-items-center justify-content-around my-auto\">\r\n                                <!-- Avg Open Time -->\r\n                                <div class=\"col-md-5 text-center mb-3\">\r\n                                    <div class=\"row\">\r\n                                        <div class=\"col-md-12\">\r\n                                            <div class=\"my-2\">\r\n                                                <span class=\"left-card-count-title\">\r\n                                                    {{storeOperationData?.overall?.avgOpenTime\r\n                                                    ? storeOperationData?.overall?.avgOpenTime\r\n                                                    : '--'}}\r\n                                                </span>\r\n                                            </div>\r\n                                            <div>\r\n                                                <span class=\"sub-header\">Avg. Open Time</span>\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n\r\n                                <!-- Divider -->\r\n                                <!--<div class=\"col-md-2 mt-5 mb-3\">\r\n                                    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"1\" viewBox=\"0 0 20 1\"\r\n                                        fill=\"none\">\r\n                                        <line y1=\"0.5\" x2=\"20\" y2=\"0.5\" stroke=\"#D0D5DD\" />\r\n                                    </svg>\r\n                                </div>-->\r\n\r\n                                <!-- Avg Close Time -->\r\n                                <div class=\"col-md-5 text-center mb-3\">\r\n                                    <div class=\"row\">\r\n                                        <div class=\"col-md-12\">\r\n                                            <div class=\"my-2\">\r\n                                                <span class=\"left-card-count-title\">\r\n                                                    {{storeOperationData?.overall?.avgCloseTime\r\n                                                    ? storeOperationData?.overall?.avgCloseTime\r\n                                                    : '--'}}\r\n                                                </span>\r\n                                            </div>\r\n                                            <div>\r\n                                                <span class=\"sub-header\">Avg. Close Time</span>\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n\r\n                            </div> <!-- d-flex -->\r\n\r\n                        </div> <!-- card-body -->\r\n\r\n\r\n\r\n                    </div> <!-- col-md-6 -->\r\n\r\n\r\n\r\n                    <div class=\"col-md-3 my-2\">\r\n                        <div class=\"card card-border h-100 \">\r\n                            <div class=\"card-body p-0\">\r\n                                <div class=\"card-header ellipse1 border-0 px-3\">\r\n                                    <!-- -->\r\n                                    <h3 class=\"card-title align-items-start flex-column cursor-pointer\"\r\n                                        (click)=\"storeView(storeOperationData?.topLateOpen?.storeId)\">\r\n                                        <span\r\n                                            class=\"card-labelnew header text-decoration-underline\">{{storeOperationData?.topLateOpen?.storeName\r\n                                            ?\r\n                                            storeOperationData?.topLateOpen?.storeName :'--'}}</span>\r\n                                        <div class=\"sub-header\">Top Late Open</div>\r\n                                    </h3>\r\n                                </div>\r\n                                <div class=\"row mt-6\">\r\n                                    <div class=\"col-md-12\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n                                        <div class=\"my-1\"> <span\r\n                                                class=\"left-card-count-header1\">{{storeOperationData?.topLateOpen?.avgStoreOpenTime\r\n                                                ?storeOperationData?.topLateOpen?.avgStoreOpenTime:'--' }}</span></div>\r\n                                        <span class=\"sub-header\">Avg. Store Opening Time</span>\r\n                                    </div>\r\n\r\n                                </div>\r\n                            </div>\r\n\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"col-md-3 my-2\">\r\n                        <div class=\"card card-border h-100\">\r\n                            <div class=\"card-body p-0\">\r\n                                <div class=\"card-header ellipse1 border-0 px-3\">\r\n                                    <!-- -->\r\n                                    <h3 class=\"card-title align-items-start flex-column cursor-pointer\"\r\n                                        (click)=\"storeView(storeOperationData?.topEarlyClose?.storeId)\">\r\n                                        <span\r\n                                            class=\"card-labelnew header text-decoration-underline\">{{storeOperationData?.topEarlyClose?.storeName\r\n                                            ?\r\n                                            storeOperationData?.topEarlyClose?.storeName :'--'}}</span>\r\n                                        <div class=\"sub-header\">Top Early Close</div>\r\n                                    </h3>\r\n                                </div>\r\n                                <div class=\"row mt-6\">\r\n                                    <div class=\"col-md-12\"><!--{{getCardData?.revenue?.value ?? '--'}} -->\r\n                                        <div class=\"my-1\"> <span\r\n                                                class=\"left-card-count-header1\">{{storeOperationData?.topEarlyClose?.avgStoreCloseTime\r\n                                                ?storeOperationData?.topEarlyClose?.avgStoreCloseTime:'--' }}</span>\r\n                                        </div>\r\n                                        <span class=\"sub-header\">Avg. Store Closing Time</span>\r\n                                    </div>\r\n\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n\r\n                </div> <!-- row -->\r\n            </div> <!-- card -->\r\n        </div>\r\n    </div>\r\n    <div class=\"row gx-3 mb-4\" style=\"height:300px\" *ngIf=\"storeIdarray?.length===1\">\r\n        <div class=\"col-md-4\">\r\n            <div class=\"card card-border\" style=\"height:300px\">\r\n                <div class=\"row position-relative\">\r\n                    <div class=\"col-md-12\">\r\n                        <div class=\"px-0\">\r\n                            <div class=\"card-header ellipse1 border-0 px-3\">\r\n                                <h3 class=\"card-title align-items-start flex-column\" [ngbTooltip]=\"footfallTooltip\"\r\n                                    placement=\"right\">\r\n                                    <span class=\"card-label header\">\r\n                                        {{ getFootfallCardData?.card?.footfall?.count\r\n                                        ? getFootfallCardData?.card?.footfall?.count.toLocaleString('en-IN')\r\n                                        : '--' }}\r\n                                    </span>\r\n                                    <span class=\"sub-header\">{{footfallName}}</span>\r\n                                </h3>\r\n\r\n                                <div class=\"card-toolbar\">\r\n                                    <div class=\"col-md-12 text-end\">\r\n                                        <div class=\"form-check form-switch text-end\">\r\n                                            <input class=\"form-check-input mt-1 cursor-pointer\" type=\"checkbox\"\r\n                                                [(ngModel)]=\"isAverageFootfall\" (change)=\"toggleAverageFootfall($event)\"\r\n                                                [disabled]=\"isDisabled\">\r\n                                        </div>\r\n\r\n                                        <div *ngIf=\"isAverageFootfall\" class=\"form-check-label mt-5\">Average</div>\r\n                                        <div *ngIf=\"!isAverageFootfall\" class=\"form-check-label mt-5\">Actual</div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n\r\n                            <!-- TOOLTIP -->\r\n                            <ng-template #footfallTooltip>\r\n                                <div class=\"tooltip-content\">\r\n                                    <h5 class=\"tooltip-title text-start\">Footfall</h5>\r\n                                    <p class=\"text-start\">Total unique walk-ins into the selected stores.</p>\r\n                                    <h4 class=\"text-start\">{{getCardData?.footfall?.count}}</h4>\r\n                                </div>\r\n                            </ng-template>\r\n\r\n\r\n                            <div class=\"card-body p-0\">\r\n                                <section>\r\n                                    <div class=\"row\">\r\n\r\n                                        <div class=\"col-md-10 pe-0\">\r\n                                            <div [class.d-none]=\"!footfallloading\" class=\"text-center d-flex justify-content-center align-items-center\" style=\"height:180px\">\r\n                                                <img class=\"loader-img\" src=\"assets/tango/layout/Loader.gif\">\r\n                                            </div>\r\n\r\n                                            <div *ngIf=\"footfallNodata\" class=\"row\">\r\n                                                <div\r\n                                                    class=\"card-body pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n                                                    <img class=\"footimg-nodata1\" src=\"./assets/tango/Icons/Nodata1.svg\">\r\n                                                    <div class=\"nodata-title1\">No data found</div>\r\n                                                </div>\r\n                                            </div>\r\n\r\n                                            <div [class.d-none]=\"footfallNodata || footfallloading\" class=\"text-center\" style=\"height:180px\"\r\n                                                id=\"Footfall\"></div>\r\n                                        </div>\r\n\r\n                                        <div class=\"col-md-2 mt-3 avgweekly\">\r\n                                            <div class=\"mt-1 cursor-pointer fs-5\"\r\n                                                [ngClass]=\"dateType ==='daily' ? 'text-primary' :''\"\r\n                                                (click)=\"dateValue('daily')\">1D</div>\r\n\r\n                                            <div class=\"mt-1 cursor-pointer fs-5\"\r\n                                                [ngClass]=\"dateType ==='weekly' ? 'text-primary' :''\"\r\n                                                (click)=\"dateValue('weekly')\">1W</div>\r\n\r\n                                            <div class=\"mt-1 cursor-pointer fs-5\"\r\n                                                [ngClass]=\"dateType ==='monthly' ? 'text-primary' :''\"\r\n                                                (click)=\"dateValue('monthly')\">1M</div>\r\n                                        </div>\r\n\r\n                                    </div>\r\n                                </section>\r\n                            </div>\r\n\r\n\r\n                            <div class=\"card-footer ms-2 p-0\">\r\n                                <div class=\"col-md-12 mt-3\">\r\n                                    <span class=\"mt-2\">\r\n                                        <svg *ngIf=\"!getFootfallCardData?.data?.footfall?.PreviousVariation\"\r\n                                            xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\"\r\n                                            viewBox=\"0 0 18 18\" fill=\"none\">\r\n                                            <g clip-path=\"url(#clip0_2328_4654)\">\r\n                                                <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n                                                    stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n                                                    stroke-linejoin=\"round\" />\r\n                                            </g>\r\n                                            <defs>\r\n                                                <clipPath id=\"clip0_2328_4654\">\r\n                                                    <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n                                                </clipPath>\r\n                                            </defs>\r\n                                        </svg>\r\n                                        <svg *ngIf=\"getFootfallCardData?.data?.footfall?.PreviousVariation\"\r\n                                            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\"\r\n                                                    stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n                                                    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                                    </span>\r\n                                    <span *ngIf=\"getFootfallCardData?.data?.footfall?.PreviousData ===0\"\r\n                                        class=\"percent-value ms-2\">0%</span>\r\n                                    <span class=\"mt-2 ms-2\"><span class=\"percent-value\"\r\n                                            *ngIf=\"getFootfallCardData?.data?.footfall?.PreviousData !==0\">{{getFootfallCardData?.data?.footfall?.PreviousData\r\n                                            ? getFootfallCardData?.data?.footfall?.PreviousData:'--'}}%</span><span\r\n                                            class=\"week-font\"> vs Previous <span\r\n                                                *ngIf=\"dateType ==='daily'\">day</span><span\r\n                                                *ngIf=\"dateType ==='weekly'\">week</span> <span\r\n                                                *ngIf=\"dateType ==='monthly'\">month</span> </span>\r\n\r\n                                    </span>\r\n                                </div>\r\n                            </div>\r\n\r\n                        </div> <!-- px-0 -->\r\n                    </div> <!-- col-md-12 -->\r\n                </div> <!-- row -->\r\n\r\n            </div>\r\n        </div>\r\n        <div class=\"col-md-3\">\r\n            <div class=\"card card-border h-100\" style=\"height:130px !important\">\r\n                <div class=\"card-body p-0\">\r\n                    <div class=\"card-header ellipse1 border-0 px-3\" style=\"min-height:54px\">\r\n                        <!-- -->\r\n                        <h3 class=\"card-title align-items-start flex-column\" [ngbTooltip]=\"downTooltip\"\r\n                            placement=\"right\">\r\n                            <span class=\"sub-headernew\">Avg Downtime</span>\r\n                        </h3>\r\n                    </div>\r\n                    <div class=\"d-flex align-items-center me-2\">\r\n\r\n                        <div class=\"mx-3 mt-3\">\r\n                            <div class=\"my-1 card-label header\"\r\n                                *ngIf=\"getMissedOpportunityData?.card?.avgDownTime === 0\">0 mins</div>\r\n                            <div class=\"my-1 \" *ngIf=\"getMissedOpportunityData?.card?.avgDownTime !== 0\"><span\r\n                                    class=\"card-label header\">{{getMissedOpportunityData?.card?.avgDownTime ?\r\n                                    getMissedOpportunityData?.card?.avgDownTime :'--'}} mins </span><span class=\"mt-2\">\r\n                                    <svg *ngIf=\"!getMissedOpportunityData?.data?.max_downtime_store?.PreviousVariation\"\r\n                                        xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\"\r\n                                        fill=\"none\">\r\n                                        <g clip-path=\"url(#clip0_2328_4654)\">\r\n                                            <path d=\"M11.5 9L6.75 4.25L4.25 6.75L0.5 3M11.5 9H8.5M11.5 9V6\"\r\n                                                stroke=\"#D92D20\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n                                                stroke-linejoin=\"round\" />\r\n                                        </g>\r\n                                        <defs>\r\n                                            <clipPath id=\"clip0_2328_4654\">\r\n                                                <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n                                            </clipPath>\r\n                                        </defs>\r\n                                    </svg>\r\n                                    <svg *ngIf=\"getMissedOpportunityData?.data?.max_downtime_store?.PreviousVariation\"\r\n                                        xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\"\r\n                                        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\"\r\n                                                stroke=\"#039855\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n                                                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                                </span>\r\n                                <span class=\"mt-2 ms-2\">\r\n                                    <span *ngIf=\"getMissedOpportunityData?.data?.max_downtime_store?.PreviousData ===0\"\r\n                                        class=\"percent-value\">0%</span>\r\n                                    <span *ngIf=\"getMissedOpportunityData?.data?.max_downtime_store?.PreviousData !==0\"\r\n                                        class=\"percent-value\">{{getMissedOpportunityData?.data?.max_downtime_store?.PreviousData\r\n                                        ?\r\n                                        getMissedOpportunityData?.data?.max_downtime_store?.PreviousData:'--'}}%</span>\r\n                                    <span class=\"week-font\"> vs Previous <span\r\n                                            *ngIf=\"dateType ==='daily'\">day</span><span\r\n                                            *ngIf=\"dateType ==='weekly'\">week</span> <span\r\n                                            *ngIf=\"dateType ==='monthly'\">month</span></span>\r\n\r\n                                </span>\r\n                            </div>\r\n                            <!-- <div class=\"sub-header\">Avg Down Time </div> -->\r\n                        </div>\r\n                    </div>\r\n\r\n                </div>\r\n                <ng-template #downTooltip>\r\n                    <div class=\"tooltip-content\">\r\n                        <h5 class=\"tooltip-title text-start\">Avg Down Time</h5>\r\n                        <p class=\"text-start\">Average camera & network downtime for the selected stores.</p>\r\n                    </div>\r\n                </ng-template>\r\n            </div>\r\n            <div class=\"card card-border h-100 mt-2\" style=\"height:164px !important\">\r\n                <div class=\"card-body p-0\">\r\n                    <div class=\"card-header ellipse1 border-0 px-3\" style=\"min-height:54px\">\r\n                        <!-- -->\r\n                        <h3 class=\"card-title align-items-start flex-column\">\r\n                            <span class=\"sub-headernew\">Store Operations <span>\r\n                                    <svg ngbTooltip=\"Avg store open & close time across the selected stores\"\r\n                                        placement=\"top\" 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_1432_80035)\">\r\n                                            <path\r\n                                                d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\"\r\n                                                stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                                stroke-linejoin=\"round\" />\r\n                                        </g>\r\n                                        <defs>\r\n                                            <clipPath id=\"clip0_1432_80035\">\r\n                                                <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n                                            </clipPath>\r\n                                        </defs>\r\n                                    </svg>\r\n                                </span></span>\r\n                        </h3>\r\n                    </div>\r\n                    <div class=\"d-flex align-items-center justify-content-around mt-7\">\r\n                        <!-- Avg Open Time -->\r\n                        <div class=\"text-center mb-3\">\r\n                            <div class=\"row\">\r\n                                <div class=\"col-md-12\">\r\n                                    <div class=\"my-2\">\r\n                                        <span class=\"left-card-count-title\">\r\n                                            {{storeOperationData?.overall?.avgOpenTime\r\n                                            ? storeOperationData?.overall?.avgOpenTime\r\n                                            : '--'}}\r\n                                        </span>\r\n                                    </div>\r\n                                    <div>\r\n                                        <span class=\"sub-header\"><span\r\n                                                *ngIf=\"this.headerData?.date?.startDate!==this.headerData?.date?.endDate\">Avg.\r\n                                            </span>Open Time</span>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n\r\n                        <!-- Divider -->\r\n                        <!--<div class=\"col-md-2 mt-5 mb-3\">\r\n                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"1\" viewBox=\"0 0 20 1\"\r\n                                fill=\"none\">\r\n                                <line y1=\"0.5\" x2=\"20\" y2=\"0.5\" stroke=\"#D0D5DD\" />\r\n                            </svg>\r\n                        </div>-->\r\n\r\n                        <!-- Avg Close Time -->\r\n                        <div class=\"text-center mb-3\">\r\n                            <div class=\"row\">\r\n                                <div class=\"col-md-12\">\r\n                                    <div class=\"my-2\">\r\n                                        <span class=\"left-card-count-title\">\r\n                                            {{storeOperationData?.overall?.avgCloseTime\r\n                                            ? storeOperationData?.overall?.avgCloseTime\r\n                                            : '--'}}\r\n                                        </span>\r\n                                    </div>\r\n                                    <div>\r\n                                        <span class=\"sub-header\"><span\r\n                                                *ngIf=\"this.headerData?.date?.startDate!==this.headerData?.date?.endDate\">Avg.\r\n                                            </span>Close Time</span>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n\r\n                    </div>\r\n\r\n                </div>\r\n                <ng-template #downTooltip>\r\n                    <div class=\"tooltip-content\">\r\n                        <h5 class=\"tooltip-title text-start\">Avg Down Time</h5>\r\n                        <p class=\"text-start\">Average camera & network downtime for the selected stores.</p>\r\n                    </div>\r\n                </ng-template>\r\n            </div>\r\n        </div>\r\n        <div class=\"col-md-5 \">\r\n            <div class=\"card pb-2 \" style=\"height:300px; padding:8px\">\r\n                <div class=\"card-header border-0 p-0 sm-zoom-80 mb-2 d-flex align-items-center\">\r\n                    <h3 class=\"card-title align-items-start flex-column\">\r\n                        <span class=\"title-text\">Recap Video\r\n                            <svg placement=\"right\"\r\n                                ngbTooltip=\"A quick recap of the store activity along with the avg tech infrastructure downtime status\"\r\n                                xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n                                fill=\"none\">\r\n                                <g clip-path=\"url(#clip0_1432_80035)\">\r\n                                    <path\r\n                                        d=\"M8.00065 10.6666V7.99992M8.00065 5.33325H8.00732M14.6673 7.99992C14.6673 11.6818 11.6826 14.6666 8.00065 14.6666C4.31875 14.6666 1.33398 11.6818 1.33398 7.99992C1.33398 4.31802 4.31875 1.33325 8.00065 1.33325C11.6826 1.33325 14.6673 4.31802 14.6673 7.99992Z\"\r\n                                        stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                        stroke-linejoin=\"round\" />\r\n                                </g>\r\n                                <defs>\r\n                                    <clipPath id=\"clip0_1432_80035\">\r\n                                        <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n                                    </clipPath>\r\n                                </defs>\r\n                            </svg>\r\n                        </span>\r\n                        <span class=\"text-sub mb-2\">Dated: {{headerData?.date?.endDate | date:' dd MMM,yyyy'}}</span>\r\n                    </h3>\r\n                    <div class=\"action-wrapper\">\r\n                        <div class=\"action-btn\">\r\n                            <svg width=\"16\" height=\"14\" viewBox=\"0 0 16 14\" fill=\"none\"\r\n                                xmlns=\"http://www.w3.org/2000/svg\">\r\n                                <path\r\n                                    d=\"M9.52344 0C10.3997 0 11.237 0.179492 12.0013 0.50499C12.7943 0.842542 13.5078 1.33816 14.1055 1.95298C14.7018 2.56647 15.1836 3.30052 15.5117 4.11895C15.8281 4.90523 16.0026 5.76653 16.0026 6.66667C16.0026 7.56815 15.8281 8.42944 15.5117 9.21573C15.1836 10.0315 14.7018 10.7655 14.1042 11.3803C13.5078 11.9938 12.7943 12.4895 11.9987 12.827C11.2344 13.1525 10.3971 13.332 9.52214 13.332C8.64583 13.332 7.80859 13.1525 7.04427 12.827C6.2513 12.4895 5.53776 11.9938 4.94141 11.3803L4.9401 11.379C4.34245 10.7642 3.86198 10.0301 3.53385 9.21573C3.43229 8.96256 3.34505 8.7027 3.27344 8.43614C3.40885 8.44953 3.54688 8.45623 3.6862 8.45623C3.95052 8.45623 4.20833 8.43212 4.45964 8.38524C4.5013 8.51383 4.54687 8.64108 4.59635 8.76566C4.86589 9.4354 5.26172 10.0382 5.75391 10.5445C6.24609 11.0508 6.83333 11.458 7.48307 11.7353C8.10938 12.0019 8.79818 12.1506 9.52214 12.1506C10.2461 12.1506 10.9336 12.0032 11.5612 11.7353C12.2122 11.458 12.7982 11.0508 13.2904 10.5445C13.7826 10.0382 14.1784 9.43406 14.4479 8.76566C14.707 8.12136 14.8516 7.41277 14.8516 6.66801C14.8516 5.92325 14.7083 5.21599 14.4479 4.57036C14.1784 3.90061 13.7826 3.29784 13.2904 2.79151C12.7982 2.28518 12.2109 1.87797 11.5612 1.6007C10.9349 1.33414 10.2461 1.18545 9.52214 1.18545C8.79818 1.18545 8.11068 1.3328 7.48307 1.6007C7.42708 1.62481 7.37109 1.65026 7.31641 1.67571C7.10286 1.33012 6.84505 1.01668 6.54948 0.744759C6.71094 0.659032 6.8763 0.580001 7.04427 0.507669C7.8112 0.179492 8.64714 0 9.52344 0ZM8.77995 3.49742C8.77995 3.334 8.84505 3.18666 8.94792 3.0795C9.05208 2.97234 9.19531 2.9067 9.35417 2.9067C9.51302 2.9067 9.65625 2.97234 9.76042 3.0795C9.86458 3.18666 9.92839 3.334 9.92839 3.49742V6.60773L12.1875 7.98607C12.3229 8.06912 12.4141 8.20173 12.4505 8.34773C12.487 8.49374 12.4701 8.65448 12.3893 8.79379V8.79512C12.3086 8.93443 12.1797 9.0282 12.0378 9.0657C11.8958 9.10321 11.7396 9.08579 11.6042 9.00275H11.6029L9.07552 7.46099C8.98828 7.41143 8.91667 7.33909 8.86458 7.25337C8.8112 7.16362 8.77995 7.0578 8.77995 6.94528V3.49742Z\"\r\n                                    fill=\"#667085\" />\r\n                                <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n                                    d=\"M3.51302 0.353516C5.45312 0.353516 7.02604 1.97163 7.02604 3.96747C7.02604 5.96332 5.45312 7.58143 3.51302 7.58143C1.57292 7.58143 0 5.96332 0 3.96747C0 1.97163 1.57292 0.353516 3.51302 0.353516ZM3.51302 6.03967L5.39844 3.64198H4.22786V2.36678H2.79818V3.64198H1.6276L3.51302 6.03967Z\"\r\n                                    fill=\"#F04438\" />\r\n                            </svg>\r\n\r\n                            <span class=\"ms-2\" *ngIf=\"getRecapVideoData?.downTime === 0\">0 Mins</span>\r\n                            <span class=\"ms-2\" *ngIf=\"getRecapVideoData?.downTime !== 0\">{{getRecapVideoData?.downTime\r\n                                ??\r\n                                '--'}} Mins</span>\r\n                        </div>\r\n                        <div class=\"action-badge\">\r\n                            <svg *ngIf=\"getRecapVideoData?.health ==='GOOD'\" xmlns=\"http://www.w3.org/2000/svg\"\r\n                                width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n                                <g id=\"Frame\">\r\n                                    <path id=\"Vector\"\r\n                                        d=\"M13.4349 2.5C14.8238 2.5 15.9871 3.01389 16.9249 4.04167C17.8627 5.06944 18.3313 6.29167 18.3307 7.70833C18.3307 7.95833 18.3168 8.205 18.2891 8.44833C18.2613 8.69167 18.2127 8.93111 18.1432 9.16667H12.9349L11.5182 7.04167C11.4488 6.93056 11.3516 6.84028 11.2266 6.77083C11.1016 6.70139 10.9696 6.66667 10.8307 6.66667C10.6502 6.66667 10.4868 6.72222 10.3407 6.83333C10.1946 6.94444 10.0941 7.08333 10.0391 7.25L8.91406 10.625L8.1849 9.54167C8.11545 9.43056 8.01823 9.34028 7.89323 9.27083C7.76823 9.20139 7.63628 9.16667 7.4974 9.16667H1.85156C1.78212 8.93056 1.73351 8.69083 1.70573 8.4475C1.67795 8.20417 1.66406 7.96472 1.66406 7.72917C1.66406 6.29861 2.12934 5.06944 3.0599 4.04167C3.99045 3.01389 5.15017 2.5 6.53906 2.5C7.20573 2.5 7.83434 2.63194 8.4249 2.89583C9.01545 3.15972 9.53962 3.52778 9.9974 4C10.4418 3.52778 10.9593 3.15972 11.5499 2.89583C12.1405 2.63194 12.7688 2.5 13.4349 2.5ZM9.9974 17.5C9.7474 17.5 9.50767 17.4547 9.27823 17.3642C9.04878 17.2736 8.84406 17.1383 8.66406 16.9583L3.08073 11.3542C2.9974 11.2708 2.92101 11.1875 2.85156 11.1042C2.78212 11.0208 2.71267 10.9306 2.64323 10.8333H7.03906L8.45573 12.9583C8.52517 13.0694 8.6224 13.1597 8.7474 13.2292C8.8724 13.2986 9.00434 13.3333 9.14323 13.3333C9.32378 13.3333 9.49045 13.2778 9.64323 13.1667C9.79601 13.0556 9.90017 12.9167 9.95573 12.75L11.0807 9.375L11.7891 10.4583C11.8724 10.5694 11.9766 10.6597 12.1016 10.7292C12.2266 10.7986 12.3585 10.8333 12.4974 10.8333H17.3307L17.1224 11.0833L16.9141 11.3333L11.3099 16.9583C11.1293 17.1389 10.928 17.2744 10.7057 17.365C10.4835 17.4556 10.2474 17.5006 9.9974 17.5Z\"\r\n                                        fill=\"#12B76A\" />\r\n                                </g>\r\n                            </svg>\r\n                            <svg *ngIf=\"getRecapVideoData?.health ==='AVERAGE'\" xmlns=\"http://www.w3.org/2000/svg\"\r\n                                width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n                                <g id=\"Frame\">\r\n                                    <path id=\"Vector\"\r\n                                        d=\"M13.4349 2.5C14.8238 2.5 15.9871 3.01389 16.9249 4.04167C17.8627 5.06944 18.3313 6.29167 18.3307 7.70833C18.3307 7.95833 18.3168 8.205 18.2891 8.44833C18.2613 8.69167 18.2127 8.93111 18.1432 9.16667H12.9349L11.5182 7.04167C11.4488 6.93056 11.3516 6.84028 11.2266 6.77083C11.1016 6.70139 10.9696 6.66667 10.8307 6.66667C10.6502 6.66667 10.4868 6.72222 10.3407 6.83333C10.1946 6.94444 10.0941 7.08333 10.0391 7.25L8.91406 10.625L8.1849 9.54167C8.11545 9.43056 8.01823 9.34028 7.89323 9.27083C7.76823 9.20139 7.63628 9.16667 7.4974 9.16667H1.85156C1.78212 8.93056 1.73351 8.69083 1.70573 8.4475C1.67795 8.20417 1.66406 7.96472 1.66406 7.72917C1.66406 6.29861 2.12934 5.06944 3.0599 4.04167C3.99045 3.01389 5.15017 2.5 6.53906 2.5C7.20573 2.5 7.83434 2.63194 8.4249 2.89583C9.01545 3.15972 9.53962 3.52778 9.9974 4C10.4418 3.52778 10.9593 3.15972 11.5499 2.89583C12.1405 2.63194 12.7688 2.5 13.4349 2.5ZM9.9974 17.5C9.7474 17.5 9.50767 17.4547 9.27823 17.3642C9.04878 17.2736 8.84406 17.1383 8.66406 16.9583L3.08073 11.3542C2.9974 11.2708 2.92101 11.1875 2.85156 11.1042C2.78212 11.0208 2.71267 10.9306 2.64323 10.8333H7.03906L8.45573 12.9583C8.52517 13.0694 8.6224 13.1597 8.7474 13.2292C8.8724 13.2986 9.00434 13.3333 9.14323 13.3333C9.32378 13.3333 9.49045 13.2778 9.64323 13.1667C9.79601 13.0556 9.90017 12.9167 9.95573 12.75L11.0807 9.375L11.7891 10.4583C11.8724 10.5694 11.9766 10.6597 12.1016 10.7292C12.2266 10.7986 12.3585 10.8333 12.4974 10.8333H17.3307L17.1224 11.0833L16.9141 11.3333L11.3099 16.9583C11.1293 17.1389 10.928 17.2744 10.7057 17.365C10.4835 17.4556 10.2474 17.5006 9.9974 17.5Z\"\r\n                                        fill=\"#FACC15\" />\r\n                                </g>\r\n                            </svg>\r\n                            <svg *ngIf=\"getRecapVideoData?.health ==='BAD'\" xmlns=\"http://www.w3.org/2000/svg\"\r\n                                width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n                                <g id=\"Frame\">\r\n                                    <path id=\"Vector\"\r\n                                        d=\"M13.4349 2.5C14.8238 2.5 15.9871 3.01389 16.9249 4.04167C17.8627 5.06944 18.3313 6.29167 18.3307 7.70833C18.3307 7.95833 18.3168 8.205 18.2891 8.44833C18.2613 8.69167 18.2127 8.93111 18.1432 9.16667H12.9349L11.5182 7.04167C11.4488 6.93056 11.3516 6.84028 11.2266 6.77083C11.1016 6.70139 10.9696 6.66667 10.8307 6.66667C10.6502 6.66667 10.4868 6.72222 10.3407 6.83333C10.1946 6.94444 10.0941 7.08333 10.0391 7.25L8.91406 10.625L8.1849 9.54167C8.11545 9.43056 8.01823 9.34028 7.89323 9.27083C7.76823 9.20139 7.63628 9.16667 7.4974 9.16667H1.85156C1.78212 8.93056 1.73351 8.69083 1.70573 8.4475C1.67795 8.20417 1.66406 7.96472 1.66406 7.72917C1.66406 6.29861 2.12934 5.06944 3.0599 4.04167C3.99045 3.01389 5.15017 2.5 6.53906 2.5C7.20573 2.5 7.83434 2.63194 8.4249 2.89583C9.01545 3.15972 9.53962 3.52778 9.9974 4C10.4418 3.52778 10.9593 3.15972 11.5499 2.89583C12.1405 2.63194 12.7688 2.5 13.4349 2.5ZM9.9974 17.5C9.7474 17.5 9.50767 17.4547 9.27823 17.3642C9.04878 17.2736 8.84406 17.1383 8.66406 16.9583L3.08073 11.3542C2.9974 11.2708 2.92101 11.1875 2.85156 11.1042C2.78212 11.0208 2.71267 10.9306 2.64323 10.8333H7.03906L8.45573 12.9583C8.52517 13.0694 8.6224 13.1597 8.7474 13.2292C8.8724 13.2986 9.00434 13.3333 9.14323 13.3333C9.32378 13.3333 9.49045 13.2778 9.64323 13.1667C9.79601 13.0556 9.90017 12.9167 9.95573 12.75L11.0807 9.375L11.7891 10.4583C11.8724 10.5694 11.9766 10.6597 12.1016 10.7292C12.2266 10.7986 12.3585 10.8333 12.4974 10.8333H17.3307L17.1224 11.0833L16.9141 11.3333L11.3099 16.9583C11.1293 17.1389 10.928 17.2744 10.7057 17.365C10.4835 17.4556 10.2474 17.5006 9.9974 17.5Z\"\r\n                                        fill=\"#F04438\" />\r\n                                </g>\r\n                            </svg>\r\n                            <span class=\"ms-2\">{{getRecapVideoData?.health ?? '--'}}</span>\r\n                        </div>\r\n                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1\" height=\"24\" viewBox=\"0 0 1 24\" fill=\"none\">\r\n                            <line x1=\"0.5\" y1=\"0.5\" x2=\"0.5\" y2=\"23.5\" stroke=\"#98A2B3\" stroke-linecap=\"round\" />\r\n                        </svg>\r\n                        <div class=\"action-link\" (click)=\"cameraView()\">\r\n                            View camera\r\n\r\n                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"17\" viewBox=\"0 0 17 17\"\r\n                                fill=\"none\">\r\n                                <path\r\n                                    d=\"M13.3359 9.16829V14.1683C13.3359 14.6103 13.1603 15.0342 12.8478 15.3468C12.5352 15.6594 12.1113 15.835 11.6693 15.835H2.5026C2.06058 15.835 1.63665 15.6594 1.32409 15.3468C1.01153 15.0342 0.835938 14.6103 0.835938 14.1683V5.00163C0.835938 4.5596 1.01153 4.13568 1.32409 3.82312C1.63665 3.51056 2.06058 3.33496 2.5026 3.33496H7.5026M10.8359 0.834961H15.8359M15.8359 0.834961V5.83496M15.8359 0.834961L6.66927 10.0016\"\r\n                                    stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n                                    stroke-linejoin=\"round\" />\r\n                            </svg>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div *ngIf=\"recaplaoding\" class=\"row loader d-flex justify-content-center align-items-center h-100\">\r\n                    <div class=\"shimmer pt-0\">\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 title\"></div>\r\n                            <div class=\"stroke animate link\"></div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div *ngIf=\"recapnoData\" class=\"row px-3\">\r\n                    <div class=\"col-md-12\">\r\n                        <div *ngIf=\"normalize\"\r\n                            class=\"card-body d-flex justify-content-center mb-10 align-items-center flex-column\">\r\n                            <img class=\"img-map1\" src=\"./assets/tango/Icons/not-applicable.svg\" alt=\"\">\r\n                            <div class=\"nodata-title mt-3\">Data Not Found</div>\r\n                            <div class=\"nodata-sub\">Normalized data is not applicable</div>\r\n                        </div>\r\n                        <div *ngIf=\"!normalize\"\r\n                            class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n                            <img class=\"img-map-recap\" 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 Recap video</div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div *ngIf=\"!recaplaoding && !recapnoData\" class=\"card-body p-0\">\r\n                    <div class=\"row  h-100\">\r\n                        <div class=\"carousel h-100\">\r\n                            <div class=\"carousel-inner h-100\">\r\n                                <div class=\"carousel-item h-100\" *ngFor=\"let group of recapsGrouped; let i = index\"\r\n                                    [class.active]=\"i === currentIndex\">\r\n                                    <div class=\"row g-3 h-100\">\r\n                                        <div *ngFor=\"let pair of group\" [ngClass]=\"colValue\">\r\n                                            <img [src]=\"pair.thumbImage\" (click)=\"videoClick(pair)\"\r\n                                                class=\"image-thumb mb-8 d-block w-100 cursor-pointer\"\r\n                                                alt=\"Image {{ i + 1 }}\" />\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n\r\n                            <!-- Conditionally display Previous button -->\r\n                            <button class=\"carousel-control-prev\" *ngIf=\"currentIndex > 0\" (click)=\"prevSlide()\">\r\n                                <span class=\"carousel-control-prev-icon\"></span>\r\n                            </button>\r\n\r\n                            <!-- Conditionally display Next button -->\r\n                            <button class=\"carousel-control-next\" *ngIf=\"currentIndex < recapsGrouped.length - 1\"\r\n                                (click)=\"nextSlide()\">\r\n                                <span class=\"carousel-control-next-icon\"></span>\r\n                            </button>\r\n\r\n                            <!-- Navigation Dots -->\r\n                            <div *ngIf=\"recapsGrouped.length > 1\" class=\"row\">\r\n                                <ul class=\"carousel-indicators\">\r\n                                    <li *ngFor=\"let group of recapsGrouped; let i = index\"\r\n                                        [class.active]=\"i === currentIndex\" (click)=\"goToSlide(i)\">\r\n                                    </li>\r\n                                </ul>\r\n                            </div>\r\n\r\n                        </div>\r\n\r\n\r\n                        <!-- <video controls autoplay class=\"recap-img p-3\" [src]=\"getRecapData?.videoURL\"> -->\r\n                        <!-- <source  type=\"video/mp4\"> -->\r\n                        <!-- <source [src]=\"getRecapData?.videoURL\" type=\"video/ogg\"> -->\r\n                        <!-- </video> -->\r\n                        <!-- <div #mapContainer style=\"height:230px;\"></div> -->\r\n                        <!-- <div class=\"col-md-6 mb-3\"><img src=\"assets/tango/Images/recap.svg\" alt=\"\" class=\"recap-img\"></div>\r\n                        <div class=\"col-md-6 mb-3\"><img src=\"assets/tango/Images/recap.svg\" alt=\"\" class=\"recap-img\"></div> -->\r\n\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n\r\n    <div *ngIf=\"headerData?.client !=='452'\">\r\n        <lib-image-doc\r\n            *ngIf=\"storeIdarray?.length === 1 && (clientData?.featureConfigs?.isFootfallDirectory&&!clientData?.featureConfigs?.isFootfallDirectoryonlyTango || (gs.userAccess | async)?.userType === 'tango')\"\r\n            class=\"my-2\"></lib-image-doc>\r\n        <div *ngIf=\"storeIdarray?.length > 1 && (clientData?.featureConfigs?.isFootfallDirectory&&!clientData?.featureConfigs?.isFootfallDirectoryonlyTango || (gs.userAccess | async)?.userType === 'tango')\"\r\n            class=\"col-md-12 h-100 mt-4\">\r\n            <div class=\"card\">\r\n                <div class=\"header-row\">\r\n                    <span class=\"img-direc m-6\">Image Directory</span>\r\n                </div>\r\n                <div class=\"card-body d-flex justify-content-center align-items-center flex-column mb-12\">\r\n                    <img class=\"img-nodata1\" src=\"./assets/tango/Icons/warning-icon.svg\" alt=\"\">\r\n                    <div class=\"singlestore-title mt-3\">Available for Single Store View Only</div>\r\n                    <div class=\"singlestore-sub\">Please select one store to access store-specific images and data.</div>\r\n                </div>\r\n            </div>\r\n\r\n        </div>\r\n    </div>\r\n    <div>\r\n        <div class=\"card mt-5 mb-5\">\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\">Summary Table</span>\r\n                    <span class=\"text-sub mb-2\">{{headerData?.date?.startDate | date:'dd MMM, yyyy'}} –\r\n                        {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</span>\r\n                </h3>\r\n                <div class=\"card-toolbar\">\r\n                    <div class=\"d-flex\">\r\n                        <div class=\"d-flex align-items-center position-relative my-1\">\r\n                            <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n                                    fill=\"none\">\r\n                                    <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n                                        transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n                                    <path\r\n                                        d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n                                        fill=\"currentColor\"></path>\r\n                                </svg>\r\n                            </span>\r\n                            <input (change)=\"searchData()\" [(ngModel)]=\"searchValue\" type=\"text\"\r\n                                class=\"form-control ps-14 me-2\" autocomplete=\"off\" placeholder=\"Search\" />\r\n                            <!-- filter Start -->\r\n                            <!-- <lib-filters [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters> -->\r\n                            <!-- filter End -->\r\n                            <!-- Sum Button -->\r\n                            <section\r\n                                *ngIf=\"(storeIdarray?.length > 1 && headerData?.date?.startDate !== headerData?.date?.endDate) && !noData && !loading\">\r\n                                <button type=\"button\" (click)=\"onValueType('sum')\"\r\n                                    class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"\r\n                                    [ngClass]=\"{'btn-light btn-primary text-white': typeValue === 'sum'}\">\r\n                                    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n                                        fill=\"none\" [ngStyle]=\"{'stroke': typeValue === 'sum' ? '#FFFFFF' : '#344054'}\">\r\n                                        <path d=\"M9.99935 4.16675V15.8334M4.16602 10.0001H15.8327\" stroke-width=\"1.67\"\r\n                                            stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                    </svg>\r\n                                    <span class=\"ms-2\" [ngClass]=\"{'text-white': typeValue === 'sum'}\">Sum</span>\r\n                                </button>\r\n                            </section>\r\n\r\n                            <!-- Average Button -->\r\n\r\n\r\n                            <section *ngIf=\"(storeIdarray?.length > 1 && headerData?.date?.startDate !== headerData?.date?.endDate) \r\n && !noData && !loading\">\r\n                                <button type=\"button\" (click)=\"onValueType('average')\"\r\n                                    class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"\r\n                                    [ngClass]=\"{'btn-light btn-primary text-white': typeValue === 'average'}\">\r\n                                    <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n                                        xmlns=\"http://www.w3.org/2000/svg\"\r\n                                        [ngStyle]=\"{'stroke': typeValue === 'average' ? '#FFFFFF' : '#101828'}\">\r\n                                        <path\r\n                                            d=\"M17.5 17.5H8.33333C5.58333 17.5 4.20833 17.5 3.35417 16.6458C2.5 15.7917 2.5 14.4167 2.5 11.6667V2.5M5 10H5.0075M7.49917 10H7.50583M9.9975 10H10.0042M12.4958 10H12.5033M14.9942 10H15.0017M17.4925 10H17.5\"\r\n                                            stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                        <path\r\n                                            d=\"M5 5.83341C5.56083 4.89841 6.3225 4.16675 7.49417 4.16675C12.4467 4.16675 9.6625 14.1667 14.985 14.1667C16.165 14.1667 16.9217 13.4301 17.5 12.5001\"\r\n                                            stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                    </svg>\r\n                                    <span class=\"ms-2\"\r\n                                        [ngClass]=\"{'text-white': typeValue === 'average'}\">Average</span>\r\n                                </button>\r\n                            </section>\r\n\r\n                            <button *ngIf=\"!noData && !loading\" type=\"button\" (click)=\"exportXLSX()\"\r\n                                class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n                                    xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n                                    fill=\"none\">\r\n                                    <path\r\n                                        d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n                                        stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n                                        stroke-linejoin=\"round\" />\r\n                                </svg><span class=\"ms-2\">Export</span> </button>\r\n\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div *ngIf=\"loading\" class=\"row loader  d-flex justify-content-center align-items-center\">\r\n                <div class=\"shimmer\">\r\n                    <div class=\"wrapper\">\r\n                        <div class=\"stroke animate title\"></div>\r\n                        <div class=\"stroke animate link\"></div>\r\n                        <div class=\"stroke animate description\"></div>\r\n                    </div>\r\n                </div>\r\n                <div class=\"shimmer\">\r\n                    <div class=\"wrapper\">\r\n                        <div class=\"stroke animate title\"></div>\r\n                        <div class=\"stroke animate link\"></div>\r\n                        <div class=\"stroke animate description\"></div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div *ngIf=\"noData\" class=\"row\">\r\n                <div class=\"col-lg-12 mb-3\">\r\n                    <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n                        <img class=\"img-nodata-table\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n                        <div class=\"nodata-title\">No data found</div>\r\n                        <div class=\"nodata-sub\">There is no result for this summary table</div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div *ngIf=\"!noData && !loading\" calss=\"card-body\">\r\n                <div class=\"table-responsive\">\r\n                    <table class=\"w-100 table bottom-border text-nowrap\">\r\n                        <thead>\r\n                            <tr>\r\n                                <th *ngIf=\"storeIdarray?.length === 1\" class=\"cursor-pointer\">\r\n                                    <span class=\"cursor-pointer\" (click)=\"onSort('date')\">Date <svg\r\n                                            [ngClass]=\"sortedColumn === 'date' && sortDirection === 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 === '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 class=\"cursor-pointer\">\r\n                                    <span class=\"cursor-pointer\" (click)=\"onSort('storeName')\">Store Name <svg\r\n                                            [ngClass]=\"sortedColumn === 'storeName' && sortDirection === 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>\r\n                                </th>\r\n                                <th class=\"cursor-pointer\">\r\n                                    <span class=\"cursor-pointer\" (click)=\"onSort('storeId')\">Store ID <svg\r\n                                            [ngClass]=\"sortedColumn === 'storeId' && sortDirection === 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 === 'storeId' ? '#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=\"storeCode\" class=\"cursor-pointer\">\r\n                                    <span class=\"cursor-pointer\" (click)=\"onSort('storeCode')\">Store Code <svg\r\n                                            [ngClass]=\"sortedColumn === 'storeCode' && sortDirection === 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 === 'storeCode' ? '#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=\"cursor-pointer\">\r\n                                    <span class=\"cursor-pointer\" (click)=\"onSort('footfallCount')\">Footfall <svg\r\n                                            [ngClass]=\"sortedColumn === 'footfallCount' && sortDirection === 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 === 'footfallCount' ? '#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=\"cursor-pointer\">\r\n                                    <span class=\"cursor-pointer\" (click)=\"onSort('avgInfraDowntime')\">Avg Infra DownTime\r\n                                        <svg [ngClass]=\"sortedColumn === 'avgInfraDowntime' && sortDirection === 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 === 'avgInfraDowntime' ? '#00A3FF' : '#667085'\"\r\n                                                stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                        </svg></span>\r\n                                </th>\r\n                            </tr>\r\n                        </thead>\r\n                        <tbody>\r\n                            <tr *ngFor=\"let obj of getSummaryTableData;let i=index;\">\r\n                                <!-- (click)=\"storeView(obj)\" -->\r\n                                <td *ngIf=\"obj?.date\">{{obj?.date | date:'MMM dd, yyyy'}}</td>\r\n                                <td *ngIf=\"this.storeIdarray?.length===1\" class=\"text-capitalize\">{{obj.storeName}}</td>\r\n                                <td *ngIf=\"this.storeIdarray?.length>1\"\r\n                                    class=\"text-primary text-capitalize text-decoration-underline cursor-pointer\"\r\n                                    (click)=\"storeView(obj.storeId)\">{{obj.storeName}}</td>\r\n                                <td>{{obj.storeId}}</td>\r\n                                <td *ngIf=\"storeCode\">\r\n                                    {{ obj.storeCode !== null && obj.storeCode !== '' ? obj.storeCode : '-' }}\r\n                                </td>\r\n\r\n                                <td>{{obj.footfallCount}}</td>\r\n                                <td>{{obj.avgInfraDowntime}}</td>\r\n\r\n                            </tr>\r\n                        </tbody>\r\n                    </table>\r\n                </div>\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>\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-tango-analyse-traffic',\r\n  templateUrl: './tango-analyse-traffic.component.html',\r\n  styleUrl: './tango-analyse-traffic.component.scss'\r\n})\r\nexport class TangoAnalyseTrafficComponent implements OnInit {\r\n\r\n\r\n  constructor(private pageInfo:PageInfoService){\r\n  }\r\n  \r\n  ngOnInit(): void {\r\n    this.setPageData();\r\n  }\r\n\r\n  setPageData(){\r\n    this.pageInfo.setTitle('Traffic')\r\n    this.pageInfo.setDescription('To optimize and improve existing algorithm')\r\n    this.pageInfo.setBreadcrumbs([\r\n    {title:'Tango Eye', path: '/manage/traffic', isActive: false, isSeparator: false},\r\n    {title:'Tango Eye', path: '/manage/traffic', isActive: false, isSeparator: true},\r\n    ])\r\n  }\r\n}\r\n","<lib-traffic-analysis></lib-traffic-analysis>\r\n","import { AfterViewInit, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { TrafficService } from '../../services/traffic.service';\r\nimport { GlobalStateService, PageInfoService } from 'tango-app-ui-global';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { Subject, takeUntil } from \"rxjs\";\r\nimport { Router } from '@angular/router';\r\nimport * as mapboxgl from 'mapbox-gl';\r\n@Component({\r\n  selector: 'lib-explore-view',\r\n  templateUrl: './explore-view.component.html',\r\n  styleUrl: './explore-view.component.scss'\r\n})\r\nexport class ExploreViewComponent implements OnInit,OnDestroy  {\r\n  headerData: any;\r\n  storeIdarray: any;\r\n  \r\n  // map: google.maps.Map | undefined;\r\n  auLocations: any[] = [];\r\n  mapOptions: google.maps.MapOptions = {\r\n    mapId: \"DEMO_MAP_ID\",\r\n    center: { lat: 0, lng: 0 },  // Initial center\r\n    zoom: 10,\r\n  };\r\n  private readonly destroy$ = new Subject();\r\n  public auth: boolean = false;  // Set this based on your initial logic\r\n  public setClass: string = 'col-md-12';\r\n  selectedStore: any;\r\n  loading:boolean =true;\r\n  noData: boolean =false;\r\n  dataImages: any;\r\n  dataStoreMap: any;\r\n  newDataStoreMap: any;\r\n  storeId: any;\r\nconstructor(private pageInfo:PageInfoService, private service: TrafficService,public gs: GlobalStateService,private router:Router,private cd: ChangeDetectorRef){\r\n\r\n}\r\nsetPageData(){\r\n  this.pageInfo.setTitle('Explore')\r\n  this.pageInfo.setDescription('To optimize and improve existing algorithm')\r\n  this.pageInfo.setBreadcrumbs([\r\n  {title:'Tango Eye', path: '/manage/traffic', isActive: false, isSeparator: false},\r\n  {title:'Tango Eye', path: '/manage/traffic', isActive: false, isSeparator: true},\r\n  {title:'Traffic', path: '/manage/traffic', isActive: false, isSeparator: false},\r\n  {title:'Traffic', path: '/manage/traffic', isActive: false, isSeparator: true},\r\n  ])\r\n}\r\n  ngOnInit(): void {\r\n    this.setPageData();\r\n   \r\n    (mapboxgl as any).accessToken = 'pk.eyJ1IjoiYmFsYWppdGFuZ28iLCJhIjoiY20wZ2xiem55MDFxYTJ3b21zb3FjNHdwayJ9.nnIIzt7OeYlYHufGE8lFWQ';\r\n\r\n    this.gs.dataRangeValue\r\n      .pipe(takeUntil(this.destroy$), debounceTime(100))\r\n      .subscribe((data: any) => {\r\n        // Only process the latest data after debounce time\r\n        this.headerData = data;\r\n        this.storeIdarray = this.headerData?.stores.filter((store:any) => store.checked).map((store:any) => store.storeId)\r\n       \r\n        this.getMap();\r\n      })\r\n      \r\n    }\r\n    ngOnDestroy(): void {\r\n      this.destroy$.next(true);\r\n      this.destroy$.complete();\r\n    }\r\n\r\n\r\n\r\n\r\n  map: mapboxgl.Map;\r\n\r\n  getMap() {\r\n    this.loading =true;\r\n    const obj = {\r\n      clientId: this.headerData.client,\r\n      storeDate: this.headerData.date.endDate,\r\n      storeId: this.storeIdarray\r\n    };\r\n  \r\n    this.service.geMaps(obj)?.pipe(takeUntil(this.destroy$))\r\n      .subscribe({\r\n        next: (res: any) => {\r\n          if (res && res.data && res.data.storeData) {\r\n            this.auLocations = res.data.storeData;\r\n            this.getData();\r\n            this.cd.detectChanges();\r\n            if (this.auLocations.length > 0) {\r\n              const firstLocation = this.auLocations[0];\r\n              if (firstLocation && typeof firstLocation.lat === 'number' && typeof firstLocation.lng === 'number') {\r\n                this.mapOptions = {\r\n                  ...this.mapOptions,\r\n                  center: { lat: firstLocation.lat, lng: firstLocation.lng }\r\n                };\r\n              } else {\r\n              }\r\n            } else {\r\n             \r\n            } \r\n            this.loading =false;\r\n            this.noData =false;\r\n          } else {\r\n            this.loading =false;\r\n            this.noData =true;\r\n          }\r\n        },\r\n        error: (err) => {\r\n          this.loading =false;\r\n          this.noData =true;\r\n        }\r\n      });\r\n  }\r\n  \r\n  getData() {\r\n    setTimeout(() => {\r\n      const mapContainer = document.getElementById('map1');\r\n      if (!mapContainer) {\r\n        return;\r\n      }\r\n    if (this.auLocations.length === 0) {\r\n      return;\r\n    }\r\n  \r\n    const geojson = {\r\n      'type': 'FeatureCollection',\r\n      'features': this.auLocations.map((store, index) => ({\r\n        'type': 'Feature',\r\n        'properties': {\r\n          'storeName': store.storeName,\r\n          'imageId': 1011 + index,\r\n          'iconSize': [60, 60],\r\n          'footfall': store.avgFootfall,\r\n          'openTime': store.openTime,\r\n          'closeTime': store.closeTime,\r\n        },\r\n        'geometry': {\r\n          'type': 'Point',\r\n          'coordinates': [store.lng, store.lat]\r\n        }\r\n      }))\r\n    };\r\n  \r\n    const firstLocation = this.auLocations[0];\r\n    this.map = new mapboxgl.Map({\r\n      container: 'map1',\r\n      style: 'mapbox://styles/mapbox/streets-v12',\r\n      center: [firstLocation.lng, firstLocation.lat], // Center map on the first location\r\n      zoom: 10, // Adjust this value (1 = world view, 20 = building view)\r\n      maxZoom: 20, // Optional: Limit max zoom level\r\n      minZoom: 1   // Optional: Limit min zoom level\r\n    });\r\n  \r\n    // this.map = new mapboxgl.Map({\r\n    //   container: 'map1',\r\n    //   style: 'mapbox://styles/mapbox/streets-v12',\r\n    //   center: [firstLocation.lng, firstLocation.lat],\r\n    //   zoom: 4\r\n    // });\r\n  \r\n    geojson.features.forEach((feature, featureIndex) => {\r\n      const { properties, geometry } = feature;\r\n      const store = this.auLocations[featureIndex];\r\n  \r\n      const el = document.createElement('div');\r\n      const width = properties.iconSize[0];\r\n      const height = properties.iconSize[1];\r\n      el.className = 'marker';\r\n      el.innerHTML = `\r\n        <div class=\"marker-icon\" style=\"background-color: white; width: 65px; height: 70px; display: flex; justify-content: center; align-items: center;\">\r\n          <div class=\"marker-content\" style=\"display: flex; flex-direction: column; align-items: center;\">\r\n            <svg class=\"mb-1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\">\r\n              <path d=\"M1.33654 3.3637L1.29658 3.42611C0.877698 4.16701 1.32493 5.10335 2.12931 5.21076C2.20218 5.21967 2.26999 5.22438 2.33625 5.22438C2.77021 5.22438 3.1539 5.03821 3.42132 4.74793L3.83666 4.2971L4.25059 4.74923C4.51476 5.03778 4.89758 5.22438 5.33448 5.22438C5.76941 5.22438 6.15443 5.03752 6.41837 4.74923L6.83359 4.29568L7.24882 4.74923C7.51275 5.03752 7.89777 5.22438 8.33271 5.22438C8.76764 5.22438 9.15266 5.03752 9.4166 4.74923L9.83182 4.29568L10.247 4.74923C10.511 5.03752 10.896 5.22438 11.3309 5.22438C11.395 5.22438 11.4649 5.21966 11.5372 5.21083C12.3593 5.09875 12.808 4.11225 12.3286 3.36408C12.3286 3.36403 12.3285 3.36399 12.3285 3.36395L11.0088 1.30621L11.0081 1.30511C10.9967 1.28722 10.9686 1.26804 10.9332 1.26804H2.72942C2.69403 1.26804 2.66589 1.28722 2.65448 1.30511L2.65401 1.30584L1.33654 3.3637ZM11.0731 7.06667V9.41753V9.98049H10.5101H3.15248H2.58952V9.41753V7.06702C2.50678 7.07318 2.42308 7.07634 2.33855 7.07634C2.30679 7.07634 2.27525 7.07587 2.24392 7.07495V9.41753V10.8696C2.24392 11.3526 2.64467 11.7587 3.15248 11.7587H10.5101C11.0179 11.7587 11.4187 11.3526 11.4187 10.8696V9.41753V7.07509C11.3888 7.07591 11.3587 7.07634 11.3286 7.07634C11.2428 7.07634 11.1575 7.07308 11.0731 7.06667Z\" stroke=\"#101828\" stroke-width=\"1.12592\"/>\r\n            </svg>\r\n\r\n            <div class=\"marker-label\" style=\"color: var(--Gray-700, #344054); text-align: center; font-family: Inter; font-size: 9.007px; font-style: normal; font-weight: 600; line-height: 13px;\">\r\n              ${properties.storeName}\r\n            </div>\r\n          </div>\r\n        </div>\r\n      `;\r\n      el.style.width = `${width}px`;\r\n      el.style.height = `${height}px`;\r\n      el.style.backgroundSize = '100%';\r\n  \r\n      // Create an empty popup initially\r\n      const popup = new mapboxgl.Popup({ offset: 25 })\r\n        .setHTML('<div>Loading...</div>');\r\n  \r\n      // Create marker with the popup\r\n      const marker = new mapboxgl.Marker(el)\r\n        .setLngLat([geometry.coordinates[0], geometry.coordinates[1]])\r\n        .setPopup(popup)\r\n        .addTo(this.map);\r\n  \r\n      // Handle click events\r\n      el.addEventListener('click', () => {\r\n        this.adjustLayout(store, marker, popup);\r\n      });\r\n    });\r\n  },0)\r\n  }\r\n  \r\n  adjustLayout(store: any, marker: mapboxgl.Marker, popup: mapboxgl.Popup) {\r\n    this.selectedStore = store;\r\n\r\n    this.storeId = store?.storeId;\r\n    this.auth = true;\r\n    this.setClass = 'col-md-9';\r\n  \r\n    const obj = {\r\n      clientId: this.headerData.client,\r\n      storeDate: this.headerData.date.endDate,\r\n      storeId: [store?.storeId]\r\n    };\r\n  \r\n    this.service.getStoreMapData(obj)?.pipe(takeUntil(this.destroy$))\r\n      .subscribe({\r\n        next: (res: any) => {\r\n          if (res && res?.code === 200) {\r\n            this.dataStoreMap = res?.data;\r\n            this.dataImages = res?.data?.cameraBaseImage || 'assets/tango/Images/preview_not.png';\r\n  \r\n            // Update the popup content\r\n            popup.setHTML(`\r\n              <img class=\"w-100\" src=\"${this.dataImages}\" onerror=\"this.onerror=null; this.src='assets/tango/Images/preview_not.png';\" alt=\"Store Image\">\r\n              <div style=\"background: var(--gradient-primary-800700265-deg, linear-gradient(27deg, #0082CC 8.33%, #0093E6 91.67%));color:white; padding: 10px;\">\r\n                <h4 class=\"text-white\">${store.storeName || 'Store Name'}</h4>\r\n                <h6 class=\"text-white\">Avg. Footfall / Hour: ${this.dataStoreMap?.hourlyData?.hourlyFootfall || '--'}</h6>\r\n                <h6 class=\"text-white\">Open Time: ${this.dataStoreMap?.hourlyData?.openTime || '--'}</h6>\r\n                <h6 class=\"text-white\">Close Time: ${this.dataStoreMap?.hourlyData?.closeTime || '--'}</h6>\r\n              </div>\r\n            `);\r\n  \r\n            // Ensure the popup is added to the map and positioned correctly\r\n            marker.setPopup(popup); // Attach the popup to the marker\r\n            if (!popup.isOpen()) {\r\n              popup.addTo(this.map); // Add popup to the map\r\n            }\r\n          } else {\r\n            this.dataImages = 'assets/tango/Images/preview_not.png';\r\n            popup.setHTML(`\r\n              <img class=\"w-100\" src=\"${this.dataImages}\" onerror=\"this.onerror=null; this.src='assets/tango/Images/preview_not.png';\" alt=\"Store Image\">\r\n              <div style=\"background: var(--gradient-primary-800700265-deg, linear-gradient(27deg, #0082CC 8.33%, #0093E6 91.67%));color:white; padding: 10px;\">\r\n                <h4 class=\"text-white\">${store.storeName || 'Store Name'}</h4>\r\n                <h6 class=\"text-white\">Average Footfall: --</h6>\r\n                <h6 class=\"text-white\">Open Time: --</h6>\r\n                <h6 class=\"text-white\">Close Time: --</h6>\r\n              </div>\r\n            `);\r\n          }\r\n        },\r\n        error: (err) => {\r\n          console.error('Error fetching store map data:', err);\r\n          popup.setHTML(`\r\n           <img class=\"w-100\" src=\"${this.dataImages}\" onerror=\"this.onerror=null; this.src='assets/tango/Images/preview_not.png';\" alt=\"Store Image\">\r\n              <div style=\"background: var(--gradient-primary-800700265-deg, linear-gradient(27deg, #0082CC 8.33%, #0093E6 91.67%));color:white; padding: 10px;\">\r\n                <h4 class=\"text-white\">${store.storeName || 'Store Name'}</h4>\r\n                <h6 class=\"text-white\">Average Footfall: --</h6>\r\n                <h6 class=\"text-white\">Open Time: --</h6>\r\n                <h6 class=\"text-white\">Close Time: --</h6>\r\n              </div>\r\n          `);\r\n        }\r\n      });\r\n  }\r\n  \r\n  \r\n  \r\n  \r\n  // adjustLayout(store:any) {\r\n  //   this.selectedStore = store;\r\n  //   this.auth =true;\r\n  //   this.setClass = 'col-md-9'; // Adjust the layout to 8 columns on marker click\r\n   \r\n  //   // this.newDataStoreMap = data;\r\n  // }\r\n  dataValue(data:any){\r\n    this.newDataStoreMap = data\r\n  }\r\n  toggleAuth() {\r\n    this.auth = !this.auth;\r\n    this.setClass = this.auth ? 'col-md-9' : 'col-md-12';\r\n  }\r\n\r\n    backToFootfall(){\r\n    this.router.navigate(['/manage/traffic'])\r\n  }\r\n  storeView(data:any){\r\n    const datavalue: any = JSON.parse(\r\n      localStorage.getItem(\"header-filters\") || \"{}\"\r\n    );\r\n    datavalue.store = data;\r\n    localStorage.setItem(\"header-filters\", JSON.stringify(datavalue));\r\n    this.cd.detectChanges()\r\n    this.gs.dataRangeValue.next(datavalue)\r\n    this.router.navigate([\"/manage/stores/cameras\"], {\r\n      queryParams: { storeId: data},\r\n    });\r\n\r\n  }\r\n  // onMarkerClick(location: any) {\r\n  //   console.log('Marker clicked:', location);\r\n  //   // Perform actions based on the clicked location\r\n  // }\r\n}\r\n","<script>\r\n    (g=>{var h,a,k,p=\"The Google Maps JavaScript API\",c=\"google\",l=\"importLibrary\",q=\"__ib__\",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement(\"script\"));e.set(\"libraries\",[...r]+\"\");for(k in g)e.set(k.replace(/[A-Z]/g,t=>\"_\"+t[0].toLowerCase()),g[k]);e.set(\"callback\",c+\".maps.\"+q);a.src=`https://maps.${c}apis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+\" could not load.\"));a.nonce=m.querySelector(\"script[nonce]\")?.nonce||\"\";m.head.append(a)}));d[l]?console.warn(p+\" only loads once. Ignoring:\",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})({\r\n      v: \"weekly\",\r\n      key: \"AIzaSyAfWQ9guFsSXoYIu2VFBw-XQ3VnufvFA3A\"\r\n    });\r\n  </script>\r\n  <link href='https://api.mapbox.com/mapbox-gl-js/v2.15.0/mapbox-gl.css' rel='stylesheet' />\r\n  <script src='https://api.mapbox.com/mapbox-gl-js/v2.15.0/mapbox-gl.js'></script>\r\n\r\n<div *ngIf=\"!noData\" class=\"row\">\r\n    <div [ngClass]=\"setClass\">\r\n        <div class=\"card px-2 py-3\">\r\n            <div class=\"d-flex align-items-center me-2\">\r\n                <div class=\"flex-shrink-0\">\r\n                    <span class=\"cursor-pointer\" (click)=\"backToFootfall()\">\r\n                        <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                            <g filter=\"url(#filter0_d_2585_7036)\">\r\n                                <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\r\n                                <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n                                <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\r\n                                    stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n                                    stroke-linejoin=\"round\" />\r\n                            </g>\r\n                            <defs>\r\n                                <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\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_2585_7036\" />\r\n                                    <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\r\n                                        result=\"shape\" />\r\n                                </filter>\r\n                            </defs>\r\n                        </svg>\r\n                    </span>\r\n                </div>\r\n            </div>\r\n            <div class=\"card-body p-0\">\r\n                <div id=\"map1\" style=\"width: 100%; height: 100vh;\"></div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n\r\n    <div *ngIf=\"auth\" class=\"col-md-3\">\r\n        <div class=\"card px-5 h-100 py-3 position-relative\">\r\n            <img (click)=\"toggleAuth()\" class=\"leftIcon position-absolute left-0 cursor-pointer\"\r\n                src=\"assets/tango/Image/leftIcon.svg\">\r\n            <img *ngIf=\"dataImages !== null\" class=\"w-100\" [src]=\"dataImages\" (error)=\"dataImages = null\" [alt]=\"dataImages ? 'Image' : 'Error Image'\">\r\n            <!-- <img *ngIf=\"dataImages === null\" class=\"w-100\" src=\"assets/tango/Image/baseimg.png\" alt=\"Image\"> -->\r\n            <div *ngIf=\"dataImages === null\" class=\"no-preview\">\r\n                <span class=\"mb-5\">\r\n                    <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\r\n                        xmlns=\"http://www.w3.org/2000/svg\">\r\n                        <g id=\"Group\">\r\n                            <path id=\"Vector\"\r\n                                d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\r\n                                stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                stroke-linejoin=\"round\" />\r\n                            <path id=\"Vector_2\"\r\n                                d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\r\n                                stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                stroke-linejoin=\"round\" />\r\n                        </g>\r\n                    </svg>\r\n\r\n                </span>\r\n                <span class=\"header mb-5 text-center\">Preview not available</span>\r\n                <span class=\"description mb-5 text-center\">The selected camera is not available at the\r\n                    moment.</span>\r\n            </div>\r\n           \r\n            <div class=\"card-header mt-3 px-0 border-0 min-h-10px\" >\r\n                <div class=\"col-md-12\">\r\n                    <h3 class=\"card-title align-items-start d-flex\">\r\n                        <span class=\"card-label cursor-pointer\" (click)=\"storeView(storeId)\">{{selectedStore.storeName ?? '--'}}</span>\r\n                    </h3>\r\n                    <span class=\"badge badge-light-primary mb-2\">App ID : {{selectedStore.appId ?? '--'}}</span>\r\n\r\n                </div>\r\n    \r\n            </div>\r\n            <div class=\"card-body pt-0 px-0\">\r\n                <div class=\"col-md-12\">\r\n                    <span class=\"map-subtext\">{{selectedStore?.storeProfile?.address ? selectedStore?.storeProfile?.address:'--'}} {{selectedStore?.storeProfile?.country ? selectedStore?.storeProfile?.country:'--'}} {{selectedStore?.storeProfile?.pincode ? selectedStore?.storeProfile?.pincode:'--'}}</span>\r\n                    <div class=\"flex items-center gap-5 mt-3\">\r\n                        <span class=\"text-sm text-gray-600\">\r\n                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n                                <path\r\n                                    d=\"M13.3346 14V12.6667C13.3346 11.9594 13.0537 11.2811 12.5536 10.781C12.0535 10.281 11.3752 10 10.668 10H5.33464C4.62739 10 3.94911 10.281 3.44902 10.781C2.94892 11.2811 2.66797 11.9594 2.66797 12.6667V14M10.668 4.66667C10.668 6.13943 9.47406 7.33333 8.0013 7.33333C6.52854 7.33333 5.33464 6.13943 5.33464 4.66667C5.33464 3.19391 6.52854 2 8.0013 2C9.47406 2 10.668 3.19391 10.668 4.66667Z\"\r\n                                    stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                            </svg>\r\n                            <span class=\"text-sm font-medium map-subtext text-gray-800\">\r\n                                {{selectedStore?.spocDetails?.name ?selectedStore?.spocDetails?.name:'--'}}\r\n                            </span>\r\n                        </span>\r\n                        <span class=\"text-sm text-gray-600 mx-3\">\r\n                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n                                <g clip-path=\"url(#clip0_1865_146516)\">\r\n                                    <path\r\n                                        d=\"M14.665 11.2802V13.2802C14.6657 13.4659 14.6277 13.6497 14.5533 13.8198C14.479 13.9899 14.3699 14.1426 14.233 14.2681C14.0962 14.3937 13.9347 14.4892 13.7588 14.5487C13.5829 14.6082 13.3966 14.6303 13.2117 14.6136C11.1602 14.3907 9.18966 13.6897 7.45833 12.5669C5.84755 11.5433 4.48189 10.1777 3.45833 8.56689C2.33165 6.8277 1.63049 4.84756 1.41166 2.78689C1.395 2.60254 1.41691 2.41673 1.47599 2.24131C1.53508 2.06589 1.63004 1.90469 1.75484 1.76797C1.87964 1.63126 2.03153 1.52203 2.20086 1.44724C2.37018 1.37245 2.55322 1.33374 2.73833 1.33356H4.73833C5.06187 1.33038 5.37552 1.44495 5.62084 1.65592C5.86615 1.86689 6.02638 2.15986 6.07166 2.48023C6.15608 3.12027 6.31263 3.74871 6.53833 4.35356C6.62802 4.59218 6.64744 4.8515 6.59427 5.10081C6.5411 5.35012 6.41757 5.57897 6.23833 5.76023L5.39166 6.60689C6.3407 8.27592 7.72263 9.65786 9.39166 10.6069L10.2383 9.76023C10.4196 9.58099 10.6484 9.45746 10.8977 9.40429C11.1471 9.35112 11.4064 9.37053 11.645 9.46023C12.2498 9.68593 12.8783 9.84248 13.5183 9.92689C13.8422 9.97258 14.1379 10.1357 14.3494 10.3852C14.5608 10.6348 14.6731 10.9533 14.665 11.2802Z\"\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_1865_146516\">\r\n                                        <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n                                    </clipPath>\r\n                                </defs>\r\n                            </svg>\r\n                            <span class=\"text-sm font-medium map-subtext text-gray-800\">\r\n                                {{selectedStore?.spocDetails?.contact ?selectedStore?.spocDetails?.contact:'--'}}\r\n                            </span>\r\n                        </span>\r\n                    </div>\r\n                    <div class=\"my-3\">\r\n                        <span class=\"text-sm text-gray-600\">\r\n                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n                                <path\r\n                                    d=\"M14.6654 3.99984C14.6654 3.2665 14.0654 2.6665 13.332 2.6665H2.66536C1.93203 2.6665 1.33203 3.2665 1.33203 3.99984M14.6654 3.99984V11.9998C14.6654 12.7332 14.0654 13.3332 13.332 13.3332H2.66536C1.93203 13.3332 1.33203 12.7332 1.33203 11.9998V3.99984M14.6654 3.99984L7.9987 8.6665L1.33203 3.99984\"\r\n                                    stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                            </svg>\r\n                            <span class=\"text-sm font-medium map-subtext text-gray-800\">\r\n                                {{selectedStore?.spocDetails?.email ? selectedStore?.spocDetails?.email:'--'}}\r\n                            </span>\r\n                        </span>\r\n                    </div>\r\n                    <div class=\"flex items-center gap-5 my-3\">\r\n                        <span class=\"text-sm text-gray-600 \">\r\n                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n                                <path d=\"M1.75 16C1.28587 16 0.840752 15.8156 0.512563 15.4874C0.184374 15.1592 0 14.7141 0 14.25L0 1.75C0 0.784 0.784 0 1.75 0H10.25C11.216 0 12 0.784 12 1.75V14.25C12 14.335 11.994 14.418 11.982 14.5H14.25C14.3163 14.5 14.3799 14.4737 14.4268 14.4268C14.4737 14.3799 14.5 14.3163 14.5 14.25V8.285C14.5 8.24387 14.4899 8.20338 14.4706 8.16709C14.4512 8.13081 14.4232 8.09987 14.389 8.077L13.334 7.374C13.2521 7.31937 13.1817 7.24914 13.1269 7.1673C13.0721 7.08547 13.0339 6.99365 13.0146 6.89708C12.9953 6.80051 12.9952 6.70107 13.0143 6.60446C13.0334 6.50785 13.0714 6.41595 13.126 6.334C13.1806 6.25206 13.2509 6.18167 13.3327 6.12687C13.4145 6.07207 13.5063 6.03392 13.6029 6.01461C13.6995 5.99529 13.7989 5.99519 13.8955 6.0143C13.9922 6.03342 14.0841 6.07137 14.166 6.126L15.221 6.829C15.708 7.154 16 7.7 16 8.285V14.25C16 14.7141 15.8156 15.1592 15.4874 15.4874C15.1592 15.8156 14.7141 16 14.25 16H10.75C10.6835 15.9999 10.6173 15.9912 10.553 15.974C10.454 15.991 10.353 16 10.25 16H7.25C7.05109 16 6.86032 15.921 6.71967 15.7803C6.57902 15.6397 6.5 15.4489 6.5 15.25V14H5.5V15.25C5.5 15.4489 5.42098 15.6397 5.28033 15.7803C5.13968 15.921 4.94891 16 4.75 16H1.75ZM1.5 14.25C1.5 14.388 1.612 14.5 1.75 14.5H4V13.25C4 13.0511 4.07902 12.8603 4.21967 12.7197C4.36032 12.579 4.55109 12.5 4.75 12.5H7.25C7.44891 12.5 7.63968 12.579 7.78033 12.7197C7.92098 12.8603 8 13.0511 8 13.25V14.5H10.25C10.3163 14.5 10.3799 14.4737 10.4268 14.4268C10.4737 14.3799 10.5 14.3163 10.5 14.25V1.75C10.5 1.6837 10.4737 1.62011 10.4268 1.57322C10.3799 1.52634 10.3163 1.5 10.25 1.5H1.75C1.6837 1.5 1.62011 1.52634 1.57322 1.57322C1.52634 1.62011 1.5 1.6837 1.5 1.75V14.25ZM3.75 6H4.25C4.44891 6 4.63968 6.07902 4.78033 6.21967C4.92098 6.36032 5 6.55109 5 6.75C5 6.94891 4.92098 7.13968 4.78033 7.28033C4.63968 7.42098 4.44891 7.5 4.25 7.5H3.75C3.55109 7.5 3.36032 7.42098 3.21967 7.28033C3.07902 7.13968 3 6.94891 3 6.75C3 6.55109 3.07902 6.36032 3.21967 6.21967C3.36032 6.07902 3.55109 6 3.75 6ZM3 3.75C3 3.55109 3.07902 3.36032 3.21967 3.21967C3.36032 3.07902 3.55109 3 3.75 3H4.25C4.44891 3 4.63968 3.07902 4.78033 3.21967C4.92098 3.36032 5 3.55109 5 3.75C5 3.94891 4.92098 4.13968 4.78033 4.28033C4.63968 4.42098 4.44891 4.5 4.25 4.5H3.75C3.55109 4.5 3.36032 4.42098 3.21967 4.28033C3.07902 4.13968 3 3.94891 3 3.75ZM7 6.75C7 6.55109 7.07902 6.36032 7.21967 6.21967C7.36032 6.07902 7.55109 6 7.75 6H8.25C8.44891 6 8.63968 6.07902 8.78033 6.21967C8.92098 6.36032 9 6.55109 9 6.75C9 6.94891 8.92098 7.13968 8.78033 7.28033C8.63968 7.42098 8.44891 7.5 8.25 7.5H7.75C7.55109 7.5 7.36032 7.42098 7.21967 7.28033C7.07902 7.13968 7 6.94891 7 6.75ZM7.75 3H8.25C8.44891 3 8.63968 3.07902 8.78033 3.21967C8.92098 3.36032 9 3.55109 9 3.75C9 3.94891 8.92098 4.13968 8.78033 4.28033C8.63968 4.42098 8.44891 4.5 8.25 4.5H7.75C7.55109 4.5 7.36032 4.42098 7.21967 4.28033C7.07902 4.13968 7 3.94891 7 3.75C7 3.55109 7.07902 3.36032 7.21967 3.21967C7.36032 3.07902 7.55109 3 7.75 3ZM3 9.75C3 9.55109 3.07902 9.36032 3.21967 9.21967C3.36032 9.07902 3.55109 9 3.75 9H4.25C4.44891 9 4.63968 9.07902 4.78033 9.21967C4.92098 9.36032 5 9.55109 5 9.75C5 9.94891 4.92098 10.1397 4.78033 10.2803C4.63968 10.421 4.44891 10.5 4.25 10.5H3.75C3.55109 10.5 3.36032 10.421 3.21967 10.2803C3.07902 10.1397 3 9.94891 3 9.75ZM7.75 9H8.25C8.44891 9 8.63968 9.07902 8.78033 9.21967C8.92098 9.36032 9 9.55109 9 9.75C9 9.94891 8.92098 10.1397 8.78033 10.2803C8.63968 10.421 8.44891 10.5 8.25 10.5H7.75C7.55109 10.5 7.36032 10.421 7.21967 10.2803C7.07902 10.1397 7 9.94891 7 9.75C7 9.55109 7.07902 9.36032 7.21967 9.21967C7.36032 9.07902 7.55109 9 7.75 9Z\" fill=\"#667085\"/>\r\n                                </svg>\r\n                            <span class=\"text-sm font-medium map-subtext text-gray-800\">\r\n                                {{selectedStore?.storeType?.type ? selectedStore?.storeType?.type:'--'}}\r\n                            </span>\r\n                        </span>\r\n                        <span class=\"text-sm text-gray-600 mx-3\">\r\n                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n                                <path d=\"M2.47537 5.26383L2.42852 5.33701C1.95161 6.18313 2.46661 7.24243 3.37228 7.36366C3.45708 7.37402 3.53516 7.37939 3.61088 7.37939C4.10907 7.37939 4.54948 7.16583 4.85675 6.8323L5.41008 6.23168L5.96153 6.83403C6.26477 7.16525 6.70402 7.37939 7.20582 7.37939C7.70532 7.37939 8.14719 7.1649 8.45011 6.83403L9.00329 6.22979L9.55648 6.83403C9.8594 7.1649 10.3013 7.37939 10.8008 7.37939C11.3003 7.37939 11.7421 7.1649 12.0451 6.83403L12.5982 6.22979L13.1514 6.83403C13.4543 7.1649 13.8962 7.37939 14.3957 7.37939C14.4688 7.37939 14.5493 7.374 14.6334 7.36377C15.5593 7.23713 16.0768 6.11962 15.5288 5.26433C15.5287 5.26427 15.5287 5.26422 15.5287 5.26416L13.9463 2.79691L13.9463 2.79691L13.9456 2.79579C13.9453 2.79543 13.9434 2.79328 13.9388 2.79079C13.9326 2.78742 13.9254 2.78564 13.9188 2.78564H4.0823C4.07566 2.78564 4.06852 2.78742 4.06229 2.79079C4.05723 2.79353 4.0554 2.79585 4.0554 2.79585L4.05505 2.79641L2.47537 5.26383ZM3.83956 9.74376C3.76484 9.74785 3.68951 9.74993 3.61363 9.74993C3.60078 9.74993 3.58796 9.74987 3.57517 9.74974V12.4821V14.2231C3.57517 14.7599 4.02116 15.2142 4.58956 15.2142H13.4115C13.9799 15.2142 14.4259 14.7599 14.4259 14.2231V12.4821V9.74979C14.4149 9.74988 14.404 9.74993 14.393 9.74993C14.3154 9.74993 14.2382 9.74775 14.1615 9.74345V12.4821V13.2321H13.4115H4.58956H3.83956V12.4821V9.74376Z\" stroke=\"#667085\" stroke-width=\"1.5\"/>\r\n                                </svg>\r\n                            <span class=\"text-sm font-medium map-subtext text-gray-800\">\r\n                                {{selectedStore?.storeType?.name ? selectedStore?.storeType?.name:'--'}}\r\n                            </span>\r\n                        </span>\r\n                    </div>\r\n    \r\n                    <div class=\"flex items-center gap-5 my-3\">\r\n                        <span class=\"text-sm text-gray-600\">\r\n                            <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_1865_146529)\">\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_1865_146529\">\r\n                                        <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n                                    </clipPath>\r\n                                </defs>\r\n                            </svg>\r\n                            <span class=\"text-sm font-medium text-gray-800\">\r\n                                {{dataStoreMap?.hourlyData?.openTime ? dataStoreMap?.hourlyData?.openTime:'--'}} - {{dataStoreMap?.hourlyData?.closeTime ? dataStoreMap?.hourlyData?.closeTime:'--'}}\r\n                            </span>\r\n                        </span>\r\n                    </div>\r\n                    <div class=\"flex flex-col my-3\">\r\n                        <a class=\"map-avg\">\r\n                            {{dataStoreMap?.avgData?.avgFootfall ? dataStoreMap?.avgData?.avgFootfall:'--'}}\r\n                        </a>\r\n                        <br>\r\n                        <span class=\"text-sm text-gray-700 map-avgtest\">\r\n                            Avg Footfall \r\n                            <span><svg 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_1865_146536)\">\r\n                                        <path\r\n                                            d=\"M6 8V6M6 4H6.005M11 6C11 8.76142 8.76142 11 6 11C3.23858 11 1 8.76142 1 6C1 3.23858 3.23858 1 6 1C8.76142 1 11 3.23858 11 6Z\"\r\n                                            stroke=\"#98A2B3\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n                                            stroke-linejoin=\"round\" />\r\n                                    </g>\r\n                                    <defs>\r\n                                        <clipPath id=\"clip0_1865_146536\">\r\n                                            <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n                                        </clipPath>\r\n                                    </defs>\r\n                                </svg></span>\r\n                        </span>\r\n                    </div>\r\n                    <div class=\"flex flex-col my-3\">\r\n                        <a class=\"map-avg\">\r\n                            {{dataStoreMap?.avgData?.avgWeekdayFootfall ? dataStoreMap?.avgData?.avgWeekdayFootfall:'--'}}\r\n                        </a>\r\n                        <br>\r\n                        <span class=\"text-sm text-gray-700 map-avgtest\">\r\n                            Avg Weekday Footfall <span><svg 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_1865_146536)\">\r\n                                        <path\r\n                                            d=\"M6 8V6M6 4H6.005M11 6C11 8.76142 8.76142 11 6 11C3.23858 11 1 8.76142 1 6C1 3.23858 3.23858 1 6 1C8.76142 1 11 3.23858 11 6Z\"\r\n                                            stroke=\"#98A2B3\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n                                            stroke-linejoin=\"round\" />\r\n                                    </g>\r\n                                    <defs>\r\n                                        <clipPath id=\"clip0_1865_146536\">\r\n                                            <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n                                        </clipPath>\r\n                                    </defs>\r\n                                </svg></span>\r\n                        </span>\r\n                    </div>\r\n                    <div class=\"flex flex-col my-3\">\r\n                        <a class=\"map-avg\">\r\n                            {{dataStoreMap?.avgData?.avgWeekendFootfall ? dataStoreMap?.avgData?.avgWeekendFootfall:'--'}}\r\n                        </a>\r\n                        <br>\r\n                        <span class=\"text-sm text-gray-700 map-avgtest\">\r\n                            Avg Weekend Footfall <span><svg 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_1865_146536)\">\r\n                                        <path\r\n                                            d=\"M6 8V6M6 4H6.005M11 6C11 8.76142 8.76142 11 6 11C3.23858 11 1 8.76142 1 6C1 3.23858 3.23858 1 6 1C8.76142 1 11 3.23858 11 6Z\"\r\n                                            stroke=\"#98A2B3\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n                                            stroke-linejoin=\"round\" />\r\n                                    </g>\r\n                                    <defs>\r\n                                        <clipPath id=\"clip0_1865_146536\">\r\n                                            <rect width=\"12\" height=\"12\" fill=\"white\" />\r\n                                        </clipPath>\r\n                                    </defs>\r\n                                </svg></span>\r\n                        </span>\r\n                    </div>\r\n    \r\n    \r\n                    \r\n                </div>\r\n            </div>\r\n            <div class=\"card-footer border-0 pt-0 px-0\">\r\n                <div class=\"row\">\r\n                    <div class=\"mt-5 col-lg-6\">\r\n                        <button class=\"btn btn-outline w-100 px-2\" routerLink=\"/manage/controlcenter\"> <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n                            <g clip-path=\"url(#clip0_7543_11544)\">\r\n                            <path d=\"M1.58334 10C1.58334 10 4.91668 3.33337 10.75 3.33337C16.5833 3.33337 19.9167 10 19.9167 10C19.9167 10 16.5833 16.6667 10.75 16.6667C4.91668 16.6667 1.58334 10 1.58334 10Z\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                            <path d=\"M10.75 12.5C12.1307 12.5 13.25 11.3808 13.25 10C13.25 8.61933 12.1307 7.50004 10.75 7.50004C9.3693 7.50004 8.25001 8.61933 8.25001 10C8.25001 11.3808 9.3693 12.5 10.75 12.5Z\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                            </g>\r\n                            <defs>\r\n                            <clipPath id=\"clip0_7543_11544\">\r\n                            <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0.75)\"/>\r\n                            </clipPath>\r\n                            </defs>\r\n                            </svg></span><span class=\"ms-2\">Watch Live</span></button>\r\n                    </div>\r\n                    <div class=\"mt-5 col-lg-6\">\r\n                        <button class=\"btn btn-light-primary1 w-100 px-2\" (click)=\"storeView(storeId)\"><span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n                            <path d=\"M15.75 10.8333V15.8333C15.75 16.2754 15.5744 16.6993 15.2618 17.0118C14.9493 17.3244 14.5254 17.5 14.0833 17.5H4.91667C4.47464 17.5 4.05072 17.3244 3.73816 17.0118C3.42559 16.6993 3.25 16.2754 3.25 15.8333V6.66667C3.25 6.22464 3.42559 5.80072 3.73816 5.48816C4.05072 5.17559 4.47464 5 4.91667 5H9.91667M13.25 2.5H18.25M18.25 2.5V7.5M18.25 2.5L9.08333 11.6667\" stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                            </svg></span><span class=\"ms-2\">View more</span></button>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    \r\n    </div>\r\n</div>\r\n\r\n<!-- <div *ngIf=\"loading\" class=\"row px-3 loader card  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 px-3\">\r\n    <div class=\"card\">\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 Store map</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 { TrafficService } from '../../services/traffic.service';\r\n \r\n@Component({\r\n  selector: 'lib-custom-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:TrafficService) { }\r\n  ngOnInit(): void {\r\n    this.instanceId = crypto.randomUUID();\r\n    this.authService.dropDownTrigger.subscribe((e)=>{           \r\n      if(e !== this.instanceId){        \r\n        this.showDropdown = false\r\n        this.cd.detectChanges()\r\n      }\r\n    })\r\n  }\r\n \r\n  ngOnChanges(changes: SimpleChanges): void {\r\n \r\n    if (changes['items'] && this.items?.length) {\r\n      this.initializeItems();\r\n    }\r\n    if (changes['selectedValues'] && Array.isArray(changes['selectedValues']?.currentValue) && changes['selectedValues']?.currentValue?.length > 0 && changes['selectedValues']?.currentValue[0]) {            \r\n      this.updateSelectedValues();\r\n    }\r\n  }\r\n \r\n  initializeItems() {\r\n    this.filteredValues = this.items.map((item: any) => ({ ...item }));\r\n    this.updateSelectedValues()\r\n  }\r\n \r\n  updateSelectedValues() {    \r\n    this.selectedValues?.forEach((selectedItem: any) => {\r\n      const item = this.filteredValues?.find((filteredItem: any) => filteredItem?.[this.idField] === selectedItem?.[this.idField]);\r\n      if (item) {\r\n        item.isSelected = true;\r\n      }\r\n    });\r\n   \r\n  }\r\n \r\n  openDropdown(event: any) {\r\n    this.authService.dropDownTrigger.next(this.instanceId)\r\n    event.stopPropagation();\r\n    this.showDropdown = !this.showDropdown;\r\n  }\r\n \r\n  onInput(event: any) {\r\n    if (!event.target.value) {\r\n      this.filteredValues = [...this.items];\r\n    } else {\r\n      const searchTerm = event.target.value.toLowerCase();\r\n      this.filteredValues = this.items.filter((item: any) =>\r\n        item[this.searchField].toLowerCase().includes(searchTerm)\r\n      );\r\n    }\r\n    this.updateSelectedValues();\r\n    this.cd.detectChanges();\r\n  }\r\n \r\n  onSelect(event: any, item: any) {    \r\n    if (this.multi) {\r\n      if (event.currentTarget.checked) {\r\n        this.selectedValues.push(item );        \r\n      } else {\r\n        this.selectedValues = this.selectedValues.filter((elem: any) => elem[this.idField] !== item[this.idField]);\r\n      }\r\n    } else {\r\n      this.selectedValues = [{ ...item }];\r\n      this.filteredValues.forEach((element:any) => {\r\n        if(element[this.idField] !== item[this.idField]){\r\n          element.isSelected = false\r\n        }\r\n      });\r\n      this.showDropdown = false;\r\n    }\r\n \r\n    const valuesToEmit = this.selectedValues.map((value: any) => {\r\n      const selectedItem = { ...value };\r\n      delete selectedItem.isSelected;\r\n      return selectedItem;\r\n    });\r\n \r\n    this.cd.detectChanges();\r\n    this.emitSelectedValues(valuesToEmit);\r\n \r\n  }\r\n \r\n  onSelectAll(event: any) {\r\n    const selectAll = event.currentTarget.checked;\r\n    this.filteredValues.forEach((item: any) => item.isSelected = selectAll);\r\n \r\n    if (selectAll) {\r\n      this.selectedValues = [...this.filteredValues];\r\n    } else {\r\n      this.selectedValues = [];\r\n    }\r\n \r\n    const valuesToEmit = this.selectedValues.map((value: any) => {\r\n      const { isSelected, ...selectedItem } = value;\r\n      return selectedItem;\r\n    });\r\n \r\n    this.cd.detectChanges();\r\n    this.emitSelectedValues(valuesToEmit);\r\n  }\r\n \r\n \r\n  emitSelectedValues(values: any[]) {\r\n    if (this.multi) {\r\n      this.selected.emit(values);\r\n    } else {\r\n      this.selected.emit(values[0]);\r\n    }\r\n  }\r\n \r\n  checkIfAllSelected() {\r\n    return this.filteredValues.every((item: any) => item.isSelected);\r\n  }\r\n}","<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 > 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   {{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 {\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  ViewChild,\r\n} from \"@angular/core\";\r\nimport { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\r\nimport { TrafficService } from \"../../services/traffic.service\";\r\nimport { Subject, takeUntil } from \"rxjs\";\r\nimport { NgbActiveModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { ToastService } from \"tango-app-ui-shared\";\r\nimport * as XLSX from \"xlsx\";\r\nimport { DatePipe } from \"@angular/common\";\r\nimport { ExcelService } from \"../../services/excel.service\";\r\n\r\n@Component({\r\n  selector: \"lib-add-nob\",\r\n  templateUrl: \"./add-nob.component.html\",\r\n  styleUrl: \"./add-nob.component.scss\",\r\n  providers: [DatePipe],\r\n})\r\nexport class AddNobComponent implements OnInit, OnDestroy {\r\n  @Input() type: any;\r\n  @Input() viewData: any;\r\n  nobForm: FormGroup;\r\n  private readonly destroy$ = new Subject();\r\n  constructor(\r\n    private fb: FormBuilder,\r\n    private service: TrafficService,\r\n    private excelService: ExcelService,\r\n    private activeModal: NgbActiveModal,\r\n    private ts: ToastService,\r\n    private cd: ChangeDetectorRef,\r\n    private datePipe: DatePipe\r\n  ) {}\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next(true);\r\n    this.destroy$.complete();\r\n  }\r\n  clientId: any;\r\n  maxDate: string = \"\";\r\n  isEditEnabled = false;\r\n  clientData: any;\r\n  ngOnInit(): void {\r\n    let data: any = JSON.parse(localStorage.getItem(\"header-filters\") || \"\");\r\n    this.clientId = data.client;\r\n    let client: any = JSON.parse(localStorage.getItem(\"client-details\") || \"\");\r\n    this.clientData = client;\r\n    this.getNobStoreList(data.client);\r\n    this.setMaxDate();\r\n    if (this.type === \"editView\" || this.type === \"view\") {\r\n      this.storeName = this.viewData.storeName;\r\n      this.storeId = this.viewData.storeId;\r\n      this.storeCode = this.viewData.storeCode;\r\n      this.dateValue = this.viewData.nobDate\r\n        ? new Date(this.viewData.nobDate).toISOString().split(\"T\")[0]\r\n        : null;\r\n\r\n      this.nobCount = this.viewData.nobCount;\r\n\r\n      this.zoneList = this.viewData.zonewisenob; // keep values\r\n      if (this.type === \"editView\") {\r\n        this.isEditEnabled = true;\r\n      } else {\r\n        this.isEditEnabled = false;\r\n      }\r\n    }\r\n  }\r\n\r\n  cancelEdit() {\r\n    this.isEditEnabled = false;\r\n\r\n    if (this.viewData?.zoneList) {\r\n      this.zoneList = JSON.parse(JSON.stringify(this.viewData.zoneList));\r\n    } else {\r\n      this.zoneList = [];\r\n    }\r\n\r\n    this.cancel();\r\n  }\r\n\r\n  storeList: any[] = [];\r\n  getNobStoreList(client: any) {\r\n    this.service\r\n      .getNOBStoreList(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.storeList = res.data.result;\r\n          }\r\n        },\r\n        error: (err) => {},\r\n      });\r\n  }\r\n\r\n  storeName: any;\r\n  storeId: any;\r\n  dateValue: any;\r\n  storeCode: any;\r\n  nobCount: any;\r\n  zoneShow = false;\r\n  onNOBStoreSelect(event: any, type: \"storeName\" | \"storeId\"): void {\r\n    if (!event) {\r\n      this.ts.getErrorToast(\"storeName or storeId is undefined or invalid\");\r\n      return;\r\n    }\r\n    if (type === \"storeName\") {\r\n      this.storeName = event.storeName;\r\n      const store = this.storeList.find(\r\n        (store) => store.storeName === event.storeName\r\n      );\r\n      if (store) {\r\n        this.storeId = store.storeId;\r\n        this.storeCode = store.storeCode;\r\n      } else {\r\n        this.storeId = \"\";\r\n        this.storeCode = \"\";\r\n      }\r\n    } else if (type === \"storeId\") {\r\n      this.storeId = event.storeId;\r\n      const store = this.storeList.find(\r\n        (store) => store.storeId === event.storeId\r\n      );\r\n      if (store) {\r\n        this.storeName = store.storeName;\r\n        this.storeCode = store.storeCode;\r\n      } else {\r\n        this.storeName = \"\";\r\n        this.storeCode = \"\";\r\n      }\r\n    }\r\n    this.zoneShow = true;\r\n    if (this.isEnabled) {\r\n      this.getZoneList(this.storeId);\r\n    }\r\n    // console.log('storeName',this.storeId);\r\n  }\r\n  omit_special_char(event: any) {\r\n    var k;\r\n    k = event.charCode; //         k = event.keyCode;  (Both can be used)\r\n    return k == 8 || k == 32 || (k >= 48 && k <= 57);\r\n  }\r\n  setMaxDate(): void {\r\n    const today = new Date();\r\n    const yesterday = new Date(today);\r\n    yesterday.setDate(today.getDate() - 1); // Set the max date to yesterday\r\n    this.dateValue = yesterday.toISOString().split(\"T\")[0];\r\n    // Format the date as yyyy-MM-dd\r\n    this.maxDate = yesterday.toISOString().split(\"T\")[0];\r\n  }\r\n  onDateChange(event: any): void {\r\n    const selectedDate = event.target.value;\r\n    if (selectedDate > this.maxDate) {\r\n      this.ts.getErrorToast(\"Invalid date selected!\");\r\n    }\r\n  }\r\n  cancel() {\r\n    this.activeModal.close(\"close\");\r\n  }\r\n  erroShow: any = \"\";\r\n  isSubmitting = false;\r\n  onSubmit() {\r\n    // ⛔ STOP if already submitting\r\n    if (this.isSubmitting) {\r\n      return;\r\n    }\r\n\r\n    const overallNob = Number(this.nobCount) || 0;\r\n\r\n    const zoneTotal = this.zonewisenob.reduce(\r\n      (sum: number, z: any) => sum + (Number(z.nobCount) || 0),\r\n      0\r\n    );\r\n\r\n    if (zoneTotal > overallNob) {\r\n      this.erroShow = \"Zone-wise NoB cannot exceed overall NoB count\";\r\n      return;\r\n    }\r\n\r\n    // ✅ LOCK BUTTON\r\n    this.isSubmitting = true;\r\n\r\n    const obj = {\r\n      bills: [\r\n        {\r\n          storeCode: this.storeCode ? this.storeCode : this.storeId,\r\n          nobDate: this.dateValue,\r\n          nobCount: Number(this.nobCount),\r\n          zonewisenob: this.zonewisenob,\r\n        },\r\n      ],\r\n      clientId: this.clientId,\r\n    };\r\n\r\n    this.service\r\n      .getNOBDataList(obj)\r\n      ?.pipe(takeUntil(this.destroy$))\r\n      .subscribe({\r\n        next: (res: any) => {\r\n          if (res?.code === 200) {\r\n            this.ts.getSuccessToast(res.message);\r\n            this.activeModal.close(\"submit\");\r\n          } else {\r\n            this.isSubmitting = false;\r\n            this.ts.getErrorToast(\"Unexpected response format\");\r\n          }\r\n        },\r\n        error: (err: any) => {\r\n          this.isSubmitting = false;\r\n          this.ts.getErrorToast(err?.error?.error || \"Something went wrong\");\r\n        },\r\n        complete: () => {\r\n          // 🔓 UNLOCK BUTTON\r\n          this.isSubmitting = false;\r\n        },\r\n      });\r\n  }\r\n\r\n  typeNOB = \"single\";\r\n  nobStore(type: any) {\r\n    this.typeNOB = type;\r\n  }\r\n  dataTableShow = false;\r\n  dataTableShow1 = false;\r\n  tableHeaders: any;\r\n  convertedData: any;\r\n  @ViewChild(\"inputFile\") inputFile: ElementRef;\r\n  onUpload(event: any): void {\r\n    const file = event.target.files?.[0];\r\n    if (!file) return;\r\n\r\n    const reader = new FileReader();\r\n\r\n    reader.onload = (e: any) => {\r\n      try {\r\n        const binaryData = e.target.result;\r\n\r\n        const workbook: XLSX.WorkBook = XLSX.read(binaryData, {\r\n          type: \"binary\",\r\n        });\r\n\r\n        const sheetName = workbook.SheetNames[0];\r\n        const sheet = workbook.Sheets[sheetName];\r\n        if (sheetName !== \"NOB\") {\r\n          this.ts.getErrorToast(\"Please upload a valid NOB Excel file\");\r\n          this.resetFileInput();\r\n          return;\r\n        }\r\n        const sheetData: any[][] = XLSX.utils.sheet_to_json(sheet, {\r\n          header: 1,\r\n          defval: null,\r\n        });\r\n\r\n        if (!sheetData || sheetData.length < 2) {\r\n          this.ts.getErrorToast(\"Excel file is empty\");\r\n          return;\r\n        }\r\n\r\n        const STORE_ID_HEADERS = [\"storeid\", \"store id\", \"StoreId\", \"Store Id\"];\r\n        const DATE_HEADERS = [\r\n          \"date\",\r\n          \"nobdate\",\r\n          \"nob date\",\r\n          \"NOBDate\",\r\n          \"NoB Date\",\r\n        ];\r\n        const NOB_HEADERS = [\r\n          \"nobcount\",\r\n          \"overallnobcount\",\r\n          \"overall nob count\",\r\n          \"NOBCount\",\r\n          \"Overall NoB Count\",\r\n        ];\r\n\r\n        const rawHeaders = sheetData[0];\r\n\r\n        const headers = rawHeaders.map((h) => h);\r\n\r\n        const isStoreValid = STORE_ID_HEADERS.includes(headers[0]);\r\n        const isDateValid = DATE_HEADERS.includes(headers[1]);\r\n        const isNobValid = NOB_HEADERS.includes(headers[2]);\r\n        if (!isStoreValid || !isDateValid || !isNobValid) {\r\n          this.ts.getErrorToast(\r\n            \"Invalid Excel file. First columns must be Store Id, NoB Date, Overall NoB Count\"\r\n          );\r\n          return;\r\n        }\r\n        const rows = sheetData.slice(1);\r\n\r\n        const bills = rows\r\n          .map((row: any[], rowIndex: number) => {\r\n            const isEmptyRow = row.every(\r\n              (cell) =>\r\n                cell === null ||\r\n                cell === undefined ||\r\n                (typeof cell === \"string\" && cell === \"\")\r\n            );\r\n            if (isEmptyRow) return null;\r\n\r\n            const storeId = String(row[0] ?? \"\");\r\n            if (!storeId) {\r\n              throw new Error(`Missing Store Code at row ${rowIndex + 2}`);\r\n            }\r\n\r\n            let nobDate: any = row[1];\r\n            if (nobDate === null || nobDate === undefined || nobDate === \"\") {\r\n              throw new Error(`Missing Date at row ${rowIndex + 2}`);\r\n            }\r\n\r\n            if (typeof nobDate === \"number\") {\r\n              nobDate = this.convertExcelDate(nobDate);\r\n            } else if (nobDate instanceof Date) {\r\n            } else if (typeof nobDate === \"string\") {\r\n              const parsed = new Date(nobDate);\r\n              if (isNaN(parsed.getTime())) {\r\n                throw new Error(`Invalid Date format at row ${rowIndex + 2}`);\r\n              }\r\n              nobDate = parsed;\r\n            } else {\r\n              throw new Error(`Invalid Date format at row ${rowIndex + 2}`);\r\n            }\r\n\r\n            const MIN_NOB = 0;\r\n            const MAX_NOB = 9999;\r\n            let nobCount: any = row[2];\r\n\r\n            if (\r\n              nobCount === null ||\r\n              nobCount === undefined ||\r\n              nobCount === \"\"\r\n            ) {\r\n              throw new Error(`Missing NoB count at row ${rowIndex + 2}`);\r\n            }\r\n\r\n            nobCount = Number(nobCount);\r\n\r\n            if (isNaN(nobCount)) {\r\n              throw new Error(`Invalid NoB count at row ${rowIndex + 2}`);\r\n            }\r\n\r\n            if (nobCount < MIN_NOB || nobCount > MAX_NOB) {\r\n              throw new Error(\r\n                `NoB count must be between ${MIN_NOB} and ${MAX_NOB} at row`\r\n              );\r\n            }\r\n\r\n            const zonewisenob = headers\r\n              .slice(3)\r\n              .map((zoneName, index) => {\r\n                const raw = row[index + 3];\r\n\r\n                if (\r\n                  raw === null ||\r\n                  raw === undefined ||\r\n                  (typeof raw === \"string\" && raw === \"\")\r\n                ) {\r\n                  return null;\r\n                }\r\n\r\n                const value = Number(raw);\r\n                if (isNaN(value)) {\r\n                  throw new Error(\r\n                    `Invalid Zone NoB at row ${rowIndex + 2} (${zoneName})`\r\n                  );\r\n                }\r\n\r\n                return {\r\n                  zoneName,\r\n                  nobCount: value,\r\n                };\r\n              })\r\n              .filter(Boolean);\r\n\r\n            const zoneTotal = zonewisenob.reduce(\r\n              (sum: number, z: any) => sum + z.nobCount,\r\n              0\r\n            );\r\n\r\n            if (zoneTotal > nobCount) {\r\n              throw new Error(\r\n                `Zone-wise NoB cannot exceed overall NoB (Row ${rowIndex + 2})`\r\n              );\r\n            }\r\n\r\n            return {\r\n              storeCode: storeId,\r\n              nobDate: this.datePipe.transform(nobDate, \"yyyy-MM-dd\"),\r\n              nobCount,\r\n              zonewisenob,\r\n            };\r\n          })\r\n          .filter(Boolean);\r\n\r\n        if (!bills.length) {\r\n          this.ts.getErrorToast(\"No valid rows found in Excel\");\r\n          return;\r\n        }\r\n\r\n        this.convertedData = {\r\n          clientId: this.clientId,\r\n          bills,\r\n        };\r\n        this.dataTableShow = true;\r\n        this.ts.getSuccessToast(\"File uploaded successfully\");\r\n      } catch (err: any) {\r\n        console.error(err);\r\n        this.ts.getErrorToast(err.message || \"Invalid Excel file\");\r\n      } finally {\r\n        this.resetFileInput();\r\n        this.cd.detectChanges();\r\n      }\r\n    };\r\n\r\n    reader.readAsBinaryString(file);\r\n  }\r\n\r\n  resetFileInput(): void {\r\n    if (this.inputFile && this.inputFile.nativeElement) {\r\n      this.inputFile.nativeElement.value = \"\";\r\n    }\r\n  }\r\n\r\n  convertExcelDate(excelDate: number): string {\r\n    const baseDate = new Date(1900, 0, 1);\r\n    const correctedDate = new Date(\r\n      baseDate.getTime() + (excelDate - 1) * 86400000\r\n    );\r\n    return correctedDate.toISOString().split(\"T\")[0];\r\n  }\r\n\r\n  proceed() {\r\n    this.service\r\n      .getNOBDataList(this.convertedData)\r\n      ?.pipe(takeUntil(this.destroy$))\r\n      .subscribe({\r\n        next: (res: any) => {\r\n          if (res.code === 200 && res) {\r\n            const allMessages = res.message;\r\n            this.ts.getSuccessToast(allMessages);\r\n            this.activeModal.close(\"submit\");\r\n          } else {\r\n            this.ts.getErrorToast(\"Unexpected response format\");\r\n          }\r\n        },\r\n        error: (err: any) => {\r\n          this.ts.getErrorToast(err.error.error);\r\n        },\r\n      });\r\n  }\r\n\r\n  isEnabled = false;\r\n  zoneList: any = [];\r\n  onCheckboxChange(event: any) {\r\n    this.isEnabled = event.target.checked;\r\n    if (this.isEnabled) {\r\n      this.getZoneList(this.storeId);\r\n    } else {\r\n      this.zoneList = [];\r\n    }\r\n  }\r\n\r\n  getZoneList(store: any) {\r\n    this.service\r\n      .getZoneList({ storeId: [store] })\r\n      ?.pipe(takeUntil(this.destroy$))\r\n      .subscribe({\r\n        next: (res: any) => {\r\n          if (res && res.code === 200) {\r\n            this.zoneList = res?.data;\r\n          } else {\r\n            this.zoneList = [];\r\n          }\r\n        },\r\n        error: (err) => {\r\n          this.zoneList = [];\r\n        },\r\n      });\r\n  }\r\n\r\n  zonewisenob: any[] = [];\r\n\r\n  onNobChange() {\r\n    this.zonewisenob = this.zoneList.map((zone: any) => ({\r\n      zoneName: zone.tagName ? zone.tagName : zone.zoneName,\r\n      nobCount: Number(zone.nobCount) || 0,\r\n    }));\r\n  }\r\n  download() {\r\n    this.service\r\n      .getZoneTemplate({ clientId: this.clientId || \"\" })\r\n      .pipe(takeUntil(this.destroy$))\r\n      .subscribe({\r\n        next: (res: any) => {\r\n          if (res) {\r\n            this.excelService.saveAsExcelFile1(res, \"NOB Upload Template\");\r\n          } else {\r\n            this.ts.getErrorToast(\"File is empty\");\r\n          }\r\n        },\r\n        error: (err: any) => {\r\n          const errorMsg =\r\n            err.error?.error || err.error?.message || err.message || err.error;\r\n          (\"An error occurred while downloading file\");\r\n\r\n          this.ts.getErrorToast(errorMsg);\r\n        },\r\n      });\r\n  }\r\n}\r\n","<div *ngIf=\"type !=='editView' && type !== 'view'\" class=\"card pt-0 pb-3 scroll\">\r\n    <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n        <div class=\"my-5 d-flex\">\r\n            <div *ngIf=\"type ==='add'\" class=\"symbol symbol-75px symbol-circle\">\r\n                <img alt=\"Pic\" src=\"./assets/tango/Icons/add-store-icon.svg\">\r\n            </div>\r\n            <div *ngIf=\"type ==='reupload'\" 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=\"#DAF1FF\"/>\r\n                    <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#EAF8FF\" stroke-width=\"8\"/>\r\n                    <path d=\"M37 31V35C37 35.5304 36.7893 36.0391 36.4142 36.4142C36.0391 36.7893 35.5304 37 35 37H21C20.4696 37 19.9609 36.7893 19.5858 36.4142C19.2107 36.0391 19 35.5304 19 35V31M33 24L28 19M28 19L23 24M28 19V31\" stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                    </svg>\r\n                    \r\n            </div>\r\n        </div>\r\n        <div class=\"row w-100\">\r\n            <div *ngIf=\"type ==='add'\" class=\"col-md-12\">\r\n                <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Add Single NoB</a>\r\n            </div>\r\n            <div *ngIf=\"type ==='reupload'\" class=\"col-md-12\">\r\n                <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Upload NoB for</a>\r\n            </div>\r\n<div  *ngIf=\"type ==='reupload'\" class=\"d-flex align-items-center mt-5\">\r\n            <div class=\"form-check w-50 cursor-pointer ps-5\" (click)=\"nobStore('single')\" [ngClass]=\"typeNOB ==='single' ? 'form-check-inline':'form-check-inline-none'\" >\r\n                <svg *ngIf=\"typeNOB ==='single'\" style=\"margin-top: -5px !important;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n                    <rect x=\"0.5\" y=\"0.5\" width=\"15\" height=\"15\" rx=\"7.5\" fill=\"#EAF8FF\"/>\r\n                    <rect x=\"0.5\" y=\"0.5\" width=\"15\" height=\"15\" rx=\"7.5\" stroke=\"#00A3FF\"/>\r\n                    <circle cx=\"8\" cy=\"8\" r=\"3\" fill=\"#00A3FF\"/>\r\n                  </svg>\r\n\r\n                  <svg *ngIf=\"typeNOB !=='single'\" style=\"margin-top: -5px !important;\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                    <rect x=\"0.5\" y=\"0.5\" width=\"15\" height=\"15\" rx=\"7.5\" fill=\"white\"/>\r\n                    <rect x=\"0.5\" y=\"0.5\" width=\"15\" height=\"15\" rx=\"7.5\" stroke=\"#D0D5DD\"/>\r\n                    </svg>\r\n                <!-- <input class=\"form-check-input ms-10\" type=\"radio\" name=\"inlineRadioOptions\" id=\"inlineRadio1\" value=\"option1\"> -->\r\n                <span class=\"ms-3 pt-12\" [ngClass]=\"typeNOB ==='single' ? 'form-text-primary ':'form-defult'\">Single Store</span>\r\n            </div>\r\n            <div class=\"form-check  w-50 cursor-pointer ps-5\" (click)=\"nobStore('multiple')\" [ngClass]=\"typeNOB ==='multiple' ? 'form-check-inline':'form-check-inline-none'\">\r\n                <svg *ngIf=\"typeNOB ==='multiple'\" style=\"margin-top: -5px !important;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n                    <rect x=\"0.5\" y=\"0.5\" width=\"15\" height=\"15\" rx=\"7.5\" fill=\"#EAF8FF\"/>\r\n                    <rect x=\"0.5\" y=\"0.5\" width=\"15\" height=\"15\" rx=\"7.5\" stroke=\"#00A3FF\"/>\r\n                    <circle cx=\"8\" cy=\"8\" r=\"3\" fill=\"#00A3FF\"/>\r\n                  </svg>\r\n\r\n                  <svg *ngIf=\"typeNOB !=='multiple'\" style=\"margin-top: -5px !important;\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                    <rect x=\"0.5\" y=\"0.5\" width=\"15\" height=\"15\" rx=\"7.5\" fill=\"white\"/>\r\n                    <rect x=\"0.5\" y=\"0.5\" width=\"15\" height=\"15\" rx=\"7.5\" stroke=\"#D0D5DD\"/>\r\n                    </svg>\r\n                    <span class=\"ms-3 pt-12\" [ngClass]=\"typeNOB ==='multiple' ? 'form-text-primary':'form-defult'\">Multiple Stores</span>\r\n              \r\n            </div>\r\n            </div>\r\n            <div *ngIf=\"typeNOB ==='single'\" class=\"w-100 h-0px scroll\">\r\n                <div class=\"mt-5\">\r\n                    <div class=\"row px-0 me-3\">\r\n                        <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n                            <label for=\"storeName\" class=\"form-label\">Store Name<span\r\n                                    class=\"alert-required text-danger\"> *</span></label>\r\n                            <lib-custom-select [items]=\"storeList\" [multi]=\"false\" [searchField]=\"'storeName'\"\r\n                                [idField]=\"'storeName'\" (selected)=\"onNOBStoreSelect($event, 'storeName')\"\r\n                                [selectedValues]=\"[{ storeName: storeName }]\">\r\n                            </lib-custom-select>\r\n                        </div>\r\n\r\n                        <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n                            <label for=\"storeID\" class=\"form-label\">Store ID /<span *ngIf=\"type !=='add'\"> Store Code</span><span *ngIf=\"type ==='add'\"> Reference Code</span>  <span\r\n                                    class=\"alert-required text-danger\"> *</span></label>\r\n                            <lib-custom-select [items]=\"storeList\" [multi]=\"false\" [searchField]=\"'storeId'\"\r\n                                [idField]=\"'storeId'\" (selected)=\"onNOBStoreSelect($event, 'storeId')\"\r\n                                [selectedValues]=\"[{ storeId: storeId }]\">\r\n                            </lib-custom-select>\r\n                        </div>\r\n\r\n                        <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n                            <label for=\"Date\" class=\"form-label\">Select Date <span\r\n                                    class=\"alert-required text-danger\">*</span></label>\r\n                            <input type=\"date\" class=\"form-control\" id=\"myDate\" [(ngModel)]=\"dateValue\"\r\n                                (change)=\"onDateChange($event)\"  [max]=\"maxDate\">\r\n                        </div>\r\n                        <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n                            <label for=\"count\" class=\"form-label\">NOB Count <span\r\n                                    class=\"alert-required text-danger\">*</span></label>\r\n                            <input type=\"text\" class=\"form-control\" [(ngModel)]=\"nobCount\"  maxlength=\"4\"\r\n  minlength=\"1\"\r\n  pattern=\"^[0-9]{1,4}$\"\r\n  inputmode=\"numeric\"\r\n                                (keypress)=\"omit_special_char($event)\">\r\n                        </div>\r\n                        <div *ngIf=\"zoneShow\" class=\"col-12\">\r\n                            <div *ngIf=\"clientData?.isZonewiseNOB\" class=\"toggle-wrapper\">\r\n  <label class=\"switch\">\r\n    <input type=\"checkbox\" [(ngModel)]=\"isEnabled\" (change)=\"onCheckboxChange($event)\" />\r\n    <span class=\"slider\"></span>\r\n  </label>\r\n\r\n  <span class=\"toggle-label\">\r\n    Add Zone-wise NoB Count\r\n  </span>\r\n</div>\r\n\r\n                        </div>\r\n                        <div *ngIf=\"isEnabled\" class=\"table-responsive\">\r\n                            <table *ngIf=\"zoneList?.length\"  class=\"table bottom-border text-nowrap mt-5\">\r\n                                <thead>\r\n                                    <tr>\r\n                                        <th scope=\"col\">Zone Name</th>\r\n                                        <th scope=\"col\">NoB Count</th>\r\n                                    </tr>\r\n                                </thead>\r\n                                <tbody >\r\n                                    <tr *ngFor=\"let zone of zoneList\">\r\n                                        <td class=\"py-3 mt-10\">{{zone.tagName}}</td>\r\n                                        <td class=\"py-2\"><input type=\"text\" class=\"form-control form-control-sm mb-0 py-0\" [(ngModel)]=\"zone.nobCount\" (ngModelChange)=\"onNobChange()\" \r\n                                                (keypress)=\"omit_special_char($event)\"></td>\r\n                                    </tr>\r\n                                </tbody>\r\n                           \r\n                                \r\n                            </table>\r\n                            <div *ngIf=\"!zoneList?.length\" 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 Zone-wise NoB count</div>\r\n                            </div>\r\n                        </div>\r\n                          \r\n                         <div *ngIf=\"erroShow\" class=\"text-danger mt-2\"><span class=\"me-2\"><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_15055_156438)\">\r\n<path d=\"M9 6V9M9 12H9.0075M16.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\" stroke=\"#B42318\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n</g>\r\n<defs>\r\n<clipPath id=\"clip0_15055_156438\">\r\n<rect width=\"18\" height=\"18\" fill=\"white\"/>\r\n</clipPath>\r\n</defs>\r\n</svg></span>{{ erroShow }}</div>\r\n\r\n                        <div class=\"d-flex mt-3 mb-10\" role=\"group\">\r\n                            <button class=\"btn btn-outline w-100 me-3\" (click)=\"cancel()\">Cancel</button>\r\n                            <button\r\n  class=\"btn btn-primary w-100 ms-3\"\r\n  id=\"alert-toast\"\r\n  (click)=\"onSubmit()\"\r\n  [disabled]=\"\r\n    !dateValue ||\r\n    !nobCount ||\r\n    !storeId ||\r\n    !storeName ||\r\n    isSubmitting\r\n  \"\r\n>\r\n  <span *ngIf=\"!isSubmitting && type !== 'add'\">Proceed</span>\r\n  <span *ngIf=\"!isSubmitting && type === 'add'\">Add</span>\r\n  <span *ngIf=\"isSubmitting\">Please wait...</span>\r\n</button>\r\n\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n\r\n            </div>\r\n            <div *ngIf=\"typeNOB ==='multiple'\" class=\"d-flex justify-content\">\r\n                <div class=\"fw-bold text-gray-500 my-6\">\r\n                    <ul class=\"text-gray-400 fw-bold fs-6\">\r\n                        <li class=\"user-text\">Use the template to upload multiple NoB’s at once.</li>\r\n                        <li class=\"user-text \">Download the template here - <a *ngIf=\"!clientData?.isZonewiseNOB\" href=\"../../assets/files/nobUploadTemplate.xlsx\" download><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\r\n                            <path d=\"M17.5 13V16.3333C17.5 16.7754 17.3244 17.1993 17.0118 17.5118C16.6993 17.8244 16.2754 18 15.8333 18H4.16667C3.72464 18 3.30072 17.8244 2.98816 17.5118C2.67559 17.1993 2.5 16.7754 2.5 16.3333V13M5.83333 8.83333L10 13M10 13L14.1667 8.83333M10 13V3\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                          </svg><span class=\"ms-2 text-download text-primary\">Download Template</span></a> <span *ngIf=\"clientData?.isZonewiseNOB\" class=\" text-active-primary\"  (click)=\"download()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\r\n                            <path d=\"M17.5 13V16.3333C17.5 16.7754 17.3244 17.1993 17.0118 17.5118C16.6993 17.8244 16.2754 18 15.8333 18H4.16667C3.72464 18 3.30072 17.8244 2.98816 17.5118C2.67559 17.1993 2.5 16.7754 2.5 16.3333V13M5.83333 8.83333L10 13M10 13L14.1667 8.83333M10 13V3\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                          </svg><span class=\"ms-2 text-download text-primary cursor-pointer\">Download Template</span></span></li>\r\n                        <li class=\"user-text \">Add your data to the Template File</li>\r\n                        <li class=\"user-text\">Upload it below for processing</li>\r\n                    \r\n                    </ul>\r\n                </div>\r\n            </div>\r\n            <div *ngIf=\"typeNOB ==='multiple'\"\r\n                class=\"mt-3 ms-3 right-bar py-10 d-flex justify-content-center align-items-center flex-column\">\r\n                <input name=\"accountType\" type=\"radio\" id=\"kt_create_account_form_account_type_personal\"\r\n                    value=\"personal\" class=\"btn-check\" ng-reflect-name=\"accountType\"\r\n                    ng-reflect-form-control-name=\"accountType\"   (change)=\"onUpload($event)\"\r\n                    ng-reflect-value=\"personal\" type=\"file\" #inputFile />\r\n                <label for=\"kt_create_account_form_account_type_personal\" class=\" w-50 p-4 mt-5\"><span\r\n                        class=\"fw-bold text-center w-100 fs-4\">\r\n<div class=\"d-flex justify-content-center align-items-center w-100\">\r\n                        <svg width=\"46\" height=\"46\" viewBox=\"0 0 46 46\" fill=\"none\"\r\n                            xmlns=\"http://www.w3.org/2000/svg\">\r\n                            <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#F2F4F7\" />\r\n                            <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" stroke=\"#F9FAFB\"\r\n                                stroke-width=\"6\" />\r\n                            <g clip-path=\"url(#clip0_4047_40566)\">\r\n                                <path\r\n                                    d=\"M26.3333 26.3334L23 23M23 23L19.6666 26.3334M23 23V30.5M29.9916 28.325C30.8044 27.8819 31.4465 27.1808 31.8165 26.3322C32.1866 25.4837 32.2635 24.5361 32.0351 23.6389C31.8068 22.7418 31.2862 21.9463 30.5555 21.3779C29.8248 20.8095 28.9257 20.5006 28 20.5H26.95C26.6977 19.5244 26.2276 18.6186 25.5749 17.8509C24.9222 17.0831 24.104 16.4732 23.1817 16.0672C22.2594 15.6612 21.2571 15.4695 20.2501 15.5066C19.243 15.5437 18.2575 15.8086 17.3676 16.2814C16.4777 16.7542 15.7066 17.4226 15.1122 18.2363C14.5177 19.0501 14.1155 19.988 13.9358 20.9795C13.756 21.9711 13.8034 22.9905 14.0743 23.9611C14.3452 24.9317 14.8327 25.8282 15.5 26.5834\"\r\n                                    stroke=\"#475467\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n                                    stroke-linejoin=\"round\" />\r\n                            </g>\r\n                            <defs>\r\n                                <clipPath id=\"clip0_4047_40566\">\r\n                                    <rect width=\"20\" height=\"20\" fill=\"white\"\r\n                                        transform=\"translate(13 13)\" />\r\n                                </clipPath>\r\n                            </defs>\r\n                        </svg>\r\n                    </div>\r\n                        <div class=\"nodata-title\"><span class=\"click-upload cursor-pointer\">Click to\r\n                                upload </span>\r\n                                <!-- <span class=\"drag-drop\"> or drag and drop the template</span> -->\r\n                            </div>\r\n                       \r\n                    </span>\r\n                </label>\r\n            </div>\r\n\r\n            <div  *ngIf=\"typeNOB ==='multiple'\" class=\"d-flex mt-3 mb-10\" role=\"group\">\r\n                <button class=\"btn btn-outline w-100 me-3\" (click)=\"cancel()\">Cancel</button>\r\n                <button class=\"btn btn-primary w-100 ms-3\" id=\"alert-toast\" (click)=\"proceed()\"\r\n                  >Proceed</button>\r\n            </div>\r\n        </div>\r\n\r\n    </div>\r\n</div>\r\n<div *ngIf=\"type ==='editView' || type === 'view'\" class=\"card pt-0  pb-3 \">\r\n    <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n        \r\n        <div class=\"row w-100 mt-5\">\r\n          \r\n            <div class=\"col-md-6\">\r\n                <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Zone-wise NoB\r\n                    Count</a>\r\n            </div>\r\n            <div *ngIf=\"type === 'view'\" class=\"col-md-6 text-end\">\r\n                <span class=\"cursor-pointer\" (click)=\"cancel()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\r\n<path d=\"M13 1L1 13M1 1L13 13\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n</svg></span>\r\n        </div>\r\n        \r\n            <div *ngIf=\"zoneList?.length\" class=\"table-responsive max-h-500\">\r\n                <table class=\"table bottom-border text-nowrap mt-5\">\r\n                    <thead>\r\n                        <tr>\r\n                            <th scope=\"col\">Zone Name</th>\r\n                            <th scope=\"col\">NoB Count</th>\r\n                        </tr>\r\n                    </thead>\r\n                    <tbody>\r\n                        <tr *ngFor=\"let zone of zoneList;let i = index\">\r\n                            <td class=\"py-3 mt-10\">{{zone.zoneName}}</td>\r\n                            <td class=\"py-2\"><span *ngIf=\"type === 'view' || !isEditEnabled\">\r\n                                    {{ zone.nobCount }}\r\n                                </span>\r\n\r\n                                <!-- EDIT MODE -->\r\n                                <input *ngIf=\"type === 'editView' && isEditEnabled\" type=\"text\" class=\"form-control form-control-sm\"\r\n                                    [(ngModel)]=\"zone.nobCount\" (ngModelChange)=\"onNobChange()\" maxlength=\"4\"\r\n  minlength=\"1\"\r\n  pattern=\"^[0-9]{1,4}$\"\r\n  inputmode=\"numeric\"\r\n                                    (keypress)=\"omit_special_char($event)\" />\r\n                            </td>\r\n                        </tr>\r\n                    </tbody>\r\n                </table>\r\n            </div>\r\n            <div *ngIf=\"!zoneList?.length\" 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 Zone-wise NoB count</div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n          <div *ngIf=\"erroShow\" class=\"text-danger mt-2\"><span class=\"me-2\"><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_15055_156438)\">\r\n<path d=\"M9 6V9M9 12H9.0075M16.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\" stroke=\"#B42318\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n</g>\r\n<defs>\r\n<clipPath id=\"clip0_15055_156438\">\r\n<rect width=\"18\" height=\"18\" fill=\"white\"/>\r\n</clipPath>\r\n</defs>\r\n</svg></span>{{ erroShow }}</div>\r\n<ng-container *ngIf=\"zoneList?.length\">\r\n                <div *ngIf=\"type ==='editView' && isEditEnabled\" class=\"d-flex mt-3 mb-10\" role=\"group\">\r\n                    <button class=\"btn btn-outline w-100 me-3\" (click)=\"cancelEdit()\">Cancel</button>\r\n                    <button class=\"btn btn-primary w-100 ms-3\" id=\"alert-toast\" (click)=\"onSubmit()\"\r\n                        [disabled]=\"!dateValue || !nobCount || !storeId || !storeName\"><span\r\n                            *ngIf=\"type !=='add'\">Save</span><span *ngIf=\"type ==='add'\">Add</span></button>\r\n                </div>\r\n                </ng-container>\r\n            \r\n        </div>\r\n    </div>\r\n</div>","import {\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  OnDestroy,\r\n  OnInit,\r\n  ViewChild,\r\n} from \"@angular/core\";\r\nimport { TrafficService } from \"../../services/traffic.service\";\r\nimport { ToastService } from \"tango-app-ui-shared\";\r\nimport * as XLSX from \"xlsx\";\r\nimport { debounceTime, Subject, takeUntil } from \"rxjs\";\r\nimport { AddNobComponent } from \"../add-nob/add-nob.component\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { GlobalStateService, PageInfoService } from \"tango-app-ui-global\";\r\nimport { DatePipe } from \"@angular/common\";\r\nimport Swal from \"sweetalert2\";\r\nimport { ExcelService } from \"../../services/excel.service\";\r\n@Component({\r\n  selector: \"lib-nob-upload\",\r\n  templateUrl: \"./nob-upload.component.html\",\r\n  styleUrl: \"./nob-upload.component.scss\",\r\n  providers: [DatePipe],\r\n})\r\nexport class NobUploadComponent implements OnInit, OnDestroy {\r\n  @ViewChild(\"inputFile\") inputFile: ElementRef;\r\n  private readonly destroy$ = new Subject();\r\n  convertedData: any;\r\n\r\n  itemsPerPage = 10;\r\n  currentPage = 1;\r\n  totalItems = 1;\r\n  paginationSizes: number[] = [];\r\n  pageSize = 10;\r\n  offset: number = 1;\r\n  limit: number = 10;\r\n  headerData: any;\r\n  storeIdarray: any;\r\n  cardloading = true;\r\n  clientData: any;\r\n  constructor(\r\n    private service: TrafficService,\r\n    private ts: ToastService,\r\n    private cd: ChangeDetectorRef,\r\n    private modalService: NgbModal,\r\n    public gs: GlobalStateService,\r\n    private datePipe: DatePipe,\r\n    private pageInfo: PageInfoService,\r\n    private excelService: ExcelService\r\n  ) {}\r\n  userType: any;\r\n  ngOnInit(): void {\r\n    this.gs?.dataRangeValue\r\n      ?.pipe(takeUntil(this.destroy$), debounceTime(300))\r\n      .subscribe((data: any) => {\r\n        if (data) {\r\n          this.headerData = data;\r\n          this.storeIdarray = this.headerData?.stores\r\n            .filter((store: any) => store.checked)\r\n            .map((store: any) => store.storeId);\r\n          this.getNOBData();\r\n        }\r\n      });\r\n    let userInfo = JSON.parse(localStorage.getItem(\"user-info\") || \"{}\");\r\n    this.userType = userInfo;\r\n    let client: any = JSON.parse(localStorage.getItem(\"client-details\") || \"\");\r\n    this.clientData = client;\r\n    this.setPageData();\r\n  }\r\n\r\n  setPageData() {\r\n    this.pageInfo.setTitle(\"NOB\");\r\n    this.pageInfo.setDescription(\"\");\r\n    this.pageInfo.setBreadcrumbs([\r\n      {\r\n        title: \"Tango Eye\",\r\n        path: \"/manage/traffic\",\r\n        isActive: false,\r\n        isSeparator: false,\r\n      },\r\n      {\r\n        title: \"Tango Eye\",\r\n        path: \"/manage/traffic\",\r\n        isActive: false,\r\n        isSeparator: true,\r\n      },\r\n      {\r\n        title: \"Traffic\",\r\n        path: \"/manage/traffic\",\r\n        isActive: false,\r\n        isSeparator: false,\r\n      },\r\n      {\r\n        title: \"Traffic\",\r\n        path: \"/manage/traffic\",\r\n        isActive: false,\r\n        isSeparator: true,\r\n      },\r\n    ]);\r\n  }\r\n  dataTableShow = false;\r\n  dataTableShow1 = false;\r\n  dataCalculation: any;\r\n  noData = false;\r\n  loading = true;\r\n  getNOBData() {\r\n    this.noData = false;\r\n    this.loading = true;\r\n    this.limit = 10;\r\n    this.offset = 1;\r\n    let obj: any = {\r\n      fromDate: this.headerData?.date.startDate,\r\n      toDate: this.headerData?.date.endDate,\r\n      storeId: this.headerData?.stores\r\n        .filter((store: any) => store.checked)\r\n        .map((store: any) => store.storeId),\r\n      clientId: this.headerData?.client ? this.headerData?.client : \"\",\r\n      limit: 10,\r\n      offset: 1,\r\n      isExport: false,\r\n    };\r\n    if (this.searchValue && this.searchValue.trim() !== \"\") {\r\n      obj.searchValue = this.searchValue.trim();\r\n    }\r\n    this.service\r\n      .getNOBData(obj)\r\n      ?.pipe(takeUntil(this.destroy$))\r\n      .subscribe({\r\n        next: (res: any) => {\r\n          if (res?.code === 200 && res) {\r\n            this.tableHeaders = res?.data?.result;\r\n            this.dataCalculation = res.data;\r\n            this.totalItems = res?.data?.count;\r\n            this.cardloading = false;\r\n            this.noData = false;\r\n            this.loading = false;\r\n            this.setPaginationSizes();\r\n            this.resetEditingFlags();\r\n            if (res?.data?.initialInsert === false) {\r\n              this.dataTableShow = false;\r\n              this.dataTableShow1 = false;\r\n            } else {\r\n              this.dataTableShow = true;\r\n              this.dataTableShow1 = false;\r\n            }\r\n          } else {\r\n            this.dataTableShow = true;\r\n            this.cardloading = false;\r\n            this.noData = true;\r\n            this.loading = false;\r\n            this.totalItems = 0;\r\n          }\r\n        },\r\n        error: (err: any) => {\r\n          this.noData = true;\r\n          this.loading = false;\r\n          this.cardloading = false;\r\n        },\r\n      });\r\n  }\r\n\r\n  omit_special_char(event: any) {\r\n    var k;\r\n    k = event.charCode;\r\n    return k == 8 || k == 32 || (k >= 48 && k <= 57);\r\n  }\r\n  onUpload(event: any): void {\r\n    const file = event.target.files?.[0];\r\n    if (!file) return;\r\n\r\n    const reader = new FileReader();\r\n\r\n    reader.onload = (e: any) => {\r\n      try {\r\n        const binaryData = e.target.result;\r\n\r\n        const workbook: XLSX.WorkBook = XLSX.read(binaryData, {\r\n          type: \"binary\",\r\n        });\r\n\r\n        const sheetName = workbook.SheetNames[0];\r\n        const sheet = workbook.Sheets[sheetName];\r\n        if (sheetName !== \"NOB\") {\r\n          this.ts.getErrorToast(\"Please upload a valid NOB Excel file\");\r\n          this.resetFileInput();\r\n          return;\r\n        }\r\n        const sheetData: any[][] = XLSX.utils.sheet_to_json(sheet, {\r\n          header: 1,\r\n          defval: null,\r\n        });\r\n\r\n        if (!sheetData || sheetData.length < 2) {\r\n          this.ts.getErrorToast(\"Excel file is empty\");\r\n          return;\r\n        }\r\n        const STORE_ID_HEADERS = [\"storeid\", \"store id\", \"StoreId\", \"Store Id\"];\r\n        const DATE_HEADERS = [\r\n          \"date\",\r\n          \"nobdate\",\r\n          \"nob date\",\r\n          \"NOBDate\",\r\n          \"NoB Date\",\r\n        ];\r\n        const NOB_HEADERS = [\r\n          \"nobcount\",\r\n          \"overallnobcount\",\r\n          \"overall nob count\",\r\n          \"NOBCount\",\r\n          \"Overall NoB Count\",\r\n        ];\r\n\r\n        const rawHeaders = sheetData[0];\r\n\r\n        const headers = rawHeaders.map((h) => h);\r\n\r\n        const isStoreValid = STORE_ID_HEADERS.includes(headers[0]);\r\n        const isDateValid = DATE_HEADERS.includes(headers[1]);\r\n        const isNobValid = NOB_HEADERS.includes(headers[2]);\r\n\r\n        if (!isStoreValid || !isDateValid || !isNobValid) {\r\n          this.ts.getErrorToast(\r\n            \"Invalid Excel file. First columns must be Store Id, NoB Date, Overall NoB Count\"\r\n          );\r\n          return;\r\n        }\r\n        const rows = sheetData.slice(1);\r\n\r\n        const bills = rows\r\n          .map((row: any[], rowIndex: number) => {\r\n            const isEmptyRow = row.every(\r\n              (cell) =>\r\n                cell === null ||\r\n                cell === undefined ||\r\n                (typeof cell === \"string\" && cell === \"\")\r\n            );\r\n            if (isEmptyRow) return null;\r\n\r\n            const storeId = String(row[0] ?? \"\");\r\n            if (!storeId) {\r\n              throw new Error(`Missing Store Code at row ${rowIndex + 2}`);\r\n            }\r\n\r\n            let nobDate: any = row[1];\r\n            if (nobDate === null || nobDate === undefined || nobDate === \"\") {\r\n              throw new Error(`Missing Date at row ${rowIndex + 2}`);\r\n            }\r\n\r\n            if (typeof nobDate === \"number\") {\r\n              nobDate = this.convertExcelDate(nobDate);\r\n            } else if (nobDate instanceof Date) {\r\n              // ok\r\n            } else if (typeof nobDate === \"string\") {\r\n              const parsed = new Date(nobDate);\r\n              if (isNaN(parsed.getTime())) {\r\n                throw new Error(`Invalid Date format at row ${rowIndex + 2}`);\r\n              }\r\n              nobDate = parsed;\r\n            } else {\r\n              throw new Error(`Invalid Date format at row ${rowIndex + 2}`);\r\n            }\r\n            const MIN_NOB = 0;\r\n            const MAX_NOB = 9999; // example upper limit\r\n            let nobCount: any = row[2];\r\n\r\n            // 1️⃣ Empty check\r\n            if (\r\n              nobCount === null ||\r\n              nobCount === undefined ||\r\n              nobCount === \"\"\r\n            ) {\r\n              throw new Error(`Missing NoB count at row ${rowIndex + 2}`);\r\n            }\r\n\r\n            // 2️⃣ Convert to number\r\n            nobCount = Number(nobCount);\r\n\r\n            // 3️⃣ NaN check\r\n            if (isNaN(nobCount)) {\r\n              throw new Error(`Invalid NoB count at row ${rowIndex + 2}`);\r\n            }\r\n\r\n            // 4️⃣ Min–Max validation\r\n            if (nobCount < MIN_NOB || nobCount > MAX_NOB) {\r\n              throw new Error(\r\n                `NoB count must be between ${MIN_NOB} and ${MAX_NOB} at row ${\r\n                  rowIndex + 2\r\n                }`\r\n              );\r\n            }\r\n\r\n            const zonewisenob = headers\r\n              .slice(3)\r\n              .map((zoneName, index) => {\r\n                const raw = row[index + 3];\r\n\r\n                if (\r\n                  raw === null ||\r\n                  raw === undefined ||\r\n                  (typeof raw === \"string\" && raw === \"\")\r\n                ) {\r\n                  return null;\r\n                }\r\n\r\n                const value = Number(raw);\r\n                if (isNaN(value)) {\r\n                  throw new Error(\r\n                    `Invalid Zone NoB at row ${rowIndex + 2} (${zoneName})`\r\n                  );\r\n                }\r\n\r\n                return {\r\n                  zoneName,\r\n                  nobCount: value,\r\n                };\r\n              })\r\n              .filter(Boolean);\r\n\r\n            const zoneTotal = zonewisenob.reduce(\r\n              (sum: number, z: any) => sum + z.nobCount,\r\n              0\r\n            );\r\n\r\n            if (zoneTotal > nobCount) {\r\n              throw new Error(\r\n                `Zone-wise NoB cannot exceed overall NoB (Row ${rowIndex + 2})`\r\n              );\r\n            }\r\n            return {\r\n              storeCode: storeId,\r\n              nobDate: this.datePipe.transform(nobDate, \"yyyy-MM-dd\"),\r\n              nobCount,\r\n              zonewisenob,\r\n            };\r\n          })\r\n          .filter(Boolean);\r\n        if (!bills.length) {\r\n          this.ts.getErrorToast(\"No valid rows found in Excel\");\r\n          return;\r\n        }\r\n\r\n        this.convertedData = {\r\n          clientId: this.headerData?.client,\r\n          bills,\r\n        };\r\n        this.dataNobFunction();\r\n        this.dataTableShow = true;\r\n        this.ts.getSuccessToast(\"File uploaded successfully\");\r\n      } catch (err: any) {\r\n        console.error(err);\r\n        this.ts.getErrorToast(err.message || \"Invalid Excel file\");\r\n      } finally {\r\n        this.resetFileInput();\r\n        this.cd.detectChanges();\r\n      }\r\n    };\r\n\r\n    reader.readAsBinaryString(file);\r\n  }\r\n\r\n  resetFileInput(): void {\r\n    if (this.inputFile && this.inputFile.nativeElement) {\r\n      this.inputFile.nativeElement.value = \"\";\r\n    }\r\n  }\r\n  convertExcelDate(excelDate: number): string {\r\n    const baseDate = new Date(1900, 0, 1);\r\n    const correctedDate = new Date(\r\n      baseDate.getTime() + (excelDate - 1) * 86400000\r\n    );\r\n    return correctedDate.toISOString().split(\"T\")[0];\r\n  }\r\n  tableHeaders: any;\r\n\r\n  dataNobFunction() {\r\n    this.noData = false;\r\n    this.loading = true;\r\n    this.service\r\n      .getNOBDataList(this.convertedData)\r\n      .pipe(takeUntil(this.destroy$))\r\n      .subscribe({\r\n        next: (response: any) => {\r\n          if (response.code === 200 && response) {\r\n            const allMessages = response.message;\r\n            // .map((item: any) => {\r\n            //   const status = item.code === 200 ? \"✅\" : \"❌\";\r\n            //   const storeInfo = item.storeId ? `${item.storeId}` : \"\";\r\n            //   return `${status} ${storeInfo}: ${item.message}`;\r\n            // })\r\n            // .join(\"<br>\");\r\n            this.ts.getSuccessToast(allMessages);\r\n            this.noData = false;\r\n            this.loading = true;\r\n            setTimeout(() => {\r\n              this.getNOBData();\r\n            }, 1000);\r\n          } else {\r\n            this.ts.getErrorToast(\"Unexpected response format\");\r\n          }\r\n        },\r\n        error: (err: any) => {\r\n          this.dataTableShow = false;\r\n          this.cardloading = false;\r\n          this.ts.getErrorToast(err.error.error);\r\n        },\r\n      });\r\n  }\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];\r\n    }\r\n    this.limit = this.paginationSizes[0];\r\n  }\r\n  resetEditingFlags() {\r\n    this.testNobData.forEach((row: any) => {\r\n      this.isEditing[row.storeId] = false;\r\n      row.isUpdated = false;\r\n      row.isUpdated = true;\r\n    });\r\n    this.editValueLabel === \"View Zone-Wise\";\r\n  }\r\n\r\n  onPageChange(pageOffset: number) {\r\n    const previousOffset = this.offset;\r\n    this.offset = Number(pageOffset);\r\n    this.limit = 10;\r\n    if (this.isPageDirty) {\r\n      Swal.fire({\r\n        title: \"You have unsaved changes.\",\r\n        text: \"Do you want to save them before moving to the next page?\",\r\n        icon: \"warning\",\r\n        showCancelButton: true,\r\n        confirmButtonColor: \"#3085d6\",\r\n        cancelButtonColor: \"#d33\",\r\n        confirmButtonText: \"Yes, save it!\",\r\n        cancelButtonText: \"No, discard changes\",\r\n        // showCloseButton: true,\r\n        allowOutsideClick: false,\r\n      }).then((result) => {\r\n        if (result.isConfirmed) {\r\n          this.isPageDirty = false;\r\n          this.saveValue();\r\n          this.fetchPageData();\r\n          this.resetEditingFlags();\r\n        } else if (result.dismiss === Swal.DismissReason.cancel) {\r\n          this.isPageDirty = false;\r\n          this.resetEditingFlags();\r\n          this.fetchPageData();\r\n        }\r\n      });\r\n    } else {\r\n      this.resetEditingFlags();\r\n      this.fetchPageData();\r\n    }\r\n  }\r\n\r\n  fetchPageData() {\r\n    let obj = {\r\n      fromDate: this.headerData?.date.startDate,\r\n      toDate: this.headerData?.date.endDate,\r\n      storeId: this.headerData?.stores\r\n        .filter((store: any) => store.checked)\r\n        .map((store: any) => store.storeId),\r\n      clientId: this.headerData?.client ? this.headerData?.client : \"\",\r\n      limit: this.limit,\r\n      offset: this.offset,\r\n      isExport: false,\r\n    };\r\n\r\n    this.service\r\n      .getNOBData(obj)\r\n      ?.pipe(takeUntil(this.destroy$))\r\n      .subscribe({\r\n        next: (res: any) => {\r\n          if (res?.code === 200 && res) {\r\n            this.tableHeaders = res?.data?.result;\r\n            this.dataCalculation = res.data;\r\n            this.totalItems = res?.data?.count;\r\n            this.dataTableShow = true;\r\n            this.dataTableShow1 = false;\r\n            this.cardloading = false;\r\n          } else {\r\n            this.dataTableShow = false;\r\n            this.dataTableShow1 = true;\r\n            this.cardloading = false;\r\n            this.totalItems = 0;\r\n          }\r\n        },\r\n        error: (err: any) => {\r\n          this.ts.getErrorToast(\"An error occurred while fetching data\");\r\n        },\r\n      });\r\n  }\r\n\r\n  onPageSizeChange(pageSize: number) {\r\n    this.limit = Number(pageSize);\r\n    this.offset = 1;\r\n    let obj = {\r\n      fromDate: this.headerData?.date.startDate,\r\n      toDate: this.headerData?.date.endDate,\r\n      storeId: this.headerData?.stores\r\n        .filter((store: any) => store.checked)\r\n        .map((store: any) => store.storeId),\r\n      clientId: this.headerData?.client ? this.headerData?.client : \"\",\r\n      limit: this.limit,\r\n      offset: this.offset,\r\n      isExport: false,\r\n    };\r\n    this.service\r\n      .getNOBData(obj)\r\n      ?.pipe(takeUntil(this.destroy$))\r\n      .subscribe({\r\n        next: (res: any) => {\r\n          if (res?.code === 200 && res) {\r\n            this.tableHeaders = res?.data?.result;\r\n            this.dataCalculation = res.data;\r\n            this.totalItems = res?.data?.count;\r\n            this.dataTableShow = true;\r\n            this.dataTableShow1 = false;\r\n            this.cardloading = false;\r\n          } else {\r\n            this.dataTableShow = false;\r\n            this.dataTableShow1 = true;\r\n            this.cardloading = false;\r\n            this.totalItems = 0;\r\n          }\r\n        },\r\n        error: (err: any) => {\r\n          this.ts.getErrorToast(\"An error occurred while fetching data\");\r\n        },\r\n      });\r\n  }\r\n\r\n  paginatedData: any[] = [];\r\n\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next(true);\r\n    this.destroy$.complete();\r\n  }\r\n\r\n  addSingleStoreNOB() {\r\n    const modalRef = this.modalService.open(AddNobComponent, {\r\n      centered: true,\r\n      size: \"lg\",\r\n      scrollable: true,\r\n    });\r\n    modalRef.componentInstance.type = \"add\";\r\n    modalRef.result.then((result) => {\r\n      if (result) {\r\n        setTimeout(() => {\r\n          this.getNOBData();\r\n          this.testNobData.forEach((row: any) => {\r\n            this.isEditing[row.storeId] = false;\r\n            row.isUpdated = true;\r\n          });\r\n        }, 100);\r\n      }\r\n    });\r\n  }\r\n  Reupload() {\r\n    const modalRef = this.modalService.open(AddNobComponent, {\r\n      centered: true,\r\n      size: \"lg\",\r\n      scrollable: true,\r\n    });\r\n    modalRef.componentInstance.type = \"reupload\";\r\n    modalRef.result.then((result) => {\r\n      if (result) {\r\n        setTimeout(() => {\r\n          this.getNOBData();\r\n          this.testNobData.forEach((row: any) => {\r\n            this.isEditing[row.storeId] = false;\r\n            row.isUpdated = true;\r\n          });\r\n        }, 100);\r\n      }\r\n    });\r\n  }\r\n  getInputVisible(obj: any): boolean {\r\n    return !obj.isUpdated && this.isEditing[obj.storeId];\r\n  }\r\n  getReadOnlyVisible(obj: any): boolean {\r\n    return obj.isUpdated || !this.isEditing[obj.storeId];\r\n  }\r\n  isEditing: { [key: string]: boolean } = {};\r\n  testNobData: any = [];\r\n  editValueLabel = \"View Zone-Wise\";\r\n  editValue(obj: any) {\r\n    this.testNobData = obj;\r\n\r\n    obj.forEach((ele: any) => {\r\n      if (ele.isUpdated) {\r\n        // this.ts.getErrorToast(\"Row is already updated. No action needed.\");\r\n        return;\r\n      }\r\n      this.isEditing[ele.storeId] = true;\r\n      this.getInputVisible(ele);\r\n      this.saveBtnEnbale = true;\r\n      this.editValueLabel = \"Edit Zone-Wise\";\r\n    });\r\n  }\r\n  searchValue: any;\r\n  searchData() {\r\n    this.getNOBData();\r\n  }\r\n  exportXLSX() {\r\n    let obj: any = {\r\n      fromDate: this.headerData?.date.startDate,\r\n      toDate: this.headerData?.date.endDate,\r\n      storeId: this.headerData?.stores\r\n        .filter((store: any) => store.checked)\r\n        .map((store: any) => store.storeId),\r\n      clientId: this.headerData?.client ? this.headerData?.client : \"\",\r\n      isExport: true,\r\n    };\r\n    if (this.searchValue && this.searchValue.trim() !== \"\") {\r\n      obj.searchValue = this.searchValue.trim();\r\n      obj.limit = this.limit;\r\n      obj.offset = this.offset;\r\n    } else {\r\n      obj.limit = 100;\r\n      obj.offset = 1;\r\n    }\r\n\r\n    this.service\r\n      .getNOBDataExport(obj)\r\n      ?.pipe(takeUntil(this.destroy$))\r\n      .subscribe({\r\n        next: (res: any) => {\r\n          if (res) {\r\n            this.excelService.saveAsExcelFile(res, \"Billing Summary Table\");\r\n          } else {\r\n          }\r\n        },\r\n        error: (err: any) => {\r\n          this.ts.getErrorToast(\"An error occurred while fetching data\");\r\n        },\r\n      });\r\n  }\r\n  NOBdata: any = [];\r\n  isPageDirty = false;\r\n  saveBtnEnbale = false;\r\n  updateNobCount(obj: any) {\r\n    obj.nobCount = obj.nobCount;\r\n    this.cd.detectChanges();\r\n    this.isPageDirty = true;\r\n    this.saveBtnEnbale = true;\r\n    this.NOBdata.push({ ...obj });\r\n  }\r\n  saveValue() {\r\n    this.convertedData = [];\r\n    if (this.NOBdata.length > 0) {\r\n      this.convertedData = {\r\n        bills: this.NOBdata.map((element: any) => ({\r\n          storeCode: element.storeCode ? element.storeCode : element.storeId,\r\n          nobDate: this.datePipe.transform(element.nobDate, \"yyyy-MM-dd\"),\r\n          nobCount: Number(element.nobCount),\r\n        })),\r\n        clientId: this.NOBdata[0].clientId,\r\n      };\r\n\r\n      this.service\r\n        .getNOBDataList(this.convertedData)\r\n        ?.pipe(takeUntil(this.destroy$))\r\n        .subscribe({\r\n          next: (res: any) => {\r\n            if (res.code === 200 && res) {\r\n              const allMessages = res.message;\r\n              this.ts.getSuccessToast(allMessages);\r\n              this.isPageDirty = false;\r\n              this.saveBtnEnbale = false;\r\n              this.resetEditingFlags();\r\n              setTimeout(() => {\r\n                this.getNOBData();\r\n              }, 1000);\r\n              this.NOBdata = [];\r\n            } else {\r\n              this.ts.getErrorToast(\"Unexpected response format\");\r\n            }\r\n          },\r\n          error: (err: any) => {\r\n            this.ts.getErrorToast(\r\n              err.error.error ? err.error.error : err.error.error\r\n            );\r\n          },\r\n        });\r\n    } else {\r\n      this.isPageDirty = false;\r\n    }\r\n  }\r\n\r\n  cancel(obj: any) {\r\n    this.testNobData = obj;\r\n    obj.forEach((ele: any) => {\r\n      this.isEditing[ele.storeId] = false;\r\n      this.saveBtnEnbale = false;\r\n    });\r\n    this.editValueLabel = \"View Zone-Wise\";\r\n    this.getNOBData();\r\n  }\r\n\r\n  emailSubject = \"Custom Subject\";\r\n  emailBody = \"This is the body of the email.\";\r\n  openMailTo(): void {\r\n    const csm: any = JSON.parse(localStorage.getItem(\"csmdetails\") || \"{}\");\r\n    if (csm && csm.email) {\r\n      const subject = encodeURIComponent(this.emailSubject || \"\");\r\n      const body = encodeURIComponent(this.emailBody || \"\");\r\n      const mailtoLink = `mailto:${csm.email}?subject=${subject}&body=${body}`;\r\n      const link = document.createElement(\"a\");\r\n      link.href = mailtoLink;\r\n      link.target = \"_blank\";\r\n      document.body.appendChild(link);\r\n      link.click();\r\n      document.body.removeChild(link);\r\n    } else {\r\n      this.ts.getErrorToast(\"CSM details or email not available\");\r\n    }\r\n  }\r\n\r\n  editView(obj: any) {\r\n    const modalRef = this.modalService.open(AddNobComponent, {\r\n      centered: true,\r\n      size: \"lg\",\r\n      scrollable: true,\r\n    });\r\n    modalRef.componentInstance.type = this.isEditing[obj.storeId]\r\n      ? \"editView\"\r\n      : \"view\";\r\n    modalRef.componentInstance.viewData = obj;\r\n    modalRef.result.then((result) => {\r\n      if (result === \"submit\") {\r\n        setTimeout(() => {\r\n          this.getNOBData();\r\n        }, 1000);\r\n      }\r\n    });\r\n  }\r\n  download() {\r\n    this.service\r\n      .getZoneTemplate({\r\n        clientId: this.headerData?.client ? this.headerData?.client : \"\",\r\n      })\r\n      ?.pipe(takeUntil(this.destroy$))\r\n      .subscribe({\r\n        next: (res: any) => {\r\n          if (res) {\r\n            this.excelService.saveAsExcelFile1(res, \"NOB Upload Template\");\r\n          } else {\r\n            this.ts.getErrorToast(\"Unexpected response format\");\r\n          }\r\n        },\r\n        error: (err: any) => {\r\n          const errorMsg =\r\n            err.error?.error ||\r\n            err.error?.message ||\r\n            err.message ||\r\n            err.error ||\r\n            \"An error occurred while fetching data\";\r\n          this.ts.getErrorToast(errorMsg);\r\n        },\r\n      });\r\n  }\r\n}\r\n","<div class=\"card\">\r\n\r\n    <div class=\"card-body border-top p-9\">\r\n        <div class=\"row align-items-center\">\r\n            <div *ngIf=\"cardloading\" class=\"row loader d-flex justify-content-center align-items-center h-275px\">\r\n                <div class=\"shimmer pt-0\">\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 title\"></div>\r\n                        <div class=\"stroke animate link\"></div>\r\n                        <div class=\"stroke animate link\"></div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div *ngIf=\"!dataTableShow && !cardloading\" class=\"col-md-3\">\r\n\r\n                <div class=\"nob-title mb-1\">Number of Bills</div>\r\n                <div class=\"nob-text\">Fill your NoB’s to get accurate Conversion Rate</div>\r\n\r\n            </div>\r\n            <div  *ngIf=\"dataTableShow1 && !cardloading\" class=\"col-md-9\"> <!-- Adjusted the position of this column -->\r\n                <div class=\"notice d-flex rounded border-warning border p-6\">\r\n                    <span><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 24.0002V28.0002M27.9988 32.0002H28.0088M26.2888 18.8602L17.8188 33.0002C17.6442 33.3026 17.5518 33.6455 17.5508 33.9947C17.5498 34.3439 17.6403 34.6873 17.8132 34.9907C17.9862 35.2941 18.2355 35.547 18.5365 35.7241C18.8375 35.9012 19.1796 35.9964 19.5288 36.0002H36.4688C36.818 35.9964 37.1601 35.9012 37.4611 35.7241C37.7621 35.547 38.0114 35.2941 38.1844 34.9907C38.3573 34.6873 38.4478 34.3439 38.4468 33.9947C38.4458 33.6455 38.3534 33.3026 38.1788 33.0002L29.7088 18.8602C29.5305 18.5663 29.2795 18.3233 28.98 18.1547C28.6805 17.9861 28.3425 17.8975 27.9988 17.8975C27.6551 17.8975 27.3171 17.9861 27.0176 18.1547C26.7181 18.3233 26.4671 18.5663 26.2888 18.8602Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                        </svg></span>\r\n                    <div class=\"d-flex flex-stack flex-grow-1 flex-wrap flex-md-nowrap\">\r\n                        <div  class=\"mb-3 mb-md-0 fw-bold ms-3\">\r\n                            <h4 class=\"nob-upload-title\">Suggestion!</h4>\r\n                            <div class=\"nob-upload-text\">\r\n                                Looks like the data is exceeding more than 100 records, request you to please download\r\n                                the excel below, fill in the NOB’s and upload without changing the file format.\r\n                            </div>\r\n                        </div>\r\n\r\n                   \r\n                </div>\r\n               \r\n            </div>\r\n\r\n            </div>\r\n        </div>\r\n        <!-- <div class=\"separator separator-dashed my-6\"></div> -->\r\n        <div *ngIf=\"!dataTableShow && !cardloading\" class=\"row mt-20 mb-10\">\r\n            <div class=\"col-md-6 text-end\">\r\n                    <img src=\"assets/tango/Images/nob.svg\"> \r\n            </div>\r\n            <div class=\"col-md-6\">\r\n                <a class=\"fs-4 text-gray-800 text-hover-primary fw-bolder mb-0 title  text-center\"> Upload NoB </a>\r\n\r\n                <div class=\"fw-bold text-gray-500 my-6\">\r\n                    <ul class=\"text-gray-400 fw-bold fs-6\">\r\n                        <li class=\"user-text\">Use the template to upload multiple NoB’s at once.</li>\r\n                        <!-- href=\"../../assets/files/nobUploadTemplate.xlsx\" download -->\r\n                        <li class=\"user-text \">Download the template here -  <a *ngIf=\"!clientData?.isZonewiseNOB\" href=\"../../assets/files/nobUploadTemplate.xlsx\" download><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\r\n                            <path d=\"M17.5 13V16.3333C17.5 16.7754 17.3244 17.1993 17.0118 17.5118C16.6993 17.8244 16.2754 18 15.8333 18H4.16667C3.72464 18 3.30072 17.8244 2.98816 17.5118C2.67559 17.1993 2.5 16.7754 2.5 16.3333V13M5.83333 8.83333L10 13M10 13L14.1667 8.83333M10 13V3\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                          </svg><span class=\"ms-2 text-download text-primary\">Download Template</span></a> <span *ngIf=\"clientData?.isZonewiseNOB\" class=\" text-active-primary\"  (click)=\"download()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"21\" viewBox=\"0 0 20 21\" fill=\"none\">\r\n                            <path d=\"M17.5 13V16.3333C17.5 16.7754 17.3244 17.1993 17.0118 17.5118C16.6993 17.8244 16.2754 18 15.8333 18H4.16667C3.72464 18 3.30072 17.8244 2.98816 17.5118C2.67559 17.1993 2.5 16.7754 2.5 16.3333V13M5.83333 8.83333L10 13M10 13L14.1667 8.83333M10 13V3\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                          </svg><span class=\"ms-2 text-download text-primary cursor-pointer\">Download Template</span></span></li>\r\n                        <li class=\"user-text \">Add your data to the Template File</li>\r\n                        <li class=\"user-text\">Upload it below for processing</li>\r\n                    \r\n                    </ul>\r\n                </div>\r\n\r\n                <!-- <div  class=\"d-flex my-10\" role=\"group\"> -->\r\n                  \r\n                    <div  class=\"d-flex flex-wrap mb-5\">\r\n                        <input [disabled]=\"userType.role === 'user'\" name=\"accountType\" type=\"radio\" id=\"kt_create_account_form_account_type_personal\" value=\"personal\"\r\n                          class=\"btn-check\" ng-reflect-name=\"accountType\" ng-reflect-form-control-name=\"accountType\"\r\n                          (change)=\"onUpload($event)\"\r\n                          ng-reflect-value=\"personal\" type=\"file\" #inputFile />\r\n                        <label for=\"kt_create_account_form_account_type_personal\"\r\n                          class=\"btn btn-outline btn-primary bg-primary btn-outline-default rounded-3 w-75 p-4 mt-5\"><span\r\n                            class=\"fw-bold fs-4\">\r\n                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\"\r\n                              fill=\"none\">\r\n                              <path\r\n                                d=\"M18 12.5V15.8333C18 16.2754 17.8244 16.6993 17.5118 17.0118C17.1993 17.3244 16.7754 17.5 16.3333 17.5H4.66667C4.22464 17.5 3.80072 17.3244 3.48816 17.0118C3.17559 16.6993 3 16.2754 3 15.8333V12.5M14.6667 6.66667L10.5 2.5M10.5 2.5L6.33333 6.66667M10.5 2.5V12.5\"\r\n                                stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                            </svg> \r\n                            <span class=\"text-white mx-2\">Upload Multiple Stores NoB</span></span>\r\n                        </label>\r\n                        <p class=\"text-gray-400 fw-bold my-3\">\r\n                          <span class=\"line-bg \"><svg width=\"224\" height=\"2\" viewBox=\"0 0 224 2\" fill=\"none\"\r\n                              xmlns=\"http://www.w3.org/2000/svg\">\r\n                              <rect y=\"0.5\" width=\"223.333\" height=\"1\" fill=\"#EAECF0\" />\r\n                            </svg>\r\n                          </span><span class=\"mx-2\">Or </span> <span class=\"line-bg \"><svg width=\"224\" height=\"2\" viewBox=\"0 0 224 2\"\r\n                              fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                              <rect y=\"0.5\" width=\"223.333\" height=\"1\" fill=\"#EAECF0\" />\r\n                            </svg>\r\n                          </span>\r\n                        </p>\r\n                        <input [disabled]=\"userType.role === 'user'\"   type=\"radio\" id=\"kt_account_team_size_select_1\" value=\"1-1\"  (click)=\"addSingleStoreNOB()\"\r\n                          class=\"btn-check ng-untouched ng-pristine ng-valid\" />\r\n                        <label for=\"kt_account_team_size_select_1\"\r\n                          class=\"btn btn-outline btn-outline-default rounded-3 w-75 p-4 mt-3\">\r\n                          <svg width=\"17\" height=\"16\" viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                            <path d=\"M1.18015 3.80378L1.1269 3.88695C0.568863 4.874 1.16469 6.12143 2.2363 6.26452C2.33339 6.27639 2.42373 6.28267 2.512 6.28267C3.09015 6.28267 3.60132 6.03465 3.95759 5.64792L4.51093 5.0473L5.06238 5.64965C5.41432 6.03407 5.92433 6.28267 6.50639 6.28267C7.08583 6.28267 7.59877 6.03372 7.95039 5.64965L8.50358 5.04541L9.05676 5.64965C9.40839 6.03372 9.92133 6.28267 10.5008 6.28267C11.0802 6.28267 11.5932 6.03372 11.9448 5.64965L12.498 5.04541L13.0511 5.64965C13.4028 6.03372 13.9157 6.28267 14.4952 6.28267C14.5805 6.28267 14.6736 6.27638 14.77 6.26462C15.8652 6.1153 16.463 4.80103 15.8243 3.80428C15.8242 3.80423 15.8242 3.80417 15.8242 3.80411L14.066 1.0627L14.066 1.0627L14.0651 1.06123C14.0499 1.0374 14.0124 1.01184 13.9652 1.01184H3.03581C2.98866 1.01184 2.95117 1.0374 2.93597 1.06124L2.93535 1.0622L1.18015 3.80378ZM14.1516 8.73706V11.869V12.619H13.4016H3.59943H2.84943V11.869V8.73753C2.7392 8.74573 2.62768 8.74994 2.51507 8.74994C2.47276 8.74994 2.43074 8.74931 2.389 8.74809V11.869V13.8035C2.389 14.4469 2.9229 14.988 3.59943 14.988H13.4016C14.0781 14.988 14.612 14.4469 14.612 13.8035V11.869V8.74827C14.5722 8.74937 14.5322 8.74994 14.4921 8.74994C14.3777 8.74994 14.2641 8.74559 14.1516 8.73706Z\" stroke=\"#344054\" stroke-width=\"1.5\"/>\r\n                            </svg>\r\n                          <span class=\"fw-bold fs-4 mx-2\">\r\n                            Add Single Store NoB</span></label>\r\n                      </div>\r\n                <!-- </div> -->\r\n            </div>\r\n        </div>\r\n\r\n        <div *ngIf=\"dataTableShow && !cardloading\" class=\"row px-0\">\r\n            <div class=\"col-md-12 pe-0\">\r\n        \r\n                <div class=\"card-header border-0 pt-3 px-0\">\r\n                    <h3 class=\"card-title align-items-start flex-column\">\r\n                        <span class=\"title-text mb-2\">Billing Summary Table</span>\r\n        \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                               \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                                <button *ngIf=\"userType.role !== 'user' && !noData && !saveBtnEnbale\" type=\"button\" (click)=\"editValue(tableHeaders)\" [disabled]=\"!dataCalculation?.isEdit\"\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=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n                                    <g clip-path=\"url(#clip0_7719_8137)\">\r\n                                    <path d=\"M14.166 2.49993C14.3849 2.28106 14.6447 2.10744 14.9307 1.98899C15.2167 1.87054 15.5232 1.80957 15.8327 1.80957C16.1422 1.80957 16.4487 1.87054 16.7347 1.98899C17.0206 2.10744 17.2805 2.28106 17.4993 2.49993C17.7182 2.7188 17.8918 2.97863 18.0103 3.2646C18.1287 3.55057 18.1897 3.85706 18.1897 4.16659C18.1897 4.47612 18.1287 4.78262 18.0103 5.06859C17.8918 5.35455 17.7182 5.61439 17.4993 5.83326L6.24935 17.0833L1.66602 18.3333L2.91602 13.7499L14.166 2.49993Z\" stroke=\"#344054\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                                    </g>\r\n                                    <defs>\r\n                                    <clipPath id=\"clip0_7719_8137\">\r\n                                    <rect width=\"20\" height=\"20\" fill=\"white\"/>\r\n                                    </clipPath>\r\n                                    </defs>\r\n                                    </svg><span class=\"ms-2\">Edit</span> </button>\r\n                                    <button *ngIf=\"userType.role !== 'user' && !noData && !saveBtnEnbale\" type=\"button\" (click)=\"Reupload()\"\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=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n                                    <path 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\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                                    </svg><span class=\"ms-2\">Re-Upload NoB</span> </button>\r\n                                <button *ngIf=\"!noData && !saveBtnEnbale\" 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=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n                                        <path d=\"M8.125 13.125H16.3562L14.7438 14.7438L15.625 15.625L18.75 12.5L15.625 9.375L14.7438 10.2562L16.3562 11.875H8.125V13.125Z\" fill=\"black\"/>\r\n                                        <path d=\"M13.75 8.75001V6.25001C13.7505 6.16776 13.7347 6.08622 13.7036 6.01007C13.6725 5.93392 13.6267 5.86466 13.5688 5.80626L9.19375 1.43126C9.13535 1.37333 9.06609 1.32751 8.98994 1.2964C8.91379 1.2653 8.83225 1.24953 8.75 1.25001H2.5C2.16848 1.25001 1.85054 1.38171 1.61612 1.61613C1.3817 1.85055 1.25 2.16849 1.25 2.50001V17.5C1.25 17.8315 1.3817 18.1495 1.61612 18.3839C1.85054 18.6183 2.16848 18.75 2.5 18.75H12.5C12.8315 18.75 13.1495 18.6183 13.3839 18.3839C13.6183 18.1495 13.75 17.8315 13.75 17.5V16.25H12.5V17.5H2.5V2.50001H7.5V6.25001C7.5 6.58153 7.6317 6.89947 7.86612 7.13389C8.10054 7.36831 8.41848 7.50001 8.75 7.50001H12.5V8.75001H13.75ZM8.75 6.25001V2.75626L12.2438 6.25001H8.75Z\" fill=\"black\"/>\r\n                                        </svg><span class=\"ms-2\">Export</span> </button>\r\n                                <!-- Save Button -->\r\n                                <ng-container  *ngIf=\"userType.role !== 'user' && !noData\">\r\n                                    <button *ngIf=\"saveBtnEnbale\"  (click)=\"cancel(tableHeaders)\" type=\"button\" class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n                                       \r\n                                        Cancel\r\n                                    </button>\r\n                                    </ng-container>\r\n                                    <ng-container *ngIf=\"userType.role !== 'user' && !noData\">\r\n                                    <button *ngIf=\"saveBtnEnbale\" (click)=\"saveValue()\" type=\"button\" class=\"btn mx-2 btn-primary rounded-3 text-nowrap border-val\">\r\n                                        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n                                            fill=\"none\">\r\n                                            <path\r\n                                                d=\"M14.1667 17.5V10.8333H5.83333V17.5M5.83333 2.5V6.66667H12.5M15.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.8333V4.16667C2.5 3.72464 2.67559 3.30072 2.98816 2.98816C3.30072 2.67559 3.72464 2.5 4.16667 2.5H13.3333L17.5 6.66667V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5Z\"\r\n                                                stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n                                                stroke-linejoin=\"round\" />\r\n                                        </svg>\r\n                                        <span class=\"ms-2\">Save</span>\r\n                                    </button>\r\n                                </ng-container>\r\n        \r\n        \r\n        \r\n        \r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div   class=\"card-body p-0\">\r\n                    <div *ngIf=\"!noData && !loading\" class=\"table-responsive\">\r\n                        <table class=\"table bottom-border text-nowrap\">\r\n                          <thead>\r\n                            <tr>\r\n                            <th>Store Name</th>\r\n                            <th>Store ID</th>\r\n                            <th>Date</th>\r\n                            <th><span *ngIf=\"dataCalculation?.convertionCalculation ==='footfall-count'\">Footfall</span>\r\n                                <span *ngIf=\"dataCalculation?.convertionCalculation ==='engagers-count'\">Engagers</span>\r\n                                <span *ngIf=\"dataCalculation?.convertionCalculation ==='billable-entities'\">Potential Buyers</span></th>\r\n                            <th>NoB’s Count</th>\r\n                            <th>Conversion Rate</th>\r\n                            </tr>\r\n                          </thead>\r\n                          <tbody class=\"fw-semibold\">\r\n                            <tr *ngFor=\"let obj of tableHeaders; let i =index;\">\r\n                                <td>{{obj.storeName}}</td>\r\n                                <td>{{obj.storeId}}</td>\r\n                                <td>{{obj.nobDate | date:'dd MMM, yyyy'}}</td>\r\n                                <td> <span *ngIf=\"dataCalculation?.convertionCalculation ==='footfall-count'\">{{obj.footfallCount ? obj.footfallCount:'--'}}</span>\r\n                                    <span *ngIf=\"dataCalculation?.convertionCalculation ==='engagers-count'\">{{obj.engagersCount ? obj.engagersCount :'--'}}</span>\r\n                                    <span *ngIf=\"dataCalculation?.convertionCalculation ==='billable-entities'\">{{obj.potentialBuyers ? obj.potentialBuyers:'--'}}</span> </td> \r\n                                    <td>\r\n                                        <!-- Read-only nobCount when not in editing mode -->\r\n                                         \r\n                                       <span *ngIf=\"!isEditing[obj.storeId] || obj.isUpdated\">\r\n  {{ obj.nobCount ?? '--' }}\r\n\r\n  <span\r\n    *ngIf=\"clientData?.isZonewiseNOB\"\r\n    class=\"text-primary underline ms-2 cursor-pointer\"\r\n    (click)=\"editView(obj)\">\r\n    View Zone-Wise\r\n  </span>\r\n</span>\r\n\r\n                                \r\n                                        <!-- Input field when in editing mode (if isUpdated is false) -->\r\n                                        <div *ngIf=\"(isEditing[obj.storeId] && !obj.isUpdated) \"\r\n       class=\"d-flex align-items-center gap-2\">\r\n\r\n    <input\r\n      type=\"text\"\r\n      class=\"form-control form-control-sm\"\r\n      style=\"width: 80px\" maxlength=\"4\"\r\n  minlength=\"1\"\r\n  pattern=\"^[0-9]{1,4}$\"\r\n  inputmode=\"numeric\"\r\n      [(ngModel)]=\"obj.nobCount\"\r\n      (keypress)=\"omit_special_char($event)\"\r\n      (change)=\"updateNobCount(obj)\"\r\n      placeholder=\"Enter\"\r\n    />\r\n\r\n    <span *ngIf=\"clientData?.isZonewiseNOB && obj?.zonewisenob?.length\"\r\n      class=\"text-primary underline cursor-pointer\"\r\n      (click)=\"editView(obj)\">\r\n      {{ editValueLabel }}\r\n    </span>\r\n\r\n  </div>\r\n                                      </td>\r\n                                <td>{{obj.conversionRate ? obj.conversionRate :'--'}}</td>\r\n                            </tr>\r\n                          </tbody>\r\n                        </table>\r\n                      </div>\r\n                      \r\n                </div>\r\n                <div *ngIf=\"!noData && !loading\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n                    <lib-pagination [itemsPerPage]=\"limit\" [currentPage]=\"offset\" [totalItems]=\"totalItems\"\r\n                    [paginationSizes]=\"paginationSizes\" [pageSize]=\"limit\" (pageChange)=\"onPageChange($event)\"\r\n                    (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n                </div>\r\n                <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center h-275px\">\r\n                    <div class=\"shimmer pt-0\">\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 title\"></div>\r\n                            <div class=\"stroke animate link\"></div>\r\n                            <div class=\"stroke animate link\"></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 summary table</div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        \r\n        </div>\r\n        <div *ngIf=\"dataTableShow && !cardloading\" class=\"notice d-flex rounded border-primary border p-6\">\r\n            <span><svg width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\"\r\n                    xmlns=\"http://www.w3.org/2000/svg\">\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 32V28M28 24H28.01M38 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=\"1.33333\" stroke-linecap=\"round\"\r\n                        stroke-linejoin=\"round\" />\r\n                </svg></span>\r\n            <div class=\"d-flex flex-stack flex-grow-1 flex-wrap flex-md-nowrap\">\r\n        <div  class=\"mb-3 mb-md-0 fw-bold ms-3\">\r\n            <h4 class=\"nob-upload-title\">POS Integration - For Accurate Conversions</h4>\r\n            <div class=\"nob-upload-text\">\r\n                Please contact your Tango Account Manager to Integrate your POS\r\n            </div>\r\n        </div>\r\n        <a *ngIf=\"dataTableShow\" (click)=\"openMailTo()\"  class=\"btn btn-outline px-6 align-self-center text-nowrap cursor-pointer\">Contact Us</a>\r\n        </div>\r\n        </div>\r\n\r\n    </div>\r\n\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { TangoAnalyseTrafficComponent } from './components/tango-analyse-traffic/tango-analyse-traffic.component';\r\nimport { ExploreViewComponent } from './components/explore-view/explore-view.component';\r\nimport { NobUploadComponent } from './components/nob-upload/nob-upload.component';\r\n\r\nconst routes: Routes = [\r\n  {\r\n    path: \"\",\r\n    component: TangoAnalyseTrafficComponent,\r\n  },\r\n  {\r\n    path: \"explore\",\r\n    component: ExploreViewComponent,\r\n  },\r\n  {\r\n    path: \"nob\",\r\n    component: NobUploadComponent,\r\n  },\r\n];\r\n\r\n@NgModule({\r\n  imports: [RouterModule.forChild(routes)],\r\n  exports: [RouterModule]\r\n})\r\nexport class TangoAnalyseTrafficRoutingModule { }\r\n","import { ChangeDetectorRef, Component, ElementRef, HostListener, NgZone, OnDestroy, OnInit, TemplateRef, ViewChild } from '@angular/core';\r\nimport * as am5 from '@amcharts/amcharts5';\r\nimport * as am5xy from '@amcharts/amcharts5/xy';\r\nimport am5themes_Animated from '@amcharts/amcharts5/themes/Animated';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ChartDetailModalComponent } from '../chart-detail-modal/chart-detail-modal.component';\r\nimport { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';\r\nimport { TrafficService } from '../../services/traffic.service';\r\nimport { Subject, takeUntil } from \"rxjs\";\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { FormBuilder, FormGroup,FormControl  } from '@angular/forms';\r\n@Component({\r\n  selector: 'lib-traffic-charts',\r\n  templateUrl: './traffic-charts.component.html',\r\n  styleUrl: './traffic-charts.component.scss'\r\n})\r\nexport class TrafficChartsComponent implements OnInit,OnDestroy {\r\n  chart: any;\r\n  root: any;\r\n  yAxis: any;\r\n  xAxis: any;\r\n  legend: any;\r\n  @ViewChild('tooltipContainer') tooltipContainer: ElementRef<HTMLDivElement>;\r\n  tooltipData: any;\r\n  dateLength: number;\r\n  datasets = [\r\n    // { value: 'footfall', label: 'Footfall' },\r\n    // { value: 'bounced footfall', label: 'Bounced Footfall' },\r\n    // { value: 'engagers', label: 'Engagers' },\r\n    { value: 'missedopportunities', label: 'Missed Opportunity' },\r\n    { value: 'potentialBuyer', label: 'Potential Buyer' },\r\n    { value: 'conversion', label: 'Conversion' },\r\n    { value: '', label: 'No Filter' }\r\n  ];\r\n\r\n\r\n  type: any = \"daily\";\r\n  // currentData = this.data.dataset1;\r\n  private sharedTooltip: am5.Tooltip;\r\n  selectValue= new FormControl(\"dataset1\");\r\n  private clickListener: () => void;\r\n  objData: any;\r\n  private readonly destroy$ = new Subject();\r\n  getFootfallTrendData: any;\r\n  processType=\"missedopportunities\"\r\n  typeValue: any ='average';\r\n  headerData: any;\r\n  form: FormGroup;\r\n  loading =true;\r\n  noData =false;\r\n  storeIdarray: any=[];\r\n\r\n  itemsPerPage = 10;\r\n  currentPage = 1;\r\n  totalItems = 1;\r\n  paginationSizes: number[] = [];\r\n  pageSize = 31;\r\n  getDateValues: any;\r\n  valueType: any='actual';\r\n  isAverage: any =false;\r\n  show: boolean =false;\r\n  nob: any =false; \r\n  constructor(private zone: NgZone,private modalService: NgbModal,private service: TrafficService, public gs: GlobalStateService,\r\n    private cd: ChangeDetectorRef,private fb: FormBuilder) {\r\n      this.form = this.fb.group({\r\n        selectValue: new FormControl('') // Initialize as FormControl\r\n      });\r\n     \r\n  }\r\n    offset: number = 0;\r\n    limit: number = 31;\r\n  ngOnInit(): void {\r\n    this.limit =31;\r\n    this.offset =0;\r\n    if(this.service?.isnob$){\r\n    this.service?.isnob$?.pipe(takeUntil(this.destroy$),debounceTime(300),)?.subscribe((isnob:any) => {\r\n      // if(isnob){\r\n      this.nob = isnob;\r\n      if(this.nob === true){\r\n        this.valueType = 'actual';\r\n      } else {\r\n        this.valueType ='average';\r\n      }\r\n\r\n    this.service?.isAverage$?.pipe(takeUntil(this.destroy$), debounceTime(300),)?.subscribe((isAverage:any) => {\r\n      this.isAverage = isAverage;\r\n      \r\n      if(this.isAverage === true){\r\n        this.valueType = 'average';\r\n      } else {\r\n        this.valueType ='actual';\r\n      }\r\n     \r\n\r\n      this.getInital();\r\n    // Ensure headerData is already initialized\r\n  \r\n  });\r\n})\r\n\r\n} else{\r\n \r\n  this.getInital();\r\n}\r\n\r\n\r\n   \r\n  }\r\n  getInital(){\r\n    this.loading =true;\r\n    this.noData =false;\r\n    this.gs.dataRangeValue\r\n    .pipe(takeUntil(this.destroy$), debounceTime(300),)\r\n    .subscribe((data: any) => {\r\n      if(data !==null || data?.client !== null){\r\n        this.headerData = data;\r\n        this.storeIdarray = this.headerData?.stores.filter((store:any) => store.checked).map((store:any) => store.storeId)\r\n      if (this.storeIdarray?.length === 1) {\r\n        this.typeValue = 'actual';\r\n      } else {\r\n        this.typeValue = 'average';\r\n      }\r\n      if (this.headerData) {\r\n        this.objData = {\r\n          fromDate: this.headerData?.date?.startDate,\r\n          toDate: this.headerData?.date?.endDate,\r\n          storeId: this.headerData?.stores.filter((store: any) => store.checked).map((store: any) => store.storeId),\r\n          clientId: this.headerData?.client,\r\n          processType: this.processType,\r\n          dateType: this.type,\r\n          filterBy: this.typeValue,\r\n          limit: 31,\r\n          offset: 0,\r\n          valueType: this.valueType,\r\n          nob:this.nob\r\n        };\r\n  \r\n        // Call the API after objData is fully prepared\r\n        this.footfallTrend();\r\n      }\r\n      this.dateLength = getDaysBetweenDates(data?.date.startDate, data?.date.endDate);\r\n\r\n        const initialValue = this.getInitialValue();\r\n        const selectControl = this.form.get('selectValue') as FormControl;\r\n        if (selectControl) {\r\n          selectControl.setValue(initialValue);\r\n        }\r\n      }\r\n    });\r\n  }\r\n  getInitialValue(): string {\r\n    // For example, selecting the second item in the dataset\r\n    return this.datasets[0].value; // Change as needed\r\n  }\r\n  onValueChange(selectedId: any) {\r\n    this.objData.processType = selectedId,\r\n    this.footfallTrend();\r\n  }\r\n  get selectControl(): FormControl {\r\n    return this.form.get('selectValue') as FormControl;\r\n  }\r\n  ngOnDestroy(): void {\r\n    if (this.root) {\r\n      this.root.dispose();\r\n    }\r\n    this.destroy$.next(true);\r\n    this.destroy$.complete();\r\n  }\r\n\r\n  footfallTrend(){ \r\n    this.offset =0;\r\n    this.limit =31;\r\n    this.loading =true;\r\n    this.noData =false;\r\n    this.service\r\n    .getfootfallTrend(this.objData)\r\n    .pipe(takeUntil(this.destroy$))\r\n    ?.subscribe({\r\n      next: (res: any) => {\r\n        if (res && res.code === 200) {\r\n          this.getFootfallTrendData = res?.data.footfallTrendData;\r\n          this.getDateValues = res?.data;\r\n          this.totalItems = res.data?.totalCount;\r\n          this.setPaginationSizes();\r\n          this.createChart() // Call with a delay to ensure the element is in the DOM\r\n          this.cd.detectChanges(); \r\n\r\n        } else {\r\n          this.loading =false;\r\n          this.noData =true;\r\n        }\r\n      },\r\n      error: (err: any) => {\r\n        this.cd.detectChanges();\r\n      },\r\n      complete: () => {},\r\n    });\r\n    \r\n  }\r\n  selectPlan(type: any) {\r\n    this.type = type;\r\n    this.objData.dateType =type;\r\n    this.objData.limit= 31;\r\n    this.objData.offset= 0;\r\n    this.footfallTrend();\r\n    // this.updateChartData();\r\n  }\r\n\r\n  createChart() {\r\n    this.loading =false;\r\n    this.noData =false;\r\n    setTimeout(() => {\r\n      const chartDiv = document.getElementById(\"Footfalltrend\");\r\n      if (!chartDiv) {\r\n        return;\r\n      }\r\n      if (this.root) {\r\n        this.root.dispose();\r\n      }\r\n    this.root = am5.Root.new('Footfalltrend');\r\n    this.root.setThemes([am5themes_Animated.new(this.root)]);\r\n\r\n    this.chart = this.root.container.children.push(\r\n      am5xy.XYChart.new(this.root, {\r\n        panX: false,\r\n        panY: false,\r\n        wheelX: 'panX',\r\n        wheelY: 'zoomX',\r\n        layout: this.root.verticalLayout\r\n      })\r\n    );\r\n\r\n    this.chart.set(\"scrollbarX\", am5.Scrollbar.new(this.root, {\r\n      orientation: \"horizontal\"\r\n    }));\r\n    let xRenderer = am5xy.AxisRendererX.new(this.root, {\r\n      minGridDistance: 20,\r\n      minorGridEnabled: true,\r\n    });\r\n    xRenderer.labels.template.setAll({\r\n      rotation: -45,\r\n      centerY: am5.p50,\r\n      centerX: am5.p100,\r\n      paddingRight: 5,\r\n    });\r\n    // xRenderer.grid.template.setAll({\r\n    //   location: 1,\r\n    // });\r\n    const xAxis = this.chart.xAxes.push(\r\n      am5xy.CategoryAxis.new(this.root, {\r\n        categoryField: 'storeName',\r\n        renderer:xRenderer,\r\n        tooltip: am5.Tooltip.new(this.root, { labelText: \"{fullStoreName}\"})\r\n      })\r\n    );\r\n    this.getFootfallTrendData.sort((a: any, b: any) => {\r\n      // Parse storeName as a Date and compare\r\n      const dateA = new Date(a.storeName);\r\n      const dateB = new Date(b.storeName);\r\n      \r\n      // Sort in ascending order (oldest to newest)\r\n      return dateA.getTime() - dateB.getTime();\r\n    });\r\n    this.getFootfallTrendData = this.getFootfallTrendData?.map(\r\n      (item: any) => ({\r\n        fullStoreName: item.storeName, // Full store name\r\n        storeName: item.storeName, // item.storeName.length > 20 ? item.storeName.slice(0, 20) + '...' : Shortened for xAxis\r\n        footfall: Number(item.footfall_count),\r\n        conversion: Number(item.conversion_count),\r\n        bounced: Number(item.bounced_count),\r\n        engagers: Number(item.engagers_count),\r\n        missedopportunities: Number(item.missedOpportunity_count),\r\n        potential: Number(item.potentialBuyers_count),\r\n        bounced_count:item.bounced_count,\r\n        avgDwellTime:item.avgDwellTime,\r\n        down_time:item.down_time,\r\n        engagers_count:item.engagers_count,\r\n        footfall_count:item.footfall_count,\r\n        missedOpportunity_count:item.missedOpportunity_count,\r\n        footfall_count_avg:item.footfall_count_avg,\r\n        bounced_footfall_count_avg:item.bounced_footfall_count_avg,\r\n        missedOpportunity_count_avg:item.missedOpportunity_count_avg,\r\n        engagers_count_avg:item.engagers_count_avg,\r\n        conversionRate: item.conversionRate,\r\n      })\r\n    );\r\n    xAxis.data.setAll(this.getFootfallTrendData); \r\n    const yAxis = this.chart.yAxes.push(\r\n      am5xy.ValueAxis.new(this.root, {\r\n        min:0,\r\n        renderer: am5xy.AxisRendererY.new(this.root, {})\r\n      })\r\n    );\r\n    // yAxis.get(\"renderer\").grid.template.set(\"forceHidden\", true);\r\n    // yAxis.get(\"renderer\").labels.template.set(\"forceHidden\", true);\r\n    // Set the title of the y-axis\r\n    yAxis.children.unshift(am5.Label.new(this.root, {\r\n      rotation: -90,\r\n      text: 'Footfall', //capitalizeFirstLetter(this.objData.processType), // Capitalize the first letter\r\n      y: am5.p50,\r\n      centerX: am5.p50,\r\n      fontFamily: \"Arial\", // Set font family\r\n      fontSize: \"14px\",    // Set font size\r\n      fill: am5.color(0x000000) // Set text color (optional)\r\n    }));\r\nif(this.objData.processType ==='potentialBuyer')\r\n  this.objData.processType ='potential'\r\nconst capitalizeTitle = (text: string): string => {\r\n  return text\r\n    .split(' ')\r\n    .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\r\n    .join(' ');\r\n};\r\n\r\n// Example usage\r\nconst processTypeTitle = capitalizeTitle(this.objData.processType);\r\n    this.createColumnSeries('Footfall', 'footfall', xAxis, yAxis, false, am5.color(0x67b7dc));\r\n    this.createColumnSeries('Engagers', 'engagers', xAxis, yAxis, true, am5.color(0x6794dc ));\r\n    this.createColumnSeries('Bounced', 'bounced', xAxis, yAxis, true, am5.color(0x6771dc ));\r\n    // this.createColumnSeries('Missed Opportunity', 'missedopportunities', xAxis, yAxis, true, am5.color(0x6794dc));\r\n    // this.createColumnSeries('Potential Buyer', 'potential', xAxis, yAxis, true, am5.color(0xdc69cf));\r\n    // this.createColumnSeries('Conversion', 'conversion', xAxis, yAxis, true, am5.color(0x6771dc));\r\n    if(this.objData.processType !=='' ){\r\n      const myColor = am5.color(0x00FF00);\r\n    this.createLineSeries(processTypeTitle, this.objData.processType, xAxis, yAxis, myColor);\r\n    }\r\n    const legend = this.chart.children.push(\r\n      am5.Legend.new(this.root, {\r\n        centerX: am5.p50,\r\n        x: am5.p50\r\n      })\r\n    );\r\n\r\n    legend.data.setAll(this.chart.series.values);\r\n\r\n    this.chart.set('cursor', am5xy.XYCursor.new(this.root, {\r\n      behavior: 'none'\r\n    }));\r\n\r\n    this.chart.series.each((series: any) => {\r\n      if (series.columns) {\r\n        series.columns.template.set(\"interactive\", true);\r\n        series.columns.template.events.on(\"click\", (ev: any) => {\r\n          const data = ev.target.dataItem.dataContext;\r\n          const { clientX, clientY } = ev.originalEvent;\r\n          this.showTooltip(data, clientX, clientY);\r\n        });\r\n      }\r\n    });\r\n    this.chart.appear(1000, 100);\r\n  },0)\r\n  }\r\n\r\n  tooltipVisible = false;\r\n  showTooltip(data: any, x: number, y: number): void {\r\n    this.tooltipVisible = false;\r\n    this.tooltipData = data;\r\n    const tooltipElement = this.tooltipContainer?.nativeElement;\r\n  \r\n    // Set tooltip content and make it visible to calculate dimensions\r\n    tooltipElement.style.display = 'block';\r\n    tooltipElement.style.visibility = 'hidden'; // Make it invisible but still present in the DOM\r\n  \r\n    // Force a reflow to ensure dimensions are up-to-date\r\n    tooltipElement.style.position = 'absolute';\r\n    \r\n    // Wait for the next event loop to get accurate dimensions\r\n    setTimeout(() => {\r\n      const tooltipWidth = tooltipElement.offsetWidth;\r\n      const tooltipHeight = tooltipElement.offsetHeight;\r\n      const screenWidth = window.innerWidth;\r\n      const screenHeight = window.innerHeight;\r\n  \r\n      // Calculate if there is enough space on the right side, otherwise place it on the left\r\n      if (x + tooltipWidth > screenWidth) {\r\n        tooltipElement.style.left = `${x - tooltipWidth}px`;\r\n      } else {\r\n        tooltipElement.style.left = `${x}px`;\r\n      }\r\n  \r\n      // Calculate if there is enough space at the bottom, otherwise place it at the top\r\n      if (y + tooltipHeight > screenHeight) {\r\n        tooltipElement.style.top = `${y - tooltipHeight}px`;\r\n      } else {\r\n        tooltipElement.style.top = `${y}px`;\r\n      }\r\n  \r\n      tooltipElement.style.visibility = 'visible'; // Make it visible again\r\n      this.tooltipVisible = true;\r\n    }, 0);\r\n  }\r\n\r\n  hideTooltip(): void {\r\n    this.tooltipVisible = false;\r\n    const tooltipElement = this.tooltipContainer?.nativeElement;\r\n    tooltipElement.style.display = 'none';\r\n  }\r\n\r\n  @HostListener('document:click', ['$event'])\r\n  onClick(event: MouseEvent): void {\r\n    const tooltipElement = this.tooltipContainer?.nativeElement;\r\n\r\n    // Check if the click was outside the tooltip\r\n    if (tooltipElement && !tooltipElement.contains(event.target as Node) && this.tooltipVisible) {\r\n      this.hideTooltip();\r\n    }\r\n    this.show =false;\r\n  }\r\n  \r\n  \r\n  // onDatasetChange(selectedValue: string): void {\r\n  //   this.updateChartData();\r\n  // }\r\n \r\n  // updateChartData(): void {\r\n  //   const xAxis = this.chart?.xAxes.getIndex(0) as am5xy.CategoryAxis<am5xy.AxisRenderer>;\r\n  //   xAxis.data.setAll(this.getFootfallTrendData);\r\n\r\n  //   this.chart.series.each((series: any) => {\r\n  //     series.data.setAll(this.getFootfallTrendData);\r\n  //   });\r\n  // }\r\n\r\n  createColumnSeries(name: string, fieldName: string, xAxis: am5xy.CategoryAxis<am5xy.AxisRenderer>, yAxis: am5xy.ValueAxis<am5xy.AxisRenderer>, stacked: boolean,color: am5.Color): void {\r\n    const series = this.chart.series.push(\r\n      am5xy.ColumnSeries.new(this.root, {\r\n        name: name,\r\n        xAxis: xAxis,\r\n        yAxis: yAxis,\r\n        valueYField: fieldName,\r\n        categoryXField: 'storeName',\r\n        stacked: stacked,\r\n      })\r\n    );\r\n\r\n    series.data.setAll(this.getFootfallTrendData);\r\n\r\n  // Adapter to apply custom column settings\r\n  series.columns.template.adapters.add(\"fillOpacity\", (fillOpacity:any, target:any) => {\r\n    const dataItem = target.dataItem.dataContext as any;\r\n    return dataItem.columnSettings ? dataItem.columnSettings.fillOpacity : fillOpacity;\r\n  });\r\n\r\n  series.columns.template.adapters.add(\"strokeDasharray\", (strokeDasharray:any, target:any) => {\r\n    const dataItem = target.dataItem.dataContext as any;\r\n    return dataItem.columnSettings ? dataItem.columnSettings.strokeDasharray : strokeDasharray;\r\n  });\r\n\r\n  series.columns.template.adapters.add(\"strokeWidth\", (strokeWidth:any, target:any) => {\r\n    const dataItem = target.dataItem.dataContext as any;\r\n    return dataItem.columnSettings ? dataItem.columnSettings.strokeWidth : strokeWidth;\r\n  });\r\n    series.columns.template.setAll({\r\n    //   tooltipText: \"{name}: {valueY.formatNumber('#.#')}%\", // Ensure proper formatting for single value display\r\n    //   tooltipY: am5.percent(10),\r\n      fill: color, // Set custom fill color for the bars\r\n      stroke: color // Set custom stroke color for the bars\r\n    });\r\n\r\n    series.bullets.push(() => {\r\n      return am5.Bullet.new(this.root, {\r\n        sprite: am5.Label.new(this.root, {\r\n          text: \"{valueY}\",\r\n          fill: this.root.interfaceColors.get(\"alternativeText\"),\r\n          centerY: am5.p50,\r\n          centerX: am5.p50,\r\n          populateText: true,\r\n          fontSize: 12  // Reduce font size\r\n        })\r\n      });\r\n    });\r\n\r\n    series.appear();\r\n  }\r\n\r\n\r\n\r\n  createLineSeries(name: string, fieldName: string, xAxis: am5xy.CategoryAxis<am5xy.AxisRenderer>, yAxis: am5xy.ValueAxis<am5xy.AxisRenderer>,color: am5.Color): void {\r\n    const series = this.chart.series.push(\r\n      am5xy.LineSeries.new(this.root, {\r\n        name: name,\r\n        xAxis: xAxis,\r\n        yAxis: yAxis,\r\n        valueYField: fieldName,\r\n        categoryXField: 'storeName',\r\n        tooltip: am5.Tooltip.new(this.root, {\r\n          pointerOrientation: \"horizontal\",\r\n          labelText: \"{name}: {valueY}\",\r\n          background: am5.Rectangle.new(this.root, {\r\n            fill: am5.color(0x00FF00) // Set the desired tooltip background color\r\n          })\r\n        })\r\n      })\r\n    );\r\n\r\n    series.strokes.template.setAll({\r\n      strokeWidth: 2,\r\n      stroke: am5.color(0x00FF00),\r\n       templateField: \"strokeSettings\",\r\n       fontSize: 12  // Reduce font size\r\n    });\r\n\r\n    series.data.setAll(this.getFootfallTrendData);\r\n\r\n      // Adapter to apply custom stroke settings\r\n      series.strokes.template.adapters.add(\"stroke\", (stroke:any, target:any) => {\r\n        const dataItem = target.dataItem;\r\n        if (dataItem && dataItem.dataContext && dataItem.dataContext.strokeSettings) {\r\n          return dataItem.dataContext.strokeSettings.stroke ?? stroke;\r\n        }\r\n        return stroke;\r\n      });\r\n\r\n      series.strokes.template.adapters.add(\"strokeWidth\", (strokeWidth:any, target:any) => {\r\n        const dataItem = target.dataItem;\r\n        if (dataItem && dataItem.dataContext && dataItem.dataContext.strokeSettings) {\r\n          return dataItem.dataContext.strokeSettings.strokeWidth ?? strokeWidth;\r\n        }\r\n        return strokeWidth;\r\n      });\r\n\r\n  series.strokes.template.adapters.add(\"strokeDasharray\", (strokeDasharray:any, target:any) => {\r\n    const dataItem = target.dataItem;\r\n    if (dataItem && dataItem.dataContext && dataItem.dataContext.strokeSettings) {\r\n      return dataItem.dataContext.strokeSettings.strokeDasharray ?? strokeDasharray;\r\n    }\r\n    return strokeDasharray;\r\n  });\r\n\r\n    series.bullets.push(() => {\r\n      return am5.Bullet.new(this.root, {\r\n        sprite: am5.Circle.new(this.root, {\r\n          strokeWidth: 1,\r\n          stroke: am5.color(0x00FF00),\r\n          radius: 1,\r\n          fill: this.root.interfaceColors.get(\"background\")\r\n        }),\r\n        \r\n      });\r\n    });\r\n\r\n    series.appear();\r\n  }\r\n\r\n  producttrailDropdown(event: MouseEvent) {\r\n    event.stopPropagation();\r\n    this.show =true;\r\n  }\r\n  changeStatus(type:any){\r\nthis.typeValue = type;\r\nthis.objData.filterBy =type;\r\nthis.footfallTrend();\r\nthis.show =false;\r\n  }\r\n  setPaginationSizes() {\r\n    if (this.totalItems > 31) {\r\n      this.paginationSizes = [31];\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  onPageChange(pageOffset: number) {\r\n    this.offset = Number(pageOffset);\r\n    this.objData.offset = this.offset -1;\r\n    this.objData.limit = this.limit;\r\n    this.service\r\n    .getfootfallTrend(this.objData)\r\n    .pipe(takeUntil(this.destroy$))\r\n    ?.subscribe({\r\n      next: (res: any) => {\r\n        if (res && res.code === 200) {\r\n          this.getFootfallTrendData = res?.data.footfallTrendData;\r\n          this.getDateValues = res?.data;\r\n          this.totalItems = res.data?.totalCount;\r\n          this.setPaginationSizes();\r\n          this.createChart() // Call with a delay to ensure the element is in the DOM\r\n          this.cd.detectChanges(); \r\n\r\n        } else {\r\n          this.loading =false;\r\n          this.noData =true;\r\n        }\r\n      },\r\n      error: (err: any) => {\r\n        this.cd.detectChanges();\r\n      },\r\n      complete: () => {},\r\n    });\r\n    \r\n  }\r\n\r\n  onPageSizeChange(pageSize: number) {\r\n    this.pageSize = Number(pageSize);\r\n    this.limit = Number(pageSize);\r\n    this.currentPage = 1;\r\n    this.offset = 0;\r\n    this.objData.offset = this.offset;\r\n    this.objData.limit = this.limit;\r\n    this.footfallTrend();\r\n  }\r\n  dataShow(){\r\n    this.show = true;\r\n  }\r\n  \r\n}\r\nfunction capitalizeFirstLetter(text: string): string {\r\n  return text.charAt(0).toUpperCase() + text.slice(1);\r\n}\r\nfunction getDaysBetweenDates(fromDate: string, toDate: string): number {\r\n  // Parse the date strings into Date objects\r\n  const start = new Date(fromDate);\r\n  const end = new Date(toDate);\r\n\r\n  // Calculate the difference in milliseconds\r\n  const differenceInMs = end.getTime() - start.getTime();\r\n\r\n  // Convert milliseconds to days (1 day = 86400000 milliseconds)\r\n  const millisecondsPerDay = 86400000;\r\n  const differenceInDays = Math.floor(differenceInMs / millisecondsPerDay);\r\n\r\n  return differenceInDays;\r\n}\r\n\r\n","<div class=\"card\">\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=\"card-label mb-2\">Footfall Trend</span>\r\n            <span class=\"text-sub mb-2\">Based on {{getDateValues?.fromDate | date:'dd MMM, yyyy'}} – {{getDateValues?.toDate | date:'dd MMM, yyyy'}}</span>\r\n        </h3>\r\n        <div class=\"card-toolbar text-nowrap\">\r\n            <div class=\"d-flex\">\r\n                <div class=\"d-flex align-items-center position-relative my-1\">\r\n                    <!--begin::Nav group-->\r\n                    <div class=\"nav-group nav-group-outline border-1 btn-group p-0\">\r\n                        <button class=\"btn btn-outline px-6 py-3\"\r\n                            [ngClass]=\"type === 'daily' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n                            (click)=\"selectPlan('daily')\">\r\n                            Day\r\n                        </button>\r\n                     <!-- Month Button -->\r\n\r\n\r\n<!-- Week Button -->\r\n<button  class=\"btn btn-outline px-6 py-3\"\r\n    [ngClass]=\"type === 'weekly' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n    (click)=\"selectPlan('weekly')\">\r\n    Week\r\n</button>\r\n\r\n<!-- Day Button, visible only if dateLength is valid and type is either 'weekly' or 'daily' -->\r\n<button class=\"btn btn-outline px-6 py-3\"\r\n    [ngClass]=\"type === 'monthly' ? 'activePlanBtn' : 'inactivePlanBtn'\"\r\n    (click)=\"selectPlan('monthly')\">\r\n    Month\r\n</button>\r\n\r\n                    </div>\r\n                    <!--end::Nav group-->\r\n                    <div class=\"d-flex\">\r\n                        <span class=\"mx-2 mt-3 dropselect\">Trend</span>\r\n\r\n                        <form [formGroup]=\"form\">\r\n                            <lib-reactive-select\r\n                              [formControl]=\"selectControl\" \r\n                              [idField]=\"'value'\"\r\n                              [nameField]=\"'label'\"\r\n                              [data]=\"datasets\"\r\n                              class=\"w-100\"\r\n                              (valueChange)=\"onValueChange($event)\">\r\n                            </lib-reactive-select>\r\n                          </form>\r\n                        <!-- <select class=\"form-select form-select-sm\" (change)=\"onDatasetChange($event)\">\r\n                            <option *ngFor=\"let dataset of datasets\" [value]=\"dataset.value\">{{ dataset.label }}\r\n                            </option>\r\n                        </select> -->\r\n                    </div>\r\n                    <div class=\"d-flex mt-1 ms-3\">\r\n                        <!-- <span class=\"d-flex ms-3 cursor-pointer text-nowrap\">Forecast\r\n                            <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n                                fill=\"none\">\r\n                                <g clip-path=\"url(#clip0_2645_27459)\">\r\n                                    <path\r\n                                        d=\"M3.33398 1.33331L3.46065 1.95998C3.55142 2.40998 3.75683 2.82893 4.05699 3.17628C4.35715 3.52362 4.74189 3.78759 5.17398 3.94265L5.33398 3.99998L5.17398 4.05731C4.74189 4.21237 4.35715 4.47634 4.05699 4.82368C3.75683 5.17103 3.55142 5.58998 3.46065 6.03998L3.33398 6.66665L3.20732 6.03998C3.11654 5.58998 2.91114 5.17103 2.61098 4.82368C2.31082 4.47634 1.92607 4.21237 1.49398 4.05731L1.33398 3.99998L1.49398 3.94265C1.92607 3.78759 2.31082 3.52362 2.61098 3.17628C2.91114 2.82893 3.11654 2.40998 3.20732 1.95998L3.33398 1.33331ZM5.33398 10.6666L5.48732 11.5173C5.52713 11.7392 5.62256 11.9474 5.76468 12.1224C5.9068 12.2974 6.09098 12.4335 6.29998 12.518L6.66732 12.6666L6.29998 12.8153C6.09094 12.8997 5.90668 13.0356 5.76445 13.2105C5.62221 13.3854 5.52663 13.5935 5.48665 13.8153L5.33398 14.6666L5.18065 13.816C5.14084 13.5941 5.04541 13.3859 4.90329 13.2109C4.76117 13.0359 4.57699 12.8998 4.36798 12.8153L4.00065 12.6666L4.36798 12.518C4.57703 12.4336 4.76129 12.2977 4.90352 12.1228C5.04576 11.9479 5.14133 11.7398 5.18132 11.518L5.33398 10.6666ZM10.6673 1.99998L11.038 3.76931C11.2269 4.67137 11.6463 5.50908 12.2554 6.20076C12.8645 6.89244 13.6424 7.41448 14.5133 7.71598L15.334 7.99998L14.5133 8.28398C13.6424 8.58548 12.8645 9.10752 12.2554 9.7992C11.6463 10.4909 11.2269 11.3286 11.038 12.2306L10.6673 14L10.2967 12.2306C10.1077 11.3286 9.6883 10.4909 9.07922 9.7992C8.47015 9.10752 7.69223 8.58548 6.82132 8.28398L6.00065 7.99998L6.82132 7.71598C7.69223 7.41448 8.47015 6.89244 9.07922 6.20076C9.6883 5.50908 10.1077 4.67137 10.2967 3.76931L10.6673 1.99998Z\"\r\n                                        stroke=\"#344054\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n                                        stroke-linejoin=\"round\" />\r\n                                </g>\r\n                                <defs>\r\n                                    <clipPath id=\"clip0_2645_27459\">\r\n                                        <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n                                    </clipPath>\r\n                                </defs>\r\n                            </svg>\r\n\r\n                            <span class=\"form-check form-switch mx-6\">\r\n                                <input class=\"form-check-input cursor-pointer\" type=\"checkbox\">\r\n                            </span>\r\n\r\n                        </span> -->\r\n\r\n                        <div class=\"position-relative cursor-pointer\">\r\n                            <div class=\"ms-5\" (click)=\"producttrailDropdown($event)\">\r\n                                <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n                                xmlns=\"http://www.w3.org/2000/svg\">\r\n                                <path d=\"M5 10H15M2.5 5H17.5M7.5 15H12.5\" stroke=\"#344054\" stroke-width=\"1.66667\"\r\n                                    stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                            </svg>  \r\n                               \r\n                            </div>\r\n                        </div>\r\n                        <div *ngIf=\"show\"\r\n                            class=\"card py-2 w-200px position-absolute productdrop top-20 end-0 mt-10 z-1\">\r\n                            <ul  class=\"list-unstyled mb-2\">\r\n                                <!-- <li class=\"producttext px-5 items cursor-pointer py-4\" [ngClass]=\"typeValue ==='normalize' ? 'bg-forcast':''\" type=\"button\"\r\n                                (click)=\"changeStatus('normalize')\">Normalize\r\n                                    <svg class=\"text-end ms-20\" *ngIf=\"typeValue ==='normalize' ? 'bg-forcast':''\" xmlns=\"http://www.w3.org/2000/svg\"\r\n                                        width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n                                        <path d=\"M13.3327 4L5.99935 11.3333L2.66602 8\" stroke=\"#344054\" stroke-width=\"1.5\"\r\n                                            stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                    </svg>\r\n                               </li> -->\r\n                               <li  *ngIf=\"storeIdarray?.length === 1\" class=\"producttext px-5 items cursor-pointer py-4\" [ngClass]=\"typeValue ==='actual' ? 'bg-forcast':''\" type=\"button\"\r\n                               (click)=\"changeStatus('actual')\">Actual\r\n                                   <svg class=\"text-end ms-20\" *ngIf=\"typeValue ==='actual' ? 'bg-forcast':''\" xmlns=\"http://www.w3.org/2000/svg\"\r\n                                       width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n                                       <path d=\"M13.3327 4L5.99935 11.3333L2.66602 8\" stroke=\"#344054\" stroke-width=\"1.5\"\r\n                                           stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                   </svg>\r\n                              </li>\r\n                            <li *ngIf=\"storeIdarray?.length > 1\" class=\"producttext px-5 items cursor-pointer py-4\" [ngClass]=\"typeValue ==='average' ? 'bg-forcast':''\" type=\"button\"\r\n                                (click)=\"changeStatus('average')\">Average\r\n                                   <span> <svg class=\"text-end ms-20\" *ngIf=\"typeValue ==='average' ? 'bg-forcast':''\" xmlns=\"http://www.w3.org/2000/svg\"\r\n                                        width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n                                        <path d=\"M13.3327 4L5.99935 11.3333L2.66602 8\" stroke=\"#344054\" stroke-width=\"1.5\"\r\n                                            stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                    </svg></span>\r\n                                </li>\r\n                            <!-- <li class=\"producttext px-5 items cursor-pointer py-4\" [ngClass]=\"typeValue ==='target' ? 'bg-forcast':''\" type=\"button\"\r\n                            (click)=\"changeStatus('target')\">Target\r\n                                    <svg class=\"text-end ms-20\" *ngIf=\"typeValue ==='target' ? 'bg-forcast':''\" xmlns=\"http://www.w3.org/2000/svg\"\r\n                                    width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n                                    <path d=\"M13.3327 4L5.99935 11.3333L2.66602 8\" stroke=\"#344054\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n                                        stroke-linejoin=\"round\" />\r\n                                </svg></li> -->\r\n                           \r\n                            <li class=\"producttext px-5 items cursor-pointer py-4\" [ngClass]=\"typeValue ==='weekends' ? 'bg-forcast':''\" type=\"button\"\r\n                            (click)=\"changeStatus('weekends')\">Weekends\r\n                                    <svg class=\"text-end ms-20\" *ngIf=\"typeValue ==='weekends' ? 'bg-forcast':''\" xmlns=\"http://www.w3.org/2000/svg\"\r\n                                    width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n                                    <path d=\"M13.3327 4L5.99935 11.3333L2.66602 8\" stroke=\"#344054\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n                                        stroke-linejoin=\"round\" />\r\n                                </svg></li>\r\n                           \r\n                            <li class=\"producttext px-5 items cursor-pointer py-4\" [ngClass]=\"typeValue ==='weekdays' ? 'bg-forcast':''\" type=\"button\"\r\n                            (click)=\"changeStatus('weekdays')\">Weekdays\r\n                                    <svg class=\"text-end ms-20\" *ngIf=\"typeValue ==='weekdays' ? 'bg-forcast':''\" xmlns=\"http://www.w3.org/2000/svg\"\r\n                                        width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n                                        <path d=\"M13.3327 4L5.99935 11.3333L2.66602 8\" stroke=\"#344054\" stroke-width=\"1.5\"\r\n                                            stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n                                    </svg>\r\n                                </li>\r\n                            </ul>\r\n                        </div>\r\n                    </div>\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\" 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 footfall trend</div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"card-body p-0\" *ngIf=\"!noData && !loading\">\r\n        <div class=\"text-center px-3\" id=\"Footfalltrend\"></div>\r\n\r\n        \r\n        <div #tooltipContainer class=\"tooltip-container\" >\r\n            <div class=\"tooltip-content\" *ngIf=\"tooltipData\">\r\n                <div class=\"content p-5\">\r\n                  <!-- <div class=\"container\">\r\n                    <span class=\"title text-start\">{{tooltipData.fullStoreName}}</Span>\r\n                    <span>Sum</span>\r\n                    <span>Avg</span>\r\n                  </div> -->\r\n                  \r\n                  <!-- Table for counts and rates in horizontal format -->\r\n                  <table class=\"table  table-horizontal\">\r\n                    <thead>\r\n                      <tr>\r\n                      <th class=\"title text-start px-3\">{{tooltipData.fullStoreName}}</th>\r\n                    <th class=\"title text-end\">Sum</th>\r\n                    \r\n                    <ng-container *ngIf=\"storeIdarray?.length !== 1\">\r\n                    <th *ngIf=\"type !== 'daily'\" class=\"title text-end\">Avg</th>\r\n                </ng-container>\r\n                      </tr>\r\n                    </thead>\r\n                    <tbody>\r\n                      <!-- Counts Section -->\r\n                      <tr>\r\n                        <td class=\"label\">Total Footfall</td>\r\n                        <td class=\"value\">{{tooltipData.footfall_count}}</td>\r\n                        <ng-container *ngIf=\"storeIdarray?.length !== 1\">\r\n                        <td *ngIf=\"type !== 'daily'\" class=\"value\">{{tooltipData.footfall_count_avg}}</td>\r\n                        </ng-container>\r\n                      </tr>\r\n                      <tr>\r\n                        <td class=\"label\">Bounced Footfall</td>\r\n                        <td class=\"value\">{{tooltipData.bounced_count}}</td>\r\n                        <ng-container *ngIf=\"storeIdarray?.length !== 1\">\r\n                        <td *ngIf=\"type !== 'daily'\" class=\"value\">{{tooltipData.bounced_footfall_count_avg}}</td>\r\n                        </ng-container>\r\n                      </tr>\r\n                      <tr>\r\n                        <td class=\"label\">Engagers</td>\r\n                        <td class=\"value\">{{tooltipData.engagers_count}}</td>\r\n                        <ng-container *ngIf=\"storeIdarray?.length !== 1\">\r\n                        <td *ngIf=\"type !== 'daily'\" class=\"value\">{{tooltipData.engagers_count_avg}}</td>\r\n                        </ng-container>\r\n                      </tr>\r\n                      <tr>\r\n                        <td class=\"label\">Missed Opportunities</td>\r\n                        <td class=\"value\">{{tooltipData.missedOpportunity_count}}</td>\r\n                        <ng-container *ngIf=\"storeIdarray?.length !== 1\">\r\n                        <td *ngIf=\"type !== 'daily'\" class=\"value\">{{tooltipData.missedOpportunity_count_avg}}</td>\r\n                        </ng-container>\r\n                      </tr>\r\n                      <tr>\r\n                        <td class=\"label\">Down Time</td>\r\n                        <td class=\"value\">{{tooltipData.down_time}}</td>\r\n                        <ng-container *ngIf=\"storeIdarray?.length !== 1\">\r\n                        <td *ngIf=\"type !== 'daily'\" class=\"value\">{{tooltipData.down_time}}</td>\r\n                        </ng-container>\r\n                      </tr>\r\n              \r\n                      <!-- Rates Section -->\r\n                      <tr>\r\n                        <td class=\"label\">Dwell Time</td>\r\n                        <td class=\"value\">{{tooltipData.avgDwellTime.toFixed(0)}} Mins</td>\r\n                        <ng-container *ngIf=\"storeIdarray?.length !== 1\">\r\n                        <td *ngIf=\"type !== 'daily'\" class=\"value\">{{tooltipData.avgDwellTime.toFixed(0)}} Mins</td>\r\n                        </ng-container>\r\n                      </tr>\r\n                      <tr>\r\n                        <td class=\"label\">Conversion</td>\r\n                        <td class=\"value\">{{tooltipData.conversionRate.toFixed(0)}}%</td>\r\n                        <ng-container *ngIf=\"storeIdarray?.length !== 1\">\r\n                        <td *ngIf=\"type !== 'daily'\" class=\"value\">{{tooltipData.conversionRate.toFixed(0)}}%</td>\r\n                        </ng-container>\r\n                      </tr>\r\n                    </tbody>\r\n                  </table>\r\n                </div>\r\n              </div>\r\n              \r\n          </div>\r\n\r\n\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 class=\"d-flex mx-3 my-2\">\r\n            <span class=\"mx-3\"><svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                <rect x=\"2\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" fill=\"#DAF1FF\"/>\r\n                <rect x=\"2\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" stroke=\"#EAF8FF\" stroke-width=\"4\"/>\r\n                <path d=\"M18.6667 11.3334L12 19.3334H18L17.3333 24.6667L24 16.6667H18L18.6667 11.3334Z\" stroke=\"#00A3FF\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                </svg></span>\r\n            <span class=\"mx-2 my-2\"><span class=\"text-week\">Weekend staffing lower than weekdays</span> <span class=\"text-cause ms-2\">cause potentially 20% fewer weekend conversions.</span></span>\r\n        </div> -->\r\n    </div>\r\n</div>","import { Component, OnInit, OnDestroy, NgZone, ChangeDetectorRef } from '@angular/core';\r\nimport * as am5 from \"@amcharts/amcharts5\";\r\nimport * as am5xy from \"@amcharts/amcharts5/xy\";\r\nimport am5themes_Animated from \"@amcharts/amcharts5/themes/Animated\";\r\nimport am5themes_Responsive from \"@amcharts/amcharts5/themes/Responsive\";\r\nimport { Router } from '@angular/router';\r\nimport { TrafficService } from '../../services/traffic.service';\r\nimport { Subject, takeUntil } from \"rxjs\";\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport dayjs from 'dayjs';\r\n@Component({\r\n  selector: \"lib-traffic-card-charts\",\r\n  templateUrl: \"./traffic-card-charts.component.html\",\r\n  styleUrl: \"./traffic-card-charts.component.scss\",\r\n})\r\nexport class TrafficCardChartsComponent implements OnInit, OnDestroy {\r\n  private root!: am5.Root;\r\n  private chart: am5xy.XYChart;\r\n  private series: am5xy.ColumnSeries;\r\n  private root2: am5.Root;\r\n  private chart2: am5xy.XYChart;\r\n  private series2: am5xy.ColumnSeries;\r\n  detailedRoot: am5.Root;\r\n  detailedChart: am5xy.XYChart;\r\n  detailedSeries: am5xy.ColumnSeries;\r\n  dayjs =dayjs\r\n  heatMapRoot: am5.Root;\r\n  heatMapChart: am5xy.XYChart;\r\n  heatMapSeries: am5xy.ColumnSeries;\r\n  dwellRoot: am5.Root;\r\n  dwellChart: am5xy.XYChart;\r\n  dwellSeries: am5xy.ColumnSeries;\r\n  demoGraphicsData: any;\r\n  demoGraphicsroot: any;\r\n  buyersroot:any;\r\n  datasets: any = [];\r\n  data: any;\r\n  currentData: any;\r\n  currentData2: any;\r\n  detailedCharts: boolean = false;\r\n  date: any;\r\n  value: any;\r\n  footfallValue: string = \"footfall\";\r\n  demoGraphicsChartInstance: any;\r\n  buyersChartInstance:any;\r\n  selectedTab: any = \"footfall\";\r\n  getOverallCardData: any = [];\r\n  objData: any;\r\n  getOverallHourlyData: any;\r\n  getOverallChartData: any=[];\r\n  getSingleChartData: any;\r\n  buyersData: any;\r\n  getDensityDwellData: any;\r\n  trafficData:any= [];\r\n  footfallDate: any;\r\n  headerData: any;\r\n  selctedValue:any ='Footfall Analysis';\r\n  chartNoData: boolean =false;\r\n  chartloading: boolean =true;\r\n  storeIdarray: any =[];\r\n  totalCount: any;\r\n  demoGraphicsSeries: any;\r\n  valueType: any='actual';\r\n  isAverage: any =false;\r\n  itemsPerPage = 10;\r\n  currentPage = 1;\r\n  totalItems = 1;\r\n  paginationSizes: number[] = [];\r\n  pageSize:any=20;\r\n  offset: number = 0;\r\n  limit: number = 20;\r\n  demoNoData =false;\r\n  demoloading =false;\r\n  buyersNoData =false;\r\n  buyersloading =false;\r\n  nob: any =false;\r\n  constructor(\r\n    private zone: NgZone,\r\n    private router: Router,\r\n    private service: TrafficService,public gs: GlobalStateService,\r\n    private cd: ChangeDetectorRef\r\n  ) {\r\n\r\n   \r\n  }\r\n  ngOnInit(): void {\r\n    if(this.service?.isnob$){\r\n    this.service?.isnob$?.pipe(takeUntil(this.destroy$),debounceTime(300),)?.subscribe((isnob:any) => {\r\n      this.nob = isnob;\r\n      if(this.nob === true){\r\n        this.valueType = 'actual';\r\n      } else {\r\n        this.valueType ='average';\r\n      }\r\n    this.service?.isAverage$?.pipe(takeUntil(this.destroy$), debounceTime(300),)?.subscribe((isAverage:any) => {\r\n      this.isAverage = isAverage;\r\n      if(this.isAverage === true){\r\n        this.valueType = 'average';\r\n      } else {\r\n        this.valueType ='actual';\r\n      }\r\n      this.detailedCharts= false;\r\n      this.selectedTab = \"footfall\"\r\n      this.footfallValue = \"footfall\";\r\n      this.selctedValue ='Footfall Analysis';\r\n    this.datasets = [\r\n      { value: this.footfallValue, label: this.selctedValue },\r\n      { value: \"demographic\", label: \"Demographic Analysis\" },\r\n      { value: \"buyer\", label: \"Buyer Analysis\" },\r\n    ];\r\n    this.trafficData = [\r\n      { value: 7, label: \"Last 7 Days\" },\r\n      { value: 30, label: \"Last 30 Days\" },\r\n    ];\r\n    this.footfallDate =this.trafficData[0].value\r\n    this.getInital();\r\n\r\n});\r\n    })\r\n  }  else {\r\n    this.selectedTab = \"footfall\"\r\n    this.footfallValue = \"footfall\";\r\n    this.selctedValue ='Footfall Analysis';\r\n    this.datasets = [\r\n      { value: this.footfallValue, label: this.selctedValue },\r\n      { value: \"demographic\", label: \"Demographic Analysis\" },\r\n      { value: \"buyer\", label: \"Buyer Analysis\" },\r\n    ];\r\n    this.trafficData = [\r\n      { value: 7, label: \"Last 7 Days\" },\r\n      { value: 30, label: \"Last 30 Days\" },\r\n    ];\r\n    this.footfallDate =this.trafficData[0].value\r\n    this.getInital();\r\n\r\n  }\r\n\r\n  }\r\n  getInital(){\r\n    this.gs.dataRangeValue\r\n    .pipe(takeUntil(this.destroy$), debounceTime(300),)\r\n    .subscribe((data: any) => {\r\n      if(data !==null || data?.client !== null){\r\n        this.headerData = data;\r\n        this.storeIdarray = this.headerData?.stores.filter((store:any) => store.checked).map((store:any) => store.storeId)\r\n        this.detailedCharts = false;\r\n        if (this.headerData) {\r\n          this.objData = {\r\n            fromDate: this.headerData?.date?.startDate,\r\n            toDate: this.headerData?.date?.endDate,\r\n            storeId: this.headerData?.stores.filter((store:any) => store.checked).map((store:any) => store.storeId),\r\n            clientId:this.headerData?.client,\r\n            processType: 'footfall',\r\n            normalizedData: false,\r\n            valueType :this.valueType,\r\n            nob:this.nob\r\n          };\r\n          this.selectedTab = \"footfall\"\r\n          this.footfallValue = \"footfall\";\r\n          this.selctedValue ='Footfall Analysis';\r\n          this.chartNoData = false;\r\n          this.chartloading = true;\r\n          this.overallCard();\r\n          this.overallHourlyChart();\r\n          this.overallChart();\r\n        }\r\n      }\r\n})\r\n  }\r\n\r\n  setPaginationSizes() {\r\n    if (this.totalItems > 20) {\r\n      this.paginationSizes = [20];\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  selectedTabs(type: any) {\r\n    this.detailedCharts = false;\r\n    this.selectedTab = type;\r\n    this.objData.processType = type;\r\n    this.objData.valueType =this.valueType;\r\n   if(this.selectedTab === 'traffic'){\r\n    this.getDwell(); this.trafficDwell();\r\n   } else{\r\n    if(this.selectedTab === \"footfall\"){\r\n      this.footfallValue = \"footfall\";\r\n      this.selctedValue ='Footfall Analysis'\r\n    } else if(this.selectedTab === \"conversion\"){\r\n      this.footfallValue = \"conversion\";\r\n      this.selctedValue ='Conversion Analysis'\r\n    } else if(this.selectedTab === \"engagers\"){\r\n      this.footfallValue = \"engagers\";\r\n      this.selctedValue ='Engagers Analysis'\r\n    } else if(this.selectedTab === \"bounced\"){\r\n      this.footfallValue = \"bounced\";\r\n      this.selctedValue ='Bounced Analysis'\r\n    } else if(this.selectedTab === \"potentialBuyers\"){\r\n      this.footfallValue = \"potentialBuyers\";\r\n      this.selctedValue ='Potential Buyer Analysis'\r\n    } else if(this.selectedTab === \"missedOpportunity\"){\r\n      this.footfallValue = \"missedOpportunity\";\r\n      this.selctedValue ='Missed Opportunity Analysis'\r\n    } \r\n    if(this.nob === true && this.selectedTab === \"conversion\"){\r\n      this.selectedTab = \"conversion\"\r\n       this.footfallValue = \"conversion\";\r\n      this.selctedValue ='Conversion Analysis'\r\n      this.datasets = [\r\n        { value: this.selectedTab, label: this.selctedValue },\r\n      ];\r\n      this.overallCard();\r\n      this.overallChart();\r\n    } else {\r\n    this.datasets = [\r\n      { value: this.selectedTab, label: this.selctedValue },\r\n      { value: \"demographic\", label: \"Demographic Analysis\" },\r\n      { value: \"buyer\", label: \"Buyer Analysis\" },\r\n    ];\r\n    this.overallCard();\r\n    this.overallHourlyChart();\r\n    this.overallChart();\r\n  }\r\n  }\r\n  }\r\n\r\n  overallCard() {\r\n    (this.objData.limit = 10), (this.objData.offset = 0);\r\n    delete this.objData.normalizedData;\r\n    delete this.objData.revenue;\r\n    delete this.objData.hourFormat;\r\n    delete this.objData.dateRange;\r\n    this.service\r\n      .getOverallCards(this.objData)\r\n      .pipe(takeUntil(this.destroy$))\r\n      ?.subscribe({\r\n        next: (res: any) => {\r\n          if (res && res.code === 200) {\r\n            this.getOverallCardData = res?.data;\r\n          }\r\n        },\r\n        error: (err: any) => {\r\n          this.cd.detectChanges();\r\n        },\r\n        complete: () => {},\r\n      });\r\n  }\r\n\r\n  overallHourlyChart() {\r\n    this.chartNoData = false;\r\n    this.chartloading = true;\r\n    (this.objData.limit = 10), (this.objData.offset = 0);\r\n    delete this.objData.normalizedData;\r\n    delete this.objData.revenue;\r\ndelete this.objData.hourFormat\r\n    delete this.objData.dateRange;\r\n    this.service\r\n      .getOverallHourlyChart(this.objData)\r\n      .pipe(takeUntil(this.destroy$))\r\n      ?.subscribe({\r\n        next: (res: any) => {\r\n          if (res && res.code === 200) {\r\n            this.chartNoData = false;\r\n            this.chartloading = false;\r\n            this.getOverallHourlyData = res?.data?.hourlyData;\r\n            this.initHeatChart();\r\n            this.cd.detectChanges();\r\n          } else {\r\n            this.chartNoData = true;\r\n            this.chartloading = false;\r\n          }\r\n        },\r\n        error: (err: any) => {\r\n          this.cd.detectChanges();\r\n        },\r\n        complete: () => {},\r\n      });\r\n  }\r\n\r\n  overallChart() {\r\n    this.offset =0;\r\n    this.limit =20;\r\n    this.chartNoData = false;\r\n    this.chartloading = true;\r\n    (this.objData.limit = 20), (this.objData.offset = 0);\r\n    delete this.objData.normalizedData;\r\n    delete this.objData.revenue;\r\n    delete this.objData.hourFormat;\r\n    delete this.objData.dateRange;\r\n    this.service\r\n      .getOverallChart(this.objData)\r\n      .pipe(takeUntil(this.destroy$),debounceTime(300))\r\n      ?.subscribe({\r\n        next: (res: any) => {\r\n          if (res && res.code === 200) {\r\n            this.getOverallChartData = res?.data;\r\n            this.totalItems = res.data.totalCount\r\n            this.chartNoData = false;\r\n            this.chartloading = false;\r\n            this.initChart();\r\n      this.setPaginationSizes();\r\n            this.cd.detectChanges();\r\n          } else {\r\n            this.chartNoData = true;\r\n            this.chartloading = false;\r\n          }\r\n        },\r\n        error: (err: any) => {\r\n          this.cd.detectChanges();\r\n        },\r\n        complete: () => {},\r\n      });\r\n  }\r\n  onPageChange(pageOffset: number) {\r\n    this.offset = Number(pageOffset);\r\n    this.objData.offset = this.offset -1;\r\n    this.objData.limit = this.limit;\r\n    delete this.objData.normalizedData;\r\n    delete this.objData.revenue;\r\n    delete this.objData.hourFormat;\r\n    delete this.objData.dateRange;\r\n    this.service\r\n    .getOverallChart(this.objData)\r\n    .pipe(takeUntil(this.destroy$),debounceTime(300))\r\n    ?.subscribe({\r\n      next: (res: any) => {\r\n        if (res && res.code === 200) {\r\n          this.getOverallChartData = res?.data;\r\n          this.totalItems = res.data.totalCount\r\n          this.chartNoData = false;\r\n          this.chartloading = false;\r\n          this.initChart();\r\n    this.setPaginationSizes();\r\n          this.cd.detectChanges();\r\n        } else {\r\n          this.chartNoData = true;\r\n          this.chartloading = false;\r\n        }\r\n      },\r\n      error: (err: any) => {\r\n        this.cd.detectChanges();\r\n      },\r\n      complete: () => {},\r\n    });\r\n  }\r\n\r\n  onPageSizeChange(pageSize: number) {\r\n    this.pageSize = Number(pageSize);\r\n    this.limit = Number(pageSize);\r\n    this.currentPage = 1;\r\n    this.offset = 0;\r\n    this.objData.offset = this.offset;\r\n    this.objData.limit = this.limit;\r\n    this.overallChart();\r\n  }\r\n  getFootfallDensityDwellData:any =[];\r\n  trafficDwell(){\r\n    this.chartNoData = false;\r\n    this.chartloading = true;\r\n    delete this.objData.limit;\r\n    delete this.objData.offset;\r\n    delete this.objData.processType;\r\n    delete this.objData.hourFormat;\r\n    this.objData.dateRange =Number(this.footfallDate);\r\n    this.service\r\n      .getTrafficDensityDwell(this.objData)\r\n      .pipe(takeUntil(this.destroy$))\r\n      ?.subscribe({\r\n        next: (res: any) => {\r\n          if (res && res.code === 200) {\r\n            this.getFootfallDensityDwellData = res?.data;\r\n            this.trafficHeatChart();\r\n            this.chartNoData = false;\r\n            this.chartloading = false;\r\n            this.cd.detectChanges();\r\n          } else if(!res || res.code === 204){\r\n            this.chartNoData = true;\r\n            this.chartloading = false;\r\n            this.getFootfallDensityDwellData =[];\r\n          }\r\n        },\r\n        error: (err: any) => {\r\n          this.chartNoData = true;\r\n          this.chartloading = false;\r\n          this.getFootfallDensityDwellData =[];\r\n          this.cd.detectChanges();\r\n        },\r\n        complete: () => {},\r\n      }); \r\n  }\r\n  getDwell(){\r\n    this.chartNoData = false;\r\n    this.chartloading = true;\r\n    delete this.objData.limit;\r\n    delete this.objData.offset;\r\n    delete this.objData.processType;\r\n    delete this.objData.hourFormat;\r\n    this.objData.dateRange =Number(this.footfallDate);\r\n    this.service\r\n      .getDensityDwell(this.objData)\r\n      .pipe(takeUntil(this.destroy$))\r\n      ?.subscribe({\r\n        next: (res: any) => {\r\n          if (res && res.code === 200) {\r\n            this.getDensityDwellData = res?.data;\r\n            this.getDwellChart();\r\n            this.chartNoData = false;\r\n            this.chartloading = false;\r\n            this.cd.detectChanges();\r\n          } else if(!res || res.code === 204){\r\n            this.chartNoData = true;\r\n            this.chartloading = false;\r\n            this.getDensityDwellData =[];\r\n          }\r\n        },\r\n        error: (err: any) => {\r\n          this.chartNoData = true;\r\n          this.chartloading = false;\r\n          this.cd.detectChanges();\r\n          this.getDensityDwellData =[];\r\n        },\r\n        complete: () => {},\r\n      });\r\n  }\r\n  initChart(): void {\r\n    this.chartNoData = false;\r\n    this.chartloading = false;\r\n    setTimeout(() => {\r\n      const chartDiv = document.getElementById(\"testGraphics\");\r\n      if (!chartDiv) {\r\n        return;\r\n      }\r\n      if (this.root) {\r\n        this.root.dispose();\r\n      }\r\n      this.root = am5.Root.new(\"testGraphics\");\r\n\r\n      // Set themes\r\n      // this.root.setThemes([am5themes_Animated.new(this.root)]);\r\n      // const totalCount = this.totalCount;\r\n      // const dynamicWidth = Math.max(800, totalCount * 50); // Minimum 800px or 50px per item\r\n      // console.log(dynamicWidth,this.totalCount)\r\n      // Create chart\r\n      this.chart = this.root.container.children.push(\r\n        am5xy.XYChart.new(this.root, {\r\n          panX: true,\r\n          panY: true,\r\n          wheelX: \"panX\",\r\n          wheelY: \"zoomX\",\r\n          pinchZoomX: true,\r\n          paddingLeft: 0,\r\n          paddingRight: 1,\r\n          width: am5.percent(100), // Let the chart take full width\r\n        })\r\n      );\r\n      // this.chart.plotContainer.setAll({\r\n      //   minWidth: dynamicWidth, // Set dynamic min width for scrolling\r\n      // });\r\n      // Add cursor\r\n      let cursor = this.chart.set(\"cursor\", am5xy.XYCursor.new(this.root, {}));\r\n      cursor.lineY.set(\"visible\", false);\r\n\r\n      // Create axes\r\n      let xRenderer = am5xy.AxisRendererX.new(this.root, {\r\n        minGridDistance: 30,\r\n        minorGridEnabled: true,\r\n      });\r\n\r\n      xRenderer.labels.template.setAll({\r\n        rotation: -45,\r\n        centerY: am5.p50,\r\n        centerX: am5.p100,\r\n        paddingRight: 5,\r\n      });\r\n\r\n      xRenderer.grid.template.setAll({\r\n        location: 1,\r\n      });\r\n      // Add scrollbar\r\n      this.chart.set(\r\n        \"scrollbarX\",\r\n        am5.Scrollbar.new(this.root, {\r\n          orientation: \"horizontal\",\r\n        })\r\n      );\r\n      let xAxis = this.chart.xAxes.push(\r\n        am5xy.CategoryAxis.new(this.root, {\r\n          maxDeviation: 0.3,\r\n          categoryField: \"storeName\",\r\n          renderer: xRenderer,\r\n          // tooltip: am5.Tooltip.new(this.root, {labelText: \"{fullStoreName}\"}),\r\n        })\r\n      );\r\n\r\n      let yRenderer = am5xy.AxisRendererY.new(this.root, {\r\n        strokeOpacity: 0.1,\r\n      });\r\n\r\n      let yAxis = this.chart.yAxes.push(\r\n        am5xy.ValueAxis.new(this.root, {\r\n          maxDeviation: 0.3,\r\n          renderer: yRenderer,\r\n        })\r\n      );\r\n      let data = this.getOverallChartData?.storeData?.map(\r\n        (item: any) => ({\r\n          fullStoreName: item.storeName, // Full store name\r\n    storeName:  item.storeName, // item.storeName.length > 20 ? item.storeName.slice(0, 20) + '...' : Shortened for xAxis\r\n    value: Number(item.count),\r\n    storeId: item.storeId\r\n        })\r\n      );\r\n      // Create series\r\n      this.series = this.chart.series.push(\r\n        am5xy.ColumnSeries.new(this.root, {\r\n          name: \"Series 1\",\r\n          xAxis: xAxis,\r\n          yAxis: yAxis,\r\n          valueYField: \"value\",\r\n          categoryXField: \"storeName\",\r\n          tooltip: am5.Tooltip.new(this.root, {\r\n            labelText: `${this.capitalizeTitle(this.objData.processType)}, {fullStoreName}: {valueY}`,\r\n          }),\r\n        })\r\n      );\r\n      xAxis.data.setAll(data);\r\n      this.series.columns.template.setAll({ strokeOpacity: 0 });\r\n      this.series.columns.template.events.on(\"click\", (ev: any) => {\r\n        const dataItem = ev.target.dataItem.dataContext;\r\n        this.handleBarClick(dataItem);\r\n      });\r\n\r\n      this.series.columns.template.setAll({ strokeOpacity: 0 });\r\n\r\n      this.series.data.setAll(data);\r\n  // Set width for chart container to enable scrolling\r\n  // const totalCount = this.totalCount;\r\n  // const itemWidth = 50; // Width of each item, adjust as needed\r\n  // const minWidth = totalCount * itemWidth; // Calculate total width\r\n  // chartDiv.style.width = `${Math.max(minWidth, 1024)}px`; // Minimum width of 800px\r\n      // Make stuff animate on load\r\n      this.series.appear(1000);\r\n      this.chart.appear(1000, 100);\r\n    }, 0);\r\n  }\r\n\r\n  capitalizeTitle(text: string): string {\r\n    return text\r\n      .toLowerCase() // Ensure the string is in lowercase first\r\n      .split(' ')    // Split the string into words\r\n      .map(word => word.charAt(0).toUpperCase() + word.slice(1)) // Capitalize the first letter of each word\r\n      .join(' ');    // Join the words back together\r\n  }\r\n  getRangeColor(rate: number): am5.Color {\r\n    let color: am5.Color;\r\n    if (rate >= 0 && rate <= 10) {\r\n      color = am5.color(0xEAF8FF);\r\n    } else if (rate > 10 && rate <= 20) {\r\n      color = am5.color(0xCCE9FE);\r\n    } else if (rate > 20 && rate <= 30) {\r\n      color = am5.color(0xB0D6FC);\r\n    } else if (rate > 30 && rate <= 40) {\r\n      color = am5.color(0x94C2FA);\r\n    } else if (rate > 40 && rate <= 55) {\r\n      color = am5.color(0x78A9F8);\r\n    } else if (rate > 55 && rate <= 75) {\r\n      color = am5.color(0x99D2FD);  \r\n    } else if (rate > 75 && rate <= 90) {\r\n      color = am5.color(0x66BCFD);    \r\n    }  else if (rate > 90 && rate <= 100) {\r\n      color = am5.color(0x3460F3);  \r\n    } else {\r\n      color = am5.color(0xFFF);\r\n    }\r\n    return color;\r\n  }\r\n  initHeatChart() {\r\n    this.chartNoData = false;\r\n    this.chartloading = false;\r\n    setTimeout(() => {\r\n      const chartDiv = document.getElementById(\"heatmapchart\");\r\n      if (!chartDiv) {\r\n        return;\r\n      }\r\n      if (this.root2) {\r\n        this.root2.dispose();\r\n      }\r\n      // Create root element\r\n      this.root2 = am5.Root.new(\"heatmapchart\");\r\n\r\n      this.root2.container.setAll({\r\n        width: am5.percent(100),\r\n      });\r\n\r\n      // Set themes\r\n      this.root2.setThemes([\r\n        am5themes_Animated.new(this.root2),\r\n        am5themes_Responsive.new(this.root2),\r\n      ]);\r\n\r\n      // Create chart\r\n      this.chart2 = this.root2.container.children.push(\r\n        am5xy.XYChart.new(this.root2, {\r\n          panX: false,\r\n          panY: false,\r\n          wheelX: \"none\",\r\n          wheelY: \"none\",\r\n          paddingLeft: 0,\r\n          layout: this.root2.verticalLayout,\r\n        })\r\n      );\r\n\r\n      // Create axes and their renderers\r\n      const yRenderer = am5xy.AxisRendererY.new(this.root2, {\r\n        minGridDistance: 20,\r\n        inversed: true,\r\n        opposite: true,\r\n        minorGridEnabled: true,\r\n      });\r\n\r\n      yRenderer.grid.template.set(\"visible\", false);\r\n\r\n      const yAxis = this.chart2.yAxes.push(\r\n        am5xy.CategoryAxis.new(this.root2, {\r\n          renderer: yRenderer,\r\n          categoryField: \"time\",\r\n        })\r\n      );\r\n\r\n      const xRenderer = am5xy.AxisRendererX.new(this.root2, {\r\n        minGridDistance: 30,\r\n        opposite: true,\r\n        minorGridEnabled: true,\r\n      });\r\n\r\n      xRenderer.grid.template.set(\"visible\", false);\r\n\r\n      const xAxis = this.chart2.xAxes.push(\r\n        am5xy.CategoryAxis.new(this.root2, {\r\n          renderer: xRenderer,\r\n          categoryField: \"weekday\",\r\n        })\r\n      );\r\n\r\n      // Create series\r\n      this.series2 = this.chart2.series.push(\r\n        am5xy.ColumnSeries.new(this.root2, {\r\n          calculateAggregates: true,\r\n          stroke: am5.color(0xffffff),\r\n          clustered: false,\r\n          xAxis: xAxis,\r\n          yAxis: yAxis,\r\n          categoryXField: \"weekday\",\r\n          categoryYField: \"time\",\r\n          valueField: \"rate\",\r\n        })\r\n      );\r\n      this.series2.columns.template.setAll({\r\n        tooltipText: \"{rate}\",\r\n        strokeOpacity: 1,\r\n        strokeWidth: 2,\r\n        width: am5.percent(100),\r\n        height: am5.percent(100),\r\n        fill: am5.color(0xffffff), // Default color for columns\r\n      });\r\n      \r\n      // Apply range-based color rules for each data item\r\n      this.series2.columns.template.adapters.add(\"fill\", (fill, target) => {\r\n        const dataItem = target.dataItem?.dataContext as ChartDataItem; // Cast dataContext to ChartDataItem\r\n        if (dataItem && dataItem.rate !== undefined) {\r\n          return this.getRangeColor(dataItem.rate); // Get color based on rate\r\n        }\r\n        return fill;\r\n      });\r\n\r\n      this.series2.bullets.push(() => {\r\n        return am5.Bullet.new(this.root2, {\r\n          sprite: am5.Label.new(this.root2, {\r\n            text: \"{rate.formatNumber('#.#')}%\",\r\n            fill: am5.color(0x000000),\r\n            centerY: am5.p50,\r\n            centerX: am5.p50,\r\n            populateText: true,\r\n            fontSize: 12, // Reduce font size\r\n          }),\r\n        });\r\n      });\r\n\r\n      // Set data\r\n      const data = this.getOverallHourlyData?.map((item: any) => ({\r\n        ...item,\r\n        weekday: \"Hourly Data\",\r\n      }));\r\n      this.series2.data.setAll(data);\r\n\r\n      // Auto-populate X and Y axis category data\r\n      const times: string[] = [];\r\n      am5.array.each(data, function (row: any) {\r\n        if (times.indexOf(row.time) === -1) {\r\n          times.push(row.time);\r\n        }\r\n      });\r\n\r\n      xAxis.data.setAll([{ weekday: \"Hourly Data\" }]); // Set single category for x-axis\r\n      yAxis.data.setAll(\r\n        times.map(function (item) {\r\n          return { time: item };\r\n        })\r\n      );\r\n\r\n      this.chart2.appear(1000, 100);\r\n    }, 0);\r\n  }\r\n\r\n  onDatasetChange(event: any): void {\r\n    this.detailedCharts = false;\r\n    // const target = event.target as HTMLSelectElement;\r\n    this.footfallValue = event;\r\n    if (this.footfallValue === \"footfall\" ||  this.footfallValue === \"conversion\"\r\n      ||  this.footfallValue === \"engagers\" ||  this.footfallValue === \"bounced\"\r\n      ||  this.footfallValue === \"potentialBuyer\" ||  this.footfallValue === \"missedOpportunity\") {\r\n      if (this.root) {\r\n        this.root.dispose();\r\n      }\r\n      this.overallHourlyChart();\r\n      this.overallChart();\r\n    } else if (this.footfallValue === \"demographic\") {\r\n      // Dispose of any previous charts to avoid duplicates\r\n      if (this.demoGraphicsroot) {\r\n        this.demoGraphicsroot.dispose();\r\n      }\r\n      this.getDemoGraphics();\r\n    } \r\n    else if (this.footfallValue === \"buyer\") {\r\n      // Dispose of any previous charts to avoid duplicates\r\n      if (this.buyersroot) {\r\n        this.buyersroot.dispose();\r\n      }\r\n      this.getBuyers();\r\n    } \r\n    this.cd.detectChanges();\r\n  }\r\n\r\n  backToFootfall() {\r\n    this.objData.storeId = this.headerData.stores.filter((store:any) => store.checked).map((store:any) => store.storeId),\r\n    this.detailedCharts = false;\r\n    this.overallHourlyChart();\r\n    this.overallChart();\r\n  }\r\n\r\n  getDemoGraphics(){\r\n    delete this.objData.limit;\r\n    delete this.objData.offset;\r\n    this.demoNoData =false;\r\n    this.demoloading = true;\r\n    this.service\r\n    .getDemoGraphicsChart(this.objData)\r\n    .pipe(takeUntil(this.destroy$))\r\n    ?.subscribe({\r\n      next: (res: any) => {\r\n        if (res && res.code === 200) {\r\n          this.demoGraphicsData = res?.data.demographicData;\r\n          \r\n          this.demoGraphicsChart();\r\n          this.cd.detectChanges(); \r\n          // Call with a delay to ensure the element is in the DOM\r\n           this.demoNoData =false;\r\n           this.demoloading = false;\r\n        } else {\r\n          this.demoNoData =true;\r\n          this.demoloading = false;\r\n        }\r\n      },\r\n      error: (err: any) => {\r\n        this.cd.detectChanges();\r\n      },\r\n      complete: () => {},\r\n    });\r\n    \r\n  }\r\n  demoGraphicsChart(): void {\r\n    this.chartNoData = false;\r\n    this.chartloading = false;\r\n    this.demoNoData =false;\r\n    this.demoloading = false;\r\n    setTimeout(() => {\r\n      const demoGraphicsDiv = document.getElementById(\"demoGraphics\");\r\n      if (!demoGraphicsDiv) {\r\n        return;\r\n      }\r\n      // Dispose of previous chart if it exists\r\n      if (this.demoGraphicsroot) {\r\n        this.demoGraphicsroot.dispose();\r\n      }\r\n\r\n      // Create a new chart\r\n      this.demoGraphicsroot = am5.Root.new(demoGraphicsDiv);\r\n      this.demoGraphicsroot.setThemes([\r\n        am5themes_Animated.new(this.demoGraphicsroot),\r\n      ]);\r\n\r\n      this.demoGraphicsChartInstance =\r\n        this.demoGraphicsroot.container.children.push(\r\n          am5xy.XYChart.new(this.demoGraphicsroot, {\r\n            panX: false,\r\n            panY: false,\r\n            paddingLeft: 0,\r\n            wheelX: \"panX\",\r\n            wheelY: \"zoomX\",\r\n            layout: this.demoGraphicsroot.verticalLayout,\r\n          })\r\n        );\r\n\r\n      let xRenderer = am5xy.AxisRendererX.new(this.demoGraphicsroot, {\r\n        cellStartLocation: 0.1,\r\n        cellEndLocation: 0.9,\r\n        minorGridEnabled: true,\r\n      });\r\n\r\n      let xAxis = this.demoGraphicsChartInstance.xAxes.push(\r\n        am5xy.CategoryAxis.new(this.demoGraphicsroot, {\r\n          categoryField: \"age\",\r\n          renderer: xRenderer,\r\n          tooltip: am5.Tooltip.new(this.demoGraphicsroot, {}),\r\n        })\r\n      );\r\n      this.demoGraphicsData = this.demoGraphicsData?.map(\r\n        (item: any) => ({\r\n          age: item.age,\r\n          count: Number(item.count),\r\n          maleCount: Number(item.maleCount),\r\n          femaleCount: Number(item.femaleCount),\r\n        })\r\n      );\r\n      xRenderer.grid.template.setAll({ location: 1 });\r\n      xAxis.data.setAll(this.demoGraphicsData);\r\n\r\n      let yAxis = this.demoGraphicsChartInstance.yAxes.push(\r\n        am5xy.ValueAxis.new(this.demoGraphicsroot, {\r\n          renderer: am5xy.AxisRendererY.new(this.demoGraphicsroot, {\r\n            strokeOpacity: 0.1,\r\n          }),\r\n        })\r\n      );\r\n     // Add legend\r\n    let legend = this.demoGraphicsChartInstance.children.push(\r\n      am5.Legend.new(this.demoGraphicsroot, {\r\n        x: am5.p100,    // Align to 100% width (right side)\r\n        y: am5.p0,      // Align to the top\r\n        centerX: am5.p100,  // Align the center of the legend to its right\r\n        centerY: am5.p0,    // Align the top of the legend to the top of the chart\r\n      })\r\n    );\r\n\r\n    // Create the series and add each to the legend\r\n    const maleSeries = this.makeSeries(\"Male\", \"maleCount\", xAxis, yAxis);\r\n    const femaleSeries = this.makeSeries(\"Female\", \"femaleCount\", xAxis, yAxis);\r\n\r\n    legend.data.setAll([maleSeries, femaleSeries]);\r\n      this.demoGraphicsChartInstance.appear(1000, 100);\r\n\r\n    },\r\n           0);\r\n\r\n  }\r\n  makeSeries(\r\n    name: any,\r\n    fieldName: any,\r\n    xAxis: am5xy.CategoryAxis<am5xy.AxisRenderer>,\r\n    yAxis: am5xy.ValueAxis<am5xy.AxisRenderer>\r\n  ) {\r\n    let series = this.demoGraphicsChartInstance.series.push(\r\n      am5xy.ColumnSeries.new(this.demoGraphicsroot, {\r\n        name: name,\r\n        xAxis: xAxis,\r\n        yAxis: yAxis,\r\n        valueYField: fieldName,\r\n        categoryXField: \"age\",\r\n      })\r\n    );\r\n  \r\n    series.columns.template.setAll({\r\n      tooltipText: \"{name}, {categoryX}: {valueY}\",\r\n      width: am5.percent(90),\r\n      tooltipY: 0,\r\n      strokeOpacity: 0,\r\n    });\r\n  \r\n    series.data.setAll(this.demoGraphicsData);\r\n    series.appear();\r\n  \r\n    return series;  // Return the series to add it to the legend\r\n  }\r\n  getBuyers(){\r\n    delete this.objData.limit;\r\n    delete this.objData.offset;\r\n    this.buyersloading = true;\r\n    this.buyersNoData =false;\r\n    this.service\r\n    .getBuyersChart(this.objData)\r\n    .pipe(takeUntil(this.destroy$))\r\n    ?.subscribe({\r\n      next: (res: any) => {\r\n        if (res && res.code === 200) {\r\n          this.buyersData = res?.data.buyerData;\r\n         \r\n         this.getBuyersChart(); // Call with a delay to ensure the element is in the DOM\r\n         this.cd.detectChanges(); \r\n         this.buyersNoData =false;\r\n         this.buyersloading = false;\r\n        } else{\r\n          this.buyersloading = false;\r\n          this.buyersNoData =true;\r\n        }\r\n      },\r\n      error: (err: any) => {\r\n        this.cd.detectChanges();\r\n      },\r\n      complete: () => {},\r\n    });\r\n  }\r\n  getBuyersChart(): void {\r\n    this.chartNoData = false;\r\n    this.chartloading = false;\r\n    this.buyersNoData =false;\r\n    this.buyersloading = false;\r\n    setTimeout(() => {\r\n    const buyersDiv = document.getElementById(\"buyersCharts\");\r\n    if (!buyersDiv) {\r\n      return;\r\n    }\r\n\r\n    // Dispose of previous chart if it exists\r\n    if (this.buyersroot) {\r\n      this.buyersroot.dispose();\r\n    }\r\n\r\n    // Create a new chart\r\n    this.buyersroot = am5.Root.new(buyersDiv);\r\n    this.buyersroot.setThemes([\r\n      am5themes_Animated.new(this.buyersroot),\r\n    ]);\r\n\r\n    this.buyersChartInstance =\r\n      this.buyersroot.container.children.push(\r\n        am5xy.XYChart.new(this.buyersroot, {\r\n          panX: false,\r\n          panY: false,\r\n          paddingLeft: 0,\r\n          wheelX: \"panX\",\r\n          wheelY: \"zoomX\",\r\n          layout: this.buyersroot.verticalLayout,\r\n        })\r\n      );\r\n\r\n    let xRenderer = am5xy.AxisRendererX.new(this.buyersroot, {\r\n      cellStartLocation: 0.1,\r\n      cellEndLocation: 0.9,\r\n      minorGridEnabled: true,\r\n    });\r\n\r\n    let xAxis = this.buyersChartInstance.xAxes.push(\r\n      am5xy.CategoryAxis.new(this.buyersroot, {\r\n        categoryField: \"age\",\r\n        renderer: xRenderer,\r\n        tooltip: am5.Tooltip.new(this.buyersroot, {}),\r\n      })\r\n    );\r\n    this.buyersData = this.buyersData?.map(\r\n      (item: any) => ({\r\n        age: item.age,\r\n        singleCount: Number(item.singleCount),\r\n        groupCount: Number(item.groupCount),\r\n      })\r\n    );\r\n    xRenderer.grid.template.setAll({ location: 1 });\r\n    xAxis.data.setAll(this.buyersData);\r\n\r\n    let yAxis = this.buyersChartInstance.yAxes.push(\r\n      am5xy.ValueAxis.new(this.buyersroot, {\r\n        renderer: am5xy.AxisRendererY.new(this.buyersroot, {\r\n          strokeOpacity: 0.1,\r\n        }),\r\n      })\r\n    );\r\n    let legend = this.buyersChartInstance.children.push(\r\n      am5.Legend.new(this.buyersroot, {\r\n        x: am5.p100,    // Align to 100% width (right side)\r\n    y: am5.p0,      // Align to the top\r\n    centerX: am5.p100,  // Align the center of the legend to its right\r\n    centerY: am5.p0,    // Align the top of the legend to the top of the chart\r\n      })\r\n    );\r\n    \r\n  const singleCount =  this.getBuyerSeries(\"Single\", \"singleCount\", xAxis, yAxis);\r\n  const groupCount =  this.getBuyerSeries(\"Group\", \"groupCount\", xAxis, yAxis);\r\n    legend.data.setAll([singleCount, groupCount]);\r\n    this.buyersChartInstance.appear(1000, 100);\r\n  },0);\r\n}\r\ngetBuyerSeries(\r\n  name: string,\r\n  fieldName: string,\r\n  xAxis: am5xy.CategoryAxis<am5xy.AxisRenderer>,\r\n  yAxis: am5xy.ValueAxis<am5xy.AxisRenderer>\r\n) {\r\n  let series = this.buyersChartInstance.series.push(\r\n    am5xy.ColumnSeries.new(this.buyersroot, {\r\n      name: name,\r\n      xAxis: xAxis,\r\n      yAxis: yAxis,\r\n      valueYField: fieldName,\r\n      categoryXField: \"age\",  // Assuming \"age\" is the category field\r\n    })\r\n  );\r\n\r\n  series.columns.template.setAll({\r\n    tooltipText: \"{name}: {valueY}\",\r\n    width: am5.percent(90),\r\n    tooltipY: 0,\r\n    strokeOpacity: 0,\r\n  });\r\n\r\n  series.data.setAll(this.buyersData);  // Assuming you have buyersData\r\n\r\n  return series;  // Return the series for legend\r\n\r\n}\r\nstoreName:any;\r\nstoreId:any;\r\nformatDate(dateString: string): string {\r\n  return this.dayjs(dateString).format('DD MMM');  // Output: '01 Jan'\r\n}\r\n  handleBarClick(dataItem: any): void {\r\n    this.storeName = dataItem.fullStoreName;\r\n    this.storeId = dataItem.storeId\r\n    this.objData.storeId =[dataItem.storeId],\r\n    this.service\r\n      .getSingleStoreChart(this.objData)\r\n      .pipe(takeUntil(this.destroy$))\r\n      ?.subscribe({\r\n        next: (res: any) => {\r\n          if (res && res.code === 200) {\r\n            this.getSingleChartData = res?.data.storeData;\r\n            this.detailedCharts = true;\r\n            this.cd.detectChanges(); \r\n            setTimeout(() => this.getSingleStore(), 0); // Call with a delay to ensure the element is in the DOM\r\n          }\r\n        },\r\n        error: (err: any) => {\r\n          this.cd.detectChanges();\r\n        },\r\n        complete: () => {},\r\n      });\r\n      \r\n  }\r\n\r\ngetSingleStore(){\r\n    const chartDiv = document.getElementById(\"detailedChartDiv\");\r\n    if (!chartDiv) {\r\n      return;\r\n    }\r\n\r\n    if (this.detailedRoot) {\r\n      this.detailedRoot.dispose();\r\n    }\r\n  \r\n    this.detailedRoot = am5.Root.new(\"detailedChartDiv\");\r\n    this.detailedRoot.setThemes([\r\n      am5themes_Animated.new(this.detailedRoot),\r\n    ]);\r\n\r\n    this.detailedChart = this.detailedRoot.container.children.push(\r\n      am5xy.XYChart.new(this.detailedRoot, {\r\n        panX: false,\r\n        panY: false,\r\n        wheelX: \"panX\",\r\n        wheelY: \"zoomX\",\r\n        paddingLeft: 0,\r\n      })\r\n    );\r\n\r\n    // Add cursor\r\n    let cursor = this.detailedChart.set(\r\n      \"cursor\",\r\n      am5xy.XYCursor.new(this.detailedRoot, {})\r\n    );\r\n    cursor.lineY.set(\"visible\", false);\r\n\r\n    // Create axes\r\n    let xRenderer = am5xy.AxisRendererX.new(this.detailedRoot, {\r\n      minGridDistance: 30,\r\n      minorGridEnabled: true,\r\n    });\r\n\r\n    xRenderer.labels.template.setAll({\r\n      rotation: -90,\r\n      centerY: am5.p50,\r\n      centerX: am5.p100,\r\n      paddingRight: 15,\r\n    });\r\n\r\n    xRenderer.grid.template.setAll({\r\n      location: 1,\r\n    });\r\n    // Add scrollbar\r\n    this.detailedChart.set(\r\n      \"scrollbarX\",\r\n      am5.Scrollbar.new(this.detailedRoot, {\r\n        orientation: \"horizontal\",\r\n      })\r\n    );\r\n    let xAxis = this.detailedChart.xAxes.push(\r\n      am5xy.CategoryAxis.new(this.detailedRoot, {\r\n        maxDeviation: 0.3,\r\n        categoryField: \"date\",\r\n        renderer: xRenderer,\r\n        tooltip: am5.Tooltip.new(this.detailedRoot, {}),\r\n      })\r\n    );\r\n\r\n    let yRenderer = am5xy.AxisRendererY.new(this.detailedRoot, {\r\n      strokeOpacity: 0.1,\r\n    });\r\n\r\n    let yAxis = this.detailedChart.yAxes.push(\r\n      am5xy.ValueAxis.new(this.detailedRoot, {\r\n        maxDeviation: 0.3,\r\n        renderer: yRenderer,\r\n      })\r\n    );\r\n    \r\n    let data = this.getSingleChartData.map((item: any) => ({\r\n      date: this.formatDate(item.date), // Convert date string to timestamp\r\n      value: Number(item.count), // Use `count` as `value`\r\n    }));\r\n    data.sort((a: any, b: any) => {\r\n      // Parse storeName as a Date and compare\r\n      const dateA = new Date(a.date);\r\n      const dateB = new Date(b.date);\r\n      \r\n      // Sort in ascending order (oldest to newest)\r\n      return dateA.getTime() - dateB.getTime();\r\n    });\r\n    // Create series\r\n    this.detailedSeries = this.detailedChart.series.push(\r\n      am5xy.ColumnSeries.new(this.detailedRoot, {\r\n        name: \"Series 2\",\r\n        xAxis: xAxis,\r\n        yAxis: yAxis,\r\n        valueYField: \"value\",\r\n        sequencedInterpolation: true,\r\n        categoryXField: \"date\",\r\n        tooltip: am5.Tooltip.new(this.detailedRoot, {\r\n          labelText: \"{valueY}\",\r\n        }),\r\n      })\r\n    );\r\n    this.detailedSeries.columns.template.setAll({ strokeOpacity: 0 });\r\n    xAxis.data.setAll(data);\r\n    this.detailedSeries.data.setAll(data);\r\n    this.detailedSeries.appear(1000);\r\n    this.detailedChart.appear(1000, 100);\r\n}\r\ntrafficHeatChart() {\r\n  this.chartNoData = false;\r\n  this.chartloading = false;\r\n\r\n  setTimeout(() => {\r\n    const chartDiv = document.getElementById(\"trafficHeatmapChart\");\r\n    if (!chartDiv) {\r\n      return;\r\n    }\r\n\r\n    // Dispose of the previous chart instance if it exists\r\n    if (this.heatMapRoot) {\r\n      this.heatMapRoot.dispose();\r\n    }\r\n\r\n    // Initialize the chart root\r\n    this.heatMapRoot = am5.Root.new(\"trafficHeatmapChart\");\r\n    this.heatMapRoot.container.setAll({\r\n      width: am5.percent(100),\r\n    });\r\n\r\n    // Apply themes\r\n    this.heatMapRoot.setThemes([\r\n      am5themes_Animated.new(this.heatMapRoot),\r\n      am5themes_Responsive.new(this.heatMapRoot),\r\n    ]);\r\n\r\n    // Create the chart\r\n    this.heatMapChart = this.heatMapRoot.container.children.push(\r\n      am5xy.XYChart.new(this.heatMapRoot, {\r\n        panX: false,\r\n        panY: false,\r\n        wheelX: \"none\",\r\n        wheelY: \"none\",\r\n        paddingLeft: 0,\r\n        layout: this.heatMapRoot.verticalLayout,\r\n      })\r\n    );\r\n\r\n    // Create Y-axis\r\n    const yRenderer = am5xy.AxisRendererY.new(this.heatMapRoot, {\r\n      visible: false,\r\n      minGridDistance: 30,\r\n      inversed: true,\r\n      minorGridEnabled: true,\r\n    });\r\n    yRenderer.grid.template.set(\"visible\", false);\r\n\r\n    const yAxis = this.heatMapChart.yAxes.push(\r\n      am5xy.CategoryAxis.new(this.heatMapRoot, {\r\n        maxDeviation: 0,\r\n        renderer: yRenderer,\r\n        categoryField: \"hour\",\r\n      })\r\n    );\r\n\r\n    // Create X-axis\r\n    const xRenderer = am5xy.AxisRendererX.new(this.heatMapRoot, {\r\n      visible: false,\r\n      minGridDistance: 30,\r\n      minorGridEnabled: true,\r\n    });\r\n    xRenderer.grid.template.set(\"visible\", false);\r\n\r\n    const xAxis = this.heatMapChart.xAxes.push(\r\n      am5xy.CategoryAxis.new(this.heatMapRoot, {\r\n        renderer: xRenderer,\r\n        categoryField: \"weekday\",\r\n      })\r\n    );\r\n\r\n    // Add Y-axis label\r\n    yAxis.children.unshift(\r\n      am5.Label.new(this.heatMapRoot, {\r\n        rotation: -90,\r\n        text: \"Hours\",\r\n        y: am5.p50,\r\n        centerX: am5.p50,\r\n        fontFamily: \"Arial\",\r\n        fontSize: \"14px\",\r\n        fill: am5.color(0x000000),\r\n      })\r\n    );\r\n\r\n    // Create series\r\n    this.heatMapSeries = this.heatMapChart.series.push(\r\n      am5xy.ColumnSeries.new(this.heatMapRoot, {\r\n        calculateAggregates: true,\r\n        stroke: am5.color(0xffffff),\r\n        clustered: false,\r\n        xAxis: xAxis,\r\n        yAxis: yAxis,\r\n        categoryXField: \"weekday\",\r\n        categoryYField: \"hour\",\r\n        valueField: \"value\",\r\n      })\r\n    );\r\n\r\n    // Configure column appearance\r\n    this.heatMapSeries.columns.template.setAll({\r\n      tooltipText: \"{value}\",\r\n      strokeOpacity: 1,\r\n      strokeWidth: 2,\r\n      width: am5.percent(100),\r\n      height: am5.percent(100),\r\n    });\r\n\r\n    // Set column color based on value\r\n    this.heatMapSeries.columns.template.adapters.add(\"fill\", (fill, target) => {\r\n      const dataItem = target.dataItem?.dataContext as { value: number };\r\n      return dataItem && dataItem.value !== undefined ? this.getRangeColor1(dataItem.value) : fill;\r\n    });\r\n\r\n    // Add bullet for value labels\r\n    this.heatMapSeries.bullets.push(() => {\r\n      return am5.Bullet.new(this.heatMapRoot, {\r\n        sprite: am5.Label.new(this.heatMapRoot, {\r\n          text: \"{value}\",\r\n          fill: am5.color(0x000000),\r\n          centerY: am5.p50,\r\n          centerX: am5.p50,\r\n          populateText: true,\r\n          fontSize: 12,\r\n        }),\r\n      });\r\n    });\r\n\r\n    // Prepare and sort data for the chart\r\n    const heatMapData: any[] = [];\r\n    if (this.getFootfallDensityDwellData && this.getFootfallDensityDwellData.trafficDensity) {\r\n      Object.keys(this.getFootfallDensityDwellData.trafficDensity).forEach(hour => {\r\n        this.getFootfallDensityDwellData.trafficDensity[hour].forEach((dayData: any) => {\r\n          heatMapData.push({\r\n            hour: dayData.time,\r\n            weekday: dayData.day,\r\n            value: parseInt(dayData.footfallCount, 10), // Ensure integer parsing\r\n          });\r\n        });\r\n      });\r\n    } else {\r\n      console.error(\"Traffic density data is undefined or null.\");\r\n    }\r\n\r\n\r\n    // Set data to the series\r\n    this.heatMapSeries.data.setAll(heatMapData);\r\n    // Extract unique weekdays and hours, sorted\r\n    const weekdays: string[] = Array.from(new Set(heatMapData.map(row => row.weekday)));\r\n    const hours: string[] = Array.from(new Set(heatMapData.map(row => row.hour)))\r\n      .sort((a, b) => a.localeCompare(b));\r\n\r\n    // Set axis data\r\n    xAxis.data.setAll(\r\n      weekdays.map(item => ({ weekday: item }))\r\n    );\r\n\r\n    yAxis.data.setAll(\r\n      hours.map(item => ({ hour: item }))\r\n    );\r\n\r\n    // Finalize chart appearance\r\n    this.heatMapChart.appear(1000, 100);\r\n\r\n    // Ensure the root is assigned correctly\r\n    this.heatMapRoot = this.heatMapRoot;\r\n\r\n  }, 0);\r\n}\r\n\r\ngetRangeColor1(footfallCount: number): am5.Color {\r\n  let maxFootfall:any;\r\n  const minFootfall = 0;  // minimum expected footfall\r\n  if(this.objData.dateRange =30)\r\n  maxFootfall = 3500;\r\nelse \r\nmaxFootfall = 750;\r\n  const normalizedValue = (footfallCount - minFootfall) / (maxFootfall - minFootfall);\r\n  const clampedValue = Math.min(Math.max(normalizedValue, 0), 0.5);\r\n  const adjustedValue = Math.pow(clampedValue, 0.5);  // Increase power to darken faster\r\n  const baseColor = am5.color(0x008edf);  // Starting color (light blue)\r\n  const adjustedColor = am5.Color.lighten(baseColor, 1 - adjustedValue);\r\n  return adjustedColor;\r\n}\r\n\r\n\r\n  getDwellChart() {\r\n    this.chartNoData = false;\r\n    this.chartloading = false;\r\n    setTimeout(() => {\r\n      const chartDiv = document.getElementById(\"dwellBarChart\");\r\n      if (!chartDiv) {\r\n        return;\r\n      }\r\n      if (this.dwellRoot) {\r\n        this.dwellRoot.dispose();\r\n      }\r\n      // Create root element\r\n      this.dwellRoot = am5.Root.new(\"dwellBarChart\");\r\n\r\n      // Set themes\r\n      this.dwellRoot.setThemes([am5themes_Animated.new(this.dwellRoot)]);\r\n\r\n      // Create chart\r\n      this.dwellChart = this.dwellRoot.container.children.push(\r\n        am5xy.XYChart.new(this.dwellRoot, {\r\n          panX: false,\r\n          panY: false,\r\n          wheelX: \"panX\",\r\n          wheelY: \"zoomX\",\r\n          paddingLeft: 0,\r\n          layout: this.root.verticalLayout,\r\n        })\r\n      );\r\n\r\n     let data = this.getDensityDwellData.dwellTimeSplit?.map(\r\n        (item: any) => ({\r\n          year: (item.dwell_time) + \" Mins\",\r\n          maleCount: Number(item.maleCount),\r\n          femaleCount: Number(item.femaleCount),\r\n        })\r\n      );\r\n      \r\n      // [\r\n      //   {\r\n      //     year: \"2021\",\r\n      //     europe: 2.5,\r\n      //     namerica: 2.5,\r\n      //   },\r\n      //   {\r\n      //     year: \"2022\",\r\n      //     europe: 2.6,\r\n      //     namerica: 2.7,\r\n      //   },\r\n      //   {\r\n      //     year: \"2023\",\r\n      //     europe: 2.8,\r\n      //     namerica: 2.9,\r\n      //   },\r\n      // ];\r\n\r\n      // Create axes\r\n      let xRenderer = am5xy.AxisRendererX.new(this.dwellRoot, {\r\n        minorGridEnabled: true,\r\n      });\r\n      let xAxis = this.dwellChart.xAxes.push(\r\n        am5xy.CategoryAxis.new(this.dwellRoot, {\r\n          categoryField: \"year\",\r\n          renderer: xRenderer,\r\n          tooltip: am5.Tooltip.new(this.dwellRoot, {}),\r\n        })\r\n      );\r\n\r\n      xRenderer.grid.template.setAll({\r\n        location: 1,\r\n      });\r\n\r\n      xAxis.data.setAll(data);\r\n\r\n      let yAxis = this.dwellChart.yAxes.push(\r\n        am5xy.ValueAxis.new(this.dwellRoot, {\r\n          min: 0,\r\n          renderer: am5xy.AxisRendererY.new(this.dwellRoot, {\r\n            strokeOpacity: 0.1,\r\n          }),\r\n        })\r\n      );\r\n\r\n      // Add legend\r\n      let legend = this.dwellChart.children.push(\r\n        am5.Legend.new(this.dwellRoot, {\r\n          centerX: am5.p50,\r\n          x: am5.p50,\r\n        })\r\n      );\r\n\r\n      // Add series\r\n      const makeSeries = (name: string, fieldName: string) => {\r\n        this.dwellSeries = this.dwellChart.series.push(\r\n          am5xy.ColumnSeries.new(this.dwellRoot, {\r\n            name: name,\r\n            stacked: true,\r\n            xAxis: xAxis,\r\n            yAxis: yAxis,\r\n            valueYField: fieldName,\r\n            categoryXField: \"year\",\r\n          })\r\n        );\r\n\r\n        this.dwellSeries.columns.template.setAll({\r\n          tooltipText: \"{name}, {categoryX}: {valueY}\",\r\n          tooltipY: am5.percent(10),\r\n        });\r\n        this.dwellSeries.data.setAll(data);\r\n\r\n        // Make stuff animate on load\r\n        this.dwellSeries.appear();\r\n\r\n        this.dwellSeries.bullets.push(() => {\r\n          return am5.Bullet.new(this.dwellRoot, {\r\n            sprite: am5.Label.new(this.dwellRoot, {\r\n              text: \"{valueY}\",\r\n              fill: this.dwellRoot.interfaceColors.get(\"alternativeText\"),\r\n              centerY: am5.p50,\r\n              centerX: am5.p50,\r\n              populateText: true,\r\n            }),\r\n          });\r\n        });\r\n\r\n        legend.data.push(this.dwellSeries);\r\n      };\r\n\r\n      makeSeries(\"Male\", \"maleCount\");\r\n      makeSeries(\"Female\", \"femaleCount\");\r\n      // Make stuff animate on load\r\n      this.dwellChart.appear(1000, 100);\r\n    }, 0);\r\n  }\r\n  private readonly destroy$ = new Subject();\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next(true);\r\n    this.destroy$.complete();\r\n    if (this.root) {\r\n      this.root.dispose();\r\n    }\r\n    if (this.detailedRoot) {\r\n      this.detailedRoot.dispose();\r\n    }\r\n  }\r\n\r\n  onDateChange(event:any){\r\n    this.detailedCharts = false;\r\n    this.footfallDate = event.target.value;\r\n    this.objData.dateRange =Number(this.footfallDate);\r\n this.getDwell();\r\n this.trafficDwell();\r\n  }\r\n\r\n  storeView(data:any){\r\n    const datavalue: any = JSON.parse(\r\n      localStorage.getItem(\"header-filters\") || \"{}\"\r\n    );\r\n    const matchedStores = datavalue.stores.filter((store: any) => store.checked && store.storeId === data);\r\n    // Update the balance stores (those not in the matched stores) to set their checked property to false\r\n    datavalue.stores.forEach((store: any) => {\r\n      if (!matchedStores.some((matchedStore:any) => matchedStore.storeId === store.storeId)) {\r\n        store.checked = false;\r\n      }\r\n    }); \r\n    datavalue.store = data;\r\n    localStorage.setItem(\"header-filters\", JSON.stringify(datavalue));\r\n    this.cd.detectChanges()\r\n    this.gs.dataRangeValue.next(datavalue)\r\n    this.gs.manageRefreshTrigger.next(true);\r\n  }\r\n\r\n\r\n\r\n}\r\ninterface ChartDataItem {\r\n  rate: number;\r\n  count: number;\r\n  time: string;\r\n}\r\n\r\n","<div class=\"card mt-3\">\r\n    <div class=\"card-header my-3 mx-2\">\r\n        <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\r\n            <li  class=\"nav-item nav-item1\" (click)=\"selectedTabs('traffic')\"><a\r\n                    [ngClass]=\"selectedTab ==='traffic' ? 'active' :''\"\r\n                    class=\"nav-link nav-link1 cursor-pointer no-border me-6 \">Traffic & Dwell</a>\r\n            </li>\r\n            <li class=\"nav-item nav-item1\" (click)=\"selectedTabs('footfall')\">\r\n                <a [ngClass]=\"selectedTab ==='footfall' ? 'active' :''\"\r\n                    class=\"nav-link nav-link1 cursor-pointer me-6\">Footfall</a>\r\n            </li>\r\n            <li class=\"nav-item nav-item1\" (click)=\"selectedTabs('bounced')\"><a\r\n                [ngClass]=\"selectedTab ==='bounced' ? 'active' :''\"\r\n                class=\"nav-link nav-link1 cursor-pointer no-border me-6 \">Bounced Footfall</a>\r\n        </li>\r\n        <li class=\"nav-item nav-item1\" (click)=\"selectedTabs('engagers')\">\r\n            <a [ngClass]=\"selectedTab ==='engagers' ? 'active' :''\"\r\n                class=\"nav-link nav-link1 cursor-pointer me-6\">Engagers</a>\r\n        </li>\r\n      \r\n           \r\n            <li class=\"nav-item nav-item1\" (click)=\"selectedTabs('missedOpportunity')\">\r\n                <a [ngClass]=\"selectedTab ==='missedOpportunity' ? 'active' :''\"\r\n                    class=\"nav-link nav-link1 cursor-pointer me-6\">Missed Opportunity</a>\r\n            </li>\r\n            <li class=\"nav-item nav-item1\" (click)=\"selectedTabs('potentialBuyers')\">\r\n                <a [ngClass]=\"selectedTab ==='potentialBuyers' ? 'active' :''\"\r\n                    class=\"nav-link nav-link1 cursor-pointer me-6\">Potential Buyer</a>\r\n            </li>\r\n            <li class=\"nav-item nav-item1\" (click)=\"selectedTabs('conversion')\"><a\r\n                [ngClass]=\"selectedTab ==='conversion' ? 'active' :''\"\r\n                class=\"nav-link nav-link1 cursor-pointer no-border me-6 \">Conversion</a>\r\n        </li>\r\n        </ul>\r\n    </div>\r\n\r\n    <div class=\"card-body\">\r\n        <div *ngIf=\"chartloading\" 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=\"chartNoData\" 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\" 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 {{selctedValue}}</div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n        <div class=\"row\" >\r\n            <div class=\"col-md-2 h-100\" *ngIf=\"!chartloading && !chartNoData\">\r\n                <div *ngIf=\"selectedTab ==='traffic'\" class=\"left-bar\">\r\n                    \r\n                    <div class=\"my-7\">\r\n                        <div class=\"d-flex align-items-center my-10 me-2\">\r\n                            <div class=\"flex-shrink-0 mt-3\">\r\n                                <span class=\"w-100\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\">\r\n                                    <path d=\"M13 2.125L3 14.125H12L11 22.125L21 10.125H12L13 2.125Z\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                                    </svg></span>\r\n                            </div>\r\n                            <div class=\"mx-3 mt-1\">\r\n                                <div class=\"my-1 card-label left-card-count\">\r\n                                    {{getDensityDwellData?.densityDwellCard?.busiestDay ?\r\n                                    getDensityDwellData?.densityDwellCard?.busiestDay :'--'}}</div>\r\n                                <div class=\"left-card-count-header\">Busiest Day</div>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"d-flex align-items-center my-10 me-2\">\r\n                            <div class=\"flex-shrink-0 mt-3\">\r\n                                <span class=\"w-100\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\">\r\n                                    <path d=\"M13 2.125L3 14.125H12L11 22.125L21 10.125H12L13 2.125Z\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                                    </svg></span>\r\n                            </div>\r\n                            <div class=\"mx-3 mt-1\">\r\n                                <div class=\"my-1 card-label left-card-count\">\r\n                                    {{getDensityDwellData?.densityDwellCard?.busiestTime ?\r\n                                    getDensityDwellData?.densityDwellCard?.busiestTime :'--'}}</div>\r\n                                <div class=\"left-card-count-header\">Busiest Time</div>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"d-flex align-items-center my-10 me-2\">\r\n                            <div class=\"flex-shrink-0 mt-3\">\r\n                                <span class=\"w-100\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\">\r\n                                    <path d=\"M13 2.125L3 14.125H12L11 22.125L21 10.125H12L13 2.125Z\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                                    </svg></span>\r\n                            </div>\r\n                            <div class=\"mx-3 mt-1\">\r\n                                <div class=\"my-1 card-label left-card-count\">\r\n                                    {{getDensityDwellData?.densityDwellCard?.avgDwellTime ?\r\n                                    getDensityDwellData?.densityDwellCard?.avgDwellTime :'--'}} Mins</div>\r\n                                <div class=\"left-card-count-header\">Avg Dwell Time</div>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"d-flex align-items-center my-10 me-2\">\r\n                            <div class=\"flex-shrink-0 mt-3\">\r\n                                <span class=\"w-100\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\">\r\n                                    <path d=\"M13 2.125L3 14.125H12L11 22.125L21 10.125H12L13 2.125Z\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                                    </svg></span>\r\n                            </div>\r\n                            <div class=\"mx-3 mt-1\">\r\n                                <div class=\"my-1 card-label left-card-count\">\r\n                                    {{getDensityDwellData?.densityDwellCard?.maleRate ?\r\n                                    getDensityDwellData?.densityDwellCard?.maleRate :'--'}}%</div>\r\n                                <div class=\"left-card-count-header\">Male</div>\r\n                            </div>\r\n                            <div class=\"mx-3 mt-1\">\r\n                                <div class=\"my-1 card-label left-card-count\">\r\n                                    {{getDensityDwellData?.densityDwellCard?.femaleRate ?\r\n                                    getDensityDwellData?.densityDwellCard?.femaleRate :'--'}}%</div>\r\n                                <div class=\"left-card-count-header\">Female</div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div *ngIf=\"selectedTab ==='footfall'\" class=\"left-bar\">\r\n                    <div class=\"top-header text-center\">\r\n                        <div class=\"left-bar-count\">{{getOverallCardData?.footfallCard?.footfallCount ?\r\n                            getOverallCardData?.footfallCard?.footfallCount.toLocaleString('en-IN') :'--'}}</div>\r\n                        <div class=\"left-bar-title\">Footfall Count</div>\r\n\r\n                    </div>\r\n                    <span class=\"w-100\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"174\" height=\"2\"\r\n                            viewBox=\"0 0 194 2\" fill=\"none\">\r\n                            <path opacity=\"0.4\" d=\"M1 1L193 1\" stroke=\"#99DAFF\" stroke-linecap=\"round\" />\r\n                        </svg></span>\r\n                    <div class=\"my-5\">\r\n                        <div class=\"d-flex align-items-center my-5 me-2\">\r\n                            <div class=\"flex-shrink-0 mt-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                                    <path\r\n                                        d=\"M20 21V19C20 17.9391 19.5786 16.9217 18.8284 16.1716C18.0783 15.4214 17.0609 15 16 15H8C6.93913 15 5.92172 15.4214 5.17157 16.1716C4.42143 16.9217 4 17.9391 4 19V21M16 7C16 9.20914 14.2091 11 12 11C9.79086 11 8 9.20914 8 7C8 4.79086 9.79086 3 12 3C14.2091 3 16 4.79086 16 7Z\"\r\n                                        stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                        stroke-linejoin=\"round\" />\r\n                                </svg>\r\n                            </div>\r\n                            <div class=\"mx-3 mt-1\">\r\n                                <div class=\"my-1 card-label left-card-count\">\r\n                                    {{getOverallCardData?.footfallCard?.singleCount ?\r\n                                    getOverallCardData?.footfallCard?.singleCount.toLocaleString('en-IN') :'--'}}</div>\r\n                                <div class=\"left-card-count-header\">Single</div>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"d-flex align-items-center my-5 me-2\">\r\n                            <div class=\"flex-shrink-0 mt-3\">\r\n                                <svg width=\"26\" height=\"24\" viewBox=\"0 0 26 24\" fill=\"none\"\r\n                                    xmlns=\"http://www.w3.org/2000/svg\">\r\n                                    <rect width=\"26\" height=\"24\" fill=\"#DCDCDC\" />\r\n                                    <rect x=\"-460.5\" y=\"-340.5\" width=\"783\" height=\"1947\" rx=\"4.5\" stroke=\"#9747FF\"\r\n                                        stroke-dasharray=\"10 5\" />\r\n                                    <mask id=\"path-2-inside-1_707_13106\" fill=\"white\">\r\n                                        <path\r\n                                            d=\"M-189 -89C-189 -95.6274 -183.627 -101 -177 -101H295C301.627 -101 307 -95.6274 307 -89V85C307 91.6274 301.627 97 295 97H-177C-183.627 97 -189 91.6274 -189 85V-89Z\" />\r\n                                    </mask>\r\n                                    <path\r\n                                        d=\"M-189 -89C-189 -95.6274 -183.627 -101 -177 -101H295C301.627 -101 307 -95.6274 307 -89V85C307 91.6274 301.627 97 295 97H-177C-183.627 97 -189 91.6274 -189 85V-89Z\"\r\n                                        fill=\"white\" />\r\n                                    <path\r\n                                        d=\"M-190 -89C-190 -96.1797 -184.18 -102 -177 -102H294C301.18 -102 307 -96.1797 307 -89C307 -95.0751 301.627 -100 295 -100H-177C-183.075 -100 -188 -95.0751 -188 -89H-190ZM307 85C307 92.1797 301.18 98 294 98H-177C-184.18 98 -190 92.1797 -190 85H-188C-188 91.0751 -183.075 96 -177 96H295C301.627 96 307 91.0751 307 85ZM-177 98C-184.18 98 -190 92.1797 -190 85V-89C-190 -96.1797 -184.18 -102 -177 -102V-100C-183.075 -100 -188 -95.0751 -188 -89V85C-188 91.0751 -183.075 96 -177 96V98ZM307 -101V97V-101Z\"\r\n                                        fill=\"#D0D5DD\" mask=\"url(#path-2-inside-1_707_13106)\" />\r\n                                    <mask id=\"path-6-inside-2_707_13106\" fill=\"white\">\r\n                                        <path\r\n                                            d=\"M7.71064 7.38462C8.19552 7.38462 8.67565 7.28911 9.12362 7.10356C9.57159 6.918 9.97863 6.64603 10.3215 6.30316C10.6644 5.9603 10.9363 5.55326 11.1219 5.10529C11.3074 4.65732 11.4029 4.17719 11.4029 3.69231C11.4029 3.20743 11.3074 2.72729 11.1219 2.27932C10.9363 1.83135 10.6644 1.42431 10.3215 1.08145C9.97863 0.73859 9.57159 0.466616 9.12362 0.28106C8.67565 0.0955043 8.19552 -7.22529e-09 7.71064 0C6.73138 1.45921e-08 5.79222 0.38901 5.09978 1.08145C4.40734 1.77389 4.01833 2.71305 4.01833 3.69231C4.01833 4.67157 4.40734 5.61072 5.09978 6.30316C5.79222 6.99561 6.73138 7.38462 7.71064 7.38462ZM18.7876 7.38462C19.2724 7.38462 19.7526 7.28911 20.2005 7.10356C20.6485 6.918 21.0556 6.64603 21.3984 6.30316C21.7413 5.9603 22.0133 5.55326 22.1988 5.10529C22.3844 4.65732 22.4799 4.17719 22.4799 3.69231C22.4799 3.20743 22.3844 2.72729 22.1988 2.27932C22.0133 1.83135 21.7413 1.42431 21.3984 1.08145C21.0556 0.73859 20.6485 0.466616 20.2005 0.28106C19.7526 0.0955043 19.2724 -7.22529e-09 18.7876 0C17.8083 1.45921e-08 16.8691 0.38901 16.1767 1.08145C15.4843 1.77389 15.0953 2.71305 15.0953 3.69231C15.0953 4.67157 15.4843 5.61072 16.1767 6.30316C16.8691 6.99561 17.8083 7.38462 18.7876 7.38462ZM0.941406 10.736C0.941406 10.4575 0.996258 10.1818 1.10283 9.92448C1.2094 9.66719 1.3656 9.43342 1.56252 9.2365C1.75944 9.03958 1.99321 8.88338 2.2505 8.77681C2.50778 8.67024 2.78354 8.61539 3.06202 8.61539H8.98448C8.55169 9.36345 8.32452 10.2127 8.32602 11.0769C8.32519 11.7755 8.47341 12.4662 8.76079 13.1029C9.04816 13.7396 9.46807 14.3077 9.99248 14.7692H8.60048C8.01418 14.7687 7.43803 14.9222 6.92969 15.2144C6.42134 15.5065 5.99864 15.927 5.70387 16.4338C3.7211 16.0449 2.51618 15.0782 1.81464 13.992C0.941406 12.64 0.941406 11.2431 0.941406 11.0012V10.736ZM17.8977 14.7692C18.484 14.7687 19.0602 14.9222 19.5685 15.2144C20.0769 15.5065 20.4996 15.927 20.7943 16.4338C22.7771 16.0449 23.982 15.0782 24.6836 13.992C25.5568 12.64 25.5568 11.2431 25.5568 11.0012V10.7366C25.5569 10.4581 25.5021 10.1823 25.3955 9.9249C25.289 9.66755 25.1328 9.4337 24.9359 9.23672C24.739 9.03973 24.5052 8.88348 24.2478 8.77687C23.9905 8.67026 23.7147 8.61539 23.4362 8.61539H17.5137C17.9465 9.36345 18.1737 10.2127 18.1722 11.0769C18.173 11.7755 18.0248 12.4662 17.7374 13.1029C17.45 13.7396 17.0301 14.3077 16.5057 14.7692H17.8977ZM16.9414 11.0769C16.9414 12.0562 16.5524 12.9953 15.86 13.6878C15.1675 14.3802 14.2284 14.7692 13.2491 14.7692C12.2698 14.7692 11.3307 14.3802 10.6382 13.6878C9.9458 12.9953 9.55679 12.0562 9.55679 11.0769C9.55679 10.0977 9.9458 9.15851 10.6382 8.46607C11.3307 7.77363 12.2698 7.38462 13.2491 7.38462C14.2284 7.38462 15.1675 7.77363 15.86 8.46607C16.5524 9.15851 16.9414 10.0977 16.9414 11.0769ZM6.47987 18.1206C6.47987 17.5582 6.70329 17.0188 7.10098 16.6211C7.49867 16.2234 8.03806 16 8.60048 16H17.8977C18.4601 16 18.9995 16.2234 19.3972 16.6211C19.7949 17.0188 20.0183 17.5582 20.0183 18.1206V18.3858C20.0183 18.6283 20.0183 20.0246 19.1451 21.3766C18.2325 22.7895 16.4694 24 13.2491 24C10.0288 24 8.26571 22.7895 7.3531 21.3766C6.47987 20.0246 6.47987 18.6277 6.47987 18.3858V18.1206Z\" />\r\n                                    </mask>\r\n                                    <path\r\n                                        d=\"M7.71064 7.38462C8.19552 7.38462 8.67565 7.28911 9.12362 7.10356C9.57159 6.918 9.97863 6.64603 10.3215 6.30316C10.6644 5.9603 10.9363 5.55326 11.1219 5.10529C11.3074 4.65732 11.4029 4.17719 11.4029 3.69231C11.4029 3.20743 11.3074 2.72729 11.1219 2.27932C10.9363 1.83135 10.6644 1.42431 10.3215 1.08145C9.97863 0.73859 9.57159 0.466616 9.12362 0.28106C8.67565 0.0955043 8.19552 -7.22529e-09 7.71064 0C6.73138 1.45921e-08 5.79222 0.38901 5.09978 1.08145C4.40734 1.77389 4.01833 2.71305 4.01833 3.69231C4.01833 4.67157 4.40734 5.61072 5.09978 6.30316C5.79222 6.99561 6.73138 7.38462 7.71064 7.38462ZM18.7876 7.38462C19.2724 7.38462 19.7526 7.28911 20.2005 7.10356C20.6485 6.918 21.0556 6.64603 21.3984 6.30316C21.7413 5.9603 22.0133 5.55326 22.1988 5.10529C22.3844 4.65732 22.4799 4.17719 22.4799 3.69231C22.4799 3.20743 22.3844 2.72729 22.1988 2.27932C22.0133 1.83135 21.7413 1.42431 21.3984 1.08145C21.0556 0.73859 20.6485 0.466616 20.2005 0.28106C19.7526 0.0955043 19.2724 -7.22529e-09 18.7876 0C17.8083 1.45921e-08 16.8691 0.38901 16.1767 1.08145C15.4843 1.77389 15.0953 2.71305 15.0953 3.69231C15.0953 4.67157 15.4843 5.61072 16.1767 6.30316C16.8691 6.99561 17.8083 7.38462 18.7876 7.38462ZM0.941406 10.736C0.941406 10.4575 0.996258 10.1818 1.10283 9.92448C1.2094 9.66719 1.3656 9.43342 1.56252 9.2365C1.75944 9.03958 1.99321 8.88338 2.2505 8.77681C2.50778 8.67024 2.78354 8.61539 3.06202 8.61539H8.98448C8.55169 9.36345 8.32452 10.2127 8.32602 11.0769C8.32519 11.7755 8.47341 12.4662 8.76079 13.1029C9.04816 13.7396 9.46807 14.3077 9.99248 14.7692H8.60048C8.01418 14.7687 7.43803 14.9222 6.92969 15.2144C6.42134 15.5065 5.99864 15.927 5.70387 16.4338C3.7211 16.0449 2.51618 15.0782 1.81464 13.992C0.941406 12.64 0.941406 11.2431 0.941406 11.0012V10.736ZM17.8977 14.7692C18.484 14.7687 19.0602 14.9222 19.5685 15.2144C20.0769 15.5065 20.4996 15.927 20.7943 16.4338C22.7771 16.0449 23.982 15.0782 24.6836 13.992C25.5568 12.64 25.5568 11.2431 25.5568 11.0012V10.7366C25.5569 10.4581 25.5021 10.1823 25.3955 9.9249C25.289 9.66755 25.1328 9.4337 24.9359 9.23672C24.739 9.03973 24.5052 8.88348 24.2478 8.77687C23.9905 8.67026 23.7147 8.61539 23.4362 8.61539H17.5137C17.9465 9.36345 18.1737 10.2127 18.1722 11.0769C18.173 11.7755 18.0248 12.4662 17.7374 13.1029C17.45 13.7396 17.0301 14.3077 16.5057 14.7692H17.8977ZM16.9414 11.0769C16.9414 12.0562 16.5524 12.9953 15.86 13.6878C15.1675 14.3802 14.2284 14.7692 13.2491 14.7692C12.2698 14.7692 11.3307 14.3802 10.6382 13.6878C9.9458 12.9953 9.55679 12.0562 9.55679 11.0769C9.55679 10.0977 9.9458 9.15851 10.6382 8.46607C11.3307 7.77363 12.2698 7.38462 13.2491 7.38462C14.2284 7.38462 15.1675 7.77363 15.86 8.46607C16.5524 9.15851 16.9414 10.0977 16.9414 11.0769ZM6.47987 18.1206C6.47987 17.5582 6.70329 17.0188 7.10098 16.6211C7.49867 16.2234 8.03806 16 8.60048 16H17.8977C18.4601 16 18.9995 16.2234 19.3972 16.6211C19.7949 17.0188 20.0183 17.5582 20.0183 18.1206V18.3858C20.0183 18.6283 20.0183 20.0246 19.1451 21.3766C18.2325 22.7895 16.4694 24 13.2491 24C10.0288 24 8.26571 22.7895 7.3531 21.3766C6.47987 20.0246 6.47987 18.6277 6.47987 18.3858V18.1206Z\"\r\n                                        stroke=\"#98A2B3\" stroke-width=\"3\" mask=\"url(#path-6-inside-2_707_13106)\" />\r\n                                </svg>\r\n                            </div>\r\n                            <div class=\"mx-3 mt-1\">\r\n                                <div class=\"my-1 card-label left-card-count\">\r\n                                    {{getOverallCardData?.footfallCard?.groupCount ?\r\n                                    getOverallCardData?.footfallCard?.groupCount.toLocaleString('en-IN') :'--'}}</div>\r\n                                <div class=\"left-card-count-header\">Group Footfall</div>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"d-flex align-items-center my-5 me-2\">\r\n                            <div class=\"flex-shrink-0 mt-3\">\r\n                                <svg width=\"26\" height=\"24\" viewBox=\"0 0 26 24\" fill=\"none\"\r\n                                    xmlns=\"http://www.w3.org/2000/svg\">\r\n                                    <rect width=\"26\" height=\"24\" fill=\"#DCDCDC\" />\r\n                                    <rect x=\"-460.5\" y=\"-340.5\" width=\"783\" height=\"1947\" rx=\"4.5\" stroke=\"#9747FF\"\r\n                                        stroke-dasharray=\"10 5\" />\r\n                                    <mask id=\"path-2-inside-1_707_13106\" fill=\"white\">\r\n                                        <path\r\n                                            d=\"M-189 -89C-189 -95.6274 -183.627 -101 -177 -101H295C301.627 -101 307 -95.6274 307 -89V85C307 91.6274 301.627 97 295 97H-177C-183.627 97 -189 91.6274 -189 85V-89Z\" />\r\n                                    </mask>\r\n                                    <path\r\n                                        d=\"M-189 -89C-189 -95.6274 -183.627 -101 -177 -101H295C301.627 -101 307 -95.6274 307 -89V85C307 91.6274 301.627 97 295 97H-177C-183.627 97 -189 91.6274 -189 85V-89Z\"\r\n                                        fill=\"white\" />\r\n                                    <path\r\n                                        d=\"M-190 -89C-190 -96.1797 -184.18 -102 -177 -102H294C301.18 -102 307 -96.1797 307 -89C307 -95.0751 301.627 -100 295 -100H-177C-183.075 -100 -188 -95.0751 -188 -89H-190ZM307 85C307 92.1797 301.18 98 294 98H-177C-184.18 98 -190 92.1797 -190 85H-188C-188 91.0751 -183.075 96 -177 96H295C301.627 96 307 91.0751 307 85ZM-177 98C-184.18 98 -190 92.1797 -190 85V-89C-190 -96.1797 -184.18 -102 -177 -102V-100C-183.075 -100 -188 -95.0751 -188 -89V85C-188 91.0751 -183.075 96 -177 96V98ZM307 -101V97V-101Z\"\r\n                                        fill=\"#D0D5DD\" mask=\"url(#path-2-inside-1_707_13106)\" />\r\n                                    <mask id=\"path-6-inside-2_707_13106\" fill=\"white\">\r\n                                        <path\r\n                                            d=\"M7.71064 7.38462C8.19552 7.38462 8.67565 7.28911 9.12362 7.10356C9.57159 6.918 9.97863 6.64603 10.3215 6.30316C10.6644 5.9603 10.9363 5.55326 11.1219 5.10529C11.3074 4.65732 11.4029 4.17719 11.4029 3.69231C11.4029 3.20743 11.3074 2.72729 11.1219 2.27932C10.9363 1.83135 10.6644 1.42431 10.3215 1.08145C9.97863 0.73859 9.57159 0.466616 9.12362 0.28106C8.67565 0.0955043 8.19552 -7.22529e-09 7.71064 0C6.73138 1.45921e-08 5.79222 0.38901 5.09978 1.08145C4.40734 1.77389 4.01833 2.71305 4.01833 3.69231C4.01833 4.67157 4.40734 5.61072 5.09978 6.30316C5.79222 6.99561 6.73138 7.38462 7.71064 7.38462ZM18.7876 7.38462C19.2724 7.38462 19.7526 7.28911 20.2005 7.10356C20.6485 6.918 21.0556 6.64603 21.3984 6.30316C21.7413 5.9603 22.0133 5.55326 22.1988 5.10529C22.3844 4.65732 22.4799 4.17719 22.4799 3.69231C22.4799 3.20743 22.3844 2.72729 22.1988 2.27932C22.0133 1.83135 21.7413 1.42431 21.3984 1.08145C21.0556 0.73859 20.6485 0.466616 20.2005 0.28106C19.7526 0.0955043 19.2724 -7.22529e-09 18.7876 0C17.8083 1.45921e-08 16.8691 0.38901 16.1767 1.08145C15.4843 1.77389 15.0953 2.71305 15.0953 3.69231C15.0953 4.67157 15.4843 5.61072 16.1767 6.30316C16.8691 6.99561 17.8083 7.38462 18.7876 7.38462ZM0.941406 10.736C0.941406 10.4575 0.996258 10.1818 1.10283 9.92448C1.2094 9.66719 1.3656 9.43342 1.56252 9.2365C1.75944 9.03958 1.99321 8.88338 2.2505 8.77681C2.50778 8.67024 2.78354 8.61539 3.06202 8.61539H8.98448C8.55169 9.36345 8.32452 10.2127 8.32602 11.0769C8.32519 11.7755 8.47341 12.4662 8.76079 13.1029C9.04816 13.7396 9.46807 14.3077 9.99248 14.7692H8.60048C8.01418 14.7687 7.43803 14.9222 6.92969 15.2144C6.42134 15.5065 5.99864 15.927 5.70387 16.4338C3.7211 16.0449 2.51618 15.0782 1.81464 13.992C0.941406 12.64 0.941406 11.2431 0.941406 11.0012V10.736ZM17.8977 14.7692C18.484 14.7687 19.0602 14.9222 19.5685 15.2144C20.0769 15.5065 20.4996 15.927 20.7943 16.4338C22.7771 16.0449 23.982 15.0782 24.6836 13.992C25.5568 12.64 25.5568 11.2431 25.5568 11.0012V10.7366C25.5569 10.4581 25.5021 10.1823 25.3955 9.9249C25.289 9.66755 25.1328 9.4337 24.9359 9.23672C24.739 9.03973 24.5052 8.88348 24.2478 8.77687C23.9905 8.67026 23.7147 8.61539 23.4362 8.61539H17.5137C17.9465 9.36345 18.1737 10.2127 18.1722 11.0769C18.173 11.7755 18.0248 12.4662 17.7374 13.1029C17.45 13.7396 17.0301 14.3077 16.5057 14.7692H17.8977ZM16.9414 11.0769C16.9414 12.0562 16.5524 12.9953 15.86 13.6878C15.1675 14.3802 14.2284 14.7692 13.2491 14.7692C12.2698 14.7692 11.3307 14.3802 10.6382 13.6878C9.9458 12.9953 9.55679 12.0562 9.55679 11.0769C9.55679 10.0977 9.9458 9.15851 10.6382 8.46607C11.3307 7.77363 12.2698 7.38462 13.2491 7.38462C14.2284 7.38462 15.1675 7.77363 15.86 8.46607C16.5524 9.15851 16.9414 10.0977 16.9414 11.0769ZM6.47987 18.1206C6.47987 17.5582 6.70329 17.0188 7.10098 16.6211C7.49867 16.2234 8.03806 16 8.60048 16H17.8977C18.4601 16 18.9995 16.2234 19.3972 16.6211C19.7949 17.0188 20.0183 17.5582 20.0183 18.1206V18.3858C20.0183 18.6283 20.0183 20.0246 19.1451 21.3766C18.2325 22.7895 16.4694 24 13.2491 24C10.0288 24 8.26571 22.7895 7.3531 21.3766C6.47987 20.0246 6.47987 18.6277 6.47987 18.3858V18.1206Z\" />\r\n                                    </mask>\r\n                                    <path\r\n                                        d=\"M7.71064 7.38462C8.19552 7.38462 8.67565 7.28911 9.12362 7.10356C9.57159 6.918 9.97863 6.64603 10.3215 6.30316C10.6644 5.9603 10.9363 5.55326 11.1219 5.10529C11.3074 4.65732 11.4029 4.17719 11.4029 3.69231C11.4029 3.20743 11.3074 2.72729 11.1219 2.27932C10.9363 1.83135 10.6644 1.42431 10.3215 1.08145C9.97863 0.73859 9.57159 0.466616 9.12362 0.28106C8.67565 0.0955043 8.19552 -7.22529e-09 7.71064 0C6.73138 1.45921e-08 5.79222 0.38901 5.09978 1.08145C4.40734 1.77389 4.01833 2.71305 4.01833 3.69231C4.01833 4.67157 4.40734 5.61072 5.09978 6.30316C5.79222 6.99561 6.73138 7.38462 7.71064 7.38462ZM18.7876 7.38462C19.2724 7.38462 19.7526 7.28911 20.2005 7.10356C20.6485 6.918 21.0556 6.64603 21.3984 6.30316C21.7413 5.9603 22.0133 5.55326 22.1988 5.10529C22.3844 4.65732 22.4799 4.17719 22.4799 3.69231C22.4799 3.20743 22.3844 2.72729 22.1988 2.27932C22.0133 1.83135 21.7413 1.42431 21.3984 1.08145C21.0556 0.73859 20.6485 0.466616 20.2005 0.28106C19.7526 0.0955043 19.2724 -7.22529e-09 18.7876 0C17.8083 1.45921e-08 16.8691 0.38901 16.1767 1.08145C15.4843 1.77389 15.0953 2.71305 15.0953 3.69231C15.0953 4.67157 15.4843 5.61072 16.1767 6.30316C16.8691 6.99561 17.8083 7.38462 18.7876 7.38462ZM0.941406 10.736C0.941406 10.4575 0.996258 10.1818 1.10283 9.92448C1.2094 9.66719 1.3656 9.43342 1.56252 9.2365C1.75944 9.03958 1.99321 8.88338 2.2505 8.77681C2.50778 8.67024 2.78354 8.61539 3.06202 8.61539H8.98448C8.55169 9.36345 8.32452 10.2127 8.32602 11.0769C8.32519 11.7755 8.47341 12.4662 8.76079 13.1029C9.04816 13.7396 9.46807 14.3077 9.99248 14.7692H8.60048C8.01418 14.7687 7.43803 14.9222 6.92969 15.2144C6.42134 15.5065 5.99864 15.927 5.70387 16.4338C3.7211 16.0449 2.51618 15.0782 1.81464 13.992C0.941406 12.64 0.941406 11.2431 0.941406 11.0012V10.736ZM17.8977 14.7692C18.484 14.7687 19.0602 14.9222 19.5685 15.2144C20.0769 15.5065 20.4996 15.927 20.7943 16.4338C22.7771 16.0449 23.982 15.0782 24.6836 13.992C25.5568 12.64 25.5568 11.2431 25.5568 11.0012V10.7366C25.5569 10.4581 25.5021 10.1823 25.3955 9.9249C25.289 9.66755 25.1328 9.4337 24.9359 9.23672C24.739 9.03973 24.5052 8.88348 24.2478 8.77687C23.9905 8.67026 23.7147 8.61539 23.4362 8.61539H17.5137C17.9465 9.36345 18.1737 10.2127 18.1722 11.0769C18.173 11.7755 18.0248 12.4662 17.7374 13.1029C17.45 13.7396 17.0301 14.3077 16.5057 14.7692H17.8977ZM16.9414 11.0769C16.9414 12.0562 16.5524 12.9953 15.86 13.6878C15.1675 14.3802 14.2284 14.7692 13.2491 14.7692C12.2698 14.7692 11.3307 14.3802 10.6382 13.6878C9.9458 12.9953 9.55679 12.0562 9.55679 11.0769C9.55679 10.0977 9.9458 9.15851 10.6382 8.46607C11.3307 7.77363 12.2698 7.38462 13.2491 7.38462C14.2284 7.38462 15.1675 7.77363 15.86 8.46607C16.5524 9.15851 16.9414 10.0977 16.9414 11.0769ZM6.47987 18.1206C6.47987 17.5582 6.70329 17.0188 7.10098 16.6211C7.49867 16.2234 8.03806 16 8.60048 16H17.8977C18.4601 16 18.9995 16.2234 19.3972 16.6211C19.7949 17.0188 20.0183 17.5582 20.0183 18.1206V18.3858C20.0183 18.6283 20.0183 20.0246 19.1451 21.3766C18.2325 22.7895 16.4694 24 13.2491 24C10.0288 24 8.26571 22.7895 7.3531 21.3766C6.47987 20.0246 6.47987 18.6277 6.47987 18.3858V18.1206Z\"\r\n                                        stroke=\"#98A2B3\" stroke-width=\"3\" mask=\"url(#path-6-inside-2_707_13106)\" />\r\n                                </svg>\r\n                            </div>\r\n                            <div class=\"mx-3 mt-1\">\r\n                                <div class=\"my-1 card-label left-card-count\">\r\n                                    {{getOverallCardData?.footfallCard?.ageGroup ?\r\n                                    getOverallCardData?.footfallCard?.ageGroup :'--'}}</div>\r\n                                <div class=\"left-card-count-header\">Most Common Age</div>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"d-flex align-items-center my-5 me-2\">\r\n                            <div class=\"flex-shrink-0 mt-3\">\r\n                                <svg width=\"26\" height=\"24\" viewBox=\"0 0 26 24\" fill=\"none\"\r\n                                    xmlns=\"http://www.w3.org/2000/svg\">\r\n                                    <rect width=\"26\" height=\"24\" fill=\"#DCDCDC\" />\r\n                                    <rect x=\"-460.5\" y=\"-340.5\" width=\"783\" height=\"1947\" rx=\"4.5\" stroke=\"#9747FF\"\r\n                                        stroke-dasharray=\"10 5\" />\r\n                                    <mask id=\"path-2-inside-1_707_13106\" fill=\"white\">\r\n                                        <path\r\n                                            d=\"M-189 -89C-189 -95.6274 -183.627 -101 -177 -101H295C301.627 -101 307 -95.6274 307 -89V85C307 91.6274 301.627 97 295 97H-177C-183.627 97 -189 91.6274 -189 85V-89Z\" />\r\n                                    </mask>\r\n                                    <path\r\n                                        d=\"M-189 -89C-189 -95.6274 -183.627 -101 -177 -101H295C301.627 -101 307 -95.6274 307 -89V85C307 91.6274 301.627 97 295 97H-177C-183.627 97 -189 91.6274 -189 85V-89Z\"\r\n                                        fill=\"white\" />\r\n                                    <path\r\n                                        d=\"M-190 -89C-190 -96.1797 -184.18 -102 -177 -102H294C301.18 -102 307 -96.1797 307 -89C307 -95.0751 301.627 -100 295 -100H-177C-183.075 -100 -188 -95.0751 -188 -89H-190ZM307 85C307 92.1797 301.18 98 294 98H-177C-184.18 98 -190 92.1797 -190 85H-188C-188 91.0751 -183.075 96 -177 96H295C301.627 96 307 91.0751 307 85ZM-177 98C-184.18 98 -190 92.1797 -190 85V-89C-190 -96.1797 -184.18 -102 -177 -102V-100C-183.075 -100 -188 -95.0751 -188 -89V85C-188 91.0751 -183.075 96 -177 96V98ZM307 -101V97V-101Z\"\r\n                                        fill=\"#D0D5DD\" mask=\"url(#path-2-inside-1_707_13106)\" />\r\n                                    <mask id=\"path-6-inside-2_707_13106\" fill=\"white\">\r\n                                        <path\r\n                                            d=\"M7.71064 7.38462C8.19552 7.38462 8.67565 7.28911 9.12362 7.10356C9.57159 6.918 9.97863 6.64603 10.3215 6.30316C10.6644 5.9603 10.9363 5.55326 11.1219 5.10529C11.3074 4.65732 11.4029 4.17719 11.4029 3.69231C11.4029 3.20743 11.3074 2.72729 11.1219 2.27932C10.9363 1.83135 10.6644 1.42431 10.3215 1.08145C9.97863 0.73859 9.57159 0.466616 9.12362 0.28106C8.67565 0.0955043 8.19552 -7.22529e-09 7.71064 0C6.73138 1.45921e-08 5.79222 0.38901 5.09978 1.08145C4.40734 1.77389 4.01833 2.71305 4.01833 3.69231C4.01833 4.67157 4.40734 5.61072 5.09978 6.30316C5.79222 6.99561 6.73138 7.38462 7.71064 7.38462ZM18.7876 7.38462C19.2724 7.38462 19.7526 7.28911 20.2005 7.10356C20.6485 6.918 21.0556 6.64603 21.3984 6.30316C21.7413 5.9603 22.0133 5.55326 22.1988 5.10529C22.3844 4.65732 22.4799 4.17719 22.4799 3.69231C22.4799 3.20743 22.3844 2.72729 22.1988 2.27932C22.0133 1.83135 21.7413 1.42431 21.3984 1.08145C21.0556 0.73859 20.6485 0.466616 20.2005 0.28106C19.7526 0.0955043 19.2724 -7.22529e-09 18.7876 0C17.8083 1.45921e-08 16.8691 0.38901 16.1767 1.08145C15.4843 1.77389 15.0953 2.71305 15.0953 3.69231C15.0953 4.67157 15.4843 5.61072 16.1767 6.30316C16.8691 6.99561 17.8083 7.38462 18.7876 7.38462ZM0.941406 10.736C0.941406 10.4575 0.996258 10.1818 1.10283 9.92448C1.2094 9.66719 1.3656 9.43342 1.56252 9.2365C1.75944 9.03958 1.99321 8.88338 2.2505 8.77681C2.50778 8.67024 2.78354 8.61539 3.06202 8.61539H8.98448C8.55169 9.36345 8.32452 10.2127 8.32602 11.0769C8.32519 11.7755 8.47341 12.4662 8.76079 13.1029C9.04816 13.7396 9.46807 14.3077 9.99248 14.7692H8.60048C8.01418 14.7687 7.43803 14.9222 6.92969 15.2144C6.42134 15.5065 5.99864 15.927 5.70387 16.4338C3.7211 16.0449 2.51618 15.0782 1.81464 13.992C0.941406 12.64 0.941406 11.2431 0.941406 11.0012V10.736ZM17.8977 14.7692C18.484 14.7687 19.0602 14.9222 19.5685 15.2144C20.0769 15.5065 20.4996 15.927 20.7943 16.4338C22.7771 16.0449 23.982 15.0782 24.6836 13.992C25.5568 12.64 25.5568 11.2431 25.5568 11.0012V10.7366C25.5569 10.4581 25.5021 10.1823 25.3955 9.9249C25.289 9.66755 25.1328 9.4337 24.9359 9.23672C24.739 9.03973 24.5052 8.88348 24.2478 8.77687C23.9905 8.67026 23.7147 8.61539 23.4362 8.61539H17.5137C17.9465 9.36345 18.1737 10.2127 18.1722 11.0769C18.173 11.7755 18.0248 12.4662 17.7374 13.1029C17.45 13.7396 17.0301 14.3077 16.5057 14.7692H17.8977ZM16.9414 11.0769C16.9414 12.0562 16.5524 12.9953 15.86 13.6878C15.1675 14.3802 14.2284 14.7692 13.2491 14.7692C12.2698 14.7692 11.3307 14.3802 10.6382 13.6878C9.9458 12.9953 9.55679 12.0562 9.55679 11.0769C9.55679 10.0977 9.9458 9.15851 10.6382 8.46607C11.3307 7.77363 12.2698 7.38462 13.2491 7.38462C14.2284 7.38462 15.1675 7.77363 15.86 8.46607C16.5524 9.15851 16.9414 10.0977 16.9414 11.0769ZM6.47987 18.1206C6.47987 17.5582 6.70329 17.0188 7.10098 16.6211C7.49867 16.2234 8.03806 16 8.60048 16H17.8977C18.4601 16 18.9995 16.2234 19.3972 16.6211C19.7949 17.0188 20.0183 17.5582 20.0183 18.1206V18.3858C20.0183 18.6283 20.0183 20.0246 19.1451 21.3766C18.2325 22.7895 16.4694 24 13.2491 24C10.0288 24 8.26571 22.7895 7.3531 21.3766C6.47987 20.0246 6.47987 18.6277 6.47987 18.3858V18.1206Z\" />\r\n                                    </mask>\r\n                                    <path\r\n                                        d=\"M7.71064 7.38462C8.19552 7.38462 8.67565 7.28911 9.12362 7.10356C9.57159 6.918 9.97863 6.64603 10.3215 6.30316C10.6644 5.9603 10.9363 5.55326 11.1219 5.10529C11.3074 4.65732 11.4029 4.17719 11.4029 3.69231C11.4029 3.20743 11.3074 2.72729 11.1219 2.27932C10.9363 1.83135 10.6644 1.42431 10.3215 1.08145C9.97863 0.73859 9.57159 0.466616 9.12362 0.28106C8.67565 0.0955043 8.19552 -7.22529e-09 7.71064 0C6.73138 1.45921e-08 5.79222 0.38901 5.09978 1.08145C4.40734 1.77389 4.01833 2.71305 4.01833 3.69231C4.01833 4.67157 4.40734 5.61072 5.09978 6.30316C5.79222 6.99561 6.73138 7.38462 7.71064 7.38462ZM18.7876 7.38462C19.2724 7.38462 19.7526 7.28911 20.2005 7.10356C20.6485 6.918 21.0556 6.64603 21.3984 6.30316C21.7413 5.9603 22.0133 5.55326 22.1988 5.10529C22.3844 4.65732 22.4799 4.17719 22.4799 3.69231C22.4799 3.20743 22.3844 2.72729 22.1988 2.27932C22.0133 1.83135 21.7413 1.42431 21.3984 1.08145C21.0556 0.73859 20.6485 0.466616 20.2005 0.28106C19.7526 0.0955043 19.2724 -7.22529e-09 18.7876 0C17.8083 1.45921e-08 16.8691 0.38901 16.1767 1.08145C15.4843 1.77389 15.0953 2.71305 15.0953 3.69231C15.0953 4.67157 15.4843 5.61072 16.1767 6.30316C16.8691 6.99561 17.8083 7.38462 18.7876 7.38462ZM0.941406 10.736C0.941406 10.4575 0.996258 10.1818 1.10283 9.92448C1.2094 9.66719 1.3656 9.43342 1.56252 9.2365C1.75944 9.03958 1.99321 8.88338 2.2505 8.77681C2.50778 8.67024 2.78354 8.61539 3.06202 8.61539H8.98448C8.55169 9.36345 8.32452 10.2127 8.32602 11.0769C8.32519 11.7755 8.47341 12.4662 8.76079 13.1029C9.04816 13.7396 9.46807 14.3077 9.99248 14.7692H8.60048C8.01418 14.7687 7.43803 14.9222 6.92969 15.2144C6.42134 15.5065 5.99864 15.927 5.70387 16.4338C3.7211 16.0449 2.51618 15.0782 1.81464 13.992C0.941406 12.64 0.941406 11.2431 0.941406 11.0012V10.736ZM17.8977 14.7692C18.484 14.7687 19.0602 14.9222 19.5685 15.2144C20.0769 15.5065 20.4996 15.927 20.7943 16.4338C22.7771 16.0449 23.982 15.0782 24.6836 13.992C25.5568 12.64 25.5568 11.2431 25.5568 11.0012V10.7366C25.5569 10.4581 25.5021 10.1823 25.3955 9.9249C25.289 9.66755 25.1328 9.4337 24.9359 9.23672C24.739 9.03973 24.5052 8.88348 24.2478 8.77687C23.9905 8.67026 23.7147 8.61539 23.4362 8.61539H17.5137C17.9465 9.36345 18.1737 10.2127 18.1722 11.0769C18.173 11.7755 18.0248 12.4662 17.7374 13.1029C17.45 13.7396 17.0301 14.3077 16.5057 14.7692H17.8977ZM16.9414 11.0769C16.9414 12.0562 16.5524 12.9953 15.86 13.6878C15.1675 14.3802 14.2284 14.7692 13.2491 14.7692C12.2698 14.7692 11.3307 14.3802 10.6382 13.6878C9.9458 12.9953 9.55679 12.0562 9.55679 11.0769C9.55679 10.0977 9.9458 9.15851 10.6382 8.46607C11.3307 7.77363 12.2698 7.38462 13.2491 7.38462C14.2284 7.38462 15.1675 7.77363 15.86 8.46607C16.5524 9.15851 16.9414 10.0977 16.9414 11.0769ZM6.47987 18.1206C6.47987 17.5582 6.70329 17.0188 7.10098 16.6211C7.49867 16.2234 8.03806 16 8.60048 16H17.8977C18.4601 16 18.9995 16.2234 19.3972 16.6211C19.7949 17.0188 20.0183 17.5582 20.0183 18.1206V18.3858C20.0183 18.6283 20.0183 20.0246 19.1451 21.3766C18.2325 22.7895 16.4694 24 13.2491 24C10.0288 24 8.26571 22.7895 7.3531 21.3766C6.47987 20.0246 6.47987 18.6277 6.47987 18.3858V18.1206Z\"\r\n                                        stroke=\"#98A2B3\" stroke-width=\"3\" mask=\"url(#path-6-inside-2_707_13106)\" />\r\n                                </svg>\r\n                            </div>\r\n                            <div class=\"mx-3 mt-1\">\r\n                                <div class=\"my-1 card-label left-card-count\">\r\n                                    {{getOverallCardData?.footfallCard?.maleRate ?\r\n                                    getOverallCardData?.footfallCard?.maleRate :'--'}}%</div>\r\n                                <div class=\"left-card-count-header\">Male</div>\r\n                            </div>\r\n                            <div class=\"mx-3 mt-1\">\r\n                                <div class=\"my-1 card-label left-card-count\">\r\n                                    {{getOverallCardData?.footfallCard?.femaleRate ?\r\n                                    getOverallCardData?.footfallCard?.femaleRate :'--'}}%</div>\r\n                                <div class=\"left-card-count-header\">Female</div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div *ngIf=\"selectedTab ==='conversion'\" class=\"left-bar\">\r\n                    <div class=\"top-header text-center\">\r\n                        <div class=\"left-bar-count\">{{getOverallCardData?.conversionCard?.conversionCount ?\r\n                            getOverallCardData?.conversionCard?.conversionCount.toLocaleString('en-IN') :'--'}}</div>\r\n                        <div class=\"left-bar-title\">Conversion Count</div>\r\n\r\n                    </div>\r\n                    <span class=\"w-100\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"174\" height=\"2\"\r\n                            viewBox=\"0 0 194 2\" fill=\"none\">\r\n                            <path opacity=\"0.4\" d=\"M1 1L193 1\" stroke=\"#99DAFF\" stroke-linecap=\"round\" />\r\n                        </svg></span>\r\n                    <div class=\"my-5\">\r\n                        <div class=\"d-flex align-items-center my-5 me-2\">\r\n                            <div class=\"flex-shrink-0 mt-3\">\r\n                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                    <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                                    </svg>\r\n                            </div>\r\n                            <div class=\"mx-3 mt-1\">\r\n                                <div class=\"my-1 card-label left-card-count\">\r\n                                    {{getOverallCardData?.conversionCard?.conversionRate ?\r\n                                    getOverallCardData?.conversionCard?.conversionRate :'--'}}%</div>\r\n                                <div class=\"left-card-count-header\">Conversion Rate</div>\r\n                            </div>\r\n                        </div>\r\n                        <div *ngIf=\"nob === false\" class=\"d-flex align-items-center my-5 me-2\">\r\n                            <div class=\"flex-shrink-0 mt-3\">\r\n                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                    <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                                    </svg>\r\n                            </div>\r\n                            <div class=\"mx-3 mt-1\">\r\n                                <div class=\"my-1 card-label left-card-count\">\r\n                                    {{getOverallCardData?.conversionCard?.minRate ?\r\n                                    getOverallCardData?.conversionCard?.minRate :'--'}}%</div>\r\n                                <div class=\"left-card-count-header\">5 - 15 Mins</div>\r\n                            </div>\r\n                        </div>\r\n                        <div *ngIf=\"nob === false\" class=\"d-flex align-items-center my-5 me-2\">\r\n                            <div class=\"flex-shrink-0 mt-3\">\r\n                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                    <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                                    </svg>\r\n                            </div>\r\n                            <div class=\"mx-3 mt-1\">\r\n                                <div class=\"my-1 card-label left-card-count\">\r\n                                    {{getOverallCardData?.conversionCard?.maxRate ?\r\n                                    getOverallCardData?.conversionCard?.maxRate :'--'}}%</div>\r\n                                <div class=\"left-card-count-header\">15 - 60 Mins</div>\r\n                            </div>\r\n                        </div>\r\n                        <div *ngIf=\"nob === false\" class=\"d-flex align-items-center my-5 me-2\">\r\n                            <div class=\"flex-shrink-0 mt-3\">\r\n                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                    <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                                    </svg>\r\n                            </div>\r\n                            <div class=\"mx-3 mt-1\">\r\n                                <div class=\"my-1 card-label left-card-count\">\r\n                                    {{getOverallCardData?.conversionCard?.averageRate ?\r\n                                    getOverallCardData?.conversionCard?.averageRate :'--'}}%</div>\r\n                                <div class=\"left-card-count-header\">1 Hr or more</div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div *ngIf=\"selectedTab ==='engagers'\" class=\"left-bar\">\r\n                    <div class=\"top-header text-center\">\r\n                        <div class=\"left-bar-count\">{{getOverallCardData?.engagersCard?.engagersCount ?\r\n                            getOverallCardData?.engagersCard?.engagersCount.toLocaleString('en-IN') :'--'}}</div>\r\n                        <div class=\"left-bar-title\">Engagers Count</div>\r\n\r\n                    </div>\r\n                    <div class=\"my-5\">\r\n                        <div class=\"d-flex align-items-center my-5 me-2\">\r\n                            <div class=\"flex-shrink-0 mt-3\">\r\n                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                    <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                                    </svg>\r\n                            </div>\r\n                            <div class=\"mx-3 mt-1\">\r\n                                <div class=\"my-1 card-label left-card-count\">\r\n                                    {{getOverallCardData?.engagersCard?.engagersRate ?\r\n                                    getOverallCardData?.engagersCard?.engagersRate :'--'}}%</div>\r\n                                <div class=\"left-card-count-header\">Engagers Rate</div>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"d-flex align-items-center my-5 me-2\">\r\n                            <div class=\"flex-shrink-0 mt-3\">\r\n                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                    <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                                    </svg>\r\n                            </div>\r\n                            <div class=\"mx-3 mt-1\">\r\n                                <div class=\"my-1 card-label left-card-count\">\r\n                                    {{getOverallCardData?.engagersCard?.avgDwellTime ?\r\n                                    getOverallCardData?.engagersCard?.avgDwellTime :'--'}} Mins</div>\r\n                                <div class=\"left-card-count-header\">Avg dwell Time</div>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"d-flex align-items-center my-5 me-2\">\r\n                            <div class=\"flex-shrink-0 mt-3\">\r\n                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                    <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                                    </svg>\r\n                            </div>\r\n                            <div class=\"mx-3 mt-1\">\r\n                                <div class=\"my-1 card-label left-card-count\">\r\n                                    {{getOverallCardData?.engagersCard?.highEngagementZone ?\r\n                                    getOverallCardData?.engagersCard?.highEngagementZone :'--'}}</div>\r\n                                <div class=\"left-card-count-header\">High Engagement Zone</div>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"d-flex align-items-center my-5 me-2\">\r\n                            <div class=\"flex-shrink-0 mt-3\">\r\n                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                    <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                                    </svg>\r\n                            </div>\r\n                            <div class=\"mx-3 mt-1\">\r\n                                <div class=\"my-1 card-label left-card-count\">\r\n                                    {{getOverallCardData?.engagersCard?.lowEngagementZone ?\r\n                                    getOverallCardData?.engagersCard?.lowEngagementZone :'--'}}</div>\r\n                                <div class=\"left-card-count-header\">Low Engagement Zone</div>\r\n                            </div>\r\n                           \r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div *ngIf=\"selectedTab ==='bounced'\" class=\"left-bar\">\r\n                    <div class=\"top-header text-center\">\r\n                        <div class=\"left-bar-count\">{{getOverallCardData?.bouncedCard?.bouncedCount ?\r\n                            getOverallCardData?.bouncedCard?.bouncedCount.toLocaleString('en-IN') :'--'}}</div>\r\n                        <div class=\"left-bar-title\">Bounced Count</div>\r\n\r\n                    </div>\r\n                    <div class=\"my-5\">\r\n                        <div class=\"d-flex align-items-center my-5 me-2\">\r\n                            <div class=\"flex-shrink-0 mt-3\">\r\n                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                    <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                                    </svg>\r\n                            </div>\r\n                            <div class=\"mx-3 mt-1\">\r\n                                <div class=\"my-1 card-label left-card-count\">\r\n                                    {{getOverallCardData?.bouncedCard?.bouncedRate ?\r\n                                    getOverallCardData?.bouncedCard?.bouncedRate :'--'}}%</div>\r\n                                <div class=\"left-card-count-header\">Bounced Rate</div>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"d-flex align-items-center my-5 me-2\">\r\n                            <div class=\"flex-shrink-0 mt-3\">\r\n                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                    <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                                    </svg>\r\n                            </div>\r\n                            <div class=\"mx-3 mt-1\">\r\n                                <div class=\"my-1 card-label left-card-count\">\r\n                                    {{getOverallCardData?.bouncedCard?.peakBouncedHour ?\r\n                                    getOverallCardData?.bouncedCard?.peakBouncedHour :'--'}}</div>\r\n                                <div class=\"left-card-count-header\">Peak Bounced Hour</div>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"d-flex align-items-center my-5 me-2\">\r\n                            <div class=\"flex-shrink-0 mt-3\">\r\n                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                    <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                                    </svg>\r\n                            </div>\r\n                            <div class=\"mx-3 mt-1\">\r\n                                <div class=\"my-1 card-label left-card-count\">\r\n                                    {{getOverallCardData?.bouncedCard?.mostCommonAge ?\r\n                                    getOverallCardData?.bouncedCard?.mostCommonAge :'--'}}</div>\r\n                                <div class=\"left-card-count-header\">Most Common Age</div>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"d-flex align-items-center my-5 me-2\">\r\n                            <div class=\"flex-shrink-0 mt-3\">\r\n                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                    <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                                    </svg>\r\n                            </div>\r\n                            <div class=\"mx-3 mt-1\">\r\n                                <div class=\"my-1 card-label left-card-count\">\r\n                                    {{getOverallCardData?.bouncedCard?.maleRate ?\r\n                                    getOverallCardData?.bouncedCard?.maleRate :'--'}} %</div>\r\n                                <div class=\"left-card-count-header\">Male</div>\r\n                            </div>\r\n                            <div class=\"mx-3 mt-1\">\r\n                                <div class=\"my-1 card-label left-card-count\">\r\n                                    {{getOverallCardData?.bouncedCard?.femaleRate ?\r\n                                    getOverallCardData?.bouncedCard?.femaleRate :'--'}} %</div>\r\n                                <div class=\"left-card-count-header\">Female</div>\r\n                            </div>\r\n                           \r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div *ngIf=\"selectedTab ==='potentialBuyers'\" class=\"left-bar\">\r\n                    <div class=\"top-header text-center\">\r\n                        <div class=\"left-bar-count\">{{getOverallCardData?.potentialBuyersCard?.potentialBuyersCount ?\r\n                            getOverallCardData?.potentialBuyersCard?.potentialBuyersCount.toLocaleString('en-IN') :'--'}}</div>\r\n                        <div class=\"left-bar-title\">Potential Buyers</div>\r\n\r\n                    </div>\r\n                    <div class=\"my-5\">\r\n                        <div class=\"d-flex align-items-center my-5 me-2\">\r\n                            <div class=\"flex-shrink-0 mt-3\">\r\n                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                    <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                                    </svg>\r\n                            </div>\r\n                            <div class=\"mx-3 mt-1\">\r\n                                <div class=\"my-1 card-label left-card-count\">\r\n                                    {{getOverallCardData?.potentialBuyersCard?.potentialBuyersRate ?\r\n                                    getOverallCardData?.potentialBuyersCard?.potentialBuyersRate :'--'}}%</div>\r\n                                <div class=\"left-card-count-header\">Buyers Rate</div>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"d-flex align-items-center my-5 me-2\">\r\n                            <div class=\"flex-shrink-0 mt-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                                    <path\r\n                                        d=\"M20 21V19C20 17.9391 19.5786 16.9217 18.8284 16.1716C18.0783 15.4214 17.0609 15 16 15H8C6.93913 15 5.92172 15.4214 5.17157 16.1716C4.42143 16.9217 4 17.9391 4 19V21M16 7C16 9.20914 14.2091 11 12 11C9.79086 11 8 9.20914 8 7C8 4.79086 9.79086 3 12 3C14.2091 3 16 4.79086 16 7Z\"\r\n                                        stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                                        stroke-linejoin=\"round\" />\r\n                                </svg>\r\n                            </div>\r\n                            <div class=\"mx-3 mt-1\">\r\n                                <div class=\"my-1 card-label left-card-count\">\r\n                                    {{getOverallCardData?.potentialBuyersCard?.singleCount ?\r\n                                    getOverallCardData?.potentialBuyersCard?.singleCount.toLocaleString('en-IN') :'--'}}</div>\r\n                                <div class=\"left-card-count-header\">Single</div>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"d-flex align-items-center my-5 me-2\">\r\n                            <div class=\"flex-shrink-0 mt-3\">\r\n                                <svg width=\"26\" height=\"24\" viewBox=\"0 0 26 24\" fill=\"none\"\r\n                                    xmlns=\"http://www.w3.org/2000/svg\">\r\n                                    <rect width=\"26\" height=\"24\" fill=\"#DCDCDC\" />\r\n                                    <rect x=\"-460.5\" y=\"-340.5\" width=\"783\" height=\"1947\" rx=\"4.5\" stroke=\"#9747FF\"\r\n                                        stroke-dasharray=\"10 5\" />\r\n                                    <mask id=\"path-2-inside-1_707_13106\" fill=\"white\">\r\n                                        <path\r\n                                            d=\"M-189 -89C-189 -95.6274 -183.627 -101 -177 -101H295C301.627 -101 307 -95.6274 307 -89V85C307 91.6274 301.627 97 295 97H-177C-183.627 97 -189 91.6274 -189 85V-89Z\" />\r\n                                    </mask>\r\n                                    <path\r\n                                        d=\"M-189 -89C-189 -95.6274 -183.627 -101 -177 -101H295C301.627 -101 307 -95.6274 307 -89V85C307 91.6274 301.627 97 295 97H-177C-183.627 97 -189 91.6274 -189 85V-89Z\"\r\n                                        fill=\"white\" />\r\n                                    <path\r\n                                        d=\"M-190 -89C-190 -96.1797 -184.18 -102 -177 -102H294C301.18 -102 307 -96.1797 307 -89C307 -95.0751 301.627 -100 295 -100H-177C-183.075 -100 -188 -95.0751 -188 -89H-190ZM307 85C307 92.1797 301.18 98 294 98H-177C-184.18 98 -190 92.1797 -190 85H-188C-188 91.0751 -183.075 96 -177 96H295C301.627 96 307 91.0751 307 85ZM-177 98C-184.18 98 -190 92.1797 -190 85V-89C-190 -96.1797 -184.18 -102 -177 -102V-100C-183.075 -100 -188 -95.0751 -188 -89V85C-188 91.0751 -183.075 96 -177 96V98ZM307 -101V97V-101Z\"\r\n                                        fill=\"#D0D5DD\" mask=\"url(#path-2-inside-1_707_13106)\" />\r\n                                    <mask id=\"path-6-inside-2_707_13106\" fill=\"white\">\r\n                                        <path\r\n                                            d=\"M7.71064 7.38462C8.19552 7.38462 8.67565 7.28911 9.12362 7.10356C9.57159 6.918 9.97863 6.64603 10.3215 6.30316C10.6644 5.9603 10.9363 5.55326 11.1219 5.10529C11.3074 4.65732 11.4029 4.17719 11.4029 3.69231C11.4029 3.20743 11.3074 2.72729 11.1219 2.27932C10.9363 1.83135 10.6644 1.42431 10.3215 1.08145C9.97863 0.73859 9.57159 0.466616 9.12362 0.28106C8.67565 0.0955043 8.19552 -7.22529e-09 7.71064 0C6.73138 1.45921e-08 5.79222 0.38901 5.09978 1.08145C4.40734 1.77389 4.01833 2.71305 4.01833 3.69231C4.01833 4.67157 4.40734 5.61072 5.09978 6.30316C5.79222 6.99561 6.73138 7.38462 7.71064 7.38462ZM18.7876 7.38462C19.2724 7.38462 19.7526 7.28911 20.2005 7.10356C20.6485 6.918 21.0556 6.64603 21.3984 6.30316C21.7413 5.9603 22.0133 5.55326 22.1988 5.10529C22.3844 4.65732 22.4799 4.17719 22.4799 3.69231C22.4799 3.20743 22.3844 2.72729 22.1988 2.27932C22.0133 1.83135 21.7413 1.42431 21.3984 1.08145C21.0556 0.73859 20.6485 0.466616 20.2005 0.28106C19.7526 0.0955043 19.2724 -7.22529e-09 18.7876 0C17.8083 1.45921e-08 16.8691 0.38901 16.1767 1.08145C15.4843 1.77389 15.0953 2.71305 15.0953 3.69231C15.0953 4.67157 15.4843 5.61072 16.1767 6.30316C16.8691 6.99561 17.8083 7.38462 18.7876 7.38462ZM0.941406 10.736C0.941406 10.4575 0.996258 10.1818 1.10283 9.92448C1.2094 9.66719 1.3656 9.43342 1.56252 9.2365C1.75944 9.03958 1.99321 8.88338 2.2505 8.77681C2.50778 8.67024 2.78354 8.61539 3.06202 8.61539H8.98448C8.55169 9.36345 8.32452 10.2127 8.32602 11.0769C8.32519 11.7755 8.47341 12.4662 8.76079 13.1029C9.04816 13.7396 9.46807 14.3077 9.99248 14.7692H8.60048C8.01418 14.7687 7.43803 14.9222 6.92969 15.2144C6.42134 15.5065 5.99864 15.927 5.70387 16.4338C3.7211 16.0449 2.51618 15.0782 1.81464 13.992C0.941406 12.64 0.941406 11.2431 0.941406 11.0012V10.736ZM17.8977 14.7692C18.484 14.7687 19.0602 14.9222 19.5685 15.2144C20.0769 15.5065 20.4996 15.927 20.7943 16.4338C22.7771 16.0449 23.982 15.0782 24.6836 13.992C25.5568 12.64 25.5568 11.2431 25.5568 11.0012V10.7366C25.5569 10.4581 25.5021 10.1823 25.3955 9.9249C25.289 9.66755 25.1328 9.4337 24.9359 9.23672C24.739 9.03973 24.5052 8.88348 24.2478 8.77687C23.9905 8.67026 23.7147 8.61539 23.4362 8.61539H17.5137C17.9465 9.36345 18.1737 10.2127 18.1722 11.0769C18.173 11.7755 18.0248 12.4662 17.7374 13.1029C17.45 13.7396 17.0301 14.3077 16.5057 14.7692H17.8977ZM16.9414 11.0769C16.9414 12.0562 16.5524 12.9953 15.86 13.6878C15.1675 14.3802 14.2284 14.7692 13.2491 14.7692C12.2698 14.7692 11.3307 14.3802 10.6382 13.6878C9.9458 12.9953 9.55679 12.0562 9.55679 11.0769C9.55679 10.0977 9.9458 9.15851 10.6382 8.46607C11.3307 7.77363 12.2698 7.38462 13.2491 7.38462C14.2284 7.38462 15.1675 7.77363 15.86 8.46607C16.5524 9.15851 16.9414 10.0977 16.9414 11.0769ZM6.47987 18.1206C6.47987 17.5582 6.70329 17.0188 7.10098 16.6211C7.49867 16.2234 8.03806 16 8.60048 16H17.8977C18.4601 16 18.9995 16.2234 19.3972 16.6211C19.7949 17.0188 20.0183 17.5582 20.0183 18.1206V18.3858C20.0183 18.6283 20.0183 20.0246 19.1451 21.3766C18.2325 22.7895 16.4694 24 13.2491 24C10.0288 24 8.26571 22.7895 7.3531 21.3766C6.47987 20.0246 6.47987 18.6277 6.47987 18.3858V18.1206Z\" />\r\n                                    </mask>\r\n                                    <path\r\n                                        d=\"M7.71064 7.38462C8.19552 7.38462 8.67565 7.28911 9.12362 7.10356C9.57159 6.918 9.97863 6.64603 10.3215 6.30316C10.6644 5.9603 10.9363 5.55326 11.1219 5.10529C11.3074 4.65732 11.4029 4.17719 11.4029 3.69231C11.4029 3.20743 11.3074 2.72729 11.1219 2.27932C10.9363 1.83135 10.6644 1.42431 10.3215 1.08145C9.97863 0.73859 9.57159 0.466616 9.12362 0.28106C8.67565 0.0955043 8.19552 -7.22529e-09 7.71064 0C6.73138 1.45921e-08 5.79222 0.38901 5.09978 1.08145C4.40734 1.77389 4.01833 2.71305 4.01833 3.69231C4.01833 4.67157 4.40734 5.61072 5.09978 6.30316C5.79222 6.99561 6.73138 7.38462 7.71064 7.38462ZM18.7876 7.38462C19.2724 7.38462 19.7526 7.28911 20.2005 7.10356C20.6485 6.918 21.0556 6.64603 21.3984 6.30316C21.7413 5.9603 22.0133 5.55326 22.1988 5.10529C22.3844 4.65732 22.4799 4.17719 22.4799 3.69231C22.4799 3.20743 22.3844 2.72729 22.1988 2.27932C22.0133 1.83135 21.7413 1.42431 21.3984 1.08145C21.0556 0.73859 20.6485 0.466616 20.2005 0.28106C19.7526 0.0955043 19.2724 -7.22529e-09 18.7876 0C17.8083 1.45921e-08 16.8691 0.38901 16.1767 1.08145C15.4843 1.77389 15.0953 2.71305 15.0953 3.69231C15.0953 4.67157 15.4843 5.61072 16.1767 6.30316C16.8691 6.99561 17.8083 7.38462 18.7876 7.38462ZM0.941406 10.736C0.941406 10.4575 0.996258 10.1818 1.10283 9.92448C1.2094 9.66719 1.3656 9.43342 1.56252 9.2365C1.75944 9.03958 1.99321 8.88338 2.2505 8.77681C2.50778 8.67024 2.78354 8.61539 3.06202 8.61539H8.98448C8.55169 9.36345 8.32452 10.2127 8.32602 11.0769C8.32519 11.7755 8.47341 12.4662 8.76079 13.1029C9.04816 13.7396 9.46807 14.3077 9.99248 14.7692H8.60048C8.01418 14.7687 7.43803 14.9222 6.92969 15.2144C6.42134 15.5065 5.99864 15.927 5.70387 16.4338C3.7211 16.0449 2.51618 15.0782 1.81464 13.992C0.941406 12.64 0.941406 11.2431 0.941406 11.0012V10.736ZM17.8977 14.7692C18.484 14.7687 19.0602 14.9222 19.5685 15.2144C20.0769 15.5065 20.4996 15.927 20.7943 16.4338C22.7771 16.0449 23.982 15.0782 24.6836 13.992C25.5568 12.64 25.5568 11.2431 25.5568 11.0012V10.7366C25.5569 10.4581 25.5021 10.1823 25.3955 9.9249C25.289 9.66755 25.1328 9.4337 24.9359 9.23672C24.739 9.03973 24.5052 8.88348 24.2478 8.77687C23.9905 8.67026 23.7147 8.61539 23.4362 8.61539H17.5137C17.9465 9.36345 18.1737 10.2127 18.1722 11.0769C18.173 11.7755 18.0248 12.4662 17.7374 13.1029C17.45 13.7396 17.0301 14.3077 16.5057 14.7692H17.8977ZM16.9414 11.0769C16.9414 12.0562 16.5524 12.9953 15.86 13.6878C15.1675 14.3802 14.2284 14.7692 13.2491 14.7692C12.2698 14.7692 11.3307 14.3802 10.6382 13.6878C9.9458 12.9953 9.55679 12.0562 9.55679 11.0769C9.55679 10.0977 9.9458 9.15851 10.6382 8.46607C11.3307 7.77363 12.2698 7.38462 13.2491 7.38462C14.2284 7.38462 15.1675 7.77363 15.86 8.46607C16.5524 9.15851 16.9414 10.0977 16.9414 11.0769ZM6.47987 18.1206C6.47987 17.5582 6.70329 17.0188 7.10098 16.6211C7.49867 16.2234 8.03806 16 8.60048 16H17.8977C18.4601 16 18.9995 16.2234 19.3972 16.6211C19.7949 17.0188 20.0183 17.5582 20.0183 18.1206V18.3858C20.0183 18.6283 20.0183 20.0246 19.1451 21.3766C18.2325 22.7895 16.4694 24 13.2491 24C10.0288 24 8.26571 22.7895 7.3531 21.3766C6.47987 20.0246 6.47987 18.6277 6.47987 18.3858V18.1206Z\"\r\n                                        stroke=\"#98A2B3\" stroke-width=\"3\" mask=\"url(#path-6-inside-2_707_13106)\" />\r\n                                </svg>\r\n                            </div>\r\n                            <div class=\"mx-3 mt-1\">\r\n                                <div class=\"my-1 card-label left-card-count\">\r\n                                    {{getOverallCardData?.potentialBuyersCard?.groupCount ?\r\n                                    getOverallCardData?.potentialBuyersCard?.groupCount.toLocaleString('en-IN') :'--'}}</div>\r\n                                <div class=\"left-card-count-header\">Group</div>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"d-flex align-items-center my-5 me-2\">\r\n                            <div class=\"flex-shrink-0 mt-3\">\r\n                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                    <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                                    </svg>\r\n                            </div>\r\n                            <div class=\"mx-3 mt-1\">\r\n                                <div class=\"my-1 card-label left-card-count\">\r\n                                    {{getOverallCardData?.potentialBuyersCard?.mostCommonAge ?\r\n                                    getOverallCardData?.potentialBuyersCard?.mostCommonAge :'--'}}</div>\r\n                                <div class=\"left-card-count-header\">Most Common Age</div>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"d-flex align-items-center my-5 me-2\">\r\n                            <div class=\"flex-shrink-0 mt-3\">\r\n                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                    <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                                    </svg>\r\n                            </div>\r\n                            <div class=\"mx-3 mt-1\">\r\n                                <div class=\"my-1 card-label left-card-count\">\r\n                                    {{getOverallCardData?.potentialBuyersCard?.maleRate ?\r\n                                    getOverallCardData?.potentialBuyersCard?.maleRate :'--'}} %</div>\r\n                                <div class=\"left-card-count-header\">Male</div>\r\n                            </div>\r\n                            <div class=\"mx-3 mt-1\">\r\n                                <div class=\"my-1 card-label left-card-count\">\r\n                                    {{getOverallCardData?.potentialBuyersCard?.femaleRate ?\r\n                                    getOverallCardData?.potentialBuyersCard?.femaleRate :'--'}} %</div>\r\n                                <div class=\"left-card-count-header\">Female</div>\r\n                            </div>\r\n                           \r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div *ngIf=\"selectedTab ==='missedOpportunity'\" class=\"left-bar\">\r\n                    <div class=\"top-header text-center\">\r\n                        <div class=\"left-bar-count\">{{getOverallCardData?.missedOpportunityCard?.missedOpportunityCount ?\r\n                            getOverallCardData?.missedOpportunityCard?.missedOpportunityCount.toLocaleString('en-IN') :'--'}}</div>\r\n                        <div class=\"left-bar-title\">Missed opportunity Count</div>\r\n\r\n                    </div>\r\n                    <div class=\"my-5\">\r\n                        <div class=\"d-flex align-items-center my-5 me-2\">\r\n                            <div class=\"flex-shrink-0 mt-3\">\r\n                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                    <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                                    </svg>\r\n                            </div>\r\n                            <div class=\"mx-3 mt-1\">\r\n                                <div class=\"my-1 card-label left-card-count\">\r\n                                    {{getOverallCardData?.missedOpportunityCard?.missedOpportunityRate ?\r\n                                    getOverallCardData?.missedOpportunityCard?.missedOpportunityRate :'--'}}%</div>\r\n                                <div class=\"left-card-count-header\">Missed opportunity Rate</div>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"d-flex align-items-center my-5 me-2\">\r\n                            <div class=\"flex-shrink-0 mt-3\">\r\n                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                    <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                                    </svg>\r\n                            </div>\r\n                            <div class=\"mx-3 mt-1\">\r\n                                <div class=\"my-1 card-label left-card-count\"><span class=\"me-1\" *ngIf=\"getOverallCardData?.missedOpportunityCard?.currency ==='inr'\">₹</span>\r\n                                    <span class=\"me-1\" *ngIf=\"getOverallCardData?.missedOpportunityCard?.currency !=='inr'\">$</span>\r\n                                    {{getOverallCardData?.missedOpportunityCard?.potentialRevenueLoss ?\r\n                                    getOverallCardData?.missedOpportunityCard?.potentialRevenueLoss.toLocaleString('en-IN') :'--'}}</div>\r\n                                <div class=\"left-card-count-header\">Potential Loss Revenue</div>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"d-flex align-items-center my-5 me-2\">\r\n                            <div class=\"flex-shrink-0 mt-3\">\r\n                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                    <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                                    </svg>\r\n                            </div>\r\n                            <div class=\"mx-3 mt-1\">\r\n                                <div class=\"my-1 card-label left-card-count\">\r\n                                    {{getOverallCardData?.missedOpportunityCard?.lowConversionZone ?\r\n                                    getOverallCardData?.missedOpportunityCard?.lowConversionZone :'--'}}</div>\r\n                                <div class=\"left-card-count-header\">Low Conversion Zone</div>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"d-flex align-items-center my-5 me-2\">\r\n                            <div class=\"flex-shrink-0 mt-3\">\r\n                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                    <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                                    </svg>\r\n                            </div>\r\n                            <div class=\"mx-3 mt-1\">\r\n                                <div class=\"my-1 card-label left-card-count\">\r\n                                    {{getOverallCardData?.missedOpportunityCard?.mostCommonAge ?\r\n                                    getOverallCardData?.missedOpportunityCard?.mostCommonAge :'--'}}</div>\r\n                                <div class=\"left-card-count-header\">Most Common Age</div>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"d-flex align-items-center my-5 me-2\">\r\n                            <div class=\"flex-shrink-0 mt-3\">\r\n                                <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n                                    <path d=\"M13 2L3 14H12L11 22L21 10H12L13 2Z\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                                    </svg>\r\n                            </div>\r\n                            <div class=\"mx-3 mt-1\">\r\n                                <div class=\"my-1 card-label left-card-count\">\r\n                                    {{getOverallCardData?.missedOpportunityCard?.maleRate ?\r\n                                    getOverallCardData?.missedOpportunityCard?.maleRate :'--'}} %</div>\r\n                                <div class=\"left-card-count-header\">Male</div>\r\n                            </div>\r\n                            <div class=\"mx-3 mt-1\">\r\n                                <div class=\"my-1 card-label left-card-count\">\r\n                                    {{getOverallCardData?.missedOpportunityCard?.femaleRate ?\r\n                                    getOverallCardData?.missedOpportunityCard?.femaleRate :'--'}} %</div>\r\n                                <div class=\"left-card-count-header\">Female</div>\r\n                            </div>\r\n                           \r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n          \r\n            <div *ngIf=\"selectedTab ==='traffic' && !chartloading && !chartNoData\" class=\"col-md-10 h-100 \">\r\n                <div class=\"row px-0\">\r\n                    \r\n                    <div class=\"col-md-6 mt-3 px-0\">\r\n                       \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=\"card-label\">Traffic Density <svg placement=\"right\"\r\n                                ngbTooltip=\"Traffic analysis distribution across the days\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n                                <g clip-path=\"url(#clip0_3352_688)\">\r\n                                <path d=\"M7.9987 10.6667V8.00004M7.9987 5.33337H8.00536M14.6654 8.00004C14.6654 11.6819 11.6806 14.6667 7.9987 14.6667C4.3168 14.6667 1.33203 11.6819 1.33203 8.00004C1.33203 4.31814 4.3168 1.33337 7.9987 1.33337C11.6806 1.33337 14.6654 4.31814 14.6654 8.00004Z\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                                </g>\r\n                                <defs>\r\n                                <clipPath id=\"clip0_3352_688\">\r\n                                <rect width=\"16\" height=\"16\" fill=\"white\"/>\r\n                                </clipPath>\r\n                                </defs>\r\n                                </svg></span>\r\n                            <span class=\"text-sub mb-2\">Based on {{getDensityDwellData?.fromDate | date:'dd MMM, yyyy'}} – {{getDensityDwellData?.toDate | date:'dd MMM, yyyy'}} </span>\r\n    \r\n                        </h3>\r\n                        \r\n                    </div>\r\n                        <div id=\"trafficHeatmapChart\"></div>\r\n                    </div>\r\n                    <div class=\"col-md-6 mt-3 px-0\">\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=\"card-label\">Dwell Time Split <svg placement=\"right\"\r\n                                    ngbTooltip=\"Time-distributed footfall with demographics\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n                                    <g clip-path=\"url(#clip0_3352_688)\">\r\n                                    <path d=\"M7.9987 10.6667V8.00004M7.9987 5.33337H8.00536M14.6654 8.00004C14.6654 11.6819 11.6806 14.6667 7.9987 14.6667C4.3168 14.6667 1.33203 11.6819 1.33203 8.00004C1.33203 4.31814 4.3168 1.33337 7.9987 1.33337C11.6806 1.33337 14.6654 4.31814 14.6654 8.00004Z\" stroke=\"#98A2B3\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n                                    </g>\r\n                                    <defs>\r\n                                    <clipPath id=\"clip0_3352_688\">\r\n                                    <rect width=\"16\" height=\"16\" fill=\"white\"/>\r\n                                    </clipPath>\r\n                                    </defs>\r\n                                    </svg></span>\r\n                                <span class=\"text-sub mb-2\">Based on {{getDensityDwellData?.fromDate | date:'dd MMM, yyyy'}} – {{getDensityDwellData?.toDate | date:'dd MMM, yyyy'}} </span>\r\n        \r\n                            </h3>\r\n                            <div class=\"card-toolbar text-nowrap\">\r\n                                <select class=\"form-select form-select-sm w-auto dropselect\" id=\"dateSelect\"\r\n                                (change)=\"onDateChange($event)\" [(ngModel)]=\"footfallDate\">\r\n                                <option *ngFor=\"let dataset of trafficData\" [value]=\"dataset.value\">{{ dataset.label }}</option>\r\n                            </select>\r\n                            </div>\r\n                        </div>\r\n                        <div id=\"dwellBarChart\"></div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div *ngIf=\"!chartloading && !chartNoData && (selectedTab ==='footfall' || selectedTab ==='conversion' || selectedTab ==='engagers' || selectedTab ==='bounced' || selectedTab ==='potentialBuyers' || selectedTab ==='missedOpportunity')\" class=\"col-md-10 h-100 right-bar border-1\">\r\n                \r\n\r\n                <div *ngIf=\"(footfallValue ==='footfall' || footfallValue ==='conversion' || footfallValue ==='engagers'\r\n                || footfallValue ==='missedOpportunity' || footfallValue ==='potentialBuyers' || footfallValue ==='bounced' || footfallValue ==='demographic' || footfallValue ==='buyer') && !detailedCharts\"\r\n                    class=\"row\">\r\n                   <div *ngIf=\"selectedTab !=='potentialBuyers'\">\r\n                    <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap my-2 mx-2\">\r\n                    <li class=\"nav-item nav-item1\" *ngFor=\"let dataset of datasets\" (click)=\"onDatasetChange(dataset.value)\">\r\n                        <a [ngClass]=\"footfallValue ===dataset.value ? 'active' :''\"\r\n                            class=\"nav-link nav-link1 cursor-pointer me-6\">{{ dataset.label }}</a>\r\n                    </li>\r\n                    </ul>\r\n                    <!-- <ul class=\"nav nav-tabs\">\r\n                        <li class=\"nav-item\" >\r\n                            <a class=\"nav-link\" [class.active]=\"selectedTab === dataset.label\">{{ dataset.label }}</a>\r\n                        </li>\r\n                    </ul> -->\r\n                    <!-- <select class=\"form-select form-select-sm w-auto m-3 dropselect\" id=\"datasetSelect\" [(ngModel)]=\"footfallValue\"\r\n                    (change)=\"onDatasetChange($event)\">\r\n                    <option *ngFor=\"let dataset of datasets\" [value]=\"dataset.value\">{{ dataset.label }}</option>\r\n                </select>  -->\r\n               \r\n                </div> \r\n                <div class=\"left-bar-title fw-bold mt-5 mb-2 ms-3\" *ngIf=\"selectedTab ==='potentialBuyers'\">{{selctedValue}}</div>\r\n                    <span class=\"ms-3 text-sub\">Based on {{headerData?.date?.startDate | date:'dd MMM, yyyy'}} – {{headerData?.date?.endDate | date:'dd MMM, yyyy'}} </span>\r\n                    <div *ngIf=\"footfallValue ==='demographic' && !detailedCharts\" class=\"col-md-12\">\r\n                        <div *ngIf=\"!demoNoData && !demoloading\">\r\n                            <div class=\"text-center\" id=\"demoGraphics\"></div>\r\n                        </div>                     \r\n                        <div *ngIf=\"demoloading\" 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=\"demoNoData\" 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=\"demo-img-nodata\" 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 Demographic Analysis</div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    <div *ngIf=\"footfallValue ==='buyer' && !detailedCharts\" class=\"col-md-12\">\r\n                        <div *ngIf=\"!buyersNoData && !buyersloading\">\r\n                            <div class=\"text-center\" id=\"buyersCharts\"></div>\r\n\r\n                        </div>                     \r\n                        <div *ngIf=\"buyersloading\" 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=\"buyersNoData\" 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=\"demo-img-nodata\" 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 Buyer Analysis</div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    <section *ngIf=\"nob === true && selectedTab ==='conversion'\">\r\n                        <div class=\"text-center mt-3 mx-3\" id=\"testGraphics\"></div>\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                    </section>\r\n<section *ngIf=\"(nob === true && selectedTab !=='conversion' || nob === false) \">\r\n                    <div *ngIf=\"footfallValue ==='footfall' || footfallValue ==='conversion' || footfallValue ==='engagers' \r\n                    || footfallValue ==='missedOpportunity' || footfallValue ==='potentialBuyers' || footfallValue ==='bounced' && !detailedCharts\" \r\n                    class=\"chart-container px-3 mt-3\">\r\n                <div class=\"text-center\" id=\"testGraphics\"></div>\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 *ngIf=\"footfallValue ==='footfall' || footfallValue ==='conversion' || footfallValue ==='engagers' \r\n                    || footfallValue ==='missedOpportunity' || footfallValue ==='potentialBuyers' || footfallValue ==='bounced' && !detailedCharts\" \r\n                    class=\"heatmap-container element\">\r\n                <div id=\"heatmapchart\"></div>\r\n            </div>\r\n            </section>\r\n            \r\n                    <!-- <div *ngIf=\"footfallValue ==='footfall' || footfallValue ==='conversion' || footfallValue ==='engagers'\r\n                || footfallValue ==='missedOpportunity' || footfallValue ==='potentialBuyers' || footfallValue ==='bounced' && !detailedCharts\" class=\"col-md-9 chart-container mt-3\">\r\n                        <div class=\"text-center\" id=\"testGraphics\"></div>\r\n                    </div>\r\n                    <div *ngIf=\"footfallValue ==='footfall' || footfallValue ==='conversion' || footfallValue ==='engagers'\r\n                || footfallValue ==='missedOpportunity' || footfallValue ==='potentialBuyers' || footfallValue ==='bounced' && !detailedCharts\" class=\"col-md-3 mt-3 me-0 pe-0\">\r\n                        <div id=\"heatmapchart\"></div>\r\n                    </div> -->\r\n\r\n                </div>\r\n                <div *ngIf=\"detailedCharts\" class=\"row\">\r\n                    <div class=\"d-flex align-items-center my-5 me-2\">\r\n                        <div class=\"flex-shrink-0 mt-3\">\r\n                            <span class=\"cursor-pointer\" (click)=\"backToFootfall()\">\r\n                                <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\r\n                                    xmlns=\"http://www.w3.org/2000/svg\">\r\n                                    <g filter=\"url(#filter0_d_2585_7036)\">\r\n                                        <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\r\n                                        <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n                                        <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\r\n                                            stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n                                            stroke-linejoin=\"round\" />\r\n                                    </g>\r\n                                    <defs>\r\n                                        <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\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_2585_7036\" />\r\n                                            <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\r\n                                                result=\"shape\" />\r\n                                        </filter>\r\n                                    </defs>\r\n                                </svg>\r\n                            </span>\r\n                        </div>\r\n                        <div class=\"mx-3 mt-1\">\r\n                            <div class=\"my-1 card-label left-card-count\"><span class=\"text-primary cursor-pointer text-decoration-underline\" (click)=\"storeView(storeId)\">{{storeName}}</span><span class=\"ms-2\">Footfall Trend</span></div>\r\n                            <div class=\"left-card-count-header text-sub\">Based on {{headerData?.date?.startDate | date:'dd MMM, yyyy'}} - {{headerData?.date?.endDate | date:'dd MMM, yyyy'}}</div>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"col-md-12 mx-5\">\r\n                        <div class=\"text-center\" id=\"detailedChartDiv\"></div>\r\n                    </div>\r\n                </div>\r\n       \r\n            </div>\r\n        </div>\r\n\r\n    </div>\r\n</div>\r\n\r\n\r\n\r\n<!-- <div *ngFor=\"let location of locations; let i = index\"> -->\r\n \r\n  <!-- </div> -->\r\n","import { AfterViewInit, Component, ElementRef, Input, OnInit, Renderer2 } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n  selector: 'lib-chart-detail-modal',\r\n  templateUrl: './chart-detail-modal.component.html',\r\n  styleUrl: './chart-detail-modal.component.scss'\r\n})\r\nexport class ChartDetailModalComponent implements AfterViewInit {\r\n  @Input() data: any;\r\n  @Input() clientX: number;\r\n  @Input() clientY: number;\r\n  constructor(public activeModal: NgbActiveModal,private el: ElementRef, private renderer: Renderer2) {}\r\n\r\n  ngAfterViewInit(): void {\r\n    setTimeout(() => {\r\n      const modalElement = this.el.nativeElement.querySelector('.modal-content');\r\n      if (modalElement) {\r\n        const offsetX = 10; // Adjust as needed\r\n        const offsetY = 10; // Adjust as needed\r\n        this.renderer.setStyle(modalElement, 'position', 'absolute');\r\n        this.renderer.setStyle(modalElement, 'left', `${this.clientX + offsetX}px`);\r\n        this.renderer.setStyle(modalElement, 'top', `${this.clientY + offsetY}px`);\r\n         // Check if modal goes out of view and adjust position if necessary\r\n         this.adjustPosition(modalElement);\r\n      }\r\n    }, 0);\r\nconsole.log(this.data)\r\n  }\r\n  private adjustPosition(modalElement: HTMLElement) {\r\n    const rect = modalElement.getBoundingClientRect();\r\n    const viewportWidth = window.innerWidth;\r\n    const viewportHeight = window.innerHeight;\r\n\r\n    if (rect.right > viewportWidth) {\r\n      this.renderer.setStyle(modalElement, 'left', `${viewportWidth - rect.width - 10}px`);\r\n    }\r\n    if (rect.bottom > viewportHeight) {\r\n      this.renderer.setStyle(modalElement, 'top', `${viewportHeight - rect.height - 10}px`);\r\n    }\r\n  }\r\n}\r\n","  <div class=\"modal-body\">\r\n    <div class=\"content\">\r\n        <div class=\"container\">\r\n          <div class=\"title text-start\">{{data.year}}</div>\r\n        </div>\r\n        <div class=\"grid-container\">\r\n          <div class=\"grid-item label\">Total Footfall</div>\r\n          <div class=\"grid-item value\">{{data.critical}}</div>\r\n          <div class=\"grid-item label\">Bounced Footfall</div>\r\n          <div class=\"grid-item value\">{{data.expenses}}</div>\r\n          <div class=\"grid-item label\">Engagers</div>\r\n          <div class=\"grid-item value\">{{data.info}}</div>\r\n          <div class=\"grid-item label\">Avg Dwell Time</div>\r\n          <div class=\"grid-item value\">34 Mins</div>\r\n          <div class=\"grid-item label\">Conversion Rate</div>\r\n          <div class=\"grid-item value\">{{data.warning}}%</div>\r\n          <div class=\"grid-item label\">Missed Opportunities</div>\r\n          <div class=\"grid-item value\">{{data.minor}}</div>\r\n          <div class=\"grid-item label\">Down Time</div>\r\n          <div class=\"grid-item value\">23%</div>\r\n        </div>\r\n      </div>\r\n      \r\n      \r\n  </div>\r\n","import {  NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TangoAnalyseTrafficRoutingModule } from './tango-analyse-traffic-routing.module';\r\nimport { TrafficAnalysisComponent } from './components/traffic-analysis/traffic-analysis.component';\r\nimport { TangoAnalyseTrafficComponent } from './components/tango-analyse-traffic/tango-analyse-traffic.component';\r\nimport { TrafficChartsComponent } from './components/traffic-charts/traffic-charts.component';\r\nimport { TrafficCardChartsComponent } from './components/traffic-card-charts/traffic-card-charts.component';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { ImageDocComponent } from './components/image-doc/image-doc.component';\r\nimport { ChartDetailModalComponent } from './components/chart-detail-modal/chart-detail-modal.component';\r\nimport { ReactiveSelectComponent } from './components/reactive-select/reactive-select.component';\r\nimport { CommonSharedModule } from 'tango-app-ui-shared';\r\nimport { ImageDocViewComponent } from './components/image-doc-view/image-doc-view.component';\r\nimport { ExploreViewComponent } from './components/explore-view/explore-view.component';\r\nimport { GoogleMapsModule } from '@angular/google-maps';\r\nimport { VideoUrlComponent } from './components/video-url/video-url.component';\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NobUploadComponent } from './components/nob-upload/nob-upload.component';\r\nimport { AddNobComponent } from './components/add-nob/add-nob.component';\r\nimport { CustomSelectComponent } from './components/custom-select/custom-select.component';\r\nimport { DuplicateComponent } from './components/duplicate/duplicate.component';\r\nimport { NgxGpAutocompleteModule } from \"@angular-magic/ngx-gp-autocomplete\";\r\nimport { Loader } from '@googlemaps/js-api-loader';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\nimport { NgxImageZoomModule } from 'ngx-image-zoom';\r\nimport { MagnifierDirective } from './directive/magnifier.directive';\r\nimport { ImgRvpsComponent } from './components/img-rvps/img-rvps.component';\r\n@NgModule({\r\n  declarations: [\r\n    TrafficAnalysisComponent,\r\n    TangoAnalyseTrafficComponent,\r\n    TrafficChartsComponent,\r\n    TrafficCardChartsComponent,\r\n    ImageDocComponent,\r\n    ChartDetailModalComponent,\r\n    ReactiveSelectComponent,\r\n    ImageDocViewComponent,\r\n    ExploreViewComponent,\r\n    VideoUrlComponent,\r\n    NobUploadComponent,\r\n    AddNobComponent,\r\n    CustomSelectComponent,\r\n    DuplicateComponent,\r\n     MagnifierDirective,\r\n     ImgRvpsComponent\r\n    \r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    TangoAnalyseTrafficRoutingModule,\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    CommonSharedModule,\r\n    GoogleMapsModule,\r\n    NgbModule,\r\n    NgxGpAutocompleteModule,\r\n    NgxImageZoomModule,\r\n\r\n\r\n  ], \r\n   \r\n  providers: [\r\n      {\r\n        provide: Loader,\r\n        useFactory: (gs: GlobalStateService) => {\r\n          const env = gs.environment.value;\r\n          return new Loader({\r\n            apiKey: env?.mapKeyUrl || '',\r\n            libraries: ['places']\r\n          });\r\n        },\r\n        deps: [GlobalStateService]\r\n      },\r\n    ],\r\n})\r\nexport class TangoAnalyseTrafficModule {}\r\n","/*\r\n * Public API Surface of tango-analyse-traffic\r\n */\r\n\r\nexport * from './lib/tango-analyse-traffic.module';\r\nexport * from './lib/components/tango-analyse-traffic/tango-analyse-traffic.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i1.TrafficService","i2","i4","i2.TrafficService","i3","i5","i6.TrafficRvpsService","i7","i9.ReactiveSelectComponent","i10.MagnifierDirective","i5.TrafficRvpsService","getDaysBetweenDates","i2.ExcelService","i3.TrafficService","i6","i8","i9.ImageDocComponent","i10.ReactiveSelectComponent","i11.ImgRvpsComponent","i2.TrafficAnalysisComponent","i3.ExcelService","i7.CustomSelectComponent","debounceTime","i6.ExcelService","i7.ReactiveSelectComponent"],"mappings":"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"}