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

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 (348) 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/bookmark-toggle/clientClass.js +111 -0
  169. package/dpr/components/bookmark-toggle/clientClass.js.map +7 -0
  170. package/dpr/components/bookmark-toggle/{clientClass.mjs → clientClass.ts} +2 -1
  171. package/dpr/components/card-group/clientClass.js +53 -0
  172. package/dpr/components/card-group/clientClass.js.map +7 -0
  173. package/dpr/components/card-group/{clientClass.mjs → clientClass.ts} +2 -1
  174. package/dpr/components/card-group/utils.js.map +1 -1
  175. package/dpr/components/report-list/defaultTokenProvider.js.map +1 -1
  176. package/dpr/components/report-list/types.d.js.map +1 -1
  177. package/dpr/components/report-list/utils.js.map +1 -1
  178. package/dpr/components/show-more/clientClass.js +63 -0
  179. package/dpr/components/show-more/clientClass.js.map +7 -0
  180. package/dpr/components/show-more/{clientClass.mjs → clientClass.ts} +2 -1
  181. package/dpr/components/show-more/utils.js.map +1 -1
  182. package/dpr/components/user-reports/bookmarks/utils.js.map +1 -1
  183. package/dpr/components/user-reports/requested/clientClass.js +132 -0
  184. package/dpr/components/user-reports/requested/clientClass.js.map +7 -0
  185. package/dpr/components/user-reports/requested/{clientClass.mjs → clientClass.ts} +2 -1
  186. package/dpr/components/user-reports/requested/utils.js.map +1 -1
  187. package/dpr/components/user-reports/types.d.js.map +1 -1
  188. package/dpr/components/user-reports/utils.js.map +1 -1
  189. package/dpr/components/user-reports/viewed/clientClass.js +102 -0
  190. package/dpr/components/user-reports/viewed/clientClass.js.map +7 -0
  191. package/dpr/components/user-reports/viewed/{clientClass.mjs → clientClass.ts} +2 -1
  192. package/dpr/components/user-reports/viewed/utils.js.map +1 -1
  193. package/dpr/data/agentConfig.js.map +1 -1
  194. package/dpr/data/dashboardClient.js.map +1 -1
  195. package/dpr/data/dprReportingClient.js.map +1 -1
  196. package/dpr/data/missingReportClient.js.map +1 -1
  197. package/dpr/data/productCollectionClient.js.map +1 -1
  198. package/dpr/data/reportDataStore.js.map +1 -1
  199. package/dpr/data/reportingClient.js.map +1 -1
  200. package/dpr/data/restClient.js.map +1 -1
  201. package/dpr/data/types.d.js.map +1 -1
  202. package/dpr/middleware/reportAuthoriser.js.map +1 -1
  203. package/dpr/middleware/setUpDprResources.js.map +1 -1
  204. package/dpr/middleware/setUpNestedRoute.js.map +1 -1
  205. package/dpr/routes/index.js.map +1 -1
  206. package/dpr/routes/journeys/api-failures.cy.js.map +1 -1
  207. package/dpr/routes/journeys/download-report/controller.js.map +1 -1
  208. package/dpr/routes/journeys/download-report/request-download/form/controller.js.map +1 -1
  209. package/dpr/routes/journeys/download-report/request-download/form/routes.js.map +1 -1
  210. package/dpr/routes/journeys/download-report/request-download/form/submitted/controller.js.map +1 -1
  211. package/dpr/routes/journeys/download-report/request-download/form/submitted/routes.js.map +1 -1
  212. package/dpr/routes/journeys/download-report/request-download/form/submitted/tests.cy.js.map +1 -1
  213. package/dpr/routes/journeys/download-report/request-download/form/tests.cy.js.map +1 -1
  214. package/dpr/routes/journeys/download-report/request-download/routes.js.map +1 -1
  215. package/dpr/routes/journeys/download-report/request-download/service.js.map +1 -1
  216. package/dpr/routes/journeys/download-report/routes.js.map +1 -1
  217. package/dpr/routes/journeys/download-report/tests.cy.js.map +1 -1
  218. package/dpr/routes/journeys/download-report/utils.js.map +1 -1
  219. package/dpr/routes/journeys/my-reports/bookmarks/controller.js.map +1 -1
  220. package/dpr/routes/journeys/my-reports/bookmarks/list/controller.js.map +1 -1
  221. package/dpr/routes/journeys/my-reports/bookmarks/list/routes.js.map +1 -1
  222. package/dpr/routes/journeys/my-reports/bookmarks/list/tests.cy.js.map +1 -1
  223. package/dpr/routes/journeys/my-reports/bookmarks/routes.js.map +1 -1
  224. package/dpr/routes/journeys/my-reports/bookmarks/service.js.map +1 -1
  225. package/dpr/routes/journeys/my-reports/bookmarks/tests.cy.js.map +1 -1
  226. package/dpr/routes/journeys/my-reports/bookmarks/utils.js.map +1 -1
  227. package/dpr/routes/journeys/my-reports/recently-viewed/controller.js.map +1 -1
  228. package/dpr/routes/journeys/my-reports/recently-viewed/list/controller.js.map +1 -1
  229. package/dpr/routes/journeys/my-reports/recently-viewed/list/routes.js.map +1 -1
  230. package/dpr/routes/journeys/my-reports/recently-viewed/list/tests.cy.js.map +1 -1
  231. package/dpr/routes/journeys/my-reports/recently-viewed/routes.js.map +1 -1
  232. package/dpr/routes/journeys/my-reports/recently-viewed/service.js.map +1 -1
  233. package/dpr/routes/journeys/my-reports/requested-reports/controller.js.map +1 -1
  234. package/dpr/routes/journeys/my-reports/requested-reports/list/controller.js.map +1 -1
  235. package/dpr/routes/journeys/my-reports/requested-reports/list/routes.js.map +1 -1
  236. package/dpr/routes/journeys/my-reports/requested-reports/list/tests.cy.js.map +1 -1
  237. package/dpr/routes/journeys/my-reports/requested-reports/routes.js.map +1 -1
  238. package/dpr/routes/journeys/my-reports/requested-reports/service.js.map +1 -1
  239. package/dpr/routes/journeys/my-reports/routes.js.map +1 -1
  240. package/dpr/routes/journeys/product-collection/routes.js.map +1 -1
  241. package/dpr/routes/journeys/product-collection/selected/controller.js.map +1 -1
  242. package/dpr/routes/journeys/product-collection/selected/routes.js.map +1 -1
  243. package/dpr/routes/journeys/product-collection/selected/tests.cy.js.map +1 -1
  244. package/dpr/routes/journeys/product-collection/selected/validation.js.map +1 -1
  245. package/dpr/routes/journeys/request-missing-report/form/controller.js.map +1 -1
  246. package/dpr/routes/journeys/request-missing-report/form/routes.js.map +1 -1
  247. package/dpr/routes/journeys/request-missing-report/form/tests.cy.js.map +1 -1
  248. package/dpr/routes/journeys/request-missing-report/form/validation.js.map +1 -1
  249. package/dpr/routes/journeys/request-missing-report/routes.js.map +1 -1
  250. package/dpr/routes/journeys/request-missing-report/submitted/controller.js.map +1 -1
  251. package/dpr/routes/journeys/request-missing-report/submitted/routes.js.map +1 -1
  252. package/dpr/routes/journeys/request-missing-report/submitted/tests.cy.js.map +1 -1
  253. package/dpr/routes/journeys/request-missing-report/tests.cy.js.map +1 -1
  254. package/dpr/routes/journeys/request-report/controller.js.map +1 -1
  255. package/dpr/routes/journeys/request-report/filters/controller.js.map +1 -1
  256. package/dpr/routes/journeys/request-report/filters/routes.js.map +1 -1
  257. package/dpr/routes/journeys/request-report/filters/tests.cy.js.map +1 -1
  258. package/dpr/routes/journeys/request-report/filters/utils.js.map +1 -1
  259. package/dpr/routes/journeys/request-report/routes.js.map +1 -1
  260. package/dpr/routes/journeys/request-report/status/controller.js.map +1 -1
  261. package/dpr/routes/journeys/request-report/status/routes.js.map +1 -1
  262. package/dpr/routes/journeys/request-report/status/tests.cy.js.map +1 -1
  263. package/dpr/routes/journeys/request-report/status/utils.js.map +1 -1
  264. package/dpr/routes/journeys/request-report/tests.cy.js.map +1 -1
  265. package/dpr/routes/journeys/routes.js.map +1 -1
  266. package/dpr/routes/journeys/view-report/async/controller.js.map +1 -1
  267. package/dpr/routes/journeys/view-report/async/dashboard/controller.js.map +1 -1
  268. package/dpr/routes/journeys/view-report/async/dashboard/routes.js.map +1 -1
  269. package/dpr/routes/journeys/view-report/async/dashboard/tests.cy.js.map +1 -1
  270. package/dpr/routes/journeys/view-report/async/dashboard/utils.js.map +1 -1
  271. package/dpr/routes/journeys/view-report/async/report/controller.js.map +1 -1
  272. package/dpr/routes/journeys/view-report/async/report/report-variants.cy.js.map +1 -1
  273. package/dpr/routes/journeys/view-report/async/report/routes.js.map +1 -1
  274. package/dpr/routes/journeys/view-report/async/report/tests.cy.js.map +1 -1
  275. package/dpr/routes/journeys/view-report/async/report/types.js.map +1 -1
  276. package/dpr/routes/journeys/view-report/async/report/utils.js.map +1 -1
  277. package/dpr/routes/journeys/view-report/async/routes.js.map +1 -1
  278. package/dpr/routes/journeys/view-report/controller.js.map +2 -2
  279. package/dpr/routes/journeys/view-report/controller.ts +1 -1
  280. package/dpr/routes/journeys/view-report/routes.js.map +1 -1
  281. package/dpr/routes/journeys/view-report/sync/dashboard/controller.js.map +1 -1
  282. package/dpr/routes/journeys/view-report/sync/dashboard/routes.js.map +1 -1
  283. package/dpr/routes/journeys/view-report/sync/dashboard/utils.js.map +1 -1
  284. package/dpr/routes/journeys/view-report/sync/load-report/controller.js.map +1 -1
  285. package/dpr/routes/journeys/view-report/sync/load-report/routes.js.map +1 -1
  286. package/dpr/routes/journeys/view-report/sync/report/controller.js.map +1 -1
  287. package/dpr/routes/journeys/view-report/sync/report/routes.js.map +1 -1
  288. package/dpr/routes/journeys/view-report/sync/report/utils.js.map +1 -1
  289. package/dpr/routes/journeys/view-report/sync/routes.js.map +1 -1
  290. package/dpr/routes/journeys/view-report/sync/tests.cy.js.map +1 -1
  291. package/dpr/routes/journeys/view-report/utils.js.map +1 -1
  292. package/dpr/services/dashboardService.js.map +1 -1
  293. package/dpr/services/defaultFilterValuesService.js.map +1 -1
  294. package/dpr/services/featureFlagService.js.map +1 -1
  295. package/dpr/services/featureFlags.cy.js.map +1 -1
  296. package/dpr/services/index.js.map +1 -1
  297. package/dpr/services/missingReport/missingReportService.js.map +1 -1
  298. package/dpr/services/productCollection/productCollectionService.js.map +1 -1
  299. package/dpr/services/productCollection/productCollectionStoreService.js.map +1 -1
  300. package/dpr/services/reportStoreService.js.map +1 -1
  301. package/dpr/services/reportingService.js.map +1 -1
  302. package/dpr/setUpNunjucksFilters.js.map +1 -1
  303. package/dpr/types/AsyncReportUtils.js.map +1 -1
  304. package/dpr/types/Bookmark.js.map +1 -1
  305. package/dpr/types/Charts.js.map +1 -1
  306. package/dpr/types/Download.js.map +1 -1
  307. package/dpr/types/DprConfig.js.map +1 -1
  308. package/dpr/types/DprUser.js.map +1 -1
  309. package/dpr/types/EmbeddedReportUtils.js.map +1 -1
  310. package/dpr/types/ExecutionData.d.js.map +1 -1
  311. package/dpr/types/Metrics.js.map +1 -1
  312. package/dpr/types/ReportQuery.js.map +1 -1
  313. package/dpr/types/ReportStore.js.map +1 -1
  314. package/dpr/types/Services.d.js.map +1 -1
  315. package/dpr/types/Templates.d.js.map +1 -1
  316. package/dpr/types/UserReports.js.map +1 -1
  317. package/dpr/types/api.d.js.map +1 -1
  318. package/dpr/types/index.d.js.map +1 -1
  319. package/dpr/utils/CollatedSummaryBuilder/CollatedSummaryBuilder.js.map +1 -1
  320. package/dpr/utils/CreateDprServices.js.map +1 -1
  321. package/dpr/utils/DataTableBuilder/DataTableBuilder.js.map +1 -1
  322. package/dpr/utils/DataTableBuilder/types.d.js.map +1 -1
  323. package/dpr/utils/DateMapper/DateMapper.js.map +1 -1
  324. package/dpr/utils/DateMapper/types.d.js.map +1 -1
  325. package/dpr/utils/ErrorHandler.js.map +1 -1
  326. package/dpr/utils/ParentChildDataTableBuilder/ParentChildDataTableBuilder.js.map +1 -1
  327. package/dpr/utils/ParentChildDataTableBuilder/types.d.js.map +1 -1
  328. package/dpr/utils/Personalisation/personalisationUtils.js.map +1 -1
  329. package/dpr/utils/Personalisation/types.d.js.map +1 -1
  330. package/dpr/utils/SectionedDataTableBuilder/SectionedDataTableBuilder.js.map +1 -1
  331. package/dpr/utils/SectionedDataTableBuilder/types.d.js.map +1 -1
  332. package/dpr/utils/SectionedFieldsTableBuilder/SectionedFieldsTableBuilder.js.map +1 -1
  333. package/dpr/utils/SummaryDataTableBuilder/SummaryDataTableBuilder.js.map +1 -1
  334. package/dpr/utils/UserStoreItemBuilder.js.map +1 -1
  335. package/dpr/utils/arrayUtils.js.map +1 -1
  336. package/dpr/utils/datasetHelper.js.map +1 -1
  337. package/dpr/utils/definitionUtils.js.map +1 -1
  338. package/dpr/utils/index.js.map +1 -1
  339. package/dpr/utils/indexedAccesHelper.js.map +1 -1
  340. package/dpr/utils/localsHelper.js.map +1 -1
  341. package/dpr/utils/logger.js.map +1 -1
  342. package/dpr/utils/reportListsHelper.js.map +1 -1
  343. package/dpr/utils/reportStoreHelper.js.map +1 -1
  344. package/dpr/utils/requestStatusHelper.js.map +1 -1
  345. package/dpr/utils/sanitisedError.js.map +1 -1
  346. package/dpr/utils/urlHelper.js.map +1 -1
  347. package/dpr/validation/validate.js.map +1 -1
  348. package/package.json +11 -6
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../../../src/dpr/routes/journeys/view-report/async/report/tests.cy.ts"],
3
+ "sources": ["../../../../../../dpr/routes/journeys/view-report/async/report/tests.cy.ts"],
4
4
  "sourcesContent": ["import {\n checkSelectedFilterValues,\n requestReport,\n executeReportStubs,\n} from '../../../../../../../cypress-tests/cypressUtils'\nimport DateMapper from '../../../../../utils/DateMapper/DateMapper'\n\ncontext('Viewing a report', () => {\n const path = '/embedded/platform/'\n let viewReportUrl: string\n let tableId: string\n\n describe('List report page', () => {\n before(() => {\n executeReportStubs()\n cy.task('stubDefinitionRequestExamplesSuccess')\n cy.task('stubRequestSuccessResult10')\n cy.task('stubRequestSuccessResult20')\n cy.task('stubRequestSuccessResult100')\n\n // Request and run a report so we can go back to it for each test\n requestReport({ name: 'Successful Report', description: 'this will succeed', path })\n cy.url().then((url) => {\n viewReportUrl = url\n const urlArr = url.split('/')\n tableId = urlArr[urlArr.length - 2]\n })\n })\n\n beforeEach(() => {\n cy.visit(viewReportUrl)\n })\n\n describe('Report details', () => {\n it('should show the report details', () => {\n cy.findAllByRole('group').contains('Report details').should('be.visible').click()\n\n cy.findAllByRole('group')\n .contains('Report details')\n .parent()\n .parent()\n .within(() => {\n cy.findAllByRole('row').each((row, index) => {\n cy.wrap(row).within(() => {\n switch (index) {\n case 0:\n cy.findAllByRole('cell', { name: 'Name:' }).should('exist')\n cy.findAllByRole('cell', { name: 'Successful Report' }).should('exist')\n break\n case 1:\n cy.findAllByRole('cell', { name: 'Product:' }).should('exist')\n cy.findAllByRole('cell', { name: 'Successful Report' }).should('exist')\n break\n case 2:\n cy.findAllByRole('cell', { name: 'Description:' }).should('exist')\n cy.findAllByRole('cell', { name: 'this will succeed' }).should('exist')\n break\n case 3:\n cy.findAllByRole('cell', { name: 'Classification:' }).should('exist')\n cy.findAllByRole('cell', { name: 'OFFICIAL' }).should('exist')\n break\n case 4:\n cy.findAllByRole('cell', { name: 'Requested at:' }).should('exist')\n cy.findAllByRole('cell', { name: /\\d{1,2}\\/\\d{1,2}\\/\\d{2,4}/ }).should('exist')\n break\n case 5:\n cy.findAllByRole('cell', { name: 'Applied Filters:' }).should('exist')\n cy.findAllByRole('listitem').each((item, i) => {\n switch (i) {\n case 0:\n cy.wrap(item).contains('Field 1: value1.2')\n break\n case 1:\n cy.wrap(item).contains('Field 3 start: 01/02/2003')\n break\n case 2:\n cy.wrap(item).contains('Field 3 end: 04/05/2006')\n break\n case 3:\n cy.wrap(item).contains('Field 7: 01/02/2005')\n break\n case 4:\n cy.wrap(item).contains('Field 8: value8.2,value8.3')\n break\n case 5:\n cy.wrap(item).contains('Sort column: Field 1')\n break\n case 6:\n cy.wrap(item).contains('Sort direction: Descending')\n break\n default:\n break\n }\n })\n break\n default:\n break\n }\n })\n })\n })\n })\n })\n\n describe('Actions', () => {\n it('should show the actions and go to the filters page when refresh action is clicked', () => {\n cy.findByLabelText('Refresh report').should('be.visible')\n cy.findByLabelText(/download/).should('be.visible')\n cy.findByLabelText(/Copy report link/).should('be.visible')\n cy.findByRole('button', { name: /Add bookmark/ }).should('be.visible')\n\n cy.findByLabelText('Refresh report').should('be.visible').click()\n cy.url().should(\n 'match',\n /.*\\/embedded\\/platform\\/dpr\\/request-report\\/report\\/request-examples\\/request-example-success\\/filters/i,\n )\n\n cy.location().should((location) => {\n expect(location.search).to.contain(`filters.field1=value1.2`)\n expect(location.search).to.contain(`filters.field3.start=2003-02-01`)\n expect(location.search).to.contain(`filters.field3.end=2006-05-04`)\n expect(location.search).to.contain(`filters.field7=2005-02-01`)\n expect(location.search).to.contain(`filters.field8=value8.2&filters.field8=value8.3`)\n })\n })\n })\n\n describe('Column interactions', () => {\n const expectInitialisedColumns = () => {\n cy.findByRole('checkbox', { name: 'Field 1' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Field 2' }).should('be.checked').should('be.disabled')\n cy.findByRole('checkbox', { name: 'Field 3' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Field 4' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 5' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 6' }).should('be.checked').should('be.disabled')\n cy.findByRole('checkbox', { name: 'Field 7' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Field 8' }).should('not.be.checked')\n\n cy.location().should((location) => {\n expect(location.search).to.contain(`columns=field1`)\n expect(location.search).to.contain(`columns=field2`)\n expect(location.search).to.contain(`columns=field3`)\n expect(location.search).not.to.contain(`columns=field4`)\n expect(location.search).not.to.contain(`columns=field5`)\n expect(location.search).to.contain(`columns=field6`)\n expect(location.search).to.contain(`columns=field7`)\n expect(location.search).not.to.contain(`columns=field8`)\n })\n\n cy.findByLabelText(/Successful Report/).within(() => {\n cy.findAllByRole('rowgroup')\n .eq(0)\n .within(() => {\n cy.findAllByRole('row')\n .eq(1)\n .within(() => {\n cy.findAllByRole('columnheader').should('have.length', 5)\n })\n })\n })\n }\n\n const expectUpdatedColumns = () => {\n cy.findByRole('checkbox', { name: 'Field 1' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 2' }).should('be.checked').should('be.disabled')\n cy.findByRole('checkbox', { name: 'Field 3' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 4' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 5' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Field 6' }).should('be.checked').should('be.disabled')\n cy.findByRole('checkbox', { name: 'Field 7' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 8' }).should('be.checked')\n\n cy.location().should((location) => {\n expect(location.search).not.to.contain(`columns=field1`)\n expect(location.search).to.contain(`columns=field2`)\n expect(location.search).not.to.contain(`columns=field3`)\n expect(location.search).not.to.contain(`columns=field4`)\n expect(location.search).to.contain(`columns=field5`)\n expect(location.search).to.contain(`columns=field6`)\n expect(location.search).not.to.contain(`columns=field7`)\n expect(location.search).to.contain(`columns=field8`)\n })\n\n cy.findByLabelText(/Successful Report/).within(() => {\n cy.findAllByRole('rowgroup')\n .eq(0)\n .within(() => {\n cy.findAllByRole('row')\n .eq(1)\n .within(() => {\n cy.findAllByRole('columnheader').should('have.length', 4)\n })\n })\n })\n }\n\n const setColumnValues = () => {\n cy.findByRole('checkbox', { name: 'Field 1' }).uncheck()\n cy.findByRole('checkbox', { name: 'Field 3' }).uncheck()\n cy.findByRole('checkbox', { name: 'Field 5' }).check()\n cy.findByRole('checkbox', { name: 'Field 7' }).uncheck()\n cy.findByRole('checkbox', { name: 'Field 8' }).check()\n }\n\n it('should initialise the column content correctly', () => {\n cy.findAllByRole('group')\n .contains(/Show columns/)\n .should('be.visible')\n .click()\n expectInitialisedColumns()\n cy.findAllByRole('group').contains('Show columns (5 of 8 shown)')\n cy.findByLabelText(/Successful Report/).within(() => {\n cy.findAllByRole('rowgroup')\n .eq(0)\n .within(() => {\n cy.findAllByRole('columnheader').each((head, index) => {\n switch (index) {\n case 0:\n cy.wrap(head).contains('Field 1')\n break\n case 1:\n cy.wrap(head).contains('Field 2')\n break\n case 2:\n cy.wrap(head).contains('Field 3')\n break\n case 3:\n cy.wrap(head).contains('Field 6')\n break\n case 4:\n cy.wrap(head).contains('Field 7')\n break\n default:\n break\n }\n })\n })\n })\n })\n\n it('should apply the columns', () => {\n cy.findAllByRole('group')\n .contains(/Show columns/)\n .click()\n\n setColumnValues()\n\n cy.findByRole('button', { name: 'Apply columns' }).click()\n\n expectUpdatedColumns()\n\n cy.findByLabelText(/Successful Report/).within(() => {\n cy.findAllByRole('rowgroup')\n .eq(0)\n .within(() => {\n cy.findAllByRole('columnheader').each((head, index) => {\n switch (index) {\n case 0:\n cy.wrap(head).contains('Field 2')\n break\n case 1:\n cy.wrap(head).contains('Field 5')\n break\n case 2:\n cy.wrap(head).contains('Field 6')\n break\n case 3:\n cy.wrap(head).contains('Field 8')\n break\n default:\n break\n }\n })\n })\n })\n })\n\n it('should reset the columns to their DPD defaults', () => {\n cy.findAllByRole('group')\n .contains(/Show columns/)\n .click()\n\n setColumnValues()\n cy.findByRole('button', { name: 'Apply columns' }).click()\n expectUpdatedColumns()\n\n cy.findAllByRole('group')\n .contains(/Show columns/)\n .click()\n\n cy.findByRole('link', { name: 'Reset columns' }).click()\n\n expectInitialisedColumns()\n })\n\n it('should apply the columns from the URL', () => {\n cy.visit(\n `/embedded/platform/dpr/view-report/async/report/request-examples/request-example-success/${tableId}/report?columns=field1&columns=field5&columns=field8`,\n )\n\n cy.findByRole('checkbox', { name: 'Field 1' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Field 2' }).should('be.checked').should('be.disabled')\n cy.findByRole('checkbox', { name: 'Field 3' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 4' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 5' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Field 6' }).should('be.checked').should('be.disabled')\n cy.findByRole('checkbox', { name: 'Field 7' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 8' }).should('be.checked')\n\n cy.findByLabelText(/Successful Report/).within(() => {\n cy.findAllByRole('rowgroup')\n .eq(0)\n .within(() => {\n cy.findAllByRole('columnheader').each((head, index) => {\n switch (index) {\n case 0:\n cy.wrap(head).contains('Field 1')\n break\n case 1:\n cy.wrap(head).contains('Field 2')\n break\n case 2:\n cy.wrap(head).contains('Field 5')\n break\n case 3:\n cy.wrap(head).contains('Field 6')\n break\n case 4:\n cy.wrap(head).contains('Field 8')\n break\n default:\n break\n }\n })\n })\n })\n })\n\n it('should only apply mandatory columms', () => {\n cy.findAllByRole('group')\n .contains(/Show columns/)\n .click()\n\n cy.findByRole('checkbox', { name: 'Field 1' }).uncheck()\n cy.findByRole('checkbox', { name: 'Field 3' }).uncheck()\n cy.findByRole('checkbox', { name: 'Field 7' }).uncheck()\n\n cy.findByRole('button', { name: 'Apply columns' }).click()\n\n cy.findByRole('checkbox', { name: 'Field 1' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 2' }).should('be.checked').should('be.disabled')\n cy.findByRole('checkbox', { name: 'Field 3' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 4' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 5' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 6' }).should('be.checked').should('be.disabled')\n cy.findByRole('checkbox', { name: 'Field 7' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 8' }).should('not.be.checked')\n\n cy.location().should((location) => {\n expect(location.search).not.to.contain(`columns=field1`)\n expect(location.search).to.contain(`columns=field2`)\n expect(location.search).not.to.contain(`columns=field3`)\n expect(location.search).not.to.contain(`columns=field4`)\n expect(location.search).not.to.contain(`columns=field5`)\n expect(location.search).to.contain(`columns=field6`)\n expect(location.search).not.to.contain(`columns=field7`)\n expect(location.search).not.to.contain(`columns=field8`)\n })\n\n cy.findByLabelText(/Successful Report/).within(() => {\n cy.findAllByRole('rowgroup')\n .eq(0)\n .within(() => {\n cy.findAllByRole('row')\n .eq(1)\n .within(() => {\n cy.findAllByRole('columnheader').should('have.length', 2)\n })\n })\n })\n })\n })\n\n describe('Paging interaction', () => {\n it('should show the table totals', () => {\n cy.findAllByRole('paragraph')\n .contains(/Showing \\d{1,4} to \\d{1,4} of \\d{1,4} results/)\n .should('exist')\n cy.findByLabelText(/Successful Report/).within(() => {\n cy.findAllByRole('rowgroup')\n .eq(1)\n .within(() => {\n cy.findAllByRole('row').should('have.length', 20)\n })\n })\n })\n\n it('should change the page size', () => {\n cy.get('#page-size-select').select('10')\n cy.findAllByRole('paragraph')\n .contains(/Showing 1 to 10 of 100 results/)\n .should('exist')\n cy.findByLabelText(/Successful Report/).within(() => {\n cy.findAllByRole('rowgroup')\n .eq(1)\n .within(() => {\n cy.findAllByRole('row').should('have.length', 10)\n })\n })\n })\n\n it('should change the page size via the URL', () => {\n cy.visit(\n `/embedded/platform/dpr/view-report/async/report/request-examples/request-example-success/${tableId}/report?pageSize=100`,\n )\n cy.findAllByRole('paragraph')\n .contains(/100 total results/)\n .should('exist')\n cy.findByLabelText(/Successful Report/).within(() => {\n cy.findAllByRole('rowgroup')\n .eq(1)\n .within(() => {\n cy.findAllByRole('row').should('have.length', 100)\n })\n })\n })\n\n it('should change the page', () => {\n cy.findByLabelText('Page 5').click()\n cy.location().should((location) => {\n expect(location.search).to.contain(`selectedPage=5`)\n })\n })\n\n it('should change the page via the URL', () => {\n cy.visit(\n `/embedded/platform/dpr/view-report/async/report/request-examples/request-example-success/${tableId}/report?selectedPage=3`,\n )\n cy.findByRole('link', { current: 'page' }).contains('3')\n })\n })\n })\n\n describe('Interactive report', () => {\n const applyFilters = () => {\n cy.findByRole('button', { name: 'Apply filters' }).click()\n }\n\n const showFilters = () => {\n cy.findAllByRole('group')\n .contains(/Show filters/)\n .click()\n }\n\n before(() => {\n executeReportStubs()\n cy.task('stubDefinitionFeatureTestingInteractive')\n cy.task('stubAsyncRequestSuccessReportTablesCount')\n cy.task('stubRequestSuccessResult20')\n cy.task('stubRequestSuccessResult100')\n })\n\n describe('Apply filters', () => {\n before(() => {\n requestReport({ name: 'Interactive Report', description: 'this is an interactive report', path })\n cy.url().then((url) => {\n viewReportUrl = url\n })\n })\n\n beforeEach(() => {\n cy.visit(viewReportUrl)\n })\n\n const removeAllFilters = () => {\n for (let index = 0; index < 4; index += 1) {\n cy.findByLabelText('Selected filters').within(() => {\n cy.findAllByRole('link').first().click()\n })\n }\n }\n\n describe('Date range', () => {\n it('should apply the date range', () => {\n cy.findByRole('textbox', { name: 'From' }).should('have.value', '01/02/2003')\n cy.findByRole('textbox', { name: 'To' }).should('have.value', '04/05/2006')\n\n removeAllFilters()\n showFilters()\n\n cy.findByRole('textbox', { name: 'From' }).type('02/05/2025')\n cy.findByRole('textbox', { name: 'To' }).type('05/07/2025').blur()\n\n applyFilters()\n\n cy.location().should((location) => {\n expect(location.search).to.contain(`filters.field3.start=2025-05-02`)\n expect(location.search).to.contain(`filters.field3.end=2025-07-05`)\n })\n\n checkSelectedFilterValues({ length: 2, buttonValues: [{ key: 'Field 3', value: '02/05/2025 - 05/07/2025' }] })\n })\n\n it('should apply the relative daterange', () => {\n removeAllFilters()\n showFilters()\n\n cy.findByRole('tab', { name: 'Preset date ranges' }).click()\n cy.findByRole('radio', { name: 'Tomorrow' }).check()\n\n applyFilters()\n\n let startValue: string | number | string[] | undefined\n let endValue: string | number | string[] | undefined\n cy.findByRole('textbox', { name: 'From' })\n .invoke('val')\n .should('not.be.empty')\n .then((val) => {\n startValue = val\n })\n cy.findByRole('textbox', { name: 'To' })\n .invoke('val')\n .should('not.be.empty')\n .then((val) => {\n endValue = val\n })\n\n const dateMapper = new DateMapper()\n cy.location().should((location) => {\n expect(location.search).to.contain(\n `filters.field3.start=${dateMapper.toDateString(<string>startValue, 'iso')}`,\n )\n expect(location.search).to.contain(`filters.field3.end=${dateMapper.toDateString(<string>endValue, 'iso')}`)\n expect(location.search).to.contain(`filters.field3.relative-duration=tomorrow`)\n })\n\n checkSelectedFilterValues({ length: 2, buttonValues: [{ key: 'Field 3', value: 'Tomorrow' }] })\n })\n })\n\n describe('Multiselect', () => {\n it('should apply the multiselect values', () => {\n cy.findByRole('checkbox', { name: 'Value 8.2' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.3' }).should('be.checked')\n\n removeAllFilters()\n\n cy.findByRole('checkbox', { name: 'Value 8.1' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.2' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.3' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.4' }).should('not.be.checked')\n\n showFilters()\n\n cy.findByRole('checkbox', { name: 'Value 8.1' }).check()\n cy.findByRole('checkbox', { name: 'Value 8.3' }).check()\n\n applyFilters()\n\n cy.findByRole('checkbox', { name: 'Value 8.1' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.2' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.3' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.4' }).should('not.be.checked')\n\n checkSelectedFilterValues({ length: 2, buttonValues: [{ key: 'Field 8', value: 'Value 8.1, Value 8.3' }] })\n })\n\n it('should set the selected filter values correctly', () => {\n cy.findByRole('checkbox', { name: 'Value 8.2' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.3' }).should('be.checked')\n\n removeAllFilters()\n\n cy.findByRole('checkbox', { name: 'Value 8.1' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.2' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.3' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.4' }).should('not.be.checked')\n\n showFilters()\n\n cy.findByRole('checkbox', { name: 'Value 8.1' }).check()\n cy.findByRole('checkbox', { name: 'Value 8.2' }).check()\n cy.findByRole('checkbox', { name: 'Value 8.3' }).check()\n cy.findByRole('checkbox', { name: 'Value 8.4' }).check()\n\n applyFilters()\n\n cy.findByRole('checkbox', { name: 'Value 8.1' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.2' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.3' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.4' }).should('be.checked')\n\n checkSelectedFilterValues({\n length: 2,\n buttonValues: [{ key: 'Field 8', value: 'Value 8.1, Value 8.2, Value 8.3 + 1 more' }],\n })\n })\n\n it('should set the values correctly when only one checkbox selected', () => {\n removeAllFilters()\n\n cy.findByRole('checkbox', { name: 'Value 8.1' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.2' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.3' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.4' }).should('not.be.checked')\n\n showFilters()\n\n cy.findByRole('checkbox', { name: 'Value 8.1' }).check()\n\n applyFilters()\n\n cy.findByRole('checkbox', { name: 'Value 8.1' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.2' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.3' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.4' }).should('not.be.checked')\n\n checkSelectedFilterValues({\n length: 2,\n buttonValues: [{ key: 'Field 8', value: 'Value 8.1' }],\n })\n })\n })\n\n it('Applying filters should persist current applied columns', () => {\n cy.findAllByRole('group')\n .contains(/Show columns/)\n .should('be.visible')\n .click()\n\n cy.findByRole('checkbox', { name: 'Field 1' }).uncheck()\n cy.findByRole('checkbox', { name: 'Field 3' }).uncheck()\n cy.findByRole('checkbox', { name: 'Field 5' }).check()\n cy.findByRole('checkbox', { name: 'Field 7' }).uncheck()\n cy.findByRole('checkbox', { name: 'Field 8' }).check()\n\n cy.findByRole('button', { name: 'Apply columns' }).click()\n cy.findAllByRole('group').contains('Show columns (4 of 8 shown)')\n\n showFilters()\n cy.findByRole('checkbox', { name: 'Value 8.1' }).check()\n cy.findByRole('checkbox', { name: 'Value 8.3' }).check()\n applyFilters()\n\n cy.findAllByRole('group').contains('Show columns (4 of 8 shown)')\n })\n })\n\n describe('User defined interactive defaults', () => {\n const saveDefaultsButton = () => {\n return cy.findByRole('button', { name: 'Save current filter values as defaults' })\n }\n const updateDefaultsButton = () => {\n return cy.findByRole('button', { name: 'Update defaults' })\n }\n const deleteDefaultsButton = () => {\n return cy.findByRole('button', { name: 'Delete defaults' })\n }\n\n const checkSelectedFiltersInUserReports = ({\n name,\n product,\n length,\n selectedFilters,\n }: {\n name: string\n product: string\n length: number\n selectedFilters: { key: string; value: string }[]\n }) => {\n cy.findByLabelText(/Viewed \\(/).within(() => {\n cy.findByRole('row', {\n name: (_, element) => {\n return Boolean(element.textContent?.includes(name)) && Boolean(element.textContent?.includes(product))\n },\n }).within(() => {\n cy.findAllByRole('listitem')\n .should('have.length', length)\n .each((li, index) => {\n if (selectedFilters[index]) {\n const { key, value } = selectedFilters[index]\n cy.wrap(li).contains(key)\n cy.wrap(li).contains(value)\n }\n })\n })\n })\n }\n\n it('should save the interactive filters correctly', () => {\n // request the report\n requestReport({ name: 'Interactive Report', description: 'this is an interactive report', path })\n\n // check the default filters\n checkSelectedFilterValues({\n length: 5,\n buttonValues: [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.2, Value 8.3' },\n ],\n })\n\n // update the filters\n showFilters()\n cy.findByRole('checkbox', { name: 'Value 8.1' }).check()\n cy.findByRole('checkbox', { name: 'Value 8.4' }).check()\n cy.findByRole('combobox', { name: 'Field 2' }).select('value2.2')\n applyFilters()\n\n const selectedFiltersButtonValues = [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 2', value: 'Value 2.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.1, Value 8.2, Value 8.3 + 1 more' },\n ]\n checkSelectedFilterValues({\n length: 6,\n buttonValues: selectedFiltersButtonValues,\n })\n\n // save the filters\n saveDefaultsButton().click()\n\n // check for saved page furniture\n updateDefaultsButton().should('exist')\n deleteDefaultsButton().should('exist')\n\n // check the selected filters\n checkSelectedFilterValues({\n length: 6,\n buttonValues: selectedFiltersButtonValues,\n })\n })\n\n it('should init the report with saved interactive defaults', () => {\n // request the report\n requestReport({ name: 'Interactive Report', description: 'this is an interactive report', path })\n cy.url().then((url) => {\n viewReportUrl = url\n })\n\n // check saved defaults page furniture\n updateDefaultsButton().should('exist')\n deleteDefaultsButton().should('exist')\n\n const selectedFiltersButtonValues = [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 2', value: 'Value 2.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.1, Value 8.2, Value 8.3 + 1 more' },\n ]\n checkSelectedFilterValues({\n length: 6,\n buttonValues: selectedFiltersButtonValues,\n })\n\n cy.visit(path)\n cy.findByRole('tab', { name: /Viewed/ }).click()\n checkSelectedFiltersInUserReports({\n name: 'Interactive Report',\n product: 'Interactive Report',\n length: 5,\n selectedFilters: selectedFiltersButtonValues,\n })\n })\n\n it('should reset the filter values to the saved defaults', () => {\n cy.visit(viewReportUrl)\n\n // check saved defaults page furniture\n updateDefaultsButton().should('exist')\n deleteDefaultsButton().should('exist')\n\n const savedDefaultSelectedFilters = [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 2', value: 'Value 2.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.1, Value 8.2, Value 8.3 + 1 more' },\n ]\n checkSelectedFilterValues({\n length: 6,\n buttonValues: savedDefaultSelectedFilters,\n })\n\n // apply some filters\n showFilters()\n cy.findByRole('checkbox', { name: 'Value 8.1' }).uncheck()\n cy.findByRole('checkbox', { name: 'Value 8.3' }).uncheck()\n cy.findByRole('combobox', { name: 'Field 2' }).select('value2.3')\n applyFilters()\n\n checkSelectedFilterValues({\n length: 6,\n buttonValues: [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 2', value: 'Value 2.3' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.4' },\n ],\n })\n\n cy.visit(path)\n cy.findByRole('tab', { name: /Viewed/ }).click()\n checkSelectedFiltersInUserReports({\n name: 'Interactive Report',\n product: 'Interactive Report',\n length: 5,\n selectedFilters: [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 2', value: 'Value 2.3' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.4' },\n ],\n })\n\n cy.visit(viewReportUrl)\n\n cy.findByRole('link', { name: 'Reset filters' }).click()\n\n checkSelectedFilterValues({\n length: 6,\n buttonValues: savedDefaultSelectedFilters,\n })\n\n cy.visit(path)\n cy.findByRole('tab', { name: /Viewed/ }).click()\n checkSelectedFiltersInUserReports({\n name: 'Interactive Report',\n product: 'Interactive Report',\n length: 5,\n selectedFilters: savedDefaultSelectedFilters,\n })\n })\n\n it('should update the filter values and init the report with the updated interactive defaults', () => {\n cy.visit(viewReportUrl)\n\n // check saved defaults page furniture\n updateDefaultsButton().should('exist')\n deleteDefaultsButton().should('exist')\n\n checkSelectedFilterValues({\n length: 6,\n buttonValues: [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 2', value: 'Value 2.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.1, Value 8.2, Value 8.3 + 1 more' },\n ],\n })\n\n // apply some filters\n showFilters()\n cy.findByRole('checkbox', { name: 'Value 8.1' }).uncheck()\n cy.findByRole('checkbox', { name: 'Value 8.3' }).uncheck()\n cy.findByRole('combobox', { name: 'Field 2' }).select('value2.3')\n applyFilters()\n\n const expectedSelectedValues = [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 2', value: 'Value 2.3' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.2, Value 8.4' },\n ]\n\n checkSelectedFilterValues({\n length: 6,\n buttonValues: expectedSelectedValues,\n })\n\n updateDefaultsButton().click()\n\n checkSelectedFilterValues({\n length: 6,\n buttonValues: expectedSelectedValues,\n })\n\n requestReport({ name: 'Interactive Report', description: 'this is an interactive report', path })\n cy.url().then((url) => {\n viewReportUrl = url\n })\n\n // check the initial filter values match the default\n checkSelectedFilterValues({\n length: 6,\n buttonValues: expectedSelectedValues,\n })\n\n // check saved defaults page furniture\n updateDefaultsButton().should('exist')\n deleteDefaultsButton().should('exist')\n\n cy.visit(path)\n cy.findByRole('tab', { name: /Viewed/ }).click()\n checkSelectedFiltersInUserReports({\n name: 'Interactive Report',\n product: 'Interactive Report',\n length: 5,\n selectedFilters: expectedSelectedValues,\n })\n })\n\n it('should delete the saved defaults', () => {\n cy.visit(viewReportUrl)\n\n checkSelectedFilterValues({\n length: 6,\n buttonValues: [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 2', value: 'Value 2.3' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.2, Value 8.4' },\n ],\n })\n\n deleteDefaultsButton().click()\n\n // Expect DPD defaults to be applied\n checkSelectedFilterValues({\n length: 5,\n buttonValues: [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.2, Value 8.3' },\n ],\n })\n\n cy.visit(path)\n cy.findByRole('tab', { name: /Viewed/ }).click()\n checkSelectedFiltersInUserReports({\n name: 'Interactive Report',\n product: 'Interactive Report',\n length: 4,\n selectedFilters: [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.2, Value 8.3' },\n ],\n })\n })\n\n describe('Input types', () => {\n describe('Relative date range', () => {\n it('should save the relative daterange', () => {\n // request the report\n requestReport({ name: 'Interactive Report', description: 'this is an interactive report', path })\n\n checkSelectedFilterValues({\n length: 5,\n buttonValues: [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.2, Value 8.3' },\n ],\n })\n\n // update the filters\n showFilters()\n cy.findByRole('tab', { name: 'Preset date ranges' }).click()\n cy.findByRole('radio', { name: 'Tomorrow' }).check()\n applyFilters()\n\n const expectedUpdatedSelected = [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 3', value: 'Tomorrow' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.2, Value 8.3' },\n ]\n\n checkSelectedFilterValues({\n length: 5,\n buttonValues: expectedUpdatedSelected,\n })\n\n // save the filters\n saveDefaultsButton().click()\n\n // check for saved page furniture\n updateDefaultsButton().should('exist')\n deleteDefaultsButton().should('exist')\n\n // check the selected filters\n checkSelectedFilterValues({\n length: 5,\n buttonValues: expectedUpdatedSelected,\n })\n\n // request the report to check it defaults to saved\n requestReport({ name: 'Interactive Report', description: 'this is an interactive report', path })\n\n // check the selected filters\n checkSelectedFilterValues({\n length: 5,\n buttonValues: expectedUpdatedSelected,\n })\n\n deleteDefaultsButton().click()\n })\n })\n\n describe('Multiselect', () => {\n it('should save a single multiselect value', () => {\n // request the report\n requestReport({ name: 'Interactive Report', description: 'this is an interactive report', path })\n\n checkSelectedFilterValues({\n length: 5,\n buttonValues: [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.2, Value 8.3' },\n ],\n })\n\n // update the filters\n showFilters()\n cy.findByRole('checkbox', { name: 'Value 8.3' }).uncheck()\n applyFilters()\n\n const expectedUpdatedSelected = [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.2' },\n ]\n\n checkSelectedFilterValues({\n length: 5,\n buttonValues: expectedUpdatedSelected,\n })\n\n // save the filters\n saveDefaultsButton().click()\n\n // check for saved page furniture\n updateDefaultsButton().should('exist')\n deleteDefaultsButton().should('exist')\n\n // check the selected filters\n checkSelectedFilterValues({\n length: 5,\n buttonValues: expectedUpdatedSelected,\n })\n\n // request the report to check it defaults to saved\n requestReport({ name: 'Interactive Report', description: 'this is an interactive report', path })\n\n // check the selected filters\n checkSelectedFilterValues({\n length: 5,\n buttonValues: expectedUpdatedSelected,\n })\n\n deleteDefaultsButton().click()\n })\n })\n })\n })\n\n describe('Sorting', () => {\n before(() => {\n requestReport({ name: 'Interactive Report', description: 'this is an interactive report', path })\n cy.url().then((url) => {\n viewReportUrl = url\n })\n })\n\n beforeEach(() => {\n cy.visit(viewReportUrl)\n })\n\n it('should show the sort direction in the column header and the url', () => {\n cy.findByRole('link', { name: 'Reset filters' }).click()\n\n // Initial state\n cy.findByRole('link', { name: 'Field 1' }).should('have.class', 'data-table-header-button-sort-ascending')\n cy.findByRole('link', { name: 'Field 2' }).should('have.class', 'data-table-header-button-sort-none')\n\n // Sort desc by field 1\n cy.findByRole('link', { name: 'Field 1' }).click()\n cy.findByRole('link', { name: 'Field 1' }).should('have.class', 'data-table-header-button-sort-descending')\n cy.findByRole('link', { name: 'Field 2' }).should('have.class', 'data-table-header-button-sort-none')\n cy.location().should((location) => {\n expect(location.search).to.contain(`&sortColumn=field1&sortedAsc=false`)\n expect(location.search).to.contain(`filters.field8=value8.2&filters.field8=value8.3`)\n })\n\n // Sort asc by field 1\n cy.findByRole('link', { name: 'Field 1' }).click()\n cy.findByRole('link', { name: 'Field 1' }).should('have.class', 'data-table-header-button-sort-ascending')\n cy.findByRole('link', { name: 'Field 2' }).should('have.class', 'data-table-header-button-sort-none')\n cy.location().should((location) => {\n expect(location.search).to.contain(`&sortColumn=field1&sortedAsc=true`)\n expect(location.search).to.contain(`filters.field8=value8.2&filters.field8=value8.3`)\n })\n\n // Sort asc by field 2\n cy.findByRole('link', { name: 'Field 2' }).click()\n cy.findByRole('link', { name: 'Field 2' }).should('have.class', 'data-table-header-button-sort-ascending')\n cy.findByRole('link', { name: 'Field 1' }).should('have.class', 'data-table-header-button-sort-none')\n cy.location().should((location) => {\n expect(location.search).to.contain(`&sortColumn=field2&sortedAsc=true`)\n expect(location.search).to.contain(`filters.field8=value8.2&filters.field8=value8.3`)\n })\n\n // Sort desc by field 2\n cy.findByRole('link', { name: 'Field 2' }).click()\n cy.findByRole('link', { name: 'Field 2' }).should('have.class', 'data-table-header-button-sort-descending')\n cy.findByRole('link', { name: 'Field 1' }).should('have.class', 'data-table-header-button-sort-none')\n cy.location().should((location) => {\n expect(location.search).to.contain(`&sortColumn=field2&sortedAsc=false`)\n expect(location.search).to.contain(`filters.field8=value8.2&filters.field8=value8.3`)\n })\n })\n })\n })\n})\n"],
5
5
  "mappings": "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",
6
6
  "names": ["DateMapper"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../../../src/dpr/routes/journeys/view-report/async/report/types.ts"],
3
+ "sources": ["../../../../../../dpr/routes/journeys/view-report/async/report/types.ts"],
4
4
  "sourcesContent": ["import { components } from '../../../../../types/api'\nimport Dict = NodeJS.Dict\nimport { AsyncReportUrlItemData } from '../../../../../types/UserReports'\n\nexport interface ReportUrls {\n reportUrl: string\n reportSearch?: string | undefined\n encodedSearch?: string | undefined\n pathname: string\n}\n\nexport interface ExtractedDefinitionData {\n reportName: string\n name: string\n description: string | undefined\n classification: string | undefined\n printable: boolean\n specification: components['schemas']['Specification']\n template: string\n fields: components['schemas']['FieldDefinition'][]\n}\n\nexport interface ExtractedRequestData {\n executionId?: string | undefined\n requestedTimestamp?: string | undefined\n querySummary: Dict<string>[]\n queryData?: Dict<string | string[]> | undefined\n requestUrl?: AsyncReportUrlItemData | undefined\n defaultQuery?: string | undefined\n dataProductDefinitionsPath?: string | undefined\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
6
6
  "names": []
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../../../src/dpr/routes/journeys/view-report/async/report/utils.ts"],
3
+ "sources": ["../../../../../../dpr/routes/journeys/view-report/async/report/utils.ts"],
4
4
  "sourcesContent": ["import parseUrl from 'parseurl'\nimport { Url } from 'url'\nimport { Request, Response } from 'express'\n\n// Types\nimport type { Columns } from '../../../../../components/_reports/report-columns-form/types'\nimport type { AsyncReportUtilsParams } from '../../../../../types/AsyncReportUtils'\nimport type { DataTable } from '../../../../../utils/DataTableBuilder/types'\nimport type { components } from '../../../../../types/api'\nimport type { AsyncSummary, RequestedReport } from '../../../../../types/UserReports'\nimport { LoadType, ReportType } from '../../../../../types/UserReports'\nimport ReportQuery from '../../../../../types/ReportQuery'\nimport type { ChildData } from '../../../../../utils/ParentChildDataTableBuilder/types'\nimport type { ExtractedDefinitionData, ExtractedRequestData, ReportUrls } from './types'\nimport type { DownloadActionParams } from '../../../../../components/_reports/report-actions/types'\nimport { FiltersType } from '../../../../../components/_filters/filtersTypeEnum'\nimport type { Services } from '../../../../../types/Services'\n\n// Utils\nimport definitionUtils from '../../../../../utils/definitionUtils'\nimport PaginationUtils from '../../../../../components/_reports/report-pagination/utils'\nimport TotalsUtils from '../../../../../components/_reports/report-totals/utils'\nimport ReportFiltersUtils from '../../../../../components/_filters/utils'\nimport ColumnUtils from '../../../../../components/_reports/report-columns-form/utils'\nimport ReportActionsUtils from '../../../../../components/_reports/report-actions/utils'\nimport UserReportsUtils from '../../../../../components/user-reports/utils'\nimport LocalsHelper from '../../../../../utils/localsHelper'\nimport DataTableUtils from '../../../../../components/_reports/report-data-table/utils'\nimport RequestedReportService from '../../../my-reports/requested-reports/service'\n\nimport CollatedSummaryBuilder from '../../../../../utils/CollatedSummaryBuilder/CollatedSummaryBuilder'\n\nexport const getData = async ({\n res,\n req,\n services,\n token,\n userId,\n}: AsyncReportUtilsParams & { token: string; userId: string }) => {\n const { definitionsPath: definitionPath } = LocalsHelper.getValues(res)\n const { reportId, variantId, id, tableId } = req.params\n const reportVariantId = variantId || id\n\n // Get the request data\n const requestedReportService = <RequestedReportService>services.requestedReportService\n const requestData: RequestedReport | undefined = await requestedReportService.getReportByTableId(tableId, userId)\n const queryData = requestData?.query?.data\n\n // Get the definition\n const definition: components['schemas']['SingleVariantReportDefinition'] =\n await services.reportingService.getDefinition(token, reportId, reportVariantId, definitionPath, queryData)\n const { variant } = definition\n const { specification } = variant\n\n if (!specification) {\n throw new Error('No specification found in variant definition')\n }\n\n // Get the columns\n const columns = ColumnUtils.getColumns(specification, req)\n\n // initialise report query\n const reportQuery = await initReportQuery(definition, columns, res, req, services, requestData)\n\n // Get the reportData\n const reportData = await getReportData({ definition, services, token, req, res, reportQuery })\n\n // Get the summary data, if applicable\n const { summaries } = definition.variant\n const summariesData = !summaries ? [] : await getSummariesData(summaries, services, token, req, res)\n\n // Get the child data, if applicable\n const { childVariants } = definition.variant\n const childData: ChildData[] = !childVariants\n ? []\n : await getChildData(childVariants, services, token, req, res, requestData)\n\n return {\n definition,\n requestData,\n reportData,\n summariesData,\n childData,\n reportQuery,\n columns,\n }\n}\n\nconst initReportQuery = async (\n definition: components['schemas']['SingleVariantReportDefinition'],\n columns: Columns,\n res: Response,\n req: Request,\n services: Services,\n requestData?: RequestedReport,\n) => {\n const { definitionsPath } = LocalsHelper.getValues(res)\n const fields = definitionUtils.getFields(definition)\n const template = definitionUtils.getTemplate(definition)\n\n const filtersData = await ReportFiltersUtils.getFilters({\n fields,\n req,\n filtersType: FiltersType.INTERACTIVE,\n res,\n services,\n })\n\n // Sort\n const sortColumn = req.query?.['sortColumn'] || requestData?.query?.data?.['sortColumn']\n const sortedAsc = req.query?.['sortedAsc'] || requestData?.query?.data?.['sortedAsc']\n\n // Pagination\n const selectedPage = req.query?.['selectedPage']\n const pageSize = req.query?.['pageSize']\n\n // Filters\n const filtersQuery = ReportFiltersUtils.setRequestQueryFromFilterValues(filtersData.filters)\n\n const queryParams = {\n ...(sortColumn && { sortColumn }),\n ...(sortedAsc && { sortedAsc }),\n ...filtersQuery,\n ...(pageSize && { pageSize }),\n ...(selectedPage && { selectedPage }),\n ...(columns && { columns: columns.value }),\n }\n\n return new ReportQuery({\n fields,\n template,\n queryParams,\n definitionsPath,\n })\n}\n\nconst getReportData = async (args: {\n definition: components['schemas']['SingleVariantReportDefinition']\n services: Services\n token: string\n req: Request\n res: Response\n reportQuery: ReportQuery\n}) => {\n const { services, token, req, reportQuery } = args\n const { reportId, variantId, id, tableId } = req.params\n const reportVariantId = variantId || id\n\n return services.reportingService.getAsyncReport(\n token,\n reportId,\n reportVariantId,\n tableId,\n reportQuery.toRecordWithFilterPrefix(true),\n )\n}\n\nexport const getSummariesData = async (\n summaries: components['schemas']['ReportSummary'][],\n services: Services,\n token: string,\n req: Request,\n res: Response,\n): Promise<AsyncSummary[]> => {\n const { reportId, variantId, id, tableId } = req.params\n const { definitionsPath: dataProductDefinitionsPath } = LocalsHelper.getValues(res)\n const reportVariantId = variantId || id\n\n return Promise.all(\n summaries.map(async (summary) => {\n const summaryReport = await services.reportingService.getAsyncSummaryReport(\n token,\n reportId,\n reportVariantId,\n tableId,\n summary.id,\n {\n dataProductDefinitionsPath,\n },\n )\n\n return {\n ...summary,\n data: summaryReport,\n }\n }),\n )\n}\n\nexport const getChildData = async (\n childVariants: components['schemas']['ChildVariantDefinition'][],\n services: Services,\n token: string,\n req: Request,\n res: Response,\n requestData?: RequestedReport,\n): Promise<ChildData[]> => {\n const { definitionsPath: dataProductDefinitionsPath } = LocalsHelper.getValues(res)\n const { reportId } = req.params\n const childExecutionData = requestData?.childExecutionData\n if (!childExecutionData) {\n throw new Error('getChildData: No execution data found for child variants')\n }\n return Promise.all(\n childVariants.map(async (childVariant) => {\n const { specification } = childVariant\n if (!specification) {\n throw new Error('getChildData: No specification found in child variant definition')\n }\n\n const query = new ReportQuery({\n fields: specification?.fields || [],\n template: 'parent-child',\n queryParams: req.query,\n definitionsPath: dataProductDefinitionsPath,\n }).toRecordWithFilterPrefix(true)\n\n const childData = childExecutionData.find((e) => e.variantId === childVariant.id)\n if (!childData || !childData.tableId) {\n throw new Error('getChildData: No matching child execution data found')\n }\n const { tableId: childTableId } = childData\n\n const childReport = await services.reportingService.getAsyncReport(\n token,\n reportId,\n childVariant.id,\n childTableId,\n query,\n )\n\n return {\n id: childVariant.id,\n data: childReport,\n }\n }),\n )\n}\n\n/**\n * Entry point function to render the report\n *\n * @param {AsyncReportUtilsParams} { req, res, services }\n * @return {*}\n */\nexport const renderReport = async ({ req, res, services }: AsyncReportUtilsParams) => {\n const { token, dprUser } = LocalsHelper.getValues(res)\n\n // Get the report data\n const { definition, requestData, reportData, childData, summariesData, reportQuery, columns } = await getData({\n req,\n res,\n services,\n token,\n userId: dprUser.id,\n })\n\n // Get the data table\n const dataTable: DataTable[] = DataTableUtils.createDataTable(\n definition,\n columns,\n reportData,\n childData,\n summariesData,\n reportQuery,\n )\n\n // Get the template data\n const templateData = await getTemplateData(\n req,\n res,\n services,\n definition,\n summariesData,\n dataTable,\n columns,\n reportQuery,\n requestData,\n )\n\n const renderData = {\n ...templateData,\n dataTable,\n }\n\n if (requestData && Object.keys(requestData).length) {\n UserReportsUtils.updateLastViewed({\n req,\n services,\n reportStateData: requestData,\n userId: dprUser.id,\n filters: templateData.filterData.filters,\n })\n }\n\n return { renderData }\n}\n\nconst getTemplateData = async (\n req: Request,\n res: Response,\n services: Services,\n definition: components['schemas']['SingleVariantReportDefinition'],\n summariesData: AsyncSummary[],\n dataTable: DataTable[],\n columns: Columns,\n reportQuery: ReportQuery,\n requestData?: RequestedReport,\n) => {\n const { nestedBaseUrl } = LocalsHelper.getValues(res)\n\n // get url data\n const url = parseUrl(req)\n if (!url) {\n throw new Error('Unable to set url data from request')\n }\n\n const urls = url ? setUrls(url, req) : undefined\n\n // get from definition\n const definitionData = extractDataFromDefinition(definition)\n const { fields, specification } = definitionData\n\n // get from requestedData\n const requestedData = requestData ? extractDataFromRequest(requestData) : undefined\n\n // Get the count\n const count = await getCount(definition, services, res, req, reportQuery)\n\n // Get the filters\n const filterData = await ReportFiltersUtils.getFilters({\n fields,\n req,\n res,\n services,\n filtersType: FiltersType.INTERACTIVE,\n })\n\n // Set the features\n const features = await setFeatures(services, res, req, columns, definitionData, requestedData, urls)\n\n // Set the extra meta data\n const meta = setMetaData(res, req)\n\n let reportSummaries\n if (summariesData.length) {\n const collatedSummaryBuilder = new CollatedSummaryBuilder(specification, summariesData)\n reportSummaries = collatedSummaryBuilder.collatePageSummaries()\n }\n\n let pagination\n let totals\n if (definitionData.template === 'list') {\n pagination = PaginationUtils.getPaginationData(url, count, req)\n const { pageSize, currentPage, totalRows } = pagination\n totals = TotalsUtils.getTotals(pageSize, currentPage, totalRows, dataTable[0].rowCount)\n }\n\n return {\n ...(showColumns(specification) && { columns }),\n filterData,\n count,\n nestedBaseUrl,\n ...meta,\n ...features,\n ...definitionData,\n ...requestedData,\n ...urls,\n ...(pagination && { pagination }),\n ...(totals && { totals }),\n ...(reportSummaries && { reportSummaries }),\n }\n}\n\nconst showColumns = (specification: components['schemas']['Specification']) => {\n const { template } = specification\n\n return !['row-section', 'row-section-child', 'summary', 'summary-section'].includes(template)\n}\n\nconst setMetaData = (res: Response, req: Request) => {\n const { csrfToken } = LocalsHelper.getValues(res)\n const { tableId, reportId, id } = req.params\n\n return {\n csrfToken,\n loadType: LoadType.ASYNC,\n type: ReportType.REPORT,\n tableId,\n reportId,\n id,\n }\n}\n\nconst setUrls = (url: Url, req: Request): ReportUrls => {\n const { search } = url\n const encodedSearch = search ? encodeURIComponent(search) : undefined\n const pathname = search ? req.originalUrl.split(search)[0] : req.originalUrl\n const reportUrl = pathname.replace('/download-disabled', '').replace('/download-disabled?', '')\n\n return {\n reportUrl,\n reportSearch: search || undefined,\n encodedSearch,\n pathname,\n }\n}\n\nconst setFeatures = async (\n services: Services,\n res: Response,\n req: Request,\n columns: Columns,\n definitionData: ExtractedDefinitionData,\n requestData?: ExtractedRequestData,\n urls?: ReportUrls,\n) => {\n const { csrfToken, dprUser, bookmarkingEnabled, downloadingEnabled } = LocalsHelper.getValues(res)\n const { reportId, id } = req.params\n const { downloadPermissionService, bookmarkService } = services\n\n let canDownload = false\n if (downloadingEnabled) {\n canDownload = await downloadPermissionService.downloadEnabledForReport(dprUser.id, reportId, id)\n }\n\n let bookmarked\n if (bookmarkingEnabled) {\n bookmarked = await bookmarkService.isBookmarked(id, reportId, dprUser.id)\n }\n\n const actions = setActions(csrfToken, columns, canDownload, res, req, definitionData, requestData, urls)\n\n return {\n actions,\n canDownload,\n bookmarked,\n }\n}\n\nconst getCount = async (\n definition: components['schemas']['SingleVariantReportDefinition'],\n services: Services,\n res: Response,\n req: Request,\n reportQuery: ReportQuery,\n) => {\n const { token } = LocalsHelper.getValues(res)\n const { tableId, reportId, id } = req.params\n\n return !definition.variant.interactive\n ? services.reportingService.getAsyncCount(token, tableId)\n : services.reportingService.getAsyncInteractiveCount(token, tableId, reportId, id, reportQuery)\n}\n\nconst extractDataFromDefinition = (\n definition: components['schemas']['SingleVariantReportDefinition'],\n): ExtractedDefinitionData => {\n const { variant, name: reportName, description: reportDescription } = definition\n const { classification, printable, specification, name, description } = variant\n if (!specification) {\n throw new Error('No specification found in variant definition')\n }\n const { template, fields } = specification\n\n return {\n reportName,\n name,\n description: description || reportDescription,\n classification,\n printable: Boolean(printable),\n specification,\n template,\n fields,\n }\n}\n\nconst extractDataFromRequest = (requestData: RequestedReport): ExtractedRequestData => {\n const { query, url, timestamp } = requestData\n\n return {\n executionId: requestData.executionId,\n requestedTimestamp: timestamp.requested ? new Date(timestamp.requested).toLocaleString() : undefined,\n querySummary: query?.summary || [],\n queryData: query?.data,\n requestUrl: url?.request,\n defaultQuery: url?.report?.default,\n dataProductDefinitionsPath: requestData.dataProductDefinitionsPath,\n }\n}\n\nconst setActions = (\n csrfToken: string,\n columns: Columns,\n canDownload: boolean,\n res: Response,\n req: Request,\n definitionData: ExtractedDefinitionData,\n requestData?: ExtractedRequestData,\n urls?: ReportUrls,\n) => {\n const { reportName, name, printable } = definitionData\n const { tableId, id, reportId } = req.params\n const { nestedBaseUrl, definitionsPath, downloadingEnabled } = LocalsHelper.getValues(res)\n\n // DownloadActionParams\n let downloadConfig: DownloadActionParams | undefined\n if (urls && downloadingEnabled) {\n downloadConfig = {\n enabled: downloadingEnabled,\n name,\n reportName,\n csrfToken,\n reportId,\n id,\n tableId,\n columns: columns.value,\n definitionPath: definitionsPath,\n loadType: LoadType.ASYNC,\n nestedBaseUrl,\n canDownload,\n currentUrl: urls.pathname,\n currentQueryParams: urls.reportSearch,\n ...(requestData?.queryData && {\n sortColumn: <string>requestData.queryData['sortColumn'],\n sortedAsc: <string>requestData.queryData['sortedAsc'],\n }),\n }\n }\n\n let shareConfig\n let copyConfig\n if (requestData?.requestUrl?.fullUrl) {\n shareConfig = {\n reportName,\n name,\n url: requestData.requestUrl.fullUrl,\n }\n copyConfig = {\n url: requestData.requestUrl.fullUrl,\n }\n }\n\n let refreshConfig\n if (requestData?.executionId && requestData?.requestUrl?.fullUrl) {\n refreshConfig = {\n url: requestData.requestUrl.fullUrl,\n executionId: requestData.executionId,\n }\n }\n\n return ReportActionsUtils.getActions({\n ...(downloadConfig && { download: downloadConfig }),\n ...(shareConfig && { share: shareConfig }),\n ...(refreshConfig && { refresh: refreshConfig }),\n ...(copyConfig && { copy: copyConfig }),\n print: { enabled: printable },\n })\n}\n\nexport default {\n renderReport,\n}\n"],
5
5
  "mappings": "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",
6
6
  "names": ["import_utils", "LocalsHelper", "ColumnUtils", "definitionUtils", "ReportFiltersUtils", "ReportQuery", "DataTableUtils", "UserReportsUtils", "parseUrl", "CollatedSummaryBuilder", "PaginationUtils", "TotalsUtils", "ReportActionsUtils"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../../src/dpr/routes/journeys/view-report/async/routes.ts"],
3
+ "sources": ["../../../../../dpr/routes/journeys/view-report/async/routes.ts"],
4
4
  "sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { Router } from 'express'\nimport { Services } from '../../../../types/Services'\n\n// Routes\nimport viewReportRoutes from './report/routes'\nimport viewDashboardRoutes from './dashboard/routes'\n\n// middleware\nimport reportAuthoriser from '../../../../middleware/reportAuthoriser'\nimport AsyncController from './controller'\n\nexport function routes({ layoutPath, services }: { layoutPath: string; services: Services }) {\n const router = Router({ mergeParams: true })\n\n const controller = new AsyncController(layoutPath, services)\n\n // Expired check\n router.post(['/report', '/dashboard'], controller.POST)\n router.use('/report', reportAuthoriser(services, layoutPath), viewReportRoutes({ layoutPath, services }))\n router.use('/dashboard', reportAuthoriser(services, layoutPath), viewDashboardRoutes({ layoutPath, services }))\n return router\n}\n\nexport default routes\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qBAAuB;AAIvB,oBAA6B;AAC7B,IAAAA,iBAAgC;AAGhC,8BAA6B;AAC7B,wBAA4B;AAErB,SAAS,OAAO,EAAE,YAAY,SAAS,GAA+C;AAC3F,QAAM,aAAS,uBAAO,EAAE,aAAa,KAAK,CAAC;AAE3C,QAAM,aAAa,IAAI,kBAAAC,QAAgB,YAAY,QAAQ;AAG3D,SAAO,KAAK,CAAC,WAAW,YAAY,GAAG,WAAW,IAAI;AACtD,SAAO,IAAI,eAAW,wBAAAC,SAAiB,UAAU,UAAU,OAAG,cAAAC,SAAiB,EAAE,YAAY,SAAS,CAAC,CAAC;AACxG,SAAO,IAAI,kBAAc,wBAAAD,SAAiB,UAAU,UAAU,OAAG,eAAAE,SAAoB,EAAE,YAAY,SAAS,CAAC,CAAC;AAC9G,SAAO;AACT;AAEA,IAAO,iBAAQ;",
6
6
  "names": ["import_routes", "AsyncController", "reportAuthoriser", "viewReportRoutes", "viewDashboardRoutes"]
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../src/dpr/routes/journeys/view-report/controller.ts"],
4
- "sourcesContent": ["import { ErrorRequestHandler, RequestHandler } from 'express'\nimport { captureException } from '@sentry/node'\nimport ErrorHandler from '../../../utils/ErrorHandler'\nimport { Services } from '../../../types/Services'\nimport logger from '../../../utils/logger'\n\nclass ViewReportController {\n layoutPath: string\n\n services: Services\n\n constructor(layoutPath: string, services: Services) {\n this.layoutPath = layoutPath\n this.services = services\n }\n\n errorHandler: ErrorRequestHandler = async (error, req, res, _next) => {\n logger.error(`Error: ${JSON.stringify(req.body)}`)\n const formattedErr = new ErrorHandler(error || {}).formatError()\n\n captureException(error)\n\n res.render(`dpr/routes/journeys/view-report/error`, {\n layoutPath: this.layoutPath,\n ...(req.body && { ...req.body }),\n ...req.params,\n error: formattedErr,\n params: req.params,\n })\n }\n}\n\nexport { ViewReportController }\nexport default ViewReportController\n"],
3
+ "sources": ["../../../../dpr/routes/journeys/view-report/controller.ts"],
4
+ "sourcesContent": ["import { ErrorRequestHandler } from 'express'\nimport { captureException } from '@sentry/node'\nimport ErrorHandler from '../../../utils/ErrorHandler'\nimport { Services } from '../../../types/Services'\nimport logger from '../../../utils/logger'\n\nclass ViewReportController {\n layoutPath: string\n\n services: Services\n\n constructor(layoutPath: string, services: Services) {\n this.layoutPath = layoutPath\n this.services = services\n }\n\n errorHandler: ErrorRequestHandler = async (error, req, res, _next) => {\n logger.error(`Error: ${JSON.stringify(req.body)}`)\n const formattedErr = new ErrorHandler(error || {}).formatError()\n\n captureException(error)\n\n res.render(`dpr/routes/journeys/view-report/error`, {\n layoutPath: this.layoutPath,\n ...(req.body && { ...req.body }),\n ...req.params,\n error: formattedErr,\n params: req.params,\n })\n }\n}\n\nexport { ViewReportController }\nexport default ViewReportController\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,kBAAiC;AACjC,0BAAyB;AAEzB,oBAAmB;AAEnB,MAAM,qBAAqB;AAAA,EACzB;AAAA,EAEA;AAAA,EAEA,YAAY,YAAoB,UAAoB;AAClD,SAAK,aAAa;AAClB,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,eAAoC,OAAO,OAAO,KAAK,KAAK,UAAU;AACpE,kBAAAA,QAAO,MAAM,UAAU,KAAK,UAAU,IAAI,IAAI,CAAC,EAAE;AACjD,UAAM,eAAe,IAAI,oBAAAC,QAAa,SAAS,CAAC,CAAC,EAAE,YAAY;AAE/D,sCAAiB,KAAK;AAEtB,QAAI,OAAO,yCAAyC;AAAA,MAClD,YAAY,KAAK;AAAA,MACjB,GAAI,IAAI,QAAQ,EAAE,GAAG,IAAI,KAAK;AAAA,MAC9B,GAAG,IAAI;AAAA,MACP,OAAO;AAAA,MACP,QAAQ,IAAI;AAAA,IACd,CAAC;AAAA,EACH;AACF;AAGA,IAAO,qBAAQ;",
6
6
  "names": ["logger", "ErrorHandler"]
7
7
  }
@@ -1,4 +1,4 @@
1
- import { ErrorRequestHandler, RequestHandler } from 'express'
1
+ import { ErrorRequestHandler } from 'express'
2
2
  import { captureException } from '@sentry/node'
3
3
  import ErrorHandler from '../../../utils/ErrorHandler'
4
4
  import { Services } from '../../../types/Services'
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../src/dpr/routes/journeys/view-report/routes.ts"],
3
+ "sources": ["../../../../dpr/routes/journeys/view-report/routes.ts"],
4
4
  "sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { Router } from 'express'\nimport { Services } from '../../../types/Services'\nimport ViewReportController from './controller'\n\n// Routes\nimport viewSyncReportRoutes from './sync/routes'\nimport viewAyncReportRoutes from './async/routes'\n\nexport function Routes({ layoutPath, services }: { services: Services; layoutPath: string }) {\n const router = Router({ mergeParams: true })\n\n const controller = new ViewReportController(layoutPath, services)\n router.use(`/sync/:type/:reportId/:id`, viewSyncReportRoutes({ layoutPath, services }), controller.errorHandler)\n router.use(\n `/async/:type/:reportId/:id/:tableId`,\n viewAyncReportRoutes({ layoutPath, services }),\n controller.errorHandler,\n )\n\n return router\n}\n\nexport function Redirects() {\n const router = Router({ mergeParams: true })\n\n // View Report\n router.get([`/async/:type/:reportId/:id/request/:tableId/:type`], (req, res) => {\n const { type, reportId, id, tableId } = req.params\n res.redirect(`${res.locals['nestedBaseUrl']}/dpr/view-report/async/${type}/${reportId}/${id}/${tableId}/${type}`)\n })\n\n // Download\n router.get(`/async/:type/:reportId/:id/request/:tableId/report/:download`, (req, res) => {\n const { type, reportId, id, tableId } = req.params\n res.redirect(\n `${res.locals['nestedBaseUrl']}/dpr/view-report/async/${type}/${reportId}/${id}/${tableId}/${type}/download-disabled`,\n )\n })\n\n // Expired Status\n router.post('/async/:type/:reportId/:id/request/:tableId/:type', (req, res) => {\n const { type, reportId, id, tableId } = req.params\n res.redirect(\n 308,\n `${res.locals['nestedBaseUrl']}/dpr/view-report/async/${type}/${reportId}/${id}/${tableId}/${type}`,\n )\n })\n\n return router\n}\n\nexport const ViewReportRoutes = ({\n services,\n path,\n layoutPath,\n}: {\n services: Services\n path: string\n layoutPath: string\n}) => {\n const router = Router({ mergeParams: true })\n router.use(path, Routes({ services, layoutPath }))\n router.use('/', Redirects())\n\n return router\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qBAAuB;AAEvB,wBAAiC;AAGjC,oBAAiC;AACjC,IAAAA,iBAAiC;AAE1B,SAAS,OAAO,EAAE,YAAY,SAAS,GAA+C;AAC3F,QAAM,aAAS,uBAAO,EAAE,aAAa,KAAK,CAAC;AAE3C,QAAM,aAAa,IAAI,kBAAAC,QAAqB,YAAY,QAAQ;AAChE,SAAO,IAAI,iCAA6B,cAAAC,SAAqB,EAAE,YAAY,SAAS,CAAC,GAAG,WAAW,YAAY;AAC/G,SAAO;AAAA,IACL;AAAA,QACA,eAAAC,SAAqB,EAAE,YAAY,SAAS,CAAC;AAAA,IAC7C,WAAW;AAAA,EACb;AAEA,SAAO;AACT;AAEO,SAAS,YAAY;AAC1B,QAAM,aAAS,uBAAO,EAAE,aAAa,KAAK,CAAC;AAG3C,SAAO,IAAI,CAAC,mDAAmD,GAAG,CAAC,KAAK,QAAQ;AAC9E,UAAM,EAAE,MAAM,UAAU,IAAI,QAAQ,IAAI,IAAI;AAC5C,QAAI,SAAS,GAAG,IAAI,OAAO,eAAe,CAAC,0BAA0B,IAAI,IAAI,QAAQ,IAAI,EAAE,IAAI,OAAO,IAAI,IAAI,EAAE;AAAA,EAClH,CAAC;AAGD,SAAO,IAAI,gEAAgE,CAAC,KAAK,QAAQ;AACvF,UAAM,EAAE,MAAM,UAAU,IAAI,QAAQ,IAAI,IAAI;AAC5C,QAAI;AAAA,MACF,GAAG,IAAI,OAAO,eAAe,CAAC,0BAA0B,IAAI,IAAI,QAAQ,IAAI,EAAE,IAAI,OAAO,IAAI,IAAI;AAAA,IACnG;AAAA,EACF,CAAC;AAGD,SAAO,KAAK,qDAAqD,CAAC,KAAK,QAAQ;AAC7E,UAAM,EAAE,MAAM,UAAU,IAAI,QAAQ,IAAI,IAAI;AAC5C,QAAI;AAAA,MACF;AAAA,MACA,GAAG,IAAI,OAAO,eAAe,CAAC,0BAA0B,IAAI,IAAI,QAAQ,IAAI,EAAE,IAAI,OAAO,IAAI,IAAI;AAAA,IACnG;AAAA,EACF,CAAC;AAED,SAAO;AACT;AAEO,MAAM,mBAAmB,CAAC;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AACF,MAIM;AACJ,QAAM,aAAS,uBAAO,EAAE,aAAa,KAAK,CAAC;AAC3C,SAAO,IAAI,MAAM,OAAO,EAAE,UAAU,WAAW,CAAC,CAAC;AACjD,SAAO,IAAI,KAAK,UAAU,CAAC;AAE3B,SAAO;AACT;",
6
6
  "names": ["import_routes", "ViewReportController", "viewSyncReportRoutes", "viewAyncReportRoutes"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../../../src/dpr/routes/journeys/view-report/sync/dashboard/controller.ts"],
3
+ "sources": ["../../../../../../dpr/routes/journeys/view-report/sync/dashboard/controller.ts"],
4
4
  "sourcesContent": ["import { RequestHandler } from 'express'\nimport ErrorHandler from '../../../../../utils/ErrorHandler'\nimport { Services } from '../../../../../types/Services'\nimport SyncDashboardUtils from './utils'\nimport ViewReportUtils from '../../utils'\n\nclass ViewSyncDashboardController {\n layoutPath: string\n\n services: Services\n\n constructor(layoutPath: string, services: Services) {\n this.layoutPath = layoutPath\n this.services = services\n }\n\n GET: RequestHandler = async (req, res, next) => {\n try {\n const renderData = await SyncDashboardUtils.renderSyncDashboard({ req, res, services: this.services })\n\n res.render(`dpr/routes/journeys/view-report/dashboard`, {\n layoutPath: this.layoutPath,\n ...renderData,\n })\n } catch (error) {\n req.body ??= {}\n req.body.title = `Dashboard Failed`\n req.body.errorDescription = 'We were unable to show this dashboard for the following reason:'\n req.body.error = new ErrorHandler(error).formatError()\n next(error)\n }\n }\n\n applyFilters: RequestHandler = async (req, res, _next) => {\n await ViewReportUtils.applyDashboardInteractiveQuery(req, res, this.services, 'filters')\n }\n}\n\nexport { ViewSyncDashboardController }\nexport default ViewSyncDashboardController\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,0BAAyB;AAEzB,mBAA+B;AAC/B,IAAAA,gBAA4B;AAE5B,MAAM,4BAA4B;AAAA,EAChC;AAAA,EAEA;AAAA,EAEA,YAAY,YAAoB,UAAoB;AAClD,SAAK,aAAa;AAClB,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,MAAsB,OAAO,KAAK,KAAK,SAAS;AAC9C,QAAI;AACF,YAAM,aAAa,MAAM,aAAAC,QAAmB,oBAAoB,EAAE,KAAK,KAAK,UAAU,KAAK,SAAS,CAAC;AAErG,UAAI,OAAO,6CAA6C;AAAA,QACtD,YAAY,KAAK;AAAA,QACjB,GAAG;AAAA,MACL,CAAC;AAAA,IACH,SAAS,OAAO;AACd,UAAI,SAAS,CAAC;AACd,UAAI,KAAK,QAAQ;AACjB,UAAI,KAAK,mBAAmB;AAC5B,UAAI,KAAK,QAAQ,IAAI,oBAAAC,QAAa,KAAK,EAAE,YAAY;AACrD,WAAK,KAAK;AAAA,IACZ;AAAA,EACF;AAAA,EAEA,eAA+B,OAAO,KAAK,KAAK,UAAU;AACxD,UAAM,cAAAC,QAAgB,+BAA+B,KAAK,KAAK,KAAK,UAAU,SAAS;AAAA,EACzF;AACF;AAGA,IAAO,qBAAQ;",
6
6
  "names": ["import_utils", "SyncDashboardUtils", "ErrorHandler", "ViewReportUtils"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../../../src/dpr/routes/journeys/view-report/sync/dashboard/routes.ts"],
3
+ "sources": ["../../../../../../dpr/routes/journeys/view-report/sync/dashboard/routes.ts"],
4
4
  "sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { Router } from 'express'\nimport ViewSyncDashboardController from './controller'\nimport { Services } from '../../../../../types/Services'\n\nexport function routes({ layoutPath, services }: { layoutPath: string; services: Services }) {\n const router = Router({ mergeParams: true })\n const controller = new ViewSyncDashboardController(layoutPath, services)\n\n router.get([`/`], controller.GET)\n\n // Interactive controls\n router.post('/apply-filters', controller.applyFilters)\n\n return router\n}\n\nexport default routes\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qBAAuB;AACvB,wBAAwC;AAGjC,SAAS,OAAO,EAAE,YAAY,SAAS,GAA+C;AAC3F,QAAM,aAAS,uBAAO,EAAE,aAAa,KAAK,CAAC;AAC3C,QAAM,aAAa,IAAI,kBAAAA,QAA4B,YAAY,QAAQ;AAEvE,SAAO,IAAI,CAAC,GAAG,GAAG,WAAW,GAAG;AAGhC,SAAO,KAAK,kBAAkB,WAAW,YAAY;AAErD,SAAO;AACT;AAEA,IAAO,iBAAQ;",
6
6
  "names": ["ViewSyncDashboardController"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../../../src/dpr/routes/journeys/view-report/sync/dashboard/utils.ts"],
3
+ "sources": ["../../../../../../dpr/routes/journeys/view-report/sync/dashboard/utils.ts"],
4
4
  "sourcesContent": ["import type { Request, Response } from 'express'\nimport Dict = NodeJS.Dict\n\nimport type { Services } from '../../../../../types/Services'\nimport { ReportType, RequestStatus } from '../../../../../types/UserReports'\nimport { FilterValue } from '../../../../../components/_filters/types'\nimport SelectedFiltersUtils from '../../../../../components/_filters/filters-selected/utils'\nimport LocalsHelper from '../../../../../utils/localsHelper'\nimport UserStoreItemBuilder from '../../../../../utils/UserStoreItemBuilder'\nimport { DashboardDataResponse } from '../../../../../types/Metrics'\nimport AsyncDashboardUtils from '../../async/dashboard/utils'\nimport { DashboardSection } from '../../../../../components/_dashboards/dashboard-visualisation/types'\nimport { components } from '../../../../../types/api'\nimport ReportActionsUtils from '../../../../../components/_reports/report-actions/utils'\n\nconst setAsRecentlyViewed = async ({\n req,\n services,\n reportName,\n name,\n description,\n reportId,\n id,\n userId,\n filters,\n}: {\n req: Request\n services: Services\n reportName: string\n name: string\n description: string\n reportId: string\n id: string\n userId: string\n filters: FilterValue[]\n}) => {\n const stateData = {\n type: ReportType.DASHBOARD,\n reportId,\n id,\n reportName,\n description,\n name,\n }\n\n const interactiveQueryData: { query: Dict<string>; querySummary: Array<Dict<string>> } = {\n query: <Dict<string>>req.query,\n querySummary: SelectedFiltersUtils.getQuerySummary(<Dict<string>>req.query, filters),\n }\n\n const recentlyViewedData = new UserStoreItemBuilder(stateData)\n .addInteractiveQuery(interactiveQueryData)\n .addStatus(RequestStatus.READY)\n .addTimestamp()\n .addReportUrls(req)\n .build()\n\n await services.recentlyViewedService.setRecentlyViewed(recentlyViewedData, userId)\n}\n\nexport const renderSyncDashboard = async ({\n req,\n res,\n services,\n}: {\n req: Request\n res: Response\n services: Services\n}) => {\n const { token, csrfToken, dprUser, nestedBaseUrl } = LocalsHelper.getValues(res)\n const { reportId, id } = req.params\n const fullUrl = `${req.protocol}://${req.get('host')}${req.originalUrl}`\n\n const {\n query,\n filters: filterData,\n reportDefinition,\n dashboardDefinition,\n } = await AsyncDashboardUtils.getDefinitionData({\n req,\n res,\n services,\n })\n\n const dashboardData: DashboardDataResponse[][] = await services.dashboardService.getSyncDashboard(\n token,\n reportId,\n reportId,\n query,\n )\n const flattenedData: DashboardDataResponse[] = dashboardData.flat()\n\n // Get the dashboard parts\n const sections: DashboardSection[] = AsyncDashboardUtils.getSections(dashboardDefinition, flattenedData, query)\n\n await setAsRecentlyViewed({\n req,\n services,\n reportName: reportDefinition.name,\n name: dashboardDefinition.name,\n description: dashboardDefinition.description || reportDefinition.description || '',\n reportId,\n id,\n userId: dprUser.id,\n filters: filterData.filters,\n })\n\n return {\n dashboardData: {\n token,\n id,\n reportId,\n name: dashboardDefinition.name,\n description: dashboardDefinition.description,\n reportName: reportDefinition.name,\n bookmarked: await services.bookmarkService.isBookmarked(id, reportId, dprUser.id),\n nestedBaseUrl,\n csrfToken,\n sections,\n filters: filterData,\n type: ReportType.DASHBOARD,\n actions: setActions(dashboardDefinition, reportDefinition, fullUrl),\n },\n }\n}\n\nexport const setActions = (\n definition: components['schemas']['DashboardDefinition'],\n summaryDefinition: components['schemas']['ReportDefinitionSummary'],\n url: string,\n) => {\n const { name: reportName } = summaryDefinition\n const { name } = definition\n\n return ReportActionsUtils.getActions({\n share: {\n reportName,\n name,\n url,\n },\n copy: {\n url,\n },\n })\n}\n\nexport default {\n renderSyncDashboard,\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,yBAA0C;AAE1C,mBAAiC;AACjC,0BAAyB;AACzB,kCAAiC;AAEjC,IAAAA,gBAAgC;AAGhC,IAAAA,gBAA+B;AAE/B,MAAM,sBAAsB,OAAO;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAUM;AACJ,QAAM,YAAY;AAAA,IAChB,MAAM,8BAAW;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,QAAM,uBAAmF;AAAA,IACvF,OAAqB,IAAI;AAAA,IACzB,cAAc,aAAAC,QAAqB,gBAA8B,IAAI,OAAO,OAAO;AAAA,EACrF;AAEA,QAAM,qBAAqB,IAAI,4BAAAC,QAAqB,SAAS,EAC1D,oBAAoB,oBAAoB,EACxC,UAAU,iCAAc,KAAK,EAC7B,aAAa,EACb,cAAc,GAAG,EACjB,MAAM;AAET,QAAM,SAAS,sBAAsB,kBAAkB,oBAAoB,MAAM;AACnF;AAEO,MAAM,sBAAsB,OAAO;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AACF,MAIM;AACJ,QAAM,EAAE,OAAO,WAAW,SAAS,cAAc,IAAI,oBAAAC,QAAa,UAAU,GAAG;AAC/E,QAAM,EAAE,UAAU,GAAG,IAAI,IAAI;AAC7B,QAAM,UAAU,GAAG,IAAI,QAAQ,MAAM,IAAI,IAAI,MAAM,CAAC,GAAG,IAAI,WAAW;AAEtE,QAAM;AAAA,IACJ;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,EACF,IAAI,MAAM,cAAAC,QAAoB,kBAAkB;AAAA,IAC9C;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,gBAA2C,MAAM,SAAS,iBAAiB;AAAA,IAC/E;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,QAAM,gBAAyC,cAAc,KAAK;AAGlE,QAAM,WAA+B,cAAAA,QAAoB,YAAY,qBAAqB,eAAe,KAAK;AAE9G,QAAM,oBAAoB;AAAA,IACxB;AAAA,IACA;AAAA,IACA,YAAY,iBAAiB;AAAA,IAC7B,MAAM,oBAAoB;AAAA,IAC1B,aAAa,oBAAoB,eAAe,iBAAiB,eAAe;AAAA,IAChF;AAAA,IACA;AAAA,IACA,QAAQ,QAAQ;AAAA,IAChB,SAAS,WAAW;AAAA,EACtB,CAAC;AAED,SAAO;AAAA,IACL,eAAe;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM,oBAAoB;AAAA,MAC1B,aAAa,oBAAoB;AAAA,MACjC,YAAY,iBAAiB;AAAA,MAC7B,YAAY,MAAM,SAAS,gBAAgB,aAAa,IAAI,UAAU,QAAQ,EAAE;AAAA,MAChF;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS;AAAA,MACT,MAAM,8BAAW;AAAA,MACjB,SAAS,WAAW,qBAAqB,kBAAkB,OAAO;AAAA,IACpE;AAAA,EACF;AACF;AAEO,MAAM,aAAa,CACxB,YACA,mBACA,QACG;AACH,QAAM,EAAE,MAAM,WAAW,IAAI;AAC7B,QAAM,EAAE,KAAK,IAAI;AAEjB,SAAO,cAAAC,QAAmB,WAAW;AAAA,IACnC,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,MAAM;AAAA,MACJ;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEA,IAAO,gBAAQ;AAAA,EACb;AACF;",
6
6
  "names": ["import_utils", "SelectedFiltersUtils", "UserStoreItemBuilder", "LocalsHelper", "AsyncDashboardUtils", "ReportActionsUtils"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../../../src/dpr/routes/journeys/view-report/sync/load-report/controller.ts"],
3
+ "sources": ["../../../../../../dpr/routes/journeys/view-report/sync/load-report/controller.ts"],
4
4
  "sourcesContent": ["import { RequestHandler } from 'express'\nimport { Services } from '../../../../../types/Services'\nimport LocalsHelper from '../../../../../utils/localsHelper'\nimport { ReportType } from '../../../../../types/UserReports'\nimport { components } from '../../../../../types/api'\n\nclass LoadReportController {\n layoutPath: string\n\n services: Services\n\n constructor(layoutPath: string, services: Services) {\n this.layoutPath = layoutPath\n this.services = services\n }\n\n GET: RequestHandler = async (req, res, next) => {\n try {\n const { token } = LocalsHelper.getValues(res)\n const { reportId, id, type } = req.params\n const { dataProductDefinitionsPath } = req.query\n\n const definitionSummary = await this.services.reportingService.getDefinitionSummary(\n token,\n reportId,\n <string | undefined>dataProductDefinitionsPath,\n )\n\n let definition:\n | components['schemas']['SingleVariantReportDefinition']\n | components['schemas']['DashboardDefinition']\n\n let classification\n let description\n let name\n if (type === ReportType.REPORT) {\n definition = await this.services.reportingService.getDefinition(\n token,\n reportId,\n id,\n <string | undefined>dataProductDefinitionsPath,\n )\n const { variant } = definition\n classification = variant.classification\n description = variant.description\n name = variant.name\n } else {\n definition = await this.services.dashboardService.getDefinition(\n token,\n reportId,\n id,\n <string | undefined>dataProductDefinitionsPath,\n )\n description = definition.description\n name = definition.name\n }\n const { name: reportName, description: reportDescription } = definitionSummary\n\n const renderData = {\n reportId,\n id,\n type,\n reportName,\n name,\n classification,\n description: description || reportDescription,\n }\n\n res.render(`dpr/routes/journeys/view-report/sync/load-report/view`, {\n renderData,\n layoutPath: this.layoutPath,\n })\n } catch (error) {\n next(error)\n }\n }\n}\n\nexport { LoadReportController }\nexport default LoadReportController\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,0BAAyB;AACzB,yBAA2B;AAG3B,MAAM,qBAAqB;AAAA,EACzB;AAAA,EAEA;AAAA,EAEA,YAAY,YAAoB,UAAoB;AAClD,SAAK,aAAa;AAClB,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,MAAsB,OAAO,KAAK,KAAK,SAAS;AAC9C,QAAI;AACF,YAAM,EAAE,MAAM,IAAI,oBAAAA,QAAa,UAAU,GAAG;AAC5C,YAAM,EAAE,UAAU,IAAI,KAAK,IAAI,IAAI;AACnC,YAAM,EAAE,2BAA2B,IAAI,IAAI;AAE3C,YAAM,oBAAoB,MAAM,KAAK,SAAS,iBAAiB;AAAA,QAC7D;AAAA,QACA;AAAA,QACoB;AAAA,MACtB;AAEA,UAAI;AAIJ,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI,SAAS,8BAAW,QAAQ;AAC9B,qBAAa,MAAM,KAAK,SAAS,iBAAiB;AAAA,UAChD;AAAA,UACA;AAAA,UACA;AAAA,UACoB;AAAA,QACtB;AACA,cAAM,EAAE,QAAQ,IAAI;AACpB,yBAAiB,QAAQ;AACzB,sBAAc,QAAQ;AACtB,eAAO,QAAQ;AAAA,MACjB,OAAO;AACL,qBAAa,MAAM,KAAK,SAAS,iBAAiB;AAAA,UAChD;AAAA,UACA;AAAA,UACA;AAAA,UACoB;AAAA,QACtB;AACA,sBAAc,WAAW;AACzB,eAAO,WAAW;AAAA,MACpB;AACA,YAAM,EAAE,MAAM,YAAY,aAAa,kBAAkB,IAAI;AAE7D,YAAM,aAAa;AAAA,QACjB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,aAAa,eAAe;AAAA,MAC9B;AAEA,UAAI,OAAO,yDAAyD;AAAA,QAClE;AAAA,QACA,YAAY,KAAK;AAAA,MACnB,CAAC;AAAA,IACH,SAAS,OAAO;AACd,WAAK,KAAK;AAAA,IACZ;AAAA,EACF;AACF;AAGA,IAAO,qBAAQ;",
6
6
  "names": ["LocalsHelper"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../../../src/dpr/routes/journeys/view-report/sync/load-report/routes.ts"],
3
+ "sources": ["../../../../../../dpr/routes/journeys/view-report/sync/load-report/routes.ts"],
4
4
  "sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { Router } from 'express'\nimport LoadReportController from './controller'\nimport { Services } from '../../../../../types/Services'\n\nexport function routes({ layoutPath, services }: { layoutPath: string; services: Services }) {\n const router = Router({ mergeParams: true })\n\n const controller = new LoadReportController(layoutPath, services)\n router.get(`/`, controller.GET)\n\n return router\n}\n\nexport default routes\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qBAAuB;AACvB,wBAAiC;AAG1B,SAAS,OAAO,EAAE,YAAY,SAAS,GAA+C;AAC3F,QAAM,aAAS,uBAAO,EAAE,aAAa,KAAK,CAAC;AAE3C,QAAM,aAAa,IAAI,kBAAAA,QAAqB,YAAY,QAAQ;AAChE,SAAO,IAAI,KAAK,WAAW,GAAG;AAE9B,SAAO;AACT;AAEA,IAAO,iBAAQ;",
6
6
  "names": ["LoadReportController"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../../../src/dpr/routes/journeys/view-report/sync/report/controller.ts"],
3
+ "sources": ["../../../../../../dpr/routes/journeys/view-report/sync/report/controller.ts"],
4
4
  "sourcesContent": ["import { RequestHandler } from 'express'\nimport ErrorHandler from '../../../../../utils/ErrorHandler'\nimport { Services } from '../../../../../types/Services'\nimport SyncReportUtils from './utils'\nimport { FiltersType } from '../../../../../components/_filters/filtersTypeEnum'\nimport PersonalisationUtils from '../../../../../utils/Personalisation/personalisationUtils'\nimport ViewReportUtils from '../../utils'\n\nclass ViewSyncReportController {\n layoutPath: string\n\n services: Services\n\n constructor(layoutPath: string, services: Services) {\n this.layoutPath = layoutPath\n this.services = services\n }\n\n GET: RequestHandler = async (req, res, next) => {\n try {\n const renderData = await SyncReportUtils.getReport({ req, res, services: this.services })\n res.render(`dpr/routes/journeys/view-report/report`, {\n layoutPath: this.layoutPath,\n ...renderData,\n })\n } catch (error) {\n req.body ??= {}\n req.body.title = `Report Failed`\n req.body.errorDescription = 'We were unable to show this report for the following reason:'\n req.body.error = new ErrorHandler(error).formatError()\n next(error)\n }\n }\n\n saveDefaultFilterValues: RequestHandler = async (req, res, next) => {\n try {\n PersonalisationUtils.saveDefaults(FiltersType.INTERACTIVE, res, req, this.services)\n res.redirect(`${req.baseUrl}?defaultsSaved=true`)\n } catch (error) {\n req.body = {\n title: 'Failed to save defaults',\n error: new ErrorHandler(error).formatError(),\n ...(req.body && { ...req.body }),\n }\n next(error)\n }\n }\n\n removeDefaultFilterValues: RequestHandler = async (req, res, next) => {\n try {\n PersonalisationUtils.removeDefaults(FiltersType.INTERACTIVE, res, req, this.services)\n res.redirect(req.baseUrl)\n } catch (error) {\n req.body = {\n title: 'Failed to remove defaults',\n error: new ErrorHandler(error).formatError(),\n ...(req.body && { ...req.body }),\n }\n next(error)\n }\n }\n\n applyFilters: RequestHandler = async (req, res, _next) => {\n await ViewReportUtils.applyReportInteractiveQuery(req, res, this.services, 'filters')\n }\n\n applyColumns: RequestHandler = async (req, res, _next) => {\n await ViewReportUtils.applyReportInteractiveQuery(req, res, this.services, 'columns')\n }\n}\n\nexport { ViewSyncReportController }\nexport default ViewSyncReportController\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,0BAAyB;AAEzB,mBAA4B;AAC5B,6BAA4B;AAC5B,kCAAiC;AACjC,IAAAA,gBAA4B;AAE5B,MAAM,yBAAyB;AAAA,EAC7B;AAAA,EAEA;AAAA,EAEA,YAAY,YAAoB,UAAoB;AAClD,SAAK,aAAa;AAClB,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,MAAsB,OAAO,KAAK,KAAK,SAAS;AAC9C,QAAI;AACF,YAAM,aAAa,MAAM,aAAAC,QAAgB,UAAU,EAAE,KAAK,KAAK,UAAU,KAAK,SAAS,CAAC;AACxF,UAAI,OAAO,0CAA0C;AAAA,QACnD,YAAY,KAAK;AAAA,QACjB,GAAG;AAAA,MACL,CAAC;AAAA,IACH,SAAS,OAAO;AACd,UAAI,SAAS,CAAC;AACd,UAAI,KAAK,QAAQ;AACjB,UAAI,KAAK,mBAAmB;AAC5B,UAAI,KAAK,QAAQ,IAAI,oBAAAC,QAAa,KAAK,EAAE,YAAY;AACrD,WAAK,KAAK;AAAA,IACZ;AAAA,EACF;AAAA,EAEA,0BAA0C,OAAO,KAAK,KAAK,SAAS;AAClE,QAAI;AACF,kCAAAC,QAAqB,aAAa,mCAAY,aAAa,KAAK,KAAK,KAAK,QAAQ;AAClF,UAAI,SAAS,GAAG,IAAI,OAAO,qBAAqB;AAAA,IAClD,SAAS,OAAO;AACd,UAAI,OAAO;AAAA,QACT,OAAO;AAAA,QACP,OAAO,IAAI,oBAAAD,QAAa,KAAK,EAAE,YAAY;AAAA,QAC3C,GAAI,IAAI,QAAQ,EAAE,GAAG,IAAI,KAAK;AAAA,MAChC;AACA,WAAK,KAAK;AAAA,IACZ;AAAA,EACF;AAAA,EAEA,4BAA4C,OAAO,KAAK,KAAK,SAAS;AACpE,QAAI;AACF,kCAAAC,QAAqB,eAAe,mCAAY,aAAa,KAAK,KAAK,KAAK,QAAQ;AACpF,UAAI,SAAS,IAAI,OAAO;AAAA,IAC1B,SAAS,OAAO;AACd,UAAI,OAAO;AAAA,QACT,OAAO;AAAA,QACP,OAAO,IAAI,oBAAAD,QAAa,KAAK,EAAE,YAAY;AAAA,QAC3C,GAAI,IAAI,QAAQ,EAAE,GAAG,IAAI,KAAK;AAAA,MAChC;AACA,WAAK,KAAK;AAAA,IACZ;AAAA,EACF;AAAA,EAEA,eAA+B,OAAO,KAAK,KAAK,UAAU;AACxD,UAAM,cAAAE,QAAgB,4BAA4B,KAAK,KAAK,KAAK,UAAU,SAAS;AAAA,EACtF;AAAA,EAEA,eAA+B,OAAO,KAAK,KAAK,UAAU;AACxD,UAAM,cAAAA,QAAgB,4BAA4B,KAAK,KAAK,KAAK,UAAU,SAAS;AAAA,EACtF;AACF;AAGA,IAAO,qBAAQ;",
6
6
  "names": ["import_utils", "SyncReportUtils", "ErrorHandler", "PersonalisationUtils", "ViewReportUtils"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../../../src/dpr/routes/journeys/view-report/sync/report/routes.ts"],
3
+ "sources": ["../../../../../../dpr/routes/journeys/view-report/sync/report/routes.ts"],
4
4
  "sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { Router } from 'express'\nimport ViewSyncReportController from './controller'\nimport { Services } from '../../../../../types/Services'\n\nexport function routes({ layoutPath, services }: { layoutPath: string; services: Services }) {\n const router = Router({ mergeParams: true })\n const controller = new ViewSyncReportController(layoutPath, services)\n\n router.get([`/`, `/download-disabled`], controller.GET)\n\n // Interactive controls\n router.post('/apply-filters', controller.applyFilters)\n router.post('/apply-columns', controller.applyColumns)\n\n // User defined defaults\n router.post('/save-defaults', controller.saveDefaultFilterValues)\n router.post('/remove-defaults', controller.removeDefaultFilterValues)\n\n return router\n}\n\nexport default routes\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qBAAuB;AACvB,wBAAqC;AAG9B,SAAS,OAAO,EAAE,YAAY,SAAS,GAA+C;AAC3F,QAAM,aAAS,uBAAO,EAAE,aAAa,KAAK,CAAC;AAC3C,QAAM,aAAa,IAAI,kBAAAA,QAAyB,YAAY,QAAQ;AAEpE,SAAO,IAAI,CAAC,KAAK,oBAAoB,GAAG,WAAW,GAAG;AAGtD,SAAO,KAAK,kBAAkB,WAAW,YAAY;AACrD,SAAO,KAAK,kBAAkB,WAAW,YAAY;AAGrD,SAAO,KAAK,kBAAkB,WAAW,uBAAuB;AAChE,SAAO,KAAK,oBAAoB,WAAW,yBAAyB;AAEpE,SAAO;AACT;AAEA,IAAO,iBAAQ;",
6
6
  "names": ["ViewSyncReportController"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../../../src/dpr/routes/journeys/view-report/sync/report/utils.ts"],
3
+ "sources": ["../../../../../../dpr/routes/journeys/view-report/sync/report/utils.ts"],
4
4
  "sourcesContent": ["import parseUrl from 'parseurl'\nimport type { Request, Response } from 'express'\nimport Dict = NodeJS.Dict\nimport type { components } from '../../../../../types/api'\nimport type { DataTable } from '../../../../../utils/DataTableBuilder/types'\nimport type { ListWithWarnings } from '../../../../../data/types'\nimport type { Columns } from '../../../../../components/_reports/report-columns-form/types'\nimport type { Services } from '../../../../../types/Services'\nimport type { DownloadActionParams } from '../../../../../components/_reports/report-actions/types'\nimport { LoadType, ReportType, RequestStatus } from '../../../../../types/UserReports'\nimport ReportQuery from '../../../../../types/ReportQuery'\nimport { Template } from '../../../../../types/Templates'\nimport { FilterValue } from '../../../../../components/_filters/types'\n\nimport PaginationUtils from '../../../../../components/_reports/report-pagination/utils'\nimport TotalsUtils from '../../../../../components/_reports/report-totals/utils'\nimport ColumnUtils from '../../../../../components/_reports/report-columns-form/utils'\nimport ReportActionsUtils from '../../../../../components/_reports/report-actions/utils'\nimport FiltersUtils from '../../../../../components/_filters/utils'\nimport SelectedFiltersUtils from '../../../../../components/_filters/filters-selected/utils'\nimport LocalsHelper from '../../../../../utils/localsHelper'\nimport UserStoreItemBuilder from '../../../../../utils/UserStoreItemBuilder'\n\nimport DataTableBuilder from '../../../../../utils/DataTableBuilder/DataTableBuilder'\nimport { FiltersType } from '../../../../../components/_filters/filtersTypeEnum'\n\nexport const setActions = (\n csrfToken: string,\n reportDefinition: components['schemas']['SingleVariantReportDefinition'],\n columns: Columns,\n url: string,\n canDownload: boolean,\n count: number,\n dataProductDefinitionsPath: string,\n currentUrl: string,\n currentQueryParams: string,\n nestedBaseUrl: string,\n) => {\n const { name: reportName, variant, id: reportId } = reportDefinition\n const { name, id, printable } = variant\n\n const downloadConfig: DownloadActionParams = {\n enabled: count > 0,\n name,\n reportName,\n csrfToken,\n reportId,\n id,\n columns: columns.value,\n loadType: LoadType.SYNC,\n definitionPath: dataProductDefinitionsPath,\n canDownload,\n currentUrl,\n currentQueryParams,\n nestedBaseUrl,\n }\n\n return ReportActionsUtils.getActions({\n download: downloadConfig,\n print: {\n enabled: Boolean(printable),\n },\n share: {\n reportName,\n name,\n url,\n },\n copy: {\n url,\n },\n })\n}\n\nconst setAsRecentlyViewed = async ({\n req,\n services,\n reportName,\n name,\n description,\n reportId,\n id,\n userId,\n filters,\n}: {\n req: Request\n services: Services\n reportName: string\n name: string\n description: string\n reportId: string\n id: string\n userId: string\n filters: FilterValue[]\n}) => {\n const stateData = {\n type: ReportType.REPORT,\n reportId,\n id,\n reportName,\n description,\n name,\n }\n\n const interactiveQueryData: { query: Dict<string>; querySummary: Array<Dict<string>> } = {\n query: <Dict<string>>req.query,\n querySummary: SelectedFiltersUtils.getQuerySummary(<Dict<string>>req.query, filters),\n }\n\n const recentlyViewedData = new UserStoreItemBuilder(stateData)\n .addInteractiveQuery(interactiveQueryData)\n .addStatus(RequestStatus.READY)\n .addTimestamp()\n .addReportUrls(req)\n .build()\n\n await services.recentlyViewedService?.setRecentlyViewed(recentlyViewedData, userId)\n}\n\nexport const getReportData = async ({\n services,\n req,\n token,\n reportId,\n id,\n dataProductDefinitionsPath,\n}: {\n services: Services\n req: Request\n token: string\n reportId: string\n id: string\n dataProductDefinitionsPath?: string\n}) => {\n const reportDefinition = await services.reportingService.getDefinition(\n token,\n reportId,\n id,\n dataProductDefinitionsPath,\n )\n const { variant } = reportDefinition\n const { resourceName, specification } = variant\n\n const reportQuery = new ReportQuery({\n fields: specification?.fields || [],\n template: (specification?.template as Template) || 'list',\n queryParams: req.query,\n definitionsPath: <string>dataProductDefinitionsPath,\n })\n\n return {\n reportData: await services.reportingService.getListWithWarnings(resourceName, token, reportQuery),\n reportDefinition,\n reportQuery,\n }\n}\n\nexport const getReport = async ({ req, res, services }: { req: Request; res: Response; services: Services }) => {\n const { token, csrfToken, dprUser } = LocalsHelper.getValues(res)\n const { reportId, id } = req.params\n const dataProductDefinitionsPath = <string>req.query['dataProductDefinitionsPath']\n\n const { reportData, reportDefinition, reportQuery } = await getReportData({\n services,\n req,\n token,\n reportId,\n id,\n dataProductDefinitionsPath,\n })\n const count = await services.reportingService.getCount(reportDefinition.variant.resourceName, token, reportQuery)\n const canDownload = Boolean(\n await services.downloadPermissionService?.downloadEnabledForReport(dprUser.id, reportId, id),\n )\n const bookmarked = Boolean(await services.bookmarkService?.isBookmarked(id, reportId, dprUser.id))\n\n const renderData = await getRenderData({\n req,\n res,\n services,\n reportDefinition,\n reportQuery,\n reportData,\n count,\n csrfToken,\n canDownload,\n })\n\n if (Object.keys(renderData).length) {\n await setAsRecentlyViewed({\n req,\n services,\n reportName: renderData.reportName,\n name: renderData.name,\n description: renderData.description || '',\n reportId,\n id,\n userId: dprUser.id,\n filters: renderData.filterData.filters,\n })\n }\n\n return {\n renderData: {\n ...renderData,\n csrfToken,\n loadType: LoadType.SYNC,\n reportId,\n id,\n bookmarked,\n dataProductDefinitionsPath,\n },\n }\n}\n\nexport const getReportRenderData = async ({\n req,\n res,\n services,\n count,\n specification,\n reportQuery,\n data,\n filtersType,\n}: {\n req: Request\n res?: Response\n services?: Services\n count: number\n specification: components['schemas']['Specification']\n reportQuery: ReportQuery\n data: Dict<string>[]\n filtersType?: FiltersType\n}) => {\n const url = parseUrl(req)\n const fullUrl = `${req.protocol}://${req.get('host')}${req.originalUrl}`\n const pathname = url?.search ? req.originalUrl.split(url.search)[0] : req.originalUrl\n\n const dataTable: DataTable = new DataTableBuilder(specification.fields)\n .withHeaderSortOptions(reportQuery)\n .buildTable(data)\n\n let pagination\n let totals\n if (url) {\n pagination = PaginationUtils.getPaginationData(url, count, req)\n totals = TotalsUtils.getTotals(\n pagination.pageSize,\n pagination.currentPage,\n pagination.totalRows,\n dataTable.rowCount,\n )\n }\n\n const filterData = await FiltersUtils.getFilters({\n fields: specification.fields,\n req,\n res,\n services,\n filtersType: filtersType || FiltersType.INTERACTIVE,\n })\n\n const columns = ColumnUtils.getColumns(specification, req)\n\n return {\n dataTable: [dataTable],\n totals,\n filterData,\n columns,\n pagination,\n reportUrl: pathname.replace('/download-disabled', '').replace('/download-disabled?', ''),\n reportSearch: url?.search,\n encodedSearch: url?.search ? encodeURIComponent(url.search) : undefined,\n fullUrl,\n }\n}\n\nexport const getRenderData = async ({\n req,\n res,\n services,\n reportDefinition,\n reportQuery,\n reportData,\n count,\n csrfToken,\n canDownload,\n}: {\n req: Request\n res: Response\n services: Services\n reportDefinition: components['schemas']['SingleVariantReportDefinition']\n reportQuery: ReportQuery\n reportData: ListWithWarnings\n csrfToken: string\n count: number\n canDownload: boolean\n}) => {\n const { dataProductDefinitionsPath } = req.query\n const { nestedBaseUrl } = LocalsHelper.getValues(res)\n const { name: reportName, description: reportDescription } = reportDefinition\n const { specification, name, description, classification, printable } = reportDefinition.variant\n const { data } = reportData\n\n if (!specification) {\n throw new Error('No specicication found in definition')\n }\n\n const reportRenderData = await getReportRenderData({ req, res, services, count, specification, reportQuery, data })\n\n const actions = setActions(\n csrfToken,\n reportDefinition,\n reportRenderData.columns,\n `${req.protocol}://${req.get('host')}${req.originalUrl}`,\n canDownload,\n count,\n <string>dataProductDefinitionsPath,\n reportRenderData.reportUrl,\n reportRenderData.reportSearch || '',\n nestedBaseUrl,\n )\n\n return {\n ...reportRenderData,\n reportName,\n name,\n description: description || reportDescription,\n count,\n type: ReportType.REPORT,\n classification,\n printable,\n actions,\n warnings: reportData.warnings,\n canDownload,\n nestedBaseUrl,\n }\n}\n\nexport default {\n getRenderData,\n getReport,\n getReportData,\n getReportRenderData,\n setActions,\n}\n"],
5
5
  "mappings": "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",
6
6
  "names": ["import_utils", "ReportActionsUtils", "SelectedFiltersUtils", "UserStoreItemBuilder", "ReportQuery", "LocalsHelper", "parseUrl", "DataTableBuilder", "PaginationUtils", "TotalsUtils", "FiltersUtils", "ColumnUtils"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../../src/dpr/routes/journeys/view-report/sync/routes.ts"],
3
+ "sources": ["../../../../../dpr/routes/journeys/view-report/sync/routes.ts"],
4
4
  "sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { Router } from 'express'\nimport { Services } from '../../../../types/Services'\n\n// Routes\nimport loadReportRoutes from './load-report/routes'\nimport viewReportRoutes from './report/routes'\nimport viewDashboardRoutes from './dashboard/routes'\n\n// middleware\nimport reportAuthoriser from '../../../../middleware/reportAuthoriser'\n\nexport function routes({ layoutPath, services }: { layoutPath: string; services: Services }) {\n const router = Router({ mergeParams: true })\n\n router.use('/report', reportAuthoriser(services, layoutPath), viewReportRoutes({ layoutPath, services }))\n router.use('/dashboard', reportAuthoriser(services, layoutPath), viewDashboardRoutes({ layoutPath, services }))\n router.use(`/load-report`, loadReportRoutes({ layoutPath, services }))\n\n return router\n}\n\nexport default routes\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qBAAuB;AAIvB,oBAA6B;AAC7B,IAAAA,iBAA6B;AAC7B,IAAAA,iBAAgC;AAGhC,8BAA6B;AAEtB,SAAS,OAAO,EAAE,YAAY,SAAS,GAA+C;AAC3F,QAAM,aAAS,uBAAO,EAAE,aAAa,KAAK,CAAC;AAE3C,SAAO,IAAI,eAAW,wBAAAC,SAAiB,UAAU,UAAU,OAAG,eAAAC,SAAiB,EAAE,YAAY,SAAS,CAAC,CAAC;AACxG,SAAO,IAAI,kBAAc,wBAAAD,SAAiB,UAAU,UAAU,OAAG,eAAAE,SAAoB,EAAE,YAAY,SAAS,CAAC,CAAC;AAC9G,SAAO,IAAI,oBAAgB,cAAAC,SAAiB,EAAE,YAAY,SAAS,CAAC,CAAC;AAErE,SAAO;AACT;AAEA,IAAO,iBAAQ;",
6
6
  "names": ["import_routes", "reportAuthoriser", "viewReportRoutes", "viewDashboardRoutes", "loadReportRoutes"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../../src/dpr/routes/journeys/view-report/sync/tests.cy.ts"],
3
+ "sources": ["../../../../../dpr/routes/journeys/view-report/sync/tests.cy.ts"],
4
4
  "sourcesContent": ["import { executeReportStubs, executeDashboardStubs } from '../../../../../../cypress-tests/cypressUtils'\n\ncontext('Platform sync tests', () => {\n const path = '/embedded/platform/'\n\n describe('Sync tests from the platform', () => {\n before(() => {\n executeDashboardStubs()\n executeReportStubs()\n cy.task('stubDefinitionSyncReport')\n cy.task('stubDefinitionSyncDashboard')\n cy.task('stubRequestSuccessResult20')\n cy.task('stubSyncRequestDataSuccess')\n cy.task('stubSyncDashboardRequestDataSuccess')\n cy.task('stubSyncRequestDataSuccessCount')\n })\n\n it('should load a sync report', () => {\n cy.visit(path)\n\n cy.findByLabelText(/Reports catalogue.*/i).within(() => {\n cy.findByRole('row', {\n name: (_, element) => {\n return Boolean(element.textContent?.includes('This is an sync report'))\n },\n }).within(() => {\n cy.findByRole('link', { name: /Load report/ }).click()\n })\n })\n\n cy.findByRole('heading', { name: /Sync report/, level: 1 }).should('be.visible')\n })\n\n it('should load a sync dashboard', () => {\n cy.visit(path)\n\n cy.findByLabelText(/Reports catalogue.*/i).within(() => {\n cy.findByRole('row', {\n name: (_, element) => {\n return Boolean(element.textContent?.includes('Sync Dashboard used for testing'))\n },\n }).within(() => {\n cy.findByRole('link', { name: /Load dashboard/ }).click()\n })\n })\n\n cy.findByRole('heading', { name: /Sync Dashboard/, level: 1 }).should('be.visible')\n })\n })\n})\n"],
5
5
  "mappings": ";AAAA,0BAA0D;AAE1D,QAAQ,uBAAuB,MAAM;AACnC,QAAM,OAAO;AAEb,WAAS,gCAAgC,MAAM;AAC7C,WAAO,MAAM;AACX,qDAAsB;AACtB,kDAAmB;AACnB,SAAG,KAAK,0BAA0B;AAClC,SAAG,KAAK,6BAA6B;AACrC,SAAG,KAAK,4BAA4B;AACpC,SAAG,KAAK,4BAA4B;AACpC,SAAG,KAAK,qCAAqC;AAC7C,SAAG,KAAK,iCAAiC;AAAA,IAC3C,CAAC;AAED,OAAG,6BAA6B,MAAM;AACpC,SAAG,MAAM,IAAI;AAEb,SAAG,gBAAgB,sBAAsB,EAAE,OAAO,MAAM;AACtD,WAAG,WAAW,OAAO;AAAA,UACnB,MAAM,CAAC,GAAG,YAAY;AACpB,mBAAO,QAAQ,QAAQ,aAAa,SAAS,wBAAwB,CAAC;AAAA,UACxE;AAAA,QACF,CAAC,EAAE,OAAO,MAAM;AACd,aAAG,WAAW,QAAQ,EAAE,MAAM,cAAc,CAAC,EAAE,MAAM;AAAA,QACvD,CAAC;AAAA,MACH,CAAC;AAED,SAAG,WAAW,WAAW,EAAE,MAAM,eAAe,OAAO,EAAE,CAAC,EAAE,OAAO,YAAY;AAAA,IACjF,CAAC;AAED,OAAG,gCAAgC,MAAM;AACvC,SAAG,MAAM,IAAI;AAEb,SAAG,gBAAgB,sBAAsB,EAAE,OAAO,MAAM;AACtD,WAAG,WAAW,OAAO;AAAA,UACnB,MAAM,CAAC,GAAG,YAAY;AACpB,mBAAO,QAAQ,QAAQ,aAAa,SAAS,iCAAiC,CAAC;AAAA,UACjF;AAAA,QACF,CAAC,EAAE,OAAO,MAAM;AACd,aAAG,WAAW,QAAQ,EAAE,MAAM,iBAAiB,CAAC,EAAE,MAAM;AAAA,QAC1D,CAAC;AAAA,MACH,CAAC;AAED,SAAG,WAAW,WAAW,EAAE,MAAM,kBAAkB,OAAO,EAAE,CAAC,EAAE,OAAO,YAAY;AAAA,IACpF,CAAC;AAAA,EACH,CAAC;AACH,CAAC;",
6
6
  "names": []
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../src/dpr/routes/journeys/view-report/utils.ts"],
3
+ "sources": ["../../../../dpr/routes/journeys/view-report/utils.ts"],
4
4
  "sourcesContent": ["import { Request, Response } from 'express'\nimport { FilterType } from '../../../components/_filters/filter-input/enum'\nimport { components } from '../../../types/api'\nimport { StoredReportData } from '../../../types/UserReports'\nimport { Services } from '../../../types/Services'\nimport LocalsHelper from '../../../utils/localsHelper'\nimport definitionUtils from '../../../utils/definitionUtils'\nimport DateMapper from '../../../utils/DateMapper/DateMapper'\nimport ColumnsUtils from '../../../components/_reports/report-columns-form/utils'\n\nexport const applyReportInteractiveQuery = async (\n req: Request,\n res: Response,\n services: Services,\n applyType: 'columns' | 'filters',\n) => {\n const { reportId, id } = req.params\n const { token, definitionsPath } = LocalsHelper.getValues(res)\n\n // Get the definition\n const definition: components['schemas']['SingleVariantReportDefinition'] =\n await services.reportingService.getDefinition(token, reportId, id, definitionsPath)\n const fields = definition.variant.specification?.fields || []\n\n return applyInteractiveQuery(req, res, services, applyType, fields)\n}\n\nexport const applyDashboardInteractiveQuery = async (\n req: Request,\n res: Response,\n services: Services,\n applyType: 'columns' | 'filters',\n) => {\n const { reportId, id } = req.params\n const { token, definitionsPath } = LocalsHelper.getValues(res)\n\n // Get the definition\n const definition: components['schemas']['DashboardDefinition'] = await services.dashboardService.getDefinition(\n token,\n reportId,\n id,\n definitionsPath,\n )\n const fields = definition.filterFields || []\n\n return applyInteractiveQuery(req, res, services, applyType, fields)\n}\n\nconst applyInteractiveQuery = async (\n req: Request,\n res: Response,\n services: Services,\n applyType: 'columns' | 'filters',\n fields: components['schemas']['FieldDefinition'][],\n) => {\n const { tableId, id } = req.params\n const { dprUser } = LocalsHelper.getValues(res)\n\n // get the report state\n let reportStateData: StoredReportData | undefined\n if (tableId) {\n // means its an async report\n reportStateData = await services.recentlyViewedService?.getReportByTableId(tableId, dprUser.id)\n } else {\n // its a sync report and can be indentified by ID as will always only be 1\n reportStateData = await services.recentlyViewedService?.getReportById(id, dprUser.id)\n }\n\n // Get the stored interactive query data\n const interactiveQueryData = reportStateData?.interactiveQuery?.data\n\n const preventDefault = interactiveQueryData?.['preventDefault']\n const pageSize = interactiveQueryData?.['pageSize']\n const selectedPage = applyType === 'columns' ? interactiveQueryData?.['selectedPage'] : 1\n const sortColumn = interactiveQueryData?.['sortColumn']\n const sortedAsc = interactiveQueryData?.['sortedAsc']\n\n let filters = {}\n if (interactiveQueryData) {\n filters = Object.keys(interactiveQueryData)\n .filter((key) => key.includes('filters.'))\n .reduce((acc, key) => ({ ...acc, [key]: interactiveQueryData[key] }), {})\n }\n\n // Create merged form data\n let formData: Record<string, string | string[]> = {\n ...(preventDefault && { preventDefault }),\n ...(selectedPage && { selectedPage }),\n ...(pageSize && { pageSize }),\n ...(sortColumn && { sortColumn }),\n ...(sortedAsc && { sortedAsc }),\n ...req.body,\n }\n\n if (applyType === 'columns') {\n const { columns } = req.body\n const mandatoryCols = ColumnsUtils.mandatoryColumns(fields)\n\n let bodyColumns = []\n if (columns) {\n bodyColumns = Array.isArray(columns) ? columns : [columns]\n }\n const columnsData = [...mandatoryCols, ...bodyColumns]\n formData = { ...formData, columns: columnsData, ...filters }\n } else {\n const columns = interactiveQueryData?.['columns'] || []\n formData = { ...formData, columns }\n }\n\n // Create query string\n const filtersString = createQueryParamsFromFormData({\n formData,\n fields,\n })\n\n // Redirect back to report\n res.redirect(`${req.baseUrl}?${filtersString}`)\n}\n\nconst createQueryParamsFromFormData = ({\n formData,\n fields,\n}: {\n fields: components['schemas']['FieldDefinition'][]\n formData: Record<string, string | string[]>\n}) => {\n // create the query string\n const params = new URLSearchParams()\n Object.keys(formData).forEach((key) => {\n const value = formData[key]\n\n if (value && key !== '_csrf') {\n const fieldId = key.split('.')[1] // filters are prefixed with 'filters.'\n if (fieldId) {\n const filter = definitionUtils.getFilter(fields, fieldId)\n if (filter) {\n const { type: filterType } = filter\n switch (filterType.toLocaleLowerCase()) {\n // DATE RANGE TYPES\n case FilterType.date.toLocaleLowerCase():\n case FilterType.dateRange.toLocaleLowerCase():\n case FilterType.granularDateRange.toLocaleLowerCase():\n {\n let dateValue: string = <string>value\n const dateMapper = new DateMapper()\n const currentDateFormat = dateMapper.getDateType(dateValue)\n if (currentDateFormat !== 'none') {\n dateValue = dateMapper.toDateString(dateValue, 'iso') || ''\n }\n if (dateValue) {\n params.append(key, dateValue)\n }\n }\n break\n\n // MULTIVALUE TYPES: string[] || string if only one value selected\n case FilterType.multiselect.toLocaleLowerCase():\n if (Array.isArray(value)) {\n const multiselectValue = <string[]>value\n multiselectValue.forEach((v: string) => {\n params.append(key, v)\n })\n } else {\n params.append(key, <string>value)\n }\n break\n\n // OTHER TYPES - always a string\n default:\n params.append(key, <string>value)\n break\n }\n }\n } else if (Array.isArray(value)) {\n value.forEach((v: string) => {\n params.append(key, v)\n })\n } else {\n params.append(key, value)\n }\n }\n })\n\n const encodedFilters = params.toString()\n return decodeURIComponent(encodedFilters)\n}\n\nexport default {\n applyDashboardInteractiveQuery,\n applyReportInteractiveQuery,\n}\n"],
5
5
  "mappings": "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",
6
6
  "names": ["LocalsHelper", "ColumnsUtils", "definitionUtils", "DateMapper"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/dpr/services/dashboardService.ts"],
3
+ "sources": ["../../dpr/services/dashboardService.ts"],
4
4
  "sourcesContent": ["import Dict = NodeJS.Dict\nimport DashboardClient from '../data/dashboardClient'\nimport { components } from '../types/api'\nimport { DashboardDataResponse } from '../types/Metrics'\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nclass DashboardService {\n constructor(private readonly dashboardClient: DashboardClient) {\n this.dashboardClient = dashboardClient\n }\n\n async getDefinition(\n token: string,\n dpdId: string,\n id: string,\n dataProductDefinitionsPath?: string,\n query?: Dict<string | string[]> | undefined,\n ): Promise<components['schemas']['DashboardDefinition']> {\n return this.dashboardClient.getDefinition(token, id, dpdId, dataProductDefinitionsPath, query)\n }\n\n async requestAsyncDashboard(\n token: string,\n reportId: string,\n dashboardId: string,\n query: Record<string, string | boolean | number>,\n ): Promise<Dict<string>> {\n return this.dashboardClient.requestAsyncDashboard(token, reportId, dashboardId, query)\n }\n\n async cancelAsyncRequest(\n token: string,\n reportId: string,\n dashboardId: string,\n executionId: string,\n dataProductDefinitionsPath?: string,\n ): Promise<Dict<string>> {\n return this.dashboardClient.cancelAsyncRequest(\n token,\n reportId,\n dashboardId,\n executionId,\n dataProductDefinitionsPath,\n )\n }\n\n async getAsyncStatus(\n token: string,\n reportId: string,\n dashboardId: string,\n executionId: string,\n tableId?: string,\n dataProductDefinitionsPath?: string,\n ): Promise<components['schemas']['StatementExecutionStatus']> {\n return this.dashboardClient.getAsyncStatus(\n token,\n reportId,\n dashboardId,\n executionId,\n tableId,\n dataProductDefinitionsPath,\n )\n }\n\n async getAsyncDashboard(\n token: string,\n dashboardId: string,\n reportId: string,\n tableId: string,\n query: Record<string, string | string[]>,\n ): Promise<DashboardDataResponse[][]> {\n return this.dashboardClient.getAsyncDashboard(token, reportId, dashboardId, tableId, query)\n }\n\n async getSyncDashboard(\n token: string,\n dashboardId: string,\n reportId: string,\n query: Record<string, string | string[]>,\n ) {\n return this.dashboardClient.getSyncDashboard(token, reportId, dashboardId, query)\n }\n}\n\nexport { DashboardService }\nexport default DashboardService\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,MAAM,iBAAiB;AAAA,EACrB,YAA6B,iBAAkC;AAAlC;AAC3B,SAAK,kBAAkB;AAAA,EACzB;AAAA,EAEA,MAAM,cACJ,OACA,OACA,IACA,4BACA,OACuD;AACvD,WAAO,KAAK,gBAAgB,cAAc,OAAO,IAAI,OAAO,4BAA4B,KAAK;AAAA,EAC/F;AAAA,EAEA,MAAM,sBACJ,OACA,UACA,aACA,OACuB;AACvB,WAAO,KAAK,gBAAgB,sBAAsB,OAAO,UAAU,aAAa,KAAK;AAAA,EACvF;AAAA,EAEA,MAAM,mBACJ,OACA,UACA,aACA,aACA,4BACuB;AACvB,WAAO,KAAK,gBAAgB;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,eACJ,OACA,UACA,aACA,aACA,SACA,4BAC4D;AAC5D,WAAO,KAAK,gBAAgB;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,kBACJ,OACA,aACA,UACA,SACA,OACoC;AACpC,WAAO,KAAK,gBAAgB,kBAAkB,OAAO,UAAU,aAAa,SAAS,KAAK;AAAA,EAC5F;AAAA,EAEA,MAAM,iBACJ,OACA,aACA,UACA,OACA;AACA,WAAO,KAAK,gBAAgB,iBAAiB,OAAO,UAAU,aAAa,KAAK;AAAA,EAClF;AACF;AAGA,IAAO,2BAAQ;",
6
6
  "names": []
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/dpr/services/defaultFilterValuesService.ts"],
3
+ "sources": ["../../dpr/services/defaultFilterValuesService.ts"],
4
4
  "sourcesContent": ["/* eslint-disable no-param-reassign */\nimport ReportStoreService from './reportStoreService'\nimport ReportDataStore from '../data/reportDataStore'\nimport { ReportStoreConfig } from '../types/ReportStore'\nimport { defaultFilterValue } from '../utils/Personalisation/types'\nimport { FiltersType } from '../components/_filters/filtersTypeEnum'\nimport { ServiceFeatureConfig } from '../types/DprConfig'\nimport logger from '../utils/logger'\n\nclass DefaultFilterValuesService extends ReportStoreService {\n enabled: boolean\n\n constructor(reportDataStore: ReportDataStore, serviceFeatureConfig: ServiceFeatureConfig) {\n super(reportDataStore)\n this.enabled = Boolean(serviceFeatureConfig.saveDefaults)\n if (!this.enabled) logger.info(`saveDefaultsFilters: disabled`)\n }\n\n async init(userConfig: ReportStoreConfig, userId: string): Promise<void> {\n if (!this.enabled) return\n\n if (!userConfig.defaultFilters) {\n userConfig.defaultFilters = []\n await this.saveState(userId, userConfig)\n }\n }\n\n async save(userId: string, reportId: string, id: string, values: defaultFilterValue[]): Promise<void> {\n if (!this.enabled) return\n\n const userConfig = await this.getState(userId)\n await this.init(userConfig, userId)\n\n const defaults = {\n reportId,\n id,\n values,\n }\n\n const defaultValuesIndex = await this.getIndex(userId, reportId, id)\n if (userConfig.defaultFilters !== undefined) {\n if (defaultValuesIndex === -1) {\n userConfig.defaultFilters.push(defaults)\n } else if (typeof defaultValuesIndex === 'number') {\n userConfig.defaultFilters[defaultValuesIndex] = defaults\n }\n await this.saveState(userId, userConfig)\n }\n }\n\n async get(\n userId: string,\n reportId: string,\n id: string,\n filtersType: FiltersType,\n ): Promise<defaultFilterValue[] | undefined> {\n if (!this.enabled) return []\n\n const userConfig = await this.getState(userId)\n const defaultConfig = userConfig.defaultFilters?.find((defaultFilter) => {\n return defaultFilter.id === id && defaultFilter.reportId === reportId\n })\n if (!defaultConfig) {\n return undefined\n }\n return defaultConfig.values.filter((v) => {\n const type = !v.type ? FiltersType.REQUEST : v.type\n return filtersType === type\n })\n }\n\n private async getIndex(userId: string, reportId: string, id: string) {\n const userConfig = await this.getState(userId)\n return userConfig.defaultFilters?.findIndex((defaultFilter) => {\n return defaultFilter.id === id && defaultFilter.reportId === reportId\n })\n }\n\n async delete(userId: string, reportId: string, id: string, type: FiltersType): Promise<void> {\n if (!this.enabled) return\n\n const userConfig = await this.getState(userId)\n const index = await this.getIndex(userId, reportId, id)\n if (index !== undefined && index !== -1 && userConfig.defaultFilters) {\n const defaults = userConfig.defaultFilters[index]\n if (defaults.values.length > 0) {\n const updatedValues = defaults.values.filter((value) => {\n const filtersType = !value.type ? FiltersType.REQUEST : value.type\n return filtersType !== type\n })\n userConfig.defaultFilters[index].values = updatedValues\n } else {\n userConfig.defaultFilters.splice(index, 1)\n }\n await this.saveState(userId, userConfig)\n }\n }\n}\n\nexport { DefaultFilterValuesService }\nexport default DefaultFilterValuesService\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,gCAA+B;AAI/B,6BAA4B;AAE5B,oBAAmB;AAEnB,MAAM,mCAAmC,0BAAAA,QAAmB;AAAA,EAC1D;AAAA,EAEA,YAAY,iBAAkC,sBAA4C;AACxF,UAAM,eAAe;AACrB,SAAK,UAAU,QAAQ,qBAAqB,YAAY;AACxD,QAAI,CAAC,KAAK,QAAS,eAAAC,QAAO,KAAK,+BAA+B;AAAA,EAChE;AAAA,EAEA,MAAM,KAAK,YAA+B,QAA+B;AACvE,QAAI,CAAC,KAAK,QAAS;AAEnB,QAAI,CAAC,WAAW,gBAAgB;AAC9B,iBAAW,iBAAiB,CAAC;AAC7B,YAAM,KAAK,UAAU,QAAQ,UAAU;AAAA,IACzC;AAAA,EACF;AAAA,EAEA,MAAM,KAAK,QAAgB,UAAkB,IAAY,QAA6C;AACpG,QAAI,CAAC,KAAK,QAAS;AAEnB,UAAM,aAAa,MAAM,KAAK,SAAS,MAAM;AAC7C,UAAM,KAAK,KAAK,YAAY,MAAM;AAElC,UAAM,WAAW;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,UAAM,qBAAqB,MAAM,KAAK,SAAS,QAAQ,UAAU,EAAE;AACnE,QAAI,WAAW,mBAAmB,QAAW;AAC3C,UAAI,uBAAuB,IAAI;AAC7B,mBAAW,eAAe,KAAK,QAAQ;AAAA,MACzC,WAAW,OAAO,uBAAuB,UAAU;AACjD,mBAAW,eAAe,kBAAkB,IAAI;AAAA,MAClD;AACA,YAAM,KAAK,UAAU,QAAQ,UAAU;AAAA,IACzC;AAAA,EACF;AAAA,EAEA,MAAM,IACJ,QACA,UACA,IACA,aAC2C;AAC3C,QAAI,CAAC,KAAK,QAAS,QAAO,CAAC;AAE3B,UAAM,aAAa,MAAM,KAAK,SAAS,MAAM;AAC7C,UAAM,gBAAgB,WAAW,gBAAgB,KAAK,CAAC,kBAAkB;AACvE,aAAO,cAAc,OAAO,MAAM,cAAc,aAAa;AAAA,IAC/D,CAAC;AACD,QAAI,CAAC,eAAe;AAClB,aAAO;AAAA,IACT;AACA,WAAO,cAAc,OAAO,OAAO,CAAC,MAAM;AACxC,YAAM,OAAO,CAAC,EAAE,OAAO,mCAAY,UAAU,EAAE;AAC/C,aAAO,gBAAgB;AAAA,IACzB,CAAC;AAAA,EACH;AAAA,EAEA,MAAc,SAAS,QAAgB,UAAkB,IAAY;AACnE,UAAM,aAAa,MAAM,KAAK,SAAS,MAAM;AAC7C,WAAO,WAAW,gBAAgB,UAAU,CAAC,kBAAkB;AAC7D,aAAO,cAAc,OAAO,MAAM,cAAc,aAAa;AAAA,IAC/D,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,OAAO,QAAgB,UAAkB,IAAY,MAAkC;AAC3F,QAAI,CAAC,KAAK,QAAS;AAEnB,UAAM,aAAa,MAAM,KAAK,SAAS,MAAM;AAC7C,UAAM,QAAQ,MAAM,KAAK,SAAS,QAAQ,UAAU,EAAE;AACtD,QAAI,UAAU,UAAa,UAAU,MAAM,WAAW,gBAAgB;AACpE,YAAM,WAAW,WAAW,eAAe,KAAK;AAChD,UAAI,SAAS,OAAO,SAAS,GAAG;AAC9B,cAAM,gBAAgB,SAAS,OAAO,OAAO,CAAC,UAAU;AACtD,gBAAM,cAAc,CAAC,MAAM,OAAO,mCAAY,UAAU,MAAM;AAC9D,iBAAO,gBAAgB;AAAA,QACzB,CAAC;AACD,mBAAW,eAAe,KAAK,EAAE,SAAS;AAAA,MAC5C,OAAO;AACL,mBAAW,eAAe,OAAO,OAAO,CAAC;AAAA,MAC3C;AACA,YAAM,KAAK,UAAU,QAAQ,UAAU;AAAA,IACzC;AAAA,EACF;AACF;AAGA,IAAO,qCAAQ;",
6
6
  "names": ["ReportStoreService", "logger"]