@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.
- package/dpr/components/_catalogue/catalogue-list/utils.js +1 -1
- package/dpr/components/_catalogue/catalogue-list/utils.js.map +3 -3
- package/dpr/components/_catalogue/catalogue-list/utils.ts +4 -5
- package/dpr/components/_catalogue/catalogue-search/view.njk +1 -0
- package/dpr/components/_charts/chart/Buckets.js +1 -1
- package/dpr/components/_charts/chart/Buckets.js.map +3 -3
- package/dpr/components/_charts/chart/Buckets.ts +44 -36
- package/dpr/components/_charts/chart/heatmap/HeatmapChart.js +1 -1
- package/dpr/components/_charts/chart/heatmap/HeatmapChart.js.map +2 -2
- package/dpr/components/_charts/chart/heatmap/HeatmapChart.ts +22 -14
- package/dpr/components/_charts/chart/heatmap/types.js +2 -0
- package/dpr/components/_charts/chart/heatmap/types.js.map +7 -0
- package/dpr/components/_charts/chart/heatmap/types.ts +6 -0
- package/dpr/components/_charts/utils.js +1 -1
- package/dpr/components/_charts/utils.js.map +3 -3
- package/dpr/components/_charts/utils.test.ts +10 -7
- package/dpr/components/_charts/utils.ts +57 -50
- package/dpr/components/_dashboards/dashboard/view.njk +1 -1
- package/dpr/components/_dashboards/dashboard-list/utils.js +1 -1
- package/dpr/components/_dashboards/dashboard-list/utils.js.map +2 -2
- package/dpr/components/_dashboards/dashboard-list/utils.test.ts +3 -3
- package/dpr/components/_dashboards/dashboard-list/utils.ts +16 -12
- package/dpr/components/_dashboards/dashboard-section/view.njk +1 -1
- package/dpr/components/_dashboards/dashboard-visualisation/DashboardVisualisation.js +2 -0
- package/dpr/components/_dashboards/dashboard-visualisation/DashboardVisualisation.js.map +7 -0
- package/dpr/components/_dashboards/dashboard-visualisation/DashboardVisualisation.ts +40 -0
- package/dpr/components/_dashboards/dashboard-visualisation/types.js +2 -0
- package/dpr/components/_dashboards/dashboard-visualisation/types.js.map +7 -0
- package/dpr/components/_dashboards/dashboard-visualisation/types.ts +102 -0
- package/dpr/components/_dashboards/dashboard-visualisation/view.njk +1 -1
- package/dpr/components/_dashboards/scorecard/Scorecard.js +1 -1
- package/dpr/components/_dashboards/scorecard/Scorecard.js.map +2 -2
- package/dpr/components/_dashboards/scorecard/Scorecard.ts +37 -29
- package/dpr/components/_dashboards/scorecard/types.js.map +1 -1
- package/dpr/components/_dashboards/scorecard/types.ts +1 -0
- package/dpr/components/_dashboards/scorecard/utils.js +1 -1
- package/dpr/components/_dashboards/scorecard/utils.js.map +2 -2
- package/dpr/components/_dashboards/scorecard/utils.test.ts +13 -4
- package/dpr/components/_dashboards/scorecard/utils.ts +6 -5
- package/dpr/components/_dashboards/scorecard/view.njk +6 -5
- package/dpr/components/_dashboards/scorecard-group/view.njk +4 -4
- package/dpr/components/_reports/report-actions/types.d.js.map +1 -1
- package/dpr/components/_reports/report-actions/types.d.ts +1 -1
- package/dpr/components/_reports/report-heading/view.njk +1 -1
- package/dpr/data/dashboardClient.js +1 -1
- package/dpr/data/dashboardClient.js.map +2 -2
- package/dpr/data/dashboardClient.ts +8 -7
- package/dpr/data/reportingClient.js +1 -1
- package/dpr/data/reportingClient.js.map +1 -1
- package/dpr/data/reportingClient.ts +1 -1
- package/dpr/middleware/reportAuthoriser.js +1 -1
- package/dpr/middleware/reportAuthoriser.js.map +3 -3
- package/dpr/middleware/reportAuthoriser.ts +9 -20
- package/dpr/routes/journeys/download-report/controller.js +1 -1
- package/dpr/routes/journeys/download-report/controller.js.map +3 -3
- package/dpr/routes/journeys/download-report/controller.ts +4 -1
- package/dpr/routes/journeys/download-report/request-download/form/submitted/tests.cy.js +1 -1
- package/dpr/routes/journeys/download-report/request-download/form/submitted/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/download-report/request-download/form/submitted/tests.cy.ts +1 -0
- package/dpr/routes/journeys/download-report/request-download/form/tests.cy.js +1 -1
- package/dpr/routes/journeys/download-report/request-download/form/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/download-report/request-download/form/tests.cy.ts +1 -0
- package/dpr/routes/journeys/download-report/tests.cy.js +1 -1
- package/dpr/routes/journeys/download-report/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/download-report/tests.cy.ts +2 -8
- package/dpr/routes/journeys/download-report/utils.js +1 -1
- package/dpr/routes/journeys/download-report/utils.js.map +3 -3
- package/dpr/routes/journeys/download-report/utils.ts +10 -7
- package/dpr/routes/journeys/my-reports/bookmarks/list/tests.cy.js +1 -1
- package/dpr/routes/journeys/my-reports/bookmarks/list/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/my-reports/bookmarks/list/tests.cy.ts +1 -0
- package/dpr/routes/journeys/my-reports/bookmarks/tests.cy.js +1 -1
- package/dpr/routes/journeys/my-reports/bookmarks/tests.cy.js.map +3 -3
- package/dpr/routes/journeys/my-reports/bookmarks/tests.cy.ts +5 -14
- package/dpr/routes/journeys/my-reports/bookmarks/utils.js +1 -1
- package/dpr/routes/journeys/my-reports/bookmarks/utils.js.map +3 -3
- package/dpr/routes/journeys/my-reports/bookmarks/utils.ts +11 -5
- package/dpr/routes/journeys/my-reports/recently-viewed/list/tests.cy.js +1 -1
- package/dpr/routes/journeys/my-reports/recently-viewed/list/tests.cy.js.map +3 -3
- package/dpr/routes/journeys/my-reports/recently-viewed/list/tests.cy.ts +4 -7
- package/dpr/routes/journeys/my-reports/requested-reports/list/tests.cy.js +1 -1
- package/dpr/routes/journeys/my-reports/requested-reports/list/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/my-reports/requested-reports/list/tests.cy.ts +1 -0
- package/dpr/routes/journeys/request-missing-report/form/tests.cy.js +1 -1
- package/dpr/routes/journeys/request-missing-report/form/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/request-missing-report/form/tests.cy.ts +1 -0
- package/dpr/routes/journeys/request-missing-report/tests.cy.js +1 -1
- package/dpr/routes/journeys/request-missing-report/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/request-missing-report/tests.cy.ts +3 -5
- package/dpr/routes/journeys/request-report/filters/tests.cy.js +1 -1
- package/dpr/routes/journeys/request-report/filters/tests.cy.js.map +3 -3
- package/dpr/routes/journeys/request-report/filters/tests.cy.ts +3 -6
- package/dpr/routes/journeys/request-report/filters/utils.js +1 -1
- package/dpr/routes/journeys/request-report/filters/utils.js.map +2 -2
- package/dpr/routes/journeys/request-report/filters/utils.ts +2 -3
- package/dpr/routes/journeys/request-report/status/tests.cy.js +1 -1
- package/dpr/routes/journeys/request-report/status/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/request-report/status/tests.cy.ts +2 -7
- package/dpr/routes/journeys/request-report/tests.cy.js +1 -1
- package/dpr/routes/journeys/request-report/tests.cy.js.map +3 -3
- package/dpr/routes/journeys/request-report/tests.cy.ts +5 -21
- package/dpr/routes/journeys/view-report/async/controller.js.map +2 -2
- package/dpr/routes/journeys/view-report/async/controller.ts +2 -2
- package/dpr/routes/journeys/view-report/async/dashboard/tests.cy.js +1 -1
- package/dpr/routes/journeys/view-report/async/dashboard/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/view-report/async/dashboard/tests.cy.ts +2 -10
- package/dpr/routes/journeys/view-report/async/dashboard/utils.js +1 -1
- package/dpr/routes/journeys/view-report/async/dashboard/utils.js.map +3 -3
- package/dpr/routes/journeys/view-report/async/dashboard/utils.ts +100 -95
- package/dpr/routes/journeys/view-report/async/report/controller.js +1 -1
- package/dpr/routes/journeys/view-report/async/report/controller.js.map +3 -3
- package/dpr/routes/journeys/view-report/async/report/controller.ts +4 -6
- package/dpr/routes/journeys/view-report/async/report/tests.cy.js +1 -1
- package/dpr/routes/journeys/view-report/async/report/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/view-report/async/report/tests.cy.ts +8 -19
- package/dpr/routes/journeys/view-report/async/report/types.js +2 -0
- package/dpr/routes/journeys/view-report/async/report/types.js.map +7 -0
- package/dpr/routes/journeys/view-report/async/report/types.ts +31 -0
- package/dpr/routes/journeys/view-report/async/report/utils.js +1 -1
- package/dpr/routes/journeys/view-report/async/report/utils.js.map +3 -3
- package/dpr/routes/journeys/view-report/async/report/utils.ts +173 -136
- package/dpr/routes/journeys/view-report/sync/tests.cy.js +1 -1
- package/dpr/routes/journeys/view-report/sync/tests.cy.js.map +3 -3
- package/dpr/routes/journeys/view-report/sync/tests.cy.ts +3 -5
- package/dpr/services/dashboardService.js +1 -1
- package/dpr/services/dashboardService.js.map +2 -2
- package/dpr/services/dashboardService.ts +7 -5
- package/dpr/services/productCollection/productCollectionService.js +1 -1
- package/dpr/services/productCollection/productCollectionService.js.map +2 -2
- package/dpr/services/productCollection/productCollectionService.ts +3 -3
- package/dpr/services/reportingService.js +1 -1
- package/dpr/services/reportingService.js.map +1 -1
- package/dpr/services/reportingService.ts +1 -1
- package/dpr/types/AsyncReportUtils.js.map +1 -1
- package/dpr/types/AsyncReportUtils.ts +3 -4
- package/dpr/types/Charts.js +1 -1
- package/dpr/types/Charts.js.map +3 -3
- package/dpr/types/Charts.ts +0 -82
- package/dpr/types/Metrics.js +1 -1
- package/dpr/types/Metrics.js.map +1 -1
- package/dpr/types/Metrics.ts +7 -0
- package/dpr/types/ReportQuery.js +1 -1
- package/dpr/types/ReportQuery.js.map +3 -3
- package/dpr/types/ReportQuery.ts +24 -15
- package/dpr/types/Services.d.js +1 -1
- package/dpr/types/Services.d.js.map +1 -1
- package/dpr/types/Services.d.ts +2 -0
- package/dpr/types/api.d.js.map +1 -1
- package/dpr/types/api.d.ts +14 -16
- package/dpr/utils/Personalisation/personalisationUtils.js +1 -1
- package/dpr/utils/Personalisation/personalisationUtils.js.map +3 -3
- package/dpr/utils/Personalisation/personalisationUtils.ts +15 -6
- package/dpr/utils/UserStoreItemBuilder.js +1 -1
- package/dpr/utils/UserStoreItemBuilder.js.map +1 -1
- package/dpr/utils/UserStoreItemBuilder.ts +2 -2
- package/dpr/utils/datasetHelper.js +1 -1
- package/dpr/utils/datasetHelper.js.map +3 -3
- package/dpr/utils/datasetHelper.test.ts +11 -11
- package/dpr/utils/datasetHelper.ts +23 -8
- package/dpr/utils/logger.js +1 -1
- package/dpr/utils/logger.js.map +3 -3
- package/dpr/utils/logger.ts +6 -1
- package/package.json +2 -1
- package/dpr/components/_charts/chart/DashboardVisualisation.js +0 -2
- package/dpr/components/_charts/chart/DashboardVisualisation.js.map +0 -7
- package/dpr/components/_charts/chart/DashboardVisualisation.ts +0 -43
- package/dpr/components/_dashboards/dashboard/types.js +0 -2
- package/dpr/components/_dashboards/dashboard/types.js.map +0 -7
- 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": "6iBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,iBAAAE,EAAA,sBAAAC,EAAA,2BAAAC,EAAA,YAAAC,IAAA,eAAAC,EAAAN,GAAA,IAAAO,EAAkB,oBAClBC,EAAuB,
|
|
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", "
|
|
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 {
|
|
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:
|
|
23
|
-
let snapshotVisualisationFromListDefinition:
|
|
24
|
-
let timeseriesVisualisationDefinition:
|
|
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 =
|
|
28
|
-
|
|
29
|
-
|
|
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:
|
|
20
|
+
chartDefinition: components['schemas']['DashboardVisualisationDefinition'],
|
|
27
21
|
rawData: DashboardDataResponse[],
|
|
28
|
-
):
|
|
22
|
+
): DashboardVisualisatonCardData => {
|
|
29
23
|
let table: MoJTable
|
|
30
|
-
let chart:
|
|
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:
|
|
42
|
+
chartDefinition: components['schemas']['DashboardVisualisationDefinition'],
|
|
49
43
|
rawData: DashboardDataResponse[],
|
|
50
|
-
):
|
|
44
|
+
): DashboardVisualisatonCardData => {
|
|
51
45
|
let table: MoJTable
|
|
52
|
-
let chart:
|
|
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:
|
|
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:
|
|
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 = (
|
|
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 = (
|
|
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:
|
|
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:
|
|
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 = !!
|
|
149
|
+
const isListChart = !!measures.find((col) => col.axis)
|
|
150
150
|
let headline: ChartMetaData
|
|
151
151
|
|
|
152
|
-
let headlineColumn:
|
|
152
|
+
let headlineColumn: components['schemas']['DashboardVisualisationColumnDefinition']
|
|
153
153
|
let value: number
|
|
154
154
|
let label: string
|
|
155
155
|
|
|
156
156
|
if (timeseries) {
|
|
157
|
-
headlineColumn =
|
|
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:
|
|
187
|
+
chartDefinition: components['schemas']['DashboardVisualisationDefinition'],
|
|
190
188
|
snapshotData: DashboardDataResponse[],
|
|
191
|
-
):
|
|
189
|
+
): DashboardVisualisationData => {
|
|
192
190
|
const { type, columns } = chartDefinition
|
|
193
191
|
const { measures } = columns
|
|
194
|
-
const isListChart = !!
|
|
192
|
+
const isListChart = !!measures.find((col) => col.axis)
|
|
195
193
|
|
|
196
194
|
let labels: string[]
|
|
197
195
|
let unit
|
|
198
|
-
let datasets:
|
|
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
|
|
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 = (
|
|
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
|
|
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 = (
|
|
240
|
+
const buildChartFromListData = (
|
|
241
|
+
columns: components['schemas']['DashboardVisualisationColumnsDefinition'],
|
|
242
|
+
rawData: DashboardDataResponse[],
|
|
243
|
+
) => {
|
|
240
244
|
const { measures, keys } = columns
|
|
241
245
|
|
|
242
|
-
const xAxisColumn =
|
|
243
|
-
const yAxisColumn =
|
|
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:
|
|
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 = (
|
|
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:
|
|
295
|
+
chartDefinition: components['schemas']['DashboardVisualisationDefinition'],
|
|
289
296
|
timeseriesData: DashboardDataResponse[],
|
|
290
|
-
):
|
|
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:
|
|
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
|
|
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:
|
|
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
|
|
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 {
|
|
5
|
-
"mappings": "6iBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,gBAAAE,EAAA,oBAAAC,EAAA,YAAAC,IAAA,eAAAC,EAAAL,
|
|
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 {
|
|
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
|
|
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
|
|
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:
|
|
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 = (
|
|
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?:
|
|
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 = (
|
|
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 = (
|
|
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) {
|
|
@@ -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
|
+
}
|