@ministryofjustice/hmpps-digital-prison-reporting-frontend 4.28.0 → 4.28.2

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 (351) hide show
  1. package/dpr/DprClientClass.js +43 -0
  2. package/dpr/DprClientClass.js.map +7 -0
  3. package/dpr/{DprClientClass.mjs → DprClientClass.ts} +1 -0
  4. package/dpr/DprFormValidationClass.js +157 -0
  5. package/dpr/DprFormValidationClass.js.map +7 -0
  6. package/dpr/{DprFormValidationClass.mjs → DprFormValidationClass.ts} +2 -1
  7. package/dpr/DprGenericFormClass.js +66 -0
  8. package/dpr/DprGenericFormClass.js.map +7 -0
  9. package/dpr/{DprGenericFormClass.mjs → DprGenericFormClass.ts} +2 -1
  10. package/dpr/DprLoadingHelper.js +51 -0
  11. package/dpr/DprLoadingHelper.js.map +7 -0
  12. package/dpr/{DprLoadingHelper.mjs → DprLoadingHelper.ts} +1 -0
  13. package/dpr/DprPollingStatusClass.js +79 -0
  14. package/dpr/DprPollingStatusClass.js.map +7 -0
  15. package/dpr/{DprPollingStatusClass.mjs → DprPollingStatusClass.ts} +2 -1
  16. package/dpr/DprQueryParamClass.js +231 -0
  17. package/dpr/DprQueryParamClass.js.map +7 -0
  18. package/dpr/{DprQueryParamClass.mjs → DprQueryParamClass.ts} +2 -1
  19. package/dpr/DprSyncLoading.js +44 -0
  20. package/dpr/DprSyncLoading.js.map +7 -0
  21. package/dpr/{DprSyncLoading.mjs → DprSyncLoading.ts} +2 -1
  22. package/dpr/all.js +111 -0
  23. package/dpr/all.js.map +7 -0
  24. package/dpr/{all.mjs → all.ts} +29 -28
  25. package/dpr/assets/app.js +1 -1
  26. package/dpr/assets/app.js.map +2 -2
  27. package/dpr/components/_async/async-filters-form/clientClass.js +76 -0
  28. package/dpr/components/_async/async-filters-form/clientClass.js.map +7 -0
  29. package/dpr/components/_async/async-filters-form/{clientClass.mjs → clientClass.ts} +3 -2
  30. package/dpr/components/_async/async-filters-form/sortByTemplate.js.map +1 -1
  31. package/dpr/components/_async/async-filters-form/types.d.js.map +1 -1
  32. package/dpr/components/_async/async-filters-form/utils.js.map +1 -1
  33. package/dpr/components/_async/async-polling/clientClass.js +78 -0
  34. package/dpr/components/_async/async-polling/clientClass.js.map +7 -0
  35. package/dpr/components/_async/async-polling/{clientClass.mjs → clientClass.ts} +2 -1
  36. package/dpr/components/_catalogue/catalogue/types.js.map +1 -1
  37. package/dpr/components/_catalogue/catalogue/utils.js.map +1 -1
  38. package/dpr/components/_catalogue/catalogue-filter-by-type/clientClass.js +94 -0
  39. package/dpr/components/_catalogue/catalogue-filter-by-type/clientClass.js.map +7 -0
  40. package/dpr/components/_catalogue/catalogue-filter-by-type/{clientClass.mjs → clientClass.ts} +2 -1
  41. package/dpr/components/_catalogue/catalogue-filters/clientClass.js +70 -0
  42. package/dpr/components/_catalogue/catalogue-filters/clientClass.js.map +7 -0
  43. package/dpr/components/_catalogue/catalogue-filters/{clientClass.mjs → clientClass.ts} +2 -1
  44. package/dpr/components/_catalogue/catalogue-list/utils.js.map +1 -1
  45. package/dpr/components/_catalogue/catalogue-search/clientClass.js +106 -0
  46. package/dpr/components/_catalogue/catalogue-search/clientClass.js.map +7 -0
  47. package/dpr/components/_catalogue/catalogue-search/{clientClass.mjs → clientClass.ts} +3 -2
  48. package/dpr/components/_catalogue/catalogue-unauthorised-toggle/clientClass.js +135 -0
  49. package/dpr/components/_catalogue/catalogue-unauthorised-toggle/clientClass.js.map +7 -0
  50. package/dpr/components/_catalogue/catalogue-unauthorised-toggle/{clientClass.mjs → clientClass.ts} +2 -1
  51. package/dpr/components/_charts/chart/Chart.js.map +1 -1
  52. package/dpr/components/_charts/chart/ChartColours.js.map +1 -1
  53. package/dpr/components/_charts/chart/ChartTimeseries.js.map +1 -1
  54. package/dpr/components/_charts/chart/bar/BarChart.js.map +1 -1
  55. package/dpr/components/_charts/chart/bar/clientClass.js +98 -0
  56. package/dpr/components/_charts/chart/bar/clientClass.js.map +7 -0
  57. package/dpr/components/_charts/chart/bar/{clientClass.mjs → clientClass.ts} +2 -1
  58. package/dpr/components/_charts/chart/bar/types.js.map +1 -1
  59. package/dpr/components/_charts/chart/bar/validate.js.map +1 -1
  60. package/dpr/components/_charts/chart/bar-timeseries/BarTimeseriesChart.js.map +1 -1
  61. package/dpr/components/_charts/chart/bar-timeseries/types.js.map +1 -1
  62. package/dpr/components/_charts/chart/bar-timeseries/validate.js.map +1 -1
  63. package/dpr/components/_charts/chart/buckets/Buckets.js.map +1 -1
  64. package/dpr/components/_charts/chart/buckets/types.js.map +1 -1
  65. package/dpr/components/_charts/chart/buckets/validate.js.map +1 -1
  66. package/dpr/components/_charts/chart/chart-config.js.map +1 -1
  67. package/dpr/components/_charts/chart/clientClass.js +136 -0
  68. package/dpr/components/_charts/chart/clientClass.js.map +7 -0
  69. package/dpr/components/_charts/chart/{clientClass.mjs → clientClass.ts} +2 -1
  70. package/dpr/components/_charts/chart/doughnut/DoughnutChart.js.map +1 -1
  71. package/dpr/components/_charts/chart/doughnut/clientClass.js +170 -0
  72. package/dpr/components/_charts/chart/doughnut/clientClass.js.map +7 -0
  73. package/dpr/components/_charts/chart/doughnut/{clientClass.mjs → clientClass.ts} +2 -1
  74. package/dpr/components/_charts/chart/doughnut/types.js.map +1 -1
  75. package/dpr/components/_charts/chart/doughnut/validate.js.map +1 -1
  76. package/dpr/components/_charts/chart/heatmap/HeatmapChart.js.map +1 -1
  77. package/dpr/components/_charts/chart/heatmap/clientClass.js +118 -0
  78. package/dpr/components/_charts/chart/heatmap/clientClass.js.map +7 -0
  79. package/dpr/components/_charts/chart/heatmap/{clientClass.mjs → clientClass.ts} +2 -1
  80. package/dpr/components/_charts/chart/heatmap/types.js.map +1 -1
  81. package/dpr/components/_charts/chart/heatmap/validate.js.map +1 -1
  82. package/dpr/components/_charts/chart/line/LineChart.js.map +1 -1
  83. package/dpr/components/_charts/chart/line/clientClass.js +93 -0
  84. package/dpr/components/_charts/chart/line/clientClass.js.map +7 -0
  85. package/dpr/components/_charts/chart/line/{clientClass.mjs → clientClass.ts} +2 -1
  86. package/dpr/components/_charts/chart/line/types.js.map +1 -1
  87. package/dpr/components/_charts/chart/line/validate.js.map +1 -1
  88. package/dpr/components/_charts/chart/line-timeseries/LineTimeseriesChart.js.map +1 -1
  89. package/dpr/components/_charts/chart/line-timeseries/types.js.map +1 -1
  90. package/dpr/components/_charts/chart/line-timeseries/validate.js.map +1 -1
  91. package/dpr/components/_charts/utils.js.map +1 -1
  92. package/dpr/components/_dashboards/dashboard-list/types.js.map +1 -1
  93. package/dpr/components/_dashboards/dashboard-list/utils.js.map +1 -1
  94. package/dpr/components/_dashboards/dashboard-list/validate.js.map +1 -1
  95. package/dpr/components/_dashboards/dashboard-visualisation/Validate.js.map +1 -1
  96. package/dpr/components/_dashboards/dashboard-visualisation/types.js.map +1 -1
  97. package/dpr/components/_dashboards/scorecard/Scorecard.js.map +1 -1
  98. package/dpr/components/_dashboards/scorecard/clientClass.js +50 -0
  99. package/dpr/components/_dashboards/scorecard/clientClass.js.map +7 -0
  100. package/dpr/components/_dashboards/scorecard/{clientClass.mjs → clientClass.ts} +2 -1
  101. package/dpr/components/_dashboards/scorecard/types.js.map +1 -1
  102. package/dpr/components/_dashboards/scorecard/utils.js.map +1 -1
  103. package/dpr/components/_dashboards/scorecard/validate.js.map +1 -1
  104. package/dpr/components/_dashboards/scorecard-group/ScorecardGroup.js.map +1 -1
  105. package/dpr/components/_dashboards/scorecard-group/types.js.map +1 -1
  106. package/dpr/components/_dashboards/scorecard-group/validate.js.map +1 -1
  107. package/dpr/components/_filters/filter-input/enum.js.map +1 -1
  108. package/dpr/components/_filters/filter-input/filters.js.map +1 -1
  109. package/dpr/components/_filters/filter-input/types.d.js.map +1 -1
  110. package/dpr/components/_filters/filters-form/clientClass.js +104 -0
  111. package/dpr/components/_filters/filters-form/clientClass.js.map +7 -0
  112. package/dpr/components/_filters/filters-form/{clientClass.mjs → clientClass.ts} +2 -1
  113. package/dpr/components/_filters/filters-interactive/clientClass.js +55 -0
  114. package/dpr/components/_filters/filters-interactive/clientClass.js.map +7 -0
  115. package/dpr/components/_filters/filters-interactive/{clientClass.mjs → clientClass.ts} +2 -1
  116. package/dpr/components/_filters/filters-selected/clientClass.js +396 -0
  117. package/dpr/components/_filters/filters-selected/clientClass.js.map +7 -0
  118. package/dpr/components/_filters/filters-selected/{clientClass.mjs → clientClass.ts} +7 -7
  119. package/dpr/components/_filters/filters-selected/utils.js.map +1 -1
  120. package/dpr/components/_filters/filtersTypeEnum.js.map +1 -1
  121. package/dpr/components/_filters/types.d.js.map +1 -1
  122. package/dpr/components/_filters/utils.js.map +1 -1
  123. package/dpr/components/_inputs/autocomplete-text-input/clientClass.js +153 -0
  124. package/dpr/components/_inputs/autocomplete-text-input/clientClass.js.map +7 -0
  125. package/dpr/components/_inputs/autocomplete-text-input/{clientClass.mjs → clientClass.ts} +2 -1
  126. package/dpr/components/_inputs/autocomplete-text-input/utils.js.map +1 -1
  127. package/dpr/components/_inputs/date-input/clientClass.js +109 -0
  128. package/dpr/components/_inputs/date-input/clientClass.js.map +7 -0
  129. package/dpr/components/_inputs/date-input/{clientClass.mjs → clientClass.ts} +2 -1
  130. package/dpr/components/_inputs/date-input/utils.js.map +1 -1
  131. package/dpr/components/_inputs/date-range/clientClass.js +206 -0
  132. package/dpr/components/_inputs/date-range/clientClass.js.map +7 -0
  133. package/dpr/components/_inputs/date-range/{clientClass.mjs → clientClass.ts} +2 -1
  134. package/dpr/components/_inputs/date-range/types.js.map +1 -1
  135. package/dpr/components/_inputs/date-range/utils.js.map +1 -1
  136. package/dpr/components/_inputs/granular-date-range/clientClass.js +245 -0
  137. package/dpr/components/_inputs/granular-date-range/clientClass.js.map +7 -0
  138. package/dpr/components/_inputs/granular-date-range/{clientClass.mjs → clientClass.ts} +2 -1
  139. package/dpr/components/_inputs/granular-date-range/types.js.map +1 -1
  140. package/dpr/components/_inputs/granular-date-range/utils.js.map +1 -1
  141. package/dpr/components/_inputs/multi-select/utils.js.map +1 -1
  142. package/dpr/components/_inputs/start-end-date/utils.js.map +1 -1
  143. package/dpr/components/_reports/report-actions/actionsTemplate.js.map +1 -1
  144. package/dpr/components/_reports/report-actions/clientClass.js +103 -0
  145. package/dpr/components/_reports/report-actions/clientClass.js.map +7 -0
  146. package/dpr/components/_reports/report-actions/{clientClass.mjs → clientClass.ts} +2 -1
  147. package/dpr/components/_reports/report-actions/types.d.js.map +1 -1
  148. package/dpr/components/_reports/report-actions/utils.js.map +1 -1
  149. package/dpr/components/_reports/report-columns-form/clientClass.js +76 -0
  150. package/dpr/components/_reports/report-columns-form/clientClass.js.map +7 -0
  151. package/dpr/components/_reports/report-columns-form/{clientClass.mjs → clientClass.ts} +2 -1
  152. package/dpr/components/_reports/report-columns-form/types.d.js.map +1 -1
  153. package/dpr/components/_reports/report-columns-form/utils.js.map +1 -1
  154. package/dpr/components/_reports/report-data-table/clientClass.js +80 -0
  155. package/dpr/components/_reports/report-data-table/clientClass.js.map +7 -0
  156. package/dpr/components/_reports/report-data-table/{clientClass.mjs → clientClass.ts} +2 -1
  157. package/dpr/components/_reports/report-data-table/types.d.js.map +1 -1
  158. package/dpr/components/_reports/report-data-table/utils.js.map +1 -1
  159. package/dpr/components/_reports/report-download-message/clientClass.js +42 -0
  160. package/dpr/components/_reports/report-download-message/clientClass.js.map +7 -0
  161. package/dpr/components/_reports/report-download-message/{clientClass.mjs → clientClass.ts} +2 -1
  162. package/dpr/components/_reports/report-pagination/clientClass.js +61 -0
  163. package/dpr/components/_reports/report-pagination/clientClass.js.map +7 -0
  164. package/dpr/components/_reports/report-pagination/{clientClass.mjs → clientClass.ts} +2 -1
  165. package/dpr/components/_reports/report-pagination/types.d.js.map +1 -1
  166. package/dpr/components/_reports/report-pagination/utils.js.map +1 -1
  167. package/dpr/components/_reports/report-totals/utils.js.map +1 -1
  168. package/dpr/components/_sync/sync-load/view.njk +1 -1
  169. package/dpr/components/bookmark-toggle/clientClass.js +111 -0
  170. package/dpr/components/bookmark-toggle/clientClass.js.map +7 -0
  171. package/dpr/components/bookmark-toggle/{clientClass.mjs → clientClass.ts} +2 -1
  172. package/dpr/components/card-group/clientClass.js +53 -0
  173. package/dpr/components/card-group/clientClass.js.map +7 -0
  174. package/dpr/components/card-group/{clientClass.mjs → clientClass.ts} +2 -1
  175. package/dpr/components/card-group/utils.js.map +1 -1
  176. package/dpr/components/report-list/defaultTokenProvider.js.map +1 -1
  177. package/dpr/components/report-list/types.d.js.map +1 -1
  178. package/dpr/components/report-list/utils.js.map +1 -1
  179. package/dpr/components/show-more/clientClass.js +63 -0
  180. package/dpr/components/show-more/clientClass.js.map +7 -0
  181. package/dpr/components/show-more/{clientClass.mjs → clientClass.ts} +2 -1
  182. package/dpr/components/show-more/utils.js.map +1 -1
  183. package/dpr/components/user-reports/bookmarks/utils.js.map +1 -1
  184. package/dpr/components/user-reports/requested/clientClass.js +132 -0
  185. package/dpr/components/user-reports/requested/clientClass.js.map +7 -0
  186. package/dpr/components/user-reports/requested/{clientClass.mjs → clientClass.ts} +2 -1
  187. package/dpr/components/user-reports/requested/utils.js.map +1 -1
  188. package/dpr/components/user-reports/types.d.js.map +1 -1
  189. package/dpr/components/user-reports/utils.js.map +1 -1
  190. package/dpr/components/user-reports/viewed/clientClass.js +102 -0
  191. package/dpr/components/user-reports/viewed/clientClass.js.map +7 -0
  192. package/dpr/components/user-reports/viewed/{clientClass.mjs → clientClass.ts} +2 -1
  193. package/dpr/components/user-reports/viewed/utils.js.map +1 -1
  194. package/dpr/data/agentConfig.js.map +1 -1
  195. package/dpr/data/dashboardClient.js.map +1 -1
  196. package/dpr/data/dprReportingClient.js.map +1 -1
  197. package/dpr/data/missingReportClient.js.map +1 -1
  198. package/dpr/data/productCollectionClient.js.map +1 -1
  199. package/dpr/data/reportDataStore.js.map +1 -1
  200. package/dpr/data/reportingClient.js.map +1 -1
  201. package/dpr/data/restClient.js.map +1 -1
  202. package/dpr/data/types.d.js.map +1 -1
  203. package/dpr/middleware/reportAuthoriser.js.map +1 -1
  204. package/dpr/middleware/setUpDprResources.js.map +1 -1
  205. package/dpr/middleware/setUpNestedRoute.js.map +1 -1
  206. package/dpr/routes/index.js.map +1 -1
  207. package/dpr/routes/journeys/api-failures.cy.js.map +1 -1
  208. package/dpr/routes/journeys/download-report/controller.js.map +1 -1
  209. package/dpr/routes/journeys/download-report/request-download/form/controller.js.map +1 -1
  210. package/dpr/routes/journeys/download-report/request-download/form/routes.js.map +1 -1
  211. package/dpr/routes/journeys/download-report/request-download/form/submitted/controller.js.map +1 -1
  212. package/dpr/routes/journeys/download-report/request-download/form/submitted/routes.js.map +1 -1
  213. package/dpr/routes/journeys/download-report/request-download/form/submitted/tests.cy.js.map +1 -1
  214. package/dpr/routes/journeys/download-report/request-download/form/tests.cy.js.map +1 -1
  215. package/dpr/routes/journeys/download-report/request-download/routes.js.map +1 -1
  216. package/dpr/routes/journeys/download-report/request-download/service.js.map +1 -1
  217. package/dpr/routes/journeys/download-report/routes.js.map +1 -1
  218. package/dpr/routes/journeys/download-report/tests.cy.js.map +1 -1
  219. package/dpr/routes/journeys/download-report/utils.js.map +1 -1
  220. package/dpr/routes/journeys/my-reports/bookmarks/controller.js.map +1 -1
  221. package/dpr/routes/journeys/my-reports/bookmarks/list/controller.js.map +1 -1
  222. package/dpr/routes/journeys/my-reports/bookmarks/list/routes.js.map +1 -1
  223. package/dpr/routes/journeys/my-reports/bookmarks/list/tests.cy.js.map +1 -1
  224. package/dpr/routes/journeys/my-reports/bookmarks/routes.js.map +1 -1
  225. package/dpr/routes/journeys/my-reports/bookmarks/service.js.map +1 -1
  226. package/dpr/routes/journeys/my-reports/bookmarks/tests.cy.js.map +1 -1
  227. package/dpr/routes/journeys/my-reports/bookmarks/utils.js.map +1 -1
  228. package/dpr/routes/journeys/my-reports/recently-viewed/controller.js.map +1 -1
  229. package/dpr/routes/journeys/my-reports/recently-viewed/list/controller.js.map +1 -1
  230. package/dpr/routes/journeys/my-reports/recently-viewed/list/routes.js.map +1 -1
  231. package/dpr/routes/journeys/my-reports/recently-viewed/list/tests.cy.js.map +1 -1
  232. package/dpr/routes/journeys/my-reports/recently-viewed/routes.js.map +1 -1
  233. package/dpr/routes/journeys/my-reports/recently-viewed/service.js.map +1 -1
  234. package/dpr/routes/journeys/my-reports/requested-reports/controller.js.map +1 -1
  235. package/dpr/routes/journeys/my-reports/requested-reports/list/controller.js.map +1 -1
  236. package/dpr/routes/journeys/my-reports/requested-reports/list/routes.js.map +1 -1
  237. package/dpr/routes/journeys/my-reports/requested-reports/list/tests.cy.js.map +1 -1
  238. package/dpr/routes/journeys/my-reports/requested-reports/routes.js.map +1 -1
  239. package/dpr/routes/journeys/my-reports/requested-reports/service.js.map +1 -1
  240. package/dpr/routes/journeys/my-reports/routes.js.map +1 -1
  241. package/dpr/routes/journeys/product-collection/routes.js.map +1 -1
  242. package/dpr/routes/journeys/product-collection/selected/controller.js.map +1 -1
  243. package/dpr/routes/journeys/product-collection/selected/routes.js.map +1 -1
  244. package/dpr/routes/journeys/product-collection/selected/tests.cy.js.map +1 -1
  245. package/dpr/routes/journeys/product-collection/selected/validation.js.map +1 -1
  246. package/dpr/routes/journeys/request-missing-report/form/controller.js.map +1 -1
  247. package/dpr/routes/journeys/request-missing-report/form/routes.js.map +1 -1
  248. package/dpr/routes/journeys/request-missing-report/form/tests.cy.js.map +1 -1
  249. package/dpr/routes/journeys/request-missing-report/form/validation.js.map +1 -1
  250. package/dpr/routes/journeys/request-missing-report/routes.js.map +1 -1
  251. package/dpr/routes/journeys/request-missing-report/submitted/controller.js.map +1 -1
  252. package/dpr/routes/journeys/request-missing-report/submitted/routes.js.map +1 -1
  253. package/dpr/routes/journeys/request-missing-report/submitted/tests.cy.js.map +1 -1
  254. package/dpr/routes/journeys/request-missing-report/tests.cy.js.map +1 -1
  255. package/dpr/routes/journeys/request-report/controller.js.map +1 -1
  256. package/dpr/routes/journeys/request-report/filters/controller.js.map +1 -1
  257. package/dpr/routes/journeys/request-report/filters/routes.js.map +1 -1
  258. package/dpr/routes/journeys/request-report/filters/tests.cy.js.map +1 -1
  259. package/dpr/routes/journeys/request-report/filters/utils.js.map +1 -1
  260. package/dpr/routes/journeys/request-report/routes.js.map +1 -1
  261. package/dpr/routes/journeys/request-report/status/controller.js.map +1 -1
  262. package/dpr/routes/journeys/request-report/status/routes.js.map +1 -1
  263. package/dpr/routes/journeys/request-report/status/tests.cy.js.map +1 -1
  264. package/dpr/routes/journeys/request-report/status/utils.js.map +1 -1
  265. package/dpr/routes/journeys/request-report/tests.cy.js.map +1 -1
  266. package/dpr/routes/journeys/routes.js.map +1 -1
  267. package/dpr/routes/journeys/view-report/async/controller.js.map +1 -1
  268. package/dpr/routes/journeys/view-report/async/dashboard/controller.js.map +1 -1
  269. package/dpr/routes/journeys/view-report/async/dashboard/routes.js.map +1 -1
  270. package/dpr/routes/journeys/view-report/async/dashboard/tests.cy.js.map +1 -1
  271. package/dpr/routes/journeys/view-report/async/dashboard/utils.js.map +1 -1
  272. package/dpr/routes/journeys/view-report/async/report/controller.js.map +1 -1
  273. package/dpr/routes/journeys/view-report/async/report/report-variants.cy.js.map +1 -1
  274. package/dpr/routes/journeys/view-report/async/report/routes.js.map +1 -1
  275. package/dpr/routes/journeys/view-report/async/report/tests.cy.js.map +1 -1
  276. package/dpr/routes/journeys/view-report/async/report/types.js.map +1 -1
  277. package/dpr/routes/journeys/view-report/async/report/utils.js +2 -2
  278. package/dpr/routes/journeys/view-report/async/report/utils.js.map +3 -3
  279. package/dpr/routes/journeys/view-report/async/report/utils.ts +2 -2
  280. package/dpr/routes/journeys/view-report/async/routes.js.map +1 -1
  281. package/dpr/routes/journeys/view-report/controller.js.map +2 -2
  282. package/dpr/routes/journeys/view-report/controller.ts +1 -1
  283. package/dpr/routes/journeys/view-report/routes.js.map +1 -1
  284. package/dpr/routes/journeys/view-report/sync/dashboard/controller.js.map +1 -1
  285. package/dpr/routes/journeys/view-report/sync/dashboard/routes.js.map +1 -1
  286. package/dpr/routes/journeys/view-report/sync/dashboard/utils.js.map +1 -1
  287. package/dpr/routes/journeys/view-report/sync/load-report/controller.js.map +1 -1
  288. package/dpr/routes/journeys/view-report/sync/load-report/routes.js.map +1 -1
  289. package/dpr/routes/journeys/view-report/sync/report/controller.js.map +1 -1
  290. package/dpr/routes/journeys/view-report/sync/report/routes.js.map +1 -1
  291. package/dpr/routes/journeys/view-report/sync/report/utils.js.map +1 -1
  292. package/dpr/routes/journeys/view-report/sync/routes.js.map +1 -1
  293. package/dpr/routes/journeys/view-report/sync/tests.cy.js.map +1 -1
  294. package/dpr/routes/journeys/view-report/utils.js.map +1 -1
  295. package/dpr/services/dashboardService.js.map +1 -1
  296. package/dpr/services/defaultFilterValuesService.js.map +1 -1
  297. package/dpr/services/featureFlagService.js.map +1 -1
  298. package/dpr/services/featureFlags.cy.js.map +1 -1
  299. package/dpr/services/index.js.map +1 -1
  300. package/dpr/services/missingReport/missingReportService.js.map +1 -1
  301. package/dpr/services/productCollection/productCollectionService.js.map +1 -1
  302. package/dpr/services/productCollection/productCollectionStoreService.js.map +1 -1
  303. package/dpr/services/reportStoreService.js.map +1 -1
  304. package/dpr/services/reportingService.js.map +1 -1
  305. package/dpr/setUpNunjucksFilters.js.map +1 -1
  306. package/dpr/types/AsyncReportUtils.js.map +1 -1
  307. package/dpr/types/Bookmark.js.map +1 -1
  308. package/dpr/types/Charts.js.map +1 -1
  309. package/dpr/types/Download.js.map +1 -1
  310. package/dpr/types/DprConfig.js.map +1 -1
  311. package/dpr/types/DprUser.js.map +1 -1
  312. package/dpr/types/EmbeddedReportUtils.js.map +1 -1
  313. package/dpr/types/ExecutionData.d.js.map +1 -1
  314. package/dpr/types/Metrics.js.map +1 -1
  315. package/dpr/types/ReportQuery.js.map +1 -1
  316. package/dpr/types/ReportStore.js.map +1 -1
  317. package/dpr/types/Services.d.js.map +1 -1
  318. package/dpr/types/Templates.d.js.map +1 -1
  319. package/dpr/types/UserReports.js.map +1 -1
  320. package/dpr/types/api.d.js.map +1 -1
  321. package/dpr/types/index.d.js.map +1 -1
  322. package/dpr/utils/CollatedSummaryBuilder/CollatedSummaryBuilder.js.map +1 -1
  323. package/dpr/utils/CreateDprServices.js.map +1 -1
  324. package/dpr/utils/DataTableBuilder/DataTableBuilder.js.map +1 -1
  325. package/dpr/utils/DataTableBuilder/types.d.js.map +1 -1
  326. package/dpr/utils/DateMapper/DateMapper.js.map +1 -1
  327. package/dpr/utils/DateMapper/types.d.js.map +1 -1
  328. package/dpr/utils/ErrorHandler.js.map +1 -1
  329. package/dpr/utils/ParentChildDataTableBuilder/ParentChildDataTableBuilder.js.map +1 -1
  330. package/dpr/utils/ParentChildDataTableBuilder/types.d.js.map +1 -1
  331. package/dpr/utils/Personalisation/personalisationUtils.js.map +1 -1
  332. package/dpr/utils/Personalisation/types.d.js.map +1 -1
  333. package/dpr/utils/SectionedDataTableBuilder/SectionedDataTableBuilder.js.map +1 -1
  334. package/dpr/utils/SectionedDataTableBuilder/types.d.js.map +1 -1
  335. package/dpr/utils/SectionedFieldsTableBuilder/SectionedFieldsTableBuilder.js.map +1 -1
  336. package/dpr/utils/SummaryDataTableBuilder/SummaryDataTableBuilder.js.map +1 -1
  337. package/dpr/utils/UserStoreItemBuilder.js.map +1 -1
  338. package/dpr/utils/arrayUtils.js.map +1 -1
  339. package/dpr/utils/datasetHelper.js.map +1 -1
  340. package/dpr/utils/definitionUtils.js.map +1 -1
  341. package/dpr/utils/index.js.map +1 -1
  342. package/dpr/utils/indexedAccesHelper.js.map +1 -1
  343. package/dpr/utils/localsHelper.js.map +1 -1
  344. package/dpr/utils/logger.js.map +1 -1
  345. package/dpr/utils/reportListsHelper.js.map +1 -1
  346. package/dpr/utils/reportStoreHelper.js.map +1 -1
  347. package/dpr/utils/requestStatusHelper.js.map +1 -1
  348. package/dpr/utils/sanitisedError.js.map +1 -1
  349. package/dpr/utils/urlHelper.js.map +1 -1
  350. package/dpr/validation/validate.js.map +1 -1
  351. package/package.json +10 -6
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/dpr/types/api.d.ts"],
3
+ "sources": ["../../dpr/types/api.d.ts"],
4
4
  "sourcesContent": ["/**\n * This file was auto-generated by openapi-typescript.\n * Do not make direct changes to the file.\n */\n\nexport interface paths {\n '/missingRequest/{reportId}/{variantId}': {\n parameters: {\n query?: never\n header?: never\n path?: never\n cookie?: never\n }\n get?: never\n put?: never\n /** @description Submit a request for a missing report */\n post: operations['requestMissing']\n delete?: never\n options?: never\n head?: never\n patch?: never\n trace?: never\n }\n '/user/caseload/active': {\n parameters: {\n query?: never\n header?: never\n path?: never\n cookie?: never\n }\n /** @description Gets a user's active caseloads */\n get: operations['definitions']\n put?: never\n post?: never\n delete?: never\n options?: never\n head?: never\n patch?: never\n trace?: never\n }\n '/reports/{reportId}/{reportVariantId}': {\n parameters: {\n query?: never\n header?: never\n path?: never\n cookie?: never\n }\n /** @description Returns the dataset for the given report ID and report variant ID filtered by the filters provided in the query. */\n get: operations['configuredApiDataset']\n put?: never\n post?: never\n delete?: never\n options?: never\n head?: never\n patch?: never\n trace?: never\n }\n '/reports/{reportId}/{reportVariantId}/{fieldId}': {\n parameters: {\n query?: never\n header?: never\n path?: never\n cookie?: never\n }\n /** @description Returns the dataset for the given report ID and report variant ID filtered by the filters provided in the query. */\n get: operations['configuredApiDynamicFilter']\n put?: never\n post?: never\n delete?: never\n options?: never\n head?: never\n patch?: never\n trace?: never\n }\n '/reports/{reportId}/{reportVariantId}/tables/{tableId}/result': {\n parameters: {\n query?: never\n header?: never\n path?: never\n cookie?: never\n }\n /** @description Returns the resulting rows of the executed statement in a paginated fashion which has been stored in a dedicated table. */\n get: operations['getQueryExecutionResult']\n put?: never\n post?: never\n delete?: never\n options?: never\n head?: never\n patch?: never\n trace?: never\n }\n '/reports/{reportId}/{reportVariantId}/tables/{tableId}/result/summary/{summaryId}': {\n parameters: {\n query?: never\n header?: never\n path?: never\n cookie?: never\n }\n /** @description Returns a summary of a request, which has been stored in a dedicated table. */\n get: operations['getSummaryQueryExecutionResult']\n put?: never\n post?: never\n delete?: never\n options?: never\n head?: never\n patch?: never\n trace?: never\n }\n '/reports/{reportId}/{reportVariantId}/tables/{tableId}/count': {\n parameters: {\n query?: never\n header?: never\n path?: never\n cookie?: never\n }\n /** @description Returns the number of rows of the table which contains the result of a previously executed query. Allows filtering and it is aimed at supporting the interactive journey. */\n get: operations['getInteractiveExternalTableRowCount']\n put?: never\n post?: never\n delete?: never\n options?: never\n head?: never\n patch?: never\n trace?: never\n }\n '/reports/{reportId}/{reportVariantId}/statements/{statementId}/status': {\n parameters: {\n query?: never\n header?: never\n path?: never\n cookie?: never\n }\n /** @description Returns the status of the statement execution based on the statement ID provided.The following status values can be returned:\n * ABORTED - The query run was stopped by the user.\n * ALL - A status value that includes all query statuses. This value can be used to filter results.\n * FAILED - The query run failed.\n * FINISHED - The query has finished running.\n * PICKED - The query has been chosen to be run.\n * STARTED - The query run has started.\n * SUBMITTED - The query was submitted, but not yet processed.\n * Note: When the status is FAILED the error field of the response will be populated.ResultRows is the number of rows returned from the SQL statement. A -1 indicates the value is null.ResultSize is the size in bytes of the returned results. A -1 indicates the value is null.\n * For Athena:\n * Athena automatically retries your queries in cases of certain transient errors. As a result, you may see the query state transition from STARTED or FAILED to SUBMITTED.\n * */\n get: operations['getQueryExecutionStatus']\n put?: never\n post?: never\n delete?: never\n options?: never\n head?: never\n patch?: never\n trace?: never\n }\n '/reports/{reportId}/{reportVariantId}/count': {\n parameters: {\n query?: never\n header?: never\n path?: never\n cookie?: never\n }\n /** @description Returns the number of records for the given report ID and report variant ID filtered by the filters provided in the query. */\n get: operations['configuredApiCount']\n put?: never\n post?: never\n delete?: never\n options?: never\n head?: never\n patch?: never\n trace?: never\n }\n '/reports/{reportId}/dashboards/{dashboardId}': {\n parameters: {\n query?: never\n header?: never\n path?: never\n cookie?: never\n }\n /** @description Returns the dataset for the given report ID and dashboard ID filtered by the filters provided in the query. */\n get: operations['configuredApiDatasetForDashboard']\n put?: never\n post?: never\n delete?: never\n options?: never\n head?: never\n patch?: never\n trace?: never\n }\n '/reports/{reportId}/dashboards/{dashboardId}/tables/{tableId}/result': {\n parameters: {\n query?: never\n header?: never\n path?: never\n cookie?: never\n }\n /** @description Returns the resulting rows of the executed statement in a paginated fashion which has been stored in a dedicated table. */\n get: operations['getDashboardQueryExecutionResult']\n put?: never\n post?: never\n delete?: never\n options?: never\n head?: never\n patch?: never\n trace?: never\n }\n '/reports/{reportId}/dashboards/{dashboardId}/statements/{statementId}/status': {\n parameters: {\n query?: never\n header?: never\n path?: never\n cookie?: never\n }\n /** @description Returns the status of the dashboard statement execution based on the statement ID provided.The following status values can be returned:\n * ABORTED - The query run was stopped by the user.\n * ALL - A status value that includes all query statuses. This value can be used to filter results.\n * FAILED - The query run failed.\n * FINISHED - The query has finished running.\n * PICKED - The query has been chosen to be run.\n * STARTED - The query run has started.\n * SUBMITTED - The query was submitted, but not yet processed.\n * Note: When the status is FAILED the error field of the response will be populated.ResultRows is the number of rows returned from the SQL statement. A -1 indicates the value is null.ResultSize is the size in bytes of the returned results. A -1 indicates the value is null.\n * For Athena:\n * Athena automatically retries your queries in cases of certain transient errors. As a result, you may see the query state transition from STARTED or FAILED to SUBMITTED.\n * */\n get: operations['getDashboardExecutionStatus']\n put?: never\n post?: never\n delete?: never\n options?: never\n head?: never\n patch?: never\n trace?: never\n }\n '/report/tables/{tableId}/count': {\n parameters: {\n query?: never\n header?: never\n path?: never\n cookie?: never\n }\n /** @description Returns the number of rows of the table which contains the result of a previously executed query. */\n get: operations['getExternalTableRowCount']\n put?: never\n post?: never\n delete?: never\n options?: never\n head?: never\n patch?: never\n trace?: never\n }\n '/productCollections': {\n parameters: {\n query?: never\n header?: never\n path?: never\n cookie?: never\n }\n /** @description Gets all product collections */\n get: operations['getCollections']\n put?: never\n post?: never\n delete?: never\n options?: never\n head?: never\n patch?: never\n trace?: never\n }\n '/productCollections/{id}': {\n parameters: {\n query?: never\n header?: never\n path?: never\n cookie?: never\n }\n /** @description Gets product collection by id */\n get: operations['getCollections_1']\n put?: never\n post?: never\n delete?: never\n options?: never\n head?: never\n patch?: never\n trace?: never\n }\n '/definitions': {\n parameters: {\n query?: never\n header?: never\n path?: never\n cookie?: never\n }\n /** @description Gets summaries of all report definitions */\n get: operations['definitions_1']\n put?: never\n post?: never\n delete?: never\n options?: never\n head?: never\n patch?: never\n trace?: never\n }\n '/definitions/{reportId}': {\n parameters: {\n query?: never\n header?: never\n path?: never\n cookie?: never\n }\n /** @description Gets report definition summary */\n get: operations['definitionSummary']\n put?: never\n post?: never\n delete?: never\n options?: never\n head?: never\n patch?: never\n trace?: never\n }\n '/definitions/{reportId}/{variantId}': {\n parameters: {\n query?: never\n header?: never\n path?: never\n cookie?: never\n }\n /** @description Gets report definition containing a single variant. */\n get: operations['definition']\n put?: never\n post?: never\n delete?: never\n options?: never\n head?: never\n patch?: never\n trace?: never\n }\n '/definitions/{dataProductDefinitionId}/dashboards/{dashboardId}': {\n parameters: {\n query?: never\n header?: never\n path?: never\n cookie?: never\n }\n /** @description Gets the metric dashboard definition. */\n get: operations['dashboardDefinition']\n put?: never\n post?: never\n delete?: never\n options?: never\n head?: never\n patch?: never\n trace?: never\n }\n '/async/reports/{reportId}/{reportVariantId}': {\n parameters: {\n query?: never\n header?: never\n path?: never\n cookie?: never\n }\n /** @description Executes asynchronously the dataset query for the given report and stores the result into an external table.The response returned contains the table ID and the execution ID. This is the asynchronous version of the /reports/{reportId}/{reportVariantId} API. */\n get: operations['asyncConfiguredApiExecuteQuery']\n put?: never\n post?: never\n delete?: never\n options?: never\n head?: never\n patch?: never\n trace?: never\n }\n '/async/dashboards/{reportId}/{dashboardId}': {\n parameters: {\n query?: never\n header?: never\n path?: never\n cookie?: never\n }\n /** @description Executes asynchronously the dataset query for the given dashboard and stores the result into an external table.The response returned contains the table ID and the execution ID. */\n get: operations['asyncExecuteDashboard']\n put?: never\n post?: never\n delete?: never\n options?: never\n head?: never\n patch?: never\n trace?: never\n }\n '/reports/{reportId}/{reportVariantId}/statements/{statementId}': {\n parameters: {\n query?: never\n header?: never\n path?: never\n cookie?: never\n }\n get?: never\n put?: never\n post?: never\n /** @description Cancels the execution of a running query. */\n delete: operations['cancelReportQueryExecution']\n options?: never\n head?: never\n patch?: never\n trace?: never\n }\n '/reports/{reportId}/dashboards/{dashboardId}/statements/{statementId}': {\n parameters: {\n query?: never\n header?: never\n path?: never\n cookie?: never\n }\n get?: never\n put?: never\n post?: never\n /** @description Cancels the execution of a running query. */\n delete: operations['cancelDashboardQueryExecution']\n options?: never\n head?: never\n patch?: never\n trace?: never\n }\n}\nexport type webhooks = Record<string, never>\nexport interface components {\n schemas: {\n ErrorResponse: {\n /** Format: int32 */\n status: number\n /** Format: int32 */\n errorCode?: number\n userMessage?: string\n developerMessage?: string\n moreInfo?: string\n }\n MissingReportSubmission: {\n userId: string\n reportId: string\n reportVariantId: string\n reason?: string\n /** Format: int32 */\n id?: number\n }\n Count: {\n /**\n * Format: int64\n * @description The total number of records\n * @example 501\n */\n count: number\n }\n StatementExecutionStatus: {\n /** @description The status of the statement execution. */\n status: string\n /**\n * Format: int64\n * @description The amount of time in nanoseconds that the statement ran.\n * @example 10562762848\n */\n duration: number\n /**\n * Format: int64\n * @description The number of rows returned from the query.\n * @example 10\n */\n resultRows: number\n /**\n * Format: int64\n * @description The size in bytes of the returned results. A -1 indicates the value is null.\n * @example 0\n */\n resultSize?: number\n /** @description Contains a short description of the error that occurred. */\n error?: string\n /**\n * Format: int32\n * @description Specific to Athena queries. An integer value that specifies the category of a query failure error. The following list shows the category for each integer value.\n * 1 - System\n * 2 - User\n * 3 - Other\n */\n errorCategory?: number\n /** @description Specific to Athena queries. Further detail about the status of the query. */\n stateChangeReason?: string\n }\n ProductCollectionSummary: {\n id: string\n name: string\n version: string\n ownerName: string\n }\n ProductCollectionDTO: {\n id: string\n name: string\n version: string\n ownerName: string\n products: components['schemas']['ProductCollectionProduct'][]\n }\n ProductCollectionProduct: {\n productId: string\n }\n DashboardDefinitionSummary: {\n id: string\n name: string\n description?: string\n /** @enum {string} */\n loadType?: 'sync' | 'async'\n }\n ReportDefinitionSummary: {\n id: string\n name: string\n description?: string\n variants: components['schemas']['VariantDefinitionSummary'][]\n dashboards?: components['schemas']['DashboardDefinitionSummary'][]\n authorised: boolean\n }\n VariantDefinitionSummary: {\n id: string\n name: string\n description?: string\n isMissing: boolean\n /** @enum {string} */\n loadType?: 'sync' | 'async'\n }\n ChildVariantDefinition: {\n id: string\n name: string\n resourceName: string\n specification?: components['schemas']['Specification']\n joinFields: string[]\n }\n DynamicFilterOption: {\n /** Format: int32 */\n minimumLength?: number\n }\n FieldDefinition: {\n name: string\n display: string\n /** @enum {string} */\n wordWrap?: 'none' | 'normal' | 'break-words'\n filter?: components['schemas']['FilterDefinition']\n sortable: boolean\n defaultsort: boolean\n /** @enum {string} */\n sortDirection?: 'asc' | 'desc'\n /** @enum {string} */\n type: 'boolean' | 'date' | 'double' | 'HTML' | 'long' | 'string' | 'time'\n mandatory: boolean\n visible: boolean\n calculated: boolean\n header: boolean\n }\n FilterDefinition: {\n /** @enum {string} */\n type: 'Radio' | 'Select' | 'multiselect' | 'daterange' | 'autocomplete' | 'text' | 'date' | 'granulardaterange'\n mandatory: boolean\n pattern?: string\n staticOptions?: components['schemas']['FilterOption'][]\n dynamicOptions?: components['schemas']['DynamicFilterOption']\n defaultValue?: string\n min?: string\n max?: string\n interactive?: boolean\n /** @enum {string} */\n defaultGranularity?: 'hourly' | 'daily' | 'weekly' | 'monthly' | 'quarterly' | 'annually'\n /** @enum {string} */\n defaultQuickFilterValue?:\n | 'today'\n | 'yesterday'\n | 'last-seven-days'\n | 'last-thirty-days'\n | 'last-month'\n | 'last-full-month'\n | 'last-ninety-days'\n | 'last-three-months'\n | 'last-full-three-months'\n | 'last-year'\n | 'last-full-year'\n | 'tomorrow'\n | 'next-seven-days'\n | 'next-thirty-days'\n | 'next-month'\n | 'next-full-month'\n | 'next-ninety-days'\n | 'next-three-months'\n | 'next-full-three-months'\n | 'next-year'\n | 'next-full-year'\n /** Format: int32 */\n index?: number\n }\n FilterOption: {\n name: string\n display: string\n }\n ReportSummary: {\n id: string\n /** @enum {string} */\n template: 'table-header' | 'table-footer' | 'section-header' | 'section-footer' | 'page-header' | 'page-footer'\n fields: components['schemas']['SummaryField'][]\n }\n SingleVariantReportDefinition: {\n id: string\n name: string\n description?: string\n variant: components['schemas']['VariantDefinition']\n }\n Specification: {\n /** @enum {string} */\n template:\n | 'list'\n | 'list-section'\n | 'list-tab'\n | 'summary'\n | 'summary-section'\n | 'parent-child'\n | 'parent-child-section'\n | 'row-section'\n | 'row-section-child'\n fields: components['schemas']['FieldDefinition'][]\n sections: string[]\n }\n SummaryField: {\n name: string\n display?: string\n /** @enum {string} */\n type?: 'boolean' | 'date' | 'double' | 'HTML' | 'long' | 'string' | 'time'\n header?: boolean\n mergeRows?: boolean\n }\n VariantDefinition: {\n id: string\n name: string\n resourceName: string\n description?: string\n specification?: components['schemas']['Specification']\n classification?: string\n printable?: boolean\n summaries?: components['schemas']['ReportSummary'][]\n interactive?: boolean\n childVariants?: components['schemas']['ChildVariantDefinition'][]\n }\n DashboardBucketDefinition: {\n /** Format: int64 */\n min?: number\n /** Format: int64 */\n max?: number\n hexColour?: string\n }\n DashboardDefinition: {\n id: string\n name: string\n description?: string\n sections: components['schemas']['DashboardSectionDefinition'][]\n filterFields?: components['schemas']['FieldDefinition'][]\n }\n DashboardOptionDefinition: {\n useRagColour?: boolean\n baseColour?: string\n buckets?: components['schemas']['DashboardBucketDefinition'][]\n showLatest?: boolean\n columnsAsList?: boolean\n }\n DashboardSectionDefinition: {\n id: string\n display?: string\n description?: string\n visualisations: components['schemas']['DashboardVisualisationDefinition'][]\n }\n DashboardVisualisationColumnDefinition: {\n id: string\n display?: string\n /** @enum {string} */\n aggregate?: 'sum' | 'average'\n /** @enum {string} */\n unit?: 'NUMBER' | 'PERCENTAGE'\n displayValue?: boolean\n axis?: string\n optional?: boolean\n }\n DashboardVisualisationColumnsDefinition: {\n keys?: components['schemas']['DashboardVisualisationColumnDefinition'][]\n measures: components['schemas']['DashboardVisualisationColumnDefinition'][]\n filters?: components['schemas']['ValueVisualisationColumnDefinition'][]\n expectNulls: boolean\n }\n DashboardVisualisationDefinition: {\n id: string\n /** @enum {string} */\n type:\n | 'list'\n | 'doughnut'\n | 'bar'\n | 'bar-timeseries'\n | 'line'\n | 'scorecard'\n | 'scorecard-group'\n | 'matrix-timeseries'\n | 'line-timeseries'\n display?: string\n description?: string\n columns: components['schemas']['DashboardVisualisationColumnsDefinition']\n options?: components['schemas']['DashboardOptionDefinition']\n }\n ValueVisualisationColumnDefinition: {\n id: string\n equals: string\n }\n StatementExecutionResponse: {\n tableId: string\n executionId: string\n }\n StatementCancellationResponse: {\n /** @description A value that indicates whether the cancel statement succeeded (true). */\n cancellationSucceeded: boolean\n }\n }\n responses: never\n parameters: never\n requestBodies: never\n headers: never\n pathItems: never\n}\nexport type $defs = Record<string, never>\nexport interface operations {\n requestMissing: {\n parameters: {\n query?: never\n header?: never\n path: {\n reportId: string\n /**\n * @description The ID of the variant definition.\n * @example list\n */\n variantId: string\n }\n cookie?: never\n }\n requestBody?: {\n content: {\n 'application/json': string\n }\n }\n responses: {\n /** @description OK */\n 200: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['MissingReportSubmission']\n }\n }\n /** @description Bad Request */\n 400: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Forbidden */\n 403: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Too Many Requests */\n 429: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Internal Server Error */\n 500: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n }\n }\n definitions: {\n parameters: {\n query?: never\n header?: never\n path?: never\n cookie?: never\n }\n requestBody?: never\n responses: {\n /** @description OK */\n 200: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': string[]\n }\n }\n /** @description Bad Request */\n 400: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Forbidden */\n 403: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Too Many Requests */\n 429: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Internal Server Error */\n 500: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n }\n }\n configuredApiDataset: {\n parameters: {\n query: {\n selectedPage?: number\n pageSize?: number\n sortColumn?: string\n sortedAsc?: boolean\n /**\n * @description The filter query parameters have to start with the prefix \"filters.\" followed by the name of the filter.\n * For range filters, like date for instance, these need to be followed by a .start or .end suffix accordingly.\n * For multiselect filters, these are passed as one query parameter per filter with a comma separated list of values:\n * filters.someMultiselectFilter=a,b,c\n *\n * @example {\n * \"filters.date.start\": \"2023-04-25\",\n * \"filters.date.end\": \"2023-05-30\",\n * \"filters.someMultiselectFilter\": \"a,b,c\"\n * }\n */\n filters: {\n [key: string]: string\n }\n /**\n * @description This optional parameter sets the path of the directory of the data product definition files your application will use.\n * \"This query parameter is intended to be used in conjunction with the `dpr.lib.dataProductDefinitions.host` property to retrieve definition files from another application by using a web client.\n * @example definitions/prisons/orphanage\n */\n dataProductDefinitionsPath?: string\n }\n header?: never\n path: {\n reportId: string\n reportVariantId: string\n }\n cookie?: never\n }\n requestBody?: never\n responses: {\n /** @description Bad Request */\n 400: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Forbidden */\n 403: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Too Many Requests */\n 429: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Internal Server Error */\n 500: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description default response */\n default: {\n headers: {\n /** @description Provides additional information about why no data has been returned. */\n 'x-no-data-warning'?: string\n [name: string]: unknown\n }\n content: {\n 'application/json': {\n [key: string]: Record<string, never>\n }[]\n }\n }\n }\n }\n configuredApiDynamicFilter: {\n parameters: {\n query: {\n pageSize?: number\n sortedAsc?: boolean\n /**\n * @description The filter query parameters have to start with the prefix \"filters.\" followed by the name of the filter.\n * For range filters, like date for instance, these need to be followed by a .start or .end suffix accordingly.\n * For multiselect filters, these are passed as one query parameter per filter with a comma separated list of values:\n * filters.someMultiselectFilter=a,b,c\n *\n * @example {\n * \"filters.date.start\": \"2023-04-25\",\n * \"filters.date.end\": \"2023-05-30\",\n * \"filters.someMultiselectFilter\": \"a,b,c\"\n * }\n */\n filters: {\n [key: string]: string\n }\n /**\n * @description The value to match the start of the fieldId\n * @example Lond\n */\n prefix: string\n /**\n * @description This optional parameter sets the path of the directory of the data product definition files your application will use.\n * \"This query parameter is intended to be used in conjunction with the `dpr.lib.dataProductDefinitions.host` property to retrieve definition files from another application by using a web client.\n * @example definitions/prisons/orphanage\n */\n dataProductDefinitionsPath?: string\n }\n header?: never\n path: {\n reportId: string\n reportVariantId: string\n /**\n * @description The name of the schema field which will be used as a dynamic filter.\n * @example name\n */\n fieldId: string\n }\n cookie?: never\n }\n requestBody?: never\n responses: {\n /** @description Bad Request */\n 400: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Forbidden */\n 403: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Too Many Requests */\n 429: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Internal Server Error */\n 500: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description default response */\n default: {\n headers: {\n /** @description Provides additional information about why no data has been returned. */\n 'x-no-data-warning'?: string\n [name: string]: unknown\n }\n content: {\n 'application/json': string[]\n }\n }\n }\n }\n getQueryExecutionResult: {\n parameters: {\n query: {\n dataProductDefinitionsPath?: string\n selectedPage?: number\n pageSize?: number\n /**\n * @description The filter query parameters have to start with the prefix \"filters.\" followed by the name of the filter.\n * For range filters, like date for instance, these need to be followed by a .start or .end suffix accordingly.\n * For multiselect filters, these are passed as one query parameter per filter with a comma separated list of values:\n * filters.someMultiselectFilter=a,b,c\n *\n * @example {\n * \"filters.date.start\": \"2023-04-25\",\n * \"filters.date.end\": \"2023-05-30\",\n * \"filters.someMultiselectFilter\": \"a,b,c\"\n * }\n */\n filters: {\n [key: string]: string\n }\n sortColumn?: string\n sortedAsc?: boolean\n }\n header?: never\n path: {\n reportId: string\n reportVariantId: string\n tableId: string\n }\n cookie?: never\n }\n requestBody?: never\n responses: {\n /** @description OK */\n 200: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': {\n [key: string]: Record<string, never>\n }[]\n }\n }\n /** @description Bad Request */\n 400: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Forbidden */\n 403: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Too Many Requests */\n 429: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Internal Server Error */\n 500: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n }\n }\n getSummaryQueryExecutionResult: {\n parameters: {\n query: {\n dataProductDefinitionsPath?: string\n /**\n * @description The filter query parameters have to start with the prefix \"filters.\" followed by the name of the filter.\n * For range filters, like date for instance, these need to be followed by a .start or .end suffix accordingly.\n * For multiselect filters, these are passed as one query parameter per filter with a comma separated list of values:\n * filters.someMultiselectFilter=a,b,c\n *\n * @example {\n * \"filters.date.start\": \"2023-04-25\",\n * \"filters.date.end\": \"2023-05-30\",\n * \"filters.someMultiselectFilter\": \"a,b,c\"\n * }\n */\n filters: {\n [key: string]: string\n }\n }\n header?: never\n path: {\n reportId: string\n reportVariantId: string\n tableId: string\n summaryId: string\n }\n cookie?: never\n }\n requestBody?: never\n responses: {\n /** @description OK */\n 200: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': {\n [key: string]: Record<string, never>\n }[]\n }\n }\n /** @description Bad Request */\n 400: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Forbidden */\n 403: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Too Many Requests */\n 429: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Internal Server Error */\n 500: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n }\n }\n getInteractiveExternalTableRowCount: {\n parameters: {\n query: {\n filters: {\n [key: string]: string\n }\n dataProductDefinitionsPath?: string\n }\n header?: never\n path: {\n tableId: string\n reportId: string\n reportVariantId: string\n }\n cookie?: never\n }\n requestBody?: never\n responses: {\n /** @description Bad Request */\n 400: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Forbidden */\n 403: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Too Many Requests */\n 429: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Internal Server Error */\n 500: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description default response */\n default: {\n headers: {\n /** @description Provides additional information about why no data has been returned. */\n 'x-no-data-warning'?: string\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['Count']\n }\n }\n }\n }\n getQueryExecutionStatus: {\n parameters: {\n query?: {\n /**\n * @description This optional parameter sets the path of the directory of the data product definition files your application will use.\n * \"This query parameter is intended to be used in conjunction with the `dpr.lib.dataProductDefinitions.host` property to retrieve definition files from another application by using a web client.\n * @example definitions/prisons/orphanage\n */\n dataProductDefinitionsPath?: string\n /**\n * @description External table ID.\n * @example reports._6b3c6dfb_f601_4795_8ee5_2ad65b7fb283\n */\n tableId?: string\n }\n header?: never\n path: {\n reportId: string\n reportVariantId: string\n statementId: string\n }\n cookie?: never\n }\n requestBody?: never\n responses: {\n /** @description OK */\n 200: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['StatementExecutionStatus']\n }\n }\n /** @description Bad Request */\n 400: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Forbidden */\n 403: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Too Many Requests */\n 429: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Internal Server Error */\n 500: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n }\n }\n configuredApiCount: {\n parameters: {\n query: {\n /**\n * @description The filter query parameters have to start with the prefix \"filters.\" followed by the name of the filter.\n * For range filters, like date for instance, these need to be followed by a .start or .end suffix accordingly.\n * For multiselect filters, these are passed as one query parameter per filter with a comma separated list of values:\n * filters.someMultiselectFilter=a,b,c\n *\n * @example {\n * \"filters.date.start\": \"2023-04-25\",\n * \"filters.date.end\": \"2023-05-30\",\n * \"filters.someMultiselectFilter\": \"a,b,c\"\n * }\n */\n filters: {\n [key: string]: string\n }\n /**\n * @description This optional parameter sets the path of the directory of the data product definition files your application will use.\n * \"This query parameter is intended to be used in conjunction with the `dpr.lib.dataProductDefinitions.host` property to retrieve definition files from another application by using a web client.\n * @example definitions/prisons/orphanage\n */\n dataProductDefinitionsPath?: string\n }\n header?: never\n path: {\n reportId: string\n reportVariantId: string\n }\n cookie?: never\n }\n requestBody?: never\n responses: {\n /** @description Bad Request */\n 400: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Forbidden */\n 403: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Too Many Requests */\n 429: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Internal Server Error */\n 500: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description default response */\n default: {\n headers: {\n /** @description Provides additional information about why no data has been returned. */\n 'x-no-data-warning'?: string\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['Count']\n }\n }\n }\n }\n configuredApiDatasetForDashboard: {\n parameters: {\n query: {\n selectedPage?: number\n pageSize?: number\n sortColumn?: string\n sortedAsc?: boolean\n /**\n * @description The filter query parameters have to start with the prefix \"filters.\" followed by the name of the filter.\n * For range filters, like date for instance, these need to be followed by a .start or .end suffix accordingly.\n * For multiselect filters, these are passed as one query parameter per filter with a comma separated list of values:\n * filters.someMultiselectFilter=a,b,c\n *\n * @example {\n * \"filters.date.start\": \"2023-04-25\",\n * \"filters.date.end\": \"2023-05-30\",\n * \"filters.someMultiselectFilter\": \"a,b,c\"\n * }\n */\n filters: {\n [key: string]: string\n }\n /**\n * @description This optional parameter sets the path of the directory of the data product definition files your application will use.\n * \"This query parameter is intended to be used in conjunction with the `dpr.lib.dataProductDefinitions.host` property to retrieve definition files from another application by using a web client.\n * @example definitions/prisons/orphanage\n */\n dataProductDefinitionsPath?: string\n }\n header?: never\n path: {\n reportId: string\n dashboardId: string\n }\n cookie?: never\n }\n requestBody?: never\n responses: {\n /** @description Bad Request */\n 400: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Forbidden */\n 403: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Too Many Requests */\n 429: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Internal Server Error */\n 500: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description default response */\n default: {\n headers: {\n /** @description Provides additional information about why no data has been returned. */\n 'x-no-data-warning'?: string\n [name: string]: unknown\n }\n content: {\n 'application/json': {\n [key: string]: Record<string, never>\n }[]\n }\n }\n }\n }\n getDashboardQueryExecutionResult: {\n parameters: {\n query: {\n dataProductDefinitionsPath?: string\n selectedPage?: number\n pageSize?: number\n /**\n * @description The filter query parameters have to start with the prefix \"filters.\" followed by the name of the filter.\n * For range filters, like date for instance, these need to be followed by a .start or .end suffix accordingly.\n * For multiselect filters, these are passed as one query parameter per filter with a comma separated list of values:\n * filters.someMultiselectFilter=a,b,c\n *\n * @example {\n * \"filters.date.start\": \"2023-04-25\",\n * \"filters.date.end\": \"2023-05-30\",\n * \"filters.someMultiselectFilter\": \"a,b,c\"\n * }\n */\n filters: {\n [key: string]: string\n }\n }\n header?: never\n path: {\n reportId: string\n dashboardId: string\n tableId: string\n }\n cookie?: never\n }\n requestBody?: never\n responses: {\n /** @description OK */\n 200: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': {\n [key: string]: Record<string, never>\n }[][]\n }\n }\n /** @description Bad Request */\n 400: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Forbidden */\n 403: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Too Many Requests */\n 429: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Internal Server Error */\n 500: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n }\n }\n getDashboardExecutionStatus: {\n parameters: {\n query?: {\n /**\n * @description This optional parameter sets the path of the directory of the data product definition files your application will use.\n * \"This query parameter is intended to be used in conjunction with the `dpr.lib.dataProductDefinitions.host` property to retrieve definition files from another application by using a web client.\n * @example definitions/prisons/orphanage\n */\n dataProductDefinitionsPath?: string\n /**\n * @description External table ID.\n * @example reports._6b3c6dfb_f601_4795_8ee5_2ad65b7fb283\n */\n tableId?: string\n }\n header?: never\n path: {\n reportId: string\n dashboardId: string\n statementId: string\n }\n cookie?: never\n }\n requestBody?: never\n responses: {\n /** @description OK */\n 200: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['StatementExecutionStatus']\n }\n }\n /** @description Bad Request */\n 400: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Forbidden */\n 403: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Too Many Requests */\n 429: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Internal Server Error */\n 500: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n }\n }\n getExternalTableRowCount: {\n parameters: {\n query?: never\n header?: never\n path: {\n tableId: string\n }\n cookie?: never\n }\n requestBody?: never\n responses: {\n /** @description Bad Request */\n 400: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Forbidden */\n 403: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Too Many Requests */\n 429: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Internal Server Error */\n 500: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description default response */\n default: {\n headers: {\n /** @description Provides additional information about why no data has been returned. */\n 'x-no-data-warning'?: string\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['Count']\n }\n }\n }\n }\n getCollections: {\n parameters: {\n query?: never\n header?: never\n path?: never\n cookie?: never\n }\n requestBody?: never\n responses: {\n /** @description OK */\n 200: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ProductCollectionSummary'][]\n }\n }\n /** @description Bad Request */\n 400: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Forbidden */\n 403: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Too Many Requests */\n 429: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Internal Server Error */\n 500: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n }\n }\n getCollections_1: {\n parameters: {\n query?: never\n header?: never\n path: {\n /**\n * @description The ID of the product collection.\n * @example 72c22579-3f77-4e23-8d16-1e5aadcc88c9\n */\n id: string\n }\n cookie?: never\n }\n requestBody?: never\n responses: {\n /** @description OK */\n 200: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ProductCollectionDTO']\n }\n }\n /** @description Bad Request */\n 400: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Forbidden */\n 403: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Too Many Requests */\n 429: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Internal Server Error */\n 500: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n }\n }\n definitions_1: {\n parameters: {\n query?: {\n /**\n * @description Set this parameter to filter the list to only include reports for the given rendering method.\n * @example HTML\n */\n renderMethod?: 'HTML' | 'PDF' | 'SVG'\n /**\n * @description This optional parameter sets the path of the directory of the data product definition files your application will use.\n * \"This query parameter is intended to be used in conjunction with the `dpr.lib.dataProductDefinitions.host` property to retrieve definition files from another application by using a web client.\n * @example definitions/prisons/orphanage\n */\n dataProductDefinitionsPath?: string\n }\n header?: never\n path?: never\n cookie?: never\n }\n requestBody?: never\n responses: {\n /** @description OK */\n 200: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ReportDefinitionSummary'][]\n }\n }\n /** @description Bad Request */\n 400: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Forbidden */\n 403: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Too Many Requests */\n 429: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Internal Server Error */\n 500: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n }\n }\n definitionSummary: {\n parameters: {\n query?: {\n /**\n * @description This optional parameter sets the path of the directory of the data product definition files your application will use.\n * \"This query parameter is intended to be used in conjunction with the `dpr.lib.dataProductDefinitions.host` property to retrieve definition files from another application by using a web client.\n * @example definitions/prisons/orphanage\n */\n dataProductDefinitionsPath?: string\n }\n header?: never\n path: {\n /**\n * @description The ID of the report definition.\n * @example external-movements\n */\n reportId: string\n }\n cookie?: never\n }\n requestBody?: never\n responses: {\n /** @description OK */\n 200: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ReportDefinitionSummary']\n }\n }\n /** @description Bad Request */\n 400: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Forbidden */\n 403: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Too Many Requests */\n 429: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Internal Server Error */\n 500: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n }\n }\n definition: {\n parameters: {\n query: {\n /**\n * @description This optional parameter sets the path of the directory of the data product definition files your application will use.\n * \"This query parameter is intended to be used in conjunction with the `dpr.lib.dataProductDefinitions.host` property to retrieve definition files from another application by using a web client.\n * @example definitions/prisons/orphanage\n */\n dataProductDefinitionsPath?: string\n /**\n * @description The filter query parameters have to start with the prefix \"filters.\" followed by the name of the filter.\n * For range filters, like date for instance, these need to be followed by a .start or .end suffix accordingly.\n * For multiselect filters, these are passed as one query parameter per filter with a comma separated list of values:\n * filters.someMultiselectFilter=a,b,c\n *\n * @example {\n * \"filters.date.start\": \"2023-04-25\",\n * \"filters.date.end\": \"2023-05-30\",\n * \"filters.someMultiselectFilter\": \"a,b,c\"\n * }\n */\n filters: {\n [key: string]: string\n }\n }\n header?: never\n path: {\n /**\n * @description The ID of the report definition.\n * @example external-movements\n */\n reportId: string\n /**\n * @description The ID of the variant definition.\n * @example list\n */\n variantId: string\n }\n cookie?: never\n }\n requestBody?: never\n responses: {\n /** @description OK */\n 200: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['SingleVariantReportDefinition']\n }\n }\n /** @description Bad Request */\n 400: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Forbidden */\n 403: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Too Many Requests */\n 429: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Internal Server Error */\n 500: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n }\n }\n dashboardDefinition: {\n parameters: {\n query: {\n /**\n * @description This optional parameter sets the path of the directory of the data product definition files your application will use.\n * \"This query parameter is intended to be used in conjunction with the `dpr.lib.dataProductDefinitions.host` property to retrieve definition files from another application by using a web client.\n * @example definitions/prisons/orphanage\n */\n dataProductDefinitionsPath?: string\n /**\n * @description The filter query parameters have to start with the prefix \"filters.\" followed by the name of the filter.\n * For range filters, like date for instance, these need to be followed by a .start or .end suffix accordingly.\n * For multiselect filters, these are passed as one query parameter per filter with a comma separated list of values:\n * filters.someMultiselectFilter=a,b,c\n *\n * @example {\n * \"filters.date.start\": \"2023-04-25\",\n * \"filters.date.end\": \"2023-05-30\",\n * \"filters.someMultiselectFilter\": \"a,b,c\"\n * }\n */\n filters: {\n [key: string]: string\n }\n }\n header?: never\n path: {\n /**\n * @description The ID of the Data Product Definition.\n * @example external-movements\n */\n dataProductDefinitionId: string\n /**\n * @description The ID of the dashboard.\n * @example dashboardId\n */\n dashboardId: string\n }\n cookie?: never\n }\n requestBody?: never\n responses: {\n /** @description OK */\n 200: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['DashboardDefinition']\n }\n }\n /** @description Bad Request */\n 400: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Forbidden */\n 403: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Too Many Requests */\n 429: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Internal Server Error */\n 500: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n }\n }\n asyncConfiguredApiExecuteQuery: {\n parameters: {\n query: {\n sortColumn?: string\n sortedAsc?: boolean\n /**\n * @description The filter query parameters have to start with the prefix \"filters.\" followed by the name of the filter.\n * For range filters, like date for instance, these need to be followed by a .start or .end suffix accordingly.\n * For multiselect filters, these are passed as one query parameter per filter with a comma separated list of values:\n * filters.someMultiselectFilter=a,b,c\n * Note: For legacy nomis and bodmis reports, for filters deriving from DPD parameters(prompts),there is no need for these to be suffixed with .start and .end. For example, filters.start_date and filters.end_date are perfectly valid in this case.\n * @example {\n * \"filters.date.start\": \"2023-04-25\",\n * \"filters.date.end\": \"2023-05-30\",\n * \"filters.someMultiselectFilter\": \"a,b,c\"\n * }\n */\n filters: {\n [key: string]: string\n }\n /**\n * @description This optional parameter sets the path of the directory of the data product definition files your application will use.\n * \"This query parameter is intended to be used in conjunction with the `dpr.lib.dataProductDefinitions.host` property to retrieve definition files from another application by using a web client.\n * @example definitions/prisons/orphanage\n */\n dataProductDefinitionsPath?: string\n }\n header?: never\n path: {\n reportId: string\n reportVariantId: string\n }\n cookie?: never\n }\n requestBody?: never\n responses: {\n /** @description Bad Request */\n 400: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Forbidden */\n 403: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Too Many Requests */\n 429: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Internal Server Error */\n 500: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description default response */\n default: {\n headers: {\n /** @description Provides additional information about why no data has been returned. */\n 'x-no-data-warning'?: string\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['StatementExecutionResponse']\n }\n }\n }\n }\n asyncExecuteDashboard: {\n parameters: {\n query: {\n /**\n * @description This optional parameter sets the path of the directory of the data product definition files your application will use.\n * \"This query parameter is intended to be used in conjunction with the `dpr.lib.dataProductDefinitions.host` property to retrieve definition files from another application by using a web client.\n * @example definitions/prisons/orphanage\n */\n dataProductDefinitionsPath?: string\n /**\n * @description The filter query parameters have to start with the prefix \"filters.\" followed by the name of the filter.\n * For range filters, like date for instance, these need to be followed by a .start or .end suffix accordingly.\n * For multiselect filters, these are passed as one query parameter per filter with a comma separated list of values:\n * filters.someMultiselectFilter=a,b,c\n *\n * @example {\n * \"filters.date.start\": \"2023-04-25\",\n * \"filters.date.end\": \"2023-05-30\",\n * \"filters.someMultiselectFilter\": \"a,b,c\"\n * }\n */\n filters: {\n [key: string]: string\n }\n }\n header?: never\n path: {\n reportId: string\n dashboardId: string\n }\n cookie?: never\n }\n requestBody?: never\n responses: {\n /** @description Bad Request */\n 400: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Forbidden */\n 403: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Too Many Requests */\n 429: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Internal Server Error */\n 500: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description default response */\n default: {\n headers: {\n /** @description Provides additional information about why no data has been returned. */\n 'x-no-data-warning'?: string\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['StatementExecutionResponse']\n }\n }\n }\n }\n cancelReportQueryExecution: {\n parameters: {\n query?: {\n /**\n * @description This optional parameter sets the path of the directory of the data product definition files your application will use.\n * \"This query parameter is intended to be used in conjunction with the `dpr.lib.dataProductDefinitions.host` property to retrieve definition files from another application by using a web client.\n * @example definitions/prisons/orphanage\n */\n dataProductDefinitionsPath?: string\n }\n header?: never\n path: {\n reportId: string\n reportVariantId: string\n statementId: string\n }\n cookie?: never\n }\n requestBody?: never\n responses: {\n /** @description OK */\n 200: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['StatementCancellationResponse']\n }\n }\n /** @description Bad Request */\n 400: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Forbidden */\n 403: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Too Many Requests */\n 429: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Internal Server Error */\n 500: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n }\n }\n cancelDashboardQueryExecution: {\n parameters: {\n query?: {\n /**\n * @description This optional parameter sets the path of the directory of the data product definition files your application will use.\n * \"This query parameter is intended to be used in conjunction with the `dpr.lib.dataProductDefinitions.host` property to retrieve definition files from another application by using a web client.\n * @example definitions/prisons/orphanage\n */\n dataProductDefinitionsPath?: string\n }\n header?: never\n path: {\n reportId: string\n dashboardId: string\n statementId: string\n }\n cookie?: never\n }\n requestBody?: never\n responses: {\n /** @description OK */\n 200: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['StatementCancellationResponse']\n }\n }\n /** @description Bad Request */\n 400: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Forbidden */\n 403: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Too Many Requests */\n 429: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n /** @description Internal Server Error */\n 500: {\n headers: {\n [name: string]: unknown\n }\n content: {\n 'application/json': components['schemas']['ErrorResponse']\n }\n }\n }\n }\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
6
6
  "names": []
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/dpr/types/index.d.ts"],
3
+ "sources": ["../../dpr/types/index.d.ts"],
4
4
  "sourcesContent": ["import Dict = NodeJS.Dict\n\nexport interface ListRequest {\n selectedPage: number\n pageSize: number\n sortColumn?: string | undefined\n sortedAsc: boolean\n}\n\nexport interface FilteredListRequest extends ListRequest {\n filters: Dict<string>\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
6
6
  "names": []
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/dpr/utils/CollatedSummaryBuilder/CollatedSummaryBuilder.ts"],
3
+ "sources": ["../../../dpr/utils/CollatedSummaryBuilder/CollatedSummaryBuilder.ts"],
4
4
  "sourcesContent": ["import Dict = NodeJS.Dict\nimport { AsyncSummary } from '../../types/UserReports'\nimport { SummaryTemplate } from '../../types/Templates'\nimport { components } from '../../types/api'\nimport { DataTable } from '../DataTableBuilder/types'\nimport SummaryDataTableBuilder from '../SummaryDataTableBuilder/SummaryDataTableBuilder'\n\nclass CollatedSummaryBuilder {\n private summaries: Array<AsyncSummary>\n\n private specification: components['schemas']['Specification']\n\n constructor(specification: components['schemas']['Specification'], summaries: Array<AsyncSummary>) {\n this.specification = specification\n this.summaries = summaries\n }\n\n pageSummaryTemplates: Array<SummaryTemplate> = ['page-header', 'page-footer']\n\n dataTableSummaryTemplates: Array<SummaryTemplate> = [\n 'section-footer',\n 'section-header',\n 'table-footer',\n 'table-header',\n ]\n\n collatePageSummaries(): Dict<Array<DataTable>> {\n return this.collateAndMapToDataTable(this.pageSummaryTemplates)\n }\n\n collateDataTableSummaries(): Dict<Array<AsyncSummary>> {\n return this.collate(this.dataTableSummaryTemplates)\n }\n\n collateAndMapToDataTable(summaryTemplates: Array<SummaryTemplate> = []): Dict<Array<DataTable>> {\n const collatedSummaries = this.collate(summaryTemplates)\n\n return this.mapToDataTables(collatedSummaries)\n }\n\n collate(summaryTemplates: Array<SummaryTemplate> = this.pageSummaryTemplates): Dict<Array<AsyncSummary>> {\n const collatedSummaries: Dict<Array<AsyncSummary>> = {}\n if (this.summaries) {\n this.summaries.forEach((summary: AsyncSummary) => {\n const { template } = summary\n if (summaryTemplates.includes(template)) {\n if (!collatedSummaries[template]) {\n collatedSummaries[template] = []\n }\n collatedSummaries[template].push(summary)\n }\n })\n }\n\n return collatedSummaries\n }\n\n private mapToDataTables(summaries: Dict<Array<AsyncSummary>>): Dict<Array<DataTable>> {\n const dataTables: Dict<Array<DataTable>> = {}\n\n Object.keys(summaries).forEach((summaryType) => {\n if (summaries[summaryType]) {\n dataTables[summaryType] = summaries[summaryType].map((summary) => {\n return new SummaryDataTableBuilder(summary, this.specification.sections).buildSummaryTable()\n })\n }\n })\n\n return dataTables\n }\n}\n\nexport { CollatedSummaryBuilder }\nexport default CollatedSummaryBuilder\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,qCAAoC;AAEpC,MAAM,uBAAuB;AAAA,EACnB;AAAA,EAEA;AAAA,EAER,YAAY,eAAuD,WAAgC;AACjG,SAAK,gBAAgB;AACrB,SAAK,YAAY;AAAA,EACnB;AAAA,EAEA,uBAA+C,CAAC,eAAe,aAAa;AAAA,EAE5E,4BAAoD;AAAA,IAClD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,uBAA+C;AAC7C,WAAO,KAAK,yBAAyB,KAAK,oBAAoB;AAAA,EAChE;AAAA,EAEA,4BAAuD;AACrD,WAAO,KAAK,QAAQ,KAAK,yBAAyB;AAAA,EACpD;AAAA,EAEA,yBAAyB,mBAA2C,CAAC,GAA2B;AAC9F,UAAM,oBAAoB,KAAK,QAAQ,gBAAgB;AAEvD,WAAO,KAAK,gBAAgB,iBAAiB;AAAA,EAC/C;AAAA,EAEA,QAAQ,mBAA2C,KAAK,sBAAiD;AACvG,UAAM,oBAA+C,CAAC;AACtD,QAAI,KAAK,WAAW;AAClB,WAAK,UAAU,QAAQ,CAAC,YAA0B;AAChD,cAAM,EAAE,SAAS,IAAI;AACrB,YAAI,iBAAiB,SAAS,QAAQ,GAAG;AACvC,cAAI,CAAC,kBAAkB,QAAQ,GAAG;AAChC,8BAAkB,QAAQ,IAAI,CAAC;AAAA,UACjC;AACA,4BAAkB,QAAQ,EAAE,KAAK,OAAO;AAAA,QAC1C;AAAA,MACF,CAAC;AAAA,IACH;AAEA,WAAO;AAAA,EACT;AAAA,EAEQ,gBAAgB,WAA8D;AACpF,UAAM,aAAqC,CAAC;AAE5C,WAAO,KAAK,SAAS,EAAE,QAAQ,CAAC,gBAAgB;AAC9C,UAAI,UAAU,WAAW,GAAG;AAC1B,mBAAW,WAAW,IAAI,UAAU,WAAW,EAAE,IAAI,CAAC,YAAY;AAChE,iBAAO,IAAI,+BAAAA,QAAwB,SAAS,KAAK,cAAc,QAAQ,EAAE,kBAAkB;AAAA,QAC7F,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAED,WAAO;AAAA,EACT;AACF;AAGA,IAAO,iCAAQ;",
6
6
  "names": ["SummaryDataTableBuilder"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/dpr/utils/CreateDprServices.ts"],
3
+ "sources": ["../../dpr/utils/CreateDprServices.ts"],
4
4
  "sourcesContent": ["/* eslint-disable no-param-reassign */\nimport {\n DownloadPermissionService,\n BookmarkService,\n RequestedReportService,\n RecentlyViewedStoreService,\n ReportingService,\n DashboardService,\n DefaultFilterValuesService,\n} from '../services'\nimport ReportDataStore from '../data/reportDataStore'\nimport ReportingClient from '../data/reportingClient'\nimport DashboardClient from '../data/dashboardClient'\nimport MissingReportClient from '../data/missingReportClient'\nimport ProductCollectionClient from '../data/productCollectionClient'\nimport logger from './logger'\nimport { Services } from '../types/Services'\nimport { MissingReportService } from '../services/missingReport/missingReportService'\nimport { ProductCollectionStoreService } from '../services/productCollection/productCollectionStoreService'\nimport { ProductCollectionService } from '../services/productCollection/productCollectionService'\nimport { ServiceFeatureConfig } from '../types/DprConfig'\nimport { FeatureFlagService } from '../services/featureFlagService'\n\nexport interface InitDPRServicesArgs {\n reportingClient: ReportingClient\n dashboardClient: DashboardClient\n reportDataStore: ReportDataStore\n missingReportClient: MissingReportClient\n productCollectionClient: ProductCollectionClient\n featureFlagService: FeatureFlagService\n}\n\ninterface dprServices {\n reportingService: ReportingService\n dashboardService: DashboardService\n productCollectionService: ProductCollectionService\n requestedReportService: RequestedReportService\n missingReportService: MissingReportService\n recentlyViewedService: RecentlyViewedStoreService\n bookmarkService: BookmarkService\n downloadPermissionService: DownloadPermissionService\n defaultFilterValuesService: DefaultFilterValuesService\n productCollectionStoreService: ProductCollectionStoreService\n featureFlagService: FeatureFlagService\n}\n\nexport const createDprServices = (\n clients: InitDPRServicesArgs,\n serviceFeatureConfig: ServiceFeatureConfig = {\n bookmarking: false,\n download: false,\n collections: false,\n missingReports: false,\n saveDefaults: false,\n },\n): Services => {\n logger.info('Initialising DPR services...')\n\n const { reportingClient, dashboardClient, reportDataStore, missingReportClient, productCollectionClient } = clients\n const services: dprServices = {\n reportingService: new ReportingService(reportingClient),\n dashboardService: new DashboardService(dashboardClient),\n\n requestedReportService: new RequestedReportService(reportDataStore),\n recentlyViewedService: new RecentlyViewedStoreService(reportDataStore),\n bookmarkService: new BookmarkService(reportDataStore, serviceFeatureConfig),\n\n defaultFilterValuesService: new DefaultFilterValuesService(reportDataStore, serviceFeatureConfig),\n productCollectionStoreService: new ProductCollectionStoreService(reportDataStore, serviceFeatureConfig),\n downloadPermissionService: new DownloadPermissionService(reportDataStore, serviceFeatureConfig),\n\n missingReportService: new MissingReportService(missingReportClient, serviceFeatureConfig),\n productCollectionService: new ProductCollectionService(productCollectionClient, serviceFeatureConfig),\n featureFlagService: clients.featureFlagService,\n }\n return services as Services\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,sBAQO;AAMP,oBAAmB;AAEnB,kCAAqC;AACrC,2CAA8C;AAC9C,sCAAyC;AA2BlC,MAAM,oBAAoB,CAC/B,SACA,uBAA6C;AAAA,EAC3C,aAAa;AAAA,EACb,UAAU;AAAA,EACV,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,cAAc;AAChB,MACa;AACb,gBAAAA,QAAO,KAAK,8BAA8B;AAE1C,QAAM,EAAE,iBAAiB,iBAAiB,iBAAiB,qBAAqB,wBAAwB,IAAI;AAC5G,QAAM,WAAwB;AAAA,IAC5B,kBAAkB,IAAI,iCAAiB,eAAe;AAAA,IACtD,kBAAkB,IAAI,iCAAiB,eAAe;AAAA,IAEtD,wBAAwB,IAAI,uCAAuB,eAAe;AAAA,IAClE,uBAAuB,IAAI,2CAA2B,eAAe;AAAA,IACrE,iBAAiB,IAAI,gCAAgB,iBAAiB,oBAAoB;AAAA,IAE1E,4BAA4B,IAAI,2CAA2B,iBAAiB,oBAAoB;AAAA,IAChG,+BAA+B,IAAI,mEAA8B,iBAAiB,oBAAoB;AAAA,IACtG,2BAA2B,IAAI,0CAA0B,iBAAiB,oBAAoB;AAAA,IAE9F,sBAAsB,IAAI,iDAAqB,qBAAqB,oBAAoB;AAAA,IACxF,0BAA0B,IAAI,yDAAyB,yBAAyB,oBAAoB;AAAA,IACpG,oBAAoB,QAAQ;AAAA,EAC9B;AACA,SAAO;AACT;",
6
6
  "names": ["logger"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/dpr/utils/DataTableBuilder/DataTableBuilder.ts"],
3
+ "sources": ["../../../dpr/utils/DataTableBuilder/DataTableBuilder.ts"],
4
4
  "sourcesContent": ["import Dict = NodeJS.Dict\nimport ReportQuery from '../../types/ReportQuery'\nimport { Cell, CellFormat, DataTable, SortKey } from './types'\nimport createUrlForParameters from '../urlHelper'\nimport type { SummaryTemplate } from '../../types/Templates'\nimport { AsyncSummary } from '../../types/UserReports'\nimport DateMapper from '../DateMapper/DateMapper'\nimport { components } from '../../types/api'\n\nclass DataTableBuilder {\n protected fields: components['schemas']['FieldDefinition'][]\n\n private sortData: boolean\n\n protected columns: Array<string> = []\n\n protected reportSummaries: Dict<Array<AsyncSummary>> = {}\n\n // Sortable headers only\n private reportQuery: ReportQuery | null = null\n\n private currentQueryParams: NodeJS.Dict<string | Array<string>> | null = null\n\n private dateMapper = new DateMapper()\n\n constructor(fields: components['schemas']['FieldDefinition'][], sortData = false) {\n this.fields = fields\n this.sortData = sortData\n }\n\n private mapDate(isoDate?: string) {\n if (!isoDate) return ''\n\n return this.dateMapper.toDateString(isoDate, 'local-datetime-short-year')\n }\n\n private mapBoolean(value?: string) {\n if (!value) return ''\n return value.substring(0, 1).toUpperCase() + value.substring(1).toLowerCase()\n }\n\n protected mapRow(\n rowData: NodeJS.Dict<string>,\n extraClasses = '',\n overrideFields: components['schemas']['FieldDefinition'][] = [],\n ): Cell[] {\n return this.fields\n .filter((f) => this.columns.includes(f.name))\n .map((f) => {\n const overrideField = overrideFields.find((o) => o.name === f.name)\n const field = overrideField ?? f\n return this.mapCell(field, rowData, extraClasses)\n })\n }\n\n private mapCell(field: components['schemas']['FieldDefinition'], rowData: NodeJS.Dict<string>, extraClasses = '') {\n const displayValue = rowData[field.name]\n const textValue = this.mapCellValue(field, displayValue)\n let fieldFormat: CellFormat = 'string'\n\n let classes = extraClasses\n\n if (field.wordWrap) {\n classes += ` data-table-cell-wrap-${field.wordWrap.toLowerCase()}`\n }\n\n if (field.header) {\n classes += ' govuk-table__header'\n }\n\n if (field.type === 'double' || field.type === 'long' || typeof displayValue === 'number') {\n fieldFormat = 'numeric'\n }\n\n if (fieldFormat === 'string' && displayValue && typeof displayValue === 'string') {\n const wordCount = displayValue.split(' ').length\n if (wordCount > 10) {\n classes += ' data-table-cell-long-string'\n }\n }\n\n const isHtml = field.type === 'HTML'\n const cell: Cell = {\n fieldName: field.name,\n ...(isHtml ? { html: textValue } : { text: textValue }),\n format: fieldFormat,\n classes: classes.trim(),\n }\n\n return cell\n }\n\n protected mapCellValue(field: components['schemas']['FieldDefinition'], cellData?: string) {\n if (field.calculated) {\n return cellData\n }\n\n switch (field.type) {\n case 'boolean':\n return this.mapBoolean(cellData)\n\n case 'date':\n case 'time':\n return this.mapDate(cellData)\n\n default:\n return cellData === undefined ? '' : cellData\n }\n }\n\n protected mapHeader(disableSort = false, extraClasses: string | null = null): Cell[] {\n return this.fields\n .filter((field) => this.columns.includes(field.name))\n .map((f) => {\n if (this.reportQuery && !disableSort) {\n if (f.sortable) {\n let sortDirection = 'none'\n let url = createUrlForParameters(\n this.currentQueryParams || {},\n {\n sortColumn: f.name,\n sortedAsc: 'true',\n },\n this.fields,\n )\n\n if (f.name === this.reportQuery.sortColumn) {\n sortDirection = this.reportQuery.sortedAsc ? 'ascending' : 'descending'\n\n if (this.reportQuery.sortedAsc) {\n url = createUrlForParameters(\n this.currentQueryParams || {},\n {\n sortColumn: f.name,\n sortedAsc: 'false',\n },\n this.fields,\n )\n }\n }\n\n return {\n html:\n `<a ` +\n `data-column=\"${f.name}\" ` +\n `class=\"data-table-header-button data-table-header-button-sort-${sortDirection}\" ` +\n `href=\"${url}\"` +\n `>${f.display}</a>`,\n ...(extraClasses && { classes: extraClasses }),\n }\n }\n }\n return {\n text: f.display,\n ...(extraClasses && { classes: extraClasses }),\n }\n })\n }\n\n protected mapData(data: Array<Dict<string>>): Cell[][] {\n const mappedHeaderSummary = this.mapSummary('table-header')\n const mappedTableData = this.mergeCells(data.map((rowData) => this.mapRow(rowData)))\n const mappedFooterSummary = this.mapSummary('table-footer')\n\n return mappedHeaderSummary.concat(mappedTableData).concat(mappedFooterSummary)\n }\n\n private mergeCells(rows: Cell[][]): Cell[][] {\n const mergeFieldNames = this.fields\n .filter((f) => (<components['schemas']['SummaryField']>f).mergeRows)\n .map((f) => f.name)\n\n if (mergeFieldNames.length === 0) {\n return rows\n }\n\n const occurrences: Dict<Dict<number>> = {}\n mergeFieldNames.forEach((f) => {\n occurrences[f] = rows.reduce((accumulator: Dict<number>, currentRow) => {\n const currentCell = this.getCellByFieldName(currentRow, f)\n let cellValue = ''\n if (currentCell) {\n cellValue = currentCell.text || currentCell.html || ''\n }\n\n return {\n ...accumulator,\n [cellValue]: (accumulator[cellValue] ?? 0) + 1,\n }\n }, {})\n })\n\n return rows.map((row) => {\n let mergedRow = [...row]\n\n mergeFieldNames.forEach((mergeFieldName) => {\n const currentRowCell = this.getCellByFieldName(row, mergeFieldName)\n let cellValue\n let occurrencesOfValue\n if (currentRowCell && occurrences[mergeFieldName]) {\n cellValue = currentRowCell.text || currentRowCell.html || ''\n occurrencesOfValue = occurrences[mergeFieldName][cellValue]\n\n switch (occurrencesOfValue) {\n case -1:\n mergedRow = mergedRow.filter((c) => c.fieldName !== mergeFieldName)\n break\n\n case 1:\n break\n\n default:\n currentRowCell.rowspan = occurrencesOfValue\n occurrences[mergeFieldName][cellValue] = -1\n }\n }\n })\n\n return mergedRow\n })\n }\n\n private getCellByFieldName(row: Cell[], fieldName: string) {\n return row.find((c) => c.fieldName === fieldName)\n }\n\n private mapSummary(template: SummaryTemplate): Cell[][] {\n if (this.reportSummaries[template]) {\n return this.reportSummaries[template].flatMap((reportSummary) =>\n reportSummary.data.map((rowData) =>\n this.mapRow(\n rowData,\n `dpr-report-summary-cell dpr-report-summary-cell-${template}`,\n <components['schemas']['FieldDefinition'][]>reportSummary.fields,\n ),\n ),\n )\n }\n return []\n }\n\n protected sort(data: Dict<string>[]): Dict<string>[] {\n return this.appendSortKeyToData(data)\n .sort(this.sortKeyComparison())\n .map((d: SortKey) => ({\n ...d,\n }))\n }\n\n protected sortKeyComparison() {\n return (a: SortKey, b: SortKey) => {\n const aValue = a.sortKey\n const bValue = b.sortKey\n\n if (aValue === bValue) {\n return 0\n }\n\n if (aValue < bValue) {\n return -1\n }\n\n return 1\n }\n }\n\n private appendSortKeyToData(\n data: Dict<string>[],\n fields: components['schemas']['FieldDefinition'][] | null = null,\n ): SortKey[] {\n const sortFields = fields || this.fields\n\n return data.map((rowData) => {\n const sortKey = this.getSortKey(rowData, sortFields)\n\n return {\n ...rowData,\n sortKey,\n }\n })\n }\n\n protected mapNamesToFields(names: string[]): components['schemas']['FieldDefinition'][] {\n return names.map((s) => this.fields.find((f) => f.name === s)).filter((n) => n !== undefined)\n }\n\n protected getSortKey(rowData: NodeJS.Dict<string>, sortFields: components['schemas']['FieldDefinition'][]) {\n return sortFields\n .map((f) => {\n const value = rowData[f.name]\n if (value && this.dateMapper.isDate(value)) {\n return this.dateMapper.toDateString(value, 'iso')\n }\n\n return this.mapCellValue(f, value)\n })\n .join('-')\n .toLowerCase()\n }\n\n protected convertDataTableToHtml(dataTable: DataTable): string {\n const head = dataTable.head || []\n const headers = head.map((h) => `<th scope='col' class='govuk-table__header'>${h.html ?? h.text}</th>`)\n const rows = dataTable.rows.map(\n (r) =>\n `<tr class='govuk-table__row'>${r\n .map(\n (c) => `<td class='govuk-table__cell govuk-table__cell--${c.format} ${c.classes}'>${c.html ?? c.text}</td>`,\n )\n .join('')}</tr>`,\n )\n\n return (\n \"<table class='govuk-table'>\" +\n `<thead class='govuk-table__head'>${headers.join('')}</thead>` +\n `<tbody class='govuk-table__body'>${rows.join('')}</tbody>` +\n '</table>'\n )\n }\n\n withHeaderOptions({\n reportQuery,\n columns,\n interactive,\n }: {\n reportQuery?: ReportQuery\n columns: string[]\n interactive: boolean\n }) {\n if (interactive && reportQuery) {\n return this.withHeaderSortOptions(reportQuery)\n }\n return this.withNoHeaderOptions(columns)\n }\n\n withHeaderSortOptions(reportQuery: ReportQuery) {\n this.reportQuery = reportQuery\n this.columns = reportQuery.columns\n this.currentQueryParams = this.reportQuery.toRecordWithFilterPrefix()\n\n return this\n }\n\n withNoHeaderOptions(columns: string[]) {\n this.columns = columns\n return this\n }\n\n buildTable(data: Array<Dict<string>>): DataTable {\n const mappedData = this.mapData(this.sortData ? this.sort(data) : data)\n\n return {\n head: this.mapHeader(),\n rows: mappedData,\n rowCount: data.length,\n colCount: this.columns.length,\n }\n }\n\n withSummaries(reportSummaries: Dict<Array<AsyncSummary>>) {\n this.reportSummaries = reportSummaries\n return this\n }\n\n withSortedData(sortData = true) {\n this.sortData = sortData\n return this\n }\n}\n\nexport { DataTableBuilder }\nexport default DataTableBuilder\n"],
5
5
  "mappings": "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",
6
6
  "names": ["DateMapper", "createUrlForParameters"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/dpr/utils/DataTableBuilder/types.d.ts"],
3
+ "sources": ["../../../dpr/utils/DataTableBuilder/types.d.ts"],
4
4
  "sourcesContent": ["export type CellFormat = 'numeric' | 'string'\n\nexport interface Cell {\n fieldName?: string\n text?: string | undefined\n html?: string | undefined\n format?: CellFormat\n classes?: string\n colspan?: number\n rowspan?: number | undefined\n}\n\nexport interface DataTable {\n head: Array<Cell> | null\n rows: Array<Array<Cell>>\n rowCount: number\n colCount: number\n}\n\nexport interface FieldDefinition {\n name: string\n display?: string\n type?: 'boolean' | 'date' | 'double' | 'HTML' | 'long' | 'string' | 'time'\n wordWrap?: 'none' | 'normal' | 'break-words'\n calculated?: boolean\n sortable?: boolean\n header?: boolean\n mergeRows?: boolean\n visible?: boolean\n}\n\nexport interface SortKey {\n sortKey: string\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
6
6
  "names": []
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/dpr/utils/DateMapper/DateMapper.ts"],
3
+ "sources": ["../../../dpr/utils/DateMapper/DateMapper.ts"],
4
4
  "sourcesContent": ["import dayjs, { Dayjs } from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\nimport { DateType } from './types'\nimport logger from '../logger'\n\nclass DateMapper {\n private isoDateRegEx = /^(\\d{4}[/-](0?[1-9]|1[012])[/-](0?[1-9]|[12][0-9]|3[01]))/\n\n private localDateRegEx = /^(0?[1-9]|[12][0-9]|3[01])[/-](0?[1-9]|1[012])[/-]\\d{4}$/\n\n private localDateShortYearRegEx = /^(0?[1-9]|[12][0-9]|3[01])[/-](0?[1-9]|1[012])[/-]\\d{2}$/\n\n private localDateTimeRegEx = /^(0?[1-9]|[12][0-9]|3[01])[/-](0?[1-9]|1[012])[/-]\\d{4} [0-2]\\d:[0-5]\\d$/\n\n private localDateTimeShortYearRegEx = /^(0?[1-9]|[12][0-9]|3[01])[/-](0?[1-9]|1[012])[/-]\\d{2} [0-2]\\d:[0-5]\\d$/\n\n private isoFormat = 'YYYY-MM-DD'\n\n private localDateFormatInput = 'D/M/YYYY'\n\n private localDateFormatOutput = 'DD/MM/YYYY'\n\n private localDateShortYearFormatInput = 'D/M/YY'\n\n private localDateShortYearFormatOutput = 'DD/MM/YY'\n\n private localDateTimeFormatInput = 'D/M/YYYY HH:mm'\n\n private localDateTimeFormatOutput = 'DD/MM/YYYY HH:mm'\n\n private localDateTimeShortYearFormatInput = 'D/M/YY HH:mm'\n\n private localDateTimeShortYearFormatOutput = 'DD/MM/YY HH:mm'\n\n getDateType(value: string | null): DateType {\n if (value && value.match) {\n if (value.match(this.isoDateRegEx)) {\n return 'iso'\n }\n\n if (value.match(this.localDateRegEx)) {\n return 'local-date'\n }\n\n if (value.match(this.localDateShortYearRegEx)) {\n return 'local-date-short-year'\n }\n\n if (value.match(this.localDateTimeRegEx)) {\n return 'local-datetime'\n }\n\n if (value.match(this.localDateTimeShortYearRegEx)) {\n return 'local-datetime-short-year'\n }\n }\n\n return 'none'\n }\n\n getDateWrapper(value: string | null): Dayjs | null {\n dayjs.extend(customParseFormat)\n if (!value) {\n return null\n }\n switch (this.getDateType(value)) {\n case 'iso':\n return dayjs(value)\n case 'local-date':\n return dayjs(value, this.localDateFormatInput)\n case 'local-date-short-year':\n return dayjs(value, this.localDateShortYearFormatInput)\n case 'local-datetime':\n return dayjs(value, this.localDateTimeFormatInput)\n case 'local-datetime-short-year':\n return dayjs(value, this.localDateTimeShortYearFormatInput)\n default:\n return null\n }\n }\n\n isDate(value: string | null): boolean {\n return this.getDateType(value) !== 'none'\n }\n\n toDateString(value: string | null, type: DateType): string | undefined {\n const dateWrapper = this.getDateWrapper(value)\n\n if (dateWrapper) {\n switch (type) {\n case 'iso':\n return dateWrapper.format(this.isoFormat)\n case 'local-date':\n return dateWrapper.format(this.localDateFormatOutput)\n case 'local-date-short-year':\n return dateWrapper.format(this.localDateShortYearFormatOutput)\n case 'local-datetime':\n return dateWrapper.format(this.localDateTimeFormatOutput)\n case 'local-datetime-short-year':\n return dateWrapper.format(this.localDateTimeShortYearFormatOutput)\n default:\n logger.warn(`Invalid date type: ${type}`)\n return undefined\n }\n }\n\n if (value) {\n logger.warn(`Could not map non-date value : ${value}`)\n }\n return undefined\n }\n}\n\nexport { DateMapper }\nexport default DateMapper\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA6B;AAC7B,+BAA8B;AAE9B,oBAAmB;AAEnB,MAAM,WAAW;AAAA,EACP,eAAe;AAAA,EAEf,iBAAiB;AAAA,EAEjB,0BAA0B;AAAA,EAE1B,qBAAqB;AAAA,EAErB,8BAA8B;AAAA,EAE9B,YAAY;AAAA,EAEZ,uBAAuB;AAAA,EAEvB,wBAAwB;AAAA,EAExB,gCAAgC;AAAA,EAEhC,iCAAiC;AAAA,EAEjC,2BAA2B;AAAA,EAE3B,4BAA4B;AAAA,EAE5B,oCAAoC;AAAA,EAEpC,qCAAqC;AAAA,EAE7C,YAAY,OAAgC;AAC1C,QAAI,SAAS,MAAM,OAAO;AACxB,UAAI,MAAM,MAAM,KAAK,YAAY,GAAG;AAClC,eAAO;AAAA,MACT;AAEA,UAAI,MAAM,MAAM,KAAK,cAAc,GAAG;AACpC,eAAO;AAAA,MACT;AAEA,UAAI,MAAM,MAAM,KAAK,uBAAuB,GAAG;AAC7C,eAAO;AAAA,MACT;AAEA,UAAI,MAAM,MAAM,KAAK,kBAAkB,GAAG;AACxC,eAAO;AAAA,MACT;AAEA,UAAI,MAAM,MAAM,KAAK,2BAA2B,GAAG;AACjD,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,eAAe,OAAoC;AACjD,iBAAAA,QAAM,OAAO,yBAAAC,OAAiB;AAC9B,QAAI,CAAC,OAAO;AACV,aAAO;AAAA,IACT;AACA,YAAQ,KAAK,YAAY,KAAK,GAAG;AAAA,MAC/B,KAAK;AACH,mBAAO,aAAAD,SAAM,KAAK;AAAA,MACpB,KAAK;AACH,mBAAO,aAAAA,SAAM,OAAO,KAAK,oBAAoB;AAAA,MAC/C,KAAK;AACH,mBAAO,aAAAA,SAAM,OAAO,KAAK,6BAA6B;AAAA,MACxD,KAAK;AACH,mBAAO,aAAAA,SAAM,OAAO,KAAK,wBAAwB;AAAA,MACnD,KAAK;AACH,mBAAO,aAAAA,SAAM,OAAO,KAAK,iCAAiC;AAAA,MAC5D;AACE,eAAO;AAAA,IACX;AAAA,EACF;AAAA,EAEA,OAAO,OAA+B;AACpC,WAAO,KAAK,YAAY,KAAK,MAAM;AAAA,EACrC;AAAA,EAEA,aAAa,OAAsB,MAAoC;AACrE,UAAM,cAAc,KAAK,eAAe,KAAK;AAE7C,QAAI,aAAa;AACf,cAAQ,MAAM;AAAA,QACZ,KAAK;AACH,iBAAO,YAAY,OAAO,KAAK,SAAS;AAAA,QAC1C,KAAK;AACH,iBAAO,YAAY,OAAO,KAAK,qBAAqB;AAAA,QACtD,KAAK;AACH,iBAAO,YAAY,OAAO,KAAK,8BAA8B;AAAA,QAC/D,KAAK;AACH,iBAAO,YAAY,OAAO,KAAK,yBAAyB;AAAA,QAC1D,KAAK;AACH,iBAAO,YAAY,OAAO,KAAK,kCAAkC;AAAA,QACnE;AACE,wBAAAE,QAAO,KAAK,sBAAsB,IAAI,EAAE;AACxC,iBAAO;AAAA,MACX;AAAA,IACF;AAEA,QAAI,OAAO;AACT,oBAAAA,QAAO,KAAK,kCAAkC,KAAK,EAAE;AAAA,IACvD;AACA,WAAO;AAAA,EACT;AACF;AAGA,IAAO,qBAAQ;",
6
6
  "names": ["dayjs", "customParseFormat", "logger"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/dpr/utils/DateMapper/types.d.ts"],
3
+ "sources": ["../../../dpr/utils/DateMapper/types.d.ts"],
4
4
  "sourcesContent": ["export type DateType =\n | 'iso'\n | 'local-date'\n | 'local-date-short-year'\n | 'local-datetime'\n | 'local-datetime-short-year'\n | 'none'\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
6
6
  "names": []
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/dpr/utils/ErrorHandler.ts"],
3
+ "sources": ["../../dpr/utils/ErrorHandler.ts"],
4
4
  "sourcesContent": ["import { components } from '../types/api'\nimport logger from './logger'\n\nexport interface DprErrorMessage {\n userMessage?: string\n developerMessage?: string\n stack?: string\n moreInfo?: string\n status?: string | number\n}\n\ninterface DprErrorData {\n data: components['schemas']['ErrorResponse']\n}\n\ninterface ZodValidationError {\n userMessage: string\n stack: string\n}\n\nclass ErrorHandler {\n error: Error | components['schemas']['ErrorResponse'] | string | undefined | unknown | DprErrorData\n\n developerMessage?: string | undefined\n\n userMessage?: string | undefined\n\n moreInfo?: string | undefined\n\n stack?: string | undefined\n\n status?: number | string | undefined\n\n constructor(error: Error | components['schemas']['ErrorResponse'] | string | undefined | unknown) {\n this.error = error\n logger.error(`Error: ${JSON.stringify(error)}`)\n }\n\n formatError = (): DprErrorMessage => {\n return this.handleError()\n }\n\n private handleError = (): DprErrorMessage => {\n // status: FAILED\n if (typeof this.error === 'string') {\n this.developerMessage = this.error\n }\n\n // Error response\n else if ((<DprErrorData>this.error).data) {\n const error = (<DprErrorData>this.error).data\n this.developerMessage = error.developerMessage\n this.userMessage = error.userMessage\n this.moreInfo = error.moreInfo\n this.status = error.status\n }\n\n // client side error\n else if (Object.prototype.hasOwnProperty.call(this.error, 'message')) {\n const error = <Error>this.error\n this.userMessage = error.message\n this.stack = error.stack\n this.status = 500\n }\n\n // Server response error\n else if (Object.prototype.hasOwnProperty.call(this.error, 'developerMessage')) {\n const error = <components['schemas']['ErrorResponse']>this.error\n this.developerMessage = error.developerMessage\n this.userMessage = error.userMessage\n this.moreInfo = error.moreInfo\n this.status = error.status\n }\n\n // Zod error\n else if (Object.prototype.hasOwnProperty.call(this.error, 'userMessage')) {\n const error = <ZodValidationError>this.error\n if (error.stack && error.stack.includes('ZodError')) {\n const errorArr: { message: string }[] = JSON.parse(error.userMessage)\n this.userMessage = errorArr.map((m) => m.message).join(', ')\n this.status = 500\n this.stack = error.stack\n }\n }\n\n const formattedError = {\n ...(this.developerMessage && { developerMessage: this.developerMessage }),\n ...(this.userMessage && { userMessage: this.userMessage }),\n ...(this.moreInfo && { moreInfo: this.moreInfo }),\n ...(this.stack && { stack: this.stack }),\n ...(this.status && { status: this.status }),\n }\n\n logger.error(JSON.stringify(formattedError, null, 2))\n\n return formattedError\n }\n}\n\nexport { ErrorHandler }\nexport default ErrorHandler\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBAAmB;AAmBnB,MAAM,aAAa;AAAA,EACjB;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA,YAAY,OAAsF;AAChG,SAAK,QAAQ;AACb,kBAAAA,QAAO,MAAM,UAAU,KAAK,UAAU,KAAK,CAAC,EAAE;AAAA,EAChD;AAAA,EAEA,cAAc,MAAuB;AACnC,WAAO,KAAK,YAAY;AAAA,EAC1B;AAAA,EAEQ,cAAc,MAAuB;AAE3C,QAAI,OAAO,KAAK,UAAU,UAAU;AAClC,WAAK,mBAAmB,KAAK;AAAA,IAC/B,WAGwB,KAAK,MAAO,MAAM;AACxC,YAAM,QAAuB,KAAK,MAAO;AACzC,WAAK,mBAAmB,MAAM;AAC9B,WAAK,cAAc,MAAM;AACzB,WAAK,WAAW,MAAM;AACtB,WAAK,SAAS,MAAM;AAAA,IACtB,WAGS,OAAO,UAAU,eAAe,KAAK,KAAK,OAAO,SAAS,GAAG;AACpE,YAAM,QAAe,KAAK;AAC1B,WAAK,cAAc,MAAM;AACzB,WAAK,QAAQ,MAAM;AACnB,WAAK,SAAS;AAAA,IAChB,WAGS,OAAO,UAAU,eAAe,KAAK,KAAK,OAAO,kBAAkB,GAAG;AAC7E,YAAM,QAAgD,KAAK;AAC3D,WAAK,mBAAmB,MAAM;AAC9B,WAAK,cAAc,MAAM;AACzB,WAAK,WAAW,MAAM;AACtB,WAAK,SAAS,MAAM;AAAA,IACtB,WAGS,OAAO,UAAU,eAAe,KAAK,KAAK,OAAO,aAAa,GAAG;AACxE,YAAM,QAA4B,KAAK;AACvC,UAAI,MAAM,SAAS,MAAM,MAAM,SAAS,UAAU,GAAG;AACnD,cAAM,WAAkC,KAAK,MAAM,MAAM,WAAW;AACpE,aAAK,cAAc,SAAS,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,IAAI;AAC3D,aAAK,SAAS;AACd,aAAK,QAAQ,MAAM;AAAA,MACrB;AAAA,IACF;AAEA,UAAM,iBAAiB;AAAA,MACrB,GAAI,KAAK,oBAAoB,EAAE,kBAAkB,KAAK,iBAAiB;AAAA,MACvE,GAAI,KAAK,eAAe,EAAE,aAAa,KAAK,YAAY;AAAA,MACxD,GAAI,KAAK,YAAY,EAAE,UAAU,KAAK,SAAS;AAAA,MAC/C,GAAI,KAAK,SAAS,EAAE,OAAO,KAAK,MAAM;AAAA,MACtC,GAAI,KAAK,UAAU,EAAE,QAAQ,KAAK,OAAO;AAAA,IAC3C;AAEA,kBAAAA,QAAO,MAAM,KAAK,UAAU,gBAAgB,MAAM,CAAC,CAAC;AAEpD,WAAO;AAAA,EACT;AACF;AAGA,IAAO,uBAAQ;",
6
6
  "names": ["logger"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/dpr/utils/ParentChildDataTableBuilder/ParentChildDataTableBuilder.ts"],
3
+ "sources": ["../../../dpr/utils/ParentChildDataTableBuilder/ParentChildDataTableBuilder.ts"],
4
4
  "sourcesContent": ["import Dict = NodeJS.Dict\nimport { components } from '../../types/api'\nimport { Cell, DataTable } from '../DataTableBuilder/types'\nimport DataTableBuilder from '../DataTableBuilder/DataTableBuilder'\nimport { distinct } from '../arrayUtils'\nimport { ChildData, ParentChildSortKey } from './types'\nimport SectionedDataTableBuilder from '../SectionedDataTableBuilder/SectionedDataTableBuilder'\n\nclass ParentChildDataTableBuilder extends SectionedDataTableBuilder {\n variant: components['schemas']['VariantDefinition']\n\n childVariants: components['schemas']['ChildVariantDefinition'][]\n\n childData: Array<ChildData> = []\n\n constructor(variant: components['schemas']['VariantDefinition']) {\n const { specification } = variant\n const { sections, template } = <components['schemas']['Specification']>specification\n super(<components['schemas']['Specification']>specification)\n\n this.sections = sections\n this.template = template\n this.variant = variant\n this.childVariants = this.variant.childVariants || []\n }\n\n private createParentChildTable(parentData: Array<Dict<string>>, header: Cell[]) {\n let sectionedParentChildData: Dict<Dict<Array<Dict<string>>>> = {}\n const joinFields = this.mapNamesToFields(this.childVariants.flatMap((c) => c.joinFields).reduce(distinct, []))\n // Get the parent-child joins definition data\n\n // Create the section keys and\n const parentChildKeys = this.calculateParentChildKeys(parentData, joinFields)\n parentChildKeys.forEach((parentKey) => {\n sectionedParentChildData[parentKey.sortKey] = {\n parent: [],\n }\n })\n\n sectionedParentChildData = this.splitParentDataIntoSections(sectionedParentChildData, parentData, joinFields)\n sectionedParentChildData = this.splitChildDataIntoSections(parentChildKeys, sectionedParentChildData)\n\n const childDataTableBuilders = this.createChildDataTableBuilders()\n\n const parentChildTable = parentChildKeys.flatMap((key) => {\n const sectionData = sectionedParentChildData[key.sortKey] || {}\n\n let parentSectionData: Dict<string>[] = []\n if (sectionData) {\n parentSectionData = sectionData['parent'] ? sectionData['parent'] : []\n }\n\n return [header].concat(parentSectionData.map((r) => this.mapRow(r, 'dpr-parent-cell'))).concat(\n this.childVariants\n .filter((childVariant) => sectionData && sectionData[childVariant.id])\n .map((childVariant) => {\n const builder = childDataTableBuilders[childVariant.id]\n const section = sectionData[childVariant.id]\n const dataTable = builder && section ? builder.buildTable(section) : undefined\n const dataTableHtml = dataTable ? this.convertDataTableToHtml(dataTable) : ''\n\n return [\n {\n classes: 'dpr-child-report-cell',\n format: 'string',\n html: `<div class='dpr-child-report'><h2 class=\"govuk-heading-s\">${childVariant.name}</h2><div class=\"dpr-child-report_table\">${dataTableHtml}</div></div>`,\n colspan: this.columns.length,\n },\n ]\n }),\n )\n })\n\n return parentChildTable\n }\n\n private createParentChildSectionRows(parentData: Array<Dict<string>>, header: Cell[]) {\n const sectionsDetails = this.mapSections(parentData)\n const sectionedData = sectionsDetails.sectionedData as Dict<Array<Dict<string>>>\n const sectionedParentChildSectionedRows: {\n sectionDescription: string\n rows: Cell[][]\n count: number\n countDescription: string\n }[] = []\n\n Object.keys(sectionedData).forEach((sectionDescription) => {\n const data = sectionedData[sectionDescription] as Array<Dict<string>>\n\n sectionedParentChildSectionedRows.push({\n sectionDescription,\n ...this.getSectionCount(sectionedData, sectionDescription),\n rows: this.createParentChildTable(data, header),\n })\n })\n\n const rows = sectionedParentChildSectionedRows.flatMap((section, index) => {\n const sectionHeader = this.createSectionHeader(\n section.sectionDescription,\n index,\n section.count,\n section.countDescription,\n )\n return [...sectionHeader, ...section.rows]\n })\n\n return rows\n }\n\n private mapParentChildData(parentData: Array<Dict<string>>, header: Cell[]): Cell[][] {\n if (this.sections?.length) {\n return this.createParentChildSectionRows(parentData, header)\n }\n return this.createParentChildTable(parentData, header)\n }\n\n private createChildDataTableBuilders() {\n const childDataTables: Dict<DataTableBuilder> = this.childVariants.reduce((previousValue, childVariant) => {\n const { specification } = childVariant\n const fields = specification ? specification.fields : []\n const fieldNamesToDisplay = fields.filter((f) => f.visible || f.mandatory).map((f) => f.name)\n\n const dataTableBuilder = new DataTableBuilder(fields).withNoHeaderOptions(fieldNamesToDisplay).withSortedData()\n\n return {\n ...previousValue,\n [childVariant.id]: dataTableBuilder,\n }\n }, {})\n return childDataTables\n }\n\n private calculateParentChildKeys(\n parentData: Array<NodeJS.Dict<string>>,\n joinFields: components['schemas']['FieldDefinition'][],\n ) {\n return parentData\n .map(\n (rowData): ParentChildSortKey => ({\n sortKey: this.getSortKey(rowData, joinFields),\n childSortKeys: this.childVariants.reduce((previousValue, childVariant) => {\n return {\n ...previousValue,\n [childVariant.id]: this.getSortKey(rowData, this.mapNamesToFields(childVariant.joinFields)),\n }\n }, {}),\n }),\n )\n .reduce((previousValue: ParentChildSortKey[], sortKey: ParentChildSortKey) => {\n if (previousValue.find((v) => v.sortKey === sortKey.sortKey)) {\n return previousValue\n }\n return previousValue.concat(sortKey)\n }, [])\n }\n\n private splitParentDataIntoSections(\n sectionedParentChildData: NodeJS.Dict<NodeJS.Dict<Array<NodeJS.Dict<string>>>>,\n parentData: Array<NodeJS.Dict<string>>,\n joinFields: components['schemas']['FieldDefinition'][],\n ) {\n return parentData.reduce((previousValue, rowData) => {\n const parentKey: string = this.getSortKey(rowData, joinFields)\n const previousParentValue = previousValue[parentKey] ? previousValue[parentKey]['parent'] : []\n\n return {\n ...previousValue,\n ...(previousParentValue && {\n [parentKey]: {\n parent: previousParentValue.concat(rowData),\n },\n }),\n }\n }, sectionedParentChildData)\n }\n\n private splitChildDataIntoSections(\n parentKeys: ParentChildSortKey[],\n sectionedParentChildData: Dict<Dict<Array<Dict<string>>>>,\n ): Dict<Dict<Array<Dict<string>>>> {\n const sectionedParentChildDataWithChildren = { ...sectionedParentChildData }\n\n this.childVariants.forEach((childVariant) => {\n const childFields = this.mapNamesToFields(childVariant.joinFields)\n const matchingChildData = this.childData.find((d) => d.id === childVariant.id)\n const data = matchingChildData ? matchingChildData.data : []\n\n data\n .filter((rowData) => {\n const sortKey = this.getSortKey(rowData, childFields)\n return parentKeys.find((p) => p.childSortKeys[childVariant.id] === sortKey)\n })\n .forEach((rowData) => {\n const sortKey = this.getSortKey(rowData, childFields)\n const parent = parentKeys.find((p) => p.childSortKeys[childVariant.id] === sortKey)\n const parentSortKey = parent ? parent.sortKey : ''\n const parentSection = sectionedParentChildDataWithChildren[parentSortKey]\n if (parentSection) {\n const existingChildData = parentSection[childVariant.id] || []\n parentSection[childVariant.id] = existingChildData.concat(rowData)\n }\n })\n })\n\n return sectionedParentChildDataWithChildren\n }\n\n withChildData(childData: Array<ChildData>) {\n this.childData = childData\n return this\n }\n\n override buildTable(data: Array<Dict<string>>): DataTable {\n return {\n head: null,\n rows: this.mapParentChildData(data, this.mapHeader(true, 'govuk-table__header')),\n rowCount: data.length,\n colCount: this.columns.length,\n }\n }\n}\n\nexport { ParentChildDataTableBuilder }\nexport default ParentChildDataTableBuilder\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,8BAA6B;AAC7B,wBAAyB;AAEzB,uCAAsC;AAEtC,MAAM,oCAAoC,iCAAAA,QAA0B;AAAA,EAClE;AAAA,EAEA;AAAA,EAEA,YAA8B,CAAC;AAAA,EAE/B,YAAY,SAAqD;AAC/D,UAAM,EAAE,cAAc,IAAI;AAC1B,UAAM,EAAE,UAAU,SAAS,IAA4C;AACvE,UAA8C,aAAa;AAE3D,SAAK,WAAW;AAChB,SAAK,WAAW;AAChB,SAAK,UAAU;AACf,SAAK,gBAAgB,KAAK,QAAQ,iBAAiB,CAAC;AAAA,EACtD;AAAA,EAEQ,uBAAuB,YAAiC,QAAgB;AAC9E,QAAI,2BAA4D,CAAC;AACjE,UAAM,aAAa,KAAK,iBAAiB,KAAK,cAAc,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,4BAAU,CAAC,CAAC,CAAC;AAI7G,UAAM,kBAAkB,KAAK,yBAAyB,YAAY,UAAU;AAC5E,oBAAgB,QAAQ,CAAC,cAAc;AACrC,+BAAyB,UAAU,OAAO,IAAI;AAAA,QAC5C,QAAQ,CAAC;AAAA,MACX;AAAA,IACF,CAAC;AAED,+BAA2B,KAAK,4BAA4B,0BAA0B,YAAY,UAAU;AAC5G,+BAA2B,KAAK,2BAA2B,iBAAiB,wBAAwB;AAEpG,UAAM,yBAAyB,KAAK,6BAA6B;AAEjE,UAAM,mBAAmB,gBAAgB,QAAQ,CAAC,QAAQ;AACxD,YAAM,cAAc,yBAAyB,IAAI,OAAO,KAAK,CAAC;AAE9D,UAAI,oBAAoC,CAAC;AACzC,UAAI,aAAa;AACf,4BAAoB,YAAY,QAAQ,IAAI,YAAY,QAAQ,IAAI,CAAC;AAAA,MACvE;AAEA,aAAO,CAAC,MAAM,EAAE,OAAO,kBAAkB,IAAI,CAAC,MAAM,KAAK,OAAO,GAAG,iBAAiB,CAAC,CAAC,EAAE;AAAA,QACtF,KAAK,cACF,OAAO,CAAC,iBAAiB,eAAe,YAAY,aAAa,EAAE,CAAC,EACpE,IAAI,CAAC,iBAAiB;AACrB,gBAAM,UAAU,uBAAuB,aAAa,EAAE;AACtD,gBAAM,UAAU,YAAY,aAAa,EAAE;AAC3C,gBAAM,YAAY,WAAW,UAAU,QAAQ,WAAW,OAAO,IAAI;AACrE,gBAAM,gBAAgB,YAAY,KAAK,uBAAuB,SAAS,IAAI;AAE3E,iBAAO;AAAA,YACL;AAAA,cACE,SAAS;AAAA,cACT,QAAQ;AAAA,cACR,MAAM,6DAA6D,aAAa,IAAI,4CAA4C,aAAa;AAAA,cAC7I,SAAS,KAAK,QAAQ;AAAA,YACxB;AAAA,UACF;AAAA,QACF,CAAC;AAAA,MACL;AAAA,IACF,CAAC;AAED,WAAO;AAAA,EACT;AAAA,EAEQ,6BAA6B,YAAiC,QAAgB;AACpF,UAAM,kBAAkB,KAAK,YAAY,UAAU;AACnD,UAAM,gBAAgB,gBAAgB;AACtC,UAAM,oCAKA,CAAC;AAEP,WAAO,KAAK,aAAa,EAAE,QAAQ,CAAC,uBAAuB;AACzD,YAAM,OAAO,cAAc,kBAAkB;AAE7C,wCAAkC,KAAK;AAAA,QACrC;AAAA,QACA,GAAG,KAAK,gBAAgB,eAAe,kBAAkB;AAAA,QACzD,MAAM,KAAK,uBAAuB,MAAM,MAAM;AAAA,MAChD,CAAC;AAAA,IACH,CAAC;AAED,UAAM,OAAO,kCAAkC,QAAQ,CAAC,SAAS,UAAU;AACzE,YAAM,gBAAgB,KAAK;AAAA,QACzB,QAAQ;AAAA,QACR;AAAA,QACA,QAAQ;AAAA,QACR,QAAQ;AAAA,MACV;AACA,aAAO,CAAC,GAAG,eAAe,GAAG,QAAQ,IAAI;AAAA,IAC3C,CAAC;AAED,WAAO;AAAA,EACT;AAAA,EAEQ,mBAAmB,YAAiC,QAA0B;AACpF,QAAI,KAAK,UAAU,QAAQ;AACzB,aAAO,KAAK,6BAA6B,YAAY,MAAM;AAAA,IAC7D;AACA,WAAO,KAAK,uBAAuB,YAAY,MAAM;AAAA,EACvD;AAAA,EAEQ,+BAA+B;AACrC,UAAM,kBAA0C,KAAK,cAAc,OAAO,CAAC,eAAe,iBAAiB;AACzG,YAAM,EAAE,cAAc,IAAI;AAC1B,YAAM,SAAS,gBAAgB,cAAc,SAAS,CAAC;AACvD,YAAM,sBAAsB,OAAO,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI;AAE5F,YAAM,mBAAmB,IAAI,wBAAAC,QAAiB,MAAM,EAAE,oBAAoB,mBAAmB,EAAE,eAAe;AAE9G,aAAO;AAAA,QACL,GAAG;AAAA,QACH,CAAC,aAAa,EAAE,GAAG;AAAA,MACrB;AAAA,IACF,GAAG,CAAC,CAAC;AACL,WAAO;AAAA,EACT;AAAA,EAEQ,yBACN,YACA,YACA;AACA,WAAO,WACJ;AAAA,MACC,CAAC,aAAiC;AAAA,QAChC,SAAS,KAAK,WAAW,SAAS,UAAU;AAAA,QAC5C,eAAe,KAAK,cAAc,OAAO,CAAC,eAAe,iBAAiB;AACxE,iBAAO;AAAA,YACL,GAAG;AAAA,YACH,CAAC,aAAa,EAAE,GAAG,KAAK,WAAW,SAAS,KAAK,iBAAiB,aAAa,UAAU,CAAC;AAAA,UAC5F;AAAA,QACF,GAAG,CAAC,CAAC;AAAA,MACP;AAAA,IACF,EACC,OAAO,CAAC,eAAqC,YAAgC;AAC5E,UAAI,cAAc,KAAK,CAAC,MAAM,EAAE,YAAY,QAAQ,OAAO,GAAG;AAC5D,eAAO;AAAA,MACT;AACA,aAAO,cAAc,OAAO,OAAO;AAAA,IACrC,GAAG,CAAC,CAAC;AAAA,EACT;AAAA,EAEQ,4BACN,0BACA,YACA,YACA;AACA,WAAO,WAAW,OAAO,CAAC,eAAe,YAAY;AACnD,YAAM,YAAoB,KAAK,WAAW,SAAS,UAAU;AAC7D,YAAM,sBAAsB,cAAc,SAAS,IAAI,cAAc,SAAS,EAAE,QAAQ,IAAI,CAAC;AAE7F,aAAO;AAAA,QACL,GAAG;AAAA,QACH,GAAI,uBAAuB;AAAA,UACzB,CAAC,SAAS,GAAG;AAAA,YACX,QAAQ,oBAAoB,OAAO,OAAO;AAAA,UAC5C;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG,wBAAwB;AAAA,EAC7B;AAAA,EAEQ,2BACN,YACA,0BACiC;AACjC,UAAM,uCAAuC,EAAE,GAAG,yBAAyB;AAE3E,SAAK,cAAc,QAAQ,CAAC,iBAAiB;AAC3C,YAAM,cAAc,KAAK,iBAAiB,aAAa,UAAU;AACjE,YAAM,oBAAoB,KAAK,UAAU,KAAK,CAAC,MAAM,EAAE,OAAO,aAAa,EAAE;AAC7E,YAAM,OAAO,oBAAoB,kBAAkB,OAAO,CAAC;AAE3D,WACG,OAAO,CAAC,YAAY;AACnB,cAAM,UAAU,KAAK,WAAW,SAAS,WAAW;AACpD,eAAO,WAAW,KAAK,CAAC,MAAM,EAAE,cAAc,aAAa,EAAE,MAAM,OAAO;AAAA,MAC5E,CAAC,EACA,QAAQ,CAAC,YAAY;AACpB,cAAM,UAAU,KAAK,WAAW,SAAS,WAAW;AACpD,cAAM,SAAS,WAAW,KAAK,CAAC,MAAM,EAAE,cAAc,aAAa,EAAE,MAAM,OAAO;AAClF,cAAM,gBAAgB,SAAS,OAAO,UAAU;AAChD,cAAM,gBAAgB,qCAAqC,aAAa;AACxE,YAAI,eAAe;AACjB,gBAAM,oBAAoB,cAAc,aAAa,EAAE,KAAK,CAAC;AAC7D,wBAAc,aAAa,EAAE,IAAI,kBAAkB,OAAO,OAAO;AAAA,QACnE;AAAA,MACF,CAAC;AAAA,IACL,CAAC;AAED,WAAO;AAAA,EACT;AAAA,EAEA,cAAc,WAA6B;AACzC,SAAK,YAAY;AACjB,WAAO;AAAA,EACT;AAAA,EAES,WAAW,MAAsC;AACxD,WAAO;AAAA,MACL,MAAM;AAAA,MACN,MAAM,KAAK,mBAAmB,MAAM,KAAK,UAAU,MAAM,qBAAqB,CAAC;AAAA,MAC/E,UAAU,KAAK;AAAA,MACf,UAAU,KAAK,QAAQ;AAAA,IACzB;AAAA,EACF;AACF;AAGA,IAAO,sCAAQ;",
6
6
  "names": ["SectionedDataTableBuilder", "DataTableBuilder"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/dpr/utils/ParentChildDataTableBuilder/types.d.ts"],
3
+ "sources": ["../../../dpr/utils/ParentChildDataTableBuilder/types.d.ts"],
4
4
  "sourcesContent": ["import { SortKey } from '../DataTableBuilder/types'\nimport Dict = NodeJS.Dict\n\nexport interface ParentChildSortKey extends SortKey {\n childSortKeys: Dict<string>\n}\n\nexport interface ChildData {\n id: string\n data: Array<Dict<string>>\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
6
6
  "names": []
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/dpr/utils/Personalisation/personalisationUtils.ts"],
3
+ "sources": ["../../../dpr/utils/Personalisation/personalisationUtils.ts"],
4
4
  "sourcesContent": ["import { Request, Response } from 'express'\nimport { Services } from '../../types/Services'\nimport localsHelper from '../localsHelper'\nimport { ReportType } from '../../types/UserReports'\nimport { components } from '../../types/api'\nimport { FilterType } from '../../components/_filters/filter-input/enum'\nimport DateRangeInputUtils from '../../components/_inputs/date-range/utils'\nimport GranularDateRangeInputUtils from '../../components/_inputs/granular-date-range/utils'\nimport MultiSelectUtils from '../../components/_inputs/multi-select/utils'\nimport DateInputUtils from '../../components/_inputs/date-input/utils'\nimport { RenderFiltersReturnValue } from '../../components/_async/async-filters-form/types'\nimport {\n DateFilterValue,\n DateRangeFilterValue,\n FilterValue,\n FilterValueWithOptions,\n GranularDateRangeFilterValue,\n MultiselectFilterValue,\n} from '../../components/_filters/types'\nimport { defaultFilterValue } from './types'\nimport { FiltersType } from '../../components/_filters/filtersTypeEnum'\nimport { getRequestParam } from '../indexedAccesHelper'\n\nexport const saveDefaults = async (type: FiltersType, res: Response, req: Request, services: Services) => {\n const defaultValuesForReport = await getDefaultValues(req, res, services, type)\n const { dprUser } = localsHelper.getValues(res)\n const id = getRequestParam({ req, param: 'id' })\n const reportId = getRequestParam({ req, param: 'reportId' })\n const { defaultFilterValuesService } = services\n return defaultFilterValuesService\n ? defaultFilterValuesService.save(dprUser.id, reportId, id, defaultValuesForReport)\n : undefined\n}\n\nexport const removeDefaults = async (type: FiltersType, res: Response, req: Request, services: Services) => {\n const { dprUser } = localsHelper.getValues(res)\n const { reportId, id } = req.params\n const { defaultFilterValuesService } = services\n return defaultFilterValuesService ? defaultFilterValuesService.delete(dprUser.id, reportId, id, type) : undefined\n}\n\nconst getDefaultValues = async (\n req: Request,\n res: Response,\n services: Services,\n filtersType: FiltersType,\n): Promise<defaultFilterValue[]> => {\n const { token, definitionsPath } = localsHelper.getValues(res)\n const { reportId, id, type } = req.params\n\n let definition: components['schemas']['SingleVariantReportDefinition'] | components['schemas']['DashboardDefinition']\n let fields = []\n if (type === ReportType.REPORT) {\n definition = await services.reportingService.getDefinition(token, reportId, id, definitionsPath)\n fields = definition.variant.specification?.fields || []\n } else {\n definition = await services.dashboardService.getDefinition(token, reportId, id, definitionsPath)\n fields = definition.filterFields || []\n }\n\n const bodyFilterValues = Object.keys(req.body)\n .filter((k) => {\n return k.includes('filters.') || k.includes('sortColumn') || k.includes('sortedAsc')\n })\n .map((k) => {\n return { name: k.replace('filters.', ''), value: req.body[k] }\n })\n .map((k) => {\n const n = k.name.split('.')[0]\n const field = fields.find((f) => f.name === n)\n let { value, name } = k\n\n if (field) {\n const filterType = field.filter?.type.toLocaleLowerCase()\n\n switch (filterType) {\n case FilterType.multiselect.toLocaleLowerCase():\n value = Array.isArray(k.value) ? k.value.join(',') : k.value\n break\n\n case FilterType.dateRange.toLocaleLowerCase():\n ;({ value, name } = DateRangeInputUtils.setDefaultValue(req, name))\n break\n\n case FilterType.granularDateRange.toLocaleLowerCase():\n ;({ name, value } = GranularDateRangeInputUtils.setDefaultValue(req, name))\n break\n\n default:\n break\n }\n }\n\n return {\n name,\n value,\n type: filtersType,\n }\n })\n\n const defaultValuesConfig = Array.from(new Set(bodyFilterValues.map((a) => a.name)))\n .map((name) => {\n return bodyFilterValues.find((a) => a.name === name)\n })\n .filter((c) => c !== undefined)\n\n const result = defaultValuesConfig.filter((defaultValue) => {\n return defaultValue ? defaultValue.value !== '' : false\n })\n\n return result\n}\n\nexport const setFilterValuesFromSavedDefaults = (\n filters: FilterValue[],\n sortBy: FilterValue[],\n defaultValues: defaultFilterValue[],\n): RenderFiltersReturnValue => {\n const hasDefaults = filters.some((f) => {\n const defaultValue = defaultValues.findIndex((v) => v.name === f.name)\n return defaultValue !== -1\n })\n\n const filterValues = filters.map((filter) => {\n const defaultValue = defaultValues.find((v) => v.name === filter.name)\n let updatedFilter = {\n ...filter,\n }\n const type = filter.type.toLocaleLowerCase()\n\n switch (type) {\n case FilterType.multiselect.toLocaleLowerCase():\n updatedFilter = MultiSelectUtils.setFilterValuesFromSavedDefault(\n <MultiselectFilterValue>updatedFilter,\n hasDefaults,\n defaultValue,\n )\n break\n case FilterType.date.toLocaleLowerCase():\n if (hasDefaults) {\n updatedFilter.value = ''\n }\n if (defaultValue) {\n updatedFilter = <DateFilterValue>DateInputUtils.setFilterValueFromDefault(defaultValue, updatedFilter)\n }\n break\n case FilterType.dateRange.toLocaleLowerCase():\n if (hasDefaults) {\n updatedFilter.value = { start: '', end: '', relative: undefined }\n }\n if (defaultValue) {\n updatedFilter = <DateRangeFilterValue>(\n DateRangeInputUtils.setFilterValueFromDefault(defaultValue, updatedFilter)\n )\n }\n break\n case FilterType.granularDateRange.toLocaleLowerCase():\n if (hasDefaults) {\n updatedFilter.value = { start: '', end: '', granularity: undefined, quickFilter: undefined }\n }\n if (defaultValue) {\n updatedFilter = <GranularDateRangeFilterValue>(\n GranularDateRangeInputUtils.setFilterValueFromDefault(defaultValue, updatedFilter)\n )\n }\n break\n default:\n {\n let value = hasDefaults ? '' : updatedFilter.value\n value = defaultValue ? defaultValue.value : value\n updatedFilter = {\n ...filter,\n value,\n }\n }\n\n break\n }\n\n return updatedFilter\n })\n\n const sortValues = sortBy.map((sortFilter) => {\n const defaultValue = defaultValues.find((v) => v.name === sortFilter.name)\n return {\n ...sortFilter,\n ...(defaultValue && { value: defaultValue.value }),\n }\n })\n\n return {\n filters: filterValues,\n sortBy: sortValues,\n }\n}\n\nexport const setUserContextDefaults = (res: Response, filters: FilterValue[]) => {\n const { dprUser } = localsHelper.getValues(res)\n const { activeCaseLoadId } = dprUser\n\n filters.forEach((filter) => {\n if (\n filter.type.toLocaleLowerCase() === FilterType.autocomplete.toLocaleLowerCase() &&\n filter.text.toLocaleLowerCase().includes('establishment') &&\n activeCaseLoadId?.length\n ) {\n const f = <FilterValueWithOptions>filter\n const option = f.options.find((opt) => opt.value === activeCaseLoadId)\n\n if (option) {\n f.value = option.text\n f.staticOptionNameValue = activeCaseLoadId\n }\n }\n })\n\n return filters\n}\n\nexport default { saveDefaults, removeDefaults, setFilterValuesFromSavedDefaults, setUserContextDefaults }\n"],
5
5
  "mappings": "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",
6
6
  "names": ["import_utils", "localsHelper", "DateRangeInputUtils", "GranularDateRangeInputUtils", "MultiSelectUtils", "DateInputUtils"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/dpr/utils/Personalisation/types.d.ts"],
3
+ "sources": ["../../../dpr/utils/Personalisation/types.d.ts"],
4
4
  "sourcesContent": ["import { Granularity, QuickFilters } from '../../components/_inputs/granular-date-range/types'\nimport { FiltersType } from '../../components/_filters/filtersTypeEnum'\nimport RelativeDateRange from '../../components/_inputs/date-range/types'\n\nexport interface defaultFilterValue {\n name: string\n value: string | DefaultDateFilterValue | DefaultGranularDateFilterValue\n type?: FiltersType\n}\n\nexport interface DefaultDateFilterValue {\n start: string\n end: string\n relative?: RelativeDateRange\n}\n\nexport interface DefaultGranularDateFilterValue {\n start: string\n end: string\n granularity: Granularity\n quickFilter: QuickFilters\n}\n\nexport interface defaultFilterConfig {\n reportId: string\n id: string\n values: defaultFilterValue[]\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
6
6
  "names": []
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/dpr/utils/SectionedDataTableBuilder/SectionedDataTableBuilder.ts"],
3
+ "sources": ["../../../dpr/utils/SectionedDataTableBuilder/SectionedDataTableBuilder.ts"],
4
4
  "sourcesContent": ["import Dict = NodeJS.Dict\nimport { components } from '../../types/api'\nimport { Cell, DataTable } from '../DataTableBuilder/types'\nimport type { SummaryTemplate, Template } from '../../types/Templates'\nimport DataTableBuilder from '../DataTableBuilder/DataTableBuilder'\nimport { distinct } from '../arrayUtils'\nimport SummaryDataTableBuilder from '../SummaryDataTableBuilder/SummaryDataTableBuilder'\nimport { SectionSortKey } from './types'\n\nclass SectionedDataTableBuilder extends DataTableBuilder {\n sections: Array<string>\n\n template: Template\n\n constructor(specification: components['schemas']['Specification']) {\n const { fields, sections, template } = specification\n super(fields)\n this.sections = sections\n this.template = template\n }\n\n /**\n * Creates the section heading strings\n *\n * @param {Dict<string>[]} data\n * @param {FieldDefinition[]} sectionFields\n * @return {*} {string[]} array of section headings\n */\n private createSectionHeadings(\n data: Dict<string>[],\n sectionFields: components['schemas']['FieldDefinition'][],\n ): string[] {\n return data\n .map(\n (rowData): SectionSortKey => ({\n description: this.mapSectionDescription(rowData),\n sortKey: this.getSortKey(rowData, sectionFields),\n }),\n )\n .sort(this.sortKeyComparison())\n .map((s) => s.description)\n .reduce(distinct, [])\n }\n\n /**\n * Initialise section heading arrays\n *\n * @private\n * @param {string[]} sectionDescriptions\n * @return {*}\n * @memberof SectionedDataTableBuilder\n */\n initSectionData(sectionDescriptions: string[]) {\n const sectionedData: Dict<Cell[][]> | Dict<Array<Dict<string>>> = {}\n sectionDescriptions.forEach((sectionDescription) => {\n sectionedData[sectionDescription] = []\n })\n return sectionedData\n }\n\n /**\n * Maps the rows to the correct section\n *\n * @private\n * @param {Array<Dict<string>>} data\n * @param {Dict<Cell[][]>} sectionedData\n * @return {*}\n * @memberof SectionedDataTableBuilder\n */\n private mapRowsToSection(data: Array<Dict<string>>, sectionedData: Dict<Cell[][]>) {\n return data.reduce((previousValue, rowData) => {\n const sectionDescription: string = this.mapSectionDescription(rowData)\n const mappedData = this.mapRow(rowData)\n const previousValueDescription = previousValue[sectionDescription]\n\n return {\n ...previousValue,\n ...(previousValueDescription && {\n [sectionDescription]: previousValueDescription.concat([mappedData]),\n }),\n }\n }, sectionedData)\n }\n\n /**\n * Maps the rows to the correct section\n *\n * @private\n * @param {Array<Dict<string>>} data\n * @param {Dict<Cell[][]>} sectionedData\n * @return {*}\n * @memberof SectionedDataTableBuilder\n */\n private mapDataToSection(data: Array<Dict<string>>, sectionedData: Dict<Array<Dict<string>>>) {\n return data.reduce((previousValue, rowData) => {\n const sectionDescription: string = this.mapSectionDescription(rowData)\n const previousValueDescription = previousValue[sectionDescription]\n const section = {\n ...previousValue,\n ...(previousValueDescription && {\n [sectionDescription]: previousValueDescription.concat([rowData]),\n }),\n }\n return section\n }, sectionedData)\n }\n\n /**\n * Gets the counts for rows in section\n *\n * @param {Dict<Cell[][]>} sectionedData\n * @param {string} sectionDescription\n * @return {*}\n * @memberof SectionedDataTableBuilder\n */\n getSectionCount(sectionedData: Dict<Cell[][]> | Dict<Dict<string>[]>, sectionDescription: string) {\n const count = sectionedData[sectionDescription] ? sectionedData[sectionDescription].length : 0\n const countDescription = `${count} result${count === 1 ? '' : 's'}`\n\n return {\n count,\n countDescription,\n }\n }\n\n /**\n * Creates the summaries and builds the table with summaries\n *\n * @private\n * @param {string} sectionDescription\n * @param {Cell[][]} mappedTableData\n * @param {Cell[]} header\n * @return {*}\n * @memberof SectionedDataTableBuilder\n */\n private mapSummariesAndCreateTable(sectionDescription: string, mappedTableData: Cell[][], header: Cell[]) {\n let tableContent: Cell[][] = []\n\n let mappedSectionHeaderSummary: Cell[][] = []\n let mappedHeaderSummary: Cell[][] = []\n let mappedFooterSummary: Cell[][] = []\n let mappedSectionFooterSummary: Cell[][] = []\n\n mappedSectionHeaderSummary = this.mapSectionSummaryTables(sectionDescription, 'section-header', this.columns.length)\n mappedHeaderSummary = this.mapSectionSummaryRows('table-header', sectionDescription)\n mappedFooterSummary = this.mapSectionSummaryRows('table-footer', sectionDescription)\n mappedSectionFooterSummary = this.mapSectionSummaryTables(sectionDescription, 'section-footer', this.columns.length)\n\n tableContent = mappedSectionHeaderSummary\n .concat(mappedTableData.length > 0 ? [header] : [])\n .concat(mappedHeaderSummary)\n .concat(mappedTableData)\n .concat(mappedFooterSummary)\n .concat(mappedSectionFooterSummary)\n\n return tableContent\n }\n\n /**\n * Creates the table data\n * - if summaries are present, includes the summaries data\n *\n * @private\n * @param {string[]} sectionDescriptions\n * @param {Dict<Cell[][]>} sectionedData\n * @param {Cell[]} header\n * @return {*}\n * @memberof SectionedDataTableBuilder\n */\n private createTableContent(sectionDescriptions: string[], sectionedData: Dict<Cell[][]>, header: Cell[]) {\n return sectionDescriptions.flatMap((sectionDescription, index) => {\n const { count, countDescription } = this.getSectionCount(sectionedData, sectionDescription)\n const mappedTableData = sectionedData[sectionDescription]\n\n let tableContent: Cell[][] = []\n if (mappedTableData) {\n if (Object.keys(this.reportSummaries).length) {\n tableContent = this.mapSummariesAndCreateTable(sectionDescription, mappedTableData, header)\n } else {\n tableContent = tableContent.concat(mappedTableData.length > 0 ? [header] : []).concat(mappedTableData)\n }\n }\n\n const sectionHeader = this.createSectionHeader(sectionDescription, index, count, countDescription)\n\n return [...sectionHeader, ...tableContent]\n })\n }\n\n createSectionHeader(sectionDescription: string, index: number, count?: number, countDescription?: string) {\n const header = []\n if (index !== 0) {\n header.push([\n {\n classes: 'dpr-section-header-spacer',\n colspan: this.columns.length,\n text: '',\n },\n ])\n }\n header.push([\n {\n classes: 'dpr-section-header',\n colspan: this.columns.length,\n html: `<h2 class=\"govuk-heading-m\">${sectionDescription}${\n count && count > 0 ? ` <span class='govuk-caption-m'>${countDescription}</span>` : ''\n }</h2>`,\n },\n ])\n header.push([\n {\n classes: 'dpr-section-header-spacer-bottom',\n colspan: this.columns.length,\n text: '',\n },\n ])\n return header\n }\n\n private mapSectionSummaryRows(template: SummaryTemplate, sectionDescription: string): Cell[][] {\n if (this.reportSummaries[template]) {\n return this.reportSummaries[template].flatMap((reportSummary) =>\n reportSummary.data\n .filter((rowData) => this.mapSectionDescription(rowData) === sectionDescription)\n .map((rowData) =>\n this.mapRow(\n rowData,\n `dpr-report-summary-cell dpr-report-summary-cell-${template}`,\n <components['schemas']['FieldDefinition'][]>reportSummary.fields,\n ),\n ),\n )\n }\n return []\n }\n\n private mapSectionSummaryTables(\n sectionDescription: string,\n summaryTemplate: SummaryTemplate,\n columnsLength: number,\n ): Cell[][] {\n const summaries = this.reportSummaries[summaryTemplate]\n if (summaries) {\n const htmlTables = summaries.map((summary) => {\n const data = summary.data.filter((row) => this.mapSectionDescription(row) === sectionDescription)\n\n if (data.length > 0) {\n const dataTable = new SummaryDataTableBuilder(summary, this.sections).buildTable(data)\n\n const htmlTable = this.convertDataTableToHtml(dataTable)\n\n return `<div class='dpr-summary-container'>${htmlTable}</div>`\n }\n return ''\n })\n\n const summaryContent = htmlTables.join('')\n if (summaryContent.length > 0) {\n return [\n [\n {\n classes: 'dpr-summary-cell',\n colspan: columnsLength,\n html: `<div class='dpr-summary-container-group dpr-summary-container-group-${summaryTemplate}'>${summaryContent}</div>`,\n },\n ],\n ]\n }\n }\n return []\n }\n\n mapSectionDescription(rowData: NodeJS.Dict<string>): string {\n const { sections } = this\n\n return this.mapNamesToFields(sections)\n .map((s) => `${s.display}: ${this.mapCellValue(s, rowData[s.name])}`)\n .join(', ')\n }\n\n mapSections(data: Array<Dict<string>>) {\n const sectionHeadings = this.initSectionedHeadings(data)\n let { sectionedData } = sectionHeadings\n\n // Maps data to sections\n if (this.template !== 'summary-section') {\n if (this.template === 'parent-child-section') {\n sectionedData = this.mapDataToSection(data, sectionedData as Dict<Dict<string>[]>)\n } else {\n sectionedData = this.mapRowsToSection(data, sectionedData as Dict<Cell[][]>)\n }\n }\n\n return {\n sectionDescriptions: sectionHeadings.sectionDescriptions,\n sectionedData,\n }\n }\n\n initSectionedHeadings(data: Array<Dict<string>>) {\n // Get the section definition data\n const sectionFields = this.mapNamesToFields(this.sections)\n // create the sectionHeadings\n const sectionDescriptions = this.createSectionHeadings(data, sectionFields)\n // init empty sections\n const sectionedData = this.initSectionData(sectionDescriptions)\n\n return {\n sectionDescriptions,\n sectionedData,\n }\n }\n\n /**\n * Creates the table rows.\n *\n * @private\n * @param {Array<Dict<string>>} data\n * @param {Cell[]} header\n * @return {*} {Cell[][]}\n * @memberof SectionedDataTableBuilder\n */\n private mapSectionedData(data: Array<Dict<string>>, header: Cell[]): Cell[][] {\n const { sectionDescriptions, sectionedData } = this.mapSections(data)\n // Create the table\n const tableContent = this.createTableContent(sectionDescriptions, sectionedData as Dict<Cell[][]>, header)\n\n return tableContent\n }\n\n override buildTable(data: Array<Dict<string>>): DataTable {\n return {\n head: null,\n rows: this.mapSectionedData(data, this.mapHeader(true, 'govuk-table__header')),\n rowCount: data.length,\n colCount: this.columns.length,\n }\n }\n}\n\nexport { SectionedDataTableBuilder }\nexport default SectionedDataTableBuilder\n"],
5
5
  "mappings": "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",
6
6
  "names": ["DataTableBuilder", "SummaryDataTableBuilder"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/dpr/utils/SectionedDataTableBuilder/types.d.ts"],
3
+ "sources": ["../../../dpr/utils/SectionedDataTableBuilder/types.d.ts"],
4
4
  "sourcesContent": ["import { SortKey } from '../DataTableBuilder/types'\n\nexport interface SectionSortKey extends SortKey {\n description: string\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
6
6
  "names": []
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/dpr/utils/SectionedFieldsTableBuilder/SectionedFieldsTableBuilder.ts"],
3
+ "sources": ["../../../dpr/utils/SectionedFieldsTableBuilder/SectionedFieldsTableBuilder.ts"],
4
4
  "sourcesContent": ["import Dict = NodeJS.Dict\nimport { components } from '../../types/api'\nimport { Cell, DataTable, FieldDefinition } from '../DataTableBuilder/types'\nimport type { Template } from '../../types/Templates'\nimport ParentChildDataTableBuilder from '../ParentChildDataTableBuilder/ParentChildDataTableBuilder'\n\nexport interface SectionedField {\n name: string\n fields?: string[]\n child?: string\n}\n\nclass SectionedFieldsDataTableBuilder extends ParentChildDataTableBuilder {\n // TODO: change this to use schema type if ever implemented in the backend\n sectionedFields: SectionedField[]\n\n declare template: Template\n\n declare childVariants: components['schemas']['ChildVariantDefinition'][]\n\n constructor(variant: components['schemas']['VariantDefinition']) {\n // TODO: removed the union if sectionedFields changed to use schema type\n const { sectionedFields, template } = variant.specification as components['schemas']['Specification'] & {\n sectionedFields: SectionedField[]\n }\n super(variant)\n\n this.sectionedFields = sectionedFields\n this.sections = this.sectionedFields.map((f) => f.name)\n this.template = template\n this.childVariants = this.variant.childVariants || []\n }\n\n getChildFields(childId: string): FieldDefinition[] {\n const childVariant = this.childVariants.find((child) => child.id === childId)\n let fields: FieldDefinition[] = []\n if (childVariant) {\n const { specification } = childVariant\n fields = specification ? specification.fields : fields\n }\n return fields\n }\n\n getJoinKey() {\n return this.childVariants[0].joinFields[0]\n }\n\n initSectionedData(data: Array<Dict<string>>) {\n return data.flatMap((row) => {\n const initialisedSectionsWithFields = this.sectionedFields.map((section) => {\n const sectionHeader = this.mapNamesToFields([section.name])[0]\n\n let fields: FieldDefinition[] = []\n const { child } = section\n\n if (section.fields) {\n fields = this.mapNamesToFields(section.fields)\n } else if (section.child) {\n fields = this.getChildFields(section.child)\n }\n\n return {\n header: sectionHeader,\n fields,\n child,\n }\n })\n\n return initialisedSectionsWithFields.map((section) => {\n if (section.child) {\n const childData = this.getChildData(section.child)\n const displayFields = section.fields.filter((f) => f.visible)\n const joinKey = this.getJoinKey()\n\n return {\n header: section.header.display,\n fields: childData\n ? childData.data\n .filter((cd) => cd[joinKey] === row[joinKey])\n .map((cd) => {\n return {\n heading: cd[displayFields[0]?.name] || 'Not found',\n data: cd[displayFields[1]?.name] || 'Not found',\n }\n })\n : [],\n }\n }\n return {\n header: section.header.display,\n fields: section.fields\n .filter((f) => f.visible)\n .map((f) => {\n return {\n heading: f.display,\n data: row[f.name],\n }\n }),\n }\n })\n })\n }\n\n getChildData(childId: string) {\n return this.childData.find((d) => d.id === childId)\n }\n\n createRows(data: Array<Dict<string>>): Cell[][] {\n const sectionedData = this.initSectionedData(data)\n\n const rows = sectionedData.flatMap((section, index) => {\n let sectionHeaderRow: Cell[][] = []\n if (section.header) {\n sectionHeaderRow = this.createSectionHeader(section.header, index)\n }\n\n const sectionRows = section.fields.map((field) => {\n return [\n {\n text: field.heading,\n classes: 'dpr-row-heading',\n },\n {\n text: field.data,\n classes: 'dpr-row-heading-data',\n },\n ]\n })\n\n return [...sectionHeaderRow, ...sectionRows]\n })\n\n return rows\n }\n\n override buildTable(data: Array<Dict<string>>): DataTable {\n return {\n head: [\n // { text: '', classes: 'dpr-row-section-header' },\n // { text: '', classes: 'dpr-row-section-header-value' },\n ],\n rows: this.createRows(data),\n rowCount: data.length,\n colCount: this.columns.length,\n }\n }\n}\n\nexport { SectionedFieldsDataTableBuilder }\nexport default SectionedFieldsDataTableBuilder\n"],
5
5
  "mappings": "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",
6
6
  "names": ["ParentChildDataTableBuilder"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/dpr/utils/SummaryDataTableBuilder/SummaryDataTableBuilder.ts"],
3
+ "sources": ["../../../dpr/utils/SummaryDataTableBuilder/SummaryDataTableBuilder.ts"],
4
4
  "sourcesContent": ["import { components } from '../../types/api'\nimport { AsyncSummary } from '../../types/UserReports'\nimport DataTableBuilder from '../DataTableBuilder/DataTableBuilder'\nimport { DataTable } from '../DataTableBuilder/types'\n\nclass SummaryDataTableBuilder extends DataTableBuilder {\n private summary: AsyncSummary\n\n constructor(summary: AsyncSummary, sections?: Array<string>) {\n const columns = summary.fields\n .filter((field) => !sections || !sections.includes(field.name))\n .map((field) => field.name)\n\n const fields = summary.fields.map((field) => ({\n ...field,\n calculated: false,\n sortable: false,\n defaultsort: false,\n mandatory: true,\n visible: true,\n }))\n\n super(<components['schemas']['FieldDefinition'][]>fields, true)\n\n this.summary = summary\n this.columns = columns\n }\n\n buildSummaryTable(): DataTable {\n return super.buildTable(this.summary.data)\n }\n}\n\nexport { SummaryDataTableBuilder }\nexport default SummaryDataTableBuilder\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,8BAA6B;AAG7B,MAAM,gCAAgC,wBAAAA,QAAiB;AAAA,EAC7C;AAAA,EAER,YAAY,SAAuB,UAA0B;AAC3D,UAAM,UAAU,QAAQ,OACrB,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,SAAS,MAAM,IAAI,CAAC,EAC7D,IAAI,CAAC,UAAU,MAAM,IAAI;AAE5B,UAAM,SAAS,QAAQ,OAAO,IAAI,CAAC,WAAW;AAAA,MAC5C,GAAG;AAAA,MACH,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,aAAa;AAAA,MACb,WAAW;AAAA,MACX,SAAS;AAAA,IACX,EAAE;AAEF,UAAkD,QAAQ,IAAI;AAE9D,SAAK,UAAU;AACf,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,oBAA+B;AAC7B,WAAO,MAAM,WAAW,KAAK,QAAQ,IAAI;AAAA,EAC3C;AACF;AAGA,IAAO,kCAAQ;",
6
6
  "names": ["DataTableBuilder"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/dpr/utils/UserStoreItemBuilder.ts"],
3
+ "sources": ["../../dpr/utils/UserStoreItemBuilder.ts"],
4
4
  "sourcesContent": ["import type { Request } from 'express'\nimport parseUrl from 'parseurl'\nimport {\n AsyncReportUrlData,\n LoadType,\n ReportType,\n RequestedReport,\n RequestFormData,\n RequestStatus,\n UserReportData,\n} from '../types/UserReports'\nimport Dict = NodeJS.Dict\nimport { ChildReportExecutionData, ExecutionData } from '../types/ExecutionData'\nimport { components } from '../types/api'\n\ninterface ReportData {\n type: ReportType\n reportId: string\n reportName: string\n description: string\n id: string\n name: string\n}\n\nclass UserStoreItemBuilder {\n userStoreItem: UserReportData\n\n requestFormData: RequestFormData | Record<string, never>\n\n constructor(reportData: ReportData, requestFormData?: RequestFormData) {\n this.requestFormData = requestFormData || {}\n this.userStoreItem = this.addReportData(reportData)\n }\n\n build = () => {\n return this.userStoreItem as RequestedReport\n }\n\n addReportData = ({ type, reportId, reportName, description, id, name }: ReportData) => {\n return {\n type: type as ReportType,\n reportId,\n reportName,\n description,\n id,\n name,\n timestamp: {},\n }\n }\n\n addExecutionData = (executionData: ExecutionData) => {\n this.userStoreItem = {\n ...(<UserReportData>this.userStoreItem),\n ...executionData,\n }\n return this\n }\n\n addChildExecutionData = (childExecutionData: Array<ChildReportExecutionData>) => {\n this.userStoreItem = {\n ...(<UserReportData>this.userStoreItem),\n childExecutionData,\n }\n return this\n }\n\n addFilters = (filterData?: Record<string, string>) => {\n const filtersQueryString = new URLSearchParams(filterData).toString()\n this.userStoreItem = {\n ...this.userStoreItem,\n ...{\n filters: {\n data: filterData,\n queryString: filtersQueryString,\n },\n },\n }\n return this\n }\n\n addSortData = (sortData?: Record<string, string>) => {\n const sortByQueryString = new URLSearchParams(sortData).toString()\n this.userStoreItem = {\n ...this.userStoreItem,\n ...{\n sortBy: {\n data: sortData,\n queryString: sortByQueryString,\n },\n },\n }\n return this\n }\n\n addRequestUrls = (req: Request) => {\n const { origin, pathname, search, href } = this.requestFormData\n const { executionId, dataProductDefinitionsPath, dpdPathFromQuery } = this.userStoreItem\n\n // Polling path\n let pollingPath = req.baseUrl.replace('/filters', `/${executionId}/status`)\n if (dpdPathFromQuery) {\n pollingPath = `${pollingPath}?dataProductDefinitionsPath=${dataProductDefinitionsPath}`\n }\n const pollingFullUrl = `${origin}${pollingPath}`\n this.userStoreItem = {\n ...this.userStoreItem,\n ...{\n url: {\n origin,\n request: {\n fullUrl: href,\n pathname,\n search,\n },\n polling: {\n fullUrl: pollingFullUrl,\n pathname: pollingPath,\n },\n },\n },\n }\n\n return this\n }\n\n addAsyncUrls = (url?: AsyncReportUrlData) => {\n if (url) {\n this.userStoreItem = {\n ...this.userStoreItem,\n ...{\n url,\n },\n }\n }\n\n return this\n }\n\n addReportUrls = (req: Request) => {\n const origin = req.get('host')\n const fullUrl = `${req.protocol}://${req.get('host')}${req.originalUrl}`\n const urlData = parseUrl(req)\n\n this.userStoreItem = {\n ...this.userStoreItem,\n ...{\n url: {\n origin: origin || this.userStoreItem.url?.origin || '',\n ...(this.userStoreItem.url?.request && { request: this.userStoreItem.url.request }),\n ...(this.userStoreItem.url?.polling && { polling: this.userStoreItem.url.polling }),\n report: {\n ...(this.userStoreItem.url?.report && this.userStoreItem.url.report),\n fullUrl,\n ...(urlData && urlData.search && { search: urlData.search }),\n },\n },\n },\n }\n\n return this\n }\n\n addLoadType = (loadType: LoadType) => {\n this.userStoreItem = {\n ...this.userStoreItem,\n loadType,\n }\n\n return this\n }\n\n addQuery = (queryData?: { query: Dict<string | string[]>; querySummary: Array<Dict<string>> }) => {\n this.userStoreItem = {\n ...this.userStoreItem,\n ...(queryData && {\n query: {\n data: queryData.query,\n summary: queryData.querySummary,\n },\n }),\n }\n return this\n }\n\n addInteractiveQuery = (queryData?: { query: Dict<string | string[]>; querySummary: Array<Dict<string>> }) => {\n if (queryData) {\n this.userStoreItem = {\n ...this.userStoreItem,\n ...{\n interactiveQuery: {\n data: queryData.query,\n summary: queryData.querySummary,\n },\n },\n }\n }\n return this\n }\n\n addStatus = (status: RequestStatus) => {\n this.userStoreItem = {\n ...this.userStoreItem,\n status,\n }\n return this\n }\n\n addMetrics = (metrics: components['schemas']['DashboardSectionDefinition'][]) => {\n this.userStoreItem = {\n ...this.userStoreItem,\n metrics: metrics.filter((metric) => metric.display).map((metric) => ({ name: metric.display || '' })),\n }\n return this\n }\n\n addTimestamp = () => {\n const { status } = this.userStoreItem\n const ts = new Date()\n switch (status) {\n case RequestStatus.FAILED:\n this.userStoreItem.timestamp.failed = ts\n break\n case RequestStatus.EXPIRED:\n this.userStoreItem.timestamp.expired = ts\n break\n case RequestStatus.ABORTED:\n this.userStoreItem.timestamp.aborted = ts\n break\n case RequestStatus.FINISHED:\n this.userStoreItem.timestamp.completed = ts\n break\n case RequestStatus.SUBMITTED:\n this.userStoreItem.timestamp.requested = ts\n break\n case RequestStatus.STARTED:\n case RequestStatus.PICKED:\n break\n default:\n this.userStoreItem.timestamp.lastViewed = ts\n break\n }\n return this\n }\n\n addDefinitionsPath = (definitionsPath: string, dpdPathFromQuery: boolean) => {\n if (definitionsPath) {\n this.userStoreItem = {\n ...this.userStoreItem,\n dataProductDefinitionsPath: definitionsPath,\n dpdPathFromQuery,\n }\n }\n return this\n }\n}\n\nexport { UserStoreItemBuilder }\nexport default UserStoreItemBuilder\n"],
5
5
  "mappings": "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",
6
6
  "names": ["parseUrl"]