@ministryofjustice/hmpps-digital-prison-reporting-frontend 4.17.4 → 4.17.6
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/assets/app.js.map +1 -1
- package/dpr/components/_async/async-filters-form/sortByTemplate.js +1 -1
- package/dpr/components/_async/async-filters-form/sortByTemplate.js.map +1 -1
- package/dpr/components/_async/async-filters-form/types.d.js +1 -1
- package/dpr/components/_async/async-filters-form/types.d.js.map +1 -1
- package/dpr/components/_async/async-filters-form/utils.js +1 -1
- package/dpr/components/_async/async-filters-form/utils.js.map +2 -2
- package/dpr/components/_async/async-filters-form/utils.test.ts +9 -9
- package/dpr/components/_async/async-filters-form/utils.ts +1 -1
- package/dpr/components/_async/async-filters-form/view.njk +6 -3
- package/dpr/components/_catalogue/catalogue/types.js +1 -1
- package/dpr/components/_catalogue/catalogue/types.js.map +1 -1
- package/dpr/components/_catalogue/catalogue/utils.js +1 -1
- package/dpr/components/_catalogue/catalogue/utils.js.map +2 -2
- package/dpr/components/_catalogue/catalogue/utils.test.ts +6 -3
- package/dpr/components/_catalogue/catalogue/utils.ts +1 -1
- package/dpr/components/_catalogue/catalogue-list/utils.js +1 -1
- package/dpr/components/_catalogue/catalogue-list/utils.js.map +2 -2
- package/dpr/components/_catalogue/catalogue-list/utils.test.ts +1 -0
- package/dpr/components/_catalogue/catalogue-list/utils.ts +5 -5
- 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 +3 -3
- package/dpr/components/_charts/chart/heatmap/HeatmapChart.js +1 -1
- package/dpr/components/_charts/chart/heatmap/HeatmapChart.js.map +3 -3
- package/dpr/components/_charts/chart/heatmap/HeatmapChart.ts +1 -13
- package/dpr/components/_charts/chart/heatmap/types.js +1 -1
- package/dpr/components/_charts/chart/heatmap/types.js.map +2 -2
- package/dpr/components/_charts/chart/heatmap/types.ts +1 -1
- package/dpr/components/_charts/utils.js +1 -1
- package/dpr/components/_charts/utils.js.map +3 -3
- package/dpr/components/_charts/utils.test.ts +1 -0
- package/dpr/components/_charts/utils.ts +84 -43
- 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 +1 -0
- package/dpr/components/_dashboards/dashboard-list/utils.ts +16 -11
- package/dpr/components/_dashboards/dashboard-visualisation/DashboardVisualisation.js +1 -1
- package/dpr/components/_dashboards/dashboard-visualisation/DashboardVisualisation.js.map +2 -2
- package/dpr/components/_dashboards/dashboard-visualisation/DashboardVisualisation.ts +1 -1
- package/dpr/components/_dashboards/dashboard-visualisation/types.js +1 -1
- package/dpr/components/_dashboards/dashboard-visualisation/types.js.map +2 -2
- package/dpr/components/_dashboards/dashboard-visualisation/types.ts +8 -8
- 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 +8 -8
- package/dpr/components/_dashboards/scorecard/types.js +1 -1
- package/dpr/components/_dashboards/scorecard/types.js.map +2 -2
- package/dpr/components/_dashboards/scorecard/types.ts +12 -10
- package/dpr/components/_dashboards/scorecard/utils.js +1 -1
- package/dpr/components/_dashboards/scorecard/utils.js.map +1 -1
- package/dpr/components/_dashboards/scorecard/utils.test.ts +1 -0
- package/dpr/components/_filters/filter-input/enum.js +1 -1
- package/dpr/components/_filters/filter-input/enum.js.map +1 -1
- package/dpr/components/_filters/filter-input/filters.js +1 -1
- package/dpr/components/_filters/filter-input/filters.js.map +1 -1
- package/dpr/components/_filters/filter-input/filters.test.ts +1 -0
- package/dpr/components/_filters/filter-input/types.d.js +1 -1
- package/dpr/components/_filters/filter-input/types.d.js.map +1 -1
- package/dpr/components/_filters/filters-selected/utils.js +1 -1
- package/dpr/components/_filters/filters-selected/utils.js.map +3 -3
- package/dpr/components/_filters/filters-selected/utils.test.ts +7 -4
- package/dpr/components/_filters/filters-selected/utils.ts +1 -1
- package/dpr/components/_filters/filtersTypeEnum.js +1 -1
- package/dpr/components/_filters/filtersTypeEnum.js.map +1 -1
- package/dpr/components/_filters/types.d.js +1 -1
- package/dpr/components/_filters/types.d.js.map +2 -2
- package/dpr/components/_filters/types.d.ts +5 -5
- package/dpr/components/_filters/utils.js +1 -1
- package/dpr/components/_filters/utils.js.map +2 -2
- package/dpr/components/_filters/utils.test.ts +54 -49
- package/dpr/components/_filters/utils.ts +16 -20
- package/dpr/components/_inputs/date-input/utils.js +1 -1
- package/dpr/components/_inputs/date-input/utils.js.map +1 -1
- package/dpr/components/_inputs/date-input/utils.test.ts +1 -0
- package/dpr/components/_inputs/date-range/clientClass.mjs +2 -2
- package/dpr/components/_inputs/date-range/types.js +1 -1
- package/dpr/components/_inputs/date-range/types.js.map +2 -2
- package/dpr/components/_inputs/date-range/types.ts +2 -2
- package/dpr/components/_inputs/date-range/utils.js +1 -1
- package/dpr/components/_inputs/date-range/utils.js.map +2 -2
- package/dpr/components/_inputs/date-range/utils.test.ts +5 -7
- package/dpr/components/_inputs/date-range/utils.ts +4 -4
- package/dpr/components/_inputs/date-range/view.njk +1 -0
- package/dpr/components/_inputs/granular-date-range/types.js +1 -1
- package/dpr/components/_inputs/granular-date-range/types.js.map +1 -1
- package/dpr/components/_inputs/granular-date-range/utils.js +1 -1
- package/dpr/components/_inputs/granular-date-range/utils.js.map +1 -1
- package/dpr/components/_inputs/granular-date-range/utils.test.ts +1 -0
- package/dpr/components/_inputs/multi-select/utils.js +1 -1
- package/dpr/components/_inputs/multi-select/utils.js.map +3 -3
- package/dpr/components/_inputs/multi-select/utils.ts +1 -1
- package/dpr/components/_inputs/multi-select/utilt.test.ts +29 -14
- package/dpr/components/_inputs/start-end-date/utils.js +1 -1
- package/dpr/components/_inputs/start-end-date/utils.js.map +1 -1
- package/dpr/components/_inputs/start-end-date/utils.test.ts +1 -0
- package/dpr/components/_reports/report-actions/actionsTemplate.js +1 -1
- package/dpr/components/_reports/report-actions/actionsTemplate.js.map +1 -1
- package/dpr/components/_reports/report-actions/types.d.js +1 -1
- package/dpr/components/_reports/report-actions/types.d.js.map +2 -2
- package/dpr/components/_reports/report-actions/types.d.ts +1 -1
- package/dpr/components/_reports/report-actions/utils.js +1 -1
- package/dpr/components/_reports/report-actions/utils.js.map +1 -1
- package/dpr/components/_reports/report-actions/utils.test.ts +8 -4
- package/dpr/components/_reports/report-columns-form/types.d.js +1 -1
- package/dpr/components/_reports/report-columns-form/types.d.js.map +1 -1
- package/dpr/components/_reports/report-columns-form/utils.js +1 -1
- package/dpr/components/_reports/report-columns-form/utils.js.map +2 -2
- package/dpr/components/_reports/report-columns-form/utils.ts +1 -1
- package/dpr/components/_reports/report-data-table/types.d.js +1 -1
- package/dpr/components/_reports/report-data-table/types.d.js.map +1 -1
- package/dpr/components/_reports/report-data-table/utils.js +1 -1
- package/dpr/components/_reports/report-data-table/utils.js.map +3 -3
- package/dpr/components/_reports/report-data-table/utils.test.ts +15 -8
- package/dpr/components/_reports/report-data-table/utils.ts +20 -8
- package/dpr/components/_reports/report-pagination/types.d.js +1 -1
- package/dpr/components/_reports/report-pagination/types.d.js.map +2 -2
- package/dpr/components/_reports/report-pagination/types.d.ts +2 -2
- package/dpr/components/_reports/report-pagination/utils.js +1 -1
- package/dpr/components/_reports/report-pagination/utils.js.map +1 -1
- package/dpr/components/_reports/report-pagination/utils.test.ts +1 -0
- package/dpr/components/_reports/report-totals/utils.js +1 -1
- package/dpr/components/_reports/report-totals/utils.js.map +1 -1
- package/dpr/components/card-group/utils.js +1 -1
- package/dpr/components/card-group/utils.js.map +1 -1
- package/dpr/components/card-group/utils.test.ts +7 -0
- package/dpr/components/report-list/defaultTokenProvider.js +1 -1
- package/dpr/components/report-list/defaultTokenProvider.js.map +3 -3
- package/dpr/components/report-list/defaultTokenProvider.ts +3 -3
- package/dpr/components/report-list/types.d.js +1 -1
- package/dpr/components/report-list/types.d.js.map +1 -1
- package/dpr/components/report-list/utils.js +1 -1
- package/dpr/components/report-list/utils.js.map +2 -2
- package/dpr/components/report-list/utils.test.ts +6 -4
- package/dpr/components/report-list/utils.ts +5 -5
- package/dpr/components/show-more/utils.js +1 -1
- package/dpr/components/show-more/utils.js.map +1 -1
- package/dpr/components/user-reports/bookmarks/utils.js +1 -1
- package/dpr/components/user-reports/bookmarks/utils.js.map +3 -3
- package/dpr/components/user-reports/bookmarks/utils.test.ts +14 -11
- package/dpr/components/user-reports/bookmarks/utils.ts +26 -31
- package/dpr/components/user-reports/requested/utils.js +1 -1
- package/dpr/components/user-reports/requested/utils.js.map +3 -3
- package/dpr/components/user-reports/requested/utils.test.ts +4 -3
- package/dpr/components/user-reports/requested/utils.ts +4 -3
- package/dpr/components/user-reports/types.d.js +1 -1
- package/dpr/components/user-reports/types.d.js.map +2 -2
- package/dpr/components/user-reports/types.d.ts +1 -1
- package/dpr/components/user-reports/utils.js +1 -1
- package/dpr/components/user-reports/utils.js.map +3 -3
- package/dpr/components/user-reports/utils.test.ts +48 -47
- package/dpr/components/user-reports/utils.ts +51 -57
- package/dpr/components/user-reports/viewed/utils.js +1 -1
- package/dpr/components/user-reports/viewed/utils.js.map +2 -2
- package/dpr/components/user-reports/viewed/utils.ts +5 -4
- package/dpr/data/agentConfig.js +1 -1
- package/dpr/data/agentConfig.js.map +1 -1
- package/dpr/data/dashboardClient.js +1 -1
- package/dpr/data/dashboardClient.js.map +2 -2
- package/dpr/data/dashboardClient.ts +2 -2
- package/dpr/data/dprReportingClient.js +1 -1
- package/dpr/data/dprReportingClient.js.map +3 -3
- package/dpr/data/dprReportingClient.ts +3 -3
- package/dpr/data/missingReportClient.js +2 -0
- package/dpr/data/missingReportClient.js.map +7 -0
- package/dpr/{services/missingReport → data}/missingReportClient.ts +4 -4
- package/dpr/data/productCollectionClient.js +2 -0
- package/dpr/data/productCollectionClient.js.map +7 -0
- package/dpr/data/productCollectionClient.ts +28 -0
- package/dpr/data/reportDataStore.js +1 -1
- package/dpr/data/reportDataStore.js.map +1 -1
- package/dpr/data/reportingClient.js +1 -1
- package/dpr/data/reportingClient.js.map +3 -3
- package/dpr/data/reportingClient.ts +7 -9
- package/dpr/data/restClient.js +1 -1
- package/dpr/data/restClient.js.map +2 -2
- package/dpr/data/restClient.ts +5 -5
- package/dpr/data/types.d.js +1 -1
- package/dpr/data/types.d.js.map +2 -2
- package/dpr/data/types.d.ts +1 -1
- package/dpr/middleware/reportAuthoriser.js +1 -1
- package/dpr/middleware/reportAuthoriser.js.map +2 -2
- package/dpr/middleware/reportAuthoriser.ts +2 -2
- package/dpr/middleware/setUpDprResources.js +1 -1
- package/dpr/middleware/setUpDprResources.js.map +2 -2
- package/dpr/middleware/setUpDprResources.test.ts +59 -20
- package/dpr/middleware/setUpDprResources.ts +30 -29
- package/dpr/middleware/setUpNestedRoute.js +1 -1
- package/dpr/middleware/setUpNestedRoute.js.map +2 -2
- package/dpr/middleware/setUpNestedRoute.ts +1 -1
- package/dpr/routes/index.js +1 -1
- package/dpr/routes/index.js.map +2 -2
- package/dpr/routes/index.ts +1 -2
- 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 +7 -6
- package/dpr/routes/journeys/download-report/request-download/form/controller.js +1 -1
- package/dpr/routes/journeys/download-report/request-download/form/controller.js.map +3 -3
- package/dpr/routes/journeys/download-report/request-download/form/controller.ts +1 -1
- package/dpr/routes/journeys/download-report/request-download/form/routes.js +1 -1
- package/dpr/routes/journeys/download-report/request-download/form/routes.js.map +1 -1
- package/dpr/routes/journeys/download-report/request-download/form/submitted/controller.js +1 -1
- package/dpr/routes/journeys/download-report/request-download/form/submitted/controller.js.map +3 -3
- package/dpr/routes/journeys/download-report/request-download/form/submitted/controller.ts +1 -1
- package/dpr/routes/journeys/download-report/request-download/form/submitted/routes.js +1 -1
- package/dpr/routes/journeys/download-report/request-download/form/submitted/routes.js.map +1 -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 +1 -1
- 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 +1 -1
- package/dpr/routes/journeys/download-report/request-download/routes.js +1 -1
- package/dpr/routes/journeys/download-report/request-download/routes.js.map +1 -1
- package/dpr/routes/journeys/download-report/request-download/service.js +1 -1
- package/dpr/routes/journeys/download-report/request-download/service.js.map +3 -3
- package/dpr/routes/journeys/download-report/request-download/service.ts +20 -8
- package/dpr/routes/journeys/download-report/routes.js +1 -1
- package/dpr/routes/journeys/download-report/routes.js.map +3 -3
- package/dpr/routes/journeys/download-report/routes.ts +1 -4
- 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 +4 -1
- package/dpr/routes/journeys/download-report/utils.js +1 -1
- package/dpr/routes/journeys/download-report/utils.js.map +2 -2
- package/dpr/routes/journeys/download-report/utils.ts +2 -4
- package/dpr/routes/journeys/my-reports/bookmarks/controller.js +1 -1
- package/dpr/routes/journeys/my-reports/bookmarks/controller.js.map +1 -1
- package/dpr/routes/journeys/my-reports/bookmarks/list/controller.js +1 -1
- package/dpr/routes/journeys/my-reports/bookmarks/list/controller.js.map +3 -3
- package/dpr/routes/journeys/my-reports/bookmarks/list/controller.ts +2 -2
- package/dpr/routes/journeys/my-reports/bookmarks/list/routes.js +1 -1
- package/dpr/routes/journeys/my-reports/bookmarks/list/routes.js.map +1 -1
- 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 -2
- package/dpr/routes/journeys/my-reports/bookmarks/routes.js +1 -1
- package/dpr/routes/journeys/my-reports/bookmarks/routes.js.map +1 -1
- package/dpr/routes/journeys/my-reports/bookmarks/service.js +3 -3
- package/dpr/routes/journeys/my-reports/bookmarks/service.js.map +3 -3
- package/dpr/routes/journeys/my-reports/bookmarks/service.ts +31 -18
- package/dpr/routes/journeys/my-reports/bookmarks/tests.cy.js +1 -1
- package/dpr/routes/journeys/my-reports/bookmarks/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/my-reports/bookmarks/tests.cy.ts +26 -26
- 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 +10 -11
- package/dpr/routes/journeys/my-reports/recently-viewed/controller.js +1 -1
- package/dpr/routes/journeys/my-reports/recently-viewed/controller.js.map +1 -1
- package/dpr/routes/journeys/my-reports/recently-viewed/list/controller.js +1 -1
- package/dpr/routes/journeys/my-reports/recently-viewed/list/controller.js.map +3 -3
- package/dpr/routes/journeys/my-reports/recently-viewed/list/controller.ts +1 -1
- package/dpr/routes/journeys/my-reports/recently-viewed/list/routes.js +1 -1
- package/dpr/routes/journeys/my-reports/recently-viewed/list/routes.js.map +1 -1
- 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 +2 -2
- package/dpr/routes/journeys/my-reports/recently-viewed/list/tests.cy.ts +7 -4
- package/dpr/routes/journeys/my-reports/recently-viewed/routes.js +1 -1
- package/dpr/routes/journeys/my-reports/recently-viewed/routes.js.map +1 -1
- package/dpr/routes/journeys/my-reports/recently-viewed/service.js +1 -1
- package/dpr/routes/journeys/my-reports/recently-viewed/service.js.map +3 -3
- package/dpr/routes/journeys/my-reports/recently-viewed/service.ts +0 -2
- package/dpr/routes/journeys/my-reports/requested-reports/controller.js +1 -1
- package/dpr/routes/journeys/my-reports/requested-reports/controller.js.map +1 -1
- package/dpr/routes/journeys/my-reports/requested-reports/list/controller.js +1 -1
- package/dpr/routes/journeys/my-reports/requested-reports/list/controller.js.map +3 -3
- package/dpr/routes/journeys/my-reports/requested-reports/list/controller.ts +1 -1
- package/dpr/routes/journeys/my-reports/requested-reports/list/routes.js +1 -1
- package/dpr/routes/journeys/my-reports/requested-reports/list/routes.js.map +1 -1
- 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 +1 -1
- package/dpr/routes/journeys/my-reports/requested-reports/routes.js +1 -1
- package/dpr/routes/journeys/my-reports/requested-reports/routes.js.map +1 -1
- package/dpr/routes/journeys/my-reports/requested-reports/service.js +1 -1
- package/dpr/routes/journeys/my-reports/requested-reports/service.js.map +3 -3
- package/dpr/routes/journeys/my-reports/requested-reports/service.ts +25 -17
- package/dpr/routes/journeys/my-reports/routes.js +1 -1
- package/dpr/routes/journeys/my-reports/routes.js.map +3 -3
- package/dpr/routes/journeys/my-reports/routes.ts +0 -3
- package/dpr/routes/journeys/product-collection/routes.js +1 -1
- package/dpr/routes/journeys/product-collection/routes.js.map +1 -1
- package/dpr/routes/journeys/product-collection/selected/controller.js +1 -1
- package/dpr/routes/journeys/product-collection/selected/controller.js.map +2 -2
- package/dpr/routes/journeys/product-collection/selected/controller.ts +1 -1
- package/dpr/routes/journeys/product-collection/selected/routes.js +1 -1
- package/dpr/routes/journeys/product-collection/selected/routes.js.map +1 -1
- package/dpr/routes/journeys/product-collection/selected/tests.cy.js +1 -1
- package/dpr/routes/journeys/product-collection/selected/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/product-collection/selected/tests.cy.ts +6 -4
- package/dpr/routes/journeys/product-collection/selected/validation.js +1 -1
- package/dpr/routes/journeys/product-collection/selected/validation.js.map +1 -1
- package/dpr/routes/journeys/request-missing-report/form/controller.js +1 -1
- package/dpr/routes/journeys/request-missing-report/form/controller.js.map +3 -3
- package/dpr/routes/journeys/request-missing-report/form/controller.ts +21 -19
- package/dpr/routes/journeys/request-missing-report/form/routes.js +1 -1
- package/dpr/routes/journeys/request-missing-report/form/routes.js.map +1 -1
- 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 +1 -1
- package/dpr/routes/journeys/request-missing-report/form/validation.js +1 -1
- package/dpr/routes/journeys/request-missing-report/form/validation.js.map +1 -1
- package/dpr/routes/journeys/request-missing-report/routes.js +1 -1
- package/dpr/routes/journeys/request-missing-report/routes.js.map +1 -1
- package/dpr/routes/journeys/request-missing-report/submitted/controller.js +1 -1
- package/dpr/routes/journeys/request-missing-report/submitted/controller.js.map +1 -1
- package/dpr/routes/journeys/request-missing-report/submitted/routes.js +1 -1
- package/dpr/routes/journeys/request-missing-report/submitted/routes.js.map +1 -1
- package/dpr/routes/journeys/request-missing-report/submitted/tests.cy.js +1 -1
- package/dpr/routes/journeys/request-missing-report/submitted/tests.cy.js.map +1 -1
- 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 +1 -1
- package/dpr/routes/journeys/request-report/controller.js +1 -1
- package/dpr/routes/journeys/request-report/controller.js.map +3 -3
- package/dpr/routes/journeys/request-report/controller.ts +1 -1
- package/dpr/routes/journeys/request-report/filters/controller.js +1 -1
- package/dpr/routes/journeys/request-report/filters/controller.js.map +3 -3
- package/dpr/routes/journeys/request-report/filters/controller.ts +7 -8
- package/dpr/routes/journeys/request-report/filters/routes.js +1 -1
- package/dpr/routes/journeys/request-report/filters/routes.js.map +1 -1
- package/dpr/routes/journeys/request-report/filters/tests.cy.js +1 -1
- package/dpr/routes/journeys/request-report/filters/tests.cy.js.map +1 -1
- package/dpr/routes/journeys/request-report/filters/utils.js +1 -1
- package/dpr/routes/journeys/request-report/filters/utils.js.map +3 -3
- package/dpr/routes/journeys/request-report/filters/utils.ts +38 -23
- package/dpr/routes/journeys/request-report/filters/view.njk +2 -1
- package/dpr/routes/journeys/request-report/routes.js +1 -1
- package/dpr/routes/journeys/request-report/routes.js.map +2 -2
- package/dpr/routes/journeys/request-report/routes.ts +2 -2
- package/dpr/routes/journeys/request-report/status/controller.js +1 -1
- package/dpr/routes/journeys/request-report/status/controller.js.map +3 -3
- package/dpr/routes/journeys/request-report/status/controller.ts +4 -4
- package/dpr/routes/journeys/request-report/status/routes.js +1 -1
- package/dpr/routes/journeys/request-report/status/routes.js.map +1 -1
- 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 +9 -4
- package/dpr/routes/journeys/request-report/status/utils.js +1 -1
- package/dpr/routes/journeys/request-report/status/utils.js.map +3 -3
- package/dpr/routes/journeys/request-report/status/utils.ts +10 -13
- package/dpr/routes/journeys/request-report/tests.cy.js +1 -1
- package/dpr/routes/journeys/request-report/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/request-report/tests.cy.ts +14 -11
- package/dpr/routes/journeys/routes.js +1 -1
- package/dpr/routes/journeys/routes.js.map +1 -1
- package/dpr/routes/journeys/view-report/async/controller.js +1 -1
- package/dpr/routes/journeys/view-report/async/controller.js.map +3 -3
- package/dpr/routes/journeys/view-report/async/controller.ts +4 -4
- package/dpr/routes/journeys/view-report/async/dashboard/controller.js +1 -1
- package/dpr/routes/journeys/view-report/async/dashboard/controller.js.map +3 -3
- package/dpr/routes/journeys/view-report/async/dashboard/controller.ts +4 -4
- package/dpr/routes/journeys/view-report/async/dashboard/routes.js +1 -1
- package/dpr/routes/journeys/view-report/async/dashboard/routes.js.map +1 -1
- 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 -2
- 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 +6 -8
- 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 +5 -5
- package/dpr/routes/journeys/view-report/async/report/routes.js +1 -1
- package/dpr/routes/journeys/view-report/async/report/routes.js.map +1 -1
- 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 +9 -7
- package/dpr/routes/journeys/view-report/async/report/types.js +1 -1
- package/dpr/routes/journeys/view-report/async/report/types.js.map +2 -2
- package/dpr/routes/journeys/view-report/async/report/types.ts +8 -8
- package/dpr/routes/journeys/view-report/async/report/utils.js +1 -1
- package/dpr/routes/journeys/view-report/async/report/utils.js.map +2 -2
- package/dpr/routes/journeys/view-report/async/report/utils.ts +16 -18
- package/dpr/routes/journeys/view-report/async/routes.js +1 -1
- package/dpr/routes/journeys/view-report/async/routes.js.map +1 -1
- package/dpr/routes/journeys/view-report/controller.js +1 -1
- package/dpr/routes/journeys/view-report/controller.js.map +3 -3
- package/dpr/routes/journeys/view-report/controller.ts +1 -1
- package/dpr/routes/journeys/view-report/routes.js +1 -1
- package/dpr/routes/journeys/view-report/routes.js.map +2 -2
- package/dpr/routes/journeys/view-report/routes.ts +6 -3
- package/dpr/routes/journeys/view-report/sync/load-report/controller.js +1 -1
- package/dpr/routes/journeys/view-report/sync/load-report/controller.js.map +2 -2
- package/dpr/routes/journeys/view-report/sync/load-report/controller.ts +1 -1
- package/dpr/routes/journeys/view-report/sync/load-report/routes.js +1 -1
- package/dpr/routes/journeys/view-report/sync/load-report/routes.js.map +1 -1
- package/dpr/routes/journeys/view-report/sync/report/controller.js +1 -1
- package/dpr/routes/journeys/view-report/sync/report/controller.js.map +3 -3
- package/dpr/routes/journeys/view-report/sync/report/controller.ts +6 -6
- package/dpr/routes/journeys/view-report/sync/report/routes.js +1 -1
- package/dpr/routes/journeys/view-report/sync/report/routes.js.map +1 -1
- package/dpr/routes/journeys/view-report/sync/report/utils.js +1 -1
- package/dpr/routes/journeys/view-report/sync/report/utils.js.map +3 -3
- package/dpr/routes/journeys/view-report/sync/report/utils.ts +29 -19
- package/dpr/routes/journeys/view-report/sync/routes.js +1 -1
- package/dpr/routes/journeys/view-report/sync/routes.js.map +1 -1
- package/dpr/routes/journeys/view-report/sync/tests.cy.js +1 -1
- package/dpr/routes/journeys/view-report/sync/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/view-report/sync/tests.cy.ts +1 -1
- package/dpr/routes/journeys/view-report/utils.js +1 -1
- package/dpr/routes/journeys/view-report/utils.js.map +3 -3
- package/dpr/routes/journeys/view-report/utils.ts +22 -12
- package/dpr/services/dashboardService.js +1 -1
- package/dpr/services/dashboardService.js.map +3 -3
- package/dpr/services/dashboardService.ts +1 -3
- package/dpr/services/defaultFilterValuesService.js +1 -1
- package/dpr/services/defaultFilterValuesService.js.map +3 -3
- package/dpr/services/defaultFilterValuesService.ts +34 -15
- package/dpr/services/index.js +1 -1
- package/dpr/services/index.js.map +1 -1
- package/dpr/services/missingReport/missingReportService.js +2 -0
- package/dpr/services/missingReport/missingReportService.js.map +7 -0
- package/dpr/services/missingReport/missingReportService.ts +26 -0
- package/dpr/services/productCollection/productCollectionService.js +1 -1
- package/dpr/services/productCollection/productCollectionService.js.map +3 -3
- package/dpr/services/productCollection/productCollectionService.ts +19 -14
- package/dpr/services/productCollection/productCollectionStoreService.js +1 -1
- package/dpr/services/productCollection/productCollectionStoreService.js.map +3 -3
- package/dpr/services/productCollection/productCollectionStoreService.ts +9 -3
- package/dpr/services/reportStoreService.js +1 -1
- package/dpr/services/reportStoreService.js.map +2 -2
- package/dpr/services/reportStoreService.ts +1 -1
- package/dpr/services/reportingService.js +1 -1
- package/dpr/services/reportingService.js.map +3 -3
- package/dpr/services/reportingService.ts +1 -3
- package/dpr/setUpNunjucksFilters.js +1 -1
- package/dpr/setUpNunjucksFilters.js.map +1 -1
- package/dpr/types/AsyncReportUtils.js +1 -1
- package/dpr/types/AsyncReportUtils.js.map +2 -2
- package/dpr/types/AsyncReportUtils.ts +2 -1
- package/dpr/types/Bookmark.js +1 -1
- package/dpr/types/Bookmark.js.map +2 -2
- package/dpr/types/Bookmark.ts +9 -3
- package/dpr/types/Charts.js +1 -1
- package/dpr/types/Charts.js.map +1 -1
- package/dpr/types/Download.js +1 -1
- package/dpr/types/Download.js.map +1 -1
- package/dpr/types/DprConfig.js +1 -1
- package/dpr/types/DprConfig.js.map +2 -2
- package/dpr/types/DprConfig.ts +8 -0
- package/dpr/types/DprUser.js +1 -1
- package/dpr/types/DprUser.js.map +2 -2
- package/dpr/types/DprUser.ts +2 -2
- package/dpr/types/EmbeddedReportUtils.js +1 -1
- package/dpr/types/EmbeddedReportUtils.js.map +1 -1
- package/dpr/types/ExecutionData.d.js +1 -1
- package/dpr/types/ExecutionData.d.js.map +2 -2
- package/dpr/types/ExecutionData.d.ts +2 -2
- package/dpr/types/Metrics.js +1 -1
- package/dpr/types/Metrics.js.map +2 -2
- package/dpr/types/Metrics.ts +1 -1
- package/dpr/types/ReportQuery.js +1 -1
- package/dpr/types/ReportQuery.js.map +2 -2
- package/dpr/types/ReportQuery.ts +15 -11
- package/dpr/types/ReportStore.js +1 -1
- package/dpr/types/ReportStore.js.map +1 -1
- package/dpr/types/Services.d.js +1 -1
- package/dpr/types/Services.d.js.map +2 -2
- package/dpr/types/Services.d.ts +8 -8
- package/dpr/types/Templates.d.js +1 -1
- package/dpr/types/Templates.d.js.map +1 -1
- package/dpr/types/UserReports.js +1 -1
- package/dpr/types/UserReports.js.map +2 -2
- package/dpr/types/UserReports.ts +29 -15
- package/dpr/types/api.d.js +1 -1
- package/dpr/types/api.d.js.map +1 -1
- package/dpr/types/index.d.js +1 -1
- package/dpr/types/index.d.js.map +2 -2
- package/dpr/types/index.d.ts +1 -1
- package/dpr/utils/CollatedSummaryBuilder/CollatedSummaryBuilder.js +1 -1
- package/dpr/utils/CollatedSummaryBuilder/CollatedSummaryBuilder.js.map +1 -1
- package/dpr/utils/CollatedSummaryBuilder/CollatedSummaryBuilder.test.ts +2 -0
- package/dpr/utils/CreateDprServices.js +2 -0
- package/dpr/utils/CreateDprServices.js.map +7 -0
- package/dpr/utils/CreateDprServices.ts +73 -0
- package/dpr/utils/DataTableBuilder/DataTableBuilder.js +1 -1
- package/dpr/utils/DataTableBuilder/DataTableBuilder.js.map +1 -1
- package/dpr/utils/DataTableBuilder/DataTableBuilder.test.ts +10 -0
- package/dpr/utils/DataTableBuilder/types.d.js +1 -1
- package/dpr/utils/DataTableBuilder/types.d.js.map +2 -2
- package/dpr/utils/DataTableBuilder/types.d.ts +3 -3
- package/dpr/utils/DateMapper/DateMapper.js +1 -1
- package/dpr/utils/DateMapper/DateMapper.js.map +2 -2
- package/dpr/utils/DateMapper/DateMapper.test.ts +22 -9
- package/dpr/utils/DateMapper/DateMapper.ts +9 -11
- package/dpr/utils/DateMapper/types.d.js +1 -1
- package/dpr/utils/DateMapper/types.d.js.map +1 -1
- package/dpr/utils/ErrorHandler.js +2 -0
- package/dpr/utils/ErrorHandler.js.map +7 -0
- package/dpr/utils/ErrorHandler.ts +85 -0
- package/dpr/utils/ParentChildDataTableBuilder/ParentChildDataTableBuilder.js +1 -1
- package/dpr/utils/ParentChildDataTableBuilder/ParentChildDataTableBuilder.js.map +2 -2
- package/dpr/utils/ParentChildDataTableBuilder/ParentChildDataTableBuilder.test.ts +13 -2
- package/dpr/utils/ParentChildDataTableBuilder/ParentChildDataTableBuilder.ts +3 -3
- package/dpr/utils/ParentChildDataTableBuilder/types.d.js +1 -1
- package/dpr/utils/ParentChildDataTableBuilder/types.d.js.map +1 -1
- package/dpr/utils/Personalisation/personalisationUtils.js +1 -1
- package/dpr/utils/Personalisation/personalisationUtils.js.map +3 -3
- package/dpr/utils/Personalisation/personalisationUtils.ts +6 -2
- package/dpr/utils/Personalisation/types.d.js +1 -1
- package/dpr/utils/Personalisation/types.d.js.map +1 -1
- package/dpr/utils/SectionedDataTableBuilder/SectionedDataTableBuilder.js +1 -1
- package/dpr/utils/SectionedDataTableBuilder/SectionedDataTableBuilder.js.map +2 -2
- package/dpr/utils/SectionedDataTableBuilder/SectionedDataTableBuilder.test.ts +5 -0
- package/dpr/utils/SectionedDataTableBuilder/SectionedDataTableBuilder.ts +1 -1
- package/dpr/utils/SectionedDataTableBuilder/types.d.js +1 -1
- package/dpr/utils/SectionedDataTableBuilder/types.d.js.map +1 -1
- package/dpr/utils/SectionedFieldsTableBuilder/SectionedFieldsTableBuilder.js +1 -1
- package/dpr/utils/SectionedFieldsTableBuilder/SectionedFieldsTableBuilder.js.map +2 -2
- package/dpr/utils/SectionedFieldsTableBuilder/SectionedFieldsTableBuilder.test.ts +7 -4
- package/dpr/utils/SectionedFieldsTableBuilder/SectionedFieldsTableBuilder.ts +3 -3
- package/dpr/utils/SummaryDataTableBuilder/SummaryDataTableBuilder.js +1 -1
- package/dpr/utils/SummaryDataTableBuilder/SummaryDataTableBuilder.js.map +1 -1
- package/dpr/utils/SummaryDataTableBuilder/SummaryDataTableBuilder.test.ts +1 -0
- package/dpr/utils/UserStoreItemBuilder.js +1 -1
- package/dpr/utils/UserStoreItemBuilder.js.map +2 -2
- package/dpr/utils/UserStoreItemBuilder.ts +19 -32
- package/dpr/utils/arrayUtils.js +1 -1
- package/dpr/utils/arrayUtils.js.map +1 -1
- package/dpr/utils/datasetHelper.js +1 -1
- package/dpr/utils/datasetHelper.js.map +2 -2
- package/dpr/utils/datasetHelper.test.ts +21 -33
- package/dpr/utils/datasetHelper.ts +12 -17
- package/dpr/utils/definitionUtils.js +1 -1
- package/dpr/utils/definitionUtils.js.map +3 -3
- package/dpr/utils/definitionUtils.ts +14 -3
- package/dpr/utils/index.js +1 -1
- package/dpr/utils/index.js.map +1 -1
- package/dpr/utils/indexedAccesHelper.js +2 -0
- package/dpr/utils/indexedAccesHelper.js.map +7 -0
- package/dpr/utils/indexedAccesHelper.ts +24 -0
- package/dpr/utils/localsHelper.js +1 -1
- package/dpr/utils/localsHelper.js.map +2 -2
- package/dpr/utils/localsHelper.ts +8 -8
- package/dpr/utils/logger.js +1 -1
- package/dpr/utils/logger.js.map +2 -2
- package/dpr/utils/logger.ts +1 -1
- package/dpr/utils/reportListsHelper.js +1 -1
- package/dpr/utils/reportListsHelper.js.map +1 -1
- package/dpr/utils/reportStoreHelper.js +1 -1
- package/dpr/utils/reportStoreHelper.js.map +1 -1
- package/dpr/utils/reportStoreHelper.test.ts +3 -2
- package/dpr/utils/requestStatusHelper.js +1 -1
- package/dpr/utils/requestStatusHelper.js.map +3 -3
- package/dpr/utils/requestStatusHelper.ts +29 -42
- package/dpr/utils/sanitisedError.js +1 -1
- package/dpr/utils/sanitisedError.js.map +2 -2
- package/dpr/utils/sanitisedError.ts +1 -1
- package/dpr/utils/urlHelper.js +1 -1
- package/dpr/utils/urlHelper.js.map +2 -2
- package/dpr/utils/urlHelper.ts +4 -4
- package/dpr/validation/validate.js +1 -1
- package/dpr/validation/validate.js.map +2 -2
- package/dpr/validation/validate.ts +2 -2
- package/package.json +4 -2
- package/dpr/components/error-summary/utils.js +0 -2
- package/dpr/components/error-summary/utils.js.map +0 -7
- package/dpr/components/error-summary/utils.test.ts +0 -54
- package/dpr/components/error-summary/utils.ts +0 -65
- package/dpr/services/missingReport/missingReportClient.js +0 -2
- package/dpr/services/missingReport/missingReportClient.js.map +0 -7
- package/dpr/utils/ReportStoreServiceUtils.js +0 -2
- package/dpr/utils/ReportStoreServiceUtils.js.map +0 -7
- package/dpr/utils/ReportStoreServiceUtils.ts +0 -140
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/dpr/components/_charts/chart/heatmap/HeatmapChart.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable prefer-destructuring */\nimport dayjs from 'dayjs'\nimport { Granularity } from '../../../_inputs/granular-date-range/types'\nimport { DashboardDataResponse } from '../../../../types/Metrics'\nimport {\n DashboardVisualisationType,\n
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["HeatmapChart_exports", "__export", "HeatmapChart", "HeatmapChart_default", "__toCommonJS", "import_dayjs", "import_types", "import_datasetHelper", "import_DashboardVisualisation", "import_Buckets", "DashboardVisualisationClass", "responseData", "granularity", "definition", "id", "display", "columns", "type", "errors", "message", "timeBlockData", "DatasetHelper", "tsData", "raw", "rag", "tsRaw", "
|
|
4
|
+
"sourcesContent": ["/* eslint-disable prefer-destructuring */\nimport dayjs from 'dayjs'\nimport { Granularity } from '../../../_inputs/granular-date-range/types'\nimport { DashboardDataResponse } from '../../../../types/Metrics'\nimport {\n DashboardVisualisationType,\n DashboardVisualisationData,\n} from '../../../_dashboards/dashboard-visualisation/types'\nimport { MatrixChartData } from './types'\nimport DatasetHelper from '../../../../utils/datasetHelper'\nimport DashboardVisualisationClass from '../../../_dashboards/dashboard-visualisation/DashboardVisualisation'\nimport Buckets from '../Buckets'\nimport { components } from '../../../../types/api'\n\nclass HeatmapChart extends DashboardVisualisationClass {\n private granularity: Granularity\n\n private data: MatrixChartData[] = []\n\n private dayDateFormat = 'DD/MM/YYYY'\n\n private valueKey = ''\n\n private label = ''\n\n private bucketsHelper: Buckets\n\n constructor(\n responseData: DashboardDataResponse[],\n granularity: Granularity,\n definition: components['schemas']['DashboardVisualisationDefinition'],\n ) {\n super(responseData, definition)\n\n this.granularity = granularity\n this.setLabel()\n this.initUnit()\n this.bucketsHelper = new Buckets(responseData, this.definition, this.valueKey, true)\n }\n\n private setLabel = () => {\n const { id, display } = this.columns.measures[1]\n this.valueKey = id\n this.label = display || ''\n }\n\n private validateDefinition = () => {\n const { id, columns, type } = this.definition\n const errors = []\n\n // Validate measures\n if (columns.measures.length !== 2) {\n errors.push(`Measures should only have 2 columns defined. Only found ${columns.measures.length}`)\n } else if (<DashboardVisualisationType>type === DashboardVisualisationType.MATRIX_TIMESERIES) {\n if (columns.measures[0].id !== 'ts') {\n errors.push(`measure at index 0 has incorrect ID. Expected ID to be \"ts\". Found \"${columns.measures[0].id}\"`)\n }\n }\n\n // Throw the error\n if (errors.length) {\n const message = `Validation: Visualisaton definition: ID: ${id}, type: ${type}, errors: ${errors.join(',')}`\n throw new Error(message)\n }\n }\n\n private initTimeseriesData = () => {\n const timeBlockData = DatasetHelper.groupRowsByTimestamp(this.responseData)\n\n this.data = timeBlockData.map((tsData) => {\n const { raw, rag } = tsData[0][this.valueKey]\n const tsRaw = tsData[0]['ts'].raw\n\n const v: MatrixChartData['v'] = Number(raw)\n const r: MatrixChartData['r'] = rag !== undefined ? Number(tsData[0][this.valueKey].rag) : undefined\n let x: MatrixChartData['x'] = 0\n let y: MatrixChartData['y'] = 0\n\n switch (this.granularity) {\n case 'hourly':\n break\n case 'weekly':\n x = dayjs(tsRaw, this.dayDateFormat).format('ddd')\n y = dayjs(tsRaw, this.dayDateFormat).week()\n break\n case 'daily':\n x = dayjs(tsRaw, this.dayDateFormat).format('MMM YY')\n y = dayjs(tsRaw, this.dayDateFormat).format('D')\n break\n case 'monthly':\n {\n const ts = (<string>tsRaw).split(' ')\n x = ts[1]\n y = ts[0]\n }\n break\n case 'annually':\n x = 'year'\n y = <string>tsRaw\n break\n default:\n x = dayjs(tsRaw, this.dayDateFormat).format('MMM YY')\n y = dayjs(tsRaw, this.dayDateFormat).format('D')\n break\n }\n return { y, x, v, r }\n })\n }\n\n private bucketData = () => {\n this.data = this.data.map((d) => {\n const { v, r } = d\n const bucketData = this.bucketsHelper.getBucketForValue(v, r)\n return { ...d, c: bucketData.colour }\n })\n }\n\n build = (): DashboardVisualisationData => {\n this.validateDefinition()\n this.initTimeseriesData()\n this.bucketData()\n\n return {\n type: this.type,\n unit: this.unit,\n timeseries: true,\n data: {\n datasets: [\n {\n label: this.label,\n data: this.data,\n },\n ],\n },\n }\n }\n}\n\nexport { HeatmapChart }\nexport default HeatmapChart\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["HeatmapChart_exports", "__export", "HeatmapChart", "HeatmapChart_default", "__toCommonJS", "import_dayjs", "import_types", "import_datasetHelper", "import_DashboardVisualisation", "import_Buckets", "DashboardVisualisationClass", "responseData", "granularity", "definition", "id", "display", "columns", "type", "errors", "message", "timeBlockData", "DatasetHelper", "tsData", "raw", "rag", "tsRaw", "r", "x", "y", "dayjs", "ts", "d", "v", "bucketData", "Buckets"]
|
|
7
7
|
}
|
|
@@ -4,7 +4,6 @@ import { Granularity } from '../../../_inputs/granular-date-range/types'
|
|
|
4
4
|
import { DashboardDataResponse } from '../../../../types/Metrics'
|
|
5
5
|
import {
|
|
6
6
|
DashboardVisualisationType,
|
|
7
|
-
DashboardVisualisationBucket,
|
|
8
7
|
DashboardVisualisationData,
|
|
9
8
|
} from '../../../_dashboards/dashboard-visualisation/types'
|
|
10
9
|
import { MatrixChartData } from './types'
|
|
@@ -24,12 +23,8 @@ class HeatmapChart extends DashboardVisualisationClass {
|
|
|
24
23
|
|
|
25
24
|
private label = ''
|
|
26
25
|
|
|
27
|
-
private buckets: DashboardVisualisationBucket[] = []
|
|
28
|
-
|
|
29
26
|
private bucketsHelper: Buckets
|
|
30
27
|
|
|
31
|
-
private isTimeseriesChart: boolean
|
|
32
|
-
|
|
33
28
|
constructor(
|
|
34
29
|
responseData: DashboardDataResponse[],
|
|
35
30
|
granularity: Granularity,
|
|
@@ -38,16 +33,9 @@ class HeatmapChart extends DashboardVisualisationClass {
|
|
|
38
33
|
super(responseData, definition)
|
|
39
34
|
|
|
40
35
|
this.granularity = granularity
|
|
41
|
-
this.isTimeseriesChart = <DashboardVisualisationType>this.type === DashboardVisualisationType.LINE_TIMESERIES
|
|
42
36
|
this.setLabel()
|
|
43
37
|
this.initUnit()
|
|
44
38
|
this.bucketsHelper = new Buckets(responseData, this.definition, this.valueKey, true)
|
|
45
|
-
this.buckets = this.bucketsHelper.getBuckets()
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
initUnit = () => {
|
|
49
|
-
// todo
|
|
50
|
-
this.unit = this.columns.measures[0].unit ? this.columns.measures[0].unit : undefined
|
|
51
39
|
}
|
|
52
40
|
|
|
53
41
|
private setLabel = () => {
|
|
@@ -81,7 +69,7 @@ class HeatmapChart extends DashboardVisualisationClass {
|
|
|
81
69
|
|
|
82
70
|
this.data = timeBlockData.map((tsData) => {
|
|
83
71
|
const { raw, rag } = tsData[0][this.valueKey]
|
|
84
|
-
const tsRaw = tsData[0]
|
|
72
|
+
const tsRaw = tsData[0]['ts'].raw
|
|
85
73
|
|
|
86
74
|
const v: MatrixChartData['v'] = Number(raw)
|
|
87
75
|
const r: MatrixChartData['r'] = rag !== undefined ? Number(tsData[0][this.valueKey].rag) : undefined
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var a=Object.defineProperty;var
|
|
1
|
+
"use strict";var a=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var m=Object.prototype.hasOwnProperty;var x=(e,r,i,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of b(r))!m.call(e,n)&&n!==i&&a(e,n,{get:()=>r[n],enumerable:!(t=u(r,n))||t.enumerable});return e};var d=e=>x(a({},"__esModule",{value:!0}),e);var f={};module.exports=d(f);
|
|
2
2
|
//# sourceMappingURL=types.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/dpr/components/_charts/chart/heatmap/types.ts"],
|
|
4
|
-
"sourcesContent": ["export interface MatrixChartData {\n x: number | string\n y: number | string\n r?: number\n v: number\n}\n"],
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["export interface MatrixChartData {\n x: number | string\n y: number | string\n r?: number | undefined\n v: number\n}\n"],
|
|
5
|
+
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
6
|
"names": ["types_exports", "__toCommonJS"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var
|
|
1
|
+
"use strict";var A=Object.create;var R=Object.defineProperty;var G=Object.getOwnPropertyDescriptor;var $=Object.getOwnPropertyNames;var F=Object.getPrototypeOf,H=Object.prototype.hasOwnProperty;var Y=(a,s)=>{for(var t in s)R(a,t,{get:s[t],enumerable:!0})},T=(a,s,t,e)=>{if(s&&typeof s=="object"||typeof s=="function")for(let o of $(s))!H.call(a,o)&&o!==t&&R(a,o,{get:()=>s[o],enumerable:!(e=G(s,o))||e.enumerable});return a};var y=(a,s,t)=>(t=a!=null?A(F(a)):{},T(s||!a||!a.__esModule?R(t,"default",{value:a,enumerable:!0}):t,a)),j=a=>T(R({},"__esModule",{value:!0}),a);var Q={};Y(Q,{createChart:()=>J,createMatrixChart:()=>N,createTimeseriesCharts:()=>K,default:()=>P});module.exports=j(Q);var S=y(require("dayjs")),I=y(require("dayjs/plugin/weekOfYear")),h=y(require("../../utils/datasetHelper")),x=y(require("../_dashboards/dashboard-list/utils")),L=require("../_inputs/granular-date-range/types"),B=y(require("./chart/heatmap/HeatmapChart"));S.default.extend(I.default);const J=(a,s)=>{let t,e,o;const{dataSetRows:n,snapshotData:l}=v(a,s);return n.length&&(e=O(a,l),t=X(a,n),o=V(a,n)),{details:o,table:t,chart:e}},K=(a,s)=>{let t,e,o;const{latestData:n,dataSetRows:l,timeseriesData:d}=k(a,s);return l.length&&(e=z(a,d),t=M(a,d),o=V(a,n,!0)),{details:o,table:t,chart:e}},N=(a,s,t)=>{let e,o,n,l=L.Granularity.DAILY;Object.keys(t).forEach(D=>{D.includes("granularity")&&(l=t[D])});const{latestData:d,dataSetRows:i,timeseriesData:r}=k(a,s);return i.length&&(o=new B.default(r,l,a).build(),e=M(a,r),n=V(a,d,!0)),{details:n,table:e,chart:o}},v=(a,s)=>{const t=h.default.getLastestDataset(s),e=h.default.getDatasetRows(a,t),o=h.default.filterRowsByDisplayColumns(a,e,!0);return{dataSetRows:e,snapshotData:o}},k=(a,s)=>{const t=h.default.getLastestDataset(s),e=h.default.getDatasetRows(a,s),o=h.default.filterRowsByDisplayColumns(a,e,!0);return{latestData:t,dataSetRows:e,timeseriesData:o}},V=(a,s,t=!1)=>{const e=[],o=E(a,s,t);return s[0]?.ts.raw&&e.push({label:"Values for:",value:s[0]?.ts.raw}),{meta:e,headlines:o}},E=(a,s,t=!1)=>{const e=[],{columns:o}=a,{measures:n}=o,l=!!n.find(u=>u.axis);let d,i,r,D;if(t){if(i=n.find(u=>u.id!=="ts"),i){const{id:u}=i,{raw:m}=s[0][u];D=`${s[0].ts.raw}`,r=m?Number(m):void 0,r&&(d={label:D,value:r})}}else if(i=l?n.find(u=>u.axis&&u.axis==="y"):n[0],i){const u=i.display?.toLowerCase();D=u?`Total ${u}`:"Total",r=s.reduce((m,c)=>{if(i){const{id:b}=i,{raw:p}=c[b];if(p)return m+Number(p)}return m},0),d={label:D,value:r}}return d&&e.push(d),e},O=(a,s)=>{const{type:t,columns:e}=a,{measures:o}=e,n=!!o.find(r=>r.axis);let l,d,i;if(n)({labels:l,unit:d,datasets:i}=U(e,s));else{const r=W(e,s);l=r.labels,d=r.unit,i=r.datasets}return{type:t,unit:d,data:{labels:l,datasets:i}}},W=(a,s)=>{const{keys:t,measures:e}=a,o=e.map(i=>i.display||""),n=t?t[t.length-1]?.id:void 0,l=e[0].unit?e[0].unit:void 0,d=s.map(i=>{const r=n&&i[n]?`${i[n].raw}`:"All",D=e.map(m=>{const c=m.id;return i[c]&&i[c].raw?Number(i[c].raw):0}),u=D.reduce((m,c)=>m+c,0);return{label:r,data:D,total:u}});return{labels:o,unit:l,datasets:d}},U=(a,s)=>{const{measures:t,keys:e}=a,o=t.find(u=>u.axis==="x")||t[0],n=t.find(u=>u.axis==="y")||t[1];if(!o||!n)throw new Error("No X of Y Axis found in definition");const l=n?.unit||void 0,d=h.default.getGroupKey(s,e),i=d?h.default.groupRowsByKey(s,d.id):[s],r=i[0]?.map(u=>{const{id:m}=o,c=u[m];return c?`${c.raw}`:""}),D=i.map(u=>{const m=u.map(b=>{const{id:p}=n,f=b[p],w=f&&f.raw?Number(f.raw):0;return Number(w)});let c="";if(d){const b=d.id,p=u[0];c=p&&p[b]?`${p[b].raw}`:""}else c=n.display||c;return{label:c,data:m,total:m.reduce((b,p)=>b+p,0)}});return{labels:r,unit:l,datasets:D}},X=(a,s)=>{const{columns:t}=a,{measures:e}=t,l=[...t.keys||[],...e].map(r=>({text:r.display||""})),d=h.default.filterRowsByDisplayColumns(a,s,!0),i=x.default.createTableRows(d);return{head:l,rows:i}},z=(a,s)=>{const{columns:t}=a,{keys:e,measures:o}=t,n=o[0].unit?o[0].unit:void 0,l=a.type.split("-")[0],i=h.default.getGroupKey(s,e)?.id,r=h.default.groupRowsByTimestamp(s),D=r.map(c=>c[0].ts.raw),u=r[0].length,m=[];for(let c=0;c<u;c+=1){const b=r.map(g=>{const{raw:C}=g[c][o[1].id];return C?Number(C):0}),p=b.reduce((g,C)=>g+C,0),f=r[0][c][i].raw,w=f||"";m.push({data:b,label:w,total:p})}return{type:l,unit:n,timeseries:!0,data:{labels:D,datasets:m}}},M=(a,s)=>{const{columns:t}=a,{keys:e,measures:o}=t;let n=s.flat(),l=[...o];if(s.length>1){const r=l.findIndex(m=>m.id==="ts"),D=l[r];l.splice(r,1),l=[...e?e.filter(m=>m.id!=="ts"):[],...l],l.unshift(D)}else n=h.default.filterRowsByDisplayColumns(a,n);const d=l.map(r=>({text:r.display})),i=x.default.createTableRows(n);return{head:d,rows:i}};var P={createChart:J,createTimeseriesCharts:K,createMatrixChart:N};0&&(module.exports={createChart,createMatrixChart,createTimeseriesCharts});
|
|
2
2
|
//# sourceMappingURL=utils.js.map
|
|
@@ -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 { 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": "
|
|
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", "
|
|
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 | undefined => {\n let table: MoJTable | undefined\n let chart: DashboardVisualisationData | undefined\n let details: ChartDetails | undefined\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 | undefined\n let chart: DashboardVisualisationData | undefined\n let details: ChartDetails | undefined\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 | undefined\n let chart: DashboardVisualisationData | undefined\n let details: ChartDetails | undefined\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'].raw) {\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 | undefined\n\n let headlineColumn: components['schemas']['DashboardVisualisationColumnDefinition'] | undefined\n let value: number | undefined\n let label: string\n\n if (timeseries) {\n headlineColumn = measures.find((col) => col.id !== 'ts')\n if (headlineColumn) {\n const { id } = headlineColumn\n const { raw } = data[0][id]\n label = `${data[0]['ts'].raw}`\n value = raw ? Number(raw) : undefined\n\n if (value) {\n headline = {\n label,\n value,\n }\n }\n }\n } else {\n headlineColumn = !isListChart ? measures[0] : measures.find((col) => col.axis && col.axis === 'y')\n\n if (headlineColumn) {\n const display = headlineColumn.display?.toLowerCase()\n label = display ? `Total ${display}` : 'Total'\n value = data.reduce((acc: number, d: DashboardDataResponse) => {\n if (headlineColumn) {\n const { id } = headlineColumn\n const { raw } = d[id]\n if (raw) {\n return acc + Number(raw)\n }\n }\n return acc\n }, 0)\n\n headline = {\n label,\n value,\n }\n }\n }\n\n if (headline) 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 const chart = buildChart(columns, snapshotData)\n labels = chart.labels\n unit = chart.unit\n datasets = chart.datasets\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[keys.length - 1]?.id as keyof DashboardDataResponse) : undefined\n const unit = measures[0].unit ? measures[0].unit : undefined\n\n const datasets = rawData.map((row) => {\n const label = labelId && 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 ? Number(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') || measures[0]\n const yAxisColumn = measures.find((col) => col.axis === 'y') || measures[1]\n\n if (!xAxisColumn || !yAxisColumn) {\n throw new Error('No X of Y Axis found in definition')\n }\n\n const unit = yAxisColumn?.unit || undefined\n const groupKey = DatasetHelper.getGroupKey(rawData, keys)\n const groupsData = groupKey ? DatasetHelper.groupRowsByKey(rawData, groupKey.id) : [rawData]\n\n const labels = groupsData[0]?.map((row) => {\n const { id: xId } = xAxisColumn\n const field = row[xId]\n return field ? `${field.raw}` : ''\n })\n\n const datasets: DashboardVisualisationDataSet[] = groupsData.map((groupData) => {\n const data = groupData.map((row) => {\n const { id: yId } = yAxisColumn\n const field = row[yId]\n const raw = field && field.raw ? Number(field.raw) : 0\n return Number(raw)\n })\n\n let label = ''\n if (groupKey) {\n const groupKeyId = groupKey.id\n const groupRow = groupData[0]\n label = groupRow && groupRow[groupKeyId] ? `${groupRow[groupKeyId].raw}` : ''\n } else {\n label = yAxisColumn.display || label\n }\n\n return {\n label,\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 { measures } = columns\n const keys = columns.keys || []\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(timeseriesData, keys)\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 const { raw } = timeperiod[index][measures[1].id]\n return raw ? Number(raw) : 0\n })\n const total = data.reduce((a, c) => a + c, 0)\n const rawValue = timeBlockData[0][index][labelId].raw\n const label = rawValue ? <string>rawValue : ''\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 ? 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", "id", "raw", "display", "acc", "d", "type", "labels", "unit", "datasets", "buildChartFromListData", "buildChart", "keys", "labelId", "row", "c", "rowId", "total", "val", "xAxisColumn", "yAxisColumn", "groupKey", "groupsData", "xId", "field", "groupData", "yId", "groupKeyId", "groupRow", "head", "column", "filteredRowData", "rows", "DashboardListUtils", "timeBlockData", "datasetCount", "index", "timeperiod", "a", "rawValue", "flatTimeseriesData", "headerColumns", "timestampIndex", "timestampCol", "k"]
|
|
7
7
|
}
|
|
@@ -19,10 +19,10 @@ dayjs.extend(weekOfYear)
|
|
|
19
19
|
export const createChart = (
|
|
20
20
|
chartDefinition: components['schemas']['DashboardVisualisationDefinition'],
|
|
21
21
|
rawData: DashboardDataResponse[],
|
|
22
|
-
): DashboardVisualisatonCardData => {
|
|
23
|
-
let table: MoJTable
|
|
24
|
-
let chart: DashboardVisualisationData
|
|
25
|
-
let details: ChartDetails
|
|
22
|
+
): DashboardVisualisatonCardData | undefined => {
|
|
23
|
+
let table: MoJTable | undefined
|
|
24
|
+
let chart: DashboardVisualisationData | undefined
|
|
25
|
+
let details: ChartDetails | undefined
|
|
26
26
|
|
|
27
27
|
const { dataSetRows, snapshotData } = getDataForSnapshotCharts(chartDefinition, rawData)
|
|
28
28
|
if (dataSetRows.length) {
|
|
@@ -42,9 +42,9 @@ export const createTimeseriesCharts = (
|
|
|
42
42
|
chartDefinition: components['schemas']['DashboardVisualisationDefinition'],
|
|
43
43
|
rawData: DashboardDataResponse[],
|
|
44
44
|
): DashboardVisualisatonCardData => {
|
|
45
|
-
let table: MoJTable
|
|
46
|
-
let chart: DashboardVisualisationData
|
|
47
|
-
let details: ChartDetails
|
|
45
|
+
let table: MoJTable | undefined
|
|
46
|
+
let chart: DashboardVisualisationData | undefined
|
|
47
|
+
let details: ChartDetails | undefined
|
|
48
48
|
|
|
49
49
|
const { latestData, dataSetRows, timeseriesData } = getDataForTimeseriesCharts(chartDefinition, rawData)
|
|
50
50
|
if (dataSetRows.length) {
|
|
@@ -64,9 +64,9 @@ export const createMatrixChart = (
|
|
|
64
64
|
rawData: DashboardDataResponse[],
|
|
65
65
|
query: Record<string, string | string[]>,
|
|
66
66
|
) => {
|
|
67
|
-
let table: MoJTable
|
|
68
|
-
let chart: DashboardVisualisationData
|
|
69
|
-
let details: ChartDetails
|
|
67
|
+
let table: MoJTable | undefined
|
|
68
|
+
let chart: DashboardVisualisationData | undefined
|
|
69
|
+
let details: ChartDetails | undefined
|
|
70
70
|
let granularity: Granularity = Granularity.DAILY
|
|
71
71
|
|
|
72
72
|
Object.keys(query).forEach((key) => {
|
|
@@ -125,10 +125,10 @@ const getChartDetails = (
|
|
|
125
125
|
const meta: ChartMetaData[] = []
|
|
126
126
|
const headlines: ChartMetaData[] = createHeadlines(chartDefinition, data, timeseries)
|
|
127
127
|
|
|
128
|
-
if (data[0]?.ts) {
|
|
128
|
+
if (data[0]?.['ts'].raw) {
|
|
129
129
|
meta.push({
|
|
130
130
|
label: 'Values for:',
|
|
131
|
-
value: data[0]?.ts.raw,
|
|
131
|
+
value: data[0]?.['ts'].raw,
|
|
132
132
|
})
|
|
133
133
|
}
|
|
134
134
|
|
|
@@ -147,29 +147,43 @@ const createHeadlines = (
|
|
|
147
147
|
const { columns } = chartDefinition
|
|
148
148
|
const { measures } = columns
|
|
149
149
|
const isListChart = !!measures.find((col) => col.axis)
|
|
150
|
-
let headline: ChartMetaData
|
|
150
|
+
let headline: ChartMetaData | undefined
|
|
151
151
|
|
|
152
|
-
let headlineColumn: components['schemas']['DashboardVisualisationColumnDefinition']
|
|
153
|
-
let value: number
|
|
152
|
+
let headlineColumn: components['schemas']['DashboardVisualisationColumnDefinition'] | undefined
|
|
153
|
+
let value: number | undefined
|
|
154
154
|
let label: string
|
|
155
155
|
|
|
156
156
|
if (timeseries) {
|
|
157
157
|
headlineColumn = measures.find((col) => col.id !== 'ts')
|
|
158
158
|
if (headlineColumn) {
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
159
|
+
const { id } = headlineColumn
|
|
160
|
+
const { raw } = data[0][id]
|
|
161
|
+
label = `${data[0]['ts'].raw}`
|
|
162
|
+
value = raw ? Number(raw) : undefined
|
|
163
|
+
|
|
164
|
+
if (value) {
|
|
165
|
+
headline = {
|
|
166
|
+
label,
|
|
167
|
+
value,
|
|
168
|
+
}
|
|
165
169
|
}
|
|
166
170
|
}
|
|
167
171
|
} else {
|
|
168
172
|
headlineColumn = !isListChart ? measures[0] : measures.find((col) => col.axis && col.axis === 'y')
|
|
169
173
|
|
|
170
174
|
if (headlineColumn) {
|
|
171
|
-
|
|
172
|
-
|
|
175
|
+
const display = headlineColumn.display?.toLowerCase()
|
|
176
|
+
label = display ? `Total ${display}` : 'Total'
|
|
177
|
+
value = data.reduce((acc: number, d: DashboardDataResponse) => {
|
|
178
|
+
if (headlineColumn) {
|
|
179
|
+
const { id } = headlineColumn
|
|
180
|
+
const { raw } = d[id]
|
|
181
|
+
if (raw) {
|
|
182
|
+
return acc + Number(raw)
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return acc
|
|
186
|
+
}, 0)
|
|
173
187
|
|
|
174
188
|
headline = {
|
|
175
189
|
label,
|
|
@@ -178,7 +192,7 @@ const createHeadlines = (
|
|
|
178
192
|
}
|
|
179
193
|
}
|
|
180
194
|
|
|
181
|
-
headlines.push(headline)
|
|
195
|
+
if (headline) headlines.push(headline)
|
|
182
196
|
|
|
183
197
|
return headlines
|
|
184
198
|
}
|
|
@@ -196,7 +210,10 @@ const createSnapshotChart = (
|
|
|
196
210
|
let datasets: DashboardVisualisationDataSet[]
|
|
197
211
|
|
|
198
212
|
if (!isListChart) {
|
|
199
|
-
|
|
213
|
+
const chart = buildChart(columns, snapshotData)
|
|
214
|
+
labels = chart.labels
|
|
215
|
+
unit = chart.unit
|
|
216
|
+
datasets = chart.datasets
|
|
200
217
|
} else {
|
|
201
218
|
;({ labels, unit, datasets } = buildChartFromListData(columns, snapshotData))
|
|
202
219
|
}
|
|
@@ -216,15 +233,15 @@ const buildChart = (
|
|
|
216
233
|
rawData: DashboardDataResponse[],
|
|
217
234
|
) => {
|
|
218
235
|
const { keys, measures } = columns
|
|
219
|
-
const labels = measures.map((col) => col.display)
|
|
220
|
-
const labelId = keys[keys.length - 1]?.id as keyof DashboardDataResponse
|
|
236
|
+
const labels = measures.map((col) => col.display || '')
|
|
237
|
+
const labelId = keys ? (keys[keys.length - 1]?.id as keyof DashboardDataResponse) : undefined
|
|
221
238
|
const unit = measures[0].unit ? measures[0].unit : undefined
|
|
222
239
|
|
|
223
240
|
const datasets = rawData.map((row) => {
|
|
224
|
-
const label = row[labelId] ? `${row[labelId].raw}` : 'All'
|
|
241
|
+
const label = labelId && row[labelId] ? `${row[labelId].raw}` : 'All'
|
|
225
242
|
const data = measures.map((c) => {
|
|
226
243
|
const rowId = c.id as keyof DashboardDataResponse
|
|
227
|
-
return row[rowId] ?
|
|
244
|
+
return row[rowId] && row[rowId].raw ? Number(row[rowId].raw) : 0
|
|
228
245
|
})
|
|
229
246
|
const total = data.reduce((acc: number, val: number) => acc + val, 0)
|
|
230
247
|
return { label, data, total } as DashboardVisualisationDataSet
|
|
@@ -243,21 +260,42 @@ const buildChartFromListData = (
|
|
|
243
260
|
) => {
|
|
244
261
|
const { measures, keys } = columns
|
|
245
262
|
|
|
246
|
-
const xAxisColumn = measures.find((col) => col.axis === 'x')
|
|
247
|
-
const yAxisColumn = measures.find((col) => col.axis === 'y')
|
|
263
|
+
const xAxisColumn = measures.find((col) => col.axis === 'x') || measures[0]
|
|
264
|
+
const yAxisColumn = measures.find((col) => col.axis === 'y') || measures[1]
|
|
265
|
+
|
|
266
|
+
if (!xAxisColumn || !yAxisColumn) {
|
|
267
|
+
throw new Error('No X of Y Axis found in definition')
|
|
268
|
+
}
|
|
248
269
|
|
|
249
270
|
const unit = yAxisColumn?.unit || undefined
|
|
250
|
-
const groupKey = DatasetHelper.getGroupKey(
|
|
271
|
+
const groupKey = DatasetHelper.getGroupKey(rawData, keys)
|
|
251
272
|
const groupsData = groupKey ? DatasetHelper.groupRowsByKey(rawData, groupKey.id) : [rawData]
|
|
252
273
|
|
|
253
274
|
const labels = groupsData[0]?.map((row) => {
|
|
254
|
-
|
|
275
|
+
const { id: xId } = xAxisColumn
|
|
276
|
+
const field = row[xId]
|
|
277
|
+
return field ? `${field.raw}` : ''
|
|
255
278
|
})
|
|
256
279
|
|
|
257
280
|
const datasets: DashboardVisualisationDataSet[] = groupsData.map((groupData) => {
|
|
258
|
-
const data = groupData.map((row) =>
|
|
281
|
+
const data = groupData.map((row) => {
|
|
282
|
+
const { id: yId } = yAxisColumn
|
|
283
|
+
const field = row[yId]
|
|
284
|
+
const raw = field && field.raw ? Number(field.raw) : 0
|
|
285
|
+
return Number(raw)
|
|
286
|
+
})
|
|
287
|
+
|
|
288
|
+
let label = ''
|
|
289
|
+
if (groupKey) {
|
|
290
|
+
const groupKeyId = groupKey.id
|
|
291
|
+
const groupRow = groupData[0]
|
|
292
|
+
label = groupRow && groupRow[groupKeyId] ? `${groupRow[groupKeyId].raw}` : ''
|
|
293
|
+
} else {
|
|
294
|
+
label = yAxisColumn.display || label
|
|
295
|
+
}
|
|
296
|
+
|
|
259
297
|
return {
|
|
260
|
-
label
|
|
298
|
+
label,
|
|
261
299
|
data,
|
|
262
300
|
total: data.reduce((acc: number, val: number) => acc + val, 0),
|
|
263
301
|
}
|
|
@@ -275,11 +313,12 @@ const createSnapshotTable = (
|
|
|
275
313
|
data: DashboardDataResponse[],
|
|
276
314
|
): MoJTable => {
|
|
277
315
|
const { columns } = chartDefinition
|
|
278
|
-
const {
|
|
316
|
+
const { measures } = columns
|
|
317
|
+
const keys = columns.keys || []
|
|
279
318
|
|
|
280
319
|
const headerColumns = [...keys, ...measures]
|
|
281
320
|
const head = headerColumns.map((column) => {
|
|
282
|
-
return { text: column.display }
|
|
321
|
+
return { text: column.display || '' }
|
|
283
322
|
})
|
|
284
323
|
|
|
285
324
|
const filteredRowData = DatasetHelper.filterRowsByDisplayColumns(chartDefinition, data, true)
|
|
@@ -300,20 +339,22 @@ const createTimeseriesChart = (
|
|
|
300
339
|
|
|
301
340
|
const unit = measures[0].unit ? measures[0].unit : undefined
|
|
302
341
|
const type = <components['schemas']['DashboardVisualisationDefinition']['type']>chartDefinition.type.split('-')[0]
|
|
303
|
-
const groupKey = DatasetHelper.getGroupKey(
|
|
304
|
-
const labelId = groupKey
|
|
342
|
+
const groupKey = DatasetHelper.getGroupKey(timeseriesData, keys)
|
|
343
|
+
const labelId = groupKey?.id as keyof DashboardDataResponse
|
|
305
344
|
|
|
306
345
|
const timeBlockData = DatasetHelper.groupRowsByTimestamp(timeseriesData)
|
|
307
|
-
const labels = timeBlockData.map((d: DashboardDataResponse[]) => d[0]
|
|
346
|
+
const labels = timeBlockData.map((d: DashboardDataResponse[]) => d[0]['ts'].raw as unknown as string)
|
|
308
347
|
const datasetCount = timeBlockData[0].length
|
|
309
348
|
|
|
310
349
|
const datasets: DashboardVisualisationDataSet[] = []
|
|
311
350
|
for (let index = 0; index < datasetCount; index += 1) {
|
|
312
351
|
const data = timeBlockData.map((timeperiod) => {
|
|
313
|
-
|
|
352
|
+
const { raw } = timeperiod[index][measures[1].id]
|
|
353
|
+
return raw ? Number(raw) : 0
|
|
314
354
|
})
|
|
315
355
|
const total = data.reduce((a, c) => a + c, 0)
|
|
316
|
-
const
|
|
356
|
+
const rawValue = timeBlockData[0][index][labelId].raw
|
|
357
|
+
const label = rawValue ? <string>rawValue : ''
|
|
317
358
|
|
|
318
359
|
datasets.push({
|
|
319
360
|
data,
|
|
@@ -350,7 +391,7 @@ const createTimeseriesTable = (
|
|
|
350
391
|
const timestampCol = headerColumns[timestampIndex]
|
|
351
392
|
headerColumns.splice(timestampIndex, 1)
|
|
352
393
|
// Remove duplicate TS from keys if present and add keys to headings
|
|
353
|
-
const keysWithoutTs = keys.filter((k) => k.id !== 'ts')
|
|
394
|
+
const keysWithoutTs = keys ? keys.filter((k) => k.id !== 'ts') : []
|
|
354
395
|
headerColumns = [...keysWithoutTs, ...headerColumns]
|
|
355
396
|
// Add TS column to the start
|
|
356
397
|
headerColumns.unshift(timestampCol)
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var g=Object.create;var
|
|
1
|
+
"use strict";var g=Object.create;var d=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var T=Object.getPrototypeOf,M=Object.prototype.hasOwnProperty;var J=(t,s)=>{for(var e in s)d(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))!M.call(t,o)&&o!==e&&d(t,o,{get:()=>s[o],enumerable:!(a=R(s,o))||a.enumerable});return t};var y=(t,s,e)=>(e=t!=null?g(T(t)):{},D(s||!t||!t.__esModule?d(e,"default",{value:t,enumerable:!0}):e,t)),L=t=>D(d({},"__esModule",{value:!0}),t);var A={};J(A,{createList:()=>f,createTableRows:()=>w,default:()=>$});module.exports=L(A);var u=y(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(s,a||[]),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}},w=(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=w(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=w(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 $={createList:f,createTableRows:w};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 { DashboardDataResponse } from '../../../types/Metrics'\nimport {
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { DashboardDataResponse } from '../../../types/Metrics'\nimport {\n ListDashboardVisualisationOptions,\n MoJTable,\n MoJTableHead,\n MoJTableRow,\n} 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(dashboardData, keys || [])\n\n const timestampData = dashboardData[0]?.['ts']?.raw\n const ts = timestampData ? `${timestampData}` : ''\n\n const head: MoJTableHead[] = []\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: MoJTableHead[] = 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: MoJTableHead[] = 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
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { expect } from '@jest/globals'
|
|
1
2
|
import DashboardListUtils from './utils'
|
|
2
3
|
import { mockListDefinitionAgeRange1 } from '../../../../../test-app/mocks/mockClients/dashboards/definitions/age-breakdown/visualisations/list-definitions-1'
|
|
3
4
|
import { dataQualityColsToList } from '../../../../../test-app/mocks/mockClients/dashboards/definitions/examples/visualisations/lists'
|