tango-app-ui-analyse-trax 3.9.2 → 3.9.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (470) hide show
  1. package/.eslintrc.json +37 -0
  2. package/ng-package.json +7 -0
  3. package/package.json +12 -25
  4. package/src/lib/components/action-centre/action-centre.component.html +607 -0
  5. package/src/lib/components/action-centre/action-centre.component.scss +185 -0
  6. package/src/lib/components/action-centre/action-centre.component.spec.ts +23 -0
  7. package/src/lib/components/action-centre/action-centre.component.ts +279 -0
  8. package/src/lib/components/activity-log/activity-log.component.html +84 -0
  9. package/src/lib/components/activity-log/activity-log.component.scss +33 -0
  10. package/src/lib/components/activity-log/activity-log.component.spec.ts +23 -0
  11. package/src/lib/components/activity-log/activity-log.component.ts +137 -0
  12. package/src/lib/components/activity-log-v2/activity-log-v2.component.html +189 -0
  13. package/src/lib/components/activity-log-v2/activity-log-v2.component.scss +162 -0
  14. package/src/lib/components/activity-log-v2/activity-log-v2.component.spec.ts +23 -0
  15. package/src/lib/components/activity-log-v2/activity-log-v2.component.ts +517 -0
  16. package/src/lib/components/activity-log-v2/log-view-popup/date-range-picker/date-range-picker.component.html +19 -0
  17. package/src/lib/components/activity-log-v2/log-view-popup/date-range-picker/date-range-picker.component.scss +148 -0
  18. package/src/lib/components/activity-log-v2/log-view-popup/date-range-picker/date-range-picker.component.spec.ts +23 -0
  19. package/src/lib/components/activity-log-v2/log-view-popup/date-range-picker/date-range-picker.component.ts +141 -0
  20. package/src/lib/components/activity-log-v2/log-view-popup/store-user-dropdown/store-user-dropdown.component.html +42 -0
  21. package/src/lib/components/activity-log-v2/log-view-popup/store-user-dropdown/store-user-dropdown.component.scss +49 -0
  22. package/src/lib/components/activity-log-v2/log-view-popup/store-user-dropdown/store-user-dropdown.component.spec.ts +23 -0
  23. package/src/lib/components/activity-log-v2/log-view-popup/store-user-dropdown/store-user-dropdown.component.ts +22 -0
  24. package/src/lib/components/activity-log-v2/log-view-popup/view-action/view-action.component.html +724 -0
  25. package/src/lib/components/activity-log-v2/log-view-popup/view-action/view-action.component.scss +217 -0
  26. package/src/lib/components/activity-log-v2/log-view-popup/view-action/view-action.component.spec.ts +23 -0
  27. package/src/lib/components/activity-log-v2/log-view-popup/view-action/view-action.component.ts +122 -0
  28. package/src/lib/components/add-checklist/add-checklist.component.html +1459 -0
  29. package/src/lib/components/add-checklist/add-checklist.component.scss +1205 -0
  30. package/src/lib/components/add-checklist/add-checklist.component.spec.ts +23 -0
  31. package/src/lib/components/add-checklist/add-checklist.component.ts +2460 -0
  32. package/src/lib/components/add-checklist/checklist-popup/checklist-popup.component.html +207 -0
  33. package/src/lib/components/add-checklist/checklist-popup/checklist-popup.component.scss +213 -0
  34. package/src/lib/components/add-checklist/checklist-popup/checklist-popup.component.spec.ts +23 -0
  35. package/src/lib/components/add-checklist/checklist-popup/checklist-popup.component.ts +621 -0
  36. package/src/lib/components/add-checklist/counter/counter.component.html +43 -0
  37. package/src/lib/components/add-checklist/counter/counter.component.scss +49 -0
  38. package/src/lib/components/add-checklist/counter/counter.component.spec.ts +23 -0
  39. package/src/lib/components/add-checklist/counter/counter.component.ts +123 -0
  40. package/src/lib/components/add-multitask/add-multitask.component.html +705 -0
  41. package/src/lib/components/add-multitask/add-multitask.component.scss +296 -0
  42. package/src/lib/components/add-multitask/add-multitask.component.spec.ts +23 -0
  43. package/src/lib/components/add-multitask/add-multitask.component.ts +611 -0
  44. package/src/lib/components/add-multitask/ascending-validator.ts +13 -0
  45. package/src/lib/components/add-multitask/bulkcreationmodel/bulkcreationmodel.component.html +197 -0
  46. package/src/lib/components/add-multitask/bulkcreationmodel/bulkcreationmodel.component.scss +31 -0
  47. package/src/lib/components/add-multitask/bulkcreationmodel/bulkcreationmodel.component.spec.ts +23 -0
  48. package/src/lib/components/add-multitask/bulkcreationmodel/bulkcreationmodel.component.ts +285 -0
  49. package/src/lib/components/add-multitask/create-task.data.ts +374 -0
  50. package/src/lib/components/add-multitask/create-task.interface.ts +177 -0
  51. package/src/lib/components/add-multitask/unique-string-validator.ts +13 -0
  52. package/src/lib/components/add-multitask/whitespace-validator.ts +11 -0
  53. package/src/lib/components/add-task/add-task.component.html +654 -0
  54. package/src/lib/components/add-task/add-task.component.scss +536 -0
  55. package/src/lib/components/add-task/add-task.component.spec.ts +23 -0
  56. package/src/lib/components/add-task/add-task.component.ts +569 -0
  57. package/src/lib/components/add-task/ascending-validator.ts +13 -0
  58. package/src/lib/components/add-task/create-task.data.ts +374 -0
  59. package/src/lib/components/add-task/create-task.interface.ts +192 -0
  60. package/src/lib/components/add-task/unique-string-validator.ts +13 -0
  61. package/src/lib/components/add-task/whitespace-validator.ts +11 -0
  62. package/src/lib/components/approval-popup/approval-popup.component.html +25 -0
  63. package/src/lib/components/approval-popup/approval-popup.component.scss +3 -0
  64. package/src/lib/components/approval-popup/approval-popup.component.spec.ts +23 -0
  65. package/src/lib/components/approval-popup/approval-popup.component.ts +26 -0
  66. package/src/lib/components/checklist/checklist.component.html +330 -0
  67. package/src/lib/components/checklist/checklist.component.scss +112 -0
  68. package/src/lib/components/checklist/checklist.component.spec.ts +23 -0
  69. package/src/lib/components/checklist/checklist.component.ts +344 -0
  70. package/src/lib/components/checklist-configure/assign/assign.component.html +665 -0
  71. package/src/lib/components/checklist-configure/assign/assign.component.scss +219 -0
  72. package/src/lib/components/checklist-configure/assign/assign.component.spec.ts +23 -0
  73. package/src/lib/components/checklist-configure/assign/assign.component.ts +932 -0
  74. package/src/lib/components/checklist-configure/checklist-configure.component.html +4340 -0
  75. package/src/lib/components/checklist-configure/checklist-configure.component.scss +2338 -0
  76. package/src/lib/components/checklist-configure/checklist-configure.component.spec.ts +23 -0
  77. package/src/lib/components/checklist-configure/checklist-configure.component.ts +4659 -0
  78. package/src/lib/components/checklistlayout/checklistlayout.component.html +30 -0
  79. package/src/lib/components/checklistlayout/checklistlayout.component.scss +15 -0
  80. package/src/lib/components/checklistlayout/checklistlayout.component.spec.ts +23 -0
  81. package/src/lib/components/checklistlayout/checklistlayout.component.ts +47 -0
  82. package/src/lib/components/chip-dropdown/chip-dropdown.component.html +36 -0
  83. package/src/lib/components/chip-dropdown/chip-dropdown.component.scss +97 -0
  84. package/src/lib/components/chip-dropdown/chip-dropdown.component.spec.ts +23 -0
  85. package/src/lib/components/chip-dropdown/chip-dropdown.component.ts +125 -0
  86. package/src/lib/components/create-task/create-task.component.html +2003 -0
  87. package/src/lib/components/create-task/create-task.component.scss +272 -0
  88. package/src/lib/components/create-task/create-task.component.spec.ts +23 -0
  89. package/src/lib/components/create-task/create-task.component.ts +614 -0
  90. package/src/lib/components/create-task/create-task.data.ts +372 -0
  91. package/src/lib/components/create-task/create-task.interface.ts +182 -0
  92. package/src/lib/components/create-task/validators/ascending-validator.ts +13 -0
  93. package/src/lib/components/create-task/validators/unique-string-validator.ts +13 -0
  94. package/src/lib/components/create-task/validators/whitespace-validator.ts +11 -0
  95. package/src/lib/components/custom-select/custom-select.component.html +44 -0
  96. package/src/lib/components/custom-select/custom-select.component.scss +144 -0
  97. package/src/lib/components/custom-select/custom-select.component.spec.ts +23 -0
  98. package/src/lib/components/custom-select/custom-select.component.ts +265 -0
  99. package/src/lib/components/dashboard/dashboard.component.html +1076 -0
  100. package/src/lib/components/dashboard/dashboard.component.scss +237 -0
  101. package/src/lib/components/dashboard/dashboard.component.spec.ts +23 -0
  102. package/src/lib/components/dashboard/dashboard.component.ts +539 -0
  103. package/src/lib/components/dashboard-info/dashboard-info.component.html +1420 -0
  104. package/src/lib/components/dashboard-info/dashboard-info.component.scss +409 -0
  105. package/src/lib/components/dashboard-info/dashboard-info.component.spec.ts +23 -0
  106. package/src/lib/components/dashboard-info/dashboard-info.component.ts +772 -0
  107. package/src/lib/components/dashboard-info/monthlyperformance-datepicker/monthlyperformance-datepicker.component.html +110 -0
  108. package/src/lib/components/dashboard-info/monthlyperformance-datepicker/monthlyperformance-datepicker.component.scss +260 -0
  109. package/src/lib/components/dashboard-info/monthlyperformance-datepicker/monthlyperformance-datepicker.component.spec.ts +23 -0
  110. package/src/lib/components/dashboard-info/monthlyperformance-datepicker/monthlyperformance-datepicker.component.ts +143 -0
  111. package/src/lib/components/dashboard-layout/dashboard-layout.component.html +1 -0
  112. package/src/lib/components/dashboard-layout/dashboard-layout.component.scss +0 -0
  113. package/src/lib/components/dashboard-layout/dashboard-layout.component.spec.ts +23 -0
  114. package/src/lib/components/dashboard-layout/dashboard-layout.component.ts +10 -0
  115. package/src/lib/components/disabled-select/disabled-select.component.html +44 -0
  116. package/src/lib/components/disabled-select/disabled-select.component.scss +149 -0
  117. package/src/lib/components/disabled-select/disabled-select.component.spec.ts +23 -0
  118. package/src/lib/components/disabled-select/disabled-select.component.ts +146 -0
  119. package/src/lib/components/export-gallery/export-gallery.component.html +175 -0
  120. package/src/lib/components/export-gallery/export-gallery.component.scss +200 -0
  121. package/src/lib/components/export-gallery/export-gallery.component.spec.ts +23 -0
  122. package/src/lib/components/export-gallery/export-gallery.component.ts +263 -0
  123. package/src/lib/components/eye-test-audit/chip-dropdown/chip-dropdown.component.html +36 -0
  124. package/src/lib/components/eye-test-audit/chip-dropdown/chip-dropdown.component.scss +97 -0
  125. package/src/lib/components/eye-test-audit/chip-dropdown/chip-dropdown.component.spec.ts +23 -0
  126. package/src/lib/components/eye-test-audit/chip-dropdown/chip-dropdown.component.ts +104 -0
  127. package/src/lib/components/eye-test-audit/custom-select/custom-select.component.html +44 -0
  128. package/src/lib/components/eye-test-audit/custom-select/custom-select.component.scss +144 -0
  129. package/src/lib/components/eye-test-audit/custom-select/custom-select.component.spec.ts +23 -0
  130. package/src/lib/components/eye-test-audit/custom-select/custom-select.component.ts +265 -0
  131. package/src/lib/components/eye-test-audit/eye-test/eye-test.component.html +1804 -0
  132. package/src/lib/components/eye-test-audit/eye-test/eye-test.component.scss +806 -0
  133. package/src/lib/components/eye-test-audit/eye-test/eye-test.component.spec.ts +23 -0
  134. package/src/lib/components/eye-test-audit/eye-test/eye-test.component.ts +1890 -0
  135. package/src/lib/components/eye-test-audit/eye-test/send-alert/send-alert.component.html +25 -0
  136. package/src/lib/components/eye-test-audit/eye-test/send-alert/send-alert.component.scss +0 -0
  137. package/src/lib/components/eye-test-audit/eye-test/send-alert/send-alert.component.spec.ts +23 -0
  138. package/src/lib/components/eye-test-audit/eye-test/send-alert/send-alert.component.ts +20 -0
  139. package/src/lib/components/eye-test-audit/eye-test-audit/eye-test-audit-routing.module.ts +26 -0
  140. package/src/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.component.html +1 -0
  141. package/src/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.component.scss +0 -0
  142. package/src/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.component.spec.ts +23 -0
  143. package/src/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.component.ts +24 -0
  144. package/src/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.module.ts +44 -0
  145. package/src/lib/components/eye-test-audit/eye-test-audit/settings-audit/settings-audit.component.html +490 -0
  146. package/src/lib/components/eye-test-audit/eye-test-audit/settings-audit/settings-audit.component.scss +721 -0
  147. package/src/lib/components/eye-test-audit/eye-test-audit/settings-audit/settings-audit.component.spec.ts +23 -0
  148. package/src/lib/components/eye-test-audit/eye-test-audit/settings-audit/settings-audit.component.ts +1017 -0
  149. package/src/lib/components/eye-test-audit/eye-test-audit/start-audit/start-audit.component.html +708 -0
  150. package/src/lib/components/eye-test-audit/eye-test-audit/start-audit/start-audit.component.scss +247 -0
  151. package/src/lib/components/eye-test-audit/eye-test-audit/start-audit/start-audit.component.spec.ts +23 -0
  152. package/src/lib/components/eye-test-audit/eye-test-audit/start-audit/start-audit.component.ts +446 -0
  153. package/src/lib/components/eye-test-audit/group-select/group-select.component.html +44 -0
  154. package/src/lib/components/eye-test-audit/group-select/group-select.component.scss +144 -0
  155. package/src/lib/components/eye-test-audit/group-select/group-select.component.spec.ts +23 -0
  156. package/src/lib/components/eye-test-audit/group-select/group-select.component.ts +147 -0
  157. package/src/lib/components/eye-test-audit/reactive-select/reactive-select.component.html +18 -0
  158. package/src/lib/components/eye-test-audit/reactive-select/reactive-select.component.scss +49 -0
  159. package/src/lib/components/eye-test-audit/reactive-select/reactive-select.component.spec.ts +23 -0
  160. package/src/lib/components/eye-test-audit/reactive-select/reactive-select.component.ts +104 -0
  161. package/src/lib/components/eye-test-audit/select-drop/select-drop.component.html +44 -0
  162. package/src/lib/components/eye-test-audit/select-drop/select-drop.component.scss +144 -0
  163. package/src/lib/components/eye-test-audit/select-drop/select-drop.component.spec.ts +23 -0
  164. package/src/lib/components/eye-test-audit/select-drop/select-drop.component.ts +152 -0
  165. package/src/lib/components/eye-test-audit/services/eye-test-audit.service.spec.ts +16 -0
  166. package/src/lib/components/eye-test-audit/services/eye-test-audit.service.ts +190 -0
  167. package/src/lib/components/flag-layout/flag-layout.component.html +1 -0
  168. package/src/lib/components/flag-layout/flag-layout.component.scss +0 -0
  169. package/src/lib/components/flag-layout/flag-layout.component.spec.ts +23 -0
  170. package/src/lib/components/flag-layout/flag-layout.component.ts +10 -0
  171. package/src/lib/components/flags/flags.component.html +473 -0
  172. package/src/lib/components/flags/flags.component.scss +86 -0
  173. package/src/lib/components/flags/flags.component.spec.ts +23 -0
  174. package/src/lib/components/flags/flags.component.ts +280 -0
  175. package/{lib/components/flags/flags.interface.d.ts → src/lib/components/flags/flags.interface.ts} +73 -65
  176. package/src/lib/components/flags-info/flags-info.component.html +6012 -0
  177. package/src/lib/components/flags-info/flags-info.component.scss +278 -0
  178. package/src/lib/components/flags-info/flags-info.component.spec.ts +23 -0
  179. package/src/lib/components/flags-info/flags-info.component.ts +490 -0
  180. package/src/lib/components/flags-info/flags-info.interface.ts +441 -0
  181. package/src/lib/components/flags-info/unattended-pie-chart/unattended-pie-chart.component.html +1 -0
  182. package/src/lib/components/flags-info/unattended-pie-chart/unattended-pie-chart.component.scss +4 -0
  183. package/src/lib/components/flags-info/unattended-pie-chart/unattended-pie-chart.component.ts +78 -0
  184. package/src/lib/components/flags-new/flags-new.component.html +904 -0
  185. package/src/lib/components/flags-new/flags-new.component.scss +121 -0
  186. package/src/lib/components/flags-new/flags-new.component.spec.ts +23 -0
  187. package/src/lib/components/flags-new/flags-new.component.ts +357 -0
  188. package/{lib/components/flags-new/flags-new.interface.d.ts → src/lib/components/flags-new/flags-new.interface.ts} +90 -81
  189. package/src/lib/components/gallery/gallery.component.html +3660 -0
  190. package/src/lib/components/gallery/gallery.component.scss +930 -0
  191. package/src/lib/components/gallery/gallery.component.ts +3527 -0
  192. package/src/lib/components/group-select/group-select.component.html +44 -0
  193. package/src/lib/components/group-select/group-select.component.scss +144 -0
  194. package/src/lib/components/group-select/group-select.component.spec.ts +23 -0
  195. package/src/lib/components/group-select/group-select.component.ts +145 -0
  196. package/src/lib/components/image-popup/image-popup.component.html +11 -0
  197. package/src/lib/components/image-popup/image-popup.component.scss +5 -0
  198. package/src/lib/components/image-popup/image-popup.component.ts +18 -0
  199. package/src/lib/components/lib/custom-select/custom-select.component.html +42 -0
  200. package/src/lib/components/lib/custom-select/custom-select.component.scss +131 -0
  201. package/src/lib/components/lib/custom-select/custom-select.component.spec.ts +23 -0
  202. package/src/lib/components/lib/custom-select/custom-select.component.ts +151 -0
  203. package/src/lib/components/manage-task/manage-task.component.html +265 -0
  204. package/src/lib/components/manage-task/manage-task.component.scss +69 -0
  205. package/src/lib/components/manage-task/manage-task.component.spec.ts +23 -0
  206. package/src/lib/components/manage-task/manage-task.component.ts +267 -0
  207. package/src/lib/components/managechecklist/managechecklist.component.html +176 -0
  208. package/src/lib/components/managechecklist/managechecklist.component.scss +43 -0
  209. package/src/lib/components/managechecklist/managechecklist.component.spec.ts +23 -0
  210. package/src/lib/components/managechecklist/managechecklist.component.ts +176 -0
  211. package/src/lib/components/multi-chip-dropdown/multi-chip-dropdown.component.html +46 -0
  212. package/src/lib/components/multi-chip-dropdown/multi-chip-dropdown.component.scss +181 -0
  213. package/src/lib/components/multi-chip-dropdown/multi-chip-dropdown.component.spec.ts +23 -0
  214. package/src/lib/components/multi-chip-dropdown/multi-chip-dropdown.component.ts +221 -0
  215. package/src/lib/components/multi-date-datepicker/multi-date-datepicker.component.html +36 -0
  216. package/src/lib/components/multi-date-datepicker/multi-date-datepicker.component.scss +89 -0
  217. package/src/lib/components/multi-date-datepicker/multi-date-datepicker.component.spec.ts +23 -0
  218. package/src/lib/components/multi-date-datepicker/multi-date-datepicker.component.ts +118 -0
  219. package/src/lib/components/orders/orders.component.html +203 -0
  220. package/src/lib/components/orders/orders.component.scss +180 -0
  221. package/src/lib/components/orders/orders.component.spec.ts +25 -0
  222. package/src/lib/components/orders/orders.component.ts +197 -0
  223. package/src/lib/components/pagination/pagination.component.html +28 -0
  224. package/src/lib/components/pagination/pagination.component.scss +6 -0
  225. package/src/lib/components/pagination/pagination.component.spec.ts +23 -0
  226. package/src/lib/components/pagination/pagination.component.ts +54 -0
  227. package/src/lib/components/reactive-select/reactive-select.component.html +18 -0
  228. package/src/lib/components/reactive-select/reactive-select.component.scss +48 -0
  229. package/src/lib/components/reactive-select/reactive-select.component.spec.ts +23 -0
  230. package/src/lib/components/reactive-select/reactive-select.component.ts +104 -0
  231. package/src/lib/components/reports/date-picker/date-picker.component.html +54 -0
  232. package/src/lib/components/reports/date-picker/date-picker.component.scss +156 -0
  233. package/src/lib/components/reports/date-picker/date-picker.component.spec.ts +23 -0
  234. package/src/lib/components/reports/date-picker/date-picker.component.ts +60 -0
  235. package/src/lib/components/reports/reports.component.html +225 -0
  236. package/src/lib/components/reports/reports.component.scss +69 -0
  237. package/src/lib/components/reports/reports.component.spec.ts +23 -0
  238. package/src/lib/components/reports/reports.component.ts +334 -0
  239. package/{lib/components/reports/reports.interface.d.ts → src/lib/components/reports/reports.interface.ts} +50 -46
  240. package/src/lib/components/tango-analyse-trax/tango-analyse-trax.component.html +1 -0
  241. package/src/lib/components/tango-analyse-trax/tango-analyse-trax.component.scss +15 -0
  242. package/src/lib/components/tango-analyse-trax/tango-analyse-trax.component.spec.ts +23 -0
  243. package/src/lib/components/tango-analyse-trax/tango-analyse-trax.component.ts +31 -0
  244. package/src/lib/components/task/task.component.html +322 -0
  245. package/src/lib/components/task/task.component.scss +169 -0
  246. package/src/lib/components/task/task.component.spec.ts +23 -0
  247. package/src/lib/components/task/task.component.ts +340 -0
  248. package/src/lib/components/task-configure/task-configure.component.html +737 -0
  249. package/src/lib/components/task-configure/task-configure.component.scss +569 -0
  250. package/src/lib/components/task-configure/task-configure.component.spec.ts +23 -0
  251. package/src/lib/components/task-configure/task-configure.component.ts +1603 -0
  252. package/src/lib/components/task-configure/task-configure.interface.ts +138 -0
  253. package/src/lib/components/task-info/task-info.component.html +390 -0
  254. package/src/lib/components/task-info/task-info.component.scss +56 -0
  255. package/src/lib/components/task-info/task-info.component.spec.ts +23 -0
  256. package/src/lib/components/task-info/task-info.component.ts +400 -0
  257. package/src/lib/components/task-info/taskinfo-edit/taskinfo-edit.component.html +141 -0
  258. package/src/lib/components/task-info/taskinfo-edit/taskinfo-edit.component.scss +460 -0
  259. package/src/lib/components/task-info/taskinfo-edit/taskinfo-edit.component.spec.ts +23 -0
  260. package/src/lib/components/task-info/taskinfo-edit/taskinfo-edit.component.ts +202 -0
  261. package/src/lib/components/task-layout/task-layout.component.html +1 -0
  262. package/src/lib/components/task-layout/task-layout.component.scss +0 -0
  263. package/src/lib/components/task-layout/task-layout.component.spec.ts +23 -0
  264. package/src/lib/components/task-layout/task-layout.component.ts +10 -0
  265. package/src/lib/components/task-logs/task-logs.component.html +97 -0
  266. package/src/lib/components/task-logs/task-logs.component.scss +301 -0
  267. package/src/lib/components/task-logs/task-logs.component.spec.ts +23 -0
  268. package/src/lib/components/task-logs/task-logs.component.ts +80 -0
  269. package/src/lib/components/trax-run-ai-popup/trax-run-ai-popup.component.html +84 -0
  270. package/src/lib/components/trax-run-ai-popup/trax-run-ai-popup.component.scss +229 -0
  271. package/src/lib/components/trax-run-ai-popup/trax-run-ai-popup.component.spec.ts +23 -0
  272. package/src/lib/components/trax-run-ai-popup/trax-run-ai-popup.component.ts +111 -0
  273. package/src/lib/components/trax-store/trax-store.component.html +78 -0
  274. package/src/lib/components/trax-store/trax-store.component.scss +134 -0
  275. package/src/lib/components/trax-store/trax-store.component.spec.ts +23 -0
  276. package/src/lib/components/trax-store/trax-store.component.ts +172 -0
  277. package/src/lib/components/traxpopup/traxpopup.component.html +130 -0
  278. package/src/lib/components/traxpopup/traxpopup.component.scss +225 -0
  279. package/src/lib/components/traxpopup/traxpopup.component.spec.ts +23 -0
  280. package/src/lib/components/traxpopup/traxpopup.component.ts +71 -0
  281. package/src/lib/services/trax.service.spec.ts +16 -0
  282. package/src/lib/services/trax.service.ts +789 -0
  283. package/src/lib/tango-analyse-trax-routing.module.ts +151 -0
  284. package/src/lib/tango-analyse-trax.module.ts +140 -0
  285. package/{public-api.d.ts → src/public-api.ts} +6 -2
  286. package/tsconfig.lib.json +14 -0
  287. package/tsconfig.lib.prod.json +10 -0
  288. package/tsconfig.spec.json +14 -0
  289. package/esm2022/lib/components/action-centre/action-centre.component.mjs +0 -288
  290. package/esm2022/lib/components/activity-log/activity-log.component.mjs +0 -150
  291. package/esm2022/lib/components/activity-log-v2/activity-log-v2.component.mjs +0 -502
  292. package/esm2022/lib/components/activity-log-v2/log-view-popup/date-range-picker/date-range-picker.component.mjs +0 -114
  293. package/esm2022/lib/components/activity-log-v2/log-view-popup/store-user-dropdown/store-user-dropdown.component.mjs +0 -24
  294. package/esm2022/lib/components/activity-log-v2/log-view-popup/view-action/view-action.component.mjs +0 -126
  295. package/esm2022/lib/components/add-checklist/add-checklist.component.mjs +0 -2352
  296. package/esm2022/lib/components/add-checklist/checklist-popup/checklist-popup.component.mjs +0 -612
  297. package/esm2022/lib/components/add-checklist/counter/counter.component.mjs +0 -138
  298. package/esm2022/lib/components/add-multitask/add-multitask.component.mjs +0 -604
  299. package/esm2022/lib/components/add-multitask/ascending-validator.mjs +0 -11
  300. package/esm2022/lib/components/add-multitask/bulkcreationmodel/bulkcreationmodel.component.mjs +0 -297
  301. package/esm2022/lib/components/add-multitask/create-task.data.mjs +0 -372
  302. package/esm2022/lib/components/add-multitask/create-task.interface.mjs +0 -2
  303. package/esm2022/lib/components/add-multitask/unique-string-validator.mjs +0 -10
  304. package/esm2022/lib/components/add-multitask/whitespace-validator.mjs +0 -10
  305. package/esm2022/lib/components/add-task/add-task.component.mjs +0 -561
  306. package/esm2022/lib/components/add-task/ascending-validator.mjs +0 -11
  307. package/esm2022/lib/components/add-task/create-task.data.mjs +0 -372
  308. package/esm2022/lib/components/add-task/create-task.interface.mjs +0 -2
  309. package/esm2022/lib/components/add-task/unique-string-validator.mjs +0 -10
  310. package/esm2022/lib/components/add-task/whitespace-validator.mjs +0 -10
  311. package/esm2022/lib/components/approval-popup/approval-popup.component.mjs +0 -30
  312. package/esm2022/lib/components/checklist/checklist.component.mjs +0 -327
  313. package/esm2022/lib/components/checklist-configure/assign/assign.component.mjs +0 -912
  314. package/esm2022/lib/components/checklist-configure/checklist-configure.component.mjs +0 -4161
  315. package/esm2022/lib/components/checklistlayout/checklistlayout.component.mjs +0 -44
  316. package/esm2022/lib/components/chip-dropdown/chip-dropdown.component.mjs +0 -120
  317. package/esm2022/lib/components/create-task/create-task.component.mjs +0 -585
  318. package/esm2022/lib/components/create-task/create-task.data.mjs +0 -372
  319. package/esm2022/lib/components/create-task/create-task.interface.mjs +0 -2
  320. package/esm2022/lib/components/create-task/validators/ascending-validator.mjs +0 -11
  321. package/esm2022/lib/components/create-task/validators/unique-string-validator.mjs +0 -10
  322. package/esm2022/lib/components/create-task/validators/whitespace-validator.mjs +0 -10
  323. package/esm2022/lib/components/custom-select/custom-select.component.mjs +0 -240
  324. package/esm2022/lib/components/dashboard/dashboard.component.mjs +0 -532
  325. package/esm2022/lib/components/dashboard-info/dashboard-info.component.mjs +0 -741
  326. package/esm2022/lib/components/dashboard-info/monthlyperformance-datepicker/monthlyperformance-datepicker.component.mjs +0 -155
  327. package/esm2022/lib/components/dashboard-layout/dashboard-layout.component.mjs +0 -12
  328. package/esm2022/lib/components/disabled-select/disabled-select.component.mjs +0 -158
  329. package/esm2022/lib/components/export-gallery/export-gallery.component.mjs +0 -266
  330. package/esm2022/lib/components/eye-test-audit/chip-dropdown/chip-dropdown.component.mjs +0 -105
  331. package/esm2022/lib/components/eye-test-audit/custom-select/custom-select.component.mjs +0 -240
  332. package/esm2022/lib/components/eye-test-audit/eye-test/eye-test.component.mjs +0 -1733
  333. package/esm2022/lib/components/eye-test-audit/eye-test/send-alert/send-alert.component.mjs +0 -24
  334. package/esm2022/lib/components/eye-test-audit/eye-test-audit/eye-test-audit-routing.module.mjs +0 -34
  335. package/esm2022/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.component.mjs +0 -27
  336. package/esm2022/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.module.mjs +0 -71
  337. package/esm2022/lib/components/eye-test-audit/eye-test-audit/settings-audit/settings-audit.component.mjs +0 -823
  338. package/esm2022/lib/components/eye-test-audit/eye-test-audit/start-audit/start-audit.component.mjs +0 -412
  339. package/esm2022/lib/components/eye-test-audit/group-select/group-select.component.mjs +0 -157
  340. package/esm2022/lib/components/eye-test-audit/reactive-select/reactive-select.component.mjs +0 -105
  341. package/esm2022/lib/components/eye-test-audit/select-drop/select-drop.component.mjs +0 -162
  342. package/esm2022/lib/components/eye-test-audit/services/eye-test-audit.service.mjs +0 -166
  343. package/esm2022/lib/components/flag-layout/flag-layout.component.mjs +0 -12
  344. package/esm2022/lib/components/flags/flags.component.mjs +0 -263
  345. package/esm2022/lib/components/flags/flags.interface.mjs +0 -2
  346. package/esm2022/lib/components/flags-info/flags-info.component.mjs +0 -452
  347. package/esm2022/lib/components/flags-info/flags-info.interface.mjs +0 -2
  348. package/esm2022/lib/components/flags-info/unattended-pie-chart/unattended-pie-chart.component.mjs +0 -71
  349. package/esm2022/lib/components/flags-new/flags-new.component.mjs +0 -335
  350. package/esm2022/lib/components/flags-new/flags-new.interface.mjs +0 -2
  351. package/esm2022/lib/components/gallery/gallery.component.mjs +0 -3402
  352. package/esm2022/lib/components/group-select/group-select.component.mjs +0 -155
  353. package/esm2022/lib/components/image-popup/image-popup.component.mjs +0 -25
  354. package/esm2022/lib/components/lib/custom-select/custom-select.component.mjs +0 -158
  355. package/esm2022/lib/components/manage-task/manage-task.component.mjs +0 -264
  356. package/esm2022/lib/components/managechecklist/managechecklist.component.mjs +0 -186
  357. package/esm2022/lib/components/multi-chip-dropdown/multi-chip-dropdown.component.mjs +0 -229
  358. package/esm2022/lib/components/multi-date-datepicker/multi-date-datepicker.component.mjs +0 -124
  359. package/esm2022/lib/components/orders/orders.component.mjs +0 -171
  360. package/esm2022/lib/components/pagination/pagination.component.mjs +0 -62
  361. package/esm2022/lib/components/reactive-select/reactive-select.component.mjs +0 -108
  362. package/esm2022/lib/components/reports/date-picker/date-picker.component.mjs +0 -60
  363. package/esm2022/lib/components/reports/reports.component.mjs +0 -300
  364. package/esm2022/lib/components/reports/reports.interface.mjs +0 -2
  365. package/esm2022/lib/components/tango-analyse-trax/tango-analyse-trax.component.mjs +0 -32
  366. package/esm2022/lib/components/task/task.component.mjs +0 -341
  367. package/esm2022/lib/components/task-configure/task-configure.component.mjs +0 -1532
  368. package/esm2022/lib/components/task-configure/task-configure.interface.mjs +0 -2
  369. package/esm2022/lib/components/task-info/task-info.component.mjs +0 -375
  370. package/esm2022/lib/components/task-info/taskinfo-edit/taskinfo-edit.component.mjs +0 -208
  371. package/esm2022/lib/components/task-layout/task-layout.component.mjs +0 -12
  372. package/esm2022/lib/components/task-logs/task-logs.component.mjs +0 -104
  373. package/esm2022/lib/components/trax-run-ai-popup/trax-run-ai-popup.component.mjs +0 -107
  374. package/esm2022/lib/components/trax-store/trax-store.component.mjs +0 -179
  375. package/esm2022/lib/components/traxpopup/traxpopup.component.mjs +0 -70
  376. package/esm2022/lib/services/trax.service.mjs +0 -559
  377. package/esm2022/lib/tango-analyse-trax-routing.module.mjs +0 -153
  378. package/esm2022/lib/tango-analyse-trax.module.mjs +0 -221
  379. package/esm2022/public-api.mjs +0 -6
  380. package/esm2022/tango-app-ui-analyse-trax.mjs +0 -5
  381. package/fesm2022/tango-app-ui-analyse-trax.mjs +0 -28896
  382. package/fesm2022/tango-app-ui-analyse-trax.mjs.map +0 -1
  383. package/index.d.ts +0 -5
  384. package/lib/components/action-centre/action-centre.component.d.ts +0 -68
  385. package/lib/components/activity-log/activity-log.component.d.ts +0 -39
  386. package/lib/components/activity-log-v2/activity-log-v2.component.d.ts +0 -78
  387. package/lib/components/activity-log-v2/log-view-popup/date-range-picker/date-range-picker.component.d.ts +0 -24
  388. package/lib/components/activity-log-v2/log-view-popup/store-user-dropdown/store-user-dropdown.component.d.ts +0 -9
  389. package/lib/components/activity-log-v2/log-view-popup/view-action/view-action.component.d.ts +0 -34
  390. package/lib/components/add-checklist/add-checklist.component.d.ts +0 -121
  391. package/lib/components/add-checklist/checklist-popup/checklist-popup.component.d.ts +0 -45
  392. package/lib/components/add-checklist/counter/counter.component.d.ts +0 -29
  393. package/lib/components/add-multitask/add-multitask.component.d.ts +0 -102
  394. package/lib/components/add-multitask/ascending-validator.d.ts +0 -2
  395. package/lib/components/add-multitask/bulkcreationmodel/bulkcreationmodel.component.d.ts +0 -45
  396. package/lib/components/add-multitask/create-task.data.d.ts +0 -293
  397. package/lib/components/add-multitask/create-task.interface.d.ts +0 -159
  398. package/lib/components/add-multitask/unique-string-validator.d.ts +0 -2
  399. package/lib/components/add-multitask/whitespace-validator.d.ts +0 -2
  400. package/lib/components/add-task/add-task.component.d.ts +0 -89
  401. package/lib/components/add-task/ascending-validator.d.ts +0 -2
  402. package/lib/components/add-task/create-task.data.d.ts +0 -293
  403. package/lib/components/add-task/create-task.interface.d.ts +0 -161
  404. package/lib/components/add-task/unique-string-validator.d.ts +0 -2
  405. package/lib/components/add-task/whitespace-validator.d.ts +0 -2
  406. package/lib/components/approval-popup/approval-popup.component.d.ts +0 -14
  407. package/lib/components/checklist/checklist.component.d.ts +0 -40
  408. package/lib/components/checklist-configure/assign/assign.component.d.ts +0 -105
  409. package/lib/components/checklist-configure/checklist-configure.component.d.ts +0 -325
  410. package/lib/components/checklistlayout/checklistlayout.component.d.ts +0 -15
  411. package/lib/components/chip-dropdown/chip-dropdown.component.d.ts +0 -28
  412. package/lib/components/create-task/create-task.component.d.ts +0 -76
  413. package/lib/components/create-task/create-task.data.d.ts +0 -293
  414. package/lib/components/create-task/create-task.interface.d.ts +0 -163
  415. package/lib/components/create-task/validators/ascending-validator.d.ts +0 -2
  416. package/lib/components/create-task/validators/unique-string-validator.d.ts +0 -2
  417. package/lib/components/create-task/validators/whitespace-validator.d.ts +0 -2
  418. package/lib/components/custom-select/custom-select.component.d.ts +0 -35
  419. package/lib/components/dashboard/dashboard.component.d.ts +0 -80
  420. package/lib/components/dashboard-info/dashboard-info.component.d.ts +0 -117
  421. package/lib/components/dashboard-info/monthlyperformance-datepicker/monthlyperformance-datepicker.component.d.ts +0 -41
  422. package/lib/components/dashboard-layout/dashboard-layout.component.d.ts +0 -5
  423. package/lib/components/disabled-select/disabled-select.component.d.ts +0 -34
  424. package/lib/components/export-gallery/export-gallery.component.d.ts +0 -44
  425. package/lib/components/eye-test-audit/chip-dropdown/chip-dropdown.component.d.ts +0 -26
  426. package/lib/components/eye-test-audit/custom-select/custom-select.component.d.ts +0 -35
  427. package/lib/components/eye-test-audit/eye-test/eye-test.component.d.ts +0 -218
  428. package/lib/components/eye-test-audit/eye-test/send-alert/send-alert.component.d.ts +0 -12
  429. package/lib/components/eye-test-audit/eye-test-audit/eye-test-audit-routing.module.d.ts +0 -7
  430. package/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.component.d.ts +0 -11
  431. package/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.module.d.ts +0 -21
  432. package/lib/components/eye-test-audit/eye-test-audit/settings-audit/settings-audit.component.d.ts +0 -129
  433. package/lib/components/eye-test-audit/eye-test-audit/start-audit/start-audit.component.d.ts +0 -86
  434. package/lib/components/eye-test-audit/group-select/group-select.component.d.ts +0 -33
  435. package/lib/components/eye-test-audit/reactive-select/reactive-select.component.d.ts +0 -32
  436. package/lib/components/eye-test-audit/select-drop/select-drop.component.d.ts +0 -33
  437. package/lib/components/eye-test-audit/services/eye-test-audit.service.d.ts +0 -47
  438. package/lib/components/flag-layout/flag-layout.component.d.ts +0 -5
  439. package/lib/components/flags/flags.component.d.ts +0 -52
  440. package/lib/components/flags-info/flags-info.component.d.ts +0 -73
  441. package/lib/components/flags-info/flags-info.interface.d.ts +0 -430
  442. package/lib/components/flags-info/unattended-pie-chart/unattended-pie-chart.component.d.ts +0 -13
  443. package/lib/components/flags-new/flags-new.component.d.ts +0 -60
  444. package/lib/components/gallery/gallery.component.d.ts +0 -261
  445. package/lib/components/group-select/group-select.component.d.ts +0 -33
  446. package/lib/components/image-popup/image-popup.component.d.ts +0 -11
  447. package/lib/components/lib/custom-select/custom-select.component.d.ts +0 -33
  448. package/lib/components/manage-task/manage-task.component.d.ts +0 -47
  449. package/lib/components/managechecklist/managechecklist.component.d.ts +0 -33
  450. package/lib/components/multi-chip-dropdown/multi-chip-dropdown.component.d.ts +0 -40
  451. package/lib/components/multi-date-datepicker/multi-date-datepicker.component.d.ts +0 -27
  452. package/lib/components/orders/orders.component.d.ts +0 -38
  453. package/lib/components/pagination/pagination.component.d.ts +0 -16
  454. package/lib/components/reactive-select/reactive-select.component.d.ts +0 -32
  455. package/lib/components/reports/date-picker/date-picker.component.d.ts +0 -23
  456. package/lib/components/reports/reports.component.d.ts +0 -55
  457. package/lib/components/tango-analyse-trax/tango-analyse-trax.component.d.ts +0 -14
  458. package/lib/components/task/task.component.d.ts +0 -70
  459. package/lib/components/task-configure/task-configure.component.d.ts +0 -142
  460. package/lib/components/task-configure/task-configure.interface.d.ts +0 -128
  461. package/lib/components/task-info/task-info.component.d.ts +0 -76
  462. package/lib/components/task-info/taskinfo-edit/taskinfo-edit.component.d.ts +0 -61
  463. package/lib/components/task-layout/task-layout.component.d.ts +0 -5
  464. package/lib/components/task-logs/task-logs.component.d.ts +0 -27
  465. package/lib/components/trax-run-ai-popup/trax-run-ai-popup.component.d.ts +0 -26
  466. package/lib/components/trax-store/trax-store.component.d.ts +0 -45
  467. package/lib/components/traxpopup/traxpopup.component.d.ts +0 -24
  468. package/lib/services/trax.service.d.ts +0 -175
  469. package/lib/tango-analyse-trax-routing.module.d.ts +0 -7
  470. package/lib/tango-analyse-trax.module.d.ts +0 -68
@@ -0,0 +1,3660 @@
1
+ <div *ngIf="notifyCount>0" class="h-xl-100 flex-row flex-stack flex-wrap p-2">
2
+ <!-- toast card starts -->
3
+ <div class="toastcard col-md-12 mb-4">
4
+ <div class="d-flex align-items-center justify-content-between w-100">
5
+ <span class="align-items-start">
6
+ <span class="toasttext d-block"><span class="me-5">
7
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="20" viewBox="0 0 16 20" fill="none">
8
+ <path
9
+ d="M9.14234 2.4V1.6875C9.14234 1.03178 8.63166 0.5 7.99955 0.5C7.36744 0.5 6.85675 1.03178 6.85675 1.6875V2.4C4.21761 2.95033 2.28558 5.34649 2.28558 8.21875V8.91641C2.28558 10.6643 1.66918 12.3453 0.553532 13.6516L0.28869 13.9596C-0.0103044 14.3121 -0.0840396 14.8094 0.100307 15.2361C0.284654 15.6629 0.69281 15.9375 1.14279 15.9375H14.8563C15.3063 15.9375 15.7134 15.6629 15.8991 15.2361C16.0848 14.8094 16.0098 14.3121 15.7098 13.9596L15.4456 13.6516C14.3313 12.3453 13.7135 10.6643 13.7135 8.91641V8.21875C13.7135 7.94125 13.6952 7.66819 13.6597 7.40081C13.2676 7.54576 12.8432 7.625 12.4 7.625C10.4118 7.625 8.8 6.03001 8.8 4.0625C8.8 3.46778 8.88193 2.89289 9.14234 2.4C9.16417 2.40461 9.12061 2.39514 9.14234 2.4Z"
10
+ fill="#00A3FF" />
11
+ <path
12
+ d="M6.38178 18.8061C6.81033 19.2514 7.39244 19.5 7.99955 19.5C8.57452 19.5 9.18877 19.2514 9.61732 18.8061C10.0459 18.3607 10.2851 17.7225 10.2851 17.125H5.71396C5.71396 17.7225 5.95323 18.3607 6.38178 18.8061Z"
13
+ fill="#00A3FF" />
14
+ <circle cx="13" cy="3.5" r="3" fill="#F04438" />
15
+ </svg>
16
+ </span>New Detection Found! Refresh Now to view new detection</span>
17
+ </span>
18
+ <button (click)="refreshnow()" type="button"
19
+ class="btn-outline btn align-items-end text-nowrap ms-4 cursor-pointer"><svg
20
+ xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
21
+ <g clip-path="url(#clip0_12165_62781)">
22
+ <path
23
+ d="M19.1672 3.33172V8.33172M19.1672 8.33172H14.1672M19.1672 8.33172L15.3089 4.69838C14.1594 3.54817 12.6672 2.80271 11.0572 2.57434C9.44716 2.34597 7.80653 2.64706 6.38251 3.43225C4.9585 4.21744 3.82826 5.44418 3.1621 6.92761C2.49595 8.41104 2.32997 10.0708 2.68919 11.6568C3.0484 13.2427 3.91335 14.669 5.15368 15.7206C6.39401 16.7722 7.94254 17.3922 9.5659 17.4872C11.1893 17.5822 12.7995 17.147 14.154 16.2471C15.5085 15.3473 16.5339 14.0316 17.0756 12.4984"
24
+ stroke="#344054" stroke-width="1.67" stroke-linecap="round" stroke-linejoin="round" />
25
+ </g>
26
+ <defs>
27
+ <clipPath id="clip0_12165_62781">
28
+ <rect width="20" height="20" fill="white" />
29
+ </clipPath>
30
+ </defs>
31
+ </svg><span class="refreshtext ms-2"></span> Refresh Now </button>
32
+ </div>
33
+ </div>
34
+ </div>
35
+
36
+ <div class="gallery-card po">
37
+ <div class="header mb-4">Gallery</div>
38
+
39
+ <form [formGroup]="galleryForm">
40
+ <div class="row">
41
+ <div class="col-md-12">
42
+ <div class="row">
43
+ <div class="col-md-3 mb-3">
44
+ <div class="position-relative">
45
+ <span style="top: 20%;" class="svg-icon svg-icon-1 position-absolute ms-3">
46
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"
47
+ fill="none">
48
+ <path
49
+ d="M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z"
50
+ stroke="#344054" stroke-width="1.67" stroke-linecap="round"
51
+ stroke-linejoin="round" />
52
+ </svg>
53
+ </span>
54
+ <input class="fx-date-range form-control ps-14 z-2" style="min-width: 260px !important;"
55
+ type="text" matInput ngxDaterangepickerMd [drops]="'down'" [opens]="'right'"
56
+ [alwaysShowCalendars]="false" [keepCalendarOpeningWithRange]="true" [showCancel]="false"
57
+ autocomplete="off" [(ngModel)]="selectedDateRange" [ngModelOptions]="{standalone: true}"
58
+ (datesUpdated)="datechange($event)" (click)="resetValidation()"
59
+ (startDateChanged)="onStartDateChange($event)" [isCustomDate]="isCustomDate"
60
+ [autoApply]="true"
61
+ [locale]="{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }"
62
+ name="daterange" [readonly]="true" />
63
+ </div>
64
+ </div>
65
+ <div class="col-md-2 mb-4">
66
+ <lib-reactive-select formControlName="type" [idField]="'value'" [nameField]="'label'"
67
+ [data]="type" (itemChange)="typeChange($event)"></lib-reactive-select>
68
+ </div>
69
+ <div class="col-md-4 mb-4">
70
+ <lib-single-select [items]="checklists" [multi]="false" [searchField]="'checkListName'"
71
+ [idField]="'_id'" (selected)="checklistNamechange($event,false)"
72
+ [selectedValues]="[{checkListName:galleryForm.get('checklistName')?.value}]"></lib-single-select>
73
+ </div>
74
+ <div class="col-md-3 mb-4">
75
+ <lib-reactive-select formControlName="answerType" [isDisabled]="!showflag" [idField]="'value'"
76
+ [nameField]="'label'" [data]="answerType"></lib-reactive-select>
77
+ </div>
78
+ <div class="col-md-2 mb-4">
79
+
80
+ <lib-reactive-select formControlName="filtertype" [idField]="'value'" [nameField]="'label'"
81
+ [data]="filtertype" (itemChange)="filterChange($event)"></lib-reactive-select>
82
+
83
+ </div>
84
+ <div class="col-md-3 mb-4" *ngIf="galleryForm.get('filtertype')?.value ==='Clusters'">
85
+ <div class="select-wrapper">
86
+ <div class="placeholder-overlay" *ngIf="!(galleryForm.get('ClusterList')?.value?.length)">
87
+ Select cluster
88
+ </div>
89
+ <lib-group-select [items]="ClusterList" [disabled]="false" [multi]="true"
90
+ [searchField]="'groupName'" [idField]="'groupName'" (selected)="ongroupSelect($event)"
91
+ [selectedValues]="galleryForm.get('ClusterList')?.value">
92
+ </lib-group-select>
93
+ </div>
94
+
95
+ </div>
96
+ <div class="col-md-3 mb-4" *ngIf="galleryForm.get('filtertype')?.value ==='Teams'">
97
+ <div class="select-wrapper">
98
+ <div class="placeholder-overlay" *ngIf="!(galleryForm.get('TeamsList')?.value?.length)">
99
+ Select Teams
100
+ </div>
101
+ <lib-group-select [items]="TeamsList" [disabled]="false" [multi]="true"
102
+ [searchField]="'teamName'" [idField]="'teamName'" (selected)="onTeamsSelect($event)"
103
+ [selectedValues]="galleryForm.get('TeamsList')?.value">
104
+ </lib-group-select>
105
+ </div>
106
+
107
+ </div>
108
+ <div class="col-md-3 mb-4" *ngIf="galleryForm.get('filtertype')?.value ==='Clusters'">
109
+ <div class="select-wrapper">
110
+ <div class="placeholder-overlay" *ngIf="!(galleryForm.get('storeList')?.value?.length)">
111
+ Select Stores
112
+ </div>
113
+ <lib-stores-select [items]="storeList" [disabled]="false" [multi]="true"
114
+ [searchField]="'storeName'" [idField]="'storeId'" (selected)="onStoreSelect($event)"
115
+ [selectedValues]="galleryForm.get('storeList')?.value"></lib-stores-select>
116
+ </div>
117
+ </div>
118
+ <div class="col-md-3 mb-4" *ngIf="galleryForm.get('filtertype')?.value ==='Teams'">
119
+ <div class="select-wrapper">
120
+ <div class="placeholder-overlay" *ngIf="!(galleryForm.get('userList')?.value?.length)">
121
+ Select users
122
+ </div>
123
+ <lib-stores-select [items]="userList" [disabled]="false" [multi]="true"
124
+ [searchField]="'userName'" [idField]="'userName'" (selected)="onUserSelect($event)"
125
+ [selectedValues]="galleryForm.get('userList')?.value"></lib-stores-select>
126
+ </div>
127
+ </div>
128
+ <div class="col-md-4 text-end">
129
+ <div class="d-flex justify-content-end">
130
+ <div class="me-5 w-100" *ngIf="select === 'eyetest'">
131
+ <select class="form-select" [(ngModel)]="category"
132
+ [ngModelOptions]="{standalone: true}">
133
+ <option value="all">All</option>
134
+ <option value="adults">Adults</option>
135
+ <option value="kids">Kids</option>
136
+ </select>
137
+ </div>
138
+
139
+ <div class="me-5 w-100"
140
+ *ngIf="select === 'cleaning' || select ==='scrum' || select ==='storeopenandclose' || select == 'mobileusagedetection' || select == 'uniformdetection' || select == 'storehygienemonitoring'">
141
+ <select class="form-select" [(ngModel)]="category"
142
+ [ngModelOptions]="{standalone: true}">
143
+ <option value="all">All</option>
144
+ <option value="Breached">Breached</option>
145
+ <option value="Not Breached" *ngIf="!['uniformdetection','mobileusagedetection','storehygienemonitoring'].includes(select)">Not Breached</option>
146
+ <option value="Offline">Offline</option>
147
+ </select>
148
+ </div>
149
+ <div class="me-5 w-100"
150
+ *ngIf="galleryForm.value.sourceCheckList_id === 'halfshutter'||galleryForm.value.sourceCheckList_id === 'tvcompliance'">
151
+ <select class="form-select" [(ngModel)]="category" (change)="onfilterChange($event)"
152
+ [ngModelOptions]="{standalone: true}">
153
+ <option value="all">All</option>
154
+ <option value="Breached">Breached</option>
155
+ <option value="Not Breached">Not Breached</option>
156
+ <option value="Files Not Received">Files Not Received</option>
157
+ </select>
158
+ </div>
159
+ <div class="me-5 w-100" *ngIf="select === 'outsidebusinesshoursqueuetracking'">
160
+ <select class="form-select" [(ngModel)]="category"
161
+ [ngModelOptions]="{standalone: true}">
162
+ <option value="all">All</option>
163
+ <option value="Detected">Detected</option>
164
+ <option value="Not Detected">Not Detected</option>
165
+ <option value="Offline">Offline</option>
166
+ </select>
167
+ </div>
168
+ <div class="me-5 w-100 text-start" *ngIf="select === 'queuealert'">
169
+ <div class="select-wrapper">
170
+ <div class="placeholder-overlay"
171
+ *ngIf="!(galleryForm.get('zoneList')?.value?.length)">
172
+ Select Zone
173
+ </div>
174
+ <lib-stores-select [items]="zoneList" [disabled]="false" [multi]="true"
175
+ [searchField]="'value'" [idField]="'key'" (selected)="onzoneSelect($event)"
176
+ [selectedValues]="galleryForm.get('zoneList')?.value"></lib-stores-select>
177
+ </div>
178
+ </div>
179
+ <div class="me-5 w-50" *ngIf="showflag">
180
+ <select class="form-select" (change)="approveFilterChange($event)"
181
+ [(ngModel)]="approveFilter" [ngModelOptions]="{standalone: true}">
182
+ <option value="all">All</option>
183
+ <option value="Approved">Approved</option>
184
+ <option value="notapproved">Not-Approved</option>
185
+ </select>
186
+ </div>
187
+ <span class="me-4 mt-3" *ngIf="showflag">
188
+ <input formControlName="viewRedo" change type="checkbox" (click)="redoChanged($event)"
189
+ class="form-check-input cursor-pointer mt-1 me-2" id="viewRedo">
190
+ <label class="checkbox-label" for="viewRedo">Re-do</label>
191
+ </span>
192
+ <span class="me-3 mt-3" *ngIf="showflag&&galleryForm.value.type==='checklist'">
193
+ <input formControlName="viewFlag" change type="checkbox" (click)="flagChanged($event)"
194
+ class="form-check-input cursor-pointer mt-1 me-2" id="viewFlag">
195
+ <label class="checkbox-label" for="viewFlag">Flag</label>
196
+ </span>
197
+
198
+ <a (click)="onSubmit()" type="submit" class="btn btn-primary px-4 "><span>Apply</span></a>
199
+ <!-- <a (click)="notify([])" type="submit" class="btn btn-primary px-4 "><span>test</span></a> -->
200
+ </div>
201
+
202
+ </div>
203
+ </div>
204
+ </div>
205
+
206
+
207
+ </div>
208
+ </form>
209
+ </div>
210
+ <div class="card my-2">
211
+ <div class="row main-container my-5 ">
212
+
213
+ <div [ngClass]="showsidenav ? 'col-md-4 left-sidebar':'d-none'" class="h-650px">
214
+ <div class="position-relative h-650px scroll-y">
215
+ <div class="card-body p-5">
216
+ <div class="checklist-left">
217
+ <div class="checklist-title">{{checklistName}}</div>
218
+ <div class="checklist-text">{{checkListDescription}}</div>
219
+ </div>
220
+ <div *ngIf="loading" class="row loader d-flex justify-content-center align-items-center">
221
+ <div class="shimmer">
222
+ <div class="wrapper">
223
+ <div class="stroke animate title"></div>
224
+ <div class="stroke animate link"></div>
225
+ <div class="stroke animate description"></div>
226
+ </div>
227
+ </div>
228
+ <div class="shimmer">
229
+ <div class="wrapper">
230
+ <div class="stroke animate title"></div>
231
+ <div class="stroke animate link"></div>
232
+ <div class="stroke animate description"></div>
233
+ </div>
234
+ </div>
235
+ </div>
236
+ <div *ngIf="noData&&select === 'custom' || noData&&select === 'task'" class="row mt-20">
237
+ <div class="col-lg-12 mt-20 mb-3">
238
+ <div class="card-body d-flex justify-content-center align-items-center flex-column">
239
+ <img class="w-75 h-300px" src="./assets/tango/Icons/Nodata1.svg" alt="">
240
+ <div class="nodata-title mt-0">No data found</div>
241
+ <div class="nodata-sub">There is no result for this checklist</div>
242
+ </div>
243
+ </div>
244
+ </div>
245
+
246
+ <div *ngIf="noData&&select !== 'custom'&&select !== 'task'" class="row mt-20">
247
+ <div class="col-lg-12 mt-20 mb-3">
248
+ <div class="card-body mt-20 d-flex justify-content-center align-items-center flex-column">
249
+ <img class="img-src mt-5 w-40" src="./assets/tango/Icons/Nodata2.svg" alt="">
250
+ <div class="nodata-title">No Detections found</div>
251
+ <div class="nodata-sub">There is no breaches for the selected period</div>
252
+ </div>
253
+ </div>
254
+ </div>
255
+
256
+ <section *ngIf="!noData && !loading">
257
+
258
+ <div *ngIf="select === 'custom'||select === 'task'">
259
+ <div class="text-end mt-10">
260
+ <!-- <button class="btn btn-outline w-25 me-3 btn-resize" (click)="viewChecklists()"> Reset </button> -->
261
+ <button class="btn btn-outline w-25 me-3 btn-resize"
262
+ *ngIf="selectedSection.length>0||tempselectedSection.length>0"
263
+ (click)="onchecklistreset()"> Reset </button>
264
+ <button *ngIf="selectedSection.length>0||tempselectedSection.length>0"
265
+ class="btn btn-primary w-25 btn-resize"
266
+ (click)="selectsinglequestion()">Apply</button>
267
+ </div>
268
+ <div class="my-6" [ngClass]="selectedSection.length===0 ? 'view-all':'view-questions'"
269
+ style="cursor: pointer;" (click)="onchecklistreset()">
270
+ View All Answers
271
+ </div>
272
+ <div class="mx-2" *ngFor="let section of checklistData; let i=index;">
273
+ <div class="d-flex align-items-center justify-content-between mt-4"
274
+ style="cursor: pointer;" (click)="accordian(i)">
275
+ <div class="fs-4 fw-bold section" *ngIf="galleryForm.value.type==='checklist'">
276
+ {{section.sectionName}} {{getSectionCompliance(section.sectionName)}}</div>
277
+ <hr class="mx-2">
278
+ <svg class="cursor-pointer" [ngClass]="{'rotate' : show !== i}"
279
+ xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 20 20"
280
+ fill="none">
281
+ <path d="M5 7.5L10 12.5L15 7.5" stroke="#667085" stroke-width="1.67"
282
+ stroke-linecap="round" stroke-linejoin="round" />
283
+ </svg>
284
+ </div>
285
+ <div *ngIf="show===i" class="question-left">
286
+ <div cdkDropList [cdkDropListData]="section.questions">
287
+ <div *ngFor="let question of section.questions;let j=index;"
288
+ class="d-flex my-2 q-btn" cdkDrag>
289
+ <input id="label" [(ngModel)]="question.checked"
290
+ (click)="selectedQuestion($event,section,question)"
291
+ class="form-check-input cursor-pointer mt-2 me-4" type="checkbox">
292
+ <div class="editablecontent" [ngClass]="question?.checked ? 'view-all':''"
293
+ style="cursor: pointer;">
294
+ {{question.qno}} . {{question.qname}}
295
+ </div>
296
+
297
+ </div>
298
+
299
+ </div>
300
+ </div>
301
+ </div>
302
+ </div>
303
+ <!-- </div> -->
304
+ <div *ngIf="combinedChecklist.includes(select)">
305
+ <div class="text-end mt-10">
306
+ <button class="btn btn-outline w-25 me-3 btn-resize" (click)="onreset()"> Reset
307
+ </button>
308
+ <button class="btn btn-primary w-25 btn-resize" (click)="onview()">Apply</button>
309
+ </div>
310
+ <div class="dropdownselect h-900px scroll-y">
311
+ <div class="d-flex justify-content-left "
312
+ [ngClass]="selectAll ? 'backgroundBorder':'withoutbackground'">
313
+ <input class="form-check-input cursor-pointer me-4" type="checkbox"
314
+ [(ngModel)]="selectAll" (click)="selectAllStore($event)"> <span
315
+ [ngClass]="selectAll ? 'usage-detection':'usage-text'">Select All</span>
316
+ </div>
317
+ <!-- dropdownbg -->
318
+ <div class="my-4" *ngFor="let list of mobileusageDataList;let i=index">
319
+ <div (change)="updateCheck($event,list)"
320
+ [ngClass]="list.checked ? 'backgroundBorder':'withoutbackground'">
321
+ <input id="label{{i}}" class="form-check-input cursor-pointer me-4"
322
+ type="checkbox" [(ngModel)]="list.checked">
323
+ <label for="label{{i}}"
324
+ [ngClass]="list.checked ? 'usage-detection':'usage-text'">{{list?.storeName}}</label>
325
+ <span class="badge badge-light-primary detectionright"
326
+ *ngIf="list.detection">{{list.detection}} Detections</span>
327
+ </div>
328
+ </div>
329
+ </div>
330
+ </div>
331
+ </section>
332
+
333
+ </div>
334
+
335
+
336
+
337
+
338
+
339
+ <div *ngIf="showsidenav" (click)="sidenav()" class="backButtonright text-center pt-1 cursor-pointer">
340
+ <svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 24 24" fill="none">
341
+ <path d="M11 17L6 12L11 7M18 17L13 12L18 7" stroke="#101828" stroke-width="2"
342
+ stroke-linecap="round" stroke-linejoin="round" />
343
+ </svg>
344
+ </div>
345
+ </div>
346
+ </div>
347
+ <div
348
+ [ngClass]="showsidenav ? 'col-md-8 border border-bottom-0 border-top-0 border-left border-5 right-sidebar':'col-md-12'">
349
+ <div class="position-relative h-1000px scroll-y">
350
+ <!-- (select === 'custom' || select === 'task'||select === 'cleaning'||select ==='scrum'||select ==='storeopenandclose'||select ==='inventorycount'||select ==='carsattended'||select ==='numberplateinfo') -->
351
+ <div class="card-header border-0 px-0 my-0"
352
+ *ngIf="(select === 'custom' || select === 'task' || headerFilters?.client === '452'||headerFilters?.client === '459'||headerFilters?.client === '396' || headerFilters?.client === '430' || headerFilters?.client === '11') && !viewloading && !viewnoData">
353
+ <h3 *ngIf="!showsingle || (gs.userAccess | async)?.userType === 'tango'||!allapprovalStatus"></h3>
354
+
355
+ <div class=" m-3"
356
+ *ngIf="showsingle&&(gs.userAccess | async)?.userType !== 'tango'&& (gs.userAccess | async)?.TangoTrax_Task_isEdit&&allapprovalStatus">
357
+ <div class="form-check">
358
+ <input [(ngModel)]="selectAllTask"
359
+ (click)="selectedAllTask($event,viewChecklistsData?.checklistAnswers[0],viewChecklistsData?.checklistAnswers[0].questionAnswer[0].questions[0],viewChecklistsData?.checklistAnswers[0]?.checklistInfo,viewChecklistsData?.checklistAnswers[0].questionAnswer[0])"
360
+ class="form-check-input" type="checkbox" value="" id="flexCheckDefault">
361
+ <label class="ms-2" for="flexCheckDefault">
362
+ Select All <span *ngIf="selectedRecordCount">({{selectedRecordCount}} Records
363
+ Selected)</span>
364
+ </label>
365
+ </div>
366
+
367
+
368
+
369
+ </div>
370
+ <div class="card-toolbar">
371
+ <div class="me-4"
372
+ *ngIf="showsingle&&select ==='custom'&&(gs.userAccess | async)?.userType !== 'tango'&&this.galleryForm.value.type!=='task'">
373
+ <span *ngIf="selectedUsers.length>0||selectedStores.length>0" class="icon-btn"
374
+ (click)="createMultipleTask('task')">
375
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"
376
+ fill="none">
377
+ <path
378
+ d="M11.6654 1.66797H4.9987C4.55667 1.66797 4.13275 1.84356 3.82019 2.15612C3.50763 2.46868 3.33203 2.89261 3.33203 3.33464V16.668C3.33203 17.11 3.50763 17.5339 3.82019 17.8465C4.13275 18.159 4.55667 18.3346 4.9987 18.3346H14.9987C15.4407 18.3346 15.8646 18.159 16.1772 17.8465C16.4898 17.5339 16.6654 17.11 16.6654 16.668V6.66797M11.6654 1.66797L16.6654 6.66797M11.6654 1.66797V6.66797H16.6654M9.9987 15.0013V10.0013M7.4987 12.5013H12.4987"
379
+ stroke="#344054" stroke-width="1.67" stroke-linecap="round"
380
+ stroke-linejoin="round" />
381
+ </svg>
382
+
383
+ <span class="btn-text">Create Task</span>
384
+ </span>
385
+
386
+ </div>
387
+
388
+ <div class="me-4"
389
+ *ngIf="showsingle&&select ==='custom'&&(gs.userAccess | async)?.userType !=='tango'||this.select === 'task'&&showsingle&&(gs.userAccess | async)?.userType !== 'tango'">
390
+ <span *ngIf="selectedUsers.length>0||selectedStores.length>0"
391
+ (click)="createMultipleTask('redo')" class="icon-btn">
392
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="18" viewBox="0 0 20 18"
393
+ fill="none">
394
+ <path
395
+ d="M19.1654 2.33527V7.33527M19.1654 7.33527H14.1654M19.1654 7.33527L15.2987 3.70193C14.4031 2.80586 13.2951 2.15127 12.078 1.79925C10.861 1.44722 9.57462 1.40923 8.33894 1.68882C7.10325 1.96841 5.95853 2.55646 5.01159 3.39812C4.06464 4.23977 3.34634 5.30759 2.9237 6.50193M0.832031 15.6686V10.6686M0.832031 10.6686H5.83203M0.832031 10.6686L4.6987 14.3019C5.59432 15.198 6.70234 15.8526 7.91937 16.2046C9.1364 16.5567 10.4228 16.5946 11.6585 16.3151C12.8941 16.0355 14.0389 15.4474 14.9858 14.6058C15.9328 13.7641 16.6511 12.6963 17.0737 11.5019"
396
+ stroke="#344054" stroke-width="2" stroke-linecap="round"
397
+ stroke-linejoin="round" />
398
+ </svg>
399
+ <span class="btn-text">Redo</span>
400
+ </span>
401
+ </div>
402
+ <div class="me-4"
403
+ *ngIf="showsingle&&select ==='custom'&&(gs.userAccess | async)?.userType !=='tango'||this.select === 'task'&&showsingle&&(gs.userAccess | async)?.userType !== 'tango'">
404
+ <span *ngIf="selectedUsers.length>0||selectedStores.length>0"
405
+ (click)="exportDet($event)" class="icon-btn">
406
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
407
+ <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"/>
408
+ <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"/>
409
+ </svg>
410
+ <span class="btn-text">Export</span>
411
+ </span>
412
+ <div *ngIf="exportShow"
413
+ class="card py-2 position-absolute productdrop top-10 w-150px end-0 z-1">
414
+ <ul class="list-unstyled mb-2">
415
+ <li class="cursor-pointer py-4 checkbox-label mx-2"
416
+ *ngIf="pdfExportTypes.includes(select)" type="button"
417
+ (click)="setExportAsPPT('Export as PDF','pdf')">
418
+ Export as PDF
419
+ </li>
420
+ <li class=" cursor-pointer checkbox-label py-4 mx-2"
421
+ *ngIf="csvExportTypes.includes(select)" type="button"
422
+ (click)="setExportAsPPT('Export as CSV','csv')">
423
+ Export as CSV
424
+ </li>
425
+ <!-- ||select === 'cleaning'||select ==='scrum'||select ==='storeopenandclose'||select ==='inventorycount'||select ==='carsattended'||select ==='numberplateinfo' -->
426
+ <li *ngIf="selectedSection.length >0"
427
+ class=" cursor-pointer checkbox-label py-4 mx-2" type="button"
428
+ (click)="setExportAsPPT('Export as PPT','ppt')">
429
+ Export as PPT
430
+ </li>
431
+ <!-- ||select === 'cleaning'||select ==='scrum'||select ==='storeopenandclose' -->
432
+ <li *ngIf="selectedSection.length >0"
433
+ class="cursor-pointer checkbox-label py-4 mx-2" type="button"
434
+ (click)="setExportAsPPT('Export as ZIP','zipfiles')">
435
+ Export as ZIP
436
+ </li>
437
+ </ul>
438
+ </div>
439
+ </div>
440
+ <div class="position-relative cursor-pointer me-10" *ngIf="!galleryForm.value.viewRedo&&selectedUsers.length===0&&selectedStores.length===0">
441
+ <div *ngIf="!['tvcompliance','cameratampering','queuealert','mobileusagedetection','halfshutter','storeopenandclose','uniformdetection','storehygienemonitoring','staffgrouping','employeeCount','boxalert'].includes(galleryForm.value.sourceCheckList_id)"
442
+ class=" btn btn-primary form-control no-text-transform" (click)="exportDet($event)">
443
+ {{ exportLabel }}
444
+ </div>
445
+ <div *ngIf="exportConfig?.enabled &&['tvcompliance','cameratampering','queuealert','mobileusagedetection','halfshutter','storeopenandclose','uniformdetection','storehygienemonitoring','staffgrouping','employeeCount','boxalert'].includes(galleryForm.value.sourceCheckList_id)"
446
+ class=" btn btn-primary form-control no-text-transform" (click)="exportDet($event)">
447
+ {{ exportLabel }} <!-- Bind label text here -->
448
+ </div>
449
+ <div *ngIf="exportShow"
450
+ class="card py-2 position-absolute productdrop top-10 w-150px end-0 z-1">
451
+ <ul class="list-unstyled mb-2">
452
+ <li class="cursor-pointer py-4 checkbox-label mx-2"
453
+ *ngIf="pdfExportTypes.includes(select) &&!['halfshutter','tvcompliance','cameratampering','queuealert','mobileusagedetection','storeopenandclose','uniformdetection','storehygienemonitoring','staffgrouping','employeeCount','boxalert'].includes(galleryForm.value.sourceCheckList_id)" type="button"
454
+ (click)="setExportAsPPT('Export as PDF','pdf')">
455
+ Export as PDF
456
+ </li>
457
+ <li class=" cursor-pointer checkbox-label py-4 mx-2"
458
+ *ngIf="pdfExportTypes.includes(select) &&!['halfshutter','tvcompliance','cameratampering','queuealert','mobileusagedetection','storeopenandclose','uniformdetection','storehygienemonitoring','staffgrouping','employeeCount','boxalert'].includes(galleryForm.value.sourceCheckList_id)" type="button"
459
+ (click)="setExportAsPPT('Export as CSV','csv')">
460
+ Export as CSV
461
+ </li>
462
+ <!-- ||select === 'cleaning'||select ==='scrum'||select ==='storeopenandclose'||select ==='inventorycount'||select ==='carsattended'||select ==='numberplateinfo' -->
463
+ <li *ngIf="selectedSection.length >0"
464
+ class=" cursor-pointer checkbox-label py-4 mx-2" type="button"
465
+ (click)="setExportAsPPT('Export as PPT','ppt')">
466
+ Export as PPT
467
+ </li>
468
+ <!-- ||select === 'cleaning'||select ==='scrum'||select ==='storeopenandclose' -->
469
+ <li *ngIf="selectedSection.length >0"
470
+ class="cursor-pointer checkbox-label py-4 mx-2" type="button"
471
+ (click)="setExportAsPPT('Export as ZIP','zipfiles')">
472
+ Export as ZIP
473
+ </li>
474
+ <li *ngIf="exportConfig?.enabled &&exportConfig?.format?.includes('PDF') && ['halfshutter','tvcompliance','cameratampering','queuealert','mobileusagedetection','storeopenandclose','uniformdetection','storehygienemonitoring','staffgrouping','employeeCount','boxalert'].includes(galleryForm?.value?.sourceCheckList_id)"
475
+ class="cursor-pointer py-4 checkbox-label mx-2" type="button"
476
+ (click)="setExportAsPPT('Export as PDF','pdf')">
477
+ Export as PDF
478
+ </li>
479
+ <li *ngIf="exportConfig?.enabled &&exportConfig?.format?.includes('CSV') && ['halfshutter','tvcompliance','cameratampering','queuealert','mobileusagedetection','storeopenandclose','uniformdetection','storehygienemonitoring','staffgrouping','employeeCount','boxalert'].includes(galleryForm?.value?.sourceCheckList_id)"
480
+ class=" cursor-pointer checkbox-label py-4 mx-2" type="button"
481
+ (click)="setExportAsPPT('Export as CSV','csv')">
482
+ Export as CSV
483
+ </li>
484
+ <li *ngIf="exportConfig?.enabled &&exportConfig?.format?.includes('PPT') && ['halfshutter','tvcompliance','cameratampering','queuealert','mobileusagedetection','storeopenandclose','uniformdetection','storehygienemonitoring','staffgrouping','employeeCount','boxalert'].includes(galleryForm?.value?.sourceCheckList_id)"
485
+ class=" cursor-pointer checkbox-label py-4 mx-2" type="button"
486
+ (click)="setExportAsPPT('Export as PPT','ppt')">
487
+ Export as PPT
488
+ </li>
489
+ <li *ngIf="galleryForm.value.sourceCheckList_id === 'halfshutter' && exportConfig?.enabled && exportConfig?.format?.includes('ZIP')"
490
+ class="cursor-pointer checkbox-label py-4 mx-2" type="button"
491
+ (click)="setExportAsPPT('Export as ZIP','zipfiles')">
492
+ Export as ZIP
493
+ </li>
494
+ </ul>
495
+ </div>
496
+ </div>
497
+
498
+ </div>
499
+ </div>
500
+
501
+ <div class="card-body p-0">
502
+ <div>
503
+ <div *ngIf="viewloading" class="row loader d-flex justify-content-center align-items-center">
504
+ <div class="shimmer">
505
+ <div class="wrapper">
506
+ <div class="stroke animate title"></div>
507
+ <div class="stroke animate link"></div>
508
+ <div class="stroke animate description"></div>
509
+ </div>
510
+ </div>
511
+ <div class="shimmer">
512
+ <div class="wrapper">
513
+ <div class="stroke animate title"></div>
514
+ <div class="stroke animate link"></div>
515
+ <div class="stroke animate description"></div>
516
+ </div>
517
+ </div>
518
+ </div>
519
+
520
+ <div *ngIf="viewnoData&&select !== 'custom'&&select !== 'task'" class="row mt-20">
521
+ <div class="col-lg-12 mt-20 mb-3">
522
+ <div
523
+ class="card-body mt-20 d-flex justify-content-center align-items-center flex-column">
524
+ <img class="img-src mt-5 w-40" src="./assets/tango/Icons/Nodata2.svg" alt="">
525
+ <div class="nodata-title">No Detections found</div>
526
+ <div class="nodata-sub">There is no breaches for the selected period</div>
527
+ </div>
528
+ </div>
529
+ </div>
530
+ <div *ngIf="viewnoData&&select === 'custom' || viewnoData&&select === 'task'" class="row mt-20">
531
+ <div class="col-lg-12 mt-20 mb-3">
532
+ <div
533
+ class="card-body mt-20 d-flex justify-content-center align-items-center flex-column">
534
+ <img class="img-src mt-5 w-40" src="./assets/tango/Icons/Nodata1.svg" alt="">
535
+ <div class="nodata-title">No data found</div>
536
+ <div class="nodata-sub">There is no result for this checklist</div>
537
+ </div>
538
+ </div>
539
+ </div>
540
+ <section *ngIf="!viewloading && !viewnoData">
541
+ <div *ngIf="select==='custom'||select==='task' ">
542
+ <div *ngIf="showsingle" class="qa-heading m-3 mx-11">
543
+ {{this.selectedSection[0]?.questions[0]}}</div>
544
+ <div *ngIf="showsingle&&showfilter">
545
+ <ul
546
+ class="nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap mx-10">
547
+ <li class="nav-item" *ngFor="let item of answerFilter">
548
+ <a (click)="taskTab(item)"
549
+ [ngClass]="galleryForm.value.filter === item.key ? 'active' : ''"
550
+ class="nav-link cursor-pointer no-border me-3">
551
+ {{item.key}}<span class="mx-2 "
552
+ [ngClass]="galleryForm.value.filter === item.key ? 'badge-num-primary' :'badge-num-muted'">{{item.count}}</span>
553
+ </a>
554
+ </li>
555
+
556
+ </ul>
557
+
558
+ </div>
559
+
560
+ <div *ngFor="let checklist of viewChecklistsData?.checklistAnswers">
561
+
562
+ <div class="text-center" *ngIf="clientData.logo&&clientData.logo!==''&&showmulti">
563
+ <img class="mt-5 mb-3 text-center iconsize" src="{{clientData.logo}}">
564
+ </div>
565
+
566
+
567
+ <div class="row px-10 mt-5" *ngIf="showmulti">
568
+ <div class="col-md-3">
569
+ <h3 class="uni-title">Store Name:</h3>
570
+ </div>
571
+ <div class="col-md-9">
572
+ <p class="uni-subtitle">{{checklist?.storeProfile?.storeName}} </p>
573
+ </div>
574
+ <div class="col-md-3">
575
+ <h3 class="uni-title" *ngIf="galleryForm.value.type==='checklist'">Checklist
576
+ Name:</h3>
577
+ <h3 class="uni-title" *ngIf="galleryForm.value.type==='task'">Task Name:
578
+ </h3>
579
+
580
+ </div>
581
+ <div class="col-md-9">
582
+ <p class="uni-subtitle">{{checklist?.checklistInfo?.checklistName}}</p>
583
+ </div>
584
+
585
+ <ng-container>
586
+ <div class="col-md-3">
587
+ <h3 class="uni-title">State & Country :</h3>
588
+ </div>
589
+ <div class="col-md-4">
590
+ <p class="uni-subtitle">{{checklist?.storeProfile?.state}}<span *ngIf="checklist?.storeProfile?.state">, </span>
591
+ {{checklist?.storeProfile?.Country}}</p>
592
+ </div>
593
+ <div class="col-md-2">
594
+ <h3 class="uni-title">Duration :</h3>
595
+ </div>
596
+ <div class="col-md-3">
597
+ <p class="uni-subtitle"> {{checklist?.checklistInfo?.duration}}</p>
598
+ </div>
599
+ <div class="col-md-3">
600
+ <h3 class="uni-title">No. of Questions :</h3>
601
+ </div>
602
+ <div class="col-md-4">
603
+ <p class="uni-subtitle">{{checklist?.checklistInfo?.noofQuestions}}</p>
604
+ </div>
605
+ <div class="col-md-2">
606
+ <h3 class="uni-title">Date :</h3>
607
+ </div>
608
+ <div class="col-md-3">
609
+ <p class="uni-subtitle"> {{checklist?.checklistInfo?.date}}</p>
610
+ </div>
611
+ <div class="col-md-3">
612
+ <h3 class="uni-title">Submitted By :</h3>
613
+ </div>
614
+ <div class="col-md-4">
615
+ <p class="uni-subtitle">{{checklist?.checklistInfo?.submittedBy}}</p>
616
+ </div>
617
+ <div class="col-md-2">
618
+ <h3 class="uni-title">Time :</h3>
619
+ </div>
620
+ <div class="col-md-3">
621
+ <p class="uni-subtitle"> {{checklist?.checklistInfo?.time}}</p>
622
+ </div>
623
+ </ng-container>
624
+
625
+ </div>
626
+
627
+
628
+ <div class="row px-10">
629
+ <div *ngFor="let section of checklist.questionAnswer;let si = index">
630
+ <div [id]="si+'_'+qi" class="qa-bodrer my-5" *ngFor="let question of section.questions; let qi = index">
631
+ <div class="row" *ngIf="question.redo||question.redo===false">
632
+ <div class="view-detail col-12 text-end cursor-pointer"
633
+ (click)="ViewInDetails(question,checklist?.checklistInfo,checklist?.storeProfile,section)">
634
+ View in detail
635
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20"
636
+ viewBox="0 0 20 20" fill="none">
637
+ <path
638
+ 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"
639
+ stroke="#009BF3" stroke-width="1.67"
640
+ stroke-linecap="round" stroke-linejoin="round" />
641
+ </svg>
642
+ </div>
643
+ </div>
644
+ <div class="row w-100 m-3">
645
+
646
+ <div class="col-md-1" style="width:3.3333%"
647
+ *ngIf="showsingle&&(gs.userAccess | async)?.userType !== 'tango'&&!checklist?.checklistInfo?.approvalStatus&& (gs.userAccess | async)?.TangoTrax_Task_isEdit">
648
+ <input id="label" [(ngModel)]="question.checked"
649
+ [disabled]="question.redo&&question.task"
650
+ (click)="selectmultiTask($event,checklist,question,checklist?.checklistInfo,section)"
651
+ class="form-check-input cursor-pointer mt-2 me-4"
652
+ type="checkbox">
653
+ </div>
654
+ <div class="col-md-3 text-title"
655
+ *ngIf="showsingle&&galleryForm.get('filtertype')?.value ==='Clusters'">
656
+ {{checklist?.storeProfile?.storeName}}
657
+ </div>
658
+ <div class="col-md-3 text-title"
659
+ *ngIf="showsingle&&galleryForm.get('filtertype')?.value ==='Teams'">
660
+ {{checklist?.storeProfile?.userName}}
661
+ </div>
662
+ <div class="col-md-8 text-end title-description" *ngIf="showsingle">
663
+ Submitted by : {{checklist?.checklistInfo?.submittedBy}} On :
664
+ {{checklist?.checklistInfo?.date}}
665
+ {{checklist?.checklistInfo?.time}}
666
+ </div>
667
+ </div>
668
+ <ul>
669
+ <li *ngIf="showmulti" class="qa-heading">
670
+ <div class="d-flex justify-content-between">
671
+ <div>
672
+ {{question?.qno}}.{{question?.qname}}
673
+ </div>
674
+ <div *ngIf="question.compliance">
675
+ <div class="badge scoreBadge p-5">Score:{{compliance(question)}}</div>
676
+ </div>
677
+ </div>
678
+ </li>
679
+
680
+ <div class="Partially my-3 px-5"
681
+ *ngIf="question?.answerType==='descriptive'">
682
+ <div *ngFor="let item of question.userAnswer;let i=index">
683
+ <div class="col-md-6">
684
+ <ng-container
685
+ *ngIf="galleryForm.value.type === 'checklist' && hasMultiQuestionReferenceImages(question); else noMultiImage">
686
+ <div class="title-ref my-3">Question Reference Image</div>
687
+ <div class="collage-grid"
688
+ [ngStyle]="{ 'grid-template-columns': getGridColumns(question.multiQuestionReferenceImage.length) }">
689
+ <ng-container
690
+ *ngFor="let item of question.multiQuestionReferenceImage;let i=index">
691
+ <div class="collage-tile"
692
+ *ngIf="isValidImage(item)">
693
+ <img class="cursor-pointer"
694
+ (click)="openMultiImagePopup(getMultiRefImageUrls(question.multiQuestionReferenceImage),getRefImageNames(question.multiQuestionReferenceImage),i)"
695
+ [src]="environment.TraxAnswerCDN + item.imageURL"
696
+ alt="Reference image">
697
+ </div>
698
+ </ng-container>
699
+ </div>
700
+ </ng-container>
701
+ <ng-template #noMultiImage>
702
+ <div
703
+ *ngIf="galleryForm.value.type === 'checklist' && question.questionReferenceImage && question.questionReferenceImage !== ''">
704
+ <div class="title-ref my-3">Question Reference Image
705
+ </div>
706
+ <div class="collage-grid">
707
+ <div class="collage-tile">
708
+ <img class="img-logo cursor-pointer"
709
+ (click)="openImagePopup1(environment.TraxAnswerCDN + question.questionReferenceImage,0)"
710
+ [src]="environment.TraxAnswerCDN + question.questionReferenceImage"
711
+ alt="">
712
+ </div>
713
+ </div>
714
+ </div>
715
+ </ng-template>
716
+ <ng-container
717
+ *ngIf="galleryForm.value.type === 'task' && hasQuestionReferenceImages(question)">
718
+ <div class="title-ref my-3">Question Reference Image</div>
719
+ <div class="collage-grid"
720
+ [ngStyle]="{ 'grid-template-columns': getGridColumns(question.questionReferenceImage.length) }">
721
+ <ng-container
722
+ *ngFor="let item of question.questionReferenceImage;let i=index">
723
+ <div class="collage-tile"
724
+ *ngIf="isValidImage(item)">
725
+ <img class="cursor-pointer"
726
+ (click)="openImagePopup(getRefImageUrls(question.questionReferenceImage),getRefImageNames(question.questionReferenceImage),i)"
727
+ [src]="environment.TraxAnswerCDN + item"
728
+ alt="Reference image">
729
+ </div>
730
+ </ng-container>
731
+ </div>
732
+ </ng-container>
733
+ </div>
734
+
735
+ <span class="mt-2"
736
+ [ngClass]="item.sopFlag ? 'flagclour':''">{{item.answer}}</span>
737
+ <div class="remarksTxt" *ngIf="question.remarks">
738
+ Remarks : {{question.remarks}}</div>
739
+ </div>
740
+ </div>
741
+
742
+ <div class="Partially my-3 px-5"
743
+ *ngIf="question?.answerType==='linearscale'">
744
+ <div *ngFor="let item of question.userAnswer;let i=index">
745
+ <div class="col-md-6"
746
+ *ngIf="hasMultiQuestionReferenceImages(question) || (question.questionReferenceImage !== '' && question.questionReferenceImage !== null)">
747
+ <ng-container
748
+ *ngIf="galleryForm.value.type === 'checklist' && hasMultiQuestionReferenceImages(question); else noMultiImage">
749
+ <div class="title-ref my-3">Question Reference Image</div>
750
+ <div class="collage-grid"
751
+ [ngStyle]="{ 'grid-template-columns': getGridColumns(question.multiQuestionReferenceImage.length) }">
752
+ <ng-container
753
+ *ngFor="let item of question.multiQuestionReferenceImage;let i=index">
754
+ <div class="collage-tile"
755
+ *ngIf="isValidImage(item)">
756
+ <img class="cursor-pointer"
757
+ (click)="openMultiImagePopup(getMultiRefImageUrls(question.multiQuestionReferenceImage),getRefImageNames(question.multiQuestionReferenceImage),i)"
758
+ [src]="environment.TraxAnswerCDN + item.imageURL"
759
+ alt="Reference image">
760
+ </div>
761
+ </ng-container>
762
+ </div>
763
+ </ng-container>
764
+ <ng-template #noMultiImage>
765
+ <div
766
+ *ngIf="galleryForm.value.type==='checklist' && question.questionReferenceImage !== '' && question.questionReferenceImage !== null">
767
+ <div class="title-ref my-3">Question Reference Image
768
+ </div>
769
+ <img class="img-logo cursor-pointer"
770
+ (click)="openImagePopup1(environment.TraxAnswerCDN + question.questionReferenceImage,0)"
771
+ src="{{environment.TraxAnswerCDN}}{{question.questionReferenceImage}}"
772
+ alt="">
773
+ </div>
774
+ </ng-template>
775
+ </div>
776
+ <div class="col-md-6">
777
+ <!-- Question Reference Images -->
778
+ <ng-container
779
+ *ngIf="galleryForm.value.type === 'task' && hasQuestionReferenceImages(question)">
780
+ <div class="title-ref my-3">Question Reference Image</div>
781
+ <div class="collage-grid"
782
+ [ngStyle]="{ 'grid-template-columns': getGridColumns(question.questionReferenceImage.length) }">
783
+ <ng-container
784
+ *ngFor="let item of question.questionReferenceImage;let i=index">
785
+ <div class="collage-tile"
786
+ *ngIf="isValidImage(item)">
787
+ <img class="cursor-pointer"
788
+ (click)="openImagePopup(getRefImageUrls(question.questionReferenceImage),getRefImageNames(question.questionReferenceImage),i)"
789
+ [src]="environment.TraxAnswerCDN + item"
790
+ alt="Reference image">
791
+ </div>
792
+ </ng-container>
793
+ </div>
794
+ </ng-container>
795
+ </div>
796
+ <!-- <br> -->
797
+ <span class="mt-4"
798
+ [ngClass]="item.sopFlag ? 'flagclour':''">{{item.answer}}<ng-container *ngIf="question?.answers && question.answers[0]?.linearType === 'percentage'">%</ng-container><ng-container *ngIf="question?.answers && question.answers[0]?.linearType === 'degree'">°C</ng-container></span>
799
+ <div class="remarksTxt" *ngIf="question.remarks">
800
+ Remarks : {{question.remarks}}</div>
801
+ </div>
802
+ </div>
803
+
804
+ <div class="Partially my-3 px-5"
805
+ *ngIf="question?.answerType==='time'">
806
+ <div *ngFor="let item of question.userAnswer;let i=index">
807
+ <div class="col-md-6"
808
+ *ngIf="hasMultiQuestionReferenceImages(question) || (question.questionReferenceImage && question.questionReferenceImage !== '')">
809
+ <ng-container
810
+ *ngIf="galleryForm.value.type === 'checklist' && hasMultiQuestionReferenceImages(question); else noMultiImage">
811
+ <div class="title-ref my-3">Question Reference Image</div>
812
+ <div class="collage-grid"
813
+ [ngStyle]="{ 'grid-template-columns': getGridColumns(question.multiQuestionReferenceImage.length) }">
814
+ <ng-container
815
+ *ngFor="let item of question.multiQuestionReferenceImage;let i=index">
816
+ <div class="collage-tile"
817
+ *ngIf="isValidImage(item)">
818
+ <img class="cursor-pointer"
819
+ (click)="openMultiImagePopup(getMultiRefImageUrls(question.multiQuestionReferenceImage),getRefImageNames(question.multiQuestionReferenceImage),i)"
820
+ [src]="environment.TraxAnswerCDN + item.imageURL"
821
+ alt="Reference image">
822
+ </div>
823
+ </ng-container>
824
+ </div>
825
+ </ng-container>
826
+ <ng-template #noMultiImage>
827
+ <div
828
+ *ngIf="galleryForm.value.type === 'checklist' && question.questionReferenceImage && question.questionReferenceImage !== ''">
829
+ <div class="title-ref my-3">Question Reference Image
830
+ </div>
831
+ <div class="collage-grid"
832
+ [ngStyle]="{ 'grid-template-columns': getGridColumns(1) }">
833
+ <div class="collage-tile">
834
+ <img class="cursor-pointer"
835
+ (click)="openImagePopup1(environment.TraxAnswerCDN + question.questionReferenceImage,0)"
836
+ [src]="environment.TraxAnswerCDN + question.questionReferenceImage"
837
+ alt="">
838
+ </div>
839
+ </div>
840
+ </div>
841
+ </ng-template>
842
+ </div>
843
+ <div class="col-md-6">
844
+ <ng-container
845
+ *ngIf="galleryForm.value.type === 'task' && hasQuestionReferenceImages(question)">
846
+ <div class="title-ref my-3">Question Reference Image</div>
847
+ <div class="collage-grid"
848
+ [ngStyle]="{ 'grid-template-columns': getGridColumns(question.questionReferenceImage.length) }">
849
+ <ng-container
850
+ *ngFor="let item of question.questionReferenceImage;let i=index">
851
+ <div class="collage-tile"
852
+ *ngIf="isValidImage(item)">
853
+ <img class="cursor-pointer"
854
+ (click)="openImagePopup(getRefImageUrls(question.questionReferenceImage),getRefImageNames(question.questionReferenceImage),i)"
855
+ [src]="environment.TraxAnswerCDN + item"
856
+ alt="Reference image">
857
+ </div>
858
+ </ng-container>
859
+ </div>
860
+ </ng-container>
861
+ </div>
862
+ <br>
863
+ <span class="mt-4"
864
+ [ngClass]="item.sopFlag ? 'flagclour':''">{{item.answer}}</span>
865
+ <div class="remarksTxt" *ngIf="question.remarks">
866
+ Remarks : {{question.remarks}}</div>
867
+ </div>
868
+ </div>
869
+
870
+ <div class="Partially my-3 px-5"
871
+ *ngIf="question?.answerType==='date'">
872
+ <div *ngFor="let item of question.userAnswer;let i=index">
873
+ <div class="col-md-6"
874
+ *ngIf="hasMultiQuestionReferenceImages(question) || (question.questionReferenceImage && question.questionReferenceImage !== '')">
875
+ <ng-container
876
+ *ngIf="galleryForm.value.type === 'checklist' && hasMultiQuestionReferenceImages(question); else noMultiImage">
877
+ <div class="title-ref my-3">Question Reference Image</div>
878
+ <div class="collage-grid"
879
+ [ngStyle]="{ 'grid-template-columns': getGridColumns(question.multiQuestionReferenceImage.length) }">
880
+ <ng-container
881
+ *ngFor="let item of question.multiQuestionReferenceImage;let i=index">
882
+ <div class="collage-tile"
883
+ *ngIf="isValidImage(item)">
884
+ <img class="cursor-pointer"
885
+ (click)="openMultiImagePopup(getMultiRefImageUrls(question.multiQuestionReferenceImage),getRefImageNames(question.multiQuestionReferenceImage),i)"
886
+ [src]="environment.TraxAnswerCDN + item.imageURL"
887
+ alt="Reference image">
888
+ </div>
889
+ </ng-container>
890
+ </div>
891
+ </ng-container>
892
+ <ng-template #noMultiImage>
893
+ <div
894
+ *ngIf="galleryForm.value.type==='checklist' && question.questionReferenceImage !== '' && question.questionReferenceImage !== null">
895
+ <div class="title-ref my-3">Question Reference Image
896
+ </div>
897
+ <img class="img-logo cursor-pointer"
898
+ (click)="openImagePopup1(environment.TraxAnswerCDN + question.questionReferenceImage,0)"
899
+ src="{{environment.TraxAnswerCDN}}{{question.questionReferenceImage}}"
900
+ alt="">
901
+ </div>
902
+ </ng-template>
903
+ </div>
904
+ <div class="col-md-6">
905
+ <ng-container
906
+ *ngIf="galleryForm.value.type === 'task' && hasQuestionReferenceImages(question)">
907
+ <div class="title-ref my-3">Question Reference Image</div>
908
+ <div class="collage-grid"
909
+ [ngStyle]="{ 'grid-template-columns': getGridColumns(question.questionReferenceImage.length) }">
910
+ <ng-container
911
+ *ngFor="let item of question.questionReferenceImage;let i=index">
912
+ <div class="collage-tile"
913
+ *ngIf="isValidImage(item)">
914
+ <img class="cursor-pointer"
915
+ (click)="openImagePopup(getRefImageUrls(question.questionReferenceImage),getRefImageNames(question.questionReferenceImage),i)"
916
+ [src]="environment.TraxAnswerCDN + item"
917
+ alt="Reference image">
918
+ </div>
919
+ </ng-container>
920
+ </div>
921
+ </ng-container>
922
+ </div>
923
+ <br>
924
+ <span class="mt-4"
925
+ [ngClass]="item.sopFlag ? 'flagclour':''">{{item.answer}}</span>
926
+ <div class="remarksTxt" *ngIf="question.remarks">
927
+ Remarks : {{question.remarks}}</div>
928
+ </div>
929
+ </div>
930
+
931
+ <div class="Partially my-3 px-5"
932
+ *ngIf="question?.answerType==='dropdown'">
933
+ <div class="col-md-6"
934
+ *ngIf="hasMultiQuestionReferenceImages(question) || (question.questionReferenceImage && question.questionReferenceImage !== '')">
935
+ <ng-container
936
+ *ngIf="galleryForm.value.type === 'checklist' && hasMultiQuestionReferenceImages(question); else noMultiImage">
937
+ <div class="title-ref my-3">Question Reference Image</div>
938
+ <div class="collage-grid"
939
+ [ngStyle]="{ 'grid-template-columns': getGridColumns(question.multiQuestionReferenceImage.length) }">
940
+ <ng-container
941
+ *ngFor="let ref of question.multiQuestionReferenceImage;let ri=index">
942
+ <div class="collage-tile"
943
+ *ngIf="isValidImage(ref)">
944
+ <img class="cursor-pointer"
945
+ (click)="openMultiImagePopup(getMultiRefImageUrls(question.multiQuestionReferenceImage),getRefImageNames(question.multiQuestionReferenceImage),ri)"
946
+ [src]="environment.TraxAnswerCDN + ref.imageURL"
947
+ alt="Reference image">
948
+ </div>
949
+ </ng-container>
950
+ </div>
951
+ </ng-container>
952
+ <ng-template #noMultiImage>
953
+ <div
954
+ *ngIf="galleryForm.value.type==='checklist' && question.questionReferenceImage !== '' && question.questionReferenceImage !== null">
955
+ <div class="title-ref my-3">Question Reference Image</div>
956
+ <img class="img-logo cursor-pointer"
957
+ (click)="openImagePopup1(environment.TraxAnswerCDN + question.questionReferenceImage,0)"
958
+ src="{{environment.TraxAnswerCDN}}{{question.questionReferenceImage}}"
959
+ alt="">
960
+ </div>
961
+ </ng-template>
962
+ </div>
963
+ <div class="col-md-6">
964
+ <ng-container
965
+ *ngIf="galleryForm.value.type === 'task' && hasQuestionReferenceImages(question)">
966
+ <div class="title-ref my-3">Question Reference Image</div>
967
+ <div class="collage-grid"
968
+ [ngStyle]="{ 'grid-template-columns': getGridColumns(question.questionReferenceImage.length) }">
969
+ <ng-container
970
+ *ngFor="let ref of question.questionReferenceImage;let ri=index">
971
+ <div class="collage-tile"
972
+ *ngIf="isValidImage(ref)">
973
+ <img class="cursor-pointer"
974
+ (click)="openImagePopup(getRefImageUrls(question.questionReferenceImage),getRefImageNames(question.questionReferenceImage),ri)"
975
+ [src]="environment.TraxAnswerCDN + ref"
976
+ alt="Reference image">
977
+ </div>
978
+ </ng-container>
979
+ </div>
980
+ </ng-container>
981
+ </div>
982
+ <div *ngFor="let item of question.userAnswer;let i=index">
983
+ <span class="mt-2" [ngClass]="item.sopFlag ? 'flagclour':''">{{item.answer}}</span>
984
+ <div class="col-md-6"
985
+ *ngIf="hasMultiReferenceImages(item) || (item.referenceImage && item.referenceImage !== '')">
986
+ <ng-container
987
+ *ngIf="galleryForm.value.type === 'checklist' && hasMultiReferenceImages(item); else noMultiImage">
988
+ <div class="title-ref my-3">Reference Image
989
+ </div>
990
+ <div class="collage-grid"
991
+ [ngStyle]="{ 'grid-template-columns': getGridColumns(item.multiReferenceImage.length) }">
992
+ <ng-container
993
+ *ngFor="let reffItem of item.multiReferenceImage;let i=index">
994
+ <div class="collage-tile"
995
+ *ngIf="isValidImage(reffItem)">
996
+ <img class="cursor-pointer"
997
+ (click)="openMultiImagePopup(getMultiRefImageUrls(item.multiReferenceImage),getRefImageNames(item.multiReferenceImage),i)"
998
+ [src]="environment.TraxAnswerCDN + reffItem.imageURL"
999
+ alt="Reference image">
1000
+ </div>
1001
+ </ng-container>
1002
+ </div>
1003
+ </ng-container>
1004
+ <ng-template #noMultiImage>
1005
+ <div
1006
+ *ngIf="item.referenceImage!==null&&item.referenceImage!==''&&galleryForm.value.type==='checklist'">
1007
+ <div class="title-ref my-3">Reference Image
1008
+ </div>
1009
+ <img class="img-logo cursor-pointer"
1010
+ (click)="openImagePopup1(environment.TraxAnswerCDN + item.referenceImage,0)"
1011
+ src="{{environment.TraxAnswerCDN}}{{item.referenceImage}}"
1012
+ alt="">
1013
+ </div>
1014
+ </ng-template>
1015
+ </div>
1016
+ <div [ngClass]="item.validationType==='Capture Image'?'col-md-6':'col-md-12'"
1017
+ *ngIf="item.validation && item.validationAnswer && ['Capture Video','Descriptive Answer','Capture Image'].includes(item.validationType)">
1018
+ <div class="title-ref my-3 d-flex justify-content-between"
1019
+ *ngIf="item.validationType==='Capture Image'">
1020
+ <span>Validation Answer</span>
1021
+ <span *ngIf="checkDetectionStatus(item?.runAIData).keyPresent">
1022
+ <span class="badge"
1023
+ [ngClass]="checkDetectionStatus(item?.runAIData).keyValue ? 'bgSuccess' : 'bgDanger'">
1024
+ {{ checkDetectionStatus(item?.runAIData).keyValue ? 'Matched' : 'Not Matched' }}
1025
+ </span>
1026
+ </span>
1027
+ </div>
1028
+ <img class="img-logo cursor-pointer"
1029
+ (click)="openImagePopup1((item.runAIAnswer) ? environment.traxRunAiCDN + item.runAIAnswer : environment.TraxAnswerCDN + item.validationAnswer,0)"
1030
+ *ngIf="item.validationType==='Capture Image'"
1031
+ [src]="(item.runAIAnswer) ? environment.traxRunAiCDN + item.runAIAnswer : environment.TraxAnswerCDN + item.validationAnswer"
1032
+ alt="">
1033
+ <div class="position-relative w-100 h-450px p-3"
1034
+ *ngIf="item.validationType==='Capture Video'">
1035
+ <video controls class="w-100 h-100"
1036
+ [src]="environment.TraxAnswerCDN + item.validationAnswer"></video>
1037
+ </div>
1038
+ <span *ngIf="item.validationType==='Descriptive Answer'"
1039
+ [ngClass]="item.sopFlag ? 'flagclour':''">
1040
+ Validation Answer : {{item.validationAnswer}}
1041
+ </span>
1042
+ </div>
1043
+ <!-- <div class="row mt-3" *ngIf="question?.allowMultiple">
1044
+ <div class="col-12 text-end">
1045
+ <button class="btn btn-sm btn-default border-default me-3"
1046
+ [disabled]="isAnswerRedoDone(question, item)"
1047
+ *ngIf="checktodayDate(checklist?.checklistInfo?.date)&&(gs.userAccess | async)?.userType !== 'tango'&&!checklist?.checklistInfo?.approvalStatus&&(gs.userAccess | async)?.TangoTrax_checklist_isEdit&&this.galleryForm.value.type ==='checklist'&&selectedStores.length===0&&selectedUsers.length===0"
1048
+ (click)="addTask('redo',question,checklist?.checklistInfo,checklist?.storeProfile,section,si+'_'+qi,item)">
1049
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
1050
+ <path d="M19.1693 3.33331V8.33332M19.1693 8.33332H14.1693M19.1693 8.33332L15.3026 4.69998C14.407 3.80391 13.299 3.14932 12.0819 2.79729C10.8649 2.44527 9.57853 2.40727 8.34284 2.68686C7.10716 2.96645 5.96244 3.55451 5.01549 4.39616C4.06855 5.23782 3.35024 6.30564 2.9276 7.49998M0.835938 16.6666V11.6666M0.835938 11.6666H5.83594M0.835938 11.6666L4.7026 15.3C5.59823 16.1961 6.70625 16.8506 7.92328 17.2027C9.14031 17.5547 10.4267 17.5927 11.6624 17.3131C12.898 17.0335 14.0428 16.4455 14.9897 15.6038C15.9367 14.7621 16.655 13.6943 17.0776 12.5" stroke="#344054" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
1051
+ </svg>
1052
+ <span class="ms-2 font-defult-task">Redo</span>
1053
+ </button>
1054
+
1055
+ </div>
1056
+ </div> -->
1057
+ </div>
1058
+ <div class="remarksTxt" *ngIf="question.remarks">
1059
+ Remarks : {{question.remarks}}</div>
1060
+ </div>
1061
+
1062
+ <div class="Partially my-3 px-5" *ngIf="question?.answerType === 'yes/no'">
1063
+ <div class="row" *ngFor="let item of question.userAnswer; let i = index">
1064
+
1065
+ <!-- 🟩 LEFT COLUMN -->
1066
+ <div class="col-md-6">
1067
+
1068
+ <!-- CHECKLIST MULTI REFERENCE IMAGES -->
1069
+ <ng-container *ngIf="galleryForm.value.type === 'checklist'">
1070
+ <ng-container *ngIf="hasMultiQuestionReferenceImages(question); else singleChecklistRef">
1071
+ <div class="title-ref my-3">Question Reference Image</div>
1072
+ <div
1073
+ class="collage-grid"
1074
+ [ngStyle]="{
1075
+ 'grid-template-columns': getGridColumns(question.multiQuestionReferenceImage.length)
1076
+ }"
1077
+ >
1078
+ <ng-container *ngFor="let ref of question.multiQuestionReferenceImage; let ri = index">
1079
+ <div class="collage-tile" *ngIf="isValidImage(ref)">
1080
+ <img
1081
+ class="cursor-pointer"
1082
+ (click)="openMultiImagePopup(
1083
+ getMultiRefImageUrls(question.multiQuestionReferenceImage),
1084
+ getRefImageNames(question.multiQuestionReferenceImage),
1085
+ ri
1086
+ )"
1087
+ [src]="environment.TraxAnswerCDN + ref.imageURL"
1088
+ alt="Reference image"
1089
+ />
1090
+ </div>
1091
+ </ng-container>
1092
+ </div>
1093
+ </ng-container>
1094
+
1095
+ <ng-template #singleChecklistRef>
1096
+ <div
1097
+ *ngIf="question.questionReferenceImage"
1098
+ class="title-ref my-3"
1099
+ >
1100
+ Question Reference Image
1101
+ </div>
1102
+ <img
1103
+ *ngIf="question.questionReferenceImage"
1104
+ class="img-logo cursor-pointer"
1105
+ (click)="openImagePopup1(environment.TraxAnswerCDN + question.questionReferenceImage, 0)"
1106
+ [src]="environment.TraxAnswerCDN + question.questionReferenceImage"
1107
+ alt="Reference image"
1108
+ />
1109
+ </ng-template>
1110
+ </ng-container>
1111
+
1112
+ <!-- TASK REFERENCE IMAGES -->
1113
+ <ng-container *ngIf="galleryForm.value.type === 'task' && hasQuestionReferenceImages(question)">
1114
+ <div class="title-ref my-3">Question Reference Image</div>
1115
+ <div
1116
+ class="collage-grid"
1117
+ [ngStyle]="{
1118
+ 'grid-template-columns': getGridColumns(question.questionReferenceImage.length)
1119
+ }"
1120
+ >
1121
+ <ng-container *ngFor="let img of question.questionReferenceImage; let ti = index">
1122
+ <div class="collage-tile" *ngIf="isValidImage(img)">
1123
+ <img
1124
+ class="cursor-pointer"
1125
+ (click)="openImagePopup(
1126
+ getRefImageUrls(question.questionReferenceImage),
1127
+ getRefImageNames(question.questionReferenceImage),
1128
+ ti
1129
+ )"
1130
+ [src]="environment.TraxAnswerCDN + img"
1131
+ alt="Reference image"
1132
+ />
1133
+ </div>
1134
+ </ng-container>
1135
+ </div>
1136
+ </ng-container>
1137
+ <div>
1138
+ <span class="mt-4" [ngClass]="item.sopFlag ? 'flagclour' : ''">
1139
+ {{ item.answer }}
1140
+ </span>
1141
+ </div>
1142
+ </div>
1143
+
1144
+ <!-- 🟦 RIGHT COLUMN -->
1145
+ <div class="col-md-6">
1146
+ <ng-container *ngIf="galleryForm.value.type === 'checklist'">
1147
+ <ng-container *ngIf="hasMultiReferenceImages(item); else singleItemRef">
1148
+ <div class="title-ref my-3">Reference Image</div>
1149
+ <div
1150
+ class="collage-grid"
1151
+ [ngStyle]="{
1152
+ 'grid-template-columns': getGridColumns(item.multiReferenceImage.length)
1153
+ }"
1154
+ >
1155
+ <ng-container *ngFor="let reffItem of item.multiReferenceImage; let mi = index">
1156
+ <div class="collage-tile" *ngIf="isValidImage(reffItem)">
1157
+ <img
1158
+ class="cursor-pointer"
1159
+ (click)="openMultiImagePopup(
1160
+ getMultiRefImageUrls(item.multiReferenceImage),
1161
+ getRefImageNames(item.multiReferenceImage),
1162
+ mi
1163
+ )"
1164
+ [src]="environment.TraxAnswerCDN + reffItem.imageURL"
1165
+ alt="Reference image"
1166
+ />
1167
+ </div>
1168
+ </ng-container>
1169
+ </div>
1170
+ </ng-container>
1171
+
1172
+ <ng-template #singleItemRef>
1173
+ <div *ngIf="item.referenceImage" class="title-ref my-3">Reference Image</div>
1174
+ <img
1175
+ *ngIf="item.referenceImage"
1176
+ class="img-logo cursor-pointer"
1177
+ (click)="openImagePopup1(environment.TraxAnswerCDN + item.referenceImage, 0)"
1178
+ [src]="environment.TraxAnswerCDN + item.referenceImage"
1179
+ alt="Reference image"
1180
+ />
1181
+ </ng-template>
1182
+ </ng-container>
1183
+
1184
+ <!-- VALIDATION BLOCK -->
1185
+ <ng-container *ngIf="item.validation && item.validationAnswer !== ''">
1186
+ <div class="title-ref my-3 d-flex justify-content-between"
1187
+ *ngIf="item.validationType === 'Capture Image' || item.validationType === 'Capture Video'">
1188
+ <span>Validation Answer</span>
1189
+ <span *ngIf="checkDetectionStatus(question.userAnswer?.[0]?.runAIData).keyPresent">
1190
+ <span class="badge"
1191
+ [ngClass]="checkDetectionStatus(question.userAnswer?.[0]?.runAIData).keyValue ? 'bgSuccess' : 'bgDanger'">
1192
+ {{
1193
+ checkDetectionStatus(question.userAnswer?.[0]?.runAIData).keyValue
1194
+ ? 'Matched'
1195
+ : 'Not Matched'
1196
+ }}
1197
+ </span>
1198
+ </span>
1199
+ </div>
1200
+
1201
+ <!-- VALIDATION: IMAGE -->
1202
+ <img
1203
+ *ngIf="item.validationType === 'Capture Image'"
1204
+ class="img-logo cursor-pointer"
1205
+ (click)="openImagePopup1(
1206
+ item.runAIAnswer ? environment.traxRunAiCDN + item.runAIAnswer : environment.TraxAnswerCDN + item.validationAnswer,
1207
+ 0
1208
+ )"
1209
+ [src]="
1210
+ item.runAIAnswer
1211
+ ? environment.traxRunAiCDN + item.runAIAnswer
1212
+ : environment.TraxAnswerCDN + item.validationAnswer
1213
+ "
1214
+ alt="Validation image"
1215
+ />
1216
+
1217
+ <!-- VALIDATION: VIDEO -->
1218
+ <div *ngIf="item.validationType === 'Capture Video'" class="position-relative w-100 h-450px p-3">
1219
+ <video controls class="w-100 h-100" [src]="environment.TraxAnswerCDN + item.validationAnswer"></video>
1220
+ </div>
1221
+
1222
+ <!-- VALIDATION: TEXT -->
1223
+ <div *ngIf="item.validationType === 'Descriptive Answer'" class="remarksTxt">
1224
+ Validation Answer: {{ item.validationAnswer }}
1225
+ </div>
1226
+ </ng-container>
1227
+
1228
+ <!-- ITEM REFERENCE IMAGES (inside validation) -->
1229
+
1230
+ <!-- REMARKS -->
1231
+ <div *ngIf="question.remarks" class="remarksTxt">
1232
+ Remarks : {{ question.remarks }}
1233
+ </div>
1234
+
1235
+ <!-- AI DATA -->
1236
+ <div *ngIf="question.userAnswer?.[0]?.runAIData?.length">
1237
+ <div class="remarksTxt" *ngFor="let aiDataItem of question.userAnswer?.[0]?.runAIData">
1238
+ <span>
1239
+ @if(aiDataItem?.lableName && aiDataItem?.lableName !== 'detectionStatus') {
1240
+ <b>{{ aiDataItem?.lableName }} :</b>
1241
+ {{ aiDataItem?.value?.toString()?.padStart(2, '0') }}
1242
+ }
1243
+ @else {
1244
+ @for (result of aiDataItem.results; track $index) {
1245
+ @if(result?.lableName !== 'detectionStatus') {
1246
+ <b>{{ result?.lableName }} :</b>
1247
+ {{ result?.value?.toString()?.padStart(2, '0') }}
1248
+ }
1249
+ }
1250
+ }
1251
+ </span>
1252
+ </div>
1253
+ </div>
1254
+ </div>
1255
+ </div>
1256
+ </div>
1257
+
1258
+
1259
+ <div class="Partially my-3 px-5"
1260
+ *ngIf="question?.answerType==='multiplechoicesingle'">
1261
+ <div class="col-md-6"
1262
+ *ngIf="galleryForm.value.type === 'checklist' && (hasMultiQuestionReferenceImages(question) || (question.questionReferenceImage && question.questionReferenceImage !== ''))">
1263
+ <ng-container
1264
+ *ngIf="galleryForm.value.type === 'checklist' && hasMultiQuestionReferenceImages(question); else noMultiImage">
1265
+ <div class="title-ref my-3">Question Reference Image</div>
1266
+ <div class="collage-grid"
1267
+ [ngStyle]="{ 'grid-template-columns': getGridColumns(question.multiQuestionReferenceImage.length) }">
1268
+ <ng-container
1269
+ *ngFor="let item of question.multiQuestionReferenceImage;let i=index">
1270
+ <div class="collage-tile"
1271
+ *ngIf="isValidImage(item)">
1272
+ <img class="cursor-pointer"
1273
+ (click)="openMultiImagePopup(getMultiRefImageUrls(question.multiQuestionReferenceImage),getRefImageNames(question.multiQuestionReferenceImage),i)"
1274
+ [src]="environment.TraxAnswerCDN + item.imageURL"
1275
+ alt="Reference image">
1276
+ </div>
1277
+ </ng-container>
1278
+ </div>
1279
+ </ng-container>
1280
+ <ng-template #noMultiImage>
1281
+ <div
1282
+ *ngIf="galleryForm.value.type==='checklist' && question.questionReferenceImage !== null && question.questionReferenceImage !== '' && question.questionReferenceImage !== undefined">
1283
+ <div class="title-ref my-3">Reference Image</div>
1284
+ <img class="img-logo cursor-pointer"
1285
+ (click)="openImagePopup1(environment.TraxAnswerCDN + question.questionReferenceImage,0)"
1286
+ src="{{environment.TraxAnswerCDN}}{{question.questionReferenceImage}}"
1287
+ alt="">
1288
+ </div>
1289
+ </ng-template>
1290
+ </div>
1291
+
1292
+ <div class="col-md-6" *ngIf="galleryForm.value.type === 'task'">
1293
+ <ng-container
1294
+ *ngIf="galleryForm.value.type === 'task' && hasQuestionReferenceImages(question)">
1295
+ <div class="title-ref my-3">Reference Image</div>
1296
+ <div class="collage-grid"
1297
+ [ngStyle]="{ 'grid-template-columns': getGridColumns(question.questionReferenceImage.length) }">
1298
+ <ng-container
1299
+ *ngFor="let item of question.questionReferenceImage;let i=index">
1300
+ <div class="collage-tile"
1301
+ *ngIf="isValidImage(item)">
1302
+ <img class="cursor-pointer"
1303
+ (click)="openImagePopup(getRefImageUrls(question.questionReferenceImage),getRefImageNames(question.questionReferenceImage),i)"
1304
+ [src]="environment.TraxAnswerCDN + item"
1305
+ alt="Reference image">
1306
+ </div>
1307
+ </ng-container>
1308
+ </div>
1309
+ </ng-container>
1310
+ </div>
1311
+ <div *ngFor="let item of question.userAnswer;let i=index">
1312
+ <span class="mt-2"
1313
+ [ngClass]="item.sopFlag ? 'flagclour':''">{{item.answer}}</span>
1314
+ <div class="row">
1315
+ <div class="col-md-6"
1316
+ *ngIf="hasMultiReferenceImages(item) || (item.referenceImage && item.referenceImage !== '')">
1317
+ <ng-container
1318
+ *ngIf="galleryForm.value.type === 'checklist' && hasMultiReferenceImages(item); else noMultiImage">
1319
+ <div class="title-ref my-3">Reference Image
1320
+ </div>
1321
+ <div class="collage-grid"
1322
+ [ngStyle]="{ 'grid-template-columns': getGridColumns(item.multiReferenceImage.length) }">
1323
+ <ng-container
1324
+ *ngFor="let reffItem of item.multiReferenceImage;let i=index">
1325
+ <div class="collage-tile"
1326
+ *ngIf="isValidImage(reffItem)">
1327
+ <img class="cursor-pointer"
1328
+ (click)="openMultiImagePopup(getMultiRefImageUrls(item.multiReferenceImage),getRefImageNames(item.multiReferenceImage),i)"
1329
+ [src]="environment.TraxAnswerCDN + reffItem.imageURL"
1330
+ alt="Reference image">
1331
+ </div>
1332
+ </ng-container>
1333
+ </div>
1334
+ </ng-container>
1335
+ <ng-template #noMultiImage>
1336
+ <div
1337
+ *ngIf="item.referenceImage!==null&&item.referenceImage!==''&&galleryForm.value.type==='checklist'">
1338
+ <div class="title-ref my-3">Reference Image
1339
+ </div>
1340
+ <img class="img-logo cursor-pointer"
1341
+ (click)="openImagePopup1(environment.TraxAnswerCDN + item.referenceImage,0)"
1342
+ src="{{environment.TraxAnswerCDN}}{{item.referenceImage}}"
1343
+ alt="">
1344
+ </div>
1345
+ </ng-template>
1346
+ </div>
1347
+ <div class="col-md-6"
1348
+ *ngIf="galleryForm.value.type === 'task'">
1349
+ <div class="title-ref my-3"
1350
+ *ngIf="hasReferenceImages(question)">Reference
1351
+ Image</div>
1352
+ <div class="collage-grid"
1353
+ *ngIf="hasReferenceImages(question)">
1354
+ <ng-container
1355
+ *ngFor="let answer of question.answers">
1356
+ <ng-container
1357
+ *ngIf="answer.referenceImage?.length">
1358
+ <div class="collage-tile"
1359
+ *ngFor="let item of answer.referenceImage;let i=index">
1360
+ <img class="cursor-pointer"
1361
+ (click)="openImagePopup(getRefImageUrls(answer.referenceImage),getRefImageNames(answer.referenceImage),i)"
1362
+ [src]="environment.TraxAnswerCDN + item"
1363
+ alt="" />
1364
+ </div>
1365
+ </ng-container>
1366
+ </ng-container>
1367
+ </div>
1368
+ </div>
1369
+
1370
+ <div [ngClass]="['Capture Image','Capture Multiple Image with description'].includes(item.validationType)?'col-md-6':'col-md-12'"
1371
+ *ngIf="item.validation && (item.validationAnswer!=='' || (item.validationType==='Capture Multiple Image with description' && item.validationImage?.length))">
1372
+ <div class="title-ref my-3 d-flex justify-content-between"
1373
+ *ngIf="item.validationType==='Capture Image'||item.validationType==='Capture Video'||item.validationType==='Capture Multiple Image with description'">
1374
+ <span>Validation Answer </span>
1375
+ <span
1376
+ *ngIf="checkDetectionStatus(question.userAnswer?.[0]?.runAIData).keyPresent && item.validationType==='Capture Image'">
1377
+ <span class="badge"
1378
+ [ngClass]="checkDetectionStatus(question.userAnswer?.[0]?.runAIData).keyValue ? 'bgSuccess' : 'bgDanger'">
1379
+ {{
1380
+ checkDetectionStatus(question.userAnswer?.[0]?.runAIData).keyValue
1381
+ ? 'Matched' : 'Not Matched' }}
1382
+ </span>
1383
+ </span>
1384
+ </div>
1385
+ <!-- <img class="img-logo cursor-pointer" (click)="openImagePopup1(environment.TraxAnswerCDN + item.validationAnswer,0)" *ngIf="item.validationType==='Capture Image'" src="{{environment.TraxAnswerCDN}}{{item.validationAnswer}}" alt=""> -->
1386
+ <span>
1387
+ <img class="img-logo cursor-pointer"
1388
+ (click)="openImagePopup1((item.runAIAnswer) ? environment.traxRunAiCDN + item.runAIAnswer : environment.TraxAnswerCDN + item.validationAnswer,0)"
1389
+ *ngIf="item.validationType==='Capture Image'"
1390
+ [src]="(item.runAIAnswer) ? environment.traxRunAiCDN + item.runAIAnswer : environment.TraxAnswerCDN + item.validationAnswer"
1391
+ alt="" />
1392
+ </span>
1393
+ <div class="collage-grid"
1394
+ *ngIf="item.validationType==='Capture Multiple Image with description' && item.validationImage?.length"
1395
+ [ngStyle]="{ 'grid-template-columns': getGridColumns(item.validationImage.length) }">
1396
+ <ng-container
1397
+ *ngFor="let vImg of item.validationImage;let vi=index">
1398
+ <div class="collage-tile position-relative"
1399
+ *ngIf="isValidImage(vImg)">
1400
+ <img class="cursor-pointer"
1401
+ (click)="openImagePopup(getValidationImageUrls(item), getValidationImageNames(item), vi)"
1402
+ [src]="(item.runAIData?.[vi]?.answerImage) ? environment.traxRunAiCDN + item.runAIData[vi].answerImage : environment.TraxAnswerCDN + vImg"
1403
+ alt="Validation image" />
1404
+ <span class="position-absolute top-0 end-0 m-2"
1405
+ *ngIf="checkDetectionStatus(item.runAIData?.[vi]?.results).keyPresent">
1406
+ <span class="badge"
1407
+ [ngClass]="checkDetectionStatus(item.runAIData?.[vi]?.results).keyValue ? 'bgSuccess' : 'bgDanger'">
1408
+ {{ checkDetectionStatus(item.runAIData?.[vi]?.results).keyValue ? 'Matched' : 'Not Matched' }}
1409
+ </span>
1410
+ </span>
1411
+ </div>
1412
+ </ng-container>
1413
+ </div>
1414
+ <div class="remarksTxt mt-2"
1415
+ *ngIf="item.validationType==='Capture Multiple Image with description' && item.validationAnswer">
1416
+ {{item.validationAnswer}}
1417
+ </div>
1418
+ <div class="position-relative w-100 h-450px p-3"
1419
+ *ngIf="item.validationType === 'Capture Video'">
1420
+ <video controls class="w-100 h-100"
1421
+ [src]="environment.TraxAnswerCDN + item.validationAnswer"></video>
1422
+ <!-- <span class="position-absolute top-0 end-0 m-3 cursor-pointer"><svg (click)="downloadVideo(item.answer)" title="Download Video" id="download-icon" width="44" height="44" viewBox="0 0 44 44" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-overlay"><g filter="url(#filter0_d_3822_19479)"><rect x="2" y="1" width="40" height="40" rx="8" fill="white"/><rect x="2.5" y="1.5" width="39" height="39" rx="7.5" stroke="#D0D5DD"/><path d="M29.5 23.5V26.8333C29.5 27.2754 29.3244 27.6993 29.0118 28.0118C28.6993 28.3244 28.2754 28.5 27.8333 28.5H16.1667C15.7246 28.5 15.3007 28.3244 14.9882 28.0118C14.6756 27.6993 14.5 27.2754 14.5 26.8333V23.5M17.8333 19.3333L22 23.5M22 23.5L26.1667 19.3333M22 23.5V13.5" stroke="#344054" stroke-width="1.67" stroke-linecap="round" stroke-linejoin="round"/></g><defs><filter id="filter0_d_3822_19479" x="0" y="0" width="44" height="44" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/><feOffset dy="1"/><feGaussianBlur stdDeviation="1"/><feColorMatrix type="matrix" 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"/><feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_3822_19479"/><feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_3822_19479" result="shape"/></filter></defs></svg></span> -->
1423
+ </div>
1424
+ <span
1425
+ *ngIf="item.validationType==='Descriptive Answer'"
1426
+ [ngClass]="item.sopFlag ? 'flagclour':''">
1427
+ Validation Answer : {{item.validationAnswer}}
1428
+ </span>
1429
+ </div>
1430
+ </div>
1431
+ <div class="remarksTxt" *ngIf="question.remarks">
1432
+ Remarks : {{question.remarks}}</div>
1433
+ <div *ngIf="question.userAnswer?.[0]?.runAIData?.length">
1434
+ <div class="remarksTxt"
1435
+ *ngFor="let aiDataItem of question.userAnswer?.[0]?.runAIData">
1436
+ <span>
1437
+ @if(aiDataItem?.lableName && aiDataItem?.lableName !== 'detectionStatus') {
1438
+ <b>{{aiDataItem?.lableName}} :</b>
1439
+ {{aiDataItem?.value?.toString()?.padStart(2,'0')}}
1440
+ }
1441
+ @else {
1442
+ @for (result of aiDataItem.results; track $index) {
1443
+ @if(result?.lableName !== 'detectionStatus') {
1444
+ <b>{{result?.lableName}} :</b>
1445
+ {{result?.value?.toString()?.padStart(2,'0')}}
1446
+ }
1447
+ }
1448
+ }
1449
+ </span>
1450
+ </div>
1451
+ </div>
1452
+ </div>
1453
+ </div>
1454
+
1455
+ <div class="row px-5"
1456
+ *ngIf="question?.answerType==='multiplechoicemultiple'">
1457
+ <div class="col-md-6"
1458
+ *ngIf="galleryForm.value.type === 'checklist' && (hasMultiQuestionReferenceImages(question) || (question.questionReferenceImage && question.questionReferenceImage !== ''))">
1459
+ <ng-container
1460
+ *ngIf="galleryForm.value.type === 'checklist' && hasMultiQuestionReferenceImages(question); else noMultiImage">
1461
+ <div class="title-ref my-3">Question Reference Image</div>
1462
+ <div class="collage-grid"
1463
+ [ngStyle]="{ 'grid-template-columns': getGridColumns(question.multiQuestionReferenceImage.length) }">
1464
+ <ng-container
1465
+ *ngFor="let item of question.multiQuestionReferenceImage;let i=index">
1466
+ <div class="collage-tile"
1467
+ *ngIf="isValidImage(item)">
1468
+ <img class="cursor-pointer"
1469
+ (click)="openMultiImagePopup(getMultiRefImageUrls(question.multiQuestionReferenceImage),getRefImageNames(question.multiQuestionReferenceImage),i)"
1470
+ [src]="environment.TraxAnswerCDN + item.imageURL"
1471
+ alt="Reference image">
1472
+ </div>
1473
+ </ng-container>
1474
+ </div>
1475
+ </ng-container>
1476
+ <ng-template #noMultiImage>
1477
+ <div
1478
+ *ngIf="galleryForm.value.type==='checklist' && question.questionReferenceImage !== null && question.questionReferenceImage !== '' && question.questionReferenceImage !== undefined">
1479
+ <div class="title-ref my-3">Question Reference Image</div>
1480
+ <img class="img-logo cursor-pointer"
1481
+ (click)="openImagePopup1(environment.TraxAnswerCDN + question.questionReferenceImage,0)"
1482
+ src="{{environment.TraxAnswerCDN}}{{question.questionReferenceImage}}"
1483
+ alt="">
1484
+ </div>
1485
+ </ng-template>
1486
+ </div>
1487
+ <div class="col-md-6"
1488
+ *ngIf="galleryForm.value.type === 'task' && hasQuestionReferenceImages(question)">
1489
+ <!-- Question Reference Images -->
1490
+ <ng-container
1491
+ *ngIf="galleryForm.value.type === 'task' && hasQuestionReferenceImages(question)">
1492
+ <div class="title-ref my-3">Question Reference Image</div>
1493
+ <div class="collage-grid"
1494
+ [ngStyle]="{ 'grid-template-columns': getGridColumns(question.questionReferenceImage.length) }">
1495
+ <ng-container
1496
+ *ngFor="let item of question.questionReferenceImage;let i=index">
1497
+ <div class="collage-tile"
1498
+ *ngIf="isValidImage(item)">
1499
+ <img class="cursor-pointer"
1500
+ (click)="openImagePopup(getRefImageUrls(question.questionReferenceImage),getRefImageNames(question.questionReferenceImage),i)"
1501
+ [src]="environment.TraxAnswerCDN + item"
1502
+ alt="Reference image">
1503
+ </div>
1504
+ </ng-container>
1505
+ </div>
1506
+ </ng-container>
1507
+ </div>
1508
+ <div class="Partially my-3 px-5"
1509
+ *ngFor="let item of question.userAnswer">
1510
+ <span class="mt-3"
1511
+ [ngClass]="item.sopFlag ? 'flagclour':''">{{item.answer}}</span>
1512
+ <div class="row">
1513
+ <div class="col-md-6"
1514
+ *ngIf="galleryForm.value.type === 'checklist' && hasMultiReferenceImages(item) || (item.referenceImage && item.referenceImage !== '')">
1515
+ <ng-container
1516
+ *ngIf="galleryForm.value.type === 'checklist' && hasMultiReferenceImages(item); else noMultiImage">
1517
+ <div class="title-ref my-3">Reference Image
1518
+ </div>
1519
+ <div class="collage-grid"
1520
+ [ngStyle]="{ 'grid-template-columns': getGridColumns(item.multiReferenceImage.length) }">
1521
+ <ng-container
1522
+ *ngFor="let reffItem of item.multiReferenceImage;let i=index">
1523
+ <div class="collage-tile"
1524
+ *ngIf="isValidImage(reffItem)">
1525
+ <img class="cursor-pointer"
1526
+ (click)="openMultiImagePopup(getMultiRefImageUrls(item.multiReferenceImage),getRefImageNames(item.multiReferenceImage),i)"
1527
+ [src]="environment.TraxAnswerCDN + reffItem.imageURL"
1528
+ alt="Reference image">
1529
+ </div>
1530
+ </ng-container>
1531
+ </div>
1532
+ </ng-container>
1533
+ <ng-template #noMultiImage>
1534
+ <div
1535
+ *ngIf="item.referenceImage !== null && item.referenceImage !=='' && galleryForm.value.type==='checklist'">
1536
+ <div class="title-ref my-3">Reference Image
1537
+ </div>
1538
+ <img class="img-logo cursor-pointer"
1539
+ (click)="openImagePopup1(environment.TraxAnswerCDN + item.referenceImage,0)"
1540
+ src="{{environment.TraxAnswerCDN}}{{item.referenceImage}}"
1541
+ alt="">
1542
+ </div>
1543
+ </ng-template>
1544
+ </div>
1545
+ <div class="col-md-6"
1546
+ *ngIf="galleryForm.value.type === 'task'">
1547
+ <div class="title-ref my-3"
1548
+ *ngIf="hasReferenceImages(question)"> Reference
1549
+ Image </div>
1550
+ <div class="collage-grid"
1551
+ *ngIf="hasReferenceImages(question)">
1552
+ <ng-container
1553
+ *ngFor="let answer of question.answers">
1554
+ <ng-container
1555
+ *ngIf="answer.referenceImage?.length">
1556
+ <div class="collage-tile"
1557
+ *ngFor="let item of answer.referenceImage;let i=index">
1558
+ <img class="cursor-pointer"
1559
+ (click)="openImagePopup(getRefImageUrls(answer.referenceImage),getRefImageNames(answer.referenceImage),i)"
1560
+ [src]="environment.TraxAnswerCDN + item"
1561
+ alt="" />
1562
+ </div>
1563
+ </ng-container>
1564
+ </ng-container>
1565
+ </div>
1566
+ </div>
1567
+ <div [ngClass]="item.validationType==='Capture Image'?'col-md-6':'col-md-12'"
1568
+ *ngIf="item.validation&&item.validationAnswer&&item.validationAnswer!==''">
1569
+ <div class="title-ref my-3 d-flex justify-content-between"
1570
+ *ngIf="item.validationType==='Capture Image'||item.validationType==='Capture Video'">
1571
+ <span>Validation Answer </span>
1572
+ <span
1573
+ *ngIf="checkDetectionStatus(item?.runAIData).keyPresent">
1574
+ <span class="badge"
1575
+ [ngClass]="checkDetectionStatus(item?.runAIData).keyValue ? 'bgSuccess' : 'bgDanger'">
1576
+ {{
1577
+ checkDetectionStatus(item?.runAIData).keyValue
1578
+ ? 'Matched' : 'Not Matched' }}
1579
+ </span>
1580
+ </span>
1581
+ </div>
1582
+ <!-- <img class="img-logo cursor-pointer" (click)="openImagePopup1(environment.TraxAnswerCDN + item.validationAnswer,0)" *ngIf="item.validationType==='Capture Image'" src="{{environment.TraxAnswerCDN}}{{item.validationAnswer}}" alt=""> -->
1583
+ <span>
1584
+ <img class="img-logo cursor-pointer"
1585
+ (click)="openImagePopup1((item.runAIAnswer) ? environment.traxRunAiCDN + item.runAIAnswer : environment.TraxAnswerCDN + item.validationAnswer,0)"
1586
+ *ngIf="item.validationType==='Capture Image'"
1587
+ [src]="(item.runAIAnswer) ? environment.traxRunAiCDN + item.runAIAnswer : environment.TraxAnswerCDN + item.validationAnswer"
1588
+ alt="" />
1589
+ </span>
1590
+ <div class="position-relative w-100 h-450px p-3"
1591
+ *ngIf="item.validationType === 'Capture Video'">
1592
+ <video controls class="w-100 h-100"
1593
+ [src]="environment.TraxAnswerCDN + item.validationAnswer">
1594
+ </video>
1595
+ <!-- <span class="position-absolute top-0 end-0 m-3 cursor-pointer"><svg (click)="downloadVideo(item.answer)" title="Download Video" id="download-icon" width="44" height="44" viewBox="0 0 44 44" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-overlay"><g filter="url(#filter0_d_3822_19479)"><rect x="2" y="1" width="40" height="40" rx="8" fill="white"/><rect x="2.5" y="1.5" width="39" height="39" rx="7.5" stroke="#D0D5DD"/><path d="M29.5 23.5V26.8333C29.5 27.2754 29.3244 27.6993 29.0118 28.0118C28.6993 28.3244 28.2754 28.5 27.8333 28.5H16.1667C15.7246 28.5 15.3007 28.3244 14.9882 28.0118C14.6756 27.6993 14.5 27.2754 14.5 26.8333V23.5M17.8333 19.3333L22 23.5M22 23.5L26.1667 19.3333M22 23.5V13.5" stroke="#344054" stroke-width="1.67" stroke-linecap="round" stroke-linejoin="round"/></g><defs><filter id="filter0_d_3822_19479" x="0" y="0" width="44" height="44" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/><feOffset dy="1"/><feGaussianBlur stdDeviation="1"/><feColorMatrix type="matrix" 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"/><feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_3822_19479"/><feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_3822_19479" result="shape"/></filter></defs></svg></span> -->
1596
+ </div>
1597
+ <span
1598
+ *ngIf="item.validationType==='Descriptive Answer'"
1599
+ [ngClass]="item.sopFlag ? 'flagclour':''">
1600
+ Validation Answer : {{item.validationAnswer}}
1601
+ </span>
1602
+ </div>
1603
+ </div>
1604
+ <div class="row mt-3">
1605
+ <div class="col-12 text-end">
1606
+ <button class="btn btn-sm btn-default border-default me-3"
1607
+ [disabled]="isAnswerRedoDone(question, item)"
1608
+ *ngIf="checktodayDate(checklist?.checklistInfo?.date)&&(gs.userAccess | async)?.userType !== 'tango'&&!checklist?.checklistInfo?.approvalStatus&&(gs.userAccess | async)?.TangoTrax_checklist_isEdit&&this.galleryForm.value.type ==='checklist'&&selectedStores.length===0&&selectedUsers.length===0"
1609
+ (click)="addTask('redo',question,checklist?.checklistInfo,checklist?.storeProfile,section,si+'_'+qi,item)">
1610
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
1611
+ <path d="M19.1693 3.33331V8.33332M19.1693 8.33332H14.1693M19.1693 8.33332L15.3026 4.69998C14.407 3.80391 13.299 3.14932 12.0819 2.79729C10.8649 2.44527 9.57853 2.40727 8.34284 2.68686C7.10716 2.96645 5.96244 3.55451 5.01549 4.39616C4.06855 5.23782 3.35024 6.30564 2.9276 7.49998M0.835938 16.6666V11.6666M0.835938 11.6666H5.83594M0.835938 11.6666L4.7026 15.3C5.59823 16.1961 6.70625 16.8506 7.92328 17.2027C9.14031 17.5547 10.4267 17.5927 11.6624 17.3131C12.898 17.0335 14.0428 16.4455 14.9897 15.6038C15.9367 14.7621 16.655 13.6943 17.0776 12.5" stroke="#344054" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
1612
+ </svg>
1613
+ <span class="ms-2 font-defult-task">Redo</span>
1614
+ </button>
1615
+
1616
+ </div>
1617
+ </div>
1618
+ </div>
1619
+ <div class="remarksTxt" *ngIf="question.remarks"> Remarks :
1620
+ {{question.remarks}}</div>
1621
+ <div *ngIf="question.userAnswer?.[0]?.runAIData?.length">
1622
+ <div class="remarksTxt"
1623
+ *ngFor="let aiDataItem of question.userAnswer?.[0]?.runAIData">
1624
+ <span>
1625
+ @if(aiDataItem?.lableName && aiDataItem?.lableName !== 'detectionStatus') {
1626
+ <b>{{aiDataItem?.lableName}} :</b>
1627
+ {{aiDataItem?.value?.toString()?.padStart(2,'0')}}
1628
+ }
1629
+ @else {
1630
+ @for (result of aiDataItem.results; track $index) {
1631
+ @if(result?.lableName !== 'detectionStatus') {
1632
+ <b>{{result?.lableName}} :</b>
1633
+ {{result?.value?.toString()?.padStart(2,'0')}}
1634
+ }
1635
+ }
1636
+ }
1637
+ </span>
1638
+ </div>
1639
+ </div>
1640
+ </div>
1641
+
1642
+ <div class="row" *ngIf="question?.answerType==='image'">
1643
+ <div class="col-md-6"
1644
+ *ngIf="galleryForm.value.type === 'task' && (hasReferenceImages(question) || hasChecklistReferenceImages(question))">
1645
+ <div class="title-ref my-3"
1646
+ *ngIf="hasReferenceImages(question)">Reference Image
1647
+ </div>
1648
+ <div class="collage-grid"
1649
+ *ngIf="hasReferenceImages(question)">
1650
+ <ng-container *ngFor="let answer of question.answers">
1651
+ <ng-container *ngIf="answer.referenceImage?.length">
1652
+ <div class="collage-tile"
1653
+ *ngFor="let item of answer.referenceImage;let i=index">
1654
+ <img class="cursor-pointer"
1655
+ (click)="openImagePopup(getRefImageUrls(answer.referenceImage),getRefImageNames(answer.referenceImage),i)"
1656
+ [src]="environment.TraxAnswerCDN + item"
1657
+ alt="" />
1658
+ </div>
1659
+ </ng-container>
1660
+ </ng-container>
1661
+ </div>
1662
+ </div>
1663
+
1664
+ <!-- For Checklist Type -->
1665
+ <div class="col-md-6"
1666
+ *ngIf="galleryForm.value.type === 'checklist' && (hasImageMultiReferenceImages(question) || hasReferenceImages(question) || hasChecklistReferenceImages(question))">
1667
+ <ng-container
1668
+ *ngIf="galleryForm.value.type === 'checklist' && hasImageMultiReferenceImages(question); else noMultiImage">
1669
+ <div class="title-ref my-3"
1670
+ *ngIf="hasImageMultiReferenceImages(question)">
1671
+ Reference Image</div>
1672
+ <div class="collage-grid"
1673
+ *ngIf="hasImageMultiReferenceImages(question)">
1674
+ <ng-container
1675
+ *ngFor="let answer of question.answers">
1676
+ <ng-container
1677
+ *ngIf="answer.multiReferenceImage?.length">
1678
+ <div class="collage-tile"
1679
+ *ngFor="let item of answer.multiReferenceImage;let i=index">
1680
+ <img class="cursor-pointer"
1681
+ (click)="openMultiImagePopup(getMultiRefImageUrls(answer.multiReferenceImage),getRefImageNames(answer.multiReferenceImage),i)"
1682
+ [src]="environment.TraxAnswerCDN + item.imageURL"
1683
+ alt="" />
1684
+ </div>
1685
+ </ng-container>
1686
+ </ng-container>
1687
+ </div>
1688
+ </ng-container>
1689
+ <ng-template #noMultiImage>
1690
+ <div class="col-md-6"
1691
+ *ngIf="galleryForm.value.type === 'checklist' && (hasReferenceImages(question) || hasChecklistReferenceImages(question))">
1692
+ <div class="title-ref my-3"
1693
+ *ngIf="hasChecklistReferenceImages(question)">
1694
+ Reference Image</div>
1695
+ <div class="collage-grid"
1696
+ *ngIf="hasChecklistReferenceImages(question)">
1697
+ <ng-container
1698
+ *ngFor="let answer of question.answers;let i=index;">
1699
+ <div class="collage-tile"
1700
+ *ngIf="answer.referenceImage">
1701
+ <img class="cursor-pointer"
1702
+ (click)="openImagePopup(getRefchecklistImageUrls(question.answers),getRefchecklistImageNames(question.answers),i)"
1703
+ [src]="environment.TraxAnswerCDN + answer.referenceImage"
1704
+ alt="" />
1705
+ </div>
1706
+ </ng-container>
1707
+ </div>
1708
+ </div>
1709
+ </ng-template>
1710
+ </div>
1711
+
1712
+ <div class="col-md-6 row" *ngIf="hasImageAnswer(question)">
1713
+ <div class="d-flex justify-content-between">
1714
+ <div class="title-ref my-3">Uploaded Image</div>
1715
+ <div class="mt-3"
1716
+ *ngIf="checkDetectionStatus(question.userAnswer?.[0]?.runAIData).keyPresent ; else noRunAIData">
1717
+ <span class="badge"
1718
+ [ngClass]="checkDetectionStatus(question.userAnswer?.[0]?.runAIData).keyValue ? 'bgSuccess' : 'bgDanger'">
1719
+ {{
1720
+ checkDetectionStatus(question.userAnswer?.[0]?.runAIData).keyValue
1721
+ ? 'Matched' : 'Not Matched' }}
1722
+ </span>
1723
+ </div>
1724
+ <ng-template #noRunAIData>
1725
+ <div
1726
+ *ngIf="!checkDetectionStatus(question.userAnswer?.[0]?.runAIData).keyPresent">
1727
+ <div class="mt-3"
1728
+ *ngIf="question.userAnswer?.[0]?.runAIAnswer ">
1729
+ <span class="badge"
1730
+ *ngIf="question.userAnswer?.[0]?.detectionStatus !== undefined"
1731
+ [ngClass]="question.userAnswer[0]?.detectionStatus ? 'bgSuccess' : 'bgDanger'">
1732
+ {{question.userAnswer[0].detectionStatus
1733
+ ? 'Matched' : 'Not Matched'}}
1734
+ </span>
1735
+ </div>
1736
+ </div>
1737
+ </ng-template>
1738
+ </div>
1739
+ <div class="collage-grid"
1740
+ [ngStyle]="{'grid-template-columns': getGridColumns(question.userAnswer.length), 'grid-auto-rows': getGridRowHeight(question.userAnswer.length)}">
1741
+ <div class="collage-tile"
1742
+ *ngFor="let item of question.userAnswer;let i = index">
1743
+ <img class="cursor-pointer"
1744
+ (click)="openImagePopup(getImageUrls(question.userAnswer),getImageNames(question.userAnswer),i)"
1745
+ [src]="(item.runAIAnswer) ? environment.traxRunAiCDN + item.runAIAnswer : environment.TraxAnswerCDN + item.answer"
1746
+ alt="">
1747
+ <!-- sanitizeUrl(environment.traxRunAiCDN + item.runAIAnswer) -->
1748
+ </div>
1749
+ </div>
1750
+ </div>
1751
+ <div class="remarksTxt" *ngIf="question.remarks">Remarks :
1752
+ {{question.remarks}}</div>
1753
+ <!-- <div class="remarksTxt" *ngIf="question.runAI && question.userAnswer?.[0]?.employeeCount">
1754
+ <b>Employee Count :</b> {{question.userAnswer?.[0]?.employeeCount?.toString()?.padStart(2,'0')}}
1755
+ </div> -->
1756
+ <div
1757
+ *ngIf="question.userAnswer?.[0]?.runAIData?.length; else noRunAIData">
1758
+ <div class="remarksTxt"
1759
+ *ngFor="let aiDataItem of question.userAnswer?.[0]?.runAIData">
1760
+ <span>
1761
+ @if(aiDataItem?.lableName && aiDataItem?.lableName !== 'detectionStatus') {
1762
+ <b>{{aiDataItem?.lableName}} :</b>
1763
+ {{aiDataItem?.value?.toString()?.padStart(2,'0')}}
1764
+ }
1765
+ @else {
1766
+ @for (result of aiDataItem.results; track $index) {
1767
+ @if(result?.lableName !== 'detectionStatus') {
1768
+ <b>{{result?.lableName}} :</b>
1769
+ {{result?.value?.toString()?.padStart(2,'0')}}
1770
+ }
1771
+ }
1772
+ }
1773
+ </span>
1774
+ </div>
1775
+ </div>
1776
+ <ng-template #noRunAIData>
1777
+ <div
1778
+ *ngIf="!question.userAnswer?.[0]?.runAIData?.length && question.userAnswer?.[0]?.employeeCount">
1779
+ <div class="remarksTxt"
1780
+ *ngIf="question.userAnswer?.[0]?.employeeCount">
1781
+ <b>Employee Count :</b>
1782
+ {{question.userAnswer?.[0]?.employeeCount?.toString()?.padStart(2,'0')}}
1783
+ </div>
1784
+ </div>
1785
+ </ng-template>
1786
+ </div>
1787
+
1788
+ <div class="row px-5"
1789
+ *ngIf="question?.answerType==='descriptiveImage'">
1790
+ <div class="col-md-6"
1791
+ *ngIf="galleryForm.value.type === 'task' && (hasReferenceImages(question) || hasChecklistReferenceImages(question))">
1792
+ <div class="title-ref my-3"
1793
+ *ngIf="hasReferenceImages(question)"> Reference Image
1794
+ </div>
1795
+ <div class="collage-grid"
1796
+ *ngIf="hasReferenceImages(question)">
1797
+ <ng-container *ngFor="let answer of question.answers">
1798
+ <ng-container *ngIf="answer.referenceImage?.length">
1799
+ <div class="collage-tile"
1800
+ *ngFor="let item of answer.referenceImage;let i=index">
1801
+ <img class="cursor-pointer"
1802
+ (click)="openImagePopup(getRefImageUrls(answer.referenceImage),getRefImageNames(answer.referenceImage),i)"
1803
+ [src]="environment.TraxAnswerCDN + item"
1804
+ alt="" />
1805
+ </div>
1806
+ </ng-container>
1807
+ </ng-container>
1808
+ </div>
1809
+ </div>
1810
+
1811
+ <!-- For Checklist Type -->
1812
+ <div class="col-md-6"
1813
+ *ngIf="galleryForm.value.type === 'checklist' && (hasImageMultiReferenceImages(question) || hasReferenceImages(question))">
1814
+ <ng-container
1815
+ *ngIf="galleryForm.value.type === 'checklist' && hasImageMultiReferenceImages(question); else noMultiImage">
1816
+ <div class="title-ref my-3"
1817
+ *ngIf="hasImageMultiReferenceImages(question)">
1818
+ Reference Image </div>
1819
+ <div class="collage-grid"
1820
+ *ngIf="hasImageMultiReferenceImages(question)">
1821
+ <ng-container
1822
+ *ngFor="let answer of question.answers">
1823
+ <ng-container
1824
+ *ngIf="answer.multiReferenceImage?.length">
1825
+ <div class="collage-tile"
1826
+ *ngFor="let item of answer.multiReferenceImage;let i=index">
1827
+ <img class="cursor-pointer"
1828
+ (click)="openMultiImagePopup(getMultiRefImageUrls(answer.multiReferenceImage),getRefImageNames(answer.multiReferenceImage),i)"
1829
+ [src]="environment.TraxAnswerCDN + item.imageURL"
1830
+ alt="" />
1831
+ </div>
1832
+ </ng-container>
1833
+ </ng-container>
1834
+ </div>
1835
+ </ng-container>
1836
+ <ng-template #noMultiImage>
1837
+ <div class="col-md-6"
1838
+ *ngIf="galleryForm.value.type === 'checklist' && (hasReferenceImages(question) || hasChecklistReferenceImages(question))">
1839
+ <div class="title-ref my-3"
1840
+ *ngIf="hasChecklistReferenceImages(question)">
1841
+ Reference Image </div>
1842
+ <div class="collage-grid"
1843
+ *ngIf="hasChecklistReferenceImages(question)">
1844
+ <ng-container
1845
+ *ngFor="let answer of question.answers;let i=index;">
1846
+ <div class="collage-tile"
1847
+ *ngIf="answer.referenceImage">
1848
+ <img class="cursor-pointer"
1849
+ (click)="openImagePopup(getRefchecklistImageUrls(question.answers),getRefchecklistImageNames(question.answers),i)"
1850
+ [src]="environment.TraxAnswerCDN + answer.referenceImage"
1851
+ alt="" />
1852
+ </div>
1853
+ </ng-container>
1854
+ </div>
1855
+ </div>
1856
+ </ng-template>
1857
+ </div>
1858
+ <div
1859
+ [ngClass]="hasReferenceImages(question) || hasChecklistReferenceImages(question) ? 'col-md-6' : 'col-md-6'">
1860
+ <div class="row">
1861
+ <div class="d-flex justify-content-between">
1862
+ <div class="title-ref my-3">Uploaded Image</div>
1863
+ <div class="mt-3"
1864
+ *ngIf="checkDetectionStatus(question.userAnswer?.[0]?.runAIData).keyPresent">
1865
+ <span class="badge"
1866
+ [ngClass]="checkDetectionStatus(question.userAnswer?.[0]?.runAIData).keyValue ? 'bgSuccess' : 'bgDanger'">
1867
+ {{
1868
+ checkDetectionStatus(question.userAnswer?.[0]?.runAIData).keyValue
1869
+ ? 'Matched' : 'Not Matched' }}
1870
+ </span>
1871
+ </div>
1872
+ </div>
1873
+ <div class="collage-grid"
1874
+ [ngStyle]="{'grid-template-columns': getGridColumns(question.userAnswer.length), 'grid-auto-rows': getGridRowHeight(question.userAnswer.length)}">
1875
+ <div *ngFor="let item of question.userAnswer;let i = index"
1876
+ class="collage-tile">
1877
+ <img class="cursor-pointer"
1878
+ (click)="openImagePopup(getImageUrls(question.userAnswer),getImageNames(question.userAnswer),i)"
1879
+ [src]="(item.runAIAnswer) ? environment.traxRunAiCDN + item.runAIAnswer : environment.TraxAnswerCDN + item.answer"
1880
+ alt="">
1881
+ </div>
1882
+ </div>
1883
+ </div>
1884
+ </div>
1885
+ <div class="remarksTxt" *ngIf="question.remarks">Remarks :
1886
+ {{question.remarks}}</div>
1887
+ <div *ngIf="question.userAnswer?.[0]?.runAIData?.length">
1888
+ <div class="remarksTxt"
1889
+ *ngFor="let aiDataItem of question.userAnswer?.[0]?.runAIData">
1890
+ <span>
1891
+ @if(aiDataItem?.lableName && aiDataItem?.lableName !== 'detectionStatus') {
1892
+ <b>{{aiDataItem?.lableName}} :</b>
1893
+ {{aiDataItem?.value?.toString()?.padStart(2,'0')}}
1894
+ }
1895
+ @else {
1896
+ @for (result of aiDataItem.results; track $index) {
1897
+ @if(result?.lableName !== 'detectionStatus') {
1898
+ <b>{{result?.lableName}} :</b>
1899
+ {{result?.value?.toString()?.padStart(2,'0')}}
1900
+ }
1901
+ }
1902
+ }
1903
+ </span>
1904
+ </div>
1905
+ </div>
1906
+ </div>
1907
+
1908
+ <div class="row px-5"
1909
+ *ngIf="question?.answerType==='multipleImage'">
1910
+ <div class="col-md-6"
1911
+ *ngIf="galleryForm.value.type === 'task' && (hasReferenceImages(question) || hasChecklistReferenceImages(question))">
1912
+ <div class="title-ref my-3"
1913
+ *ngIf="hasReferenceImages(question)">Reference Image
1914
+ </div>
1915
+ <div class="collage-grid"
1916
+ *ngIf="hasReferenceImages(question)">
1917
+ <ng-container *ngFor="let answer of question.answers">
1918
+ <ng-container *ngIf="answer.referenceImage?.length">
1919
+ <div class="collage-tile"
1920
+ *ngFor="let item of answer.referenceImage;let i=index">
1921
+ <img class="cursor-pointer"
1922
+ (click)="openImagePopup(getRefImageUrls(answer.referenceImage),getRefImageNames(answer.referenceImage),i)"
1923
+ [src]="environment.TraxAnswerCDN + item"
1924
+ alt="" />
1925
+ </div>
1926
+ </ng-container>
1927
+ </ng-container>
1928
+ </div>
1929
+ </div>
1930
+
1931
+ <!-- For Checklist Type -->
1932
+ <div class="col-md-6"
1933
+ *ngIf="galleryForm.value.type === 'checklist' && (hasImageMultiReferenceImages(question) || hasReferenceImages(question) || hasChecklistReferenceImages(question))">
1934
+ <ng-container
1935
+ *ngIf="galleryForm.value.type === 'checklist' && hasImageMultiReferenceImages(question); else noMultiImage">
1936
+ <div class="title-ref my-3"
1937
+ *ngIf="hasImageMultiReferenceImages(question)">
1938
+ Reference Image </div>
1939
+ <div class="collage-grid"
1940
+ *ngIf="hasImageMultiReferenceImages(question)">
1941
+ <ng-container
1942
+ *ngFor="let answer of question.answers">
1943
+ <ng-container
1944
+ *ngIf="answer.multiReferenceImage?.length">
1945
+ <div class="collage-tile"
1946
+ *ngFor="let item of answer.multiReferenceImage;let i=index">
1947
+ <img class="cursor-pointer"
1948
+ (click)="openMultiImagePopup(getMultiRefImageUrls(answer.multiReferenceImage),getRefImageNames(answer.multiReferenceImage),i)"
1949
+ [src]="environment.TraxAnswerCDN + item.imageURL"
1950
+ alt="" />
1951
+ </div>
1952
+ </ng-container>
1953
+ </ng-container>
1954
+ </div>
1955
+ </ng-container>
1956
+ <ng-template #noMultiImage>
1957
+ <div *ngIf="galleryForm.value.type === 'checklist' && (hasReferenceImages(question) || hasChecklistReferenceImages(question))"
1958
+ class="col-md-6">
1959
+ <div class="title-ref my-3"
1960
+ *ngIf="hasChecklistReferenceImages(question)">
1961
+ Reference Image </div>
1962
+ <div class="collage-grid"
1963
+ *ngIf="hasChecklistReferenceImages(question)">
1964
+ <ng-container
1965
+ *ngFor="let answer of question.answers;let i=index;">
1966
+ <div class="collage-tile"
1967
+ *ngIf="answer.referenceImage">
1968
+ <img class="cursor-pointer"
1969
+ (click)="openImagePopup(getRefchecklistImageUrls(question.answers),getRefchecklistImageNames(question.answers),i)"
1970
+ [src]="environment.TraxAnswerCDN + answer.referenceImage"
1971
+ alt="" />
1972
+ </div>
1973
+ </ng-container>
1974
+ </div>
1975
+ </div>
1976
+ </ng-template>
1977
+ </div>
1978
+
1979
+ <div class="col-md-6" *ngIf="hasImageAnswer(question)">
1980
+ <!-- <div class="title-ref my-3">Uploaded Image</div> -->
1981
+ <!-- <div class="collage-grid" [ngStyle]="{'grid-template-columns': getGridColumns(question.userAnswer.length), 'grid-auto-rows': getGridRowHeight(question.userAnswer.length)}">
1982
+ <div *ngFor="let item of question.userAnswer;let i=index" class="collage-tile">
1983
+ <img class="cursor-pointer" (click)="openImagePopup(getImageUrls(question.userAnswer),getImageNames(question.userAnswer),i)" src="{{environment.TraxAnswerCDN}}{{item.answer}}" alt="">
1984
+ </div>
1985
+ </div> -->
1986
+ <div class="d-flex justify-content-between">
1987
+ <div class="title-ref my-3">Uploaded Image</div>
1988
+ <div class="mt-3"
1989
+ *ngIf="multiImageCheckDetectionStatus(question.userAnswer).keyPresent">
1990
+ <span class="badge"
1991
+ [ngClass]="multiImageCheckDetectionStatus(question.userAnswer).keyValue ? 'bgSuccess' : 'bgDanger'">
1992
+ {{
1993
+ multiImageCheckDetectionStatus(question.userAnswer).keyValue
1994
+ ? 'Matched' : 'Not Matched' }}
1995
+ </span>
1996
+ </div>
1997
+ </div>
1998
+ <div class="collage-grid"
1999
+ [ngStyle]="{'grid-template-columns': getGridColumns(question.userAnswer.length), 'grid-auto-rows': getGridRowHeight(question.userAnswer.length)}">
2000
+ <div *ngFor="let item of question.userAnswer;let i=index"
2001
+ class="collage-tile">
2002
+ <img class="cursor-pointer"
2003
+ (click)="openImagePopup(getImageUrls(question.userAnswer),getImageNames(question.userAnswer),i)"
2004
+ [src]="(item.runAIAnswer) ? environment.traxRunAiCDN + item.runAIAnswer : environment.TraxAnswerCDN + item.answer"
2005
+ alt="">
2006
+ </div>
2007
+ </div>
2008
+ </div>
2009
+ <div class="remarksTxt" *ngIf="question.remarks">Remarks :
2010
+ {{question.remarks}}</div>
2011
+ <div *ngIf="question.userAnswer?.[0]?.runAIData?.length">
2012
+ <div class="remarksTxt"
2013
+ *ngFor="let aiDataItem of question.userAnswer?.[0]?.runAIData">
2014
+ <span>
2015
+ @if(aiDataItem?.lableName && aiDataItem?.lableName !== 'detectionStatus') {
2016
+ <b>{{aiDataItem?.lableName}} :</b>
2017
+ {{aiDataItem?.value?.toString()?.padStart(2,'0')}}
2018
+ }
2019
+ @else {
2020
+ @for (result of aiDataItem.results; track $index) {
2021
+ @if(result?.lableName !== 'detectionStatus') {
2022
+ <b>{{result?.lableName}} :</b>
2023
+ {{result?.value?.toString()?.padStart(2,'0')}}
2024
+ }
2025
+ }
2026
+ }
2027
+ </span>
2028
+ </div>
2029
+ </div>
2030
+ </div>
2031
+
2032
+ <div class="row px-5" *ngIf="question?.answerType==='video'">
2033
+ <!-- Task: Multiple reference images (Array) -->
2034
+ <div class="col-md-6"
2035
+ *ngIf="galleryForm.value.type === 'task' && hasQuestionReferenceImages(question)">
2036
+ <!-- Question Reference Images -->
2037
+ <div class="title-ref my-3">Reference Image </div>
2038
+ <div class="collage-grid"
2039
+ [ngStyle]="{ 'grid-template-columns': getGridColumns(question.questionReferenceImage.length) }">
2040
+ <ng-container
2041
+ *ngFor="let item of question.questionReferenceImage;let i=index">
2042
+ <div class="collage-tile"
2043
+ *ngIf="isValidImage(item)">
2044
+ <img class="cursor-pointer"
2045
+ (click)="openImagePopup(getRefImageUrls(question.questionReferenceImage),getRefImageNames(question.questionReferenceImage),i)"
2046
+ [src]="environment.TraxAnswerCDN + item"
2047
+ alt="Reference image">
2048
+ </div>
2049
+ </ng-container>
2050
+ </div>
2051
+ </div>
2052
+
2053
+ <!-- Checklist: Single reference image (String) -->
2054
+ <div class="col-md-6"
2055
+ *ngIf="hasMultiQuestionReferenceImages(question) || (question.questionReferenceImage && question.questionReferenceImage !== '')">
2056
+ <ng-container
2057
+ *ngIf="galleryForm.value.type === 'checklist' && hasMultiQuestionReferenceImages(question); else noMultiImage">
2058
+ <div class="title-ref my-3">Question Reference Image</div>
2059
+ <div class="collage-grid"
2060
+ [ngStyle]="{ 'grid-template-columns': getGridColumns(question.multiQuestionReferenceImage.length) }">
2061
+ <ng-container
2062
+ *ngFor="let item of question.multiQuestionReferenceImage;let i=index">
2063
+ <div class="collage-tile"
2064
+ *ngIf="isValidImage(item)">
2065
+ <img class="cursor-pointer"
2066
+ (click)="openMultiImagePopup(getMultiRefImageUrls(question.multiQuestionReferenceImage),getRefImageNames(question.multiQuestionReferenceImage),i)"
2067
+ [src]="environment.TraxAnswerCDN + item.imageURL"
2068
+ alt="Reference image">
2069
+ </div>
2070
+ </ng-container>
2071
+ </div>
2072
+ </ng-container>
2073
+ <ng-template #noMultiImage>
2074
+ <div
2075
+ *ngIf="galleryForm.value.type === 'checklist' && question.questionReferenceImage && question.questionReferenceImage !== ''">
2076
+ <div class="title-ref my-3">Reference Image</div>
2077
+ <div class="collage-grid"
2078
+ [ngStyle]="{ 'grid-template-columns': getGridColumns(1) }">
2079
+ <div class="collage-tile">
2080
+ <img class="cursor-pointer"
2081
+ (click)="openImagePopup1(environment.TraxAnswerCDN + question.questionReferenceImage,0)"
2082
+ [src]="environment.TraxAnswerCDN + question.questionReferenceImage"
2083
+ alt="">
2084
+ </div>
2085
+ </div>
2086
+ </div>
2087
+ </ng-template>
2088
+ </div>
2089
+
2090
+ <div class="col-md-12" *ngFor="let item of question.userAnswer">
2091
+ <div class="title-ref my-3">Uploaded Video</div>
2092
+ <!-- <div class="position-relative w-100 h-450px p-3">
2093
+ <video controls class="w-100 h-100"
2094
+ src="{{environment.TraxAnswerCDN}}{{item.answer}}">
2095
+ </video> -->
2096
+ <div class="video-wrapper" [ngClass]="{ 'fullscreen-active': isVideoFullscreen(videoRef) }">
2097
+ <video #videoRef controls class="w-100 h-100"
2098
+ src="{{environment.TraxAnswerCDN}}{{item.answer}}">
2099
+ </video>
2100
+ <!-- <span class="position-absolute top-0 end-0 m-3 cursor-pointer"><svg (click)="downloadVideo(item.answer)" title="Download Video" id="download-icon" width="44" height="44" viewBox="0 0 44 44" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-overlay"><g filter="url(#filter0_d_3822_19479)"><rect x="2" y="1" width="40" height="40" rx="8" fill="white"/><rect x="2.5" y="1.5" width="39" height="39" rx="7.5" stroke="#D0D5DD"/><path d="M29.5 23.5V26.8333C29.5 27.2754 29.3244 27.6993 29.0118 28.0118C28.6993 28.3244 28.2754 28.5 27.8333 28.5H16.1667C15.7246 28.5 15.3007 28.3244 14.9882 28.0118C14.6756 27.6993 14.5 27.2754 14.5 26.8333V23.5M17.8333 19.3333L22 23.5M22 23.5L26.1667 19.3333M22 23.5V13.5" stroke="#344054" stroke-width="1.67" stroke-linecap="round" stroke-linejoin="round"/></g><defs><filter id="filter0_d_3822_19479" x="0" y="0" width="44" height="44" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/><feOffset dy="1"/><feGaussianBlur stdDeviation="1"/><feColorMatrix type="matrix" 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"/><feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_3822_19479"/><feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_3822_19479" result="shape"/></filter></defs></svg></span> -->
2101
+ </div>
2102
+ </div>
2103
+ <div class="remarksTxt" *ngIf="question.remarks">Remarks :
2104
+ {{question.remarks}}</div>
2105
+ </div>
2106
+
2107
+ <div class="row px-5" *ngIf="question?.answerType==='image/video'">
2108
+ <div class="col-md-6"
2109
+ *ngIf="galleryForm.value.type === 'task' && hasQuestionReferenceImages(question)">
2110
+ <div class="title-ref my-3">Reference Image</div>
2111
+ <div class="collage-grid"
2112
+ [ngStyle]="{ 'grid-template-columns': getGridColumns(question.questionReferenceImage.length) }">
2113
+ <ng-container
2114
+ *ngFor="let item of question.questionReferenceImage;let i=index">
2115
+ <div class="collage-tile"
2116
+ *ngIf="isValidImage(item)">
2117
+ <img class="cursor-pointer"
2118
+ (click)="openImagePopup(getRefImageUrls(question.questionReferenceImage),getRefImageNames(question.questionReferenceImage),i)"
2119
+ [src]="environment.TraxAnswerCDN + item"
2120
+ alt="Reference image">
2121
+ </div>
2122
+ </ng-container>
2123
+ </div>
2124
+ </div>
2125
+ <div class="col-md-6"
2126
+ *ngIf="galleryForm.value.type === 'checklist' && (hasMultiQuestionReferenceImages(question) || (question.questionReferenceImage && question.questionReferenceImage !== ''))">
2127
+ <ng-container
2128
+ *ngIf="galleryForm.value.type === 'checklist' && hasMultiQuestionReferenceImages(question); else noMultiImage">
2129
+ <div class="title-ref my-3">Question Reference Image</div>
2130
+ <div class="collage-grid"
2131
+ [ngStyle]="{ 'grid-template-columns': getGridColumns(question.multiQuestionReferenceImage.length) }">
2132
+ <ng-container
2133
+ *ngFor="let item of question.multiQuestionReferenceImage;let i=index">
2134
+ <div class="collage-tile"
2135
+ *ngIf="isValidImage(item)">
2136
+ <img class="cursor-pointer"
2137
+ (click)="openMultiImagePopup(getMultiRefImageUrls(question.multiQuestionReferenceImage),getRefImageNames(question.multiQuestionReferenceImage),i)"
2138
+ [src]="environment.TraxAnswerCDN + item.imageURL"
2139
+ alt="Reference image">
2140
+ </div>
2141
+ </ng-container>
2142
+ </div>
2143
+ </ng-container>
2144
+ <ng-template #noMultiImage>
2145
+ <div
2146
+ *ngIf="galleryForm.value.type === 'checklist' && question.questionReferenceImage && question.questionReferenceImage !== ''">
2147
+ <div class="title-ref my-3">Reference Image</div>
2148
+ <div class="collage-grid"
2149
+ [ngStyle]="{ 'grid-template-columns': getGridColumns(1) }">
2150
+ <div class="collage-tile">
2151
+ <img class="cursor-pointer"
2152
+ (click)="openImagePopup1(environment.TraxAnswerCDN + question.questionReferenceImage,0)"
2153
+ [src]="environment.TraxAnswerCDN + question.questionReferenceImage"
2154
+ alt="">
2155
+ </div>
2156
+ </div>
2157
+ </div>
2158
+ </ng-template>
2159
+ </div>
2160
+ <div class="col-md-6 row" *ngIf="getImageAnswers(question).length">
2161
+ <div class="d-flex justify-content-between">
2162
+ <div class="title-ref my-3">Uploaded Image</div>
2163
+ </div>
2164
+ <div class="collage-grid"
2165
+ [ngStyle]="{'grid-template-columns': getGridColumns(getImageAnswers(question).length), 'grid-auto-rows': getGridRowHeight(getImageAnswers(question).length)}">
2166
+ <div class="collage-tile position-relative"
2167
+ *ngFor="let item of getImageAnswers(question); let i = index">
2168
+ <span class="position-absolute top-0 end-0 m-2"
2169
+ *ngIf="checkDetectionStatus(item?.runAIData).keyPresent ; else noRunAIDataImgVideo">
2170
+ <span class="badge"
2171
+ [ngClass]="checkDetectionStatus(item?.runAIData).keyValue ? 'bgSuccess' : 'bgDanger'">
2172
+ {{ checkDetectionStatus(item?.runAIData).keyValue ? 'Matched' : 'Not Matched' }}
2173
+ </span>
2174
+ </span>
2175
+ <ng-template #noRunAIDataImgVideo>
2176
+ <span class="position-absolute top-0 end-0 m-2"
2177
+ *ngIf="!checkDetectionStatus(item?.runAIData).keyPresent && question.userAnswer?.[0]?.runAIAnswer && question.userAnswer?.[0]?.detectionStatus !== undefined">
2178
+ <span class="badge"
2179
+ [ngClass]="question.userAnswer[0]?.detectionStatus ? 'bgSuccess' : 'bgDanger'">
2180
+ {{ question.userAnswer[0].detectionStatus ? 'Matched' : 'Not Matched' }}
2181
+ </span>
2182
+ </span>
2183
+ </ng-template>
2184
+ <img class="cursor-pointer"
2185
+ (click)="openImagePopup(getImageUrls(getImageAnswers(question)), getImageNames(getImageAnswers(question)), i)"
2186
+ [src]="(item.runAIAnswer) ? environment.traxRunAiCDN + item.runAIAnswer : environment.TraxAnswerCDN + item.answer"
2187
+ alt="">
2188
+ </div>
2189
+ </div>
2190
+ </div>
2191
+ <div class="col-md-12" *ngFor="let item of getVideoAnswers(question)">
2192
+ <div class="title-ref my-3">Uploaded Video</div>
2193
+ <div class="video-wrapper" [ngClass]="{ 'fullscreen-active': isVideoFullscreen(videoRef) }">
2194
+ <video #videoRef controls class="w-100 h-100"
2195
+ src="{{ (item.runAIAnswer) ? environment.traxRunAiCDN + item.runAIAnswer : environment.TraxAnswerCDN + item.answer }}">
2196
+ </video>
2197
+ </div>
2198
+ </div>
2199
+ <div class="col-md-12" *ngFor="let item of question.userAnswer">
2200
+ <div [ngClass]="item.validationType==='Capture Image'?'col-md-6':'col-md-12'"
2201
+ *ngIf="item.validation && item.validationAnswer && ['Capture Video','Descriptive Answer','Capture Image'].includes(item.validationType)">
2202
+ <div class="title-ref my-3 d-flex justify-content-between"
2203
+ *ngIf="item.validationType==='Capture Image'||item.validationType==='Capture Video'">
2204
+ <span>Validation Answer</span>
2205
+ <span *ngIf="checkDetectionStatus(question.userAnswer?.[0]?.runAIData).keyPresent">
2206
+ <span class="badge"
2207
+ [ngClass]="checkDetectionStatus(question.userAnswer?.[0]?.runAIData).keyValue ? 'bgSuccess' : 'bgDanger'">
2208
+ {{ checkDetectionStatus(question.userAnswer?.[0]?.runAIData).keyValue ? 'Matched' : 'Not Matched' }}
2209
+ </span>
2210
+ </span>
2211
+ </div>
2212
+ <img class="img-logo cursor-pointer"
2213
+ (click)="openImagePopup1((item.runAIAnswer) ? environment.traxRunAiCDN + item.runAIAnswer : environment.TraxAnswerCDN + item.validationAnswer,0)"
2214
+ *ngIf="item.validationType==='Capture Image'"
2215
+ [src]="(item.runAIAnswer) ? environment.traxRunAiCDN + item.runAIAnswer : environment.TraxAnswerCDN + item.validationAnswer"
2216
+ alt="">
2217
+ <div class="position-relative w-100 h-450px p-3"
2218
+ *ngIf="item.validationType==='Capture Video'">
2219
+ <video controls class="w-100 h-100"
2220
+ [src]="environment.TraxAnswerCDN + item.validationAnswer"></video>
2221
+ </div>
2222
+ <span *ngIf="item.validationType==='Descriptive Answer'"
2223
+ [ngClass]="item.sopFlag ? 'flagclour':''">
2224
+ Validation Answer : {{item.validationAnswer}}
2225
+ </span>
2226
+ </div>
2227
+ </div>
2228
+ <div class="remarksTxt" *ngIf="question.remarks">Remarks :
2229
+ {{question.remarks}}</div>
2230
+ </div>
2231
+ </ul>
2232
+
2233
+ <div class="modal fade my-0 py-0" id="imageModal" tabindex="-1"
2234
+ role="dialog" style="overflow:hidden">
2235
+ <div class="modal-dialog modal-dialog-centered modal-lg"
2236
+ role="document">
2237
+ <div class="modal-content ">
2238
+ <div
2239
+ class="modal-body d-flex align-items-center justify-content-center position-relative">
2240
+ <!-- Prev Button -->
2241
+ <button *ngIf="imageList.length > 1"
2242
+ class="btn btn-outline-primary position-absolute start-0 top-50 translate-middle-y ms-3"
2243
+ (click)="navigateImage('prev')"
2244
+ [disabled]="currentImageIndex === 0">
2245
+
2246
+ </button>
2247
+
2248
+ <!-- Image -->
2249
+ <img [src]="selectedImageUrl"
2250
+ style="max-height: 85vh; max-width: 100%; object-fit: contain;"
2251
+ class="img-fluid w-100 mx-1" />
2252
+
2253
+ <!-- Next Button -->
2254
+ <button *ngIf="imageList.length > 1"
2255
+ class="btn btn-outline-primary position-absolute end-0 top-50 translate-middle-y me-3"
2256
+ (click)="navigateImage('next')"
2257
+ [disabled]="currentImageIndex === imageList.length - 1">
2258
+
2259
+ </button>
2260
+ </div>
2261
+
2262
+ </div>
2263
+ </div>
2264
+ </div>
2265
+ <div class="modal fade" id="imageModal1" tabindex="-1" role="dialog">
2266
+ <div class="modal-dialog modal-dialog-centered modal-lg"
2267
+ role="document">
2268
+ <div class="modal-content ">
2269
+ <div
2270
+ class="modal-body d-flex align-items-center justify-content-center position-relative">
2271
+ <!-- Image -->
2272
+ <img [src]="selectedImageUrl"
2273
+ style="max-height: 95vh; max-width: 100%; object-fit: contain;"
2274
+ class="img-fluid w-100 mx-1" />
2275
+ </div>
2276
+ </div>
2277
+ </div>
2278
+ </div>
2279
+
2280
+ <div class="row">
2281
+ <div class="col-md-6 text-start">
2282
+ <!-- <button class="btn btn-secondary rounded-pill m-0 p-2" *ngIf="question?.linkType&&question?.linkquestionenabled">Linked to Question {{question.parentQuestion}}</button> -->
2283
+ </div>
2284
+ <div class="col-md-6 text-end">
2285
+ <button class="btn btn-sm btn-default border-default me-3"
2286
+ [disabled]="question.redo"
2287
+ *ngIf="checktodayDate(checklist?.checklistInfo?.date)&&(gs.userAccess | async)?.userType !== 'tango'&&!checklist?.checklistInfo?.approvalStatus&&(gs.userAccess | async)?.TangoTrax_checklist_isEdit&&this.galleryForm.value.type ==='checklist'&&selectedStores.length===0&&selectedUsers.length===0"
2288
+ (click)="addTask('redo',question,checklist?.checklistInfo,checklist?.storeProfile,section,si+'_'+qi)">
2289
+ <svg xmlns="http://www.w3.org/2000/svg" width="20"
2290
+ height="20" viewBox="0 0 20 20" fill="none">
2291
+ <g clip-path="url(#clip0_6004_11734)">
2292
+ <path
2293
+ d="M19.1693 3.33331V8.33332M19.1693 8.33332H14.1693M19.1693 8.33332L15.3026 4.69998C14.407 3.80391 13.299 3.14932 12.0819 2.79729C10.8649 2.44527 9.57853 2.40727 8.34284 2.68686C7.10716 2.96645 5.96244 3.55451 5.01549 4.39616C4.06855 5.23782 3.35024 6.30564 2.9276 7.49998M0.835938 16.6666V11.6666M0.835938 11.6666H5.83594M0.835938 11.6666L4.7026 15.3C5.59823 16.1961 6.70625 16.8506 7.92328 17.2027C9.14031 17.5547 10.4267 17.5927 11.6624 17.3131C12.898 17.0335 14.0428 16.4455 14.9897 15.6038C15.9367 14.7621 16.655 13.6943 17.0776 12.5"
2294
+ stroke="#344054" stroke-width="2"
2295
+ stroke-linecap="round"
2296
+ stroke-linejoin="round" />
2297
+ </g>
2298
+ <defs>
2299
+ <clipPath id="clip0_6004_11734">
2300
+ <rect width="20" height="20" fill="white" />
2301
+ </clipPath>
2302
+ </defs>
2303
+ </svg>
2304
+ <span class="ms-2 font-defult-task">Redo</span>
2305
+ </button>
2306
+
2307
+ <button class="btn btn-sm btn-default border-default me-3"
2308
+ [disabled]="question.redo"
2309
+ *ngIf="checktodayDate(checklist?.checklistInfo?.date)&&(gs.userAccess | async)?.userType !== 'tango'&&!checklist?.checklistInfo?.approvalStatus&&(gs.userAccess | async)?.TangoTrax_Task_isEdit&&this.galleryForm.value.type==='task'&&selectedStores.length===0&&selectedUsers.length===0"
2310
+ (click)="addTask('redo',question,checklist?.checklistInfo,checklist?.storeProfile,section,si+'_'+qi)">
2311
+ <svg xmlns="http://www.w3.org/2000/svg" width="20"
2312
+ height="20" viewBox="0 0 20 20" fill="none">
2313
+ <g clip-path="url(#clip0_6004_11734)">
2314
+ <path
2315
+ d="M19.1693 3.33331V8.33332M19.1693 8.33332H14.1693M19.1693 8.33332L15.3026 4.69998C14.407 3.80391 13.299 3.14932 12.0819 2.79729C10.8649 2.44527 9.57853 2.40727 8.34284 2.68686C7.10716 2.96645 5.96244 3.55451 5.01549 4.39616C4.06855 5.23782 3.35024 6.30564 2.9276 7.49998M0.835938 16.6666V11.6666M0.835938 11.6666H5.83594M0.835938 11.6666L4.7026 15.3C5.59823 16.1961 6.70625 16.8506 7.92328 17.2027C9.14031 17.5547 10.4267 17.5927 11.6624 17.3131C12.898 17.0335 14.0428 16.4455 14.9897 15.6038C15.9367 14.7621 16.655 13.6943 17.0776 12.5"
2316
+ stroke="#344054" stroke-width="2"
2317
+ stroke-linecap="round"
2318
+ stroke-linejoin="round" />
2319
+ </g>
2320
+ <defs>
2321
+ <clipPath id="clip0_6004_11734">
2322
+ <rect width="20" height="20" fill="white" />
2323
+ </clipPath>
2324
+ </defs>
2325
+ </svg>
2326
+ <span class="ms-2 font-defult-task">Redo</span>
2327
+ </button>
2328
+
2329
+ <button class="btn btn-sm border-val1"
2330
+ *ngIf="!question.task&&!question.taskId&&this.galleryForm.value.type==='checklist'&&(gs.userAccess | async)?.userType !== 'tango'&&!checklist?.checklistInfo?.approvalStatus&& (gs.userAccess | async)?.TangoTrax_Task_isEdit&&selectedStores.length===0&&selectedUsers.length===0"
2331
+ (click)="addTask('createtask',question,checklist?.checklistInfo,checklist?.storeProfile,section,si+'_'+qi)">
2332
+ <svg xmlns="http://www.w3.org/2000/svg" width="20"
2333
+ height="20" viewBox="0 0 20 20" fill="none">
2334
+ <path
2335
+ d="M11.6693 1.66675H5.0026C4.56058 1.66675 4.13665 1.84234 3.82409 2.1549C3.51153 2.46746 3.33594 2.89139 3.33594 3.33341V16.6667C3.33594 17.1088 3.51153 17.5327 3.82409 17.8453C4.13665 18.1578 4.56058 18.3334 5.0026 18.3334H15.0026C15.4446 18.3334 15.8686 18.1578 16.1811 17.8453C16.4937 17.5327 16.6693 17.1088 16.6693 16.6667V6.66675M11.6693 1.66675L16.6693 6.66675M11.6693 1.66675V6.66675H16.6693M10.0026 15.0001V10.0001M7.5026 12.5001H12.5026"
2336
+ stroke="#009BF3" stroke-width="1.67"
2337
+ stroke-linecap="round" stroke-linejoin="round" />
2338
+ </svg>
2339
+ <span class="ms-2 font-task">Create Task</span>
2340
+ </button>
2341
+ <button
2342
+ *ngIf="question.task&&question.taskId &&this.galleryForm.value.type!=='task'"
2343
+ class="btn btn-sm border-val1"
2344
+ (click)="taskredirect(question,checklist?.storeProfile,checklist?.checklistInfo)">
2345
+ <span class="font-task">View Task</span>
2346
+ </button>
2347
+ </div>
2348
+ </div>
2349
+ </div>
2350
+ </div>
2351
+ </div>
2352
+ </div>
2353
+ </div>
2354
+
2355
+ <div class="px-10 my-5" *ngIf="imageChecklist.includes(select)">
2356
+ <div class="text-center" *ngIf="clientData.logo&&clientData.logo!==''">
2357
+ <img class="mt-5 mb-3 text-center iconsize" src="{{clientData.logo}}">
2358
+ </div>
2359
+ <!-- <div> <h2>Checklist Name : {{this.checklistName}}</h2> </div> -->
2360
+ <div *ngIf="!['outsidebusinesshoursqueuetracking', 'halfshutter','tvcompliance','cameratampering','staffgrouping','employeeCount'].includes(galleryForm.value.sourceCheckList_id)">
2361
+ @if(['Store Hygiene Monitoring','Mobile usage detection','Uniform detection','staffgrouping','employeeCount'].includes(this.checklistName)) {
2362
+ <div class="row">
2363
+ <div class="col-md-3" >
2364
+ <h3 class="uni-title">Checklist Name:</h3>
2365
+ </div>
2366
+ <div class="col-md-9">
2367
+ <p class="uni-subtitle">{{this.checklistName}} </p>
2368
+ </div>
2369
+ </div>
2370
+ }
2371
+ <div class=" my-3 mt-5" *ngFor="let item of mobileusageData">
2372
+ <div class="row px-10 mt-5">
2373
+ <div class="col-md-3" *ngIf="!['Store Hygiene Monitoring','Mobile usage detection','Uniform detection'].includes(this.checklistName)">
2374
+ <h3 class="uni-title">Checklist Name</h3>
2375
+ </div>
2376
+ <div class="col-md-9" *ngIf="!['Store Hygiene Monitoring','Mobile usage detection','Uniform detection'].includes(this.checklistName)">
2377
+ <p class="uni-subtitle">: {{this.checklistName}} </p>
2378
+ </div>
2379
+ <div class="col-md-3" *ngIf="!['Store Hygiene Monitoring','Mobile usage detection','Uniform detection'].includes(this.checklistName)">
2380
+ <h3 class="uni-title">Store Name</h3>
2381
+ </div>
2382
+ <div class="col-md-9" *ngIf="!['Store Hygiene Monitoring','Mobile usage detection','Uniform detection'].includes(this.checklistName)">
2383
+ <p class="uni-subtitle">: {{item.storeName}}</p>
2384
+ </div>
2385
+ <div class="col-md-3" *ngIf="item.down_time && !['Store Hygiene Monitoring','Mobile usage detection','Uniform detection'].includes(this.checklistName)" >
2386
+ <h3 class="uni-title">Average Downtime</h3>
2387
+ </div>
2388
+ <div class="col-md-9" *ngIf="item.down_time && !['Store Hygiene Monitoring','Mobile usage detection','Uniform detection'].includes(this.checklistName)">
2389
+ <p class="uni-subtitle">: {{item.down_time}} Mins</p>
2390
+ </div>
2391
+ </div>
2392
+ <ul class="row w-100">
2393
+ <!-- <li class="qa-heading"> {{item.storeName}} </li> -->
2394
+ <div class="row">
2395
+ <div class="row qa-bodrer mb-4" *ngFor="let detection of item?.imageUrl">
2396
+ <div class="my-2" [ngClass]="detection?.detectionStatus_afterTaskSubmission ? 'col-md-6' : 'col-md-12'">
2397
+ @if(['Mobile usage detection','Uniform detection'].includes(this.checklistName)) {
2398
+ <img class="w-100 h-500px rounded-top cursor-pointer"
2399
+ src="{{environment.TraxAIchecklistCDN}}{{detection.imageurl}}"
2400
+ alt="" *ngIf="detection?.imageurl" (click)="openImagePreview(environment.TraxAIchecklistCDN + detection.imageurl, this.checklistName)">
2401
+ }@else if(['Store Hygiene Monitoring'].includes(this.checklistName)) {
2402
+ <div *ngIf="detection?.detectionStatus_afterTaskSubmission" class="mb-3 uni-title">
2403
+ Breached Image
2404
+ </div>
2405
+ <div>
2406
+ @if(detection.imageurl) {
2407
+ <img (click)="openImagePreview(environment.TraxAIchecklistCDN + detection.imageurl, this.checklistName)"
2408
+ src="{{environment.TraxAIchecklistCDN}}{{detection.imageurl}}"
2409
+ alt="" [ngClass]="detection?.detectionStatus_afterTaskSubmission ? 'w-100 heightImage rounded' : 'rounded-top w-100 h-500px'" *ngIf="detection.imageurl" />
2410
+ }@else {
2411
+ <img (click)="openImagePreview(environment.TraxAIchecklistCDN + detection, this.checklistName)"
2412
+ src="{{environment.TraxAIchecklistCDN}}{{detection}}"
2413
+ alt="" [ngClass]="detection?.detectionStatus_afterTaskSubmission ? 'w-100 heightImage rounded' : 'rounded-top w-100 h-500px'" *ngIf="!['File Not Received','Files Not Received'].includes(detection?.detectionStatus)" />
2414
+ }
2415
+ </div>
2416
+ } @else{
2417
+ <img (click)="openImagePreview(environment.TraxAIchecklistCDN + detection, this.checklistName)" class="w-100 h-500px rounded-top"
2418
+ src="{{environment.TraxAIchecklistCDN}}{{detection}}"
2419
+ alt="" >
2420
+ }
2421
+ <!-- <div class="text-center mt-3"> {{this.checklistName}}</div> -->
2422
+ </div>
2423
+ <div class="my-2 col-md-6" *ngIf="detection?.detectionStatus_afterTaskSubmission">
2424
+ <div class="d-flex justify-content-between mb-3" >
2425
+ <div class="uni-title">
2426
+ Detection after Task Submission
2427
+ </div>
2428
+ <div>
2429
+ <span class="ms-3 badge badge-light-success"
2430
+ *ngIf="detection?.detectionStatus_afterTaskSubmission === 'Clean'">Clean</span>
2431
+ <span class="ms-3 mt-1 badge badge-light-danger"
2432
+ *ngIf="detection?.detectionStatus_afterTaskSubmission !== 'Clean'">{{detection.detectionStatus_afterTaskSubmission}}</span>
2433
+ </div>
2434
+ </div>
2435
+ <div >
2436
+ <img class="w-100 heightImage rounded"
2437
+ src="{{environment.TraxAIchecklistCDN}}{{detection.new_image_url}}" alt="" *ngIf="detection.new_image_url">
2438
+ <svg xmlns="http://www.w3.org/2000/svg" width="389" height="218" viewBox="0 0 389 218" fill="none" *ngIf="!detection.new_image_url">
2439
+ <rect width="389" height="218" rx="8" fill="black"/>
2440
+ </svg>
2441
+ </div>
2442
+ </div>
2443
+ <div class="row" *ngIf="['Store Hygiene Monitoring','Mobile usage detection','Uniform detection'].includes(this.checklistName)">
2444
+ <div class="col-md-3" *ngIf="item.storeName">
2445
+ <h3 class="uni-title">Store Name</h3>
2446
+ </div>
2447
+ <div class="col-md-9" *ngIf="item.storeName">
2448
+ <p class="uni-subtitle">: <span class="ms-3">{{item.storeName}}</span></p>
2449
+ </div>
2450
+
2451
+ <div class="col-md-3" *ngIf="detection.detectionTime">
2452
+ <h3 class="uni-title">Detected At</h3>
2453
+ </div>
2454
+ <div class="col-md-3" *ngIf="detection.detectionTime">
2455
+ <p class="uni-subtitle text-nowrap">: <span class="ms-3 badge badge-light-primary">{{detection.detectionTime}}</span></p>
2456
+ </div>
2457
+
2458
+ <div class="col-md-3" *ngIf="detection?.detectionType">
2459
+ <h3 class="uni-title">Detection Type</h3>
2460
+ </div>
2461
+ <div class="col-md-3" *ngIf="detection?.detectionType">
2462
+ <p class="uni-subtitle text-nowrap"> : <span class="ms-3 badge badge-light-warning">{{detection.detectionType}}</span></p>
2463
+ </div>
2464
+
2465
+ <div class="col-md-3" *ngIf="detection?.detectionStatus">
2466
+ <h3 class="uni-title">Detection Status</h3>
2467
+ </div>
2468
+
2469
+ <div [class]="(detection?.downtime != null && detection?.downtime != undefined) ? ['File Not Received','Files Not Received'].includes(detection?.detectionStatus) ? 'col-md-5' : 'col-md-3' : 'col-md-9'"
2470
+ *ngIf="detection?.detectionStatus">
2471
+ <p class="uni-subtitle"> :
2472
+ <!-- <span class="ms-3 badge badge-light-danger" *ngIf="detection?.Flag">Breached</span>
2473
+ <span class="ms-3 badge badge-light-success" *ngIf="!detection?.Flag">Not Breached</span> -->
2474
+ <span class="ms-3 badge badge-light-danger"
2475
+ *ngIf="detection?.detectionStatus === 'Clutter'">Clutter</span>
2476
+ <span class="ms-3 badge badge-light-danger"
2477
+ *ngIf="detection?.detectionStatus === 'Breached'">Breached</span>
2478
+ <span class="ms-3 badge badge-light-success"
2479
+ *ngIf="detection?.detectionStatus === 'Not Breached'">Not
2480
+ Breached</span>
2481
+ <span class="ms-3 badge badge-light-success"
2482
+ *ngIf="detection?.detectionStatus === 'Clean'">Clean</span>
2483
+ <span class="ms-3 badge badge-light-danger"
2484
+ *ngIf="detection?.detectionStatus === 'Offline' || ['File Not Received','Files Not Received'].includes(detection?.detectionStatus)">Offline – No data Received from store</span>
2485
+ </p>
2486
+ </div>
2487
+
2488
+ <div [class]="['File Not Received','Files Not Received'].includes(detection?.detectionStatus) ? 'col-md-2' : 'col-md-3'" *ngIf="detection?.downtime != null && detection?.downtime != undefined">
2489
+ <h3 class="uni-title">Downtime</h3>
2490
+ </div>
2491
+ <div [class]="['File Not Received','Files Not Received'].includes(detection?.detectionStatus) ? 'col-md-2' : 'col-md-3'" *ngIf="detection?.downtime != null && detection?.downtime != undefined">
2492
+ <p class="uni-subtitle">: <span class="ms-3">{{detection.downtime}} Mins </span></p>
2493
+ </div>
2494
+
2495
+ <div class="col-md-6" *ngIf="detection.detectionTime_afterTaskSubmission">
2496
+ <h3 class="uni-title">Detection Time (After Task Submission)</h3>
2497
+ </div>
2498
+ <div class="col-md-6" *ngIf="detection.detectionTime_afterTaskSubmission">
2499
+ <p class="uni-subtitle">: <span class="ms-3 badge badge-light-primary">{{detection.detectionTime_afterTaskSubmission}}</span></p>
2500
+ </div>
2501
+ <div class="col-md-3" *ngIf="detection.detectionOn">
2502
+ <h3 class="uni-title">Detection On</h3>
2503
+ </div>
2504
+ <div class="col-md-9" *ngIf="detection.detectionOn">
2505
+ <p class="uni-subtitle">:<span class="ms-3">{{detection.detectionOn}}</span></p>
2506
+ </div>
2507
+ </div>
2508
+ </div>
2509
+ <div class="col-md-12 my-2" *ngFor="let detection of item?.imagesData">
2510
+ <div class="card-toolbar"
2511
+ *ngIf="galleryForm.value.sourceCheckList_id==='inventorycount'">
2512
+ <div class="row">
2513
+ <div class="col-md-8">
2514
+ <span class="ms-3"
2515
+ *ngIf="detection?.date_timestamp">Detection Time :
2516
+ <span class="badge badge-light-primary">
2517
+ {{detection.date_timestamp}} </span>
2518
+ </span>
2519
+ </div>
2520
+ <div class="col-md-4 text-end">
2521
+ <span class="ms-3" *ngIf="detection?.car_count">No of
2522
+ cars :
2523
+ <span class="badge badge-light-primary">
2524
+ {{detection.car_count}}</span>
2525
+ </span>
2526
+ </div>
2527
+ </div>
2528
+ </div>
2529
+
2530
+ <div class="card-toolbar"
2531
+ *ngIf="galleryForm.value.sourceCheckList_id==='numberplateinfo'">
2532
+ <div class="row">
2533
+ <div class="col-md-8">
2534
+ <span class="ms-3"
2535
+ *ngIf="detection?.car_license_id">Number Plate :
2536
+ <span class="badge badge-light-primary">
2537
+ {{detection.car_license_id}}</span>
2538
+ </span>
2539
+ </div>
2540
+ <div class="col-md-4 text-end">
2541
+ <span class="ms-3"
2542
+ *ngIf="detection?.date_timestamp">Entry Time :
2543
+ <span class="badge badge-light-primary">
2544
+ {{detection.date_timestamp}}</span>
2545
+ </span>
2546
+ </div>
2547
+ </div>
2548
+
2549
+ </div>
2550
+ <div class="card-toolbar"
2551
+ *ngIf="galleryForm.value.sourceCheckList_id==='carsattended'">
2552
+ <div class="row">
2553
+ <div class="col-md-6">
2554
+ <span class="ms-3"
2555
+ *ngIf="detection?.interacted_person_count">Number of
2556
+ People Interacted :
2557
+ <span class="badge badge-light-primary">
2558
+ {{detection.interacted_person_count}}</span>
2559
+ </span>
2560
+ </div>
2561
+ <div class="col-md-6 text-end">
2562
+ <span class="ms-3"
2563
+ *ngIf="detection?.car_reg_number">Number Plate :
2564
+ <span class="badge badge-light-primary">
2565
+ {{detection?.car_reg_number}}</span>
2566
+ </span>
2567
+ </div>
2568
+ </div>
2569
+ <div class="row">
2570
+ <div class="col-md-6">
2571
+ <span class="ms-3"
2572
+ *ngIf="detection?.car_reg_number">Detection Time :
2573
+ <span class="badge badge-light-primary">
2574
+ {{detection?.date_timestamp}}</span>
2575
+ </span>
2576
+ </div>
2577
+ <div class="col-md-6 text-end">
2578
+ <span class="ms-3"
2579
+ *ngIf="detection?.interacted_duration_in_secs">Time
2580
+ spent :
2581
+ <span class="badge badge-light-primary">
2582
+ {{detection.interacted_duration_in_secs}}
2583
+ Mins</span>
2584
+ </span>
2585
+ </div>
2586
+ </div>
2587
+ </div>
2588
+ <div class="card-toolbar"
2589
+ *ngIf="galleryForm.value.sourceCheckList_id==='vehicle_check_in'">
2590
+ <div class="row">
2591
+ <div class="col-md-8">
2592
+ <span class="ms-3"
2593
+ *ngIf="detection?.date_timestamp">Detection Time :
2594
+ <span class="badge badge-light-primary">
2595
+ {{detection.date_timestamp}}</span>
2596
+ </span>
2597
+ </div>
2598
+ <div class="col-md-4 text-end">
2599
+ <span class="ms-3"
2600
+ *ngIf="detection?.date_timestamp">Slot :
2601
+ <span class="badge badge-light-primary">
2602
+ {{detection.slot_id}}</span>
2603
+ </span>
2604
+ </div>
2605
+ </div>
2606
+ </div>
2607
+ <div class="card-toolbar"
2608
+ *ngIf="galleryForm.value.sourceCheckList_id==='outsidebusinesshoursqueuetracking'">
2609
+ <div class="snapcard">
2610
+ <div class="row px-10 mt-5 margin-left-side ">
2611
+ <div class="col-md-3" *ngIf="detection?.storeName">
2612
+ <h3 class="uni-title">Store Name</h3>
2613
+ </div>
2614
+ <div class="col-md-9">
2615
+ <p class="uni-subtitle">: <span
2616
+ class="ms-3">{{detection.storeName}}</span>
2617
+ </p>
2618
+ </div>
2619
+ <div class="col-md-3">
2620
+ <h3 class="uni-title">Detection Status</h3>
2621
+ </div>
2622
+
2623
+ <div class="col-md-3"
2624
+ *ngIf="detection?.detectionStatus; else noDetectionStatus">
2625
+ <p class="uni-subtitle"> :
2626
+ <!-- <span class="ms-3 badge badge-light-danger" *ngIf="detection?.Flag">Breached</span>
2627
+ <span class="ms-3 badge badge-light-success" *ngIf="!detection?.Flag">Not Breached</span> -->
2628
+ <span class="ms-3 badge badge-light-danger"
2629
+ *ngIf="detection?.detectionStatus === 'Breached'">Breached</span>
2630
+ <span class="ms-3 badge badge-light-success"
2631
+ *ngIf="detection?.detectionStatus === 'Not Breached'">Not
2632
+ Breached</span>
2633
+ <span class="ms-3 badge badge-light-danger"
2634
+ *ngIf="detection?.detectionStatus === 'Offline'">Offline</span>
2635
+ </p>
2636
+ </div>
2637
+ <ng-template #noDetectionStatus>
2638
+ <div class="col-md-3">
2639
+ <p class="uni-subtitle"> :
2640
+ <span class="ms-3 badge badge-light-danger"
2641
+ *ngIf="detection?.Flag">Breached</span>
2642
+ <span class="ms-3 badge badge-light-success"
2643
+ *ngIf="!detection?.Flag">Not
2644
+ Breached</span>
2645
+ </p>
2646
+ </div>
2647
+ </ng-template>
2648
+ <div class="col-md-3">
2649
+ <h3 class="uni-title">Date</h3>
2650
+ </div>
2651
+ <div class="col-md-3">
2652
+ <p class="uni-subtitle">: <span
2653
+ class="ms-3">{{detection.Date|date:'dd-MM-yyyy'
2654
+ }} </span></p>
2655
+ </div>
2656
+ <div class="col-md-3" *ngIf="detection?.detections">
2657
+ <h3 class="uni-title">Detection Count</h3>
2658
+ </div>
2659
+ <div class="col-md-9">
2660
+ <p class="uni-subtitle">: <span
2661
+ class="ms-3">{{detection.detections.length}}</span>
2662
+ </p>
2663
+ </div>
2664
+ <div class="col-md-3" *ngIf="detection?.detections">
2665
+ <h3 class="uni-title">Detection at</h3>
2666
+ </div>
2667
+ <div class="col-md-9">
2668
+ <p class="uni-subtitle">: <span
2669
+ class="ms-3">{{detection.storeName}}</span>
2670
+ </p>
2671
+ </div>
2672
+ <div class="col-md-3" *ngIf="detection?.downtime">
2673
+ <h3 class="uni-title">Downtime</h3>
2674
+ </div>
2675
+ <div class="col-md-3" *ngIf="detection?.downtime">
2676
+ <p class="uni-subtitle">: <span
2677
+ class="ms-3">{{detection.downtime}} mins
2678
+ <span
2679
+ ngbTooltip="Downtime may result in inaccurate data"
2680
+ placement="top" container="body">
2681
+ <svg xmlns="http://www.w3.org/2000/svg"
2682
+ width="15" height="16"
2683
+ viewBox="0 0 15 16" fill="none">
2684
+ <path
2685
+ d="M7.66667 5.33203V7.9987M7.66667 10.6654H7.67333M14.3333 7.9987C14.3333 11.6806 11.3486 14.6654 7.66667 14.6654C3.98477 14.6654 1 11.6806 1 7.9987C1 4.3168 3.98477 1.33203 7.66667 1.33203C11.3486 1.33203 14.3333 4.3168 14.3333 7.9987Z"
2686
+ stroke="#667085"
2687
+ stroke-width="1.33333"
2688
+ stroke-linecap="round"
2689
+ stroke-linejoin="round" />
2690
+ </svg>
2691
+ </span>
2692
+ </span></p>
2693
+ </div>
2694
+ </div>
2695
+ </div>
2696
+ </div>
2697
+ <div class="mt-2"
2698
+ *ngIf="detection.path && detection.path !== null && detection.path !== undefined && detection.path !== ''">
2699
+ <img class="w-100 h-500px rounded-top"
2700
+ src="{{environment.TraxAIchecklistCDN}}{{detection.path}}"
2701
+ alt="">
2702
+ <div class="text-center mt-3"> {{this.checklistName}}</div>
2703
+ </div>
2704
+ </div>
2705
+ </div>
2706
+ </ul>
2707
+ </div>
2708
+ </div>
2709
+ <div
2710
+ *ngIf="galleryForm.value.sourceCheckList_id === 'outsidebusinesshoursqueuetracking'">
2711
+ <div class=" my-3 mt-5" *ngFor="let item of mobileusageData">
2712
+ <div class="row px-10 mt-5">
2713
+ <div class="col-md-3">
2714
+ <h3 class="uni-title">Checklist Name</h3>
2715
+ </div>
2716
+ <div class="col-md-9">
2717
+ <p class="uni-subtitle">: {{this.checklistName}} </p>
2718
+ </div>
2719
+ </div>
2720
+ <ul class="row">
2721
+ <div class="col-md-12 my-2" *ngFor="let detection of item?.imagesData">
2722
+ <div class="card-toolbar"
2723
+ *ngIf="galleryForm.value.sourceCheckList_id==='outsidebusinesshoursqueuetracking'">
2724
+ <div class="snapcard">
2725
+ <div class="row px-10 mt-5 margin-left-side ">
2726
+ <div class="col-md-3" *ngIf="detection?.storeName">
2727
+ <h3 class="uni-title">Store Name</h3>
2728
+ </div>
2729
+ <div class="col-md-9">
2730
+ <p class="uni-subtitle">: <span
2731
+ class="ms-3">{{detection.storeName}}</span></p>
2732
+ </div>
2733
+ <div class="col-md-3">
2734
+ <h3 class="uni-title">Detection Status</h3>
2735
+ </div>
2736
+ <div class="col-md-3">
2737
+ <p class="uni-subtitle"
2738
+ *ngIf="detection?.detectionStatus"> :
2739
+ <span class="ms-3 badge badge-light-danger"
2740
+ *ngIf="detection?.detectionStatus === 'Detected'">Detected</span>
2741
+ <span class="ms-3 badge badge-light-success"
2742
+ *ngIf="detection?.detectionStatus === 'Not Detected'">Not
2743
+ Detected</span>
2744
+ <span class="ms-3 badge badge-light-danger"
2745
+ *ngIf="detection?.detectionStatus === 'Offline'">Offline</span>
2746
+ </p>
2747
+ </div>
2748
+ <div class="col-md-3">
2749
+ <h3 class="uni-title text-end">Date</h3>
2750
+ </div>
2751
+ <div class="col-md-3">
2752
+ <p class="uni-subtitle">: <span
2753
+ class="ms-3">{{detection.Date}} </span></p>
2754
+ </div>
2755
+ <div class="col-md-3" *ngIf="detection?.detections">
2756
+ <h3 class="uni-title">Detection Count</h3>
2757
+ </div>
2758
+ <div class="col-md-9">
2759
+ <p class="uni-subtitle">: <span
2760
+ class="ms-3">{{detection.detections.length}}</span>
2761
+ </p>
2762
+ </div>
2763
+ <div class="col-md-3" *ngIf="detection?.detections">
2764
+ <h3 class="uni-title">Detection at</h3>
2765
+ </div>
2766
+ <div class="col-md-9">
2767
+ <p class="uni-subtitle">:
2768
+ <span
2769
+ *ngFor="let detectionAt of detection.detections; let i=index">
2770
+ <span class="ms-3 badge backgroundGray"
2771
+ *ngIf="i < 5">
2772
+ {{detectionAt}}
2773
+ </span>
2774
+ </span>
2775
+ <span *ngIf="detection.detections.length > 5"
2776
+ class="ms-3 badge backgroundGray">
2777
+ +{{ detection.detections.length - 5 }}
2778
+ </span>
2779
+ </p>
2780
+ </div>
2781
+ <div class="col-md-3" *ngIf="detection?.downtime">
2782
+ <h3 class="uni-title">Downtime</h3>
2783
+ </div>
2784
+ <div class="col-md-3" *ngIf="detection?.downtime">
2785
+ <p class="uni-subtitle">: <span
2786
+ class="ms-3">{{detection.downtime}} mins
2787
+ <span
2788
+ ngbTooltip="Downtime may result in inaccurate data"
2789
+ placement="top" container="body">
2790
+ <svg xmlns="http://www.w3.org/2000/svg"
2791
+ width="15" height="16"
2792
+ viewBox="0 0 15 16" fill="none">
2793
+ <path
2794
+ d="M7.66667 5.33203V7.9987M7.66667 10.6654H7.67333M14.3333 7.9987C14.3333 11.6806 11.3486 14.6654 7.66667 14.6654C3.98477 14.6654 1 11.6806 1 7.9987C1 4.3168 3.98477 1.33203 7.66667 1.33203C11.3486 1.33203 14.3333 4.3168 14.3333 7.9987Z"
2795
+ stroke="#667085"
2796
+ stroke-width="1.33333"
2797
+ stroke-linecap="round"
2798
+ stroke-linejoin="round" />
2799
+ </svg>
2800
+ </span>
2801
+ </span></p>
2802
+ </div>
2803
+ </div>
2804
+ </div>
2805
+ </div>
2806
+ </div>
2807
+ </ul>
2808
+ </div>
2809
+ </div>
2810
+ <div *ngIf="galleryForm.value.sourceCheckList_id === 'halfshutter'||galleryForm.value.sourceCheckList_id === 'tvcompliance'||galleryForm.value.sourceCheckList_id === 'cameratampering'||galleryForm.value.sourceCheckList_id === 'staffgrouping'||galleryForm.value.sourceCheckList_id === 'employeeCount'">
2811
+ <div class=" my-3 mt-5">
2812
+ <div class="row px-10 mt-5">
2813
+ <div class="col-md-3">
2814
+ <h3 class="uni-title">Checklist Name</h3>
2815
+ </div>
2816
+ <div class="col-1">:</div>
2817
+ <div class="col-md-8">
2818
+ <p class="uni-subtitle"> {{this.checklistName}} </p>
2819
+ </div>
2820
+ </div>
2821
+ <ul class="row" *ngFor="let item of mobileusageData">
2822
+ <div class="col-md-12 my-2" *ngFor="let detection of item?.imagesData">
2823
+ <div class="card-toolbar"
2824
+ *ngIf="galleryForm.value.sourceCheckList_id==='halfshutter'||galleryForm.value.sourceCheckList_id === 'tvcompliance'||galleryForm.value.sourceCheckList_id === 'cameratampering'||galleryForm.value.sourceCheckList_id === 'staffgrouping'||galleryForm.value.sourceCheckList_id === 'employeeCount'">
2825
+ <div class="snapcard">
2826
+ <div class="row px-10 mt-5 margin-left-side ">
2827
+ <div class="col-md-12" *ngIf="detection?.storeName">
2828
+ <h3 class="uni-title row">
2829
+ <span class="label col-md-4">Store Name</span>
2830
+ <span class="col-1">:</span>
2831
+ <span class="value col-md-7">{{ detection.storeName }}</span>
2832
+ </h3>
2833
+ </div>
2834
+ <div class="col-md-12" *ngIf="detection.detectionTime">
2835
+ <h3 class="uni-title row">
2836
+ <span class="label col-md-4">Detection Time</span> <span class="col-1">:</span>
2837
+ <span class="col-md-7">
2838
+
2839
+ <span class="badge badge-light-primary">{{detection.detectionTime}}</span>
2840
+ </span>
2841
+ </h3>
2842
+ </div>
2843
+ <div class="col-md-12">
2844
+
2845
+ <h3 class="uni-title row" >
2846
+ <ng-container *ngIf="detection?.detectionStatus&&galleryForm.value.sourceCheckList_id != 'employeeCount'">
2847
+
2848
+ <span class="label col-md-4">Detection Status</span><span class="col-1">:</span>
2849
+ <span class="col-md-2">
2850
+ <span class="badge badge-light-danger"
2851
+ *ngIf="detection?.detectionStatus === 'Breached'">Breached</span>
2852
+ <span class="badge badge-light-success"
2853
+ *ngIf="detection?.detectionStatus === 'Not Breached'">Not Breached</span>
2854
+ <span class="badge badge-light-danger"
2855
+ *ngIf="detection?.detectionStatus === 'angle changed'">Angle Changed</span>
2856
+ <span class="badge badge-light-danger"
2857
+ *ngIf="['Offline','Files Not Received'].includes(detection.detectionStatus)">Files Not Received</span>
2858
+ </span>
2859
+ </ng-container>
2860
+ <ng-container *ngIf="galleryForm.value.sourceCheckList_id === 'employeeCount'">
2861
+
2862
+ <span class="label col-md-4">Employee Count</span><span class="col-1">:</span>
2863
+ <span class="col-md-2">
2864
+ <span class="badge badge-light-primary" *ngIf="detection.employee_count">{{detection.employee_count}}</span>
2865
+ </span>
2866
+ </ng-container>
2867
+ <ng-container *ngIf="detection?.downtime != null && detection?.downtime != undefined">
2868
+
2869
+ <span class="label col-md-2">Downtime</span> <span class="col-1">:</span>
2870
+ <span
2871
+ class="col-md-2">{{detection.downtime}} mins
2872
+ <span
2873
+ ngbTooltip="Downtime may result in inaccurate data"
2874
+ placement="top" container="body">
2875
+ <svg xmlns="http://www.w3.org/2000/svg"
2876
+ width="15" height="16"
2877
+ viewBox="0 0 15 16" fill="none">
2878
+ <path
2879
+ d="M7.66667 5.33203V7.9987M7.66667 10.6654H7.67333M14.3333 7.9987C14.3333 11.6806 11.3486 14.6654 7.66667 14.6654C3.98477 14.6654 1 11.6806 1 7.9987C1 4.3168 3.98477 1.33203 7.66667 1.33203C11.3486 1.33203 14.3333 4.3168 14.3333 7.9987Z"
2880
+ stroke="#667085"
2881
+ stroke-width="1.33333"
2882
+ stroke-linecap="round"
2883
+ stroke-linejoin="round" />
2884
+ </svg>
2885
+ </span>
2886
+ </span>
2887
+ </ng-container>
2888
+
2889
+ </h3>
2890
+ </div>
2891
+
2892
+ <div class="col-md-12" *ngIf="detection?.configuredStoreTime">
2893
+ <h3 class="uni-title row">
2894
+ <span class="label col-md-4">Configured Store Time</span>
2895
+ <span class="col-1">:</span>
2896
+ <span class="value col-md-3"><span class="badge badge-num-muted">{{detection.configuredStoreTime}}</span></span>
2897
+ </h3>
2898
+ </div>
2899
+ <div class="col-md-12" *ngIf="detection.streamId">
2900
+ <h3 class="uni-title row">
2901
+ <span class="label col-md-4">Camera Name & Stream ID</span>
2902
+ <span class="col-1">:</span>
2903
+ <span class="cursor-pointer col-md-5" (click)="cameraView(detection.StoreID)"><span class="badge badge-num-muted">{{detection.cameraName}}{{detection.streamId}}<span class="ms-2" ><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
2904
+ <path d="M12 8.66667V12.6667C12 13.0203 11.8595 13.3594 11.6095 13.6095C11.3594 13.8595 11.0203 14 10.6667 14H3.33333C2.97971 14 2.64057 13.8595 2.39052 13.6095C2.14048 13.3594 2 13.0203 2 12.6667V5.33333C2 4.97971 2.14048 4.64057 2.39052 4.39052C2.64057 4.14048 2.97971 4 3.33333 4H7.33333M10 2H14M14 2V6M14 2L6.66667 9.33333" stroke="#344054" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
2905
+ </svg></span></span></span></h3>
2906
+ </div>
2907
+ <div class="col-md-12" *ngIf="galleryForm.value.sourceCheckList_id === 'halfshutter'">
2908
+ <h3 class="uni-title row">
2909
+ <span class="label col-md-4">Scheduled Employee</span>
2910
+ <span class="col-1">:</span>
2911
+ <span class="value col-md-7">
2912
+ @if(detection.scheduleEmp.length) {
2913
+ <span class="badge badge-num-muted" *ngFor="let emp of detection.scheduleEmp">{{emp}}</span>
2914
+ }@else {
2915
+ <span class="badge badge-num-muted">NA</span>
2916
+ }
2917
+ </span>
2918
+ </h3>
2919
+ </div>
2920
+ <div class="col-md-12 my-2" *ngIf="detection?.path">
2921
+ <div class="" *ngIf="galleryForm.value.sourceCheckList_id === 'cameratampering'||galleryForm.value.sourceCheckList_id === 'staffgrouping'||galleryForm.value.sourceCheckList_id === 'employeeCount'">
2922
+ <img class="w-100 h-500px rounded-top cursor-pointer"
2923
+ src="{{environment.TraxAIchecklistCDN}}{{detection.path}}"
2924
+ (click)="openImagePreview(environment.TraxAIchecklistCDN + detection.path, this.checklistName)"
2925
+ alt="">
2926
+ </div>
2927
+ <div class="" *ngIf="galleryForm.value.sourceCheckList_id != 'cameratampering'&&galleryForm.value.sourceCheckList_id != 'staffgrouping'&&galleryForm.value.sourceCheckList_id != 'employeeCount'">
2928
+
2929
+ <img class="w-100 h-500px rounded-top cursor-pointer"
2930
+ src="{{environment.TraxAIchecklistCDN}}{{detection.path}}"
2931
+ (click)="openImagePreview(environment.TraxAIchecklistCDN + detection.path, this.checklistName)"
2932
+ alt="">
2933
+ </div>
2934
+ </div>
2935
+ </div>
2936
+ </div>
2937
+ </div>
2938
+ </div>
2939
+ </ul>
2940
+ </div>
2941
+ </div>
2942
+
2943
+ </div>
2944
+
2945
+ <div class="px-10 my-5" *ngIf="videoChecklist.includes(select)">
2946
+ <div class="text-center" *ngIf="clientData.logo&&clientData.logo!==''">
2947
+ <img class="mt-5 mb-3 text-center iconsize" src="{{clientData.logo}}">
2948
+ </div>
2949
+
2950
+ <div class="my-3 mt-5" *ngFor="let item of customerunattendedData">
2951
+ <div class="row px-10 mt-5">
2952
+ <div class="col-md-3">
2953
+ <h3 class="uni-title">Checklist Name</h3>
2954
+ </div>
2955
+ <div class="col-md-9">
2956
+ <p class="uni-subtitle">: <span class="ms-3">{{this.checklistName}}</span>
2957
+ </p>
2958
+ </div>
2959
+ <div class="col-md-3">
2960
+ <h3 class="uni-title">Store Name</h3>
2961
+ </div>
2962
+ <div class="col-md-9">
2963
+ <p class="uni-subtitle">: <span class="ms-3">{{item.storeName}}</span></p>
2964
+ </div>
2965
+ </div>
2966
+ <ul class="row w-100 margin-top-side">
2967
+ <li class="qa-heading"> </li>
2968
+ <div class="row">
2969
+ <div class="col-md-12" *ngFor="let detection of item.imagesData">
2970
+ <div class="row px-10 mt-5 margin-left-side"
2971
+ *ngIf="select!=='suspiciousactivity'">
2972
+ <div class="col-md-3"
2973
+ *ngIf="detection?.detectionStatus; else noDetectionStatusCard">
2974
+ <h3 class="uni-title">Detection Status</h3>
2975
+ </div>
2976
+ <ng-template #noDetectionStatusCard>
2977
+ <div class="col-md-3" *ngIf="detection?.Answer">
2978
+ <h3 class="uni-title">Detection Status</h3>
2979
+ </div>
2980
+ </ng-template>
2981
+ <div class="col-md-3"
2982
+ *ngIf="detection?.detectionStatus; else noDetectionStatus">
2983
+ <p class="uni-subtitle">:
2984
+ <!-- <span class="ms-3 badge badge-light-danger" *ngIf="detection?.Answer==='rejected'">Breached</span>
2985
+ <span class="ms-3 badge badge-light-success" *ngIf="detection?.Answer==='approved'">Not Breached</span> -->
2986
+ <span class="ms-3 badge badge-light-danger"
2987
+ *ngIf="detection?.detectionStatus === 'Breached'">Breached</span>
2988
+ <span class="ms-3 badge badge-light-success"
2989
+ *ngIf="detection?.detectionStatus === 'Not Breached'">Not
2990
+ Breached</span>
2991
+ <span class="ms-3 badge badge-light-danger"
2992
+ *ngIf="detection?.detectionStatus === 'Offline'">Offline</span>
2993
+ </p>
2994
+ </div>
2995
+ <ng-template #noDetectionStatus>
2996
+ <div class="col-md-3" *ngIf="detection?.Answer">
2997
+ <p class="uni-subtitle">:
2998
+ <span class="ms-3 badge badge-light-danger"
2999
+ *ngIf="detection?.Answer==='rejected'">Breached</span>
3000
+ <span class="ms-3 badge badge-light-success"
3001
+ *ngIf="detection?.Answer==='approved'">Not
3002
+ Breached</span>
3003
+ </p>
3004
+ </div>
3005
+ </ng-template>
3006
+ <div class="col-md-3">
3007
+ <h3 class="uni-title">Date</h3>
3008
+ </div>
3009
+ <div class="col-md-3">
3010
+ <p class="uni-subtitle">: <span
3011
+ class="ms-3">{{detection.date|date:'dd-MM-yyyy' }}
3012
+ </span></p>
3013
+ </div>
3014
+ <div class="col-md-3" *ngIf="detection?.zoneName">
3015
+ <h3 class="uni-title">Zone Name</h3>
3016
+ </div>
3017
+ <div class="col-md-3" *ngIf="detection?.zoneName">
3018
+ <p class="uni-subtitle">: <span
3019
+ class="ms-3">{{detection.zoneName }}
3020
+ </span></p>
3021
+ </div>
3022
+ <div class="col-md-3" *ngIf="detection?.configTime">
3023
+ <h3 class="uni-title">Configured Time</h3>
3024
+ </div>
3025
+ <div class="col-md-3" *ngIf="detection?.configTime">
3026
+ <p class="uni-subtitle ">: <span
3027
+ class="ms-3">{{detection.configTime }}</span></p>
3028
+ </div>
3029
+ <div class="col-md-3" *ngIf="detection?.duration">
3030
+ <h3 class="uni-title">Duration</h3>
3031
+ </div>
3032
+ <div class="col-md-3" *ngIf="detection?.duration">
3033
+ <p class="uni-subtitle">: <span
3034
+ class="ms-3">{{detection.duration }} Mins </span></p>
3035
+ </div>
3036
+ <div class="col-md-3" *ngIf="detection?.downTime">
3037
+ <h3 class="uni-title">Downtime</h3>
3038
+ </div>
3039
+ <div class="col-md-3" *ngIf="detection?.downTime">
3040
+ <p class="uni-subtitle">: <span
3041
+ class="ms-3">{{detection.downTime }} Mins </span>
3042
+ <span ngbTooltip="Downtime may result in inaccurate data"
3043
+ placement="top" container="body">
3044
+ <svg xmlns="http://www.w3.org/2000/svg" width="15"
3045
+ height="16" viewBox="0 0 15 16" fill="none">
3046
+ <path
3047
+ d="M7.66667 5.33203V7.9987M7.66667 10.6654H7.67333M14.3333 7.9987C14.3333 11.6806 11.3486 14.6654 7.66667 14.6654C3.98477 14.6654 1 11.6806 1 7.9987C1 4.3168 3.98477 1.33203 7.66667 1.33203C11.3486 1.33203 14.3333 4.3168 14.3333 7.9987Z"
3048
+ stroke="#667085" stroke-width="1.33333"
3049
+ stroke-linecap="round"
3050
+ stroke-linejoin="round" />
3051
+ </svg>
3052
+ </span>
3053
+ </p>
3054
+ </div>
3055
+ </div>
3056
+ <div class="card-header border-0 min-h-45px px-0 my-0">
3057
+ <h3 class="card-title">
3058
+ <!-- <span class="me-3 store-title">{{item.storeName}}</span> -->
3059
+ <span class="ms-2 badge badge-light-default"
3060
+ *ngIf="detection?.customer_id">Cust ID : <span
3061
+ class="ms-3">{{detection.customer_id}}</span></span>
3062
+ <span class="ms-2 badge badge-light-default"
3063
+ *ngIf="detection?.queue_id">Queue ID : <span
3064
+ class="ms-3">{{detection.queue_id}}</span></span>
3065
+ <span class="ms-2 badge badge-light-default"
3066
+ *ngIf="detection?.optum_id">Optom ID : <span
3067
+ class="ms-3">{{detection.optum_id}}</span></span>
3068
+ <!-- <span class="ms-2 badge badge-light-default" *ngIf="detection?.date">Date : {{detection.date|date:'dd-MM-yyyy' }}</span> -->
3069
+ <!-- <span class="ms-3 badge badge-light-default" *ngIf="detection?.configTime">Inspection time : {{detection.configTime}}</span> -->
3070
+ <span class="ms-3 badge badge-light-default"
3071
+ *ngIf="detection?.temp_id">TempId : <span
3072
+ class="ms-3">{{detection.temp_id}}</span></span>
3073
+ <span class="ms-3 badge badge-light-default"
3074
+ *ngIf="detection?.time_spend">Timespend : <span
3075
+ class="ms-3">{{detection.time_spend}}Mins</span></span>
3076
+ </h3>
3077
+
3078
+ <!-- Switch toggle -->
3079
+ <div class="card-toolbar">
3080
+ <div class="col-md-12 text-end">
3081
+ <span class="ms-3 badge badge-light-default"
3082
+ *ngIf="detection?.entry_time">Entry time : <span
3083
+ class="ms-3">{{detection.entry_time}}</span></span>
3084
+ <span class="ms-3 badge badge-light-default"
3085
+ *ngIf="detection?.exit_time">Exit time : <span
3086
+ class="ms-3">{{detection.exit_time}}</span></span>
3087
+ <span class="ms-3 badge badge-light-success"
3088
+ *ngIf="detection?.adherence_rate">Adherence Rate : <span
3089
+ class="ms-3">{{detection.adherence_rate}}</span></span>
3090
+ <span class="ms-3 badge badge-light-primary text-capitalize"
3091
+ *ngIf="detection?.category"> <span
3092
+ class="ms-3">{{detection.category}}</span></span>
3093
+ <span class="ms-3 badge badge-light-default"
3094
+ *ngIf="detection?.customer_entry_time">Entry time :
3095
+ <span
3096
+ class="ms-3">{{detection.customer_entry_time}}</span></span>
3097
+ <span class="ms-3 badge badge-light-default"
3098
+ *ngIf="detection?.customer_exit_time">Exit time : <span
3099
+ class="ms-3">{{detection.customer_exit_time}}</span></span>
3100
+ </div>
3101
+ </div>
3102
+ </div>
3103
+
3104
+
3105
+ <div class="my-0" *ngIf="select !=='eyetest'">
3106
+ <video controls class="w-100 h-450px rounded-top"
3107
+ src="{{environment.TraxAIchecklistCDN}}{{detection.video_path}}"
3108
+ alt="">
3109
+ </video>
3110
+ </div>
3111
+ <div class="my-0" *ngIf="select ==='eyetest'">
3112
+ <video controls class="w-100 h-450px rounded-top"
3113
+ src="{{environment.EyeTestCDN}}{{detection.video_path}}" alt="">
3114
+ </video>
3115
+ </div>
3116
+ </div>
3117
+ </div>
3118
+ </ul>
3119
+ </div>
3120
+ </div>
3121
+
3122
+ <div *ngIf="select ==='storeopenandclose'">
3123
+ <div class="text-center" *ngIf="clientData.logo&&clientData.logo!==''">
3124
+ <img class="mt-5 mb-3 text-center iconsize" src="{{clientData.logo}}">
3125
+ </div>
3126
+ <div class="row px-10 mt-5">
3127
+ <div class="col-md-3">
3128
+ <h3 class="uni-title">Checklist Name : </h3>
3129
+ </div>
3130
+ <div class="col-md-9">
3131
+ <p class="uni-subtitle"> {{this.checklistName}} </p>
3132
+ </div>
3133
+ </div>
3134
+ <div class="col-md-12 margin-top-side" *ngFor="let store of storeOpencloseView">
3135
+ <div class="mx-8 my-8" *ngFor="let item of store.imagesData">
3136
+ @if(item?.process_type == 'live') {
3137
+ <div class="snapcard">
3138
+ <div class="row m-0 w-100">
3139
+ <div class="col-12">
3140
+ <div class="img mt-4 px-3 position-relative" *ngIf="!item.openTime">
3141
+ <div
3142
+ class="preview align-items-center justify-content-center d-flex flex-column">
3143
+ <span>
3144
+ <svg width="23" height="20" viewBox="0 0 23 20"
3145
+ fill="none" xmlns="http://www.w3.org/2000/svg">
3146
+ <g id="Group">
3147
+ <path id="Vector"
3148
+ d="M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023"
3149
+ stroke="#667085" stroke-width="2"
3150
+ stroke-linecap="round"
3151
+ stroke-linejoin="round" /> \
3152
+ <path id="Vector_2"
3153
+ 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"
3154
+ stroke="#667085" stroke-width="2"
3155
+ stroke-linecap="round"
3156
+ stroke-linejoin="round" />
3157
+ </g>
3158
+ </svg>
3159
+ </span>
3160
+ <span class="prvtxt mt-5 textclr">Preview not
3161
+ available</span>
3162
+ <span class="refreshtxt mt-2 textclr">The selected camera is
3163
+ not available at the moment.</span>
3164
+ </div>
3165
+ </div>
3166
+ <div class="row" *ngIf="item.openTime && item.type == 'open'">
3167
+ <img class="mx-1 openclosesnapLiveIMG cursor-pointer"
3168
+ src="{{environment.TraxOpenclosechecklistCDN}}{{item.storeId}}/{{item.dateString|date:'dd-MM-yyyy'}}/operation_snaps/open.jpeg"
3169
+ alt="open close snap" *ngIf="item.s3_path != ''"
3170
+ (click)="openSnapPopup(item, 'open')">
3171
+ <!-- <div class="col-12">
3172
+ <div class="d-flex flex-stack mx-1 mt-2">
3173
+ <div>
3174
+ <div class="snaptext">Opening Snap</div>
3175
+ <div class="snaptime">{{item.openTime}} -
3176
+ {{item.date}} </div>
3177
+ </div>
3178
+ <span class="badge badge-light-primary snapbadge"
3179
+ *ngIf="item?.onopenTimeFlag">On Time</span>
3180
+ <span class="badge badge-light-danger snapbadge"
3181
+ *ngIf="item?.lateopenTimeFlag">Late Open</span>
3182
+ <span class="badge badge-light-warning snapbadge"
3183
+ *ngIf="item?.earlyopenTimeFlag">Early Open</span>
3184
+ </div>
3185
+ </div> -->
3186
+ </div>
3187
+ </div>
3188
+ <div class="col-12">
3189
+ <div class="img mt-4 px-3 position-relative"
3190
+ *ngIf="!item.closeTime">
3191
+ <div
3192
+ class="preview align-items-center justify-content-center d-flex flex-column">
3193
+ <span>
3194
+ <svg width="23" height="20" viewBox="0 0 23 20"
3195
+ fill="none" xmlns="http://www.w3.org/2000/svg">
3196
+ <g id="Group">
3197
+ <path id="Vector"
3198
+ d="M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023"
3199
+ stroke="#667085" stroke-width="2"
3200
+ stroke-linecap="round"
3201
+ stroke-linejoin="round" /> \
3202
+ <path id="Vector_2"
3203
+ 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"
3204
+ stroke="#667085" stroke-width="2"
3205
+ stroke-linecap="round"
3206
+ stroke-linejoin="round" />
3207
+ </g>
3208
+ </svg>
3209
+ </span>
3210
+ <span class="prvtxt mt-5 textclr">Preview not
3211
+ available</span>
3212
+ <span class="refreshtxt mt-2 textclr">The selected camera is
3213
+ not available at the moment.</span>
3214
+ </div>
3215
+ </div>
3216
+ <div class="row" *ngIf="item.closeTime && item.type == 'close'&& item.s3_path != ''">
3217
+ <img class="mx-1 openclosesnapLiveIMG cursor-pointer"
3218
+ src="{{environment.TraxOpenclosechecklistCDN}}{{item.storeId}}/{{item.dateString|date:'dd-MM-yyyy'}}/operation_snaps/close.jpeg"
3219
+ alt="Checklist Video Player" *ngIf="item.s3_path != ''"
3220
+ (click)="openSnapPopup(item, 'close')">
3221
+ <!-- <div class="col-12">
3222
+ <div class="d-flex flex-stack mx-1 mt-2">
3223
+ <div>
3224
+ <div class="snaptext">Closing Snap</div>
3225
+ <div class="snaptime">{{item.closeTime}} -
3226
+ {{item.date}}</div>
3227
+ </div>
3228
+ <span class="badge badge-light-primary snapbadge"
3229
+ *ngIf="item?.oncloseTimeFlag">On Time</span>
3230
+ <span class="badge badge-light-danger snapbadge"
3231
+ *ngIf="item?.earlycloseTimeFlag">Early Close</span>
3232
+ <span class="badge badge-light-warning snapbadge"
3233
+ *ngIf="item?.latecloseTimeFlag">Late Close</span>
3234
+ </div>
3235
+ </div> -->
3236
+ </div>
3237
+ </div>
3238
+ </div>
3239
+ <div class="row px-10 mt-5 margin-left-side ">
3240
+ <div class="col-md-3" *ngIf="item?.storeName">
3241
+ <h3 class="uni-title">Store Name</h3>
3242
+ </div>
3243
+ <div class="col-md-9" *ngIf="item?.storeName">
3244
+ <p class="uni-subtitle">: <span
3245
+ class="ms-3">{{item.storeName}}</span></p>
3246
+ </div>
3247
+ <div class="col-md-3" *ngIf="item?.buffer_open">
3248
+ <h3 class="uni-title">Buffer for Open Time </h3>
3249
+ </div>
3250
+ <div class="col-md-3" *ngIf="item?.buffer_open">
3251
+ <p class="uni-subtitle">: <span class="ms-3">{{item.buffer_open }}
3252
+ mins</span></p>
3253
+ </div>
3254
+ <div class="col-md-3" *ngIf="item?.buffer_close">
3255
+ <h3 class="uni-title">Buffer for Close Time </h3>
3256
+ </div>
3257
+ <div class="col-md-3" *ngIf="item?.buffer_close">
3258
+ <p class="uni-subtitle">: <span class="ms-3">{{item.buffer_close }}
3259
+ mins</span></p>
3260
+ </div>
3261
+ <div class="col-md-3" *ngIf="item.reason == 'File Not Received'">
3262
+ <h3 class="uni-title">Detected At</h3>
3263
+ </div>
3264
+ <div class="col-md-4" *ngIf="item.reason == 'File Not Received'">
3265
+ <p class="uni-subtitle">: <span
3266
+ class="ms-3">{{item.date }} </span></p>
3267
+ </div>
3268
+ <div class="col-md-3" *ngIf="item.reason == 'File Not Received'">
3269
+ <h3 class="uni-title ms-15">Detection Type</h3>
3270
+ </div>
3271
+ <div class="col-md-2" *ngIf="item.reason == 'File Not Received'">
3272
+ <p class="uni-subtitle">: <span
3273
+ class="ms-1 badge badge-light-warning snapbadge">{{item.type =='open' ? 'Store Open' : 'Store Close'}} </span></p>
3274
+ </div>
3275
+ <div class="col-md-3">
3276
+ <h3 class="uni-title">Detection Status</h3>
3277
+ </div>
3278
+ <div [class]="item.reason == 'File Not Received' ? 'col-md-5' : item?.detectionStatus === 'Not Breached' ? 'col-md-8':'col-md-4'">
3279
+ <p class="uni-subtitle"> :
3280
+ <!-- <span class="ms-3 badge badge-light-danger" *ngIf="item?.Flag">Breached</span>
3281
+ <span class="ms-3 badge badge-light-success" *ngIf="!item?.Flag">Not Breached</span> -->
3282
+ <span class="ms-3 badge badge-light-danger"
3283
+ *ngIf="item?.detectionStatus === 'Breached' && item.reason != 'File Not Received'">Breached</span>
3284
+ <span><span class="ms-3 badge badge-light-success"
3285
+ *ngIf="item?.detectionStatus === 'Not Breached'">Not
3286
+ Breached</span><span class="ms-3 badge badge-light-success"
3287
+ *ngIf="item?.reason === 'On Time'">On Time</span></span>
3288
+ <span class="ms-3 badge badge-light-danger"
3289
+ *ngIf="(item?.detectionStatus === 'Breached' && item.reason == 'File Not Received') || item.detectionStatus == 'Offline'">Offline – No data Received from store</span>
3290
+ </p>
3291
+ </div>
3292
+ <div class="col-md-3" *ngIf="item?.detectionStatus && item?.detectionStatus !== 'Not Breached' && item.reason !== 'File Not Received'">
3293
+ <h3 class="uni-title">Breached Type</h3>
3294
+ </div>
3295
+ <div class="col-md-2" *ngIf="item?.detectionStatus && item?.detectionStatus !== 'Not Breached' && item.reason !== 'File Not Received'">
3296
+ <p class="uni-subtitle" *ngIf="item.type == 'open'">:
3297
+ <span class="badge badge-light-primary snapbadge"
3298
+ *ngIf="item?.detectionStatus != 'Breached' && !item.Flag">On Time</span>
3299
+ <span class="badge badge-light-danger snapbadge"
3300
+ *ngIf="item?.detectionStatus == 'Breached' && item.Flag">Late Open</span>
3301
+ <!-- <span class="badge badge-light-warning snapbadge"
3302
+ *ngIf="item?.earlyopenTimeFlag">Early Open</span> -->
3303
+ </p>
3304
+ <p class="uni-subtitle" *ngIf="item.type == 'close'">:
3305
+ <span class="badge badge-light-primary snapbadge"
3306
+ *ngIf="item?.detectionStatus != 'Breached' && !item.Flag">On Time</span>
3307
+ <span class="badge badge-light-danger snapbadge"
3308
+ *ngIf="item?.detectionStatus == 'Breached' && item.Flag">Early Close</span>
3309
+ <!-- <span class="badge badge-light-warning snapbadge"
3310
+ *ngIf="item?.latecloseTimeFlag">Late Close</span> -->
3311
+ </p>
3312
+ </div>
3313
+ <div class="col-md-2" *ngIf="item?.downtime">
3314
+ <h3 class="uni-title" [ngClass]="item.reason == 'File Not Received' ? 'ms-8' : ''">Downtime</h3>
3315
+ </div>
3316
+ <div class="col-md-2" *ngIf="item?.downtime">
3317
+ <p class="uni-subtitle">: <span class="ms-3">{{item.downtime}} mins
3318
+ <span ngbTooltip="Downtime may result in inaccurate data"
3319
+ placement="top" container="body">
3320
+ <svg xmlns="http://www.w3.org/2000/svg" width="15"
3321
+ height="16" viewBox="0 0 15 16" fill="none">
3322
+ <path
3323
+ d="M7.66667 5.33203V7.9987M7.66667 10.6654H7.67333M14.3333 7.9987C14.3333 11.6806 11.3486 14.6654 7.66667 14.6654C3.98477 14.6654 1 11.6806 1 7.9987C1 4.3168 3.98477 1.33203 7.66667 1.33203C11.3486 1.33203 14.3333 4.3168 14.3333 7.9987Z"
3324
+ stroke="#667085" stroke-width="1.33333"
3325
+ stroke-linecap="round"
3326
+ stroke-linejoin="round" />
3327
+ </svg>
3328
+ </span>
3329
+ </span></p>
3330
+ </div>
3331
+ <div class="col-md-3" *ngIf="item?.detection_time">
3332
+ <h3 class="uni-title">Detection Time</h3>
3333
+ </div>
3334
+ <div class="col-md-8" *ngIf="item?.detection_time">
3335
+ <p class="uni-subtitle">: <span class="ms-3 badge badge-light-primary">{{item.detection_time}} - {{item.date}}</span></p>
3336
+ </div>
3337
+ <div class="col-md-3" *ngIf="item?.reason !== 'File Not Received'">
3338
+ <h3 class="uni-title">Scheduled Employee </h3>
3339
+ </div>
3340
+ <div class="col-md-9" *ngIf="item?.reason !== 'File Not Received'">
3341
+ <p class="uni-subtitle">:
3342
+ <span class="ms-3">
3343
+ @if(item.scheduleEmp.length) {
3344
+ <span class="badge badge-num-muted" *ngFor="let emp of item.scheduleEmp">{{emp}}</span>
3345
+ }@else {
3346
+ <span class="badge badge-num-muted">NA</span>
3347
+ }
3348
+ </span>
3349
+ </p>
3350
+ </div>
3351
+
3352
+ </div>
3353
+ </div>
3354
+ }
3355
+ @else {
3356
+ <div class="snapcard">
3357
+ <div class="row px-10 mt-5 margin-left-side ">
3358
+ <div class="col-md-3" *ngIf="store?.storeName">
3359
+ <h3 class="uni-title">Store Name</h3>
3360
+ </div>
3361
+ <div class="col-md-9" *ngIf="store?.storeName">
3362
+ <p class="uni-subtitle">: <span
3363
+ class="ms-3">{{store.storeName}}</span></p>
3364
+ </div>
3365
+ <div class="col-md-3" *ngIf="item.reason == 'File Not Received'">
3366
+ <h3 class="uni-title">Detected At</h3>
3367
+ </div>
3368
+ <div class="col-md-4" *ngIf="item.reason == 'File Not Received'">
3369
+ <p class="uni-subtitle">: <span
3370
+ class="ms-3">{{item.date }} </span></p>
3371
+ </div>
3372
+ <div class="col-md-3" *ngIf="item.reason == 'File Not Received'">
3373
+ <h3 class="uni-title ms-15">Detection Type</h3>
3374
+ </div>
3375
+ <div class="col-md-2" *ngIf="item.reason == 'File Not Received'">
3376
+ <p class="uni-subtitle">: <span
3377
+ class="ms-1 badge badge-light-warning">{{item.type =='open' ? 'Store Open' : 'Store Close'}} </span></p>
3378
+ </div>
3379
+ <div class="col-md-3">
3380
+ <h3 class="uni-title">Detection Status</h3>
3381
+ </div>
3382
+ <div [class]="item.reason === 'File Not Received' ? 'col-md-5' : item.detectionStatus === 'Not Breached' ? 'col-md-4': 'col-md-3'">
3383
+ <p class="uni-subtitle"> :
3384
+ <!-- <span class="ms-3 badge badge-light-danger" *ngIf="item?.Flag">Breached</span>
3385
+ <span class="ms-3 badge badge-light-success" *ngIf="!item?.Flag">Not Breached</span> -->
3386
+ <span class="ms-3 badge badge-light-danger"
3387
+ *ngIf="item?.detectionStatus === 'Breached' && item.reason !== 'File Not Received'">Breached</span>
3388
+ <span><span class="ms-3 badge badge-light-success"
3389
+ *ngIf="item?.detectionStatus === 'Not Breached'">Not
3390
+ Breached</span><span class="ms-3 badge badge-light-success"
3391
+ *ngIf="item?.reason === 'On Time'">On Time</span></span>
3392
+ <span class="ms-3 badge badge-light-danger"
3393
+ *ngIf="item?.detectionStatus === 'Offline' || (item?.detectionStatus === 'Breached' && item.reason == 'File Not Received')">Offline – No data Received from store</span>
3394
+ </p>
3395
+ </div>
3396
+ <div class="col-md-2" *ngIf="item.reason !== 'File Not Received'">
3397
+ <h3 class="uni-title">Date</h3>
3398
+ </div>
3399
+ <div class="col-md-3" *ngIf="item.reason !== 'File Not Received'">
3400
+ <p class="uni-subtitle">: <span
3401
+ class="ms-3">{{item.date|date:'dd-MM-yyyy' }} </span></p>
3402
+ </div>
3403
+ <!-- <div class="col-md-4" *ngIf="item?.downtime">
3404
+ <h3 class="uni-title">Downtime</h3>
3405
+ </div>
3406
+ <div class="col-md-2" *ngIf="item?.downtime">
3407
+ <p class="uni-subtitle">: <span class="ms-3">{{item.downtime}} mins
3408
+ <span ngbTooltip="Downtime may result in inaccurate data"
3409
+ placement="top" container="body">
3410
+ <svg xmlns="http://www.w3.org/2000/svg" width="15"
3411
+ height="16" viewBox="0 0 15 16" fill="none">
3412
+ <path
3413
+ d="M7.66667 5.33203V7.9987M7.66667 10.6654H7.67333M14.3333 7.9987C14.3333 11.6806 11.3486 14.6654 7.66667 14.6654C3.98477 14.6654 1 11.6806 1 7.9987C1 4.3168 3.98477 1.33203 7.66667 1.33203C11.3486 1.33203 14.3333 4.3168 14.3333 7.9987Z"
3414
+ stroke="#667085" stroke-width="1.33333"
3415
+ stroke-linecap="round"
3416
+ stroke-linejoin="round" />
3417
+ </svg>
3418
+ </span>
3419
+ </span></p>
3420
+ </div> -->
3421
+ </div>
3422
+ <div class="row m-0 w-100">
3423
+ <!-- @for (item of store.imagesData; track item) { -->
3424
+ <div class="col-6">
3425
+ <div class="img mt-4 px-3 position-relative" *ngIf="!item.openTime">
3426
+ <div
3427
+ class="preview align-items-center justify-content-center d-flex flex-column">
3428
+ <span>
3429
+ <svg width="23" height="20" viewBox="0 0 23 20"
3430
+ fill="none" xmlns="http://www.w3.org/2000/svg">
3431
+ <g id="Group">
3432
+ <path id="Vector"
3433
+ d="M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023"
3434
+ stroke="#667085" stroke-width="2"
3435
+ stroke-linecap="round"
3436
+ stroke-linejoin="round" /> \
3437
+ <path id="Vector_2"
3438
+ 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"
3439
+ stroke="#667085" stroke-width="2"
3440
+ stroke-linecap="round"
3441
+ stroke-linejoin="round" />
3442
+ </g>
3443
+ </svg>
3444
+ </span>
3445
+ <span class="prvtxt mt-5 textclr">Preview not
3446
+ available</span>
3447
+ <span class="refreshtxt mt-2 textclr">The selected camera is
3448
+ not available at the moment.</span>
3449
+ </div>
3450
+ </div>
3451
+ <div class="row" *ngIf="item.openTime && item.reason !== 'File Not Received'">
3452
+ <img class="mx-1 openclosesnapIMG cursor-pointer"
3453
+ src="{{environment.TraxOpenclosechecklistCDN}}{{item.storeId}}/{{item.dateString|date:'dd-MM-yyyy'}}/operation_snaps/open.jpeg"
3454
+ alt="open close snap"
3455
+ (click)="openSnapPopup(item, 'open')">
3456
+ <div class="col-12">
3457
+ <div class="d-flex flex-stack mx-1 mt-2">
3458
+ <div>
3459
+ <div class="snaptext">Opening Snap</div>
3460
+ <div class="snaptime">{{item.openTime}} -
3461
+ {{item.date}} <span class="ms-5 badge badge-light-danger"
3462
+ *ngIf="item?.lateopenTimeFlag">{{item.lateOpen}} mins Delay</span></div>
3463
+ </div>
3464
+ <span class="badge badge-light-primary snapbadge"
3465
+ *ngIf="item?.onopenTimeFlag">On Time</span>
3466
+ <span class="badge badge-light-danger snapbadge"
3467
+ *ngIf="item?.lateopenTimeFlag">Late Open</span>
3468
+ <span class="badge badge-light-warning snapbadge"
3469
+ *ngIf="item?.earlyopenTimeFlag">Early Open</span>
3470
+ </div>
3471
+ </div>
3472
+ </div>
3473
+ </div>
3474
+ <div class="col-6">
3475
+ <div class="img mt-4 px-3 position-relative"
3476
+ *ngIf="!item.closeTime">
3477
+ <div
3478
+ class="preview align-items-center justify-content-center d-flex flex-column">
3479
+ <span>
3480
+ <svg width="23" height="20" viewBox="0 0 23 20"
3481
+ fill="none" xmlns="http://www.w3.org/2000/svg">
3482
+ <g id="Group">
3483
+ <path id="Vector"
3484
+ d="M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023"
3485
+ stroke="#667085" stroke-width="2"
3486
+ stroke-linecap="round"
3487
+ stroke-linejoin="round" /> \
3488
+ <path id="Vector_2"
3489
+ 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"
3490
+ stroke="#667085" stroke-width="2"
3491
+ stroke-linecap="round"
3492
+ stroke-linejoin="round" />
3493
+ </g>
3494
+ </svg>
3495
+ </span>
3496
+ <span class="prvtxt mt-5 textclr">Preview not
3497
+ available</span>
3498
+ <span class="refreshtxt mt-2 textclr">The selected camera is
3499
+ not available at the moment.</span>
3500
+ </div>
3501
+ </div>
3502
+ <div class="row" *ngIf="item.closeTime && item.reason !== 'File Not Received'">
3503
+ <img class="mx-1 openclosesnapIMG cursor-pointer"
3504
+ src="{{environment.TraxOpenclosechecklistCDN}}{{item.storeId}}/{{item.dateString|date:'dd-MM-yyyy'}}/operation_snaps/close.jpeg"
3505
+ alt="Checklist Video Player"
3506
+ (click)="openSnapPopup(item, 'close')">
3507
+ <div class="col-12">
3508
+ <div class="d-flex flex-stack mx-1 mt-2">
3509
+ <div>
3510
+ <div class="snaptext">Closing Snap</div>
3511
+ <div class="snaptime">{{item.closeTime}} -
3512
+ {{item.date}} <span class="ms-2 badge badge-light-danger"
3513
+ *ngIf="item?.earlycloseTimeFlag">{{item.earlyClose}} mins Early</span></div>
3514
+ </div>
3515
+ <span class="badge badge-light-primary snapbadge"
3516
+ *ngIf="item?.oncloseTimeFlag">On Time</span>
3517
+ <span class="badge badge-light-danger snapbadge"
3518
+ *ngIf="item?.earlycloseTimeFlag">Early Close</span>
3519
+ <span class="badge badge-light-warning snapbadge"
3520
+ *ngIf="item?.latecloseTimeFlag">Late Close</span>
3521
+ </div>
3522
+ </div>
3523
+ </div>
3524
+ </div>
3525
+ <!-- } -->
3526
+ </div>
3527
+ </div>
3528
+ }
3529
+ </div>
3530
+
3531
+ </div>
3532
+ </div>
3533
+
3534
+ <div *ngIf="boximageChecklist.includes(select)">
3535
+ <div class="text-center" *ngIf="clientData.logo&&clientData.logo!==''">
3536
+ <img class="mt-5 mb-3 text-center iconsize" src="{{clientData.logo}}">
3537
+ </div>
3538
+ <div class="col-md-12" *ngFor="let store of queueAlertView">
3539
+ <div class="row px-10 mt-5" *ngIf="showmulti">
3540
+ <div class="col-md-3">
3541
+ <h3 class="uni-title">Store Name</h3>
3542
+ </div>
3543
+ <div class="col-md-9">
3544
+ <p class="uni-subtitle">: {{store?.storeName}} |
3545
+ {{store?.city}},{{store?.state}},{{store?.country}} </p>
3546
+ </div>
3547
+ <div class="col-md-3">
3548
+ <h3 class="uni-title">Checklist Name</h3>
3549
+
3550
+ </div>
3551
+ <div class="col-md-9">
3552
+ <p class="uni-subtitle">: {{checklistName}}</p>
3553
+ </div>
3554
+ <div class="col-md-3"
3555
+ *ngIf="select==='boxalert'||select==='suspiciousfootfall'||select==='drinking'||select==='bagdetection'">
3556
+ <h3 class="uni-title">Description:</h3>
3557
+ </div>
3558
+ <div class="col-md-9"
3559
+ *ngIf="select==='boxalert'||select==='suspiciousfootfall'||select==='drinking'||select==='bagdetection'">
3560
+ <p class="uni-subtitle">{{checkListDescription}}</p>
3561
+ </div>
3562
+
3563
+ </div>
3564
+ <div class="row m-0 w-100 ">
3565
+ <div class="col-4 mt-2" *ngFor="let item of store.imagesData">
3566
+ <div class="card bordercolor bg-secondary mt-8">
3567
+ <div class="text-start ms-5 mt-2 mb-5">
3568
+ <!-- <div *ngIf="item.zone">
3569
+ <span
3570
+ class="btn btn-secondary rounded-lg p-2">{{item.zone}}</span>
3571
+ </div> -->
3572
+
3573
+ <div class="mt-3 fw-semibold">{{ item.date_timestamp }}</div>
3574
+ <div *ngIf="select==='boxalert'" class="mt-3 fw-semibold">Empty shelves : {{ item.emptyBoxCount }}</div>
3575
+ </div>
3576
+ <img class="w-100 h-250px rounded-bottom" (click)="openModel(item)"
3577
+ src="{{environment.TraxAIchecklistCDN}}{{item.path}}" alt="">
3578
+ </div>
3579
+ </div>
3580
+ </div>
3581
+ </div>
3582
+ </div>
3583
+
3584
+ <lib-pagination *ngIf="!viewloading && !viewnoData" [itemsPerPage]="limit"
3585
+ [currentPage]="offset" [totalItems]="totalCount" [paginationSizes]='paginationSizes'
3586
+ [pageSize]="limit" (pageChange)="onPageChangeview($event)"
3587
+ (pageSizeChange)="onPageSizeChange($event)"></lib-pagination>
3588
+ </section>
3589
+ </div>
3590
+ </div>
3591
+ <div *ngIf="!showsidenav" (click)="sidenav()" class="backButtonleft text-center pt-1 cursor-pointer">
3592
+ <svg class="mt-2 ms-2" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24"
3593
+ fill="none">
3594
+ <path
3595
+ d="M9.72714 12.6365L13.3635 9.00013L9.72714 5.36377M4.63623 12.6365L8.27259 9.00013L4.63623 5.36377"
3596
+ stroke="#101828" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
3597
+ </svg>
3598
+ </div>
3599
+ </div>
3600
+ </div>
3601
+ </div>
3602
+ </div>
3603
+ <div class="row card mx-0 p-3">
3604
+ <div class="col-md-12 text-end">
3605
+ <button
3606
+ class="btn btn-sm border-primary1"
3607
+ [disabled]="!approvalStatus"
3608
+ (click)="onApproveChecklistClick()">
3609
+ Approve
3610
+ </button>
3611
+ </div>
3612
+ </div>
3613
+ <ng-template #zoomPopup let-model>
3614
+ <div class="p-8">
3615
+ <div class="modal-header pt-0 ps-1 pe-0">
3616
+ <div>
3617
+ <div class="text-start mt-2">
3618
+ <div *ngIf="viewImage.zone">
3619
+ <span class="btn btn-secondary rounded-lg p-2">{{viewImage.zone}}</span>
3620
+ </div>
3621
+ <div *ngIf="viewImage.emptyBoxCount">
3622
+ <span>Empty shelves : {{viewImage.emptyBoxCount}}</span>
3623
+ </div>
3624
+
3625
+ <div *ngIf="viewImage.entry_time">
3626
+ <span>Entry Time : {{viewImage.entry_time}}</span>
3627
+ </div>
3628
+ <div *ngIf="viewImage.exit_time">
3629
+ <span>Exit Time : {{viewImage.exit_time}}</span>
3630
+ </div>
3631
+ <div *ngIf="viewImage.temp_id">
3632
+ <span>Temp Id : {{viewImage.temp_id}}</span>
3633
+ </div>
3634
+ <div *ngIf="viewImage.time_spend">
3635
+ <span>Time Spend : {{viewImage.time_spend}} Mins</span>
3636
+ </div>
3637
+
3638
+ <div class="mt-2" *ngIf="viewImage.threshold&&viewImage.Dwelltime">
3639
+ <p>If the queue exceeds {{viewImage.threshold}} people and wait time surpasses
3640
+ {{viewImage.Dwelltime}} minutes, an alert will be triggered</p>
3641
+ </div>
3642
+ <div class="mt-3 fw-semibold">{{ viewImage.date_timestamp }}</div>
3643
+ </div>
3644
+
3645
+ </div>
3646
+ <div data-bs-dismiss="modal">
3647
+ <!-- <span class="stream fw-semibold text-nowrap me-5" *ngIf="camera.height && camera.width"> Resolution: {{camera.height}} X {{camera.width}}</span> -->
3648
+ <span class="btn btn-sm btn-icon btn-active-color-primary me-0" (click)="model.dismiss()"><svg
3649
+ width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
3650
+ <path d="M15 5L5 15M5 5L15 15" stroke="#667085" stroke-width="1.67" stroke-linecap="round"
3651
+ stroke-linejoin="round" />
3652
+ </svg>
3653
+ </span>
3654
+ </div>
3655
+ </div>
3656
+ <div *ngIf="viewImage.path" class="mt-2 overflow-auto">
3657
+ <img class="rounded-4 mt-5 img-popup-src w-100" src="{{environment.TraxAIchecklistCDN}}{{viewImage.path}}">
3658
+ </div>
3659
+ </div>
3660
+ </ng-template>