@ministryofjustice/hmpps-digital-prison-reporting-frontend 4.17.0 → 4.17.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/dpr/components/_catalogue/catalogue-list/utils.js +1 -1
  2. package/dpr/components/_catalogue/catalogue-list/utils.js.map +3 -3
  3. package/dpr/components/_catalogue/catalogue-list/utils.ts +4 -5
  4. package/dpr/components/_catalogue/catalogue-search/view.njk +1 -0
  5. package/dpr/components/_charts/chart/Buckets.js +1 -1
  6. package/dpr/components/_charts/chart/Buckets.js.map +3 -3
  7. package/dpr/components/_charts/chart/Buckets.ts +44 -36
  8. package/dpr/components/_charts/chart/heatmap/HeatmapChart.js +1 -1
  9. package/dpr/components/_charts/chart/heatmap/HeatmapChart.js.map +2 -2
  10. package/dpr/components/_charts/chart/heatmap/HeatmapChart.ts +22 -14
  11. package/dpr/components/_charts/chart/heatmap/types.js +2 -0
  12. package/dpr/components/_charts/chart/heatmap/types.js.map +7 -0
  13. package/dpr/components/_charts/chart/heatmap/types.ts +6 -0
  14. package/dpr/components/_charts/utils.js +1 -1
  15. package/dpr/components/_charts/utils.js.map +3 -3
  16. package/dpr/components/_charts/utils.test.ts +10 -7
  17. package/dpr/components/_charts/utils.ts +57 -50
  18. package/dpr/components/_dashboards/dashboard/view.njk +1 -1
  19. package/dpr/components/_dashboards/dashboard-list/utils.js +1 -1
  20. package/dpr/components/_dashboards/dashboard-list/utils.js.map +2 -2
  21. package/dpr/components/_dashboards/dashboard-list/utils.test.ts +3 -3
  22. package/dpr/components/_dashboards/dashboard-list/utils.ts +16 -12
  23. package/dpr/components/_dashboards/dashboard-section/view.njk +1 -1
  24. package/dpr/components/_dashboards/dashboard-visualisation/DashboardVisualisation.js +2 -0
  25. package/dpr/components/_dashboards/dashboard-visualisation/DashboardVisualisation.js.map +7 -0
  26. package/dpr/components/_dashboards/dashboard-visualisation/DashboardVisualisation.ts +40 -0
  27. package/dpr/components/_dashboards/dashboard-visualisation/types.js +2 -0
  28. package/dpr/components/_dashboards/dashboard-visualisation/types.js.map +7 -0
  29. package/dpr/components/_dashboards/dashboard-visualisation/types.ts +102 -0
  30. package/dpr/components/_dashboards/dashboard-visualisation/view.njk +1 -1
  31. package/dpr/components/_dashboards/scorecard/Scorecard.js +1 -1
  32. package/dpr/components/_dashboards/scorecard/Scorecard.js.map +2 -2
  33. package/dpr/components/_dashboards/scorecard/Scorecard.ts +37 -29
  34. package/dpr/components/_dashboards/scorecard/types.js.map +1 -1
  35. package/dpr/components/_dashboards/scorecard/types.ts +1 -0
  36. package/dpr/components/_dashboards/scorecard/utils.js +1 -1
  37. package/dpr/components/_dashboards/scorecard/utils.js.map +2 -2
  38. package/dpr/components/_dashboards/scorecard/utils.test.ts +13 -4
  39. package/dpr/components/_dashboards/scorecard/utils.ts +6 -5
  40. package/dpr/components/_dashboards/scorecard/view.njk +6 -5
  41. package/dpr/components/_dashboards/scorecard-group/view.njk +4 -4
  42. package/dpr/components/_reports/report-actions/types.d.js.map +1 -1
  43. package/dpr/components/_reports/report-actions/types.d.ts +1 -1
  44. package/dpr/components/_reports/report-heading/view.njk +1 -1
  45. package/dpr/data/dashboardClient.js +1 -1
  46. package/dpr/data/dashboardClient.js.map +2 -2
  47. package/dpr/data/dashboardClient.ts +8 -7
  48. package/dpr/data/reportingClient.js +1 -1
  49. package/dpr/data/reportingClient.js.map +1 -1
  50. package/dpr/data/reportingClient.ts +1 -1
  51. package/dpr/middleware/reportAuthoriser.js +1 -1
  52. package/dpr/middleware/reportAuthoriser.js.map +3 -3
  53. package/dpr/middleware/reportAuthoriser.ts +9 -20
  54. package/dpr/routes/journeys/download-report/controller.js +1 -1
  55. package/dpr/routes/journeys/download-report/controller.js.map +3 -3
  56. package/dpr/routes/journeys/download-report/controller.ts +4 -1
  57. package/dpr/routes/journeys/download-report/request-download/form/submitted/tests.cy.js +1 -1
  58. package/dpr/routes/journeys/download-report/request-download/form/submitted/tests.cy.js.map +2 -2
  59. package/dpr/routes/journeys/download-report/request-download/form/submitted/tests.cy.ts +1 -0
  60. package/dpr/routes/journeys/download-report/request-download/form/tests.cy.js +1 -1
  61. package/dpr/routes/journeys/download-report/request-download/form/tests.cy.js.map +2 -2
  62. package/dpr/routes/journeys/download-report/request-download/form/tests.cy.ts +1 -0
  63. package/dpr/routes/journeys/download-report/tests.cy.js +1 -1
  64. package/dpr/routes/journeys/download-report/tests.cy.js.map +2 -2
  65. package/dpr/routes/journeys/download-report/tests.cy.ts +2 -8
  66. package/dpr/routes/journeys/download-report/utils.js +1 -1
  67. package/dpr/routes/journeys/download-report/utils.js.map +3 -3
  68. package/dpr/routes/journeys/download-report/utils.ts +10 -7
  69. package/dpr/routes/journeys/my-reports/bookmarks/list/tests.cy.js +1 -1
  70. package/dpr/routes/journeys/my-reports/bookmarks/list/tests.cy.js.map +2 -2
  71. package/dpr/routes/journeys/my-reports/bookmarks/list/tests.cy.ts +1 -0
  72. package/dpr/routes/journeys/my-reports/bookmarks/tests.cy.js +1 -1
  73. package/dpr/routes/journeys/my-reports/bookmarks/tests.cy.js.map +3 -3
  74. package/dpr/routes/journeys/my-reports/bookmarks/tests.cy.ts +5 -14
  75. package/dpr/routes/journeys/my-reports/bookmarks/utils.js +1 -1
  76. package/dpr/routes/journeys/my-reports/bookmarks/utils.js.map +3 -3
  77. package/dpr/routes/journeys/my-reports/bookmarks/utils.ts +11 -5
  78. package/dpr/routes/journeys/my-reports/recently-viewed/list/tests.cy.js +1 -1
  79. package/dpr/routes/journeys/my-reports/recently-viewed/list/tests.cy.js.map +3 -3
  80. package/dpr/routes/journeys/my-reports/recently-viewed/list/tests.cy.ts +4 -7
  81. package/dpr/routes/journeys/my-reports/requested-reports/list/tests.cy.js +1 -1
  82. package/dpr/routes/journeys/my-reports/requested-reports/list/tests.cy.js.map +2 -2
  83. package/dpr/routes/journeys/my-reports/requested-reports/list/tests.cy.ts +1 -0
  84. package/dpr/routes/journeys/request-missing-report/form/tests.cy.js +1 -1
  85. package/dpr/routes/journeys/request-missing-report/form/tests.cy.js.map +2 -2
  86. package/dpr/routes/journeys/request-missing-report/form/tests.cy.ts +1 -0
  87. package/dpr/routes/journeys/request-missing-report/tests.cy.js +1 -1
  88. package/dpr/routes/journeys/request-missing-report/tests.cy.js.map +2 -2
  89. package/dpr/routes/journeys/request-missing-report/tests.cy.ts +3 -5
  90. package/dpr/routes/journeys/request-report/filters/tests.cy.js +1 -1
  91. package/dpr/routes/journeys/request-report/filters/tests.cy.js.map +3 -3
  92. package/dpr/routes/journeys/request-report/filters/tests.cy.ts +3 -6
  93. package/dpr/routes/journeys/request-report/filters/utils.js +1 -1
  94. package/dpr/routes/journeys/request-report/filters/utils.js.map +2 -2
  95. package/dpr/routes/journeys/request-report/filters/utils.ts +2 -3
  96. package/dpr/routes/journeys/request-report/status/tests.cy.js +1 -1
  97. package/dpr/routes/journeys/request-report/status/tests.cy.js.map +2 -2
  98. package/dpr/routes/journeys/request-report/status/tests.cy.ts +2 -7
  99. package/dpr/routes/journeys/request-report/tests.cy.js +1 -1
  100. package/dpr/routes/journeys/request-report/tests.cy.js.map +3 -3
  101. package/dpr/routes/journeys/request-report/tests.cy.ts +5 -21
  102. package/dpr/routes/journeys/view-report/async/controller.js.map +2 -2
  103. package/dpr/routes/journeys/view-report/async/controller.ts +2 -2
  104. package/dpr/routes/journeys/view-report/async/dashboard/tests.cy.js +1 -1
  105. package/dpr/routes/journeys/view-report/async/dashboard/tests.cy.js.map +2 -2
  106. package/dpr/routes/journeys/view-report/async/dashboard/tests.cy.ts +2 -10
  107. package/dpr/routes/journeys/view-report/async/dashboard/utils.js +1 -1
  108. package/dpr/routes/journeys/view-report/async/dashboard/utils.js.map +3 -3
  109. package/dpr/routes/journeys/view-report/async/dashboard/utils.ts +100 -95
  110. package/dpr/routes/journeys/view-report/async/report/controller.js +1 -1
  111. package/dpr/routes/journeys/view-report/async/report/controller.js.map +3 -3
  112. package/dpr/routes/journeys/view-report/async/report/controller.ts +4 -6
  113. package/dpr/routes/journeys/view-report/async/report/tests.cy.js +1 -1
  114. package/dpr/routes/journeys/view-report/async/report/tests.cy.js.map +2 -2
  115. package/dpr/routes/journeys/view-report/async/report/tests.cy.ts +8 -19
  116. package/dpr/routes/journeys/view-report/async/report/types.js +2 -0
  117. package/dpr/routes/journeys/view-report/async/report/types.js.map +7 -0
  118. package/dpr/routes/journeys/view-report/async/report/types.ts +31 -0
  119. package/dpr/routes/journeys/view-report/async/report/utils.js +1 -1
  120. package/dpr/routes/journeys/view-report/async/report/utils.js.map +3 -3
  121. package/dpr/routes/journeys/view-report/async/report/utils.ts +173 -136
  122. package/dpr/routes/journeys/view-report/sync/tests.cy.js +1 -1
  123. package/dpr/routes/journeys/view-report/sync/tests.cy.js.map +3 -3
  124. package/dpr/routes/journeys/view-report/sync/tests.cy.ts +3 -5
  125. package/dpr/services/dashboardService.js +1 -1
  126. package/dpr/services/dashboardService.js.map +2 -2
  127. package/dpr/services/dashboardService.ts +7 -5
  128. package/dpr/services/productCollection/productCollectionService.js +1 -1
  129. package/dpr/services/productCollection/productCollectionService.js.map +2 -2
  130. package/dpr/services/productCollection/productCollectionService.ts +3 -3
  131. package/dpr/services/reportingService.js +1 -1
  132. package/dpr/services/reportingService.js.map +1 -1
  133. package/dpr/services/reportingService.ts +1 -1
  134. package/dpr/types/AsyncReportUtils.js.map +1 -1
  135. package/dpr/types/AsyncReportUtils.ts +3 -4
  136. package/dpr/types/Charts.js +1 -1
  137. package/dpr/types/Charts.js.map +3 -3
  138. package/dpr/types/Charts.ts +0 -82
  139. package/dpr/types/Metrics.js +1 -1
  140. package/dpr/types/Metrics.js.map +1 -1
  141. package/dpr/types/Metrics.ts +7 -0
  142. package/dpr/types/ReportQuery.js +1 -1
  143. package/dpr/types/ReportQuery.js.map +3 -3
  144. package/dpr/types/ReportQuery.ts +24 -15
  145. package/dpr/types/Services.d.js +1 -1
  146. package/dpr/types/Services.d.js.map +1 -1
  147. package/dpr/types/Services.d.ts +2 -0
  148. package/dpr/types/api.d.js.map +1 -1
  149. package/dpr/types/api.d.ts +14 -16
  150. package/dpr/utils/Personalisation/personalisationUtils.js +1 -1
  151. package/dpr/utils/Personalisation/personalisationUtils.js.map +3 -3
  152. package/dpr/utils/Personalisation/personalisationUtils.ts +15 -6
  153. package/dpr/utils/UserStoreItemBuilder.js +1 -1
  154. package/dpr/utils/UserStoreItemBuilder.js.map +1 -1
  155. package/dpr/utils/UserStoreItemBuilder.ts +2 -2
  156. package/dpr/utils/datasetHelper.js +1 -1
  157. package/dpr/utils/datasetHelper.js.map +3 -3
  158. package/dpr/utils/datasetHelper.test.ts +11 -11
  159. package/dpr/utils/datasetHelper.ts +23 -8
  160. package/dpr/utils/logger.js +1 -1
  161. package/dpr/utils/logger.js.map +3 -3
  162. package/dpr/utils/logger.ts +6 -1
  163. package/package.json +2 -1
  164. package/dpr/components/_charts/chart/DashboardVisualisation.js +0 -2
  165. package/dpr/components/_charts/chart/DashboardVisualisation.js.map +0 -7
  166. package/dpr/components/_charts/chart/DashboardVisualisation.ts +0 -43
  167. package/dpr/components/_dashboards/dashboard/types.js +0 -2
  168. package/dpr/components/_dashboards/dashboard/types.js.map +0 -7
  169. package/dpr/components/_dashboards/dashboard/types.ts +0 -120
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/dpr/components/_charts/utils.ts"],
4
- "sourcesContent": ["import dayjs from 'dayjs'\nimport weekOfYear from 'dayjs/plugin/weekOfYear'\nimport {\n ChartData,\n MoJTable,\n ChartCardData,\n ChartDataset,\n ChartType,\n ChartDetails,\n ChartMetaData,\n} from '../../types/Charts'\nimport { DashboardDataResponse } from '../../types/Metrics'\nimport {\n BarChartVisualisationColumn,\n DashboardVisualisation,\n DashboardVisualisationColumns,\n} from '../_dashboards/dashboard/types'\nimport DatasetHelper from '../../utils/datasetHelper'\nimport DashboardListUtils from '../_dashboards/dashboard-list/utils'\nimport { Granularity } from '../_inputs/granular-date-range/types'\nimport HeatmapChart from './chart/heatmap/HeatmapChart'\n\ndayjs.extend(weekOfYear)\n\nexport const createChart = (\n chartDefinition: DashboardVisualisation,\n rawData: DashboardDataResponse[],\n): ChartCardData => {\n let table: MoJTable\n let chart: ChartData\n let details: ChartDetails\n\n const { dataSetRows, snapshotData } = getDataForSnapshotCharts(chartDefinition, rawData)\n if (dataSetRows.length) {\n chart = createSnapshotChart(chartDefinition, snapshotData)\n table = createSnapshotTable(chartDefinition, dataSetRows)\n details = getChartDetails(chartDefinition, dataSetRows)\n }\n\n return {\n details,\n table,\n chart,\n }\n}\n\nexport const createTimeseriesCharts = (\n chartDefinition: DashboardVisualisation,\n rawData: DashboardDataResponse[],\n): ChartCardData => {\n let table: MoJTable\n let chart: ChartData\n let details: ChartDetails\n\n const { latestData, dataSetRows, timeseriesData } = getDataForTimeseriesCharts(chartDefinition, rawData)\n if (dataSetRows.length) {\n chart = createTimeseriesChart(chartDefinition, timeseriesData)\n table = createTimeseriesTable(chartDefinition, timeseriesData)\n details = getChartDetails(chartDefinition, latestData, true)\n }\n return {\n details,\n table,\n chart,\n }\n}\n\nexport const createMatrixChart = (\n chartDefinition: DashboardVisualisation,\n rawData: DashboardDataResponse[],\n query: Record<string, string | string[]>,\n) => {\n let table: MoJTable\n let chart: ChartData\n let details: ChartDetails\n let granularity: Granularity = Granularity.DAILY\n\n Object.keys(query).forEach((key) => {\n if (key.includes('granularity')) {\n granularity = <Granularity>query[key]\n }\n })\n\n const { latestData, dataSetRows, timeseriesData } = getDataForTimeseriesCharts(chartDefinition, rawData)\n if (dataSetRows.length) {\n chart = new HeatmapChart(timeseriesData, granularity, chartDefinition).build()\n table = createTimeseriesTable(chartDefinition, timeseriesData)\n details = getChartDetails(chartDefinition, latestData, true)\n }\n return {\n details,\n table,\n chart,\n }\n}\n\nconst getDataForSnapshotCharts = (chartDefinition: DashboardVisualisation, rawData: DashboardDataResponse[]) => {\n const data = DatasetHelper.getLastestDataset(rawData)\n const dataSetRows = DatasetHelper.getDatasetRows(chartDefinition, data)\n const snapshotData = DatasetHelper.filterRowsByDisplayColumns(chartDefinition, dataSetRows, true)\n\n return {\n dataSetRows,\n snapshotData,\n }\n}\n\nconst getDataForTimeseriesCharts = (chartDefinition: DashboardVisualisation, rawData: DashboardDataResponse[]) => {\n const latestData = DatasetHelper.getLastestDataset(rawData)\n const dataSetRows = DatasetHelper.getDatasetRows(chartDefinition, rawData)\n const timeseriesData = DatasetHelper.filterRowsByDisplayColumns(chartDefinition, dataSetRows, true)\n\n return {\n latestData,\n dataSetRows,\n timeseriesData,\n }\n}\n\nconst getChartDetails = (\n chartDefinition: DashboardVisualisation,\n data: DashboardDataResponse[],\n timeseries = false,\n): ChartDetails => {\n const meta: ChartMetaData[] = []\n const headlines: ChartMetaData[] = createHeadlines(chartDefinition, data, timeseries)\n\n if (data[0]?.ts) {\n meta.push({\n label: 'Values for:',\n value: data[0]?.ts.raw,\n })\n }\n\n return {\n meta,\n headlines,\n }\n}\n\nconst createHeadlines = (\n chartDefinition: DashboardVisualisation,\n data: DashboardDataResponse[],\n timeseries = false,\n) => {\n const headlines: ChartMetaData[] = []\n const { columns } = chartDefinition\n const { measures } = columns\n const isListChart = !!(<BarChartVisualisationColumn[]>measures).find((col) => col.axis)\n let headline: ChartMetaData\n\n let headlineColumn: BarChartVisualisationColumn\n let value: number\n let label: string\n\n if (timeseries) {\n headlineColumn = <BarChartVisualisationColumn>measures.find((col) => col.id !== 'ts')\n if (headlineColumn) {\n label = `${data[0].ts.raw}`\n value = +data[0][headlineColumn.id].raw\n\n headline = {\n label,\n value,\n }\n }\n } else {\n headlineColumn = !isListChart\n ? <BarChartVisualisationColumn>measures[0]\n : measures.find((col: BarChartVisualisationColumn) => col.axis && col.axis === 'y')\n\n if (headlineColumn) {\n label = `Total ${headlineColumn.display.toLowerCase()}`\n value = data.reduce((acc: number, d: DashboardDataResponse) => acc + +d[headlineColumn.id].raw, 0)\n\n headline = {\n label,\n value,\n }\n }\n }\n\n headlines.push(headline)\n\n return headlines\n}\n\nconst createSnapshotChart = (\n chartDefinition: DashboardVisualisation,\n snapshotData: DashboardDataResponse[],\n): ChartData => {\n const { type, columns } = chartDefinition\n const { measures } = columns\n const isListChart = !!(<BarChartVisualisationColumn[]>measures).find((col) => col.axis)\n\n let labels: string[]\n let unit\n let datasets: ChartDataset[]\n\n if (!isListChart) {\n ;({ labels, unit, datasets } = buildChart(columns, snapshotData))\n } else {\n ;({ labels, unit, datasets } = buildChartFromListData(columns, snapshotData))\n }\n\n return {\n type: type as unknown as ChartType,\n unit,\n data: {\n labels,\n datasets,\n },\n }\n}\n\nconst buildChart = (columns: DashboardVisualisationColumns, rawData: DashboardDataResponse[]) => {\n const { keys, measures } = columns\n const labels = measures.map((col) => col.display)\n const labelId = keys[keys.length - 1]?.id as keyof DashboardDataResponse\n const unit = measures[0].unit ? measures[0].unit : undefined\n\n const datasets = rawData.map((row) => {\n const label = row[labelId] ? `${row[labelId].raw}` : 'All'\n const data = measures.map((c) => {\n const rowId = c.id as keyof DashboardDataResponse\n return row[rowId] ? +row[rowId].raw : 0\n })\n const total = data.reduce((acc: number, val: number) => acc + val, 0)\n return { label, data, total } as ChartDataset\n })\n\n return {\n labels,\n unit,\n datasets,\n }\n}\n\nconst buildChartFromListData = (columns: DashboardVisualisationColumns, rawData: DashboardDataResponse[]) => {\n const { measures, keys } = columns\n\n const xAxisColumn = (<BarChartVisualisationColumn[]>measures).find((col) => col.axis === 'x')\n const yAxisColumn = (<BarChartVisualisationColumn[]>measures).find((col) => col.axis === 'y')\n\n const unit = yAxisColumn?.unit || undefined\n const groupKey = DatasetHelper.getGroupKey(keys, rawData)\n const groupsData = groupKey ? DatasetHelper.groupRowsByKey(rawData, groupKey.id) : [rawData]\n\n const labels = groupsData[0]?.map((row) => {\n return `${row[xAxisColumn.id].raw}`\n })\n\n const datasets: ChartDataset[] = groupsData.map((groupData) => {\n const data = groupData.map((row) => +row[yAxisColumn.id].raw)\n return {\n label: groupKey ? `${groupData[0][groupKey.id].raw}` : yAxisColumn.display,\n data,\n total: data.reduce((acc: number, val: number) => acc + val, 0),\n }\n })\n\n return {\n labels,\n unit,\n datasets,\n }\n}\n\nconst createSnapshotTable = (chartDefinition: DashboardVisualisation, data: DashboardDataResponse[]): MoJTable => {\n const { columns } = chartDefinition\n const { keys, measures } = columns\n\n const headerColumns = [...keys, ...measures]\n const head = headerColumns.map((column) => {\n return { text: column.display }\n })\n\n const filteredRowData = DatasetHelper.filterRowsByDisplayColumns(chartDefinition, data, true)\n const rows = DashboardListUtils.createTableRows(filteredRowData)\n\n return {\n head,\n rows,\n }\n}\n\nconst createTimeseriesChart = (\n chartDefinition: DashboardVisualisation,\n timeseriesData: DashboardDataResponse[],\n): ChartData => {\n const { columns } = chartDefinition\n const { keys, measures } = columns\n\n const unit = measures[0].unit ? measures[0].unit : undefined\n const type = chartDefinition.type.split('-')[0]\n const groupKey = DatasetHelper.getGroupKey(keys, timeseriesData)\n const labelId = groupKey.id as keyof DashboardDataResponse\n\n const timeBlockData = DatasetHelper.groupRowsByTimestamp(timeseriesData)\n const labels = timeBlockData.map((d: DashboardDataResponse[]) => d[0].ts.raw as unknown as string)\n const datasetCount = timeBlockData[0].length\n\n const datasets: ChartDataset[] = []\n for (let index = 0; index < datasetCount; index += 1) {\n const data = timeBlockData.map((timeperiod) => {\n return +timeperiod[index][measures[1].id].raw\n })\n const total = data.reduce((a, c) => a + c, 0)\n const label = timeBlockData[0][index][labelId].raw as string\n\n datasets.push({\n data,\n label,\n total,\n })\n }\n\n return {\n type: type as unknown as ChartType,\n unit,\n timeseries: true,\n data: {\n labels,\n datasets,\n },\n }\n}\n\nconst createTimeseriesTable = (\n chartDefinition: DashboardVisualisation,\n timeseriesData: DashboardDataResponse[],\n): MoJTable => {\n const { columns } = chartDefinition\n const { keys, measures } = columns\n\n let flatTimeseriesData = timeseriesData.flat()\n let headerColumns = [...measures]\n\n if (timeseriesData.length > 1) {\n // Add keys as columns as well as measures, and put TS first:\n // Get TS column an remove it from headings\n const timestampIndex = headerColumns.findIndex((m) => m.id === 'ts')\n const timestampCol = headerColumns[timestampIndex]\n headerColumns.splice(timestampIndex, 1)\n // Remove duplicate TS from keys if present and add keys to headings\n const keysWithoutTs = keys.filter((k) => k.id !== 'ts')\n headerColumns = [...keysWithoutTs, ...headerColumns]\n // Add TS column to the start\n headerColumns.unshift(timestampCol)\n } else {\n flatTimeseriesData = DatasetHelper.filterRowsByDisplayColumns(chartDefinition, flatTimeseriesData)\n }\n\n const head = headerColumns.map((column) => {\n return { text: column.display }\n })\n\n const rows = DashboardListUtils.createTableRows(flatTimeseriesData)\n\n return {\n head,\n rows,\n } as MoJTable\n}\n\nexport default {\n createChart,\n createTimeseriesCharts,\n createMatrixChart,\n}\n"],
5
- "mappings": "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",
6
- "names": ["utils_exports", "__export", "createChart", "createMatrixChart", "createTimeseriesCharts", "utils_default", "__toCommonJS", "import_dayjs", "import_weekOfYear", "import_datasetHelper", "import_utils", "import_types", "import_HeatmapChart", "dayjs", "weekOfYear", "chartDefinition", "rawData", "table", "chart", "details", "dataSetRows", "snapshotData", "getDataForSnapshotCharts", "createSnapshotChart", "createSnapshotTable", "getChartDetails", "latestData", "timeseriesData", "getDataForTimeseriesCharts", "createTimeseriesChart", "createTimeseriesTable", "query", "granularity", "key", "HeatmapChart", "data", "DatasetHelper", "timeseries", "meta", "headlines", "createHeadlines", "columns", "measures", "isListChart", "col", "headline", "headlineColumn", "value", "label", "acc", "d", "type", "labels", "unit", "datasets", "buildChartFromListData", "buildChart", "keys", "labelId", "row", "rowId", "total", "val", "xAxisColumn", "yAxisColumn", "groupKey", "groupsData", "groupData", "head", "column", "filteredRowData", "rows", "DashboardListUtils", "timeBlockData", "datasetCount", "index", "timeperiod", "a", "c", "flatTimeseriesData", "headerColumns", "timestampIndex", "m", "timestampCol", "k"]
4
+ "sourcesContent": ["import dayjs from 'dayjs'\nimport weekOfYear from 'dayjs/plugin/weekOfYear'\nimport { ChartDetails, ChartMetaData } from '../../types/Charts'\nimport { DashboardDataResponse } from '../../types/Metrics'\nimport DatasetHelper from '../../utils/datasetHelper'\nimport DashboardListUtils from '../_dashboards/dashboard-list/utils'\nimport { Granularity } from '../_inputs/granular-date-range/types'\nimport HeatmapChart from './chart/heatmap/HeatmapChart'\nimport { components } from '../../types/api'\nimport {\n DashboardVisualisationData,\n DashboardVisualisationDataSet,\n DashboardVisualisatonCardData,\n MoJTable,\n} from '../_dashboards/dashboard-visualisation/types'\n\ndayjs.extend(weekOfYear)\n\nexport const createChart = (\n chartDefinition: components['schemas']['DashboardVisualisationDefinition'],\n rawData: DashboardDataResponse[],\n): DashboardVisualisatonCardData => {\n let table: MoJTable\n let chart: DashboardVisualisationData\n let details: ChartDetails\n\n const { dataSetRows, snapshotData } = getDataForSnapshotCharts(chartDefinition, rawData)\n if (dataSetRows.length) {\n chart = createSnapshotChart(chartDefinition, snapshotData)\n table = createSnapshotTable(chartDefinition, dataSetRows)\n details = getChartDetails(chartDefinition, dataSetRows)\n }\n\n return {\n details,\n table,\n chart,\n }\n}\n\nexport const createTimeseriesCharts = (\n chartDefinition: components['schemas']['DashboardVisualisationDefinition'],\n rawData: DashboardDataResponse[],\n): DashboardVisualisatonCardData => {\n let table: MoJTable\n let chart: DashboardVisualisationData\n let details: ChartDetails\n\n const { latestData, dataSetRows, timeseriesData } = getDataForTimeseriesCharts(chartDefinition, rawData)\n if (dataSetRows.length) {\n chart = createTimeseriesChart(chartDefinition, timeseriesData)\n table = createTimeseriesTable(chartDefinition, timeseriesData)\n details = getChartDetails(chartDefinition, latestData, true)\n }\n return {\n details,\n table,\n chart,\n }\n}\n\nexport const createMatrixChart = (\n chartDefinition: components['schemas']['DashboardVisualisationDefinition'],\n rawData: DashboardDataResponse[],\n query: Record<string, string | string[]>,\n) => {\n let table: MoJTable\n let chart: DashboardVisualisationData\n let details: ChartDetails\n let granularity: Granularity = Granularity.DAILY\n\n Object.keys(query).forEach((key) => {\n if (key.includes('granularity')) {\n granularity = <Granularity>query[key]\n }\n })\n\n const { latestData, dataSetRows, timeseriesData } = getDataForTimeseriesCharts(chartDefinition, rawData)\n if (dataSetRows.length) {\n chart = new HeatmapChart(timeseriesData, granularity, chartDefinition).build()\n table = createTimeseriesTable(chartDefinition, timeseriesData)\n details = getChartDetails(chartDefinition, latestData, true)\n }\n return {\n details,\n table,\n chart,\n }\n}\n\nconst getDataForSnapshotCharts = (\n chartDefinition: components['schemas']['DashboardVisualisationDefinition'],\n rawData: DashboardDataResponse[],\n) => {\n const data = DatasetHelper.getLastestDataset(rawData)\n const dataSetRows = DatasetHelper.getDatasetRows(chartDefinition, data)\n const snapshotData = DatasetHelper.filterRowsByDisplayColumns(chartDefinition, dataSetRows, true)\n\n return {\n dataSetRows,\n snapshotData,\n }\n}\n\nconst getDataForTimeseriesCharts = (\n chartDefinition: components['schemas']['DashboardVisualisationDefinition'],\n rawData: DashboardDataResponse[],\n) => {\n const latestData = DatasetHelper.getLastestDataset(rawData)\n const dataSetRows = DatasetHelper.getDatasetRows(chartDefinition, rawData)\n const timeseriesData = DatasetHelper.filterRowsByDisplayColumns(chartDefinition, dataSetRows, true)\n\n return {\n latestData,\n dataSetRows,\n timeseriesData,\n }\n}\n\nconst getChartDetails = (\n chartDefinition: components['schemas']['DashboardVisualisationDefinition'],\n data: DashboardDataResponse[],\n timeseries = false,\n): ChartDetails => {\n const meta: ChartMetaData[] = []\n const headlines: ChartMetaData[] = createHeadlines(chartDefinition, data, timeseries)\n\n if (data[0]?.ts) {\n meta.push({\n label: 'Values for:',\n value: data[0]?.ts.raw,\n })\n }\n\n return {\n meta,\n headlines,\n }\n}\n\nconst createHeadlines = (\n chartDefinition: components['schemas']['DashboardVisualisationDefinition'],\n data: DashboardDataResponse[],\n timeseries = false,\n) => {\n const headlines: ChartMetaData[] = []\n const { columns } = chartDefinition\n const { measures } = columns\n const isListChart = !!measures.find((col) => col.axis)\n let headline: ChartMetaData\n\n let headlineColumn: components['schemas']['DashboardVisualisationColumnDefinition']\n let value: number\n let label: string\n\n if (timeseries) {\n headlineColumn = measures.find((col) => col.id !== 'ts')\n if (headlineColumn) {\n label = `${data[0].ts.raw}`\n value = +data[0][headlineColumn.id].raw\n\n headline = {\n label,\n value,\n }\n }\n } else {\n headlineColumn = !isListChart ? measures[0] : measures.find((col) => col.axis && col.axis === 'y')\n\n if (headlineColumn) {\n label = `Total ${headlineColumn.display.toLowerCase()}`\n value = data.reduce((acc: number, d: DashboardDataResponse) => acc + +d[headlineColumn.id].raw, 0)\n\n headline = {\n label,\n value,\n }\n }\n }\n\n headlines.push(headline)\n\n return headlines\n}\n\nconst createSnapshotChart = (\n chartDefinition: components['schemas']['DashboardVisualisationDefinition'],\n snapshotData: DashboardDataResponse[],\n): DashboardVisualisationData => {\n const { type, columns } = chartDefinition\n const { measures } = columns\n const isListChart = !!measures.find((col) => col.axis)\n\n let labels: string[]\n let unit\n let datasets: DashboardVisualisationDataSet[]\n\n if (!isListChart) {\n ;({ labels, unit, datasets } = buildChart(columns, snapshotData))\n } else {\n ;({ labels, unit, datasets } = buildChartFromListData(columns, snapshotData))\n }\n\n return {\n type,\n unit,\n data: {\n labels,\n datasets,\n },\n }\n}\n\nconst buildChart = (\n columns: components['schemas']['DashboardVisualisationColumnsDefinition'],\n rawData: DashboardDataResponse[],\n) => {\n const { keys, measures } = columns\n const labels = measures.map((col) => col.display)\n const labelId = keys[keys.length - 1]?.id as keyof DashboardDataResponse\n const unit = measures[0].unit ? measures[0].unit : undefined\n\n const datasets = rawData.map((row) => {\n const label = row[labelId] ? `${row[labelId].raw}` : 'All'\n const data = measures.map((c) => {\n const rowId = c.id as keyof DashboardDataResponse\n return row[rowId] ? +row[rowId].raw : 0\n })\n const total = data.reduce((acc: number, val: number) => acc + val, 0)\n return { label, data, total } as DashboardVisualisationDataSet\n })\n\n return {\n labels,\n unit,\n datasets,\n }\n}\n\nconst buildChartFromListData = (\n columns: components['schemas']['DashboardVisualisationColumnsDefinition'],\n rawData: DashboardDataResponse[],\n) => {\n const { measures, keys } = columns\n\n const xAxisColumn = measures.find((col) => col.axis === 'x')\n const yAxisColumn = measures.find((col) => col.axis === 'y')\n\n const unit = yAxisColumn?.unit || undefined\n const groupKey = DatasetHelper.getGroupKey(keys, rawData)\n const groupsData = groupKey ? DatasetHelper.groupRowsByKey(rawData, groupKey.id) : [rawData]\n\n const labels = groupsData[0]?.map((row) => {\n return `${row[xAxisColumn.id].raw}`\n })\n\n const datasets: DashboardVisualisationDataSet[] = groupsData.map((groupData) => {\n const data = groupData.map((row) => +row[yAxisColumn.id].raw)\n return {\n label: groupKey ? `${groupData[0][groupKey.id].raw}` : yAxisColumn.display,\n data,\n total: data.reduce((acc: number, val: number) => acc + val, 0),\n }\n })\n\n return {\n labels,\n unit,\n datasets,\n }\n}\n\nconst createSnapshotTable = (\n chartDefinition: components['schemas']['DashboardVisualisationDefinition'],\n data: DashboardDataResponse[],\n): MoJTable => {\n const { columns } = chartDefinition\n const { keys, measures } = columns\n\n const headerColumns = [...keys, ...measures]\n const head = headerColumns.map((column) => {\n return { text: column.display }\n })\n\n const filteredRowData = DatasetHelper.filterRowsByDisplayColumns(chartDefinition, data, true)\n const rows = DashboardListUtils.createTableRows(filteredRowData)\n\n return {\n head,\n rows,\n }\n}\n\nconst createTimeseriesChart = (\n chartDefinition: components['schemas']['DashboardVisualisationDefinition'],\n timeseriesData: DashboardDataResponse[],\n): DashboardVisualisationData => {\n const { columns } = chartDefinition\n const { keys, measures } = columns\n\n const unit = measures[0].unit ? measures[0].unit : undefined\n const type = <components['schemas']['DashboardVisualisationDefinition']['type']>chartDefinition.type.split('-')[0]\n const groupKey = DatasetHelper.getGroupKey(keys, timeseriesData)\n const labelId = groupKey.id as keyof DashboardDataResponse\n\n const timeBlockData = DatasetHelper.groupRowsByTimestamp(timeseriesData)\n const labels = timeBlockData.map((d: DashboardDataResponse[]) => d[0].ts.raw as unknown as string)\n const datasetCount = timeBlockData[0].length\n\n const datasets: DashboardVisualisationDataSet[] = []\n for (let index = 0; index < datasetCount; index += 1) {\n const data = timeBlockData.map((timeperiod) => {\n return +timeperiod[index][measures[1].id].raw\n })\n const total = data.reduce((a, c) => a + c, 0)\n const label = timeBlockData[0][index][labelId].raw as string\n\n datasets.push({\n data,\n label,\n total,\n })\n }\n\n return {\n type,\n unit,\n timeseries: true,\n data: {\n labels,\n datasets,\n },\n }\n}\n\nconst createTimeseriesTable = (\n chartDefinition: components['schemas']['DashboardVisualisationDefinition'],\n timeseriesData: DashboardDataResponse[],\n): MoJTable => {\n const { columns } = chartDefinition\n const { keys, measures } = columns\n\n let flatTimeseriesData = timeseriesData.flat()\n let headerColumns = [...measures]\n\n if (timeseriesData.length > 1) {\n // Add keys as columns as well as measures, and put TS first:\n // Get TS column an remove it from headings\n const timestampIndex = headerColumns.findIndex((m) => m.id === 'ts')\n const timestampCol = headerColumns[timestampIndex]\n headerColumns.splice(timestampIndex, 1)\n // Remove duplicate TS from keys if present and add keys to headings\n const keysWithoutTs = keys.filter((k) => k.id !== 'ts')\n headerColumns = [...keysWithoutTs, ...headerColumns]\n // Add TS column to the start\n headerColumns.unshift(timestampCol)\n } else {\n flatTimeseriesData = DatasetHelper.filterRowsByDisplayColumns(chartDefinition, flatTimeseriesData)\n }\n\n const head = headerColumns.map((column) => {\n return { text: column.display }\n })\n\n const rows = DashboardListUtils.createTableRows(flatTimeseriesData)\n\n return {\n head,\n rows,\n } as MoJTable\n}\n\nexport default {\n createChart,\n createTimeseriesCharts,\n createMatrixChart,\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["utils_exports", "__export", "createChart", "createMatrixChart", "createTimeseriesCharts", "utils_default", "__toCommonJS", "import_dayjs", "import_weekOfYear", "import_datasetHelper", "import_utils", "import_types", "import_HeatmapChart", "dayjs", "weekOfYear", "chartDefinition", "rawData", "table", "chart", "details", "dataSetRows", "snapshotData", "getDataForSnapshotCharts", "createSnapshotChart", "createSnapshotTable", "getChartDetails", "latestData", "timeseriesData", "getDataForTimeseriesCharts", "createTimeseriesChart", "createTimeseriesTable", "query", "granularity", "key", "HeatmapChart", "data", "DatasetHelper", "timeseries", "meta", "headlines", "createHeadlines", "columns", "measures", "isListChart", "col", "headline", "headlineColumn", "value", "label", "acc", "d", "type", "labels", "unit", "datasets", "buildChartFromListData", "buildChart", "keys", "labelId", "row", "c", "rowId", "total", "val", "xAxisColumn", "yAxisColumn", "groupKey", "groupsData", "groupData", "head", "column", "filteredRowData", "rows", "DashboardListUtils", "timeBlockData", "datasetCount", "index", "timeperiod", "a", "flatTimeseriesData", "headerColumns", "timestampIndex", "m", "timestampCol", "k"]
7
7
  }
@@ -14,19 +14,22 @@ import {
14
14
  dataQualityEthnicityHistoricLine,
15
15
  dietTotalsByEstablishmentBar,
16
16
  } from '../../../../test-app/mocks/mockClients/dashboards/definitions/examples/visualisations/charts'
17
- import { DashboardVisualisation } from '../_dashboards/dashboard/types'
17
+ import { components } from '../../types/api'
18
18
 
19
19
  describe('ChartCard Utils', () => {
20
20
  let dashboardMetricsData: DashboardDataResponse[][]
21
21
  let dashboardMockDietData: DashboardDataResponse[]
22
- let snapshotVisualisationDefinition: DashboardVisualisation
23
- let snapshotVisualisationFromListDefinition: DashboardVisualisation
24
- let timeseriesVisualisationDefinition: DashboardVisualisation
22
+ let snapshotVisualisationDefinition: components['schemas']['DashboardVisualisationDefinition']
23
+ let snapshotVisualisationFromListDefinition: components['schemas']['DashboardVisualisationDefinition']
24
+ let timeseriesVisualisationDefinition: components['schemas']['DashboardVisualisationDefinition']
25
25
 
26
26
  beforeEach(() => {
27
- snapshotVisualisationDefinition = mockEthnicityBarChart as unknown as DashboardVisualisation
28
- timeseriesVisualisationDefinition = dataQualityEthnicityHistoricLine as unknown as DashboardVisualisation
29
- snapshotVisualisationFromListDefinition = dietTotalsByEstablishmentBar as unknown as DashboardVisualisation
27
+ snapshotVisualisationDefinition =
28
+ mockEthnicityBarChart as unknown as components['schemas']['DashboardVisualisationDefinition']
29
+ timeseriesVisualisationDefinition =
30
+ dataQualityEthnicityHistoricLine as unknown as components['schemas']['DashboardVisualisationDefinition']
31
+ snapshotVisualisationFromListDefinition =
32
+ dietTotalsByEstablishmentBar as unknown as components['schemas']['DashboardVisualisationDefinition']
30
33
  dashboardMetricsData = mockTimeSeriesDataLastSixMonths
31
34
  dashboardMockDietData = mockDietDataLastSixMonths
32
35
  })
@@ -1,33 +1,27 @@
1
1
  import dayjs from 'dayjs'
2
2
  import weekOfYear from 'dayjs/plugin/weekOfYear'
3
- import {
4
- ChartData,
5
- MoJTable,
6
- ChartCardData,
7
- ChartDataset,
8
- ChartType,
9
- ChartDetails,
10
- ChartMetaData,
11
- } from '../../types/Charts'
3
+ import { ChartDetails, ChartMetaData } from '../../types/Charts'
12
4
  import { DashboardDataResponse } from '../../types/Metrics'
13
- import {
14
- BarChartVisualisationColumn,
15
- DashboardVisualisation,
16
- DashboardVisualisationColumns,
17
- } from '../_dashboards/dashboard/types'
18
5
  import DatasetHelper from '../../utils/datasetHelper'
19
6
  import DashboardListUtils from '../_dashboards/dashboard-list/utils'
20
7
  import { Granularity } from '../_inputs/granular-date-range/types'
21
8
  import HeatmapChart from './chart/heatmap/HeatmapChart'
9
+ import { components } from '../../types/api'
10
+ import {
11
+ DashboardVisualisationData,
12
+ DashboardVisualisationDataSet,
13
+ DashboardVisualisatonCardData,
14
+ MoJTable,
15
+ } from '../_dashboards/dashboard-visualisation/types'
22
16
 
23
17
  dayjs.extend(weekOfYear)
24
18
 
25
19
  export const createChart = (
26
- chartDefinition: DashboardVisualisation,
20
+ chartDefinition: components['schemas']['DashboardVisualisationDefinition'],
27
21
  rawData: DashboardDataResponse[],
28
- ): ChartCardData => {
22
+ ): DashboardVisualisatonCardData => {
29
23
  let table: MoJTable
30
- let chart: ChartData
24
+ let chart: DashboardVisualisationData
31
25
  let details: ChartDetails
32
26
 
33
27
  const { dataSetRows, snapshotData } = getDataForSnapshotCharts(chartDefinition, rawData)
@@ -45,11 +39,11 @@ export const createChart = (
45
39
  }
46
40
 
47
41
  export const createTimeseriesCharts = (
48
- chartDefinition: DashboardVisualisation,
42
+ chartDefinition: components['schemas']['DashboardVisualisationDefinition'],
49
43
  rawData: DashboardDataResponse[],
50
- ): ChartCardData => {
44
+ ): DashboardVisualisatonCardData => {
51
45
  let table: MoJTable
52
- let chart: ChartData
46
+ let chart: DashboardVisualisationData
53
47
  let details: ChartDetails
54
48
 
55
49
  const { latestData, dataSetRows, timeseriesData } = getDataForTimeseriesCharts(chartDefinition, rawData)
@@ -66,12 +60,12 @@ export const createTimeseriesCharts = (
66
60
  }
67
61
 
68
62
  export const createMatrixChart = (
69
- chartDefinition: DashboardVisualisation,
63
+ chartDefinition: components['schemas']['DashboardVisualisationDefinition'],
70
64
  rawData: DashboardDataResponse[],
71
65
  query: Record<string, string | string[]>,
72
66
  ) => {
73
67
  let table: MoJTable
74
- let chart: ChartData
68
+ let chart: DashboardVisualisationData
75
69
  let details: ChartDetails
76
70
  let granularity: Granularity = Granularity.DAILY
77
71
 
@@ -94,7 +88,10 @@ export const createMatrixChart = (
94
88
  }
95
89
  }
96
90
 
97
- const getDataForSnapshotCharts = (chartDefinition: DashboardVisualisation, rawData: DashboardDataResponse[]) => {
91
+ const getDataForSnapshotCharts = (
92
+ chartDefinition: components['schemas']['DashboardVisualisationDefinition'],
93
+ rawData: DashboardDataResponse[],
94
+ ) => {
98
95
  const data = DatasetHelper.getLastestDataset(rawData)
99
96
  const dataSetRows = DatasetHelper.getDatasetRows(chartDefinition, data)
100
97
  const snapshotData = DatasetHelper.filterRowsByDisplayColumns(chartDefinition, dataSetRows, true)
@@ -105,7 +102,10 @@ const getDataForSnapshotCharts = (chartDefinition: DashboardVisualisation, rawDa
105
102
  }
106
103
  }
107
104
 
108
- const getDataForTimeseriesCharts = (chartDefinition: DashboardVisualisation, rawData: DashboardDataResponse[]) => {
105
+ const getDataForTimeseriesCharts = (
106
+ chartDefinition: components['schemas']['DashboardVisualisationDefinition'],
107
+ rawData: DashboardDataResponse[],
108
+ ) => {
109
109
  const latestData = DatasetHelper.getLastestDataset(rawData)
110
110
  const dataSetRows = DatasetHelper.getDatasetRows(chartDefinition, rawData)
111
111
  const timeseriesData = DatasetHelper.filterRowsByDisplayColumns(chartDefinition, dataSetRows, true)
@@ -118,7 +118,7 @@ const getDataForTimeseriesCharts = (chartDefinition: DashboardVisualisation, raw
118
118
  }
119
119
 
120
120
  const getChartDetails = (
121
- chartDefinition: DashboardVisualisation,
121
+ chartDefinition: components['schemas']['DashboardVisualisationDefinition'],
122
122
  data: DashboardDataResponse[],
123
123
  timeseries = false,
124
124
  ): ChartDetails => {
@@ -139,22 +139,22 @@ const getChartDetails = (
139
139
  }
140
140
 
141
141
  const createHeadlines = (
142
- chartDefinition: DashboardVisualisation,
142
+ chartDefinition: components['schemas']['DashboardVisualisationDefinition'],
143
143
  data: DashboardDataResponse[],
144
144
  timeseries = false,
145
145
  ) => {
146
146
  const headlines: ChartMetaData[] = []
147
147
  const { columns } = chartDefinition
148
148
  const { measures } = columns
149
- const isListChart = !!(<BarChartVisualisationColumn[]>measures).find((col) => col.axis)
149
+ const isListChart = !!measures.find((col) => col.axis)
150
150
  let headline: ChartMetaData
151
151
 
152
- let headlineColumn: BarChartVisualisationColumn
152
+ let headlineColumn: components['schemas']['DashboardVisualisationColumnDefinition']
153
153
  let value: number
154
154
  let label: string
155
155
 
156
156
  if (timeseries) {
157
- headlineColumn = <BarChartVisualisationColumn>measures.find((col) => col.id !== 'ts')
157
+ headlineColumn = measures.find((col) => col.id !== 'ts')
158
158
  if (headlineColumn) {
159
159
  label = `${data[0].ts.raw}`
160
160
  value = +data[0][headlineColumn.id].raw
@@ -165,9 +165,7 @@ const createHeadlines = (
165
165
  }
166
166
  }
167
167
  } else {
168
- headlineColumn = !isListChart
169
- ? <BarChartVisualisationColumn>measures[0]
170
- : measures.find((col: BarChartVisualisationColumn) => col.axis && col.axis === 'y')
168
+ headlineColumn = !isListChart ? measures[0] : measures.find((col) => col.axis && col.axis === 'y')
171
169
 
172
170
  if (headlineColumn) {
173
171
  label = `Total ${headlineColumn.display.toLowerCase()}`
@@ -186,16 +184,16 @@ const createHeadlines = (
186
184
  }
187
185
 
188
186
  const createSnapshotChart = (
189
- chartDefinition: DashboardVisualisation,
187
+ chartDefinition: components['schemas']['DashboardVisualisationDefinition'],
190
188
  snapshotData: DashboardDataResponse[],
191
- ): ChartData => {
189
+ ): DashboardVisualisationData => {
192
190
  const { type, columns } = chartDefinition
193
191
  const { measures } = columns
194
- const isListChart = !!(<BarChartVisualisationColumn[]>measures).find((col) => col.axis)
192
+ const isListChart = !!measures.find((col) => col.axis)
195
193
 
196
194
  let labels: string[]
197
195
  let unit
198
- let datasets: ChartDataset[]
196
+ let datasets: DashboardVisualisationDataSet[]
199
197
 
200
198
  if (!isListChart) {
201
199
  ;({ labels, unit, datasets } = buildChart(columns, snapshotData))
@@ -204,7 +202,7 @@ const createSnapshotChart = (
204
202
  }
205
203
 
206
204
  return {
207
- type: type as unknown as ChartType,
205
+ type,
208
206
  unit,
209
207
  data: {
210
208
  labels,
@@ -213,7 +211,10 @@ const createSnapshotChart = (
213
211
  }
214
212
  }
215
213
 
216
- const buildChart = (columns: DashboardVisualisationColumns, rawData: DashboardDataResponse[]) => {
214
+ const buildChart = (
215
+ columns: components['schemas']['DashboardVisualisationColumnsDefinition'],
216
+ rawData: DashboardDataResponse[],
217
+ ) => {
217
218
  const { keys, measures } = columns
218
219
  const labels = measures.map((col) => col.display)
219
220
  const labelId = keys[keys.length - 1]?.id as keyof DashboardDataResponse
@@ -226,7 +227,7 @@ const buildChart = (columns: DashboardVisualisationColumns, rawData: DashboardDa
226
227
  return row[rowId] ? +row[rowId].raw : 0
227
228
  })
228
229
  const total = data.reduce((acc: number, val: number) => acc + val, 0)
229
- return { label, data, total } as ChartDataset
230
+ return { label, data, total } as DashboardVisualisationDataSet
230
231
  })
231
232
 
232
233
  return {
@@ -236,11 +237,14 @@ const buildChart = (columns: DashboardVisualisationColumns, rawData: DashboardDa
236
237
  }
237
238
  }
238
239
 
239
- const buildChartFromListData = (columns: DashboardVisualisationColumns, rawData: DashboardDataResponse[]) => {
240
+ const buildChartFromListData = (
241
+ columns: components['schemas']['DashboardVisualisationColumnsDefinition'],
242
+ rawData: DashboardDataResponse[],
243
+ ) => {
240
244
  const { measures, keys } = columns
241
245
 
242
- const xAxisColumn = (<BarChartVisualisationColumn[]>measures).find((col) => col.axis === 'x')
243
- const yAxisColumn = (<BarChartVisualisationColumn[]>measures).find((col) => col.axis === 'y')
246
+ const xAxisColumn = measures.find((col) => col.axis === 'x')
247
+ const yAxisColumn = measures.find((col) => col.axis === 'y')
244
248
 
245
249
  const unit = yAxisColumn?.unit || undefined
246
250
  const groupKey = DatasetHelper.getGroupKey(keys, rawData)
@@ -250,7 +254,7 @@ const buildChartFromListData = (columns: DashboardVisualisationColumns, rawData:
250
254
  return `${row[xAxisColumn.id].raw}`
251
255
  })
252
256
 
253
- const datasets: ChartDataset[] = groupsData.map((groupData) => {
257
+ const datasets: DashboardVisualisationDataSet[] = groupsData.map((groupData) => {
254
258
  const data = groupData.map((row) => +row[yAxisColumn.id].raw)
255
259
  return {
256
260
  label: groupKey ? `${groupData[0][groupKey.id].raw}` : yAxisColumn.display,
@@ -266,7 +270,10 @@ const buildChartFromListData = (columns: DashboardVisualisationColumns, rawData:
266
270
  }
267
271
  }
268
272
 
269
- const createSnapshotTable = (chartDefinition: DashboardVisualisation, data: DashboardDataResponse[]): MoJTable => {
273
+ const createSnapshotTable = (
274
+ chartDefinition: components['schemas']['DashboardVisualisationDefinition'],
275
+ data: DashboardDataResponse[],
276
+ ): MoJTable => {
270
277
  const { columns } = chartDefinition
271
278
  const { keys, measures } = columns
272
279
 
@@ -285,14 +292,14 @@ const createSnapshotTable = (chartDefinition: DashboardVisualisation, data: Dash
285
292
  }
286
293
 
287
294
  const createTimeseriesChart = (
288
- chartDefinition: DashboardVisualisation,
295
+ chartDefinition: components['schemas']['DashboardVisualisationDefinition'],
289
296
  timeseriesData: DashboardDataResponse[],
290
- ): ChartData => {
297
+ ): DashboardVisualisationData => {
291
298
  const { columns } = chartDefinition
292
299
  const { keys, measures } = columns
293
300
 
294
301
  const unit = measures[0].unit ? measures[0].unit : undefined
295
- const type = chartDefinition.type.split('-')[0]
302
+ const type = <components['schemas']['DashboardVisualisationDefinition']['type']>chartDefinition.type.split('-')[0]
296
303
  const groupKey = DatasetHelper.getGroupKey(keys, timeseriesData)
297
304
  const labelId = groupKey.id as keyof DashboardDataResponse
298
305
 
@@ -300,7 +307,7 @@ const createTimeseriesChart = (
300
307
  const labels = timeBlockData.map((d: DashboardDataResponse[]) => d[0].ts.raw as unknown as string)
301
308
  const datasetCount = timeBlockData[0].length
302
309
 
303
- const datasets: ChartDataset[] = []
310
+ const datasets: DashboardVisualisationDataSet[] = []
304
311
  for (let index = 0; index < datasetCount; index += 1) {
305
312
  const data = timeBlockData.map((timeperiod) => {
306
313
  return +timeperiod[index][measures[1].id].raw
@@ -316,7 +323,7 @@ const createTimeseriesChart = (
316
323
  }
317
324
 
318
325
  return {
319
- type: type as unknown as ChartType,
326
+ type,
320
327
  unit,
321
328
  timeseries: true,
322
329
  data: {
@@ -327,7 +334,7 @@ const createTimeseriesChart = (
327
334
  }
328
335
 
329
336
  const createTimeseriesTable = (
330
- chartDefinition: DashboardVisualisation,
337
+ chartDefinition: components['schemas']['DashboardVisualisationDefinition'],
331
338
  timeseriesData: DashboardDataResponse[],
332
339
  ): MoJTable => {
333
340
  const { columns } = chartDefinition
@@ -17,7 +17,7 @@
17
17
 
18
18
  <div class="dashboard-content">
19
19
  {{ dprReportHeading(data) }}
20
- {{ dprDashboardFilters(data.filters) }}
20
+ {{ dprDashboardFilters(data.filters, { csrfToken: data.csrfToken }) }}
21
21
 
22
22
  {% for section in data.sections %}
23
23
  {{ dprDashboardSection(section) }}
@@ -1,2 +1,2 @@
1
- var D=Object.create;var w=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var L=Object.getPrototypeOf,y=Object.prototype.hasOwnProperty;var M=(t,s)=>{for(var e in s)w(t,e,{get:s[e],enumerable:!0})},g=(t,s,e,a)=>{if(s&&typeof s=="object"||typeof s=="function")for(let o of x(s))!y.call(t,o)&&o!==e&&w(t,o,{get:()=>s[o],enumerable:!(a=f(s,o))||a.enumerable});return t};var T=(t,s,e)=>(e=t!=null?D(L(t)):{},g(s||!t||!t.__esModule?w(e,"default",{value:t,enumerable:!0}):e,t)),J=t=>g(w({},"__esModule",{value:!0}),t);var $={};M($,{createList:()=>R,createTableRows:()=>d,default:()=>A});module.exports=J($);var p=T(require("../../../utils/datasetHelper"));const R=(t,s)=>{const{columns:e,options:a}=t,o=a,c=o?.showLatest!==void 0?o.showLatest:!0,r=o?.columnsAsList,{measures:l,keys:n}=e,h=!l&&!n||!l.length&&!n;let i=[...s];c&&(i=p.default.getLastestDataset(i));let m,u,b;return h?{head:m,rows:u,ts:b}=E(i):r?{head:m,rows:u,ts:b}=V(t,i):{head:m,rows:u,ts:b}=C(t,i),u.length&&l&&(u=O(u,l)),{table:{head:m,rows:u},ts:b}},V=(t,s)=>{const{columns:e}=t,{keys:a,measures:o}=e,c=p.default.getGroupKey(a||[],s),r=s[0]?.ts?.raw,l=r?`${r}`:"",n=[];n.push({text:""}),s.forEach(i=>{n.push({text:c?i[c.id].raw:""})});const h=[];return o.forEach(i=>{h.push([{text:i.display}])}),o.forEach((i,m)=>{s.forEach(u=>{h[m].push({text:`${u[i.id].raw}`})})}),{rows:h,head:n,ts:l}},d=(t,s)=>t.map(e=>{const a=s?.length?Array(s.length):Array(Object.keys(t[0]).length);return Object.keys(e).forEach((o,c)=>{const r=s?.length?s.findIndex(n=>n.id===o):c,l=e[o].raw;a.splice(r,1,{text:l})}),a}),C=(t,s)=>{const{measures:e}=t.columns,a=e.map(h=>({text:h.display})),o=p.default.getDatasetRows(t,s),c=p.default.filterRowsByDisplayColumns(t,o),r=d(c,e),l=o[0]?.ts?.raw,n=l?`${l}`:"";return{head:a,rows:r,ts:n}},E=t=>{const s=Object.keys(t[0]).map(r=>({text:r})),e=d(t),o=p.default.getLastestDataset(t)[0]?.ts?.raw,c=o?`${o}`:"";return{head:s,rows:e,ts:c}},O=(t,s)=>{const e=s.flatMap((a,o)=>a.aggregate?[o]:[]);if(e.length){const a=[{html:"<strong>Total<strong>"}];for(let o=1;o<s.length;o+=1)a[o]={text:""};t.push(a),e.forEach(o=>{const c=t.reduce((r,l)=>{const n=l[o];return n&&n.text&&(r+=Number(n.text)),r},0);t[t.length-1][o]={html:`<strong>${c}<strong>`}})}return t};var A={createList:R,createTableRows:d};0&&(module.exports={createList,createTableRows});
1
+ var g=Object.create;var w=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var y=Object.getPrototypeOf,L=Object.prototype.hasOwnProperty;var T=(t,s)=>{for(var e in s)w(t,e,{get:s[e],enumerable:!0})},d=(t,s,e,a)=>{if(s&&typeof s=="object"||typeof s=="function")for(let o of x(s))!L.call(t,o)&&o!==e&&w(t,o,{get:()=>s[o],enumerable:!(a=R(s,o))||a.enumerable});return t};var M=(t,s,e)=>(e=t!=null?g(y(t)):{},d(s||!t||!t.__esModule?w(e,"default",{value:t,enumerable:!0}):e,t)),J=t=>d(w({},"__esModule",{value:!0}),t);var $={};T($,{createList:()=>f,createTableRows:()=>D,default:()=>A});module.exports=J($);var u=M(require("../../../utils/datasetHelper"));const f=(t,s)=>{const{columns:e,options:a}=t,o=a,l=o?.showLatest!==void 0?o.showLatest:!0,r=o?.columnsAsList,{measures:c,keys:n}=e,h=!c&&!n||!c.length&&!n;let i=[...s];l&&(i=u.default.getLastestDataset(i));let p,m,b;return h?{head:p,rows:m,ts:b}=E(i):r?{head:p,rows:m,ts:b}=V(t,i):{head:p,rows:m,ts:b}=C(t,i),m.length&&c&&(m=O(m,c)),{table:{head:p,rows:m},ts:b}},V=(t,s)=>{const{columns:e}=t,{keys:a,measures:o}=e,l=u.default.getGroupKey(a||[],s),r=s[0]?.ts?.raw,c=r?`${r}`:"",n=[];n.push({text:""}),s.forEach(i=>{n.push({text:l?i[l.id].raw:""})});const h=[];return o.forEach(i=>{h.push([{text:i.display}])}),o.forEach((i,p)=>{s.forEach(m=>{h[p].push({text:`${m[i.id].raw}`})})}),{rows:h,head:n,ts:c}},D=(t,s)=>t.map(e=>{const a=s?.length?Array(s.length):Array(Object.keys(t[0]).length);return Object.keys(e).forEach((o,l)=>{const r=s?.length?s.findIndex(n=>n.id===o):l,c=e[o].raw;a.splice(r,1,{text:c})}),a}),C=(t,s)=>{const{measures:e}=t.columns,a=e.map(h=>({text:h.display})),o=u.default.getDatasetRows(t,s),l=u.default.filterRowsByDisplayColumns(t,o),r=D(l,e),c=o[0]?.ts?.raw,n=c?`${c}`:"";return{head:a,rows:r,ts:n}},E=t=>{const s=Object.keys(t[0]).map(r=>({text:r})),e=D(t),o=u.default.getLastestDataset(t)[0]?.ts?.raw,l=o?`${o}`:"";return{head:s,rows:e,ts:l}},O=(t,s)=>{const e=s.flatMap((a,o)=>a.aggregate?[o]:[]);if(e.length){const a=[{html:"<strong>Total<strong>"}];for(let o=1;o<s.length;o+=1)a[o]={text:""};t.push(a),e.forEach(o=>{const l=t.reduce((r,c)=>{const n=c[o];return n&&n.text&&(r+=Number(n.text)),r},0);t[t.length-1][o]={html:`<strong>${l}<strong>`}})}return t};var A={createList:f,createTableRows:D};0&&(module.exports={createList,createTableRows});
2
2
  //# sourceMappingURL=utils.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/dpr/components/_dashboards/dashboard-list/utils.ts"],
4
- "sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { MoJTable, MoJTableRow } from '../../../types/Charts'\nimport { DashboardDataResponse } from '../../../types/Metrics'\nimport {\n DashboardVisualisationColumn,\n DashboardVisualisationColumnMeasure,\n ListDashboardVisualisationOptions,\n ListVisualisation,\n} from '../dashboard/types'\nimport DatasetHelper from '../../../utils/datasetHelper'\n\nexport const createList = (\n listDefinition: ListVisualisation,\n dashboardData: DashboardDataResponse[],\n): { table: MoJTable; ts: string } => {\n const { columns, options } = listDefinition\n const listOptions = <ListDashboardVisualisationOptions>options\n const showLatest = listOptions?.showLatest !== undefined ? listOptions.showLatest : true\n const columnsAsList = listOptions?.columnsAsList\n const { measures, keys } = columns\n const showAllData = (!measures && !keys) || (!measures.length && !keys)\n\n let datasetData: DashboardDataResponse[] = [...dashboardData]\n if (showLatest) {\n datasetData = DatasetHelper.getLastestDataset(datasetData)\n }\n\n let head\n let rows\n let ts\n\n if (showAllData) {\n ;({ head, rows, ts } = createFullList(datasetData))\n } else if (columnsAsList) {\n ;({ head, rows, ts } = createListFromColumns(listDefinition, datasetData))\n } else {\n ;({ head, rows, ts } = creatListFromRows(listDefinition, datasetData))\n }\n\n if (rows.length && measures) rows = sumColumns(rows, measures)\n\n return {\n table: {\n head,\n rows,\n },\n ts,\n }\n}\n\nconst createListFromColumns = (listDefinition: ListVisualisation, dashboardData: DashboardDataResponse[]) => {\n const { columns } = listDefinition\n const { keys, measures } = columns\n const groupKey = DatasetHelper.getGroupKey(keys || [], dashboardData)\n\n const timestampData = dashboardData[0]?.ts?.raw\n const ts = timestampData ? `${timestampData}` : ''\n\n const head = []\n head.push({ text: '' })\n dashboardData.forEach((row) => {\n head.push({\n text: groupKey ? row[groupKey.id].raw : '',\n })\n })\n\n const rows: MoJTableRow[][] = []\n measures.forEach((measure) => {\n rows.push([{ text: measure.display }] as MoJTableRow[])\n })\n\n measures.forEach((measure, index) => {\n dashboardData.forEach((row) => {\n rows[index].push({ text: `${row[measure.id].raw}` })\n })\n })\n\n return {\n rows,\n head,\n ts,\n }\n}\n\nexport const createTableRows = (\n data: DashboardDataResponse[],\n measures?: DashboardVisualisationColumn[],\n): MoJTableRow[][] => {\n return data.map((dataRow) => {\n const row: MoJTableRow[] = measures?.length ? Array(measures.length) : Array(Object.keys(data[0]).length)\n Object.keys(dataRow).forEach((key, index) => {\n const headIndex = measures?.length ? measures.findIndex((m) => m.id === key) : index\n const text = dataRow[key].raw\n row.splice(headIndex, 1, { text } as MoJTableRow)\n })\n\n return row\n })\n}\n\nconst creatListFromRows = (listDefinition: ListVisualisation, dashboardData: DashboardDataResponse[]) => {\n const { measures } = listDefinition.columns\n\n const head = measures.map((column) => {\n return { text: column.display }\n })\n\n const dataSetRows = DatasetHelper.getDatasetRows(listDefinition, dashboardData)\n const displayRows = DatasetHelper.filterRowsByDisplayColumns(listDefinition, dataSetRows)\n const rows = createTableRows(displayRows, measures)\n\n const timestampData = dataSetRows[0]?.ts?.raw\n const ts = timestampData ? `${timestampData}` : ''\n\n return {\n head,\n rows,\n ts,\n }\n}\n\nconst createFullList = (dashboardData: DashboardDataResponse[]) => {\n const head = Object.keys(dashboardData[0]).map((key) => {\n return { text: key }\n })\n const rows = createTableRows(dashboardData)\n\n const latestData = DatasetHelper.getLastestDataset(dashboardData)\n const timestampData = latestData[0]?.ts?.raw\n const ts = timestampData ? `${timestampData}` : ''\n\n return {\n head,\n rows,\n ts,\n }\n}\n\nconst sumColumns = (rowsData: MoJTableRow[][], measures: DashboardVisualisationColumnMeasure[]) => {\n const sumColumnIndexes: number[] = measures.flatMap((col, idx) => (col.aggregate ? [idx] : []))\n\n if (sumColumnIndexes.length) {\n const sumRow: MoJTableRow[] = [{ html: `<strong>Total<strong>` }]\n for (let index = 1; index < measures.length; index += 1) {\n sumRow[index] = { text: '' }\n }\n\n rowsData.push(sumRow)\n sumColumnIndexes.forEach((index) => {\n const total = rowsData.reduce((acc, row) => {\n const rowIndex = row[index]\n if (rowIndex && rowIndex.text) {\n acc += Number(rowIndex.text)\n }\n return acc\n }, 0)\n rowsData[rowsData.length - 1][index] = {\n html: `<strong>${total}<strong>`,\n }\n })\n }\n\n return rowsData\n}\n\nexport default {\n createList,\n createTableRows,\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { DashboardDataResponse } from '../../../types/Metrics'\nimport { ListDashboardVisualisationOptions, MoJTable, MoJTableRow } from '../dashboard-visualisation/types'\nimport DatasetHelper from '../../../utils/datasetHelper'\nimport { components } from '../../../types/api'\n\nexport const createList = (\n listDefinition: components['schemas']['DashboardVisualisationDefinition'],\n dashboardData: DashboardDataResponse[],\n): { table: MoJTable; ts: string } => {\n const { columns, options } = listDefinition\n const listOptions = <ListDashboardVisualisationOptions>options\n const showLatest = listOptions?.showLatest !== undefined ? listOptions.showLatest : true\n const columnsAsList = listOptions?.columnsAsList\n const { measures, keys } = columns\n const showAllData = (!measures && !keys) || (!measures.length && !keys)\n\n let datasetData: DashboardDataResponse[] = [...dashboardData]\n if (showLatest) {\n datasetData = DatasetHelper.getLastestDataset(datasetData)\n }\n\n let head\n let rows\n let ts\n\n if (showAllData) {\n ;({ head, rows, ts } = createFullList(datasetData))\n } else if (columnsAsList) {\n ;({ head, rows, ts } = createListFromColumns(listDefinition, datasetData))\n } else {\n ;({ head, rows, ts } = creatListFromRows(listDefinition, datasetData))\n }\n\n if (rows.length && measures) rows = sumColumns(rows, measures)\n\n return {\n table: {\n head,\n rows,\n },\n ts,\n }\n}\n\nconst createListFromColumns = (\n listDefinition: components['schemas']['DashboardVisualisationDefinition'],\n dashboardData: DashboardDataResponse[],\n) => {\n const { columns } = listDefinition\n const { keys, measures } = columns\n const groupKey = DatasetHelper.getGroupKey(keys || [], dashboardData)\n\n const timestampData = dashboardData[0]?.ts?.raw\n const ts = timestampData ? `${timestampData}` : ''\n\n const head = []\n head.push({ text: '' })\n dashboardData.forEach((row) => {\n head.push({\n text: groupKey ? row[groupKey.id].raw : '',\n })\n })\n\n const rows: MoJTableRow[][] = []\n measures.forEach((measure) => {\n rows.push([{ text: measure.display }] as MoJTableRow[])\n })\n\n measures.forEach((measure, index) => {\n dashboardData.forEach((row) => {\n rows[index].push({ text: `${row[measure.id].raw}` })\n })\n })\n\n return {\n rows,\n head,\n ts,\n }\n}\n\nexport const createTableRows = (\n data: DashboardDataResponse[],\n measures?: components['schemas']['DashboardVisualisationColumnDefinition'][],\n): MoJTableRow[][] => {\n return data.map((dataRow) => {\n const row: MoJTableRow[] = measures?.length ? Array(measures.length) : Array(Object.keys(data[0]).length)\n Object.keys(dataRow).forEach((key, index) => {\n const headIndex = measures?.length ? measures.findIndex((m) => m.id === key) : index\n const text = dataRow[key].raw\n row.splice(headIndex, 1, { text } as MoJTableRow)\n })\n\n return row\n })\n}\n\nconst creatListFromRows = (\n listDefinition: components['schemas']['DashboardVisualisationDefinition'],\n dashboardData: DashboardDataResponse[],\n) => {\n const { measures } = listDefinition.columns\n\n const head = measures.map((column) => {\n return { text: column.display }\n })\n\n const dataSetRows = DatasetHelper.getDatasetRows(listDefinition, dashboardData)\n const displayRows = DatasetHelper.filterRowsByDisplayColumns(listDefinition, dataSetRows)\n const rows = createTableRows(displayRows, measures)\n\n const timestampData = dataSetRows[0]?.ts?.raw\n const ts = timestampData ? `${timestampData}` : ''\n\n return {\n head,\n rows,\n ts,\n }\n}\n\nconst createFullList = (dashboardData: DashboardDataResponse[]) => {\n const head = Object.keys(dashboardData[0]).map((key) => {\n return { text: key }\n })\n const rows = createTableRows(dashboardData)\n\n const latestData = DatasetHelper.getLastestDataset(dashboardData)\n const timestampData = latestData[0]?.ts?.raw\n const ts = timestampData ? `${timestampData}` : ''\n\n return {\n head,\n rows,\n ts,\n }\n}\n\nconst sumColumns = (\n rowsData: MoJTableRow[][],\n measures: components['schemas']['DashboardVisualisationColumnDefinition'][],\n) => {\n const sumColumnIndexes: number[] = measures.flatMap((col, idx) => (col.aggregate ? [idx] : []))\n\n if (sumColumnIndexes.length) {\n const sumRow: MoJTableRow[] = [{ html: `<strong>Total<strong>` }]\n for (let index = 1; index < measures.length; index += 1) {\n sumRow[index] = { text: '' }\n }\n\n rowsData.push(sumRow)\n sumColumnIndexes.forEach((index) => {\n const total = rowsData.reduce((acc, row) => {\n const rowIndex = row[index]\n if (rowIndex && rowIndex.text) {\n acc += Number(rowIndex.text)\n }\n return acc\n }, 0)\n rowsData[rowsData.length - 1][index] = {\n html: `<strong>${total}<strong>`,\n }\n })\n }\n\n return rowsData\n}\n\nexport default {\n createList,\n createTableRows,\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["utils_exports", "__export", "createList", "createTableRows", "utils_default", "__toCommonJS", "import_datasetHelper", "listDefinition", "dashboardData", "columns", "options", "listOptions", "showLatest", "columnsAsList", "measures", "keys", "showAllData", "datasetData", "DatasetHelper", "head", "rows", "ts", "createFullList", "createListFromColumns", "creatListFromRows", "sumColumns", "groupKey", "timestampData", "row", "measure", "index", "data", "dataRow", "key", "headIndex", "m", "text", "column", "dataSetRows", "displayRows", "rowsData", "sumColumnIndexes", "col", "idx", "sumRow", "total", "acc", "rowIndex"]
7
7
  }
@@ -3,12 +3,12 @@ import { mockListDefinitionAgeRange1 } from '../../../../../test-app/mocks/mockC
3
3
  import { dataQualityColsToList } from '../../../../../test-app/mocks/mockClients/dashboards/definitions/examples/visualisations/lists'
4
4
  import { mockAgeBreakdownData } from '../../../../../test-app/mocks/mockClients/dashboards/data/age-breakdown/data'
5
5
  import { mockTimeSeriesDataLastSixMonths } from '../../../../../test-app/mocks/mockClients/dashboards/data/data-quality-metrics/data'
6
- import { ListVisualisation } from '../dashboard/types'
6
+ import { components } from '../../../types/api'
7
7
 
8
8
  describe('DashboardListUtils', () => {
9
9
  describe('createList', () => {
10
10
  it('should create the list data', () => {
11
- const visDefinition = mockListDefinitionAgeRange1 as unknown as ListVisualisation
11
+ const visDefinition = mockListDefinitionAgeRange1 as components['schemas']['DashboardVisualisationDefinition']
12
12
  const result = DashboardListUtils.createList(visDefinition, mockAgeBreakdownData.flat())
13
13
  const expectedResult = {
14
14
  table: {
@@ -29,7 +29,7 @@ describe('DashboardListUtils', () => {
29
29
  })
30
30
 
31
31
  it('should create the list data from data columns', () => {
32
- const visDefinition = dataQualityColsToList as unknown as ListVisualisation
32
+ const visDefinition = dataQualityColsToList as components['schemas']['DashboardVisualisationDefinition']
33
33
  const result = DashboardListUtils.createList(visDefinition, mockTimeSeriesDataLastSixMonths.flat())
34
34
 
35
35
  const expectedResult = {
@@ -1,16 +1,11 @@
1
1
  /* eslint-disable no-param-reassign */
2
- import { MoJTable, MoJTableRow } from '../../../types/Charts'
3
2
  import { DashboardDataResponse } from '../../../types/Metrics'
4
- import {
5
- DashboardVisualisationColumn,
6
- DashboardVisualisationColumnMeasure,
7
- ListDashboardVisualisationOptions,
8
- ListVisualisation,
9
- } from '../dashboard/types'
3
+ import { ListDashboardVisualisationOptions, MoJTable, MoJTableRow } from '../dashboard-visualisation/types'
10
4
  import DatasetHelper from '../../../utils/datasetHelper'
5
+ import { components } from '../../../types/api'
11
6
 
12
7
  export const createList = (
13
- listDefinition: ListVisualisation,
8
+ listDefinition: components['schemas']['DashboardVisualisationDefinition'],
14
9
  dashboardData: DashboardDataResponse[],
15
10
  ): { table: MoJTable; ts: string } => {
16
11
  const { columns, options } = listDefinition
@@ -48,7 +43,10 @@ export const createList = (
48
43
  }
49
44
  }
50
45
 
51
- const createListFromColumns = (listDefinition: ListVisualisation, dashboardData: DashboardDataResponse[]) => {
46
+ const createListFromColumns = (
47
+ listDefinition: components['schemas']['DashboardVisualisationDefinition'],
48
+ dashboardData: DashboardDataResponse[],
49
+ ) => {
52
50
  const { columns } = listDefinition
53
51
  const { keys, measures } = columns
54
52
  const groupKey = DatasetHelper.getGroupKey(keys || [], dashboardData)
@@ -84,7 +82,7 @@ const createListFromColumns = (listDefinition: ListVisualisation, dashboardData:
84
82
 
85
83
  export const createTableRows = (
86
84
  data: DashboardDataResponse[],
87
- measures?: DashboardVisualisationColumn[],
85
+ measures?: components['schemas']['DashboardVisualisationColumnDefinition'][],
88
86
  ): MoJTableRow[][] => {
89
87
  return data.map((dataRow) => {
90
88
  const row: MoJTableRow[] = measures?.length ? Array(measures.length) : Array(Object.keys(data[0]).length)
@@ -98,7 +96,10 @@ export const createTableRows = (
98
96
  })
99
97
  }
100
98
 
101
- const creatListFromRows = (listDefinition: ListVisualisation, dashboardData: DashboardDataResponse[]) => {
99
+ const creatListFromRows = (
100
+ listDefinition: components['schemas']['DashboardVisualisationDefinition'],
101
+ dashboardData: DashboardDataResponse[],
102
+ ) => {
102
103
  const { measures } = listDefinition.columns
103
104
 
104
105
  const head = measures.map((column) => {
@@ -136,7 +137,10 @@ const createFullList = (dashboardData: DashboardDataResponse[]) => {
136
137
  }
137
138
  }
138
139
 
139
- const sumColumns = (rowsData: MoJTableRow[][], measures: DashboardVisualisationColumnMeasure[]) => {
140
+ const sumColumns = (
141
+ rowsData: MoJTableRow[][],
142
+ measures: components['schemas']['DashboardVisualisationColumnDefinition'][],
143
+ ) => {
140
144
  const sumColumnIndexes: number[] = measures.flatMap((col, idx) => (col.aggregate ? [idx] : []))
141
145
 
142
146
  if (sumColumnIndexes.length) {
@@ -13,7 +13,7 @@
13
13
  <div class="dpr-dashboard-section" id="{{ id }}-dashboard-section">
14
14
 
15
15
  {% if title %}
16
- <h2 class="govuk-heading-m">{{ title }}</h2>
16
+ <h2 class="govuk-heading-l">{{ title }}</h2>
17
17
  {% endif %}
18
18
 
19
19
  {% if description %}
@@ -0,0 +1,2 @@
1
+ var a=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var c=(i,s)=>{for(var n in s)a(i,n,{get:s[n],enumerable:!0})},r=(i,s,n,e)=>{if(s&&typeof s=="object"||typeof s=="function")for(let o of h(s))!u.call(i,o)&&o!==n&&a(i,o,{get:()=>s[o],enumerable:!(e=m(s,o))||e.enumerable});return i};var D=i=>r(a({},"__esModule",{value:!0}),i);var p={};c(p,{DashboardVisualisationClass:()=>t,default:()=>l});module.exports=D(p);class t{constructor(s,n){this.initUnit=()=>{this.unit=this.columns.measures[0].unit?this.columns.measures[0].unit:void 0};this.definition=n,this.columns=n.columns,this.measures=this.columns.measures,this.keys=this.columns.keys,this.type=this.definition.type.split("-")[0],this.initUnit(),this.responseData=s}}var l=t;0&&(module.exports={DashboardVisualisationClass});
2
+ //# sourceMappingURL=DashboardVisualisation.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/dpr/components/_dashboards/dashboard-visualisation/DashboardVisualisation.ts"],
4
+ "sourcesContent": ["/* eslint-disable prefer-destructuring */\nimport { components } from '../../../types/api'\nimport { DashboardDataResponse } from '../../../types/Metrics'\n\nclass DashboardVisualisationClass {\n responseData: DashboardDataResponse[]\n\n definition: components['schemas']['DashboardVisualisationDefinition']\n\n columns: components['schemas']['DashboardVisualisationColumnsDefinition']\n\n measures: components['schemas']['DashboardVisualisationColumnDefinition'][]\n\n keys: components['schemas']['DashboardVisualisationColumnDefinition'][]\n\n unit: components['schemas']['DashboardVisualisationColumnDefinition']['unit']\n\n type: components['schemas']['DashboardVisualisationDefinition']['type']\n\n constructor(\n responseData: DashboardDataResponse[],\n definition: components['schemas']['DashboardVisualisationDefinition'],\n ) {\n this.definition = definition\n this.columns = definition.columns\n this.measures = this.columns.measures\n this.keys = this.columns.keys\n this.type = this.definition.type.split('-')[0] as components['schemas']['DashboardVisualisationDefinition']['type']\n this.initUnit()\n this.responseData = responseData\n }\n\n initUnit = () => {\n // todo\n this.unit = this.columns.measures[0].unit ? this.columns.measures[0].unit : undefined\n }\n}\n\nexport { DashboardVisualisationClass }\nexport default DashboardVisualisationClass\n"],
5
+ "mappings": "4ZAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,iCAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAIA,MAAME,CAA4B,CAehC,YACEG,EACAC,EACA,CAUF,cAAW,IAAM,CAEf,KAAK,KAAO,KAAK,QAAQ,SAAS,CAAC,EAAE,KAAO,KAAK,QAAQ,SAAS,CAAC,EAAE,KAAO,MAC9E,EAZE,KAAK,WAAaA,EAClB,KAAK,QAAUA,EAAW,QAC1B,KAAK,SAAW,KAAK,QAAQ,SAC7B,KAAK,KAAO,KAAK,QAAQ,KACzB,KAAK,KAAO,KAAK,WAAW,KAAK,MAAM,GAAG,EAAE,CAAC,EAC7C,KAAK,SAAS,EACd,KAAK,aAAeD,CACtB,CAMF,CAGA,IAAOF,EAAQD",
6
+ "names": ["DashboardVisualisation_exports", "__export", "DashboardVisualisationClass", "DashboardVisualisation_default", "__toCommonJS", "responseData", "definition"]
7
+ }