@ministryofjustice/hmpps-digital-prison-reporting-frontend 4.17.3 → 4.17.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (560) hide show
  1. package/dpr/assets/app.js.map +1 -1
  2. package/dpr/components/_async/async-filters-form/sortByTemplate.js +1 -1
  3. package/dpr/components/_async/async-filters-form/sortByTemplate.js.map +1 -1
  4. package/dpr/components/_async/async-filters-form/types.d.js +1 -1
  5. package/dpr/components/_async/async-filters-form/types.d.js.map +1 -1
  6. package/dpr/components/_async/async-filters-form/utils.js +1 -1
  7. package/dpr/components/_async/async-filters-form/utils.js.map +2 -2
  8. package/dpr/components/_async/async-filters-form/utils.test.ts +9 -9
  9. package/dpr/components/_async/async-filters-form/utils.ts +1 -1
  10. package/dpr/components/_async/async-filters-form/view.njk +6 -3
  11. package/dpr/components/_catalogue/catalogue/types.js +1 -1
  12. package/dpr/components/_catalogue/catalogue/types.js.map +1 -1
  13. package/dpr/components/_catalogue/catalogue/utils.js +1 -1
  14. package/dpr/components/_catalogue/catalogue/utils.js.map +2 -2
  15. package/dpr/components/_catalogue/catalogue/utils.test.ts +6 -3
  16. package/dpr/components/_catalogue/catalogue/utils.ts +2 -2
  17. package/dpr/components/_catalogue/catalogue-list/utils.js +1 -1
  18. package/dpr/components/_catalogue/catalogue-list/utils.js.map +2 -2
  19. package/dpr/components/_catalogue/catalogue-list/utils.test.ts +1 -0
  20. package/dpr/components/_catalogue/catalogue-list/utils.ts +5 -5
  21. package/dpr/components/_charts/chart/Buckets.js +1 -1
  22. package/dpr/components/_charts/chart/Buckets.js.map +3 -3
  23. package/dpr/components/_charts/chart/Buckets.ts +3 -3
  24. package/dpr/components/_charts/chart/heatmap/HeatmapChart.js +1 -1
  25. package/dpr/components/_charts/chart/heatmap/HeatmapChart.js.map +3 -3
  26. package/dpr/components/_charts/chart/heatmap/HeatmapChart.ts +1 -13
  27. package/dpr/components/_charts/chart/heatmap/types.js +1 -1
  28. package/dpr/components/_charts/chart/heatmap/types.js.map +2 -2
  29. package/dpr/components/_charts/chart/heatmap/types.ts +1 -1
  30. package/dpr/components/_charts/utils.js +1 -1
  31. package/dpr/components/_charts/utils.js.map +3 -3
  32. package/dpr/components/_charts/utils.test.ts +1 -0
  33. package/dpr/components/_charts/utils.ts +84 -43
  34. package/dpr/components/_dashboards/dashboard-list/utils.js +1 -1
  35. package/dpr/components/_dashboards/dashboard-list/utils.js.map +2 -2
  36. package/dpr/components/_dashboards/dashboard-list/utils.test.ts +1 -0
  37. package/dpr/components/_dashboards/dashboard-list/utils.ts +16 -11
  38. package/dpr/components/_dashboards/dashboard-visualisation/DashboardVisualisation.js +1 -1
  39. package/dpr/components/_dashboards/dashboard-visualisation/DashboardVisualisation.js.map +2 -2
  40. package/dpr/components/_dashboards/dashboard-visualisation/DashboardVisualisation.ts +1 -1
  41. package/dpr/components/_dashboards/dashboard-visualisation/types.js +1 -1
  42. package/dpr/components/_dashboards/dashboard-visualisation/types.js.map +2 -2
  43. package/dpr/components/_dashboards/dashboard-visualisation/types.ts +8 -8
  44. package/dpr/components/_dashboards/scorecard/Scorecard.js +1 -1
  45. package/dpr/components/_dashboards/scorecard/Scorecard.js.map +2 -2
  46. package/dpr/components/_dashboards/scorecard/Scorecard.ts +8 -8
  47. package/dpr/components/_dashboards/scorecard/types.js +1 -1
  48. package/dpr/components/_dashboards/scorecard/types.js.map +2 -2
  49. package/dpr/components/_dashboards/scorecard/types.ts +12 -10
  50. package/dpr/components/_dashboards/scorecard/utils.js +1 -1
  51. package/dpr/components/_dashboards/scorecard/utils.js.map +1 -1
  52. package/dpr/components/_dashboards/scorecard/utils.test.ts +1 -0
  53. package/dpr/components/_filters/filter-input/enum.js +1 -1
  54. package/dpr/components/_filters/filter-input/enum.js.map +1 -1
  55. package/dpr/components/_filters/filter-input/filters.js +1 -1
  56. package/dpr/components/_filters/filter-input/filters.js.map +1 -1
  57. package/dpr/components/_filters/filter-input/filters.test.ts +1 -0
  58. package/dpr/components/_filters/filter-input/types.d.js +1 -1
  59. package/dpr/components/_filters/filter-input/types.d.js.map +1 -1
  60. package/dpr/components/_filters/filters-selected/utils.js +1 -1
  61. package/dpr/components/_filters/filters-selected/utils.js.map +3 -3
  62. package/dpr/components/_filters/filters-selected/utils.test.ts +7 -4
  63. package/dpr/components/_filters/filters-selected/utils.ts +1 -1
  64. package/dpr/components/_filters/filtersTypeEnum.js +1 -1
  65. package/dpr/components/_filters/filtersTypeEnum.js.map +1 -1
  66. package/dpr/components/_filters/types.d.js +1 -1
  67. package/dpr/components/_filters/types.d.js.map +2 -2
  68. package/dpr/components/_filters/types.d.ts +5 -5
  69. package/dpr/components/_filters/utils.js +1 -1
  70. package/dpr/components/_filters/utils.js.map +2 -2
  71. package/dpr/components/_filters/utils.test.ts +54 -49
  72. package/dpr/components/_filters/utils.ts +16 -20
  73. package/dpr/components/_inputs/date-input/utils.js +1 -1
  74. package/dpr/components/_inputs/date-input/utils.js.map +1 -1
  75. package/dpr/components/_inputs/date-input/utils.test.ts +1 -0
  76. package/dpr/components/_inputs/date-range/clientClass.mjs +2 -2
  77. package/dpr/components/_inputs/date-range/types.js +1 -1
  78. package/dpr/components/_inputs/date-range/types.js.map +2 -2
  79. package/dpr/components/_inputs/date-range/types.ts +2 -2
  80. package/dpr/components/_inputs/date-range/utils.js +1 -1
  81. package/dpr/components/_inputs/date-range/utils.js.map +2 -2
  82. package/dpr/components/_inputs/date-range/utils.test.ts +5 -7
  83. package/dpr/components/_inputs/date-range/utils.ts +4 -4
  84. package/dpr/components/_inputs/date-range/view.njk +1 -0
  85. package/dpr/components/_inputs/granular-date-range/types.js +1 -1
  86. package/dpr/components/_inputs/granular-date-range/types.js.map +1 -1
  87. package/dpr/components/_inputs/granular-date-range/utils.js +1 -1
  88. package/dpr/components/_inputs/granular-date-range/utils.js.map +1 -1
  89. package/dpr/components/_inputs/granular-date-range/utils.test.ts +1 -0
  90. package/dpr/components/_inputs/multi-select/utils.js +1 -1
  91. package/dpr/components/_inputs/multi-select/utils.js.map +3 -3
  92. package/dpr/components/_inputs/multi-select/utils.ts +1 -1
  93. package/dpr/components/_inputs/multi-select/utilt.test.ts +29 -14
  94. package/dpr/components/_inputs/start-end-date/utils.js +1 -1
  95. package/dpr/components/_inputs/start-end-date/utils.js.map +1 -1
  96. package/dpr/components/_inputs/start-end-date/utils.test.ts +1 -0
  97. package/dpr/components/_reports/report-actions/actionsTemplate.js +1 -1
  98. package/dpr/components/_reports/report-actions/actionsTemplate.js.map +1 -1
  99. package/dpr/components/_reports/report-actions/types.d.js +1 -1
  100. package/dpr/components/_reports/report-actions/types.d.js.map +2 -2
  101. package/dpr/components/_reports/report-actions/types.d.ts +1 -1
  102. package/dpr/components/_reports/report-actions/utils.js +1 -1
  103. package/dpr/components/_reports/report-actions/utils.js.map +1 -1
  104. package/dpr/components/_reports/report-actions/utils.test.ts +8 -4
  105. package/dpr/components/_reports/report-columns-form/types.d.js +1 -1
  106. package/dpr/components/_reports/report-columns-form/types.d.js.map +1 -1
  107. package/dpr/components/_reports/report-columns-form/utils.js +1 -1
  108. package/dpr/components/_reports/report-columns-form/utils.js.map +2 -2
  109. package/dpr/components/_reports/report-columns-form/utils.ts +1 -1
  110. package/dpr/components/_reports/report-data-table/types.d.js +1 -1
  111. package/dpr/components/_reports/report-data-table/types.d.js.map +1 -1
  112. package/dpr/components/_reports/report-data-table/utils.js +1 -1
  113. package/dpr/components/_reports/report-data-table/utils.js.map +3 -3
  114. package/dpr/components/_reports/report-data-table/utils.test.ts +15 -8
  115. package/dpr/components/_reports/report-data-table/utils.ts +20 -8
  116. package/dpr/components/_reports/report-pagination/types.d.js +1 -1
  117. package/dpr/components/_reports/report-pagination/types.d.js.map +2 -2
  118. package/dpr/components/_reports/report-pagination/types.d.ts +2 -2
  119. package/dpr/components/_reports/report-pagination/utils.js +1 -1
  120. package/dpr/components/_reports/report-pagination/utils.js.map +1 -1
  121. package/dpr/components/_reports/report-pagination/utils.test.ts +1 -0
  122. package/dpr/components/_reports/report-totals/utils.js +1 -1
  123. package/dpr/components/_reports/report-totals/utils.js.map +1 -1
  124. package/dpr/components/card-group/utils.js +1 -1
  125. package/dpr/components/card-group/utils.js.map +1 -1
  126. package/dpr/components/card-group/utils.test.ts +7 -0
  127. package/dpr/components/report-list/defaultTokenProvider.js +1 -1
  128. package/dpr/components/report-list/defaultTokenProvider.js.map +3 -3
  129. package/dpr/components/report-list/defaultTokenProvider.ts +3 -3
  130. package/dpr/components/report-list/types.d.js +1 -1
  131. package/dpr/components/report-list/types.d.js.map +1 -1
  132. package/dpr/components/report-list/utils.js +1 -1
  133. package/dpr/components/report-list/utils.js.map +2 -2
  134. package/dpr/components/report-list/utils.test.ts +6 -4
  135. package/dpr/components/report-list/utils.ts +5 -5
  136. package/dpr/components/show-more/utils.js +1 -1
  137. package/dpr/components/show-more/utils.js.map +1 -1
  138. package/dpr/components/user-reports/bookmarks/utils.js +1 -1
  139. package/dpr/components/user-reports/bookmarks/utils.js.map +3 -3
  140. package/dpr/components/user-reports/bookmarks/utils.test.ts +14 -11
  141. package/dpr/components/user-reports/bookmarks/utils.ts +26 -31
  142. package/dpr/components/user-reports/requested/utils.js +1 -1
  143. package/dpr/components/user-reports/requested/utils.js.map +3 -3
  144. package/dpr/components/user-reports/requested/utils.test.ts +4 -3
  145. package/dpr/components/user-reports/requested/utils.ts +4 -3
  146. package/dpr/components/user-reports/types.d.js +1 -1
  147. package/dpr/components/user-reports/types.d.js.map +2 -2
  148. package/dpr/components/user-reports/types.d.ts +1 -1
  149. package/dpr/components/user-reports/utils.js +1 -1
  150. package/dpr/components/user-reports/utils.js.map +3 -3
  151. package/dpr/components/user-reports/utils.test.ts +48 -47
  152. package/dpr/components/user-reports/utils.ts +51 -57
  153. package/dpr/components/user-reports/viewed/utils.js +1 -1
  154. package/dpr/components/user-reports/viewed/utils.js.map +2 -2
  155. package/dpr/components/user-reports/viewed/utils.ts +5 -4
  156. package/dpr/data/agentConfig.js +1 -1
  157. package/dpr/data/agentConfig.js.map +1 -1
  158. package/dpr/data/dashboardClient.js +1 -1
  159. package/dpr/data/dashboardClient.js.map +2 -2
  160. package/dpr/data/dashboardClient.ts +2 -2
  161. package/dpr/data/dprReportingClient.js +1 -1
  162. package/dpr/data/dprReportingClient.js.map +3 -3
  163. package/dpr/data/dprReportingClient.ts +3 -3
  164. package/dpr/data/missingReportClient.js +2 -0
  165. package/dpr/data/missingReportClient.js.map +7 -0
  166. package/dpr/{services/missingReport → data}/missingReportClient.ts +4 -4
  167. package/dpr/data/productCollectionClient.js +2 -0
  168. package/dpr/data/productCollectionClient.js.map +7 -0
  169. package/dpr/data/productCollectionClient.ts +28 -0
  170. package/dpr/data/reportDataStore.js +1 -1
  171. package/dpr/data/reportDataStore.js.map +1 -1
  172. package/dpr/data/reportingClient.js +1 -1
  173. package/dpr/data/reportingClient.js.map +3 -3
  174. package/dpr/data/reportingClient.ts +7 -9
  175. package/dpr/data/restClient.js +1 -1
  176. package/dpr/data/restClient.js.map +2 -2
  177. package/dpr/data/restClient.ts +5 -5
  178. package/dpr/data/types.d.js +1 -1
  179. package/dpr/data/types.d.js.map +2 -2
  180. package/dpr/data/types.d.ts +1 -1
  181. package/dpr/middleware/reportAuthoriser.js +1 -1
  182. package/dpr/middleware/reportAuthoriser.js.map +2 -2
  183. package/dpr/middleware/reportAuthoriser.ts +2 -2
  184. package/dpr/middleware/setUpDprResources.js +1 -1
  185. package/dpr/middleware/setUpDprResources.js.map +2 -2
  186. package/dpr/middleware/setUpDprResources.test.ts +59 -20
  187. package/dpr/middleware/setUpDprResources.ts +30 -29
  188. package/dpr/middleware/setUpNestedRoute.js +1 -1
  189. package/dpr/middleware/setUpNestedRoute.js.map +2 -2
  190. package/dpr/middleware/setUpNestedRoute.ts +1 -1
  191. package/dpr/routes/index.js +1 -1
  192. package/dpr/routes/index.js.map +2 -2
  193. package/dpr/routes/index.ts +1 -2
  194. package/dpr/routes/journeys/download-report/controller.js +1 -1
  195. package/dpr/routes/journeys/download-report/controller.js.map +3 -3
  196. package/dpr/routes/journeys/download-report/controller.ts +7 -6
  197. package/dpr/routes/journeys/download-report/request-download/form/controller.js +1 -1
  198. package/dpr/routes/journeys/download-report/request-download/form/controller.js.map +3 -3
  199. package/dpr/routes/journeys/download-report/request-download/form/controller.ts +1 -1
  200. package/dpr/routes/journeys/download-report/request-download/form/routes.js +1 -1
  201. package/dpr/routes/journeys/download-report/request-download/form/routes.js.map +1 -1
  202. package/dpr/routes/journeys/download-report/request-download/form/submitted/controller.js +1 -1
  203. package/dpr/routes/journeys/download-report/request-download/form/submitted/controller.js.map +3 -3
  204. package/dpr/routes/journeys/download-report/request-download/form/submitted/controller.ts +1 -1
  205. package/dpr/routes/journeys/download-report/request-download/form/submitted/routes.js +1 -1
  206. package/dpr/routes/journeys/download-report/request-download/form/submitted/routes.js.map +1 -1
  207. package/dpr/routes/journeys/download-report/request-download/form/submitted/tests.cy.js +1 -1
  208. package/dpr/routes/journeys/download-report/request-download/form/submitted/tests.cy.js.map +1 -1
  209. package/dpr/routes/journeys/download-report/request-download/form/tests.cy.js +1 -1
  210. package/dpr/routes/journeys/download-report/request-download/form/tests.cy.js.map +1 -1
  211. package/dpr/routes/journeys/download-report/request-download/routes.js +1 -1
  212. package/dpr/routes/journeys/download-report/request-download/routes.js.map +1 -1
  213. package/dpr/routes/journeys/download-report/request-download/service.js +1 -1
  214. package/dpr/routes/journeys/download-report/request-download/service.js.map +3 -3
  215. package/dpr/routes/journeys/download-report/request-download/service.ts +20 -8
  216. package/dpr/routes/journeys/download-report/routes.js +1 -1
  217. package/dpr/routes/journeys/download-report/routes.js.map +3 -3
  218. package/dpr/routes/journeys/download-report/routes.ts +1 -4
  219. package/dpr/routes/journeys/download-report/tests.cy.js +1 -1
  220. package/dpr/routes/journeys/download-report/tests.cy.js.map +2 -2
  221. package/dpr/routes/journeys/download-report/tests.cy.ts +4 -1
  222. package/dpr/routes/journeys/download-report/utils.js +1 -1
  223. package/dpr/routes/journeys/download-report/utils.js.map +2 -2
  224. package/dpr/routes/journeys/download-report/utils.ts +2 -4
  225. package/dpr/routes/journeys/my-reports/bookmarks/controller.js +1 -1
  226. package/dpr/routes/journeys/my-reports/bookmarks/controller.js.map +1 -1
  227. package/dpr/routes/journeys/my-reports/bookmarks/list/controller.js +1 -1
  228. package/dpr/routes/journeys/my-reports/bookmarks/list/controller.js.map +3 -3
  229. package/dpr/routes/journeys/my-reports/bookmarks/list/controller.ts +2 -2
  230. package/dpr/routes/journeys/my-reports/bookmarks/list/routes.js +1 -1
  231. package/dpr/routes/journeys/my-reports/bookmarks/list/routes.js.map +1 -1
  232. package/dpr/routes/journeys/my-reports/bookmarks/list/tests.cy.js +1 -1
  233. package/dpr/routes/journeys/my-reports/bookmarks/list/tests.cy.js.map +2 -2
  234. package/dpr/routes/journeys/my-reports/bookmarks/list/tests.cy.ts +1 -2
  235. package/dpr/routes/journeys/my-reports/bookmarks/routes.js +1 -1
  236. package/dpr/routes/journeys/my-reports/bookmarks/routes.js.map +1 -1
  237. package/dpr/routes/journeys/my-reports/bookmarks/service.js +3 -3
  238. package/dpr/routes/journeys/my-reports/bookmarks/service.js.map +3 -3
  239. package/dpr/routes/journeys/my-reports/bookmarks/service.ts +31 -18
  240. package/dpr/routes/journeys/my-reports/bookmarks/tests.cy.js +1 -1
  241. package/dpr/routes/journeys/my-reports/bookmarks/tests.cy.js.map +2 -2
  242. package/dpr/routes/journeys/my-reports/bookmarks/tests.cy.ts +26 -26
  243. package/dpr/routes/journeys/my-reports/bookmarks/utils.js +1 -1
  244. package/dpr/routes/journeys/my-reports/bookmarks/utils.js.map +3 -3
  245. package/dpr/routes/journeys/my-reports/bookmarks/utils.ts +10 -11
  246. package/dpr/routes/journeys/my-reports/recently-viewed/controller.js +1 -1
  247. package/dpr/routes/journeys/my-reports/recently-viewed/controller.js.map +1 -1
  248. package/dpr/routes/journeys/my-reports/recently-viewed/list/controller.js +1 -1
  249. package/dpr/routes/journeys/my-reports/recently-viewed/list/controller.js.map +3 -3
  250. package/dpr/routes/journeys/my-reports/recently-viewed/list/controller.ts +1 -1
  251. package/dpr/routes/journeys/my-reports/recently-viewed/list/routes.js +1 -1
  252. package/dpr/routes/journeys/my-reports/recently-viewed/list/routes.js.map +1 -1
  253. package/dpr/routes/journeys/my-reports/recently-viewed/list/tests.cy.js +1 -1
  254. package/dpr/routes/journeys/my-reports/recently-viewed/list/tests.cy.js.map +2 -2
  255. package/dpr/routes/journeys/my-reports/recently-viewed/list/tests.cy.ts +7 -4
  256. package/dpr/routes/journeys/my-reports/recently-viewed/routes.js +1 -1
  257. package/dpr/routes/journeys/my-reports/recently-viewed/routes.js.map +1 -1
  258. package/dpr/routes/journeys/my-reports/recently-viewed/service.js +1 -1
  259. package/dpr/routes/journeys/my-reports/recently-viewed/service.js.map +3 -3
  260. package/dpr/routes/journeys/my-reports/recently-viewed/service.ts +0 -2
  261. package/dpr/routes/journeys/my-reports/requested-reports/controller.js +1 -1
  262. package/dpr/routes/journeys/my-reports/requested-reports/controller.js.map +1 -1
  263. package/dpr/routes/journeys/my-reports/requested-reports/list/controller.js +1 -1
  264. package/dpr/routes/journeys/my-reports/requested-reports/list/controller.js.map +3 -3
  265. package/dpr/routes/journeys/my-reports/requested-reports/list/controller.ts +1 -1
  266. package/dpr/routes/journeys/my-reports/requested-reports/list/routes.js +1 -1
  267. package/dpr/routes/journeys/my-reports/requested-reports/list/routes.js.map +1 -1
  268. package/dpr/routes/journeys/my-reports/requested-reports/list/tests.cy.js +1 -1
  269. package/dpr/routes/journeys/my-reports/requested-reports/list/tests.cy.js.map +1 -1
  270. package/dpr/routes/journeys/my-reports/requested-reports/routes.js +1 -1
  271. package/dpr/routes/journeys/my-reports/requested-reports/routes.js.map +1 -1
  272. package/dpr/routes/journeys/my-reports/requested-reports/service.js +1 -1
  273. package/dpr/routes/journeys/my-reports/requested-reports/service.js.map +3 -3
  274. package/dpr/routes/journeys/my-reports/requested-reports/service.ts +25 -17
  275. package/dpr/routes/journeys/my-reports/routes.js +1 -1
  276. package/dpr/routes/journeys/my-reports/routes.js.map +3 -3
  277. package/dpr/routes/journeys/my-reports/routes.ts +0 -3
  278. package/dpr/routes/journeys/product-collection/routes.js +1 -1
  279. package/dpr/routes/journeys/product-collection/routes.js.map +1 -1
  280. package/dpr/routes/journeys/product-collection/selected/controller.js +1 -1
  281. package/dpr/routes/journeys/product-collection/selected/controller.js.map +1 -1
  282. package/dpr/routes/journeys/product-collection/selected/routes.js +1 -1
  283. package/dpr/routes/journeys/product-collection/selected/routes.js.map +1 -1
  284. package/dpr/routes/journeys/product-collection/selected/tests.cy.js +1 -1
  285. package/dpr/routes/journeys/product-collection/selected/tests.cy.js.map +2 -2
  286. package/dpr/routes/journeys/product-collection/selected/tests.cy.ts +6 -4
  287. package/dpr/routes/journeys/product-collection/selected/validation.js +1 -1
  288. package/dpr/routes/journeys/product-collection/selected/validation.js.map +1 -1
  289. package/dpr/routes/journeys/request-missing-report/form/controller.js +1 -1
  290. package/dpr/routes/journeys/request-missing-report/form/controller.js.map +3 -3
  291. package/dpr/routes/journeys/request-missing-report/form/controller.ts +21 -19
  292. package/dpr/routes/journeys/request-missing-report/form/routes.js +1 -1
  293. package/dpr/routes/journeys/request-missing-report/form/routes.js.map +1 -1
  294. package/dpr/routes/journeys/request-missing-report/form/tests.cy.js +1 -1
  295. package/dpr/routes/journeys/request-missing-report/form/tests.cy.js.map +1 -1
  296. package/dpr/routes/journeys/request-missing-report/form/validation.js +1 -1
  297. package/dpr/routes/journeys/request-missing-report/form/validation.js.map +1 -1
  298. package/dpr/routes/journeys/request-missing-report/routes.js +1 -1
  299. package/dpr/routes/journeys/request-missing-report/routes.js.map +1 -1
  300. package/dpr/routes/journeys/request-missing-report/submitted/controller.js +1 -1
  301. package/dpr/routes/journeys/request-missing-report/submitted/controller.js.map +1 -1
  302. package/dpr/routes/journeys/request-missing-report/submitted/routes.js +1 -1
  303. package/dpr/routes/journeys/request-missing-report/submitted/routes.js.map +1 -1
  304. package/dpr/routes/journeys/request-missing-report/submitted/tests.cy.js +1 -1
  305. package/dpr/routes/journeys/request-missing-report/submitted/tests.cy.js.map +1 -1
  306. package/dpr/routes/journeys/request-missing-report/tests.cy.js +1 -1
  307. package/dpr/routes/journeys/request-missing-report/tests.cy.js.map +2 -2
  308. package/dpr/routes/journeys/request-missing-report/tests.cy.ts +1 -1
  309. package/dpr/routes/journeys/request-report/controller.js +1 -1
  310. package/dpr/routes/journeys/request-report/controller.js.map +3 -3
  311. package/dpr/routes/journeys/request-report/controller.ts +1 -1
  312. package/dpr/routes/journeys/request-report/filters/controller.js +1 -1
  313. package/dpr/routes/journeys/request-report/filters/controller.js.map +3 -3
  314. package/dpr/routes/journeys/request-report/filters/controller.ts +7 -8
  315. package/dpr/routes/journeys/request-report/filters/routes.js +1 -1
  316. package/dpr/routes/journeys/request-report/filters/routes.js.map +1 -1
  317. package/dpr/routes/journeys/request-report/filters/tests.cy.js +1 -1
  318. package/dpr/routes/journeys/request-report/filters/tests.cy.js.map +1 -1
  319. package/dpr/routes/journeys/request-report/filters/utils.js +1 -1
  320. package/dpr/routes/journeys/request-report/filters/utils.js.map +3 -3
  321. package/dpr/routes/journeys/request-report/filters/utils.ts +38 -23
  322. package/dpr/routes/journeys/request-report/filters/view.njk +2 -1
  323. package/dpr/routes/journeys/request-report/routes.js +1 -1
  324. package/dpr/routes/journeys/request-report/routes.js.map +2 -2
  325. package/dpr/routes/journeys/request-report/routes.ts +2 -2
  326. package/dpr/routes/journeys/request-report/status/controller.js +1 -1
  327. package/dpr/routes/journeys/request-report/status/controller.js.map +3 -3
  328. package/dpr/routes/journeys/request-report/status/controller.ts +4 -4
  329. package/dpr/routes/journeys/request-report/status/routes.js +1 -1
  330. package/dpr/routes/journeys/request-report/status/routes.js.map +1 -1
  331. package/dpr/routes/journeys/request-report/status/tests.cy.js +1 -1
  332. package/dpr/routes/journeys/request-report/status/tests.cy.js.map +2 -2
  333. package/dpr/routes/journeys/request-report/status/tests.cy.ts +9 -4
  334. package/dpr/routes/journeys/request-report/status/utils.js +1 -1
  335. package/dpr/routes/journeys/request-report/status/utils.js.map +3 -3
  336. package/dpr/routes/journeys/request-report/status/utils.ts +10 -13
  337. package/dpr/routes/journeys/request-report/tests.cy.js +1 -1
  338. package/dpr/routes/journeys/request-report/tests.cy.js.map +2 -2
  339. package/dpr/routes/journeys/request-report/tests.cy.ts +14 -11
  340. package/dpr/routes/journeys/routes.js +1 -1
  341. package/dpr/routes/journeys/routes.js.map +1 -1
  342. package/dpr/routes/journeys/view-report/async/controller.js +1 -1
  343. package/dpr/routes/journeys/view-report/async/controller.js.map +3 -3
  344. package/dpr/routes/journeys/view-report/async/controller.ts +4 -4
  345. package/dpr/routes/journeys/view-report/async/dashboard/controller.js +1 -1
  346. package/dpr/routes/journeys/view-report/async/dashboard/controller.js.map +3 -3
  347. package/dpr/routes/journeys/view-report/async/dashboard/controller.ts +4 -4
  348. package/dpr/routes/journeys/view-report/async/dashboard/routes.js +1 -1
  349. package/dpr/routes/journeys/view-report/async/dashboard/routes.js.map +1 -1
  350. package/dpr/routes/journeys/view-report/async/dashboard/tests.cy.js +1 -1
  351. package/dpr/routes/journeys/view-report/async/dashboard/tests.cy.js.map +2 -2
  352. package/dpr/routes/journeys/view-report/async/dashboard/tests.cy.ts +2 -2
  353. package/dpr/routes/journeys/view-report/async/dashboard/utils.js +1 -1
  354. package/dpr/routes/journeys/view-report/async/dashboard/utils.js.map +3 -3
  355. package/dpr/routes/journeys/view-report/async/dashboard/utils.ts +6 -8
  356. package/dpr/routes/journeys/view-report/async/report/controller.js +1 -1
  357. package/dpr/routes/journeys/view-report/async/report/controller.js.map +3 -3
  358. package/dpr/routes/journeys/view-report/async/report/controller.ts +5 -5
  359. package/dpr/routes/journeys/view-report/async/report/routes.js +1 -1
  360. package/dpr/routes/journeys/view-report/async/report/routes.js.map +1 -1
  361. package/dpr/routes/journeys/view-report/async/report/tests.cy.js +1 -1
  362. package/dpr/routes/journeys/view-report/async/report/tests.cy.js.map +2 -2
  363. package/dpr/routes/journeys/view-report/async/report/tests.cy.ts +9 -7
  364. package/dpr/routes/journeys/view-report/async/report/types.js +1 -1
  365. package/dpr/routes/journeys/view-report/async/report/types.js.map +2 -2
  366. package/dpr/routes/journeys/view-report/async/report/types.ts +8 -8
  367. package/dpr/routes/journeys/view-report/async/report/utils.js +1 -1
  368. package/dpr/routes/journeys/view-report/async/report/utils.js.map +2 -2
  369. package/dpr/routes/journeys/view-report/async/report/utils.ts +16 -18
  370. package/dpr/routes/journeys/view-report/async/routes.js +1 -1
  371. package/dpr/routes/journeys/view-report/async/routes.js.map +1 -1
  372. package/dpr/routes/journeys/view-report/controller.js +1 -1
  373. package/dpr/routes/journeys/view-report/controller.js.map +3 -3
  374. package/dpr/routes/journeys/view-report/controller.ts +1 -1
  375. package/dpr/routes/journeys/view-report/routes.js +1 -1
  376. package/dpr/routes/journeys/view-report/routes.js.map +2 -2
  377. package/dpr/routes/journeys/view-report/routes.ts +6 -3
  378. package/dpr/routes/journeys/view-report/sync/load-report/controller.js +1 -1
  379. package/dpr/routes/journeys/view-report/sync/load-report/controller.js.map +2 -2
  380. package/dpr/routes/journeys/view-report/sync/load-report/controller.ts +1 -1
  381. package/dpr/routes/journeys/view-report/sync/load-report/routes.js +1 -1
  382. package/dpr/routes/journeys/view-report/sync/load-report/routes.js.map +1 -1
  383. package/dpr/routes/journeys/view-report/sync/report/controller.js +1 -1
  384. package/dpr/routes/journeys/view-report/sync/report/controller.js.map +3 -3
  385. package/dpr/routes/journeys/view-report/sync/report/controller.ts +6 -6
  386. package/dpr/routes/journeys/view-report/sync/report/routes.js +1 -1
  387. package/dpr/routes/journeys/view-report/sync/report/routes.js.map +1 -1
  388. package/dpr/routes/journeys/view-report/sync/report/utils.js +1 -1
  389. package/dpr/routes/journeys/view-report/sync/report/utils.js.map +3 -3
  390. package/dpr/routes/journeys/view-report/sync/report/utils.ts +29 -19
  391. package/dpr/routes/journeys/view-report/sync/routes.js +1 -1
  392. package/dpr/routes/journeys/view-report/sync/routes.js.map +1 -1
  393. package/dpr/routes/journeys/view-report/sync/tests.cy.js +1 -1
  394. package/dpr/routes/journeys/view-report/sync/tests.cy.js.map +2 -2
  395. package/dpr/routes/journeys/view-report/sync/tests.cy.ts +1 -1
  396. package/dpr/routes/journeys/view-report/utils.js +1 -1
  397. package/dpr/routes/journeys/view-report/utils.js.map +3 -3
  398. package/dpr/routes/journeys/view-report/utils.ts +22 -12
  399. package/dpr/services/dashboardService.js +1 -1
  400. package/dpr/services/dashboardService.js.map +3 -3
  401. package/dpr/services/dashboardService.ts +1 -3
  402. package/dpr/services/defaultFilterValuesService.js +1 -1
  403. package/dpr/services/defaultFilterValuesService.js.map +3 -3
  404. package/dpr/services/defaultFilterValuesService.ts +34 -15
  405. package/dpr/services/index.js +1 -1
  406. package/dpr/services/index.js.map +1 -1
  407. package/dpr/services/missingReport/missingReportService.js +2 -0
  408. package/dpr/services/missingReport/missingReportService.js.map +7 -0
  409. package/dpr/services/missingReport/missingReportService.ts +26 -0
  410. package/dpr/services/productCollection/productCollectionService.js +1 -1
  411. package/dpr/services/productCollection/productCollectionService.js.map +3 -3
  412. package/dpr/services/productCollection/productCollectionService.ts +19 -14
  413. package/dpr/services/productCollection/productCollectionStoreService.js +1 -1
  414. package/dpr/services/productCollection/productCollectionStoreService.js.map +3 -3
  415. package/dpr/services/productCollection/productCollectionStoreService.ts +9 -3
  416. package/dpr/services/reportStoreService.js +1 -1
  417. package/dpr/services/reportStoreService.js.map +2 -2
  418. package/dpr/services/reportStoreService.ts +1 -1
  419. package/dpr/services/reportingService.js +1 -1
  420. package/dpr/services/reportingService.js.map +3 -3
  421. package/dpr/services/reportingService.ts +1 -3
  422. package/dpr/setUpNunjucksFilters.js +1 -1
  423. package/dpr/setUpNunjucksFilters.js.map +1 -1
  424. package/dpr/types/AsyncReportUtils.js +1 -1
  425. package/dpr/types/AsyncReportUtils.js.map +2 -2
  426. package/dpr/types/AsyncReportUtils.ts +2 -1
  427. package/dpr/types/Bookmark.js +1 -1
  428. package/dpr/types/Bookmark.js.map +2 -2
  429. package/dpr/types/Bookmark.ts +9 -3
  430. package/dpr/types/Charts.js +1 -1
  431. package/dpr/types/Charts.js.map +1 -1
  432. package/dpr/types/Download.js +1 -1
  433. package/dpr/types/Download.js.map +1 -1
  434. package/dpr/types/DprConfig.js +1 -1
  435. package/dpr/types/DprConfig.js.map +2 -2
  436. package/dpr/types/DprConfig.ts +8 -0
  437. package/dpr/types/DprUser.js +1 -1
  438. package/dpr/types/DprUser.js.map +2 -2
  439. package/dpr/types/DprUser.ts +2 -2
  440. package/dpr/types/EmbeddedReportUtils.js +1 -1
  441. package/dpr/types/EmbeddedReportUtils.js.map +1 -1
  442. package/dpr/types/ExecutionData.d.js +1 -1
  443. package/dpr/types/ExecutionData.d.js.map +2 -2
  444. package/dpr/types/ExecutionData.d.ts +2 -2
  445. package/dpr/types/Metrics.js +1 -1
  446. package/dpr/types/Metrics.js.map +2 -2
  447. package/dpr/types/Metrics.ts +1 -1
  448. package/dpr/types/ReportQuery.js +1 -1
  449. package/dpr/types/ReportQuery.js.map +2 -2
  450. package/dpr/types/ReportQuery.ts +15 -11
  451. package/dpr/types/ReportStore.js +1 -1
  452. package/dpr/types/ReportStore.js.map +1 -1
  453. package/dpr/types/Services.d.js +1 -1
  454. package/dpr/types/Services.d.js.map +2 -2
  455. package/dpr/types/Services.d.ts +8 -8
  456. package/dpr/types/Templates.d.js +1 -1
  457. package/dpr/types/Templates.d.js.map +1 -1
  458. package/dpr/types/UserReports.js +1 -1
  459. package/dpr/types/UserReports.js.map +2 -2
  460. package/dpr/types/UserReports.ts +29 -15
  461. package/dpr/types/api.d.js +1 -1
  462. package/dpr/types/api.d.js.map +1 -1
  463. package/dpr/types/index.d.js +1 -1
  464. package/dpr/types/index.d.js.map +2 -2
  465. package/dpr/types/index.d.ts +1 -1
  466. package/dpr/utils/CollatedSummaryBuilder/CollatedSummaryBuilder.js +1 -1
  467. package/dpr/utils/CollatedSummaryBuilder/CollatedSummaryBuilder.js.map +1 -1
  468. package/dpr/utils/CollatedSummaryBuilder/CollatedSummaryBuilder.test.ts +2 -0
  469. package/dpr/utils/CreateDprServices.js +2 -0
  470. package/dpr/utils/CreateDprServices.js.map +7 -0
  471. package/dpr/utils/CreateDprServices.ts +73 -0
  472. package/dpr/utils/DataTableBuilder/DataTableBuilder.js +1 -1
  473. package/dpr/utils/DataTableBuilder/DataTableBuilder.js.map +1 -1
  474. package/dpr/utils/DataTableBuilder/DataTableBuilder.test.ts +10 -0
  475. package/dpr/utils/DataTableBuilder/types.d.js +1 -1
  476. package/dpr/utils/DataTableBuilder/types.d.js.map +2 -2
  477. package/dpr/utils/DataTableBuilder/types.d.ts +3 -3
  478. package/dpr/utils/DateMapper/DateMapper.js +1 -1
  479. package/dpr/utils/DateMapper/DateMapper.js.map +2 -2
  480. package/dpr/utils/DateMapper/DateMapper.test.ts +22 -9
  481. package/dpr/utils/DateMapper/DateMapper.ts +9 -11
  482. package/dpr/utils/DateMapper/types.d.js +1 -1
  483. package/dpr/utils/DateMapper/types.d.js.map +1 -1
  484. package/dpr/utils/ErrorHandler.js +2 -0
  485. package/dpr/utils/ErrorHandler.js.map +7 -0
  486. package/dpr/utils/ErrorHandler.ts +85 -0
  487. package/dpr/utils/ParentChildDataTableBuilder/ParentChildDataTableBuilder.js +1 -1
  488. package/dpr/utils/ParentChildDataTableBuilder/ParentChildDataTableBuilder.js.map +2 -2
  489. package/dpr/utils/ParentChildDataTableBuilder/ParentChildDataTableBuilder.test.ts +13 -2
  490. package/dpr/utils/ParentChildDataTableBuilder/ParentChildDataTableBuilder.ts +3 -3
  491. package/dpr/utils/ParentChildDataTableBuilder/types.d.js +1 -1
  492. package/dpr/utils/ParentChildDataTableBuilder/types.d.js.map +1 -1
  493. package/dpr/utils/Personalisation/personalisationUtils.js +1 -1
  494. package/dpr/utils/Personalisation/personalisationUtils.js.map +3 -3
  495. package/dpr/utils/Personalisation/personalisationUtils.ts +6 -2
  496. package/dpr/utils/Personalisation/types.d.js +1 -1
  497. package/dpr/utils/Personalisation/types.d.js.map +1 -1
  498. package/dpr/utils/SectionedDataTableBuilder/SectionedDataTableBuilder.js +1 -1
  499. package/dpr/utils/SectionedDataTableBuilder/SectionedDataTableBuilder.js.map +2 -2
  500. package/dpr/utils/SectionedDataTableBuilder/SectionedDataTableBuilder.test.ts +5 -0
  501. package/dpr/utils/SectionedDataTableBuilder/SectionedDataTableBuilder.ts +1 -1
  502. package/dpr/utils/SectionedDataTableBuilder/types.d.js +1 -1
  503. package/dpr/utils/SectionedDataTableBuilder/types.d.js.map +1 -1
  504. package/dpr/utils/SectionedFieldsTableBuilder/SectionedFieldsTableBuilder.js +1 -1
  505. package/dpr/utils/SectionedFieldsTableBuilder/SectionedFieldsTableBuilder.js.map +2 -2
  506. package/dpr/utils/SectionedFieldsTableBuilder/SectionedFieldsTableBuilder.test.ts +7 -4
  507. package/dpr/utils/SectionedFieldsTableBuilder/SectionedFieldsTableBuilder.ts +3 -3
  508. package/dpr/utils/SummaryDataTableBuilder/SummaryDataTableBuilder.js +1 -1
  509. package/dpr/utils/SummaryDataTableBuilder/SummaryDataTableBuilder.js.map +1 -1
  510. package/dpr/utils/SummaryDataTableBuilder/SummaryDataTableBuilder.test.ts +1 -0
  511. package/dpr/utils/UserStoreItemBuilder.js +1 -1
  512. package/dpr/utils/UserStoreItemBuilder.js.map +2 -2
  513. package/dpr/utils/UserStoreItemBuilder.ts +19 -32
  514. package/dpr/utils/arrayUtils.js +1 -1
  515. package/dpr/utils/arrayUtils.js.map +1 -1
  516. package/dpr/utils/datasetHelper.js +1 -1
  517. package/dpr/utils/datasetHelper.js.map +2 -2
  518. package/dpr/utils/datasetHelper.test.ts +21 -33
  519. package/dpr/utils/datasetHelper.ts +12 -17
  520. package/dpr/utils/definitionUtils.js +1 -1
  521. package/dpr/utils/definitionUtils.js.map +3 -3
  522. package/dpr/utils/definitionUtils.ts +14 -3
  523. package/dpr/utils/index.js +1 -1
  524. package/dpr/utils/index.js.map +1 -1
  525. package/dpr/utils/indexedAccesHelper.js +2 -0
  526. package/dpr/utils/indexedAccesHelper.js.map +7 -0
  527. package/dpr/utils/indexedAccesHelper.ts +24 -0
  528. package/dpr/utils/localsHelper.js +1 -1
  529. package/dpr/utils/localsHelper.js.map +2 -2
  530. package/dpr/utils/localsHelper.ts +8 -8
  531. package/dpr/utils/logger.js +1 -1
  532. package/dpr/utils/logger.js.map +2 -2
  533. package/dpr/utils/logger.ts +1 -1
  534. package/dpr/utils/reportListsHelper.js +1 -1
  535. package/dpr/utils/reportListsHelper.js.map +1 -1
  536. package/dpr/utils/reportStoreHelper.js +1 -1
  537. package/dpr/utils/reportStoreHelper.js.map +1 -1
  538. package/dpr/utils/reportStoreHelper.test.ts +3 -2
  539. package/dpr/utils/requestStatusHelper.js +1 -1
  540. package/dpr/utils/requestStatusHelper.js.map +3 -3
  541. package/dpr/utils/requestStatusHelper.ts +29 -42
  542. package/dpr/utils/sanitisedError.js +1 -1
  543. package/dpr/utils/sanitisedError.js.map +2 -2
  544. package/dpr/utils/sanitisedError.ts +1 -1
  545. package/dpr/utils/urlHelper.js +1 -1
  546. package/dpr/utils/urlHelper.js.map +2 -2
  547. package/dpr/utils/urlHelper.ts +4 -4
  548. package/dpr/validation/validate.js +1 -1
  549. package/dpr/validation/validate.js.map +2 -2
  550. package/dpr/validation/validate.ts +2 -2
  551. package/package.json +4 -2
  552. package/dpr/components/error-summary/utils.js +0 -2
  553. package/dpr/components/error-summary/utils.js.map +0 -7
  554. package/dpr/components/error-summary/utils.test.ts +0 -54
  555. package/dpr/components/error-summary/utils.ts +0 -65
  556. package/dpr/services/missingReport/missingReportClient.js +0 -2
  557. package/dpr/services/missingReport/missingReportClient.js.map +0 -7
  558. package/dpr/utils/ReportStoreServiceUtils.js +0 -2
  559. package/dpr/utils/ReportStoreServiceUtils.js.map +0 -7
  560. package/dpr/utils/ReportStoreServiceUtils.ts +0 -140
@@ -1,6 +1,11 @@
1
1
  /* eslint-disable no-param-reassign */
2
2
  import { DashboardDataResponse } from '../../../types/Metrics'
3
- import { ListDashboardVisualisationOptions, MoJTable, MoJTableRow } from '../dashboard-visualisation/types'
3
+ import {
4
+ ListDashboardVisualisationOptions,
5
+ MoJTable,
6
+ MoJTableHead,
7
+ MoJTableRow,
8
+ } from '../dashboard-visualisation/types'
4
9
  import DatasetHelper from '../../../utils/datasetHelper'
5
10
  import { components } from '../../../types/api'
6
11
 
@@ -49,16 +54,16 @@ const createListFromColumns = (
49
54
  ) => {
50
55
  const { columns } = listDefinition
51
56
  const { keys, measures } = columns
52
- const groupKey = DatasetHelper.getGroupKey(keys || [], dashboardData)
57
+ const groupKey = DatasetHelper.getGroupKey(dashboardData, keys || [])
53
58
 
54
- const timestampData = dashboardData[0]?.ts?.raw
59
+ const timestampData = dashboardData[0]?.['ts']?.raw
55
60
  const ts = timestampData ? `${timestampData}` : ''
56
61
 
57
- const head = []
62
+ const head: MoJTableHead[] = []
58
63
  head.push({ text: '' })
59
64
  dashboardData.forEach((row) => {
60
65
  head.push({
61
- text: groupKey ? row[groupKey.id].raw : '',
66
+ text: groupKey ? `${row[groupKey.id].raw}` : '',
62
67
  })
63
68
  })
64
69
 
@@ -102,15 +107,15 @@ const creatListFromRows = (
102
107
  ) => {
103
108
  const { measures } = listDefinition.columns
104
109
 
105
- const head = measures.map((column) => {
106
- return { text: column.display }
110
+ const head: MoJTableHead[] = measures.map((column) => {
111
+ return { text: column.display || '' }
107
112
  })
108
113
 
109
114
  const dataSetRows = DatasetHelper.getDatasetRows(listDefinition, dashboardData)
110
115
  const displayRows = DatasetHelper.filterRowsByDisplayColumns(listDefinition, dataSetRows)
111
116
  const rows = createTableRows(displayRows, measures)
112
117
 
113
- const timestampData = dataSetRows[0]?.ts?.raw
118
+ const timestampData = dataSetRows[0]?.['ts']?.raw
114
119
  const ts = timestampData ? `${timestampData}` : ''
115
120
 
116
121
  return {
@@ -121,13 +126,13 @@ const creatListFromRows = (
121
126
  }
122
127
 
123
128
  const createFullList = (dashboardData: DashboardDataResponse[]) => {
124
- const head = Object.keys(dashboardData[0]).map((key) => {
125
- return { text: key }
129
+ const head: MoJTableHead[] = Object.keys(dashboardData[0]).map((key) => {
130
+ return { text: key || '' }
126
131
  })
127
132
  const rows = createTableRows(dashboardData)
128
133
 
129
134
  const latestData = DatasetHelper.getLastestDataset(dashboardData)
130
- const timestampData = latestData[0]?.ts?.raw
135
+ const timestampData = latestData[0]?.['ts']?.raw
131
136
  const ts = timestampData ? `${timestampData}` : ''
132
137
 
133
138
  return {
@@ -1,2 +1,2 @@
1
- var a=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var c=(i,s)=>{for(var n in s)a(i,n,{get:s[n],enumerable:!0})},r=(i,s,n,e)=>{if(s&&typeof s=="object"||typeof s=="function")for(let o of h(s))!u.call(i,o)&&o!==n&&a(i,o,{get:()=>s[o],enumerable:!(e=m(s,o))||e.enumerable});return i};var D=i=>r(a({},"__esModule",{value:!0}),i);var p={};c(p,{DashboardVisualisationClass:()=>t,default:()=>l});module.exports=D(p);class t{constructor(s,n){this.initUnit=()=>{this.unit=this.columns.measures[0].unit?this.columns.measures[0].unit:void 0};this.definition=n,this.columns=n.columns,this.measures=this.columns.measures,this.keys=this.columns.keys,this.type=this.definition.type.split("-")[0],this.initUnit(),this.responseData=s}}var l=t;0&&(module.exports={DashboardVisualisationClass});
1
+ "use strict";var a=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var c=(i,s)=>{for(var n in s)a(i,n,{get:s[n],enumerable:!0})},r=(i,s,n,e)=>{if(s&&typeof s=="object"||typeof s=="function")for(let o of h(s))!u.call(i,o)&&o!==n&&a(i,o,{get:()=>s[o],enumerable:!(e=m(s,o))||e.enumerable});return i};var D=i=>r(a({},"__esModule",{value:!0}),i);var p={};c(p,{DashboardVisualisationClass:()=>t,default:()=>l});module.exports=D(p);class t{constructor(s,n){this.initUnit=()=>{this.unit=this.columns.measures[0].unit?this.columns.measures[0].unit:void 0};this.definition=n,this.columns=n.columns,this.measures=this.columns.measures,this.keys=this.columns.keys||[],this.type=this.definition.type.split("-")[0],this.initUnit(),this.responseData=s}}var l=t;0&&(module.exports={DashboardVisualisationClass});
2
2
  //# sourceMappingURL=DashboardVisualisation.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/dpr/components/_dashboards/dashboard-visualisation/DashboardVisualisation.ts"],
4
- "sourcesContent": ["/* eslint-disable prefer-destructuring */\nimport { components } from '../../../types/api'\nimport { DashboardDataResponse } from '../../../types/Metrics'\n\nclass DashboardVisualisationClass {\n responseData: DashboardDataResponse[]\n\n definition: components['schemas']['DashboardVisualisationDefinition']\n\n columns: components['schemas']['DashboardVisualisationColumnsDefinition']\n\n measures: components['schemas']['DashboardVisualisationColumnDefinition'][]\n\n keys: components['schemas']['DashboardVisualisationColumnDefinition'][]\n\n unit: components['schemas']['DashboardVisualisationColumnDefinition']['unit']\n\n type: components['schemas']['DashboardVisualisationDefinition']['type']\n\n constructor(\n responseData: DashboardDataResponse[],\n definition: components['schemas']['DashboardVisualisationDefinition'],\n ) {\n this.definition = definition\n this.columns = definition.columns\n this.measures = this.columns.measures\n this.keys = this.columns.keys\n this.type = this.definition.type.split('-')[0] as components['schemas']['DashboardVisualisationDefinition']['type']\n this.initUnit()\n this.responseData = responseData\n }\n\n initUnit = () => {\n // todo\n this.unit = this.columns.measures[0].unit ? this.columns.measures[0].unit : undefined\n }\n}\n\nexport { DashboardVisualisationClass }\nexport default DashboardVisualisationClass\n"],
5
- "mappings": "4ZAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,iCAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAIA,MAAME,CAA4B,CAehC,YACEG,EACAC,EACA,CAUF,cAAW,IAAM,CAEf,KAAK,KAAO,KAAK,QAAQ,SAAS,CAAC,EAAE,KAAO,KAAK,QAAQ,SAAS,CAAC,EAAE,KAAO,MAC9E,EAZE,KAAK,WAAaA,EAClB,KAAK,QAAUA,EAAW,QAC1B,KAAK,SAAW,KAAK,QAAQ,SAC7B,KAAK,KAAO,KAAK,QAAQ,KACzB,KAAK,KAAO,KAAK,WAAW,KAAK,MAAM,GAAG,EAAE,CAAC,EAC7C,KAAK,SAAS,EACd,KAAK,aAAeD,CACtB,CAMF,CAGA,IAAOF,EAAQD",
4
+ "sourcesContent": ["/* eslint-disable prefer-destructuring */\nimport { components } from '../../../types/api'\nimport { DashboardDataResponse } from '../../../types/Metrics'\n\nclass DashboardVisualisationClass {\n responseData: DashboardDataResponse[]\n\n definition: components['schemas']['DashboardVisualisationDefinition']\n\n columns: components['schemas']['DashboardVisualisationColumnsDefinition']\n\n measures: components['schemas']['DashboardVisualisationColumnDefinition'][]\n\n keys: components['schemas']['DashboardVisualisationColumnDefinition'][]\n\n unit: components['schemas']['DashboardVisualisationColumnDefinition']['unit']\n\n type: components['schemas']['DashboardVisualisationDefinition']['type']\n\n constructor(\n responseData: DashboardDataResponse[],\n definition: components['schemas']['DashboardVisualisationDefinition'],\n ) {\n this.definition = definition\n this.columns = definition.columns\n this.measures = this.columns.measures\n this.keys = this.columns.keys || []\n this.type = this.definition.type.split('-')[0] as components['schemas']['DashboardVisualisationDefinition']['type']\n this.initUnit()\n this.responseData = responseData\n }\n\n initUnit = () => {\n // todo\n this.unit = this.columns.measures[0].unit ? this.columns.measures[0].unit : undefined\n }\n}\n\nexport { DashboardVisualisationClass }\nexport default DashboardVisualisationClass\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,iCAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAIA,MAAME,CAA4B,CAehC,YACEG,EACAC,EACA,CAUF,cAAW,IAAM,CAEf,KAAK,KAAO,KAAK,QAAQ,SAAS,CAAC,EAAE,KAAO,KAAK,QAAQ,SAAS,CAAC,EAAE,KAAO,MAC9E,EAZE,KAAK,WAAaA,EAClB,KAAK,QAAUA,EAAW,QAC1B,KAAK,SAAW,KAAK,QAAQ,SAC7B,KAAK,KAAO,KAAK,QAAQ,MAAQ,CAAC,EAClC,KAAK,KAAO,KAAK,WAAW,KAAK,MAAM,GAAG,EAAE,CAAC,EAC7C,KAAK,SAAS,EACd,KAAK,aAAeD,CACtB,CAMF,CAGA,IAAOF,EAAQD",
6
6
  "names": ["DashboardVisualisation_exports", "__export", "DashboardVisualisationClass", "DashboardVisualisation_default", "__toCommonJS", "responseData", "definition"]
7
7
  }
@@ -24,7 +24,7 @@ class DashboardVisualisationClass {
24
24
  this.definition = definition
25
25
  this.columns = definition.columns
26
26
  this.measures = this.columns.measures
27
- this.keys = this.columns.keys
27
+ this.keys = this.columns.keys || []
28
28
  this.type = this.definition.type.split('-')[0] as components['schemas']['DashboardVisualisationDefinition']['type']
29
29
  this.initUnit()
30
30
  this.responseData = responseData
@@ -1,2 +1,2 @@
1
- var o=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var b=(e,t)=>{for(var r in t)o(e,r,{get:t[r],enumerable:!0})},d=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of c(t))!u.call(e,i)&&i!==r&&o(e,i,{get:()=>t[i],enumerable:!(s=l(t,i))||s.enumerable});return e};var m=e=>d(o({},"__esModule",{value:!0}),e);var D={};b(D,{DashboardVisualisationType:()=>n});module.exports=m(D);var n=(a=>(a.LIST="list",a.DONUT="doughnut",a.BAR="bar",a.LINE="line",a.MATRIX="matrix",a.MATRIX_TIMESERIES="matrix-timeseries",a.BAR_TIMESERIES="bar-timeseries",a.LINE_TIMESERIES="line-timeseries",a.SCORECARD="scorecard",a.SCORECARD_GROUP="scorecard-group",a))(n||{});0&&(module.exports={DashboardVisualisationType});
1
+ "use strict";var o=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var c=(e,t)=>{for(var r in t)o(e,r,{get:t[r],enumerable:!0})},b=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of l(t))!u.call(e,i)&&i!==r&&o(e,i,{get:()=>t[i],enumerable:!(s=d(t,i))||s.enumerable});return e};var m=e=>b(o({},"__esModule",{value:!0}),e);var D={};c(D,{DashboardVisualisationType:()=>n});module.exports=m(D);var n=(a=>(a.LIST="list",a.DONUT="doughnut",a.BAR="bar",a.LINE="line",a.MATRIX="matrix",a.MATRIX_TIMESERIES="matrix-timeseries",a.BAR_TIMESERIES="bar-timeseries",a.LINE_TIMESERIES="line-timeseries",a.SCORECARD="scorecard",a.SCORECARD_GROUP="scorecard-group",a))(n||{});0&&(module.exports={DashboardVisualisationType});
2
2
  //# sourceMappingURL=types.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/dpr/components/_dashboards/dashboard-visualisation/types.ts"],
4
- "sourcesContent": ["import { components } from '../../../types/api'\nimport { Scorecard, ScorecardGroup } from '../scorecard/types'\nimport { MatrixChartData } from '../../_charts/chart/heatmap/types'\nimport { ChartDetails } from '../../../types/Charts'\n\nexport interface DashboardSection {\n id: string\n title?: string\n description?: string\n visualisations?: DashboardVisualisation[]\n}\n\nexport interface DashboardVisualisation {\n id: string\n type: components['schemas']['DashboardVisualisationDefinition']['type']\n title?: string\n description?: string\n data:\n | Scorecard\n | Scorecard[]\n | ScorecardGroup[]\n | DashboardVisualisatonCardData\n | DashboardVisualisationTable\n | undefined\n}\n\nexport interface DashboardVisualisatonCardData {\n chart: DashboardVisualisationData\n table?: MoJTable\n details?: ChartDetails\n}\n\nexport interface DashboardVisualisationData {\n type: components['schemas']['DashboardVisualisationDefinition']['type']\n unit?: components['schemas']['DashboardVisualisationColumnDefinition']['unit']\n data: DashboardVisualisationDataValues\n timeseries?: boolean\n}\n\nexport interface DashboardVisualisationDataValues {\n labels?: string[]\n datasets: DashboardVisualisationDataSet[]\n axis?: 'x' | 'y'\n}\n\nexport interface DashboardVisualisationDataSet {\n label: string\n data: number[] | MatrixChartData[]\n total?: number\n}\n\nexport interface DashboardVisualisationTable {\n table: MoJTable\n ts?: string\n}\n\nexport interface MoJTable {\n head: MoJTableHead[]\n rows: MoJTableRow[][]\n}\n\nexport interface MoJTableRow {\n text?: string\n html?: string\n}\n\nexport interface MoJTableHead {\n text?: string\n html?: string\n}\n\nexport enum DashboardVisualisationType {\n LIST = 'list',\n DONUT = 'doughnut',\n BAR = 'bar',\n LINE = 'line',\n MATRIX = 'matrix',\n MATRIX_TIMESERIES = 'matrix-timeseries',\n BAR_TIMESERIES = 'bar-timeseries',\n LINE_TIMESERIES = 'line-timeseries',\n SCORECARD = 'scorecard',\n SCORECARD_GROUP = 'scorecard-group',\n}\n\nexport type DashboardVisualisationOptions = ListDashboardVisualisationOptions | BucketDashboardVisualisationOptions\n\nexport interface ListDashboardVisualisationOptions {\n showLatest?: boolean\n columnsAsList?: boolean\n}\n\nexport interface BucketDashboardVisualisationOptions {\n useRagColour?: boolean\n buckets?: DashboardVisualisationBucket[]\n baseColour?: string\n}\n\nexport interface DashboardVisualisationBucket {\n min?: number\n max?: number\n hexColour?: string\n}\n"],
5
- "mappings": "4ZAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,gCAAAE,IAAA,eAAAC,EAAAH,GAuEO,IAAKE,OACVA,EAAA,KAAO,OACPA,EAAA,MAAQ,WACRA,EAAA,IAAM,MACNA,EAAA,KAAO,OACPA,EAAA,OAAS,SACTA,EAAA,kBAAoB,oBACpBA,EAAA,eAAiB,iBACjBA,EAAA,gBAAkB,kBAClBA,EAAA,UAAY,YACZA,EAAA,gBAAkB,kBAVRA,OAAA",
4
+ "sourcesContent": ["import { components } from '../../../types/api'\nimport { Scorecard, ScorecardGroup } from '../scorecard/types'\nimport { MatrixChartData } from '../../_charts/chart/heatmap/types'\nimport { ChartDetails } from '../../../types/Charts'\n\nexport interface DashboardSection {\n id: string\n title?: string\n description?: string\n visualisations?: DashboardVisualisation[]\n}\n\nexport interface DashboardVisualisation {\n id: string\n type: components['schemas']['DashboardVisualisationDefinition']['type']\n title?: string | undefined\n description?: string | undefined\n data:\n | Scorecard\n | Scorecard[]\n | ScorecardGroup[]\n | DashboardVisualisatonCardData\n | DashboardVisualisationTable\n | undefined\n}\n\nexport interface DashboardVisualisatonCardData {\n chart?: DashboardVisualisationData | undefined\n table?: MoJTable | undefined\n details?: ChartDetails | undefined\n}\n\nexport interface DashboardVisualisationData {\n type: components['schemas']['DashboardVisualisationDefinition']['type']\n unit?: components['schemas']['DashboardVisualisationColumnDefinition']['unit']\n data: DashboardVisualisationDataValues\n timeseries?: boolean\n}\n\nexport interface DashboardVisualisationDataValues {\n labels?: string[]\n datasets: DashboardVisualisationDataSet[]\n axis?: 'x' | 'y'\n}\n\nexport interface DashboardVisualisationDataSet {\n label: string\n data: number[] | MatrixChartData[]\n total?: number\n}\n\nexport interface DashboardVisualisationTable {\n table: MoJTable\n ts?: string\n}\n\nexport interface MoJTable {\n head: MoJTableHead[]\n rows: MoJTableRow[][]\n}\n\nexport interface MoJTableRow {\n text?: string\n html?: string\n}\n\nexport interface MoJTableHead {\n text?: string\n html?: string\n}\n\nexport enum DashboardVisualisationType {\n LIST = 'list',\n DONUT = 'doughnut',\n BAR = 'bar',\n LINE = 'line',\n MATRIX = 'matrix',\n MATRIX_TIMESERIES = 'matrix-timeseries',\n BAR_TIMESERIES = 'bar-timeseries',\n LINE_TIMESERIES = 'line-timeseries',\n SCORECARD = 'scorecard',\n SCORECARD_GROUP = 'scorecard-group',\n}\n\nexport type DashboardVisualisationOptions = ListDashboardVisualisationOptions | BucketDashboardVisualisationOptions\n\nexport interface ListDashboardVisualisationOptions {\n showLatest?: boolean\n columnsAsList?: boolean\n}\n\nexport interface BucketDashboardVisualisationOptions {\n useRagColour?: boolean\n buckets?: DashboardVisualisationBucket[]\n baseColour?: string\n}\n\nexport interface DashboardVisualisationBucket {\n min?: number | undefined\n max?: number | undefined\n hexColour?: string | undefined\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,gCAAAE,IAAA,eAAAC,EAAAH,GAuEO,IAAKE,OACVA,EAAA,KAAO,OACPA,EAAA,MAAQ,WACRA,EAAA,IAAM,MACNA,EAAA,KAAO,OACPA,EAAA,OAAS,SACTA,EAAA,kBAAoB,oBACpBA,EAAA,eAAiB,iBACjBA,EAAA,gBAAkB,kBAClBA,EAAA,UAAY,YACZA,EAAA,gBAAkB,kBAVRA,OAAA",
6
6
  "names": ["types_exports", "__export", "DashboardVisualisationType", "__toCommonJS"]
7
7
  }
@@ -13,8 +13,8 @@ export interface DashboardSection {
13
13
  export interface DashboardVisualisation {
14
14
  id: string
15
15
  type: components['schemas']['DashboardVisualisationDefinition']['type']
16
- title?: string
17
- description?: string
16
+ title?: string | undefined
17
+ description?: string | undefined
18
18
  data:
19
19
  | Scorecard
20
20
  | Scorecard[]
@@ -25,9 +25,9 @@ export interface DashboardVisualisation {
25
25
  }
26
26
 
27
27
  export interface DashboardVisualisatonCardData {
28
- chart: DashboardVisualisationData
29
- table?: MoJTable
30
- details?: ChartDetails
28
+ chart?: DashboardVisualisationData | undefined
29
+ table?: MoJTable | undefined
30
+ details?: ChartDetails | undefined
31
31
  }
32
32
 
33
33
  export interface DashboardVisualisationData {
@@ -96,7 +96,7 @@ export interface BucketDashboardVisualisationOptions {
96
96
  }
97
97
 
98
98
  export interface DashboardVisualisationBucket {
99
- min?: number
100
- max?: number
101
- hexColour?: string
99
+ min?: number | undefined
100
+ max?: number | undefined
101
+ hexColour?: string | undefined
102
102
  }
@@ -1,2 +1,2 @@
1
- var V=Object.create;var g=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var B=Object.getOwnPropertyNames;var $=Object.getPrototypeOf,F=Object.prototype.hasOwnProperty;var T=(n,u)=>{for(var e in u)g(n,e,{get:u[e],enumerable:!0})},b=(n,u,e,t)=>{if(u&&typeof u=="object"||typeof u=="function")for(let s of B(u))!F.call(n,s)&&s!==e&&g(n,s,{get:()=>u[s],enumerable:!(t=k(u,s))||t.enumerable});return n};var f=(n,u,e)=>(e=n!=null?V($(n)):{},b(u||!n||!n.__esModule?g(e,"default",{value:n,enumerable:!0}):e,n)),N=n=>b(g({},"__esModule",{value:!0}),n);var x={};T(x,{ScorecardVisualisation:()=>D,default:()=>I});module.exports=N(x);var K=f(require("../dashboard-visualisation/DashboardVisualisation")),l=f(require("../../../utils/datasetHelper")),v=f(require("../../_charts/chart/Buckets"));class D extends K.default{constructor(e,t,s=!1){super(e,t);this.buckets=[];this.valueKey="";this.titleKey="";this.ragColours=["#cce2d8","#fff7bf","#f4cdc6"];this.initBuckets=(e,t)=>{(this.definition.options?.buckets||this.definition.options?.useRagColour)&&(this.bucketsHelper=new v.default(e,this.definition,t,!1,this.ragColours),this.buckets=new v.default(e,this.definition,t,!1,this.ragColours).getBuckets())};this.initGroupVars=()=>{this.groupKey=l.default.getGroupKey(this.keys,this.dataset.latest),this.groupKeyId=this.groupKey?.id,this.groupKeyDisplay=this.groupKey?.display,this.valueColumn=this.measures.find(e=>e.displayValue),this.valueColumn&&(this.valueKey=this.valueColumn?.id,this.titleColumn=this.measures.find(e=>e.display||e.display===""),this.titleKey=this.titleColumn?.id||"")};this.getDataset=(e,t)=>{const s=l.default.getLastestDataset(t),r=l.default.getDatasetRows(e,s),i=r[0]?.ts?.raw,o=l.default.filterRowsByDisplayColumns(e,r,!0),a=l.default.getEarliestDataset(t),c=l.default.getDatasetRows(e,a),d=c[0]?.ts?.raw;return{earliest:l.default.filterRowsByDisplayColumns(e,c,!0),earliestTs:d,latest:o,latestTs:i}};this.setRagScore=(e,t)=>this.bucketsHelper?.getBucketForValue(e,t);this.createScorecardData=({title:e,value:t,rag:s,valueFor:r,valueFrom:i,prevVal:o,groupTitle:a})=>({id:this.definition.id,title:e,value:t,...!Number.isNaN(t)&&this.buckets.length&&this.bucketsHelper&&{rag:this.setRagScore(t,s)},valueFor:r,trend:this.createTrend(r,i,t,o),...a&&{group:a}});this.createTrend=(e,t,s,r)=>{let i;if(t!==e){const o=+s-+r;i={direction:Math.sign(o),value:Math.abs(o),from:t}}return i};this.validateDefinition=()=>{const{id:e,type:t}=this.definition,s=[];if(this.group||(this.measures.length!==1?s.push(`Measures should only have 1 column defined. Found ${this.measures.length}`):this.titleColumn?this.valueKey||s.push('Missing ID in title measure. Expected measure to include "id: string" field'):s.push('No title column defined. Expected measure to include "display: string" field')),s.length){const r=`Validation: Visualisaton definition: ID: ${e}, type: ${t}, errors: ${s.join(",")}`;throw new Error(r)}};this.createScorecardGroupFromColumns=()=>{const{latest:e,earliest:t,latestTs:s,earliestTs:r}=this.dataset;return e.map((i,o)=>({title:this.createGroupTitle(i),scorecards:Object.keys(i).filter(a=>a!==this.groupKeyId).map(a=>{const d=this.measures.find(R=>R.id===a)?.display||a,p=i[a],{raw:h,rag:m}=p,y=Number(h),S=m!==void 0?Number(m):void 0;this.initBuckets([i],a);const C=`${s}`,w=`${r}`,G=t[o][a]?.raw;return this.createScorecardData({title:d,value:y,rag:S,prevVal:G,valueFor:C,valueFrom:w})})}))};this.createScorecardGroupFromList=()=>{const{latest:e,earliest:t}=this.dataset;return[{title:"",scorecards:e.map((s,r)=>{const i=this.getScorecardValues(s),o=t[r][this.valueKey].raw;return this.createScorecardData({...i,prevVal:o})})}]};this.createScorecardGroupFromListWithGroups=()=>{const{latest:e,earliest:t}=this.dataset;let s=l.default.groupRowsByKey(t,this.groupKeyId),r=l.default.groupRowsByKey(e,this.groupKeyId);return this.groupKeyId===this.titleKey&&(r=[r.flat()],s=[s.flat()]),r.map((o,a)=>({title:this.groupKeyDisplay?`By ${this.groupKeyDisplay}`:"",scorecards:o.map((c,d)=>{const p=this.getScorecardValues(c),m=s[a][d][this.valueKey]?.raw;return this.createScorecardData({...p,prevVal:m})})}))};this.getScorecardValues=e=>{const{latestTs:t,earliestTs:s}=this.dataset,r=`${this.titleColumn?.display} ${e[this.titleKey].raw}`,i=e[this.valueKey],{raw:o,rag:a}=i,c=Number(o),d=a!==void 0?Number(a):void 0;this.initBuckets([e],this.valueKey);const p=`${t}`,h=`${s}`;return{title:r,value:c,rag:d,valueFor:p,valueFrom:h}};this.buildScorecard=()=>{const{latest:e,earliest:t,latestTs:s,earliestTs:r}=this.dataset;return e.map((o,a)=>{const{raw:c,rag:d}=o[this.valueKey],p=t[a][this.valueKey].raw,h=`${s}`,m=`${r}`,y=this.titleColumn?.display;return this.createScorecardData({title:y||"",value:c,rag:d,prevVal:p,valueFor:h,valueFrom:m})})[0]};this.createGroupTitle=e=>{const t=this.groupKeyId?`${e[this.groupKeyId]?.raw}`:"";return this.groupKeyDisplay&&this.groupKeyDisplay.length?`${this.groupKeyDisplay}: ${t}`:t};this.buildGroup=()=>{let e;return this.valueColumn?this.groupKey?e=this.createScorecardGroupFromListWithGroups():e=this.createScorecardGroupFromList():e=this.createScorecardGroupFromColumns(),e};this.build=()=>(this.validateDefinition(),this.group?this.buildGroup():this.buildScorecard());this.group=s,this.dataset=this.getDataset(t,e),s?this.initGroupVars():(this.valueKey=this.measures[0].id,this.titleColumn={display:t.display,id:this.valueKey},this.initBuckets(e,this.valueKey))}}var I=D;0&&(module.exports={ScorecardVisualisation});
1
+ "use strict";var V=Object.create;var g=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var B=Object.getOwnPropertyNames;var $=Object.getPrototypeOf,F=Object.prototype.hasOwnProperty;var T=(n,u)=>{for(var e in u)g(n,e,{get:u[e],enumerable:!0})},b=(n,u,e,t)=>{if(u&&typeof u=="object"||typeof u=="function")for(let s of B(u))!F.call(n,s)&&s!==e&&g(n,s,{get:()=>u[s],enumerable:!(t=k(u,s))||t.enumerable});return n};var f=(n,u,e)=>(e=n!=null?V($(n)):{},b(u||!n||!n.__esModule?g(e,"default",{value:n,enumerable:!0}):e,n)),N=n=>b(g({},"__esModule",{value:!0}),n);var x={};T(x,{ScorecardVisualisation:()=>D,default:()=>I});module.exports=N(x);var K=f(require("../dashboard-visualisation/DashboardVisualisation")),l=f(require("../../../utils/datasetHelper")),v=f(require("../../_charts/chart/Buckets"));class D extends K.default{constructor(e,t,s=!1){super(e,t);this.buckets=[];this.valueKey="";this.titleKey="";this.ragColours=["#cce2d8","#fff7bf","#f4cdc6"];this.initBuckets=(e,t)=>{(this.definition.options?.buckets||this.definition.options?.useRagColour)&&(this.bucketsHelper=new v.default(e,this.definition,t,!1,this.ragColours),this.buckets=new v.default(e,this.definition,t,!1,this.ragColours).getBuckets())};this.initGroupVars=()=>{this.groupKey=l.default.getGroupKey(this.dataset.latest,this.keys),this.groupKeyId=this.groupKey?.id,this.groupKeyDisplay=this.groupKey?.display,this.valueColumn=this.measures.find(e=>e.displayValue),this.valueColumn&&(this.valueKey=this.valueColumn?.id,this.titleColumn=this.measures.find(e=>e.display||e.display===""),this.titleKey=this.titleColumn?.id||"")};this.getDataset=(e,t)=>{const s=l.default.getLastestDataset(t),r=l.default.getDatasetRows(e,s),i=r[0]?.ts?.raw,o=l.default.filterRowsByDisplayColumns(e,r,!0),a=l.default.getEarliestDataset(t),c=l.default.getDatasetRows(e,a),d=c[0]?.ts?.raw;return{earliest:l.default.filterRowsByDisplayColumns(e,c,!0),earliestTs:d,latest:o,latestTs:i}};this.setRagScore=(e,t)=>this.bucketsHelper?.getBucketForValue(e,t);this.createScorecardData=({title:e,value:t,rag:s,valueFor:r,valueFrom:i,prevVal:o,groupTitle:a})=>({id:this.definition.id,title:e,value:t,...!Number.isNaN(t)&&this.buckets.length&&this.bucketsHelper&&{rag:this.setRagScore(t,s)},valueFor:r,trend:this.createTrend(r,i,t,o),...a&&{group:a}});this.createTrend=(e,t,s,r)=>{let i;if(t!==e){const o=r?Number(s)-Number(r):0;i={direction:Math.sign(o),value:Math.abs(o),from:t}}return i};this.validateDefinition=()=>{const{id:e,type:t}=this.definition,s=[];if(this.group||(this.measures.length!==1?s.push(`Measures should only have 1 column defined. Found ${this.measures.length}`):this.titleColumn?this.valueKey||s.push('Missing ID in title measure. Expected measure to include "id: string" field'):s.push('No title column defined. Expected measure to include "display: string" field')),s.length){const r=`Validation: Visualisaton definition: ID: ${e}, type: ${t}, errors: ${s.join(",")}`;throw new Error(r)}};this.createScorecardGroupFromColumns=()=>{const{latest:e,earliest:t,latestTs:s,earliestTs:r}=this.dataset;return e.map((i,o)=>({title:this.createGroupTitle(i),scorecards:Object.keys(i).filter(a=>a!==this.groupKeyId).map(a=>{const d=this.measures.find(R=>R.id===a)?.display||a,p=i[a],{raw:h,rag:m}=p,y=Number(h),S=m!==void 0?Number(m):void 0;this.initBuckets([i],a);const C=`${s}`,w=`${r}`,G=t[o][a]?.raw;return this.createScorecardData({title:d,value:y,rag:S,prevVal:G,valueFor:C,valueFrom:w})})}))};this.createScorecardGroupFromList=()=>{const{latest:e,earliest:t}=this.dataset;return[{title:"",scorecards:e.map((s,r)=>{const i=this.getScorecardValues(s),o=t[r][this.valueKey].raw;return this.createScorecardData({...i,prevVal:o})})}]};this.createScorecardGroupFromListWithGroups=()=>{const{latest:e,earliest:t}=this.dataset;let s=l.default.groupRowsByKey(t,this.groupKeyId),r=l.default.groupRowsByKey(e,this.groupKeyId);return this.groupKeyId===this.titleKey&&(r=[r.flat()],s=[s.flat()]),r.map((o,a)=>({title:this.groupKeyDisplay?`By ${this.groupKeyDisplay}`:"",scorecards:o.map((c,d)=>{const p=this.getScorecardValues(c),m=s[a][d][this.valueKey]?.raw;return this.createScorecardData({...p,prevVal:m})})}))};this.getScorecardValues=e=>{const{latestTs:t,earliestTs:s}=this.dataset,r=`${this.titleColumn?.display} ${e[this.titleKey].raw}`,i=e[this.valueKey],{raw:o,rag:a}=i,c=Number(o),d=a!==void 0?Number(a):void 0;this.initBuckets([e],this.valueKey);const p=`${t}`,h=`${s}`;return{title:r,value:c,rag:d,valueFor:p,valueFrom:h}};this.buildScorecard=()=>{const{latest:e,earliest:t,latestTs:s,earliestTs:r}=this.dataset;return e.map((o,a)=>{const{raw:c,rag:d}=o[this.valueKey],p=t[a][this.valueKey].raw,h=`${s}`,m=`${r}`,y=this.titleColumn?.display;return this.createScorecardData({title:y||"",value:c||"",rag:d,prevVal:p,valueFor:h,valueFrom:m})})[0]};this.createGroupTitle=e=>{const t=this.groupKeyId?`${e[this.groupKeyId]?.raw}`:"";return this.groupKeyDisplay&&this.groupKeyDisplay.length?`${this.groupKeyDisplay}: ${t}`:t};this.buildGroup=()=>{let e;return this.valueColumn?this.groupKey?e=this.createScorecardGroupFromListWithGroups():e=this.createScorecardGroupFromList():e=this.createScorecardGroupFromColumns(),e};this.build=()=>(this.validateDefinition(),this.group?this.buildGroup():this.buildScorecard());this.group=s,this.dataset=this.getDataset(t,e),s?this.initGroupVars():(this.valueKey=this.measures[0].id,this.titleColumn={display:t.display||"",id:this.valueKey},this.initBuckets(e,this.valueKey))}}var I=D;0&&(module.exports={ScorecardVisualisation});
2
2
  //# sourceMappingURL=Scorecard.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/dpr/components/_dashboards/scorecard/Scorecard.ts"],
4
- "sourcesContent": ["/* eslint-disable prefer-destructuring */\nimport { DashboardDataResponse } from '../../../types/Metrics'\nimport DashboardVisualisationClass from '../dashboard-visualisation/DashboardVisualisation'\nimport { DashboardVisualisationBucket } from '../dashboard-visualisation/types'\nimport DatasetHelper from '../../../utils/datasetHelper'\nimport { CreateScorecardDataArgs, Scorecard, ScorecardDataset, ScorecardGroup, ScorecardTrend } from './types'\nimport Buckets from '../../_charts/chart/Buckets'\nimport { components } from '../../../types/api'\n\nclass ScorecardVisualisation extends DashboardVisualisationClass {\n private dataset: ScorecardDataset\n\n private groupKey: components['schemas']['DashboardVisualisationColumnDefinition'] | undefined\n\n private groupKeyId: string | undefined\n\n private groupKeyDisplay: string | undefined\n\n private bucketsHelper: Buckets | undefined\n\n private buckets: DashboardVisualisationBucket[] = []\n\n private valueColumn: components['schemas']['DashboardVisualisationColumnDefinition'] | undefined\n\n private valueKey = ''\n\n private titleColumn: components['schemas']['DashboardVisualisationColumnDefinition'] | undefined\n\n private titleKey = ''\n\n private group: boolean\n\n private ragColours: string[] = ['#cce2d8', '#fff7bf', '#f4cdc6']\n\n constructor(\n responseData: DashboardDataResponse[],\n definition: components['schemas']['DashboardVisualisationDefinition'],\n group = false,\n ) {\n super(responseData, definition)\n this.group = group\n this.dataset = this.getDataset(definition, responseData)\n\n if (group) {\n this.initGroupVars()\n } else {\n this.valueKey = this.measures[0].id\n this.titleColumn = { display: definition.display, id: this.valueKey }\n this.initBuckets(responseData, this.valueKey)\n }\n }\n\n private initBuckets = (responseData: DashboardDataResponse[], valueKey: string) => {\n if (this.definition.options?.buckets || this.definition.options?.useRagColour) {\n this.bucketsHelper = new Buckets(responseData, this.definition, valueKey, false, this.ragColours)\n this.buckets = new Buckets(responseData, this.definition, valueKey, false, this.ragColours).getBuckets()\n }\n }\n\n private initGroupVars = () => {\n this.groupKey = DatasetHelper.getGroupKey(this.keys, this.dataset.latest)\n this.groupKeyId = this.groupKey?.id\n this.groupKeyDisplay = this.groupKey?.display\n\n this.valueColumn = this.measures.find((col) => col.displayValue)\n if (this.valueColumn) {\n this.valueKey = this.valueColumn?.id\n this.titleColumn = this.measures.find((col) => {\n return col.display || col.display === ''\n })\n this.titleKey = this.titleColumn?.id || ''\n }\n }\n\n private getDataset = (\n scorecardDefinition: components['schemas']['DashboardVisualisationDefinition'],\n rawData: DashboardDataResponse[],\n ) => {\n const latestData = DatasetHelper.getLastestDataset(rawData)\n const latestDataSetRows = DatasetHelper.getDatasetRows(scorecardDefinition, latestData)\n const latestTs = latestDataSetRows[0]?.ts?.raw\n const latestFiltered = DatasetHelper.filterRowsByDisplayColumns(scorecardDefinition, latestDataSetRows, true)\n\n const earliestData = DatasetHelper.getEarliestDataset(rawData)\n const earliestDataSetRows = DatasetHelper.getDatasetRows(scorecardDefinition, earliestData)\n const earliestTs = earliestDataSetRows[0]?.ts?.raw\n const earliestfiltered = DatasetHelper.filterRowsByDisplayColumns(scorecardDefinition, earliestDataSetRows, true)\n\n return {\n earliest: earliestfiltered,\n earliestTs,\n latest: latestFiltered,\n latestTs,\n }\n }\n\n private setRagScore = (value: number, rag?: number) => {\n return this.bucketsHelper?.getBucketForValue(value, rag)\n }\n\n private createScorecardData = ({\n title,\n value,\n rag,\n valueFor,\n valueFrom,\n prevVal,\n groupTitle,\n }: CreateScorecardDataArgs): Scorecard => {\n return {\n id: this.definition.id,\n title,\n value,\n ...(!Number.isNaN(value) &&\n this.buckets.length &&\n this.bucketsHelper && { rag: this.setRagScore(<number>value, rag) }),\n valueFor,\n trend: this.createTrend(valueFor, valueFrom, value, prevVal),\n ...(groupTitle && {\n group: groupTitle,\n }),\n }\n }\n\n private createTrend = (\n valueFor: string,\n valueFrom: string,\n latestValue: string | number,\n earliestValue: string | number,\n ): ScorecardTrend | undefined => {\n let trendData\n\n if (valueFrom !== valueFor) {\n const value = +latestValue - +earliestValue\n const direction = Math.sign(value)\n trendData = {\n direction,\n value: Math.abs(value),\n from: valueFrom,\n }\n }\n\n return trendData\n }\n\n private validateDefinition = () => {\n const { id, type } = this.definition\n const errors = []\n if (!this.group) {\n if (this.measures.length !== 1) {\n errors.push(`Measures should only have 1 column defined. Found ${this.measures.length}`)\n } else if (!this.titleColumn) {\n errors.push(`No title column defined. Expected measure to include \"display: string\" field`)\n } else if (!this.valueKey) {\n errors.push(`Missing ID in title measure. Expected measure to include \"id: string\" field`)\n }\n }\n\n if (errors.length) {\n // Throw the error\n const message = `Validation: Visualisaton definition: ID: ${id}, type: ${type}, errors: ${errors.join(',')}`\n throw new Error(message)\n }\n }\n\n private createScorecardGroupFromColumns = () => {\n const { latest, earliest, latestTs, earliestTs } = this.dataset\n\n return latest.map((row, rowIndex) => {\n return {\n title: this.createGroupTitle(row),\n scorecards: Object.keys(row)\n .filter((colId) => colId !== this.groupKeyId)\n .map((colId) => {\n const measure = this.measures.find((m) => m.id === colId)\n const title = measure?.display || colId\n const rowCol = row[colId]\n const { raw, rag: ragScore } = rowCol\n const value = Number(raw)\n\n const rag = ragScore !== undefined ? Number(ragScore) : undefined\n this.initBuckets([row], colId)\n\n const valueFor = `${latestTs}`\n const valueFrom = `${earliestTs}`\n\n const comparisonRow = earliest[rowIndex]\n const prevVal = comparisonRow[colId]?.raw\n\n return this.createScorecardData({\n title,\n value,\n rag,\n prevVal,\n valueFor,\n valueFrom,\n })\n }),\n }\n })\n }\n\n private createScorecardGroupFromList = (): ScorecardGroup[] => {\n const { latest, earliest } = this.dataset\n return [\n {\n title: '',\n scorecards: latest.map((row: DashboardDataResponse, index: number) => {\n const values = this.getScorecardValues(row)\n const prevVal = earliest[index][this.valueKey].raw\n return this.createScorecardData({\n ...values,\n prevVal,\n })\n }),\n },\n ]\n }\n\n private createScorecardGroupFromListWithGroups = () => {\n const { latest, earliest } = this.dataset\n\n let earliestGroupedByKey = DatasetHelper.groupRowsByKey(earliest, <string>this.groupKeyId)\n let latestGroupedByKey = DatasetHelper.groupRowsByKey(latest, <string>this.groupKeyId)\n if (this.groupKeyId === this.titleKey) {\n latestGroupedByKey = [latestGroupedByKey.flat()]\n earliestGroupedByKey = [earliestGroupedByKey.flat()]\n }\n\n const scorecardGroup = latestGroupedByKey.map((group, groupIndex) => {\n return {\n title: this.groupKeyDisplay ? `By ${this.groupKeyDisplay}` : '',\n scorecards: group.map((row, rowIndex) => {\n const values = this.getScorecardValues(row)\n const comparisonRow = earliestGroupedByKey[groupIndex][rowIndex]\n const prevVal = comparisonRow[this.valueKey]?.raw\n\n return this.createScorecardData({\n ...values,\n prevVal,\n })\n }),\n }\n })\n\n return scorecardGroup\n }\n\n private getScorecardValues = (row: DashboardDataResponse) => {\n const { latestTs, earliestTs } = this.dataset\n const title = `${this.titleColumn?.display} ${row[this.titleKey].raw}`\n const rowCol = row[this.valueKey]\n const { raw, rag: ragScore } = rowCol\n const value = Number(raw)\n const rag = ragScore !== undefined ? Number(ragScore) : undefined\n this.initBuckets([row], this.valueKey)\n const valueFor = `${latestTs}`\n const valueFrom = `${earliestTs}`\n\n return {\n title,\n value,\n rag,\n valueFor,\n valueFrom,\n }\n }\n\n /**\n * Builds a single scorecard\n *\n * @return {Scorecard}\n */\n private buildScorecard = () => {\n const { latest, earliest, latestTs, earliestTs } = this.dataset\n const scorecordArr: Scorecard[] = latest.map((datasetRow: DashboardDataResponse, index: number) => {\n const { raw: value, rag } = datasetRow[this.valueKey]\n const prevVal = earliest[index][this.valueKey].raw\n const valueFor = `${latestTs}`\n const valueFrom = `${earliestTs}`\n const title = this.titleColumn?.display\n\n return this.createScorecardData({\n title: title || '',\n value,\n rag,\n prevVal,\n valueFor,\n valueFrom,\n })\n })\n\n return scorecordArr[0]\n }\n\n private createGroupTitle = (row: DashboardDataResponse) => {\n const title = this.groupKeyId ? `${row[this.groupKeyId]?.raw}` : ''\n return this.groupKeyDisplay && this.groupKeyDisplay.length ? `${this.groupKeyDisplay}: ${title}` : title\n }\n\n private buildGroup = () => {\n let scorecardGroup: ScorecardGroup[]\n if (!this.valueColumn) {\n scorecardGroup = this.createScorecardGroupFromColumns()\n } else if (this.groupKey) {\n scorecardGroup = this.createScorecardGroupFromListWithGroups()\n } else {\n scorecardGroup = this.createScorecardGroupFromList()\n }\n return scorecardGroup\n }\n\n build = () => {\n this.validateDefinition()\n if (this.group) {\n return this.buildGroup()\n }\n return this.buildScorecard()\n }\n}\n\nexport { ScorecardVisualisation }\nexport default ScorecardVisualisation\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/* eslint-disable prefer-destructuring */\nimport { DashboardDataResponse } from '../../../types/Metrics'\nimport DashboardVisualisationClass from '../dashboard-visualisation/DashboardVisualisation'\nimport { DashboardVisualisationBucket } from '../dashboard-visualisation/types'\nimport DatasetHelper from '../../../utils/datasetHelper'\nimport { CreateScorecardDataArgs, Scorecard, ScorecardDataset, ScorecardGroup, ScorecardTrend } from './types'\nimport Buckets from '../../_charts/chart/Buckets'\nimport { components } from '../../../types/api'\n\nclass ScorecardVisualisation extends DashboardVisualisationClass {\n private dataset: ScorecardDataset\n\n private groupKey: components['schemas']['DashboardVisualisationColumnDefinition'] | undefined\n\n private groupKeyId: string | undefined\n\n private groupKeyDisplay: string | undefined\n\n private bucketsHelper: Buckets | undefined\n\n private buckets: DashboardVisualisationBucket[] = []\n\n private valueColumn: components['schemas']['DashboardVisualisationColumnDefinition'] | undefined\n\n private valueKey = ''\n\n private titleColumn: components['schemas']['DashboardVisualisationColumnDefinition'] | undefined\n\n private titleKey = ''\n\n private group: boolean\n\n private ragColours: string[] = ['#cce2d8', '#fff7bf', '#f4cdc6']\n\n constructor(\n responseData: DashboardDataResponse[],\n definition: components['schemas']['DashboardVisualisationDefinition'],\n group = false,\n ) {\n super(responseData, definition)\n this.group = group\n this.dataset = this.getDataset(definition, responseData)\n\n if (group) {\n this.initGroupVars()\n } else {\n this.valueKey = this.measures[0].id\n this.titleColumn = { display: definition.display || '', id: this.valueKey }\n this.initBuckets(responseData, this.valueKey)\n }\n }\n\n private initBuckets = (responseData: DashboardDataResponse[], valueKey: string) => {\n if (this.definition.options?.buckets || this.definition.options?.useRagColour) {\n this.bucketsHelper = new Buckets(responseData, this.definition, valueKey, false, this.ragColours)\n this.buckets = new Buckets(responseData, this.definition, valueKey, false, this.ragColours).getBuckets()\n }\n }\n\n private initGroupVars = () => {\n this.groupKey = DatasetHelper.getGroupKey(this.dataset.latest, this.keys)\n this.groupKeyId = this.groupKey?.id\n this.groupKeyDisplay = this.groupKey?.display\n\n this.valueColumn = this.measures.find((col) => col.displayValue)\n if (this.valueColumn) {\n this.valueKey = this.valueColumn?.id\n this.titleColumn = this.measures.find((col) => {\n return col.display || col.display === ''\n })\n this.titleKey = this.titleColumn?.id || ''\n }\n }\n\n private getDataset = (\n scorecardDefinition: components['schemas']['DashboardVisualisationDefinition'],\n rawData: DashboardDataResponse[],\n ): ScorecardDataset => {\n const latestData = DatasetHelper.getLastestDataset(rawData)\n const latestDataSetRows = DatasetHelper.getDatasetRows(scorecardDefinition, latestData)\n const latestTs = latestDataSetRows[0]?.['ts']?.raw\n const latestFiltered = DatasetHelper.filterRowsByDisplayColumns(scorecardDefinition, latestDataSetRows, true)\n\n const earliestData = DatasetHelper.getEarliestDataset(rawData)\n const earliestDataSetRows = DatasetHelper.getDatasetRows(scorecardDefinition, earliestData)\n const earliestTs = earliestDataSetRows[0]?.['ts']?.raw\n const earliestfiltered = DatasetHelper.filterRowsByDisplayColumns(scorecardDefinition, earliestDataSetRows, true)\n\n return {\n earliest: earliestfiltered,\n earliestTs,\n latest: latestFiltered,\n latestTs,\n }\n }\n\n private setRagScore = (value: number, rag?: number) => {\n return this.bucketsHelper?.getBucketForValue(value, rag)\n }\n\n private createScorecardData = ({\n title,\n value,\n rag,\n valueFor,\n valueFrom,\n prevVal,\n groupTitle,\n }: CreateScorecardDataArgs): Scorecard => {\n return {\n id: this.definition.id,\n title,\n value,\n ...(!Number.isNaN(value) &&\n this.buckets.length &&\n this.bucketsHelper && { rag: this.setRagScore(<number>value, rag) }),\n valueFor,\n trend: this.createTrend(valueFor, valueFrom, value, prevVal),\n ...(groupTitle && {\n group: groupTitle,\n }),\n }\n }\n\n private createTrend = (\n valueFor: string,\n valueFrom: string,\n latestValue: string | number,\n earliestValue: string | number | null | undefined,\n ): ScorecardTrend | undefined => {\n let trendData\n\n if (valueFrom !== valueFor) {\n const value = earliestValue ? Number(latestValue) - Number(earliestValue) : 0\n const direction = Math.sign(value)\n trendData = {\n direction,\n value: Math.abs(value),\n from: valueFrom,\n }\n }\n\n return trendData\n }\n\n private validateDefinition = () => {\n const { id, type } = this.definition\n const errors = []\n if (!this.group) {\n if (this.measures.length !== 1) {\n errors.push(`Measures should only have 1 column defined. Found ${this.measures.length}`)\n } else if (!this.titleColumn) {\n errors.push(`No title column defined. Expected measure to include \"display: string\" field`)\n } else if (!this.valueKey) {\n errors.push(`Missing ID in title measure. Expected measure to include \"id: string\" field`)\n }\n }\n\n if (errors.length) {\n // Throw the error\n const message = `Validation: Visualisaton definition: ID: ${id}, type: ${type}, errors: ${errors.join(',')}`\n throw new Error(message)\n }\n }\n\n private createScorecardGroupFromColumns = () => {\n const { latest, earliest, latestTs, earliestTs } = this.dataset\n\n return latest.map((row, rowIndex) => {\n return {\n title: this.createGroupTitle(row),\n scorecards: Object.keys(row)\n .filter((colId) => colId !== this.groupKeyId)\n .map((colId) => {\n const measure = this.measures.find((m) => m.id === colId)\n const title = measure?.display || colId\n const rowCol = row[colId]\n const { raw, rag: ragScore } = rowCol\n const value = Number(raw)\n\n const rag = ragScore !== undefined ? Number(ragScore) : undefined\n this.initBuckets([row], colId)\n\n const valueFor = `${latestTs}`\n const valueFrom = `${earliestTs}`\n\n const comparisonRow = earliest[rowIndex]\n const prevVal = comparisonRow[colId]?.raw\n\n return this.createScorecardData({\n title,\n value,\n rag,\n prevVal,\n valueFor,\n valueFrom,\n })\n }),\n }\n })\n }\n\n private createScorecardGroupFromList = (): ScorecardGroup[] => {\n const { latest, earliest } = this.dataset\n return [\n {\n title: '',\n scorecards: latest.map((row: DashboardDataResponse, index: number) => {\n const values = this.getScorecardValues(row)\n const prevVal = earliest[index][this.valueKey].raw\n return this.createScorecardData({\n ...values,\n prevVal,\n })\n }),\n },\n ]\n }\n\n private createScorecardGroupFromListWithGroups = () => {\n const { latest, earliest } = this.dataset\n\n let earliestGroupedByKey = DatasetHelper.groupRowsByKey(earliest, <string>this.groupKeyId)\n let latestGroupedByKey = DatasetHelper.groupRowsByKey(latest, <string>this.groupKeyId)\n if (this.groupKeyId === this.titleKey) {\n latestGroupedByKey = [latestGroupedByKey.flat()]\n earliestGroupedByKey = [earliestGroupedByKey.flat()]\n }\n\n const scorecardGroup = latestGroupedByKey.map((group, groupIndex) => {\n return {\n title: this.groupKeyDisplay ? `By ${this.groupKeyDisplay}` : '',\n scorecards: group.map((row, rowIndex) => {\n const values = this.getScorecardValues(row)\n const comparisonRow = earliestGroupedByKey[groupIndex][rowIndex]\n const prevVal = comparisonRow[this.valueKey]?.raw\n\n return this.createScorecardData({\n ...values,\n prevVal,\n })\n }),\n }\n })\n\n return scorecardGroup\n }\n\n private getScorecardValues = (row: DashboardDataResponse) => {\n const { latestTs, earliestTs } = this.dataset\n const title = `${this.titleColumn?.display} ${row[this.titleKey].raw}`\n const rowCol = row[this.valueKey]\n const { raw, rag: ragScore } = rowCol\n const value = Number(raw)\n const rag = ragScore !== undefined ? Number(ragScore) : undefined\n this.initBuckets([row], this.valueKey)\n const valueFor = `${latestTs}`\n const valueFrom = `${earliestTs}`\n\n return {\n title,\n value,\n rag,\n valueFor,\n valueFrom,\n }\n }\n\n /**\n * Builds a single scorecard\n *\n * @return {Scorecard}\n */\n private buildScorecard = () => {\n const { latest, earliest, latestTs, earliestTs } = this.dataset\n const scorecordArr: Scorecard[] = latest.map((datasetRow: DashboardDataResponse, index: number) => {\n const { raw: value, rag } = datasetRow[this.valueKey]\n const prevVal = earliest[index][this.valueKey].raw\n const valueFor = `${latestTs}`\n const valueFrom = `${earliestTs}`\n const title = this.titleColumn?.display\n\n return this.createScorecardData({\n title: title || '',\n value: value || '',\n rag,\n prevVal,\n valueFor,\n valueFrom,\n })\n })\n\n return scorecordArr[0]\n }\n\n private createGroupTitle = (row: DashboardDataResponse) => {\n const title = this.groupKeyId ? `${row[this.groupKeyId]?.raw}` : ''\n return this.groupKeyDisplay && this.groupKeyDisplay.length ? `${this.groupKeyDisplay}: ${title}` : title\n }\n\n private buildGroup = () => {\n let scorecardGroup: ScorecardGroup[]\n if (!this.valueColumn) {\n scorecardGroup = this.createScorecardGroupFromColumns()\n } else if (this.groupKey) {\n scorecardGroup = this.createScorecardGroupFromListWithGroups()\n } else {\n scorecardGroup = this.createScorecardGroupFromList()\n }\n return scorecardGroup\n }\n\n build = () => {\n this.validateDefinition()\n if (this.group) {\n return this.buildGroup()\n }\n return this.buildScorecard()\n }\n}\n\nexport { ScorecardVisualisation }\nexport default ScorecardVisualisation\n"],
5
+ "mappings": "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",
6
6
  "names": ["Scorecard_exports", "__export", "ScorecardVisualisation", "Scorecard_default", "__toCommonJS", "import_DashboardVisualisation", "import_datasetHelper", "import_Buckets", "DashboardVisualisationClass", "responseData", "definition", "group", "valueKey", "Buckets", "DatasetHelper", "col", "scorecardDefinition", "rawData", "latestData", "latestDataSetRows", "latestTs", "latestFiltered", "earliestData", "earliestDataSetRows", "earliestTs", "value", "rag", "title", "valueFor", "valueFrom", "prevVal", "groupTitle", "latestValue", "earliestValue", "trendData", "id", "type", "errors", "message", "latest", "earliest", "row", "rowIndex", "colId", "m", "rowCol", "raw", "ragScore", "index", "values", "earliestGroupedByKey", "latestGroupedByKey", "groupIndex", "datasetRow", "scorecardGroup"]
7
7
  }
@@ -45,7 +45,7 @@ class ScorecardVisualisation extends DashboardVisualisationClass {
45
45
  this.initGroupVars()
46
46
  } else {
47
47
  this.valueKey = this.measures[0].id
48
- this.titleColumn = { display: definition.display, id: this.valueKey }
48
+ this.titleColumn = { display: definition.display || '', id: this.valueKey }
49
49
  this.initBuckets(responseData, this.valueKey)
50
50
  }
51
51
  }
@@ -58,7 +58,7 @@ class ScorecardVisualisation extends DashboardVisualisationClass {
58
58
  }
59
59
 
60
60
  private initGroupVars = () => {
61
- this.groupKey = DatasetHelper.getGroupKey(this.keys, this.dataset.latest)
61
+ this.groupKey = DatasetHelper.getGroupKey(this.dataset.latest, this.keys)
62
62
  this.groupKeyId = this.groupKey?.id
63
63
  this.groupKeyDisplay = this.groupKey?.display
64
64
 
@@ -75,15 +75,15 @@ class ScorecardVisualisation extends DashboardVisualisationClass {
75
75
  private getDataset = (
76
76
  scorecardDefinition: components['schemas']['DashboardVisualisationDefinition'],
77
77
  rawData: DashboardDataResponse[],
78
- ) => {
78
+ ): ScorecardDataset => {
79
79
  const latestData = DatasetHelper.getLastestDataset(rawData)
80
80
  const latestDataSetRows = DatasetHelper.getDatasetRows(scorecardDefinition, latestData)
81
- const latestTs = latestDataSetRows[0]?.ts?.raw
81
+ const latestTs = latestDataSetRows[0]?.['ts']?.raw
82
82
  const latestFiltered = DatasetHelper.filterRowsByDisplayColumns(scorecardDefinition, latestDataSetRows, true)
83
83
 
84
84
  const earliestData = DatasetHelper.getEarliestDataset(rawData)
85
85
  const earliestDataSetRows = DatasetHelper.getDatasetRows(scorecardDefinition, earliestData)
86
- const earliestTs = earliestDataSetRows[0]?.ts?.raw
86
+ const earliestTs = earliestDataSetRows[0]?.['ts']?.raw
87
87
  const earliestfiltered = DatasetHelper.filterRowsByDisplayColumns(scorecardDefinition, earliestDataSetRows, true)
88
88
 
89
89
  return {
@@ -126,12 +126,12 @@ class ScorecardVisualisation extends DashboardVisualisationClass {
126
126
  valueFor: string,
127
127
  valueFrom: string,
128
128
  latestValue: string | number,
129
- earliestValue: string | number,
129
+ earliestValue: string | number | null | undefined,
130
130
  ): ScorecardTrend | undefined => {
131
131
  let trendData
132
132
 
133
133
  if (valueFrom !== valueFor) {
134
- const value = +latestValue - +earliestValue
134
+ const value = earliestValue ? Number(latestValue) - Number(earliestValue) : 0
135
135
  const direction = Math.sign(value)
136
136
  trendData = {
137
137
  direction,
@@ -282,7 +282,7 @@ class ScorecardVisualisation extends DashboardVisualisationClass {
282
282
 
283
283
  return this.createScorecardData({
284
284
  title: title || '',
285
- value,
285
+ value: value || '',
286
286
  rag,
287
287
  prevVal,
288
288
  valueFor,
@@ -1,2 +1,2 @@
1
- var n=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var g=(e,r,o,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let a of i(r))!c.call(e,a)&&a!==o&&n(e,a,{get:()=>r[a],enumerable:!(t=s(r,a))||t.enumerable});return e};var d=e=>g(n({},"__esModule",{value:!0}),e);var u={};module.exports=d(u);
1
+ "use strict";var t=Object.defineProperty;var o=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var c=(e,r,i,a)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of s(r))!d.call(e,n)&&n!==i&&t(e,n,{get:()=>r[n],enumerable:!(a=o(r,n))||a.enumerable});return e};var u=e=>c(t({},"__esModule",{value:!0}),e);var g={};module.exports=u(g);
2
2
  //# sourceMappingURL=types.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/dpr/components/_dashboards/scorecard/types.ts"],
4
- "sourcesContent": ["import { DashboardDataResponse } from '../../../types/Metrics'\n\nexport interface Scorecard {\n id: string\n title: string\n group?: string\n value: number | string\n trend?: ScorecardTrend\n link?: {\n href: '#'\n displayName: 'View breakdown'\n }\n valueFor?: string\n rag?: ScorecardRag\n}\n\nexport interface ScorecardSubGroup {\n name: string\n scorecards: Scorecard[]\n}\n\nexport interface ScorecardGroup {\n title?: string\n description?: string\n scorecards: Scorecard[]\n}\n\nexport interface ScorecardTrend {\n direction: number\n value: number\n from: string\n}\n\nexport interface ScorecardRag {\n score: number\n colour: string\n}\n\nexport interface ScorecardDataset {\n earliest: DashboardDataResponse[]\n earliestTs: string | number\n latest: DashboardDataResponse[]\n latestTs: string | number\n}\n\nexport interface CreateScorecardDataArgs {\n title: string\n value: string | number\n rag?: number\n valueFor: string\n valueFrom: string\n prevVal: string | number\n groupTitle?: string\n}\n"],
5
- "mappings": "kWAAA,IAAAA,EAAA,kBAAAC,EAAAD",
4
+ "sourcesContent": ["import { DashboardDataResponse } from '../../../types/Metrics'\n\nexport interface Scorecard {\n id: string\n title: string\n group?: string\n value: number | string\n trend?: ScorecardTrend | undefined\n link?:\n | {\n href: '#'\n displayName: 'View breakdown'\n }\n | undefined\n valueFor?: string\n rag?: ScorecardRag | undefined\n}\n\nexport interface ScorecardSubGroup {\n name: string\n scorecards: Scorecard[]\n}\n\nexport interface ScorecardGroup {\n title?: string\n description?: string\n scorecards: Scorecard[]\n}\n\nexport interface ScorecardTrend {\n direction: number\n value: number\n from: string\n}\n\nexport interface ScorecardRag {\n score: number\n colour: string\n}\n\nexport interface ScorecardDataset {\n earliest: DashboardDataResponse[]\n earliestTs?: string | number | null | undefined\n latest: DashboardDataResponse[]\n latestTs?: string | number | null | undefined\n}\n\nexport interface CreateScorecardDataArgs {\n title: string\n value: string | number\n rag?: number | undefined\n valueFor: string\n valueFrom: string\n prevVal: string | number | null | undefined\n groupTitle?: string\n}\n"],
5
+ "mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
6
6
  "names": ["types_exports", "__toCommonJS"]
7
7
  }
@@ -5,13 +5,15 @@ export interface Scorecard {
5
5
  title: string
6
6
  group?: string
7
7
  value: number | string
8
- trend?: ScorecardTrend
9
- link?: {
10
- href: '#'
11
- displayName: 'View breakdown'
12
- }
8
+ trend?: ScorecardTrend | undefined
9
+ link?:
10
+ | {
11
+ href: '#'
12
+ displayName: 'View breakdown'
13
+ }
14
+ | undefined
13
15
  valueFor?: string
14
- rag?: ScorecardRag
16
+ rag?: ScorecardRag | undefined
15
17
  }
16
18
 
17
19
  export interface ScorecardSubGroup {
@@ -38,17 +40,17 @@ export interface ScorecardRag {
38
40
 
39
41
  export interface ScorecardDataset {
40
42
  earliest: DashboardDataResponse[]
41
- earliestTs: string | number
43
+ earliestTs?: string | number | null | undefined
42
44
  latest: DashboardDataResponse[]
43
- latestTs: string | number
45
+ latestTs?: string | number | null | undefined
44
46
  }
45
47
 
46
48
  export interface CreateScorecardDataArgs {
47
49
  title: string
48
50
  value: string | number
49
- rag?: number
51
+ rag?: number | undefined
50
52
  valueFor: string
51
53
  valueFrom: string
52
- prevVal: string | number
54
+ prevVal: string | number | null | undefined
53
55
  groupTitle?: string
54
56
  }
@@ -1,2 +1,2 @@
1
- var d=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var h=Object.prototype.hasOwnProperty;var i=(o,c)=>{for(var e in c)d(o,e,{get:c[e],enumerable:!0})},l=(o,c,e,t)=>{if(c&&typeof c=="object"||typeof c=="function")for(let r of p(c))!h.call(o,r)&&r!==e&&d(o,r,{get:()=>c[r],enumerable:!(t=u(c,r))||t.enumerable});return o};var m=o=>l(d({},"__esModule",{value:!0}),o);var f={};i(f,{default:()=>b,mergeScorecardsIntoGroup:()=>s});module.exports=m(f);var n=require("../dashboard-visualisation/types");const s=o=>(o.reduce((e,t,r)=>(t.type===n.DashboardVisualisationType.SCORECARD&&e.push(r),e),[]).reduce((e,t)=>{const r=e[e.length-1];return(!r||r[r.length-1]!==t-1)&&e.push([]),e[e.length-1].push(t),e},[]).reverse().forEach(e=>{const t=e[0],r=e.map(a=>o[a].data).filter(a=>!!a);for(;e.length;){const a=e.pop();a!==void 0&&o.splice(a,1)}r.length&&o.splice(t,0,{id:`${t}`,type:n.DashboardVisualisationType.SCORECARD_GROUP,data:[{scorecards:r}]})}),o);var b={mergeScorecardsIntoGroup:s};0&&(module.exports={mergeScorecardsIntoGroup});
1
+ "use strict";var d=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var h=Object.prototype.hasOwnProperty;var i=(o,c)=>{for(var e in c)d(o,e,{get:c[e],enumerable:!0})},l=(o,c,e,t)=>{if(c&&typeof c=="object"||typeof c=="function")for(let r of p(c))!h.call(o,r)&&r!==e&&d(o,r,{get:()=>c[r],enumerable:!(t=u(c,r))||t.enumerable});return o};var m=o=>l(d({},"__esModule",{value:!0}),o);var f={};i(f,{default:()=>b,mergeScorecardsIntoGroup:()=>s});module.exports=m(f);var n=require("../dashboard-visualisation/types");const s=o=>(o.reduce((e,t,r)=>(t.type===n.DashboardVisualisationType.SCORECARD&&e.push(r),e),[]).reduce((e,t)=>{const r=e[e.length-1];return(!r||r[r.length-1]!==t-1)&&e.push([]),e[e.length-1].push(t),e},[]).reverse().forEach(e=>{const t=e[0],r=e.map(a=>o[a].data).filter(a=>!!a);for(;e.length;){const a=e.pop();a!==void 0&&o.splice(a,1)}r.length&&o.splice(t,0,{id:`${t}`,type:n.DashboardVisualisationType.SCORECARD_GROUP,data:[{scorecards:r}]})}),o);var b={mergeScorecardsIntoGroup:s};0&&(module.exports={mergeScorecardsIntoGroup});
2
2
  //# sourceMappingURL=utils.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/dpr/components/_dashboards/scorecard/utils.ts"],
4
4
  "sourcesContent": ["import { DashboardVisualisation, DashboardVisualisationType } from '../dashboard-visualisation/types'\nimport { Scorecard } from './types'\n\nexport const mergeScorecardsIntoGroup = (visualisations: DashboardVisualisation[]) => {\n const groupedScorecardIndexes: number[][] = visualisations\n // get scorecard indexes\n .reduce((acc: number[], vis: DashboardVisualisation, i: number) => {\n if (vis.type === DashboardVisualisationType.SCORECARD) acc.push(i)\n return acc\n }, [])\n // group adjacent indexes\n .reduce((r: number[][], n) => {\n const lastSubArray = r[r.length - 1]\n if (!lastSubArray || lastSubArray[lastSubArray.length - 1] !== n - 1) r.push([])\n r[r.length - 1].push(n)\n return r\n }, [])\n\n groupedScorecardIndexes.reverse().forEach((group: number[]) => {\n const spliceAtIndex = group[0]\n const scorecardGroup: Scorecard[] = group\n .map((scIndex: number) => {\n return visualisations[scIndex].data as Scorecard\n })\n .filter((scorecard: Scorecard) => !!scorecard)\n\n while (group.length) {\n const i = group.pop()\n if (i !== undefined) visualisations.splice(i, 1)\n }\n\n if (scorecardGroup.length) {\n visualisations.splice(spliceAtIndex, 0, {\n id: `${spliceAtIndex}`,\n type: DashboardVisualisationType.SCORECARD_GROUP,\n data: [{ scorecards: scorecardGroup }],\n })\n }\n })\n\n return visualisations\n}\n\nexport default {\n mergeScorecardsIntoGroup,\n}\n"],
5
- "mappings": "4ZAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,6BAAAC,IAAA,eAAAC,EAAAJ,GAAA,IAAAK,EAAmE,4CAG5D,MAAMF,EAA4BG,IACKA,EAEzC,OAAO,CAACC,EAAeC,EAA6BC,KAC/CD,EAAI,OAAS,6BAA2B,WAAWD,EAAI,KAAKE,CAAC,EAC1DF,GACN,CAAC,CAAC,EAEJ,OAAO,CAACG,EAAeC,IAAM,CAC5B,MAAMC,EAAeF,EAAEA,EAAE,OAAS,CAAC,EACnC,OAAI,CAACE,GAAgBA,EAAaA,EAAa,OAAS,CAAC,IAAMD,EAAI,IAAGD,EAAE,KAAK,CAAC,CAAC,EAC/EA,EAAEA,EAAE,OAAS,CAAC,EAAE,KAAKC,CAAC,EACfD,CACT,EAAG,CAAC,CAAC,EAEiB,QAAQ,EAAE,QAASG,GAAoB,CAC7D,MAAMC,EAAgBD,EAAM,CAAC,EACvBE,EAA8BF,EACjC,IAAKG,GACGV,EAAeU,CAAO,EAAE,IAChC,EACA,OAAQC,GAAyB,CAAC,CAACA,CAAS,EAE/C,KAAOJ,EAAM,QAAQ,CACnB,MAAMJ,EAAII,EAAM,IAAI,EAChBJ,IAAM,QAAWH,EAAe,OAAOG,EAAG,CAAC,CACjD,CAEIM,EAAe,QACjBT,EAAe,OAAOQ,EAAe,EAAG,CACtC,GAAI,GAAGA,CAAa,GACpB,KAAM,6BAA2B,gBACjC,KAAM,CAAC,CAAE,WAAYC,CAAe,CAAC,CACvC,CAAC,CAEL,CAAC,EAEMT,GAGT,IAAOJ,EAAQ,CACb,yBAAAC,CACF",
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,6BAAAC,IAAA,eAAAC,EAAAJ,GAAA,IAAAK,EAAmE,4CAG5D,MAAMF,EAA4BG,IACKA,EAEzC,OAAO,CAACC,EAAeC,EAA6BC,KAC/CD,EAAI,OAAS,6BAA2B,WAAWD,EAAI,KAAKE,CAAC,EAC1DF,GACN,CAAC,CAAC,EAEJ,OAAO,CAACG,EAAeC,IAAM,CAC5B,MAAMC,EAAeF,EAAEA,EAAE,OAAS,CAAC,EACnC,OAAI,CAACE,GAAgBA,EAAaA,EAAa,OAAS,CAAC,IAAMD,EAAI,IAAGD,EAAE,KAAK,CAAC,CAAC,EAC/EA,EAAEA,EAAE,OAAS,CAAC,EAAE,KAAKC,CAAC,EACfD,CACT,EAAG,CAAC,CAAC,EAEiB,QAAQ,EAAE,QAASG,GAAoB,CAC7D,MAAMC,EAAgBD,EAAM,CAAC,EACvBE,EAA8BF,EACjC,IAAKG,GACGV,EAAeU,CAAO,EAAE,IAChC,EACA,OAAQC,GAAyB,CAAC,CAACA,CAAS,EAE/C,KAAOJ,EAAM,QAAQ,CACnB,MAAMJ,EAAII,EAAM,IAAI,EAChBJ,IAAM,QAAWH,EAAe,OAAOG,EAAG,CAAC,CACjD,CAEIM,EAAe,QACjBT,EAAe,OAAOQ,EAAe,EAAG,CACtC,GAAI,GAAGA,CAAa,GACpB,KAAM,6BAA2B,gBACjC,KAAM,CAAC,CAAE,WAAYC,CAAe,CAAC,CACvC,CAAC,CAEL,CAAC,EAEMT,GAGT,IAAOJ,EAAQ,CACb,yBAAAC,CACF",
6
6
  "names": ["utils_exports", "__export", "utils_default", "mergeScorecardsIntoGroup", "__toCommonJS", "import_types", "visualisations", "acc", "vis", "i", "r", "n", "lastSubArray", "group", "spliceAtIndex", "scorecardGroup", "scIndex", "scorecard"]
7
7
  }
@@ -1,3 +1,4 @@
1
+ import { expect } from '@jest/globals'
1
2
  import ScorecardUtils from './utils'
2
3
  import { Scorecard } from './types'
3
4
 
@@ -1,2 +1,2 @@
1
- var u=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var m=Object.prototype.hasOwnProperty;var D=(e,a)=>{for(var o in a)u(e,o,{get:a[o],enumerable:!0})},s=(e,a,o,c)=>{if(a&&typeof a=="object"||typeof a=="function")for(let n of d(a))!m.call(e,n)&&n!==o&&u(e,n,{get:()=>a[n],enumerable:!(c=R(a,n))||c.enumerable});return e};var x=e=>s(u({},"__esModule",{value:!0}),e);var l={};D(l,{FilterType:()=>g});module.exports=x(l);var g=(t=>(t.radio="Radio",t.dateRange="DateRange",t.granularDateRange="GranularDateRange",t.date="Date",t.select="Select",t.autocomplete="Autocomplete",t.text="Text",t.multiselect="Multiselect",t))(g||{});0&&(module.exports={FilterType});
1
+ "use strict";var u=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var m=Object.prototype.hasOwnProperty;var D=(e,a)=>{for(var o in a)u(e,o,{get:a[o],enumerable:!0})},s=(e,a,o,c)=>{if(a&&typeof a=="object"||typeof a=="function")for(let n of d(a))!m.call(e,n)&&n!==o&&u(e,n,{get:()=>a[n],enumerable:!(c=R(a,n))||c.enumerable});return e};var x=e=>s(u({},"__esModule",{value:!0}),e);var l={};D(l,{FilterType:()=>g});module.exports=x(l);var g=(t=>(t.radio="Radio",t.dateRange="DateRange",t.granularDateRange="GranularDateRange",t.date="Date",t.select="Select",t.autocomplete="Autocomplete",t.text="Text",t.multiselect="Multiselect",t))(g||{});0&&(module.exports={FilterType});
2
2
  //# sourceMappingURL=enum.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/dpr/components/_filters/filter-input/enum.ts"],
4
4
  "sourcesContent": ["// eslint-disable-next-line import/prefer-default-export\nexport enum FilterType {\n radio = 'Radio',\n dateRange = 'DateRange',\n granularDateRange = 'GranularDateRange',\n date = 'Date',\n select = 'Select',\n autocomplete = 'Autocomplete',\n text = 'Text',\n multiselect = 'Multiselect',\n}\n"],
5
- "mappings": "4ZAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,gBAAAE,IAAA,eAAAC,EAAAH,GACO,IAAKE,OACVA,EAAA,MAAQ,QACRA,EAAA,UAAY,YACZA,EAAA,kBAAoB,oBACpBA,EAAA,KAAO,OACPA,EAAA,OAAS,SACTA,EAAA,aAAe,eACfA,EAAA,KAAO,OACPA,EAAA,YAAc,cARJA,OAAA",
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,gBAAAE,IAAA,eAAAC,EAAAH,GACO,IAAKE,OACVA,EAAA,MAAQ,QACRA,EAAA,UAAY,YACZA,EAAA,kBAAoB,oBACpBA,EAAA,KAAO,OACPA,EAAA,OAAS,SACTA,EAAA,aAAe,eACfA,EAAA,KAAO,OACPA,EAAA,YAAc,cARJA,OAAA",
6
6
  "names": ["enum_exports", "__export", "FilterType", "__toCommonJS"]
7
7
  }
@@ -1,2 +1,2 @@
1
- var o=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var n=(r,t)=>{for(var i in t)o(r,i,{get:t[i],enumerable:!0})},m=(r,t,i,u)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of d(t))!l.call(r,e)&&e!==i&&o(r,e,{get:()=>t[e],enumerable:!(u=a(t,e))||u.enumerable});return r};var A=r=>m(o({},"__esModule",{value:!0}),r);var f={};n(f,{addRequiredAttributeToAll:()=>p,default:()=>b});module.exports=A(f);const p=r=>r.map(t=>({...t,attributes:{required:!0}}));var b=p;0&&(module.exports={addRequiredAttributeToAll});
1
+ "use strict";var o=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var n=(r,t)=>{for(var i in t)o(r,i,{get:t[i],enumerable:!0})},m=(r,t,i,u)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of d(t))!l.call(r,e)&&e!==i&&o(r,e,{get:()=>t[e],enumerable:!(u=a(t,e))||u.enumerable});return r};var A=r=>m(o({},"__esModule",{value:!0}),r);var f={};n(f,{addRequiredAttributeToAll:()=>p,default:()=>b});module.exports=A(f);const p=r=>r.map(t=>({...t,attributes:{required:!0}}));var b=p;0&&(module.exports={addRequiredAttributeToAll});
2
2
  //# sourceMappingURL=filters.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/dpr/components/_filters/filter-input/filters.ts"],
4
4
  "sourcesContent": ["import { FilterOption } from './types'\n\nexport const addRequiredAttributeToAll = (items: Array<FilterOption>) => {\n return items.map((i) => ({\n ...i,\n attributes: {\n required: true,\n },\n }))\n}\n\nexport default addRequiredAttributeToAll\n"],
5
- "mappings": "4ZAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,+BAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAEO,MAAME,EAA6BG,GACjCA,EAAM,IAAKC,IAAO,CACvB,GAAGA,EACH,WAAY,CACV,SAAU,EACZ,CACF,EAAE,EAGJ,IAAOH,EAAQD",
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,+BAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAEO,MAAME,EAA6BG,GACjCA,EAAM,IAAKC,IAAO,CACvB,GAAGA,EACH,WAAY,CACV,SAAU,EACZ,CACF,EAAE,EAGJ,IAAOH,EAAQD",
6
6
  "names": ["filters_exports", "__export", "addRequiredAttributeToAll", "filters_default", "__toCommonJS", "items", "i"]
7
7
  }
@@ -1,3 +1,4 @@
1
+ import { expect } from '@jest/globals'
1
2
  import addRequiredAttributeToAll from './filters'
2
3
  import { FilterOption } from './types'
3
4
 
@@ -1,2 +1,2 @@
1
- var n=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var o=Object.prototype.hasOwnProperty;var p=(t,e,a,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of s(e))!o.call(t,r)&&r!==a&&n(t,r,{get:()=>e[r],enumerable:!(i=l(e,r))||i.enumerable});return t};var g=t=>p(n({},"__esModule",{value:!0}),t);var c={};module.exports=g(c);
1
+ "use strict";var n=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var o=Object.prototype.hasOwnProperty;var p=(t,e,a,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of s(e))!o.call(t,r)&&r!==a&&n(t,r,{get:()=>e[r],enumerable:!(i=l(e,r))||i.enumerable});return t};var g=t=>p(n({},"__esModule",{value:!0}),t);var c={};module.exports=g(c);
2
2
  //# sourceMappingURL=types.d.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/dpr/components/_filters/filter-input/types.d.ts"],
4
4
  "sourcesContent": ["import { FilterType } from './enum'\n\nexport interface FilterOption {\n value: string\n text: string\n disabled?: boolean\n selected?: boolean\n}\n\nexport type FilterValue = GenericFilterValue | DateFilterValue\n\nexport interface GenericFilterValue {\n text: string\n name: string\n type: FilterType\n value?: string\n options?: Array<FilterOption>\n minimumLength?: number\n dynamicResourceEndpoint?: string\n mandatory?: boolean\n}\n\nexport interface DateFilterValue extends GenericFilterValue {\n type: FilterType.dateRange\n value?: DateRange\n min?: string\n max?: string\n}\n\nexport interface SelectedFilter {\n text: string\n href: string\n classes: string\n}\n\nexport interface DateRange {\n start: string\n end: string\n}\n\nexport interface FilterOptions {\n filters: Array<FilterValue>\n selectedFilters: Array<SelectedFilter>\n}\n"],
5
- "mappings": "kWAAA,IAAAA,EAAA,kBAAAC,EAAAD",
5
+ "mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
6
6
  "names": ["types_d_exports", "__toCommonJS"]
7
7
  }
@@ -1,2 +1,2 @@
1
- var W=Object.create;var V=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var G=Object.getOwnPropertyNames;var P=Object.getPrototypeOf,T=Object.prototype.hasOwnProperty;var X=(t,l)=>{for(var s in l)V(t,s,{get:l[s],enumerable:!0})},L=(t,l,s,e)=>{if(l&&typeof l=="object"||typeof l=="function")for(let a of G(l))!T.call(t,a)&&a!==s&&V(t,a,{get:()=>l[a],enumerable:!(e=j(l,a))||e.enumerable});return t};var b=(t,l,s)=>(s=t!=null?W(P(t)):{},L(l||!t||!t.__esModule?V(s,"default",{value:t,enumerable:!0}):s,t)),_=t=>L(V({},"__esModule",{value:!0}),t);var J={};X(J,{default:()=>q,disabledDate:()=>S,disabledDateRange:()=>w,getMultiselectValues:()=>F,getOptionsValue:()=>C,getQuerySummary:()=>M,getSelectedDate:()=>k,getSelectedFilters:()=>x,setDateDisplayFormat:()=>d,setMinMaxContraints:()=>v,setSelectedDateRange:()=>D,setSelectedGranularDateRange:()=>R});module.exports=_(J);var u=require("../filter-input/enum"),h=b(require("../../_inputs/date-range/utils")),O=b(require("../../../utils/DateMapper/DateMapper"));const x=(t,l)=>{const s=[void 0,null,""];return t.filter(e=>e.value&&Object.prototype.hasOwnProperty.call(e.value,"start")&&!s.includes(e.value.start)||e.value&&Object.prototype.hasOwnProperty.call(e.value,"end")&&!s.includes(e.value.end)||e.value&&!Object.prototype.hasOwnProperty.call(e.value,"start")&&!Object.prototype.hasOwnProperty.call(e.value,"end")).filter(e=>e.value&&e.value!=="no-filter").map(e=>{let a=`${e.value}`,n=[`"${a}"`],o=[`${l}${e.name}`],r="",i=!1,c;e.type.toLowerCase()===u.FilterType.dateRange.toLowerCase()&&({key:o,value:n,disabled:i,cantRemoveClass:r,displayValue:a,constraints:c}=D(e,l)),e.type.toLowerCase()===u.FilterType.granularDateRange.toLowerCase()&&({key:o,value:n,disabled:i,cantRemoveClass:r,displayValue:a,constraints:c}=R(e,l)),e.type.toLowerCase()===u.FilterType.date.toLowerCase()&&({key:o,value:n,disabled:i,cantRemoveClass:r,displayValue:a,constraints:c}=k(e,l)),(e.type.toLowerCase()===u.FilterType.autocomplete.toLowerCase()||e.type.toLowerCase()===u.FilterType.radio.toLowerCase()||e.type.toLowerCase()===u.FilterType.select.toLowerCase())&&({key:o,value:n,displayValue:a}=C(e,l)),e.type.toLowerCase()===u.FilterType.multiselect.toLowerCase()&&({key:o,value:n,displayValue:a}=F(e,l));let p;return i?p=`Selected Filter: ${e.text}: ${a}. This filter cant be removed. Update the filter input to change the value`:p=`Selected Filter: ${e.text}: ${a}. Click to clear this filter`,{text:e.text,displayValue:a,key:JSON.stringify(o),value:n,disabled:i,constraints:c,classes:`interactive-remove-filter-button${r}`,attributes:{"aria-label":p}}})},d=t=>{const l=new O.default;return l.getDateType(t)!=="none"&&(t=l.toDateString(t,"local-date")||t),t},D=(t,l)=>{const s=t.value.start||"Open start",e=t.value.end||"Open end",a=[`"${s}"`,`"${e}"`],n=`${l}${t.name}`,o=[`${n}.start`,`${n}.end`],r=d(s),i=d(e);let c=`${r} - ${i}`;const{relative:p}=t.value;p&&(o.push(`${n}.relative-duration`),a.push(`"${p}"`),c=h.default.mapRelativeValue(p));const g=v(t,o),{disabled:y,cantRemoveClass:m,displayValue:$}=w(t,a,c);return{key:o,value:a,displayValue:$||c,disabled:y,cantRemoveClass:m,constraints:g}},v=(t,l,s=!1)=>{const e=[],{min:a,max:n}=t;return a&&e.push({key:l[0],value:a}),n&&!s&&e.push({key:l[1],value:n}),e.length?e:void 0},C=(t,l)=>{const s=t.options.find(o=>o.value===t.value),e=s?s.text:"",a=[`${l}${t.name}`],n=[`"${t.value}"`];return{key:a,value:n,displayValue:e}},F=(t,l)=>{const e=t.value.split(",");let a=e.map(r=>{const i=t.options.find(c=>c.value===r);return i?i.text:""}).filter((r,i)=>i<3).join(", ");a=e.length>3?`${a} + ${e.length-3} more`:a;const n=e.map(r=>`"${r}"`);return{key:[`${l}${t.name}`],value:n,displayValue:a}},R=(t,l)=>{const s=t.value.start||"Open start",e=t.value.end||"Open end",a=t.value.quickFilter?.value,n=t.value.quickFilter?.display,o=t.value.granularity.value,r=`${l}${t.name}`,i=[`${r}.start`,`${r}.end`,`${r}.granularity`],c=[`"${s}"`,`"${e}"`,`"${o}"`],p=v(t,i);let g;const y=t.value.granularity.display;if(a&&a!=="none"&&n)i.push(`${r}.quick-filter`),c.push(`"${a}"`),g=`${n}: ${y}`;else{const E=d(s),U=d(e);g=`${E} - ${U}: ${y}`}const{disabled:m,cantRemoveClass:$,displayValue:A}=w(t,c,g);return{key:i,value:c,displayValue:A||g,disabled:m,constraints:p,cantRemoveClass:$}},k=(t,l)=>{const s=[`${l}${t.name}`],e=[`"${t.value}"`],a=d(t.value),n=v(t,s,!0),{disabled:o,cantRemoveClass:r,displayValue:i}=S(t,e,a);return{key:s,value:e,displayValue:i||a,disabled:o,constraints:n,cantRemoveClass:r}},w=(t,l,s)=>{const{min:e,max:a}=t;return e&&l[0].includes(e)&&a&&l[1].includes(a)?{disabled:!0,cantRemoveClass:" interactive-remove-filter-button--disabled",displayValue:`${s} (maximum range)`}:{disabled:!1,cantRemoveClass:"",displayValue:s}},S=(t,l,s)=>{const{min:e,max:a}=t;if(e&&l[0].includes(e)||a&&l[0].includes(a)){let n;return e&&l[0].includes(e)&&(n="min"),a&&l[0].includes(a)&&(n="max"),{disabled:!0,cantRemoveClass:" interactive-remove-filter-button--disabled",displayValue:`${s} (${n} date)`}}return{disabled:!1,cantRemoveClass:"",displayValue:s}},M=(t,l)=>{const s="filters.";return l.filter(e=>t[`filters.${e.name}`]||t[`filters.${e.name}.start`]||t[`filters.${e.name}.end`]).map(e=>{let{value:a}=e;return e.type.toLowerCase()===u.FilterType.multiselect.toLowerCase()&&(a=F(e,"filters").displayValue),(e.type.toLowerCase()===u.FilterType.autocomplete.toLowerCase()||e.type.toLowerCase()===u.FilterType.radio.toLowerCase()||e.type.toLowerCase()===u.FilterType.select.toLowerCase())&&(a=C(e,s).displayValue),e.type.toLowerCase()===u.FilterType.date.toLowerCase()&&(a=d(e.value)),e.type.toLowerCase()===u.FilterType.dateRange.toLowerCase()&&(a=D(e,s).displayValue),e.type.toLowerCase()===u.FilterType.granularDateRange.toLowerCase()&&(a=R(e,s).displayValue),{id:e.name,name:e.text,value:a}})};var q={getSelectedFilters:x,getQuerySummary:M};0&&(module.exports={disabledDate,disabledDateRange,getMultiselectValues,getOptionsValue,getQuerySummary,getSelectedDate,getSelectedFilters,setDateDisplayFormat,setMinMaxContraints,setSelectedDateRange,setSelectedGranularDateRange});
1
+ "use strict";var W=Object.create;var V=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var G=Object.getOwnPropertyNames;var _=Object.getPrototypeOf,P=Object.prototype.hasOwnProperty;var T=(t,l)=>{for(var s in l)V(t,s,{get:l[s],enumerable:!0})},L=(t,l,s,e)=>{if(l&&typeof l=="object"||typeof l=="function")for(let a of G(l))!P.call(t,a)&&a!==s&&V(t,a,{get:()=>l[a],enumerable:!(e=j(l,a))||e.enumerable});return t};var b=(t,l,s)=>(s=t!=null?W(_(t)):{},L(l||!t||!t.__esModule?V(s,"default",{value:t,enumerable:!0}):s,t)),X=t=>L(V({},"__esModule",{value:!0}),t);var J={};T(J,{default:()=>q,disabledDate:()=>S,disabledDateRange:()=>w,getMultiselectValues:()=>F,getOptionsValue:()=>C,getQuerySummary:()=>M,getSelectedDate:()=>k,getSelectedFilters:()=>x,setDateDisplayFormat:()=>d,setMinMaxContraints:()=>v,setSelectedDateRange:()=>D,setSelectedGranularDateRange:()=>R});module.exports=X(J);var u=require("../filter-input/enum"),h=b(require("../../_inputs/date-range/utils")),O=b(require("../../../utils/DateMapper/DateMapper"));const x=(t,l)=>{const s=[void 0,null,""];return t.filter(e=>e.value&&Object.prototype.hasOwnProperty.call(e.value,"start")&&!s.includes(e.value.start)||e.value&&Object.prototype.hasOwnProperty.call(e.value,"end")&&!s.includes(e.value.end)||e.value&&!Object.prototype.hasOwnProperty.call(e.value,"start")&&!Object.prototype.hasOwnProperty.call(e.value,"end")).filter(e=>e.value&&e.value!=="no-filter").map(e=>{let a=`${e.value}`,n=[`"${a}"`],o=[`${l}${e.name}`],r="",i=!1,c;e.type.toLowerCase()===u.FilterType.dateRange.toLowerCase()&&({key:o,value:n,disabled:i,cantRemoveClass:r,displayValue:a,constraints:c}=D(e,l)),e.type.toLowerCase()===u.FilterType.granularDateRange.toLowerCase()&&({key:o,value:n,disabled:i,cantRemoveClass:r,displayValue:a,constraints:c}=R(e,l)),e.type.toLowerCase()===u.FilterType.date.toLowerCase()&&({key:o,value:n,disabled:i,cantRemoveClass:r,displayValue:a,constraints:c}=k(e,l)),(e.type.toLowerCase()===u.FilterType.autocomplete.toLowerCase()||e.type.toLowerCase()===u.FilterType.radio.toLowerCase()||e.type.toLowerCase()===u.FilterType.select.toLowerCase())&&({key:o,value:n,displayValue:a}=C(e,l)),e.type.toLowerCase()===u.FilterType.multiselect.toLowerCase()&&({key:o,value:n,displayValue:a}=F(e,l));let p;return i?p=`Selected Filter: ${e.text}: ${a}. This filter cant be removed. Update the filter input to change the value`:p=`Selected Filter: ${e.text}: ${a}. Click to clear this filter`,{text:e.text,displayValue:a,key:JSON.stringify(o),value:n,disabled:i,constraints:c,classes:`interactive-remove-filter-button${r}`,attributes:{"aria-label":p}}})},d=t=>{const l=new O.default;return l.getDateType(t)!=="none"&&(t=l.toDateString(t,"local-date")||t),t},D=(t,l)=>{const s=t.value.start||"Open start",e=t.value.end||"Open end",a=[`"${s}"`,`"${e}"`],n=`${l}${t.name}`,o=[`${n}.start`,`${n}.end`],r=d(s),i=d(e);let c=`${r} - ${i}`;const{relative:p}=t.value;p&&(o.push(`${n}.relative-duration`),a.push(`"${p}"`),c=h.default.mapRelativeValue(p));const g=v(t,o),{disabled:y,cantRemoveClass:m,displayValue:$}=w(t,a,c);return{key:o,value:a,displayValue:$||c,disabled:y,cantRemoveClass:m,constraints:g}},v=(t,l,s=!1)=>{const e=[],{min:a,max:n}=t;return a&&e.push({key:l[0],value:a}),n&&!s&&e.push({key:l[1],value:n}),e.length?e:void 0},C=(t,l)=>{const s=t.options.find(o=>o.value===t.value),e=s?s.text:"",a=[`${l}${t.name}`],n=[`"${t.value}"`];return{key:a,value:n,displayValue:e}},F=(t,l)=>{const e=t.value.split(",");let a=e.map(r=>{const i=t.options.find(c=>c.value===r);return i?i.text:""}).filter((r,i)=>i<3).join(", ");a=e.length>3?`${a} + ${e.length-3} more`:a;const n=e.map(r=>`"${r}"`);return{key:[`${l}${t.name}`],value:n,displayValue:a}},R=(t,l)=>{const s=t.value.start||"Open start",e=t.value.end||"Open end",a=t.value.quickFilter?.value,n=t.value.quickFilter?.display,o=t.value.granularity.value,r=`${l}${t.name}`,i=[`${r}.start`,`${r}.end`,`${r}.granularity`],c=[`"${s}"`,`"${e}"`,`"${o}"`],p=v(t,i);let g;const y=t.value.granularity.display;if(a&&a!=="none"&&n)i.push(`${r}.quick-filter`),c.push(`"${a}"`),g=`${n}: ${y}`;else{const E=d(s),U=d(e);g=`${E} - ${U}: ${y}`}const{disabled:m,cantRemoveClass:$,displayValue:A}=w(t,c,g);return{key:i,value:c,displayValue:A||g,disabled:m,constraints:p,cantRemoveClass:$}},k=(t,l)=>{const s=[`${l}${t.name}`],e=[`"${t.value}"`],a=d(t.value),n=v(t,s,!0),{disabled:o,cantRemoveClass:r,displayValue:i}=S(t,e,a);return{key:s,value:e,displayValue:i||a,disabled:o,constraints:n,cantRemoveClass:r}},w=(t,l,s)=>{const{min:e,max:a}=t;return e&&l[0].includes(e)&&a&&l[1].includes(a)?{disabled:!0,cantRemoveClass:" interactive-remove-filter-button--disabled",displayValue:`${s} (maximum range)`}:{disabled:!1,cantRemoveClass:"",displayValue:s}},S=(t,l,s)=>{const{min:e,max:a}=t;if(e&&l[0].includes(e)||a&&l[0].includes(a)){let n;return e&&l[0].includes(e)&&(n="min"),a&&l[0].includes(a)&&(n="max"),{disabled:!0,cantRemoveClass:" interactive-remove-filter-button--disabled",displayValue:`${s} (${n} date)`}}return{disabled:!1,cantRemoveClass:"",displayValue:s}},M=(t,l)=>{const s="filters.";return l.filter(e=>t[`filters.${e.name}`]||t[`filters.${e.name}.start`]||t[`filters.${e.name}.end`]).map(e=>{let{value:a}=e;return e.type.toLowerCase()===u.FilterType.multiselect.toLowerCase()&&(a=F(e,"filters").displayValue),(e.type.toLowerCase()===u.FilterType.autocomplete.toLowerCase()||e.type.toLowerCase()===u.FilterType.radio.toLowerCase()||e.type.toLowerCase()===u.FilterType.select.toLowerCase())&&(a=C(e,s).displayValue),e.type.toLowerCase()===u.FilterType.date.toLowerCase()&&(a=d(e.value)),e.type.toLowerCase()===u.FilterType.dateRange.toLowerCase()&&(a=D(e,s).displayValue),e.type.toLowerCase()===u.FilterType.granularDateRange.toLowerCase()&&(a=R(e,s).displayValue),{id:e.name,name:e.text,value:a}})};var q={getSelectedFilters:x,getQuerySummary:M};0&&(module.exports={disabledDate,disabledDateRange,getMultiselectValues,getOptionsValue,getQuerySummary,getSelectedDate,getSelectedFilters,setDateDisplayFormat,setMinMaxContraints,setSelectedDateRange,setSelectedGranularDateRange});
2
2
  //# sourceMappingURL=utils.js.map