@ministryofjustice/hmpps-digital-prison-reporting-frontend 4.26.8 → 4.28.0
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 +2 -2
- package/dpr/components/_async/async-filters-form/sortByTemplate.js +60 -1
- package/dpr/components/_async/async-filters-form/sortByTemplate.js.map +2 -2
- package/dpr/components/_async/async-filters-form/types.d.js +16 -1
- package/dpr/components/_async/async-filters-form/types.d.js.map +2 -2
- package/dpr/components/_async/async-filters-form/utils.js +180 -1
- package/dpr/components/_async/async-filters-form/utils.js.map +2 -2
- package/dpr/components/_catalogue/catalogue/types.js +16 -1
- package/dpr/components/_catalogue/catalogue/types.js.map +2 -2
- package/dpr/components/_catalogue/catalogue/utils.js +83 -1
- package/dpr/components/_catalogue/catalogue/utils.js.map +2 -2
- package/dpr/components/_catalogue/catalogue-list/utils.js +140 -1
- package/dpr/components/_catalogue/catalogue-list/utils.js.map +2 -2
- package/dpr/components/_charts/chart/Chart.js +99 -1
- package/dpr/components/_charts/chart/Chart.js.map +2 -2
- package/dpr/components/_charts/chart/ChartColours.js +61 -1
- package/dpr/components/_charts/chart/ChartColours.js.map +2 -2
- package/dpr/components/_charts/chart/ChartTimeseries.js +101 -1
- package/dpr/components/_charts/chart/ChartTimeseries.js.map +2 -2
- package/dpr/components/_charts/chart/bar/BarChart.js +193 -1
- package/dpr/components/_charts/chart/bar/BarChart.js.map +2 -2
- package/dpr/components/_charts/chart/bar/types.js +16 -1
- package/dpr/components/_charts/chart/bar/types.js.map +2 -2
- package/dpr/components/_charts/chart/bar/validate.js +73 -1
- package/dpr/components/_charts/chart/bar/validate.js.map +2 -2
- package/dpr/components/_charts/chart/bar-timeseries/BarTimeseriesChart.js +80 -1
- package/dpr/components/_charts/chart/bar-timeseries/BarTimeseriesChart.js.map +2 -2
- package/dpr/components/_charts/chart/bar-timeseries/types.js +16 -1
- package/dpr/components/_charts/chart/bar-timeseries/types.js.map +2 -2
- package/dpr/components/_charts/chart/bar-timeseries/validate.js +48 -1
- package/dpr/components/_charts/chart/bar-timeseries/validate.js.map +2 -2
- package/dpr/components/_charts/chart/buckets/Buckets.js +194 -1
- package/dpr/components/_charts/chart/buckets/Buckets.js.map +2 -2
- package/dpr/components/_charts/chart/buckets/types.js +16 -1
- package/dpr/components/_charts/chart/buckets/types.js.map +2 -2
- package/dpr/components/_charts/chart/buckets/validate.js +40 -1
- package/dpr/components/_charts/chart/buckets/validate.js.map +2 -2
- package/dpr/components/_charts/chart/chart-config.js +62 -1
- package/dpr/components/_charts/chart/chart-config.js.map +2 -2
- package/dpr/components/_charts/chart/doughnut/DoughnutChart.js +96 -1
- package/dpr/components/_charts/chart/doughnut/DoughnutChart.js.map +2 -2
- package/dpr/components/_charts/chart/doughnut/types.js +16 -1
- package/dpr/components/_charts/chart/doughnut/types.js.map +2 -2
- package/dpr/components/_charts/chart/doughnut/validate.js +48 -1
- package/dpr/components/_charts/chart/doughnut/validate.js.map +2 -2
- package/dpr/components/_charts/chart/heatmap/HeatmapChart.js +213 -1
- package/dpr/components/_charts/chart/heatmap/HeatmapChart.js.map +2 -2
- package/dpr/components/_charts/chart/heatmap/types.js +16 -1
- package/dpr/components/_charts/chart/heatmap/types.js.map +2 -2
- package/dpr/components/_charts/chart/heatmap/validate.js +40 -1
- package/dpr/components/_charts/chart/heatmap/validate.js.map +2 -2
- package/dpr/components/_charts/chart/line/LineChart.js +107 -1
- package/dpr/components/_charts/chart/line/LineChart.js.map +2 -2
- package/dpr/components/_charts/chart/line/types.js +16 -1
- package/dpr/components/_charts/chart/line/types.js.map +2 -2
- package/dpr/components/_charts/chart/line/validate.js +48 -1
- package/dpr/components/_charts/chart/line/validate.js.map +2 -2
- package/dpr/components/_charts/chart/line-timeseries/LineTimeseriesChart.js +81 -1
- package/dpr/components/_charts/chart/line-timeseries/LineTimeseriesChart.js.map +2 -2
- package/dpr/components/_charts/chart/line-timeseries/types.js +16 -1
- package/dpr/components/_charts/chart/line-timeseries/types.js.map +2 -2
- package/dpr/components/_charts/chart/line-timeseries/validate.js +48 -1
- package/dpr/components/_charts/chart/line-timeseries/validate.js.map +2 -2
- package/dpr/components/_charts/utils.js +240 -1
- package/dpr/components/_charts/utils.js.map +2 -2
- package/dpr/components/_dashboards/dashboard-list/types.js +16 -1
- package/dpr/components/_dashboards/dashboard-list/types.js.map +2 -2
- package/dpr/components/_dashboards/dashboard-list/utils.js +170 -1
- package/dpr/components/_dashboards/dashboard-list/utils.js.map +2 -2
- package/dpr/components/_dashboards/dashboard-list/validate.js +43 -1
- package/dpr/components/_dashboards/dashboard-list/validate.js.map +2 -2
- package/dpr/components/_dashboards/dashboard-visualisation/Validate.js +95 -1
- package/dpr/components/_dashboards/dashboard-visualisation/Validate.js.map +2 -2
- package/dpr/components/_dashboards/dashboard-visualisation/types.js +40 -1
- package/dpr/components/_dashboards/dashboard-visualisation/types.js.map +2 -2
- package/dpr/components/_dashboards/scorecard/Scorecard.js +176 -1
- package/dpr/components/_dashboards/scorecard/Scorecard.js.map +2 -2
- package/dpr/components/_dashboards/scorecard/types.js +16 -1
- package/dpr/components/_dashboards/scorecard/types.js.map +2 -2
- package/dpr/components/_dashboards/scorecard/utils.js +61 -1
- package/dpr/components/_dashboards/scorecard/utils.js.map +2 -2
- package/dpr/components/_dashboards/scorecard/validate.js +50 -1
- package/dpr/components/_dashboards/scorecard/validate.js.map +2 -2
- package/dpr/components/_dashboards/scorecard-group/ScorecardGroup.js +212 -1
- package/dpr/components/_dashboards/scorecard-group/ScorecardGroup.js.map +2 -2
- package/dpr/components/_dashboards/scorecard-group/types.js +16 -1
- package/dpr/components/_dashboards/scorecard-group/types.js.map +2 -2
- package/dpr/components/_dashboards/scorecard-group/validate.js +50 -1
- package/dpr/components/_dashboards/scorecard-group/validate.js.map +2 -2
- package/dpr/components/_filters/filter-input/enum.js +38 -1
- package/dpr/components/_filters/filter-input/enum.js.map +2 -2
- package/dpr/components/_filters/filter-input/filters.js +37 -1
- package/dpr/components/_filters/filter-input/filters.js.map +2 -2
- package/dpr/components/_filters/filter-input/types.d.js +16 -1
- package/dpr/components/_filters/filter-input/types.d.js.map +2 -2
- package/dpr/components/_filters/filters-selected/utils.js +314 -1
- package/dpr/components/_filters/filters-selected/utils.js.map +2 -2
- package/dpr/components/_filters/filtersTypeEnum.js +32 -1
- package/dpr/components/_filters/filtersTypeEnum.js.map +2 -2
- package/dpr/components/_filters/types.d.js +16 -1
- package/dpr/components/_filters/types.d.js.map +2 -2
- package/dpr/components/_filters/utils.js +385 -1
- package/dpr/components/_filters/utils.js.map +2 -2
- package/dpr/components/_inputs/autocomplete-text-input/utils.js +45 -1
- package/dpr/components/_inputs/autocomplete-text-input/utils.js.map +2 -2
- package/dpr/components/_inputs/date-input/utils.js +88 -1
- package/dpr/components/_inputs/date-input/utils.js.map +2 -2
- package/dpr/components/_inputs/date-range/types.js +38 -1
- package/dpr/components/_inputs/date-range/types.js.map +2 -2
- package/dpr/components/_inputs/date-range/utils.js +229 -1
- package/dpr/components/_inputs/date-range/utils.js.map +2 -2
- package/dpr/components/_inputs/granular-date-range/types.js +70 -1
- package/dpr/components/_inputs/granular-date-range/types.js.map +2 -2
- package/dpr/components/_inputs/granular-date-range/utils.js +445 -1
- package/dpr/components/_inputs/granular-date-range/utils.js.map +2 -2
- package/dpr/components/_inputs/multi-select/utils.js +88 -1
- package/dpr/components/_inputs/multi-select/utils.js.map +2 -2
- package/dpr/components/_inputs/start-end-date/utils.js +84 -1
- package/dpr/components/_inputs/start-end-date/utils.js.map +2 -2
- package/dpr/components/_reports/report-actions/actionsTemplate.js +59 -1
- package/dpr/components/_reports/report-actions/actionsTemplate.js.map +2 -2
- package/dpr/components/_reports/report-actions/types.d.js +16 -1
- package/dpr/components/_reports/report-actions/types.d.js.map +2 -2
- package/dpr/components/_reports/report-actions/utils.js +97 -1
- package/dpr/components/_reports/report-actions/utils.js.map +2 -2
- package/dpr/components/_reports/report-columns-form/types.d.js +16 -1
- package/dpr/components/_reports/report-columns-form/types.d.js.map +2 -2
- package/dpr/components/_reports/report-columns-form/utils.js +65 -1
- package/dpr/components/_reports/report-columns-form/utils.js.map +2 -2
- package/dpr/components/_reports/report-data-table/types.d.js +16 -1
- package/dpr/components/_reports/report-data-table/types.d.js.map +2 -2
- package/dpr/components/_reports/report-data-table/utils.js +122 -1
- package/dpr/components/_reports/report-data-table/utils.js.map +2 -2
- package/dpr/components/_reports/report-pagination/types.d.js +16 -1
- package/dpr/components/_reports/report-pagination/types.d.js.map +2 -2
- package/dpr/components/_reports/report-pagination/utils.js +105 -1
- package/dpr/components/_reports/report-pagination/utils.js.map +2 -2
- package/dpr/components/_reports/report-totals/utils.js +42 -1
- package/dpr/components/_reports/report-totals/utils.js.map +2 -2
- package/dpr/components/card-group/utils.js +57 -1
- package/dpr/components/card-group/utils.js.map +2 -2
- package/dpr/components/report-list/defaultTokenProvider.js +36 -1
- package/dpr/components/report-list/defaultTokenProvider.js.map +2 -2
- package/dpr/components/report-list/types.d.js +16 -1
- package/dpr/components/report-list/types.d.js.map +2 -2
- package/dpr/components/report-list/utils.js +238 -1
- package/dpr/components/report-list/utils.js.map +2 -2
- package/dpr/components/show-more/utils.js +38 -3
- package/dpr/components/show-more/utils.js.map +2 -2
- package/dpr/components/user-reports/bookmarks/utils.js +198 -1
- package/dpr/components/user-reports/bookmarks/utils.js.map +2 -2
- package/dpr/components/user-reports/requested/utils.js +65 -1
- package/dpr/components/user-reports/requested/utils.js.map +2 -2
- package/dpr/components/user-reports/types.d.js +16 -1
- package/dpr/components/user-reports/types.d.js.map +2 -2
- package/dpr/components/user-reports/utils.js +365 -1
- package/dpr/components/user-reports/utils.js.map +2 -2
- package/dpr/components/user-reports/viewed/utils.js +37 -1
- package/dpr/components/user-reports/viewed/utils.js.map +2 -2
- package/dpr/data/agentConfig.js +35 -1
- package/dpr/data/agentConfig.js.map +2 -2
- package/dpr/data/dashboardClient.js +108 -1
- package/dpr/data/dashboardClient.js.map +2 -2
- package/dpr/data/dprReportingClient.js +55 -1
- package/dpr/data/dprReportingClient.js.map +2 -2
- package/dpr/data/missingReportClient.js +55 -1
- package/dpr/data/missingReportClient.js.map +2 -2
- package/dpr/data/productCollectionClient.js +58 -1
- package/dpr/data/productCollectionClient.js.map +2 -2
- package/dpr/data/reportDataStore.js +77 -1
- package/dpr/data/reportDataStore.js.map +2 -2
- package/dpr/data/reportingClient.js +173 -1
- package/dpr/data/reportingClient.js.map +2 -2
- package/dpr/data/restClient.js +143 -1
- package/dpr/data/restClient.js.map +2 -2
- package/dpr/data/types.d.js +16 -1
- package/dpr/data/types.d.js.map +2 -2
- package/dpr/middleware/reportAuthoriser.js +63 -1
- package/dpr/middleware/reportAuthoriser.js.map +2 -2
- package/dpr/middleware/setUpDprResources.js +173 -1
- package/dpr/middleware/setUpDprResources.js.map +3 -3
- package/dpr/middleware/setUpDprResources.ts +3 -1
- package/dpr/middleware/setUpNestedRoute.js +35 -1
- package/dpr/middleware/setUpNestedRoute.js.map +2 -2
- package/dpr/routes/index.js +50 -1
- package/dpr/routes/index.js.map +2 -2
- package/dpr/routes/journeys/api-failures.cy.js +295 -1
- package/dpr/routes/journeys/api-failures.cy.js.map +2 -2
- package/dpr/routes/journeys/download-report/controller.js +65 -1
- package/dpr/routes/journeys/download-report/controller.js.map +2 -2
- package/dpr/routes/journeys/download-report/request-download/form/controller.js +98 -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 +50 -1
- package/dpr/routes/journeys/download-report/request-download/form/routes.js.map +2 -2
- package/dpr/routes/journeys/download-report/request-download/form/submitted/controller.js +68 -1
- package/dpr/routes/journeys/download-report/request-download/form/submitted/controller.js.map +2 -2
- package/dpr/routes/journeys/download-report/request-download/form/submitted/routes.js +47 -1
- package/dpr/routes/journeys/download-report/request-download/form/submitted/routes.js.map +2 -2
- package/dpr/routes/journeys/download-report/request-download/form/submitted/tests.cy.js +17 -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 +24 -1
- package/dpr/routes/journeys/download-report/request-download/form/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/download-report/request-download/routes.js +46 -1
- package/dpr/routes/journeys/download-report/request-download/routes.js.map +2 -2
- package/dpr/routes/journeys/download-report/request-download/service.js +90 -1
- package/dpr/routes/journeys/download-report/request-download/service.js.map +2 -2
- package/dpr/routes/journeys/download-report/routes.js +63 -1
- package/dpr/routes/journeys/download-report/routes.js.map +2 -2
- package/dpr/routes/journeys/download-report/tests.cy.js +104 -1
- package/dpr/routes/journeys/download-report/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/download-report/utils.js +196 -1
- package/dpr/routes/journeys/download-report/utils.js.map +2 -2
- package/dpr/routes/journeys/my-reports/bookmarks/controller.js +58 -1
- package/dpr/routes/journeys/my-reports/bookmarks/controller.js.map +2 -2
- package/dpr/routes/journeys/my-reports/bookmarks/list/controller.js +56 -1
- package/dpr/routes/journeys/my-reports/bookmarks/list/controller.js.map +2 -2
- package/dpr/routes/journeys/my-reports/bookmarks/list/routes.js +47 -1
- package/dpr/routes/journeys/my-reports/bookmarks/list/routes.js.map +2 -2
- package/dpr/routes/journeys/my-reports/bookmarks/list/tests.cy.js +32 -1
- package/dpr/routes/journeys/my-reports/bookmarks/list/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/my-reports/bookmarks/routes.js +49 -1
- package/dpr/routes/journeys/my-reports/bookmarks/routes.js.map +2 -2
- package/dpr/routes/journeys/my-reports/bookmarks/service.js +123 -4
- package/dpr/routes/journeys/my-reports/bookmarks/service.js.map +2 -2
- package/dpr/routes/journeys/my-reports/bookmarks/tests.cy.js +448 -1
- package/dpr/routes/journeys/my-reports/bookmarks/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/my-reports/bookmarks/utils.js +44 -1
- package/dpr/routes/journeys/my-reports/bookmarks/utils.js.map +2 -2
- package/dpr/routes/journeys/my-reports/recently-viewed/controller.js +53 -1
- package/dpr/routes/journeys/my-reports/recently-viewed/controller.js.map +2 -2
- package/dpr/routes/journeys/my-reports/recently-viewed/list/controller.js +65 -1
- package/dpr/routes/journeys/my-reports/recently-viewed/list/controller.js.map +2 -2
- package/dpr/routes/journeys/my-reports/recently-viewed/list/routes.js +47 -1
- package/dpr/routes/journeys/my-reports/recently-viewed/list/routes.js.map +2 -2
- package/dpr/routes/journeys/my-reports/recently-viewed/list/tests.cy.js +83 -1
- package/dpr/routes/journeys/my-reports/recently-viewed/list/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/my-reports/recently-viewed/routes.js +49 -1
- package/dpr/routes/journeys/my-reports/recently-viewed/routes.js.map +2 -2
- package/dpr/routes/journeys/my-reports/recently-viewed/service.js +118 -1
- package/dpr/routes/journeys/my-reports/recently-viewed/service.js.map +2 -2
- package/dpr/routes/journeys/my-reports/requested-reports/controller.js +52 -1
- package/dpr/routes/journeys/my-reports/requested-reports/controller.js.map +2 -2
- package/dpr/routes/journeys/my-reports/requested-reports/list/controller.js +65 -1
- package/dpr/routes/journeys/my-reports/requested-reports/list/controller.js.map +2 -2
- package/dpr/routes/journeys/my-reports/requested-reports/list/routes.js +47 -1
- package/dpr/routes/journeys/my-reports/requested-reports/list/routes.js.map +2 -2
- package/dpr/routes/journeys/my-reports/requested-reports/list/tests.cy.js +15 -1
- package/dpr/routes/journeys/my-reports/requested-reports/list/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/my-reports/requested-reports/routes.js +49 -1
- package/dpr/routes/journeys/my-reports/requested-reports/routes.js.map +2 -2
- package/dpr/routes/journeys/my-reports/requested-reports/service.js +200 -1
- package/dpr/routes/journeys/my-reports/requested-reports/service.js.map +2 -2
- package/dpr/routes/journeys/my-reports/routes.js +59 -1
- package/dpr/routes/journeys/my-reports/routes.js.map +2 -2
- package/dpr/routes/journeys/product-collection/routes.js +45 -1
- package/dpr/routes/journeys/product-collection/routes.js.map +2 -2
- package/dpr/routes/journeys/product-collection/selected/controller.js +55 -1
- package/dpr/routes/journeys/product-collection/selected/controller.js.map +2 -2
- package/dpr/routes/journeys/product-collection/selected/routes.js +37 -1
- package/dpr/routes/journeys/product-collection/selected/routes.js.map +2 -2
- package/dpr/routes/journeys/product-collection/selected/tests.cy.js +47 -1
- package/dpr/routes/journeys/product-collection/selected/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/product-collection/selected/validation.js +41 -1
- package/dpr/routes/journeys/product-collection/selected/validation.js.map +2 -2
- package/dpr/routes/journeys/request-missing-report/form/controller.js +104 -1
- package/dpr/routes/journeys/request-missing-report/form/controller.js.map +3 -3
- package/dpr/routes/journeys/request-missing-report/form/controller.ts +6 -3
- package/dpr/routes/journeys/request-missing-report/form/routes.js +50 -1
- package/dpr/routes/journeys/request-missing-report/form/routes.js.map +2 -2
- package/dpr/routes/journeys/request-missing-report/form/tests.cy.js +22 -1
- package/dpr/routes/journeys/request-missing-report/form/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/request-missing-report/form/validation.js +43 -1
- package/dpr/routes/journeys/request-missing-report/form/validation.js.map +2 -2
- package/dpr/routes/journeys/request-missing-report/routes.js +57 -1
- package/dpr/routes/journeys/request-missing-report/routes.js.map +2 -2
- package/dpr/routes/journeys/request-missing-report/submitted/controller.js +65 -1
- package/dpr/routes/journeys/request-missing-report/submitted/controller.js.map +3 -3
- package/dpr/routes/journeys/request-missing-report/submitted/controller.ts +1 -1
- package/dpr/routes/journeys/request-missing-report/submitted/routes.js +47 -1
- package/dpr/routes/journeys/request-missing-report/submitted/routes.js.map +2 -2
- package/dpr/routes/journeys/request-missing-report/submitted/tests.cy.js +14 -1
- package/dpr/routes/journeys/request-missing-report/submitted/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/request-missing-report/tests.cy.js +37 -1
- package/dpr/routes/journeys/request-missing-report/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/request-report/controller.js +79 -1
- package/dpr/routes/journeys/request-report/controller.js.map +3 -3
- package/dpr/routes/journeys/request-report/controller.ts +3 -1
- package/dpr/routes/journeys/request-report/filters/controller.js +127 -1
- package/dpr/routes/journeys/request-report/filters/controller.js.map +3 -3
- package/dpr/routes/journeys/request-report/filters/controller.ts +3 -3
- package/dpr/routes/journeys/request-report/filters/routes.js +50 -1
- package/dpr/routes/journeys/request-report/filters/routes.js.map +2 -2
- package/dpr/routes/journeys/request-report/filters/tests.cy.js +451 -1
- package/dpr/routes/journeys/request-report/filters/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/request-report/filters/utils.js +331 -1
- package/dpr/routes/journeys/request-report/filters/utils.js.map +2 -2
- package/dpr/routes/journeys/request-report/routes.js +100 -1
- package/dpr/routes/journeys/request-report/routes.js.map +3 -3
- package/dpr/routes/journeys/request-report/routes.ts +2 -0
- package/dpr/routes/journeys/request-report/status/controller.js +80 -1
- package/dpr/routes/journeys/request-report/status/controller.js.map +3 -3
- package/dpr/routes/journeys/request-report/status/controller.ts +1 -1
- package/dpr/routes/journeys/request-report/status/routes.js +48 -1
- package/dpr/routes/journeys/request-report/status/routes.js.map +2 -2
- package/dpr/routes/journeys/request-report/status/tests.cy.js +127 -1
- package/dpr/routes/journeys/request-report/status/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/request-report/status/utils.js +72 -1
- package/dpr/routes/journeys/request-report/status/utils.js.map +2 -2
- package/dpr/routes/journeys/request-report/tests.cy.js +307 -1
- package/dpr/routes/journeys/request-report/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/routes.js +46 -1
- package/dpr/routes/journeys/routes.js.map +2 -2
- package/dpr/routes/journeys/view-report/async/controller.js +89 -1
- package/dpr/routes/journeys/view-report/async/controller.js.map +3 -3
- package/dpr/routes/journeys/view-report/async/controller.ts +2 -2
- package/dpr/routes/journeys/view-report/async/dashboard/controller.js +82 -1
- package/dpr/routes/journeys/view-report/async/dashboard/controller.js.map +3 -3
- package/dpr/routes/journeys/view-report/async/dashboard/controller.ts +1 -1
- package/dpr/routes/journeys/view-report/async/dashboard/routes.js +48 -1
- package/dpr/routes/journeys/view-report/async/dashboard/routes.js.map +2 -2
- package/dpr/routes/journeys/view-report/async/dashboard/tests.cy.js +33 -1
- package/dpr/routes/journeys/view-report/async/dashboard/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/view-report/async/dashboard/utils.js +242 -1
- package/dpr/routes/journeys/view-report/async/dashboard/utils.js.map +2 -2
- package/dpr/routes/journeys/view-report/async/report/controller.js +83 -1
- package/dpr/routes/journeys/view-report/async/report/controller.js.map +3 -3
- package/dpr/routes/journeys/view-report/async/report/controller.ts +1 -1
- package/dpr/routes/journeys/view-report/async/report/report-variants.cy.js +76 -1
- package/dpr/routes/journeys/view-report/async/report/report-variants.cy.js.map +2 -2
- package/dpr/routes/journeys/view-report/async/report/routes.js +53 -1
- package/dpr/routes/journeys/view-report/async/report/routes.js.map +2 -2
- package/dpr/routes/journeys/view-report/async/report/tests.cy.js +895 -1
- package/dpr/routes/journeys/view-report/async/report/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/view-report/async/report/types.js +16 -1
- package/dpr/routes/journeys/view-report/async/report/types.js.map +2 -2
- package/dpr/routes/journeys/view-report/async/report/utils.js +427 -1
- package/dpr/routes/journeys/view-report/async/report/utils.js.map +2 -2
- package/dpr/routes/journeys/view-report/async/routes.js +52 -1
- package/dpr/routes/journeys/view-report/async/routes.js.map +2 -2
- package/dpr/routes/journeys/view-report/controller.js +62 -1
- package/dpr/routes/journeys/view-report/controller.js.map +3 -3
- package/dpr/routes/journeys/view-report/controller.ts +7 -4
- package/dpr/routes/journeys/view-report/routes.js +87 -1
- package/dpr/routes/journeys/view-report/routes.js.map +2 -2
- package/dpr/routes/journeys/view-report/sync/dashboard/controller.js +68 -1
- package/dpr/routes/journeys/view-report/sync/dashboard/controller.js.map +3 -3
- package/dpr/routes/journeys/view-report/sync/dashboard/controller.ts +1 -1
- package/dpr/routes/journeys/view-report/sync/dashboard/routes.js +48 -1
- package/dpr/routes/journeys/view-report/sync/dashboard/routes.js.map +2 -2
- package/dpr/routes/journeys/view-report/sync/dashboard/utils.js +144 -1
- package/dpr/routes/journeys/view-report/sync/dashboard/utils.js.map +2 -2
- package/dpr/routes/journeys/view-report/sync/load-report/controller.js +102 -1
- package/dpr/routes/journeys/view-report/sync/load-report/controller.js.map +3 -3
- package/dpr/routes/journeys/view-report/sync/load-report/controller.ts +1 -1
- package/dpr/routes/journeys/view-report/sync/load-report/routes.js +47 -1
- package/dpr/routes/journeys/view-report/sync/load-report/routes.js.map +2 -2
- package/dpr/routes/journeys/view-report/sync/report/controller.js +99 -1
- package/dpr/routes/journeys/view-report/sync/report/controller.js.map +3 -3
- package/dpr/routes/journeys/view-report/sync/report/controller.ts +3 -3
- package/dpr/routes/journeys/view-report/sync/report/routes.js +51 -1
- package/dpr/routes/journeys/view-report/sync/report/routes.js.map +2 -2
- package/dpr/routes/journeys/view-report/sync/report/utils.js +298 -1
- package/dpr/routes/journeys/view-report/sync/report/utils.js.map +2 -2
- package/dpr/routes/journeys/view-report/sync/routes.js +51 -1
- package/dpr/routes/journeys/view-report/sync/routes.js.map +2 -2
- package/dpr/routes/journeys/view-report/sync/tests.cy.js +43 -1
- package/dpr/routes/journeys/view-report/sync/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/view-report/utils.js +173 -1
- package/dpr/routes/journeys/view-report/utils.js.map +2 -2
- package/dpr/services/dashboardService.js +66 -1
- package/dpr/services/dashboardService.js.map +2 -2
- package/dpr/services/defaultFilterValuesService.js +114 -1
- package/dpr/services/defaultFilterValuesService.js.map +2 -2
- package/dpr/services/featureFlagService.js +65 -1
- package/dpr/services/featureFlagService.js.map +2 -2
- package/dpr/services/featureFlags.cy.js +72 -1
- package/dpr/services/featureFlags.cy.js.map +2 -2
- package/dpr/services/index.js +59 -1
- package/dpr/services/index.js.map +2 -2
- package/dpr/services/missingReport/missingReportService.js +52 -1
- package/dpr/services/missingReport/missingReportService.js.map +2 -2
- package/dpr/services/productCollection/productCollectionService.js +55 -1
- package/dpr/services/productCollection/productCollectionService.js.map +2 -2
- package/dpr/services/productCollection/productCollectionStoreService.js +61 -1
- package/dpr/services/productCollection/productCollectionStoreService.js.map +2 -2
- package/dpr/services/reportStoreService.js +51 -1
- package/dpr/services/reportStoreService.js.map +2 -2
- package/dpr/services/reportingService.js +81 -1
- package/dpr/services/reportingService.js.map +2 -2
- package/dpr/setUpNunjucksFilters.js +66 -1
- package/dpr/setUpNunjucksFilters.js.map +2 -2
- package/dpr/types/AsyncReportUtils.js +16 -1
- package/dpr/types/AsyncReportUtils.js.map +2 -2
- package/dpr/types/Bookmark.js +16 -1
- package/dpr/types/Bookmark.js.map +2 -2
- package/dpr/types/Charts.js +16 -1
- package/dpr/types/Charts.js.map +2 -2
- package/dpr/types/Download.js +16 -1
- package/dpr/types/Download.js.map +2 -2
- package/dpr/types/DprConfig.js +16 -1
- package/dpr/types/DprConfig.js.map +2 -2
- package/dpr/types/DprUser.js +43 -1
- package/dpr/types/DprUser.js.map +2 -2
- package/dpr/types/EmbeddedReportUtils.js +33 -1
- package/dpr/types/EmbeddedReportUtils.js.map +2 -2
- package/dpr/types/ExecutionData.d.js +16 -1
- package/dpr/types/ExecutionData.d.js.map +2 -2
- package/dpr/types/Metrics.js +16 -1
- package/dpr/types/Metrics.js.map +2 -2
- package/dpr/types/ReportQuery.js +168 -1
- package/dpr/types/ReportQuery.js.map +2 -2
- package/dpr/types/ReportStore.js +16 -1
- package/dpr/types/ReportStore.js.map +2 -2
- package/dpr/types/Services.d.js +16 -1
- package/dpr/types/Services.d.js.map +2 -2
- package/dpr/types/Templates.d.js +16 -1
- package/dpr/types/Templates.d.js.map +2 -2
- package/dpr/types/UserReports.js +55 -1
- package/dpr/types/UserReports.js.map +2 -2
- package/dpr/types/api.d.js +16 -1
- package/dpr/types/api.d.js.map +2 -2
- package/dpr/types/index.d.js +16 -1
- package/dpr/types/index.d.js.map +2 -2
- package/dpr/utils/CollatedSummaryBuilder/CollatedSummaryBuilder.js +91 -1
- package/dpr/utils/CollatedSummaryBuilder/CollatedSummaryBuilder.js.map +2 -2
- package/dpr/utils/CreateDprServices.js +66 -1
- package/dpr/utils/CreateDprServices.js.map +2 -2
- package/dpr/utils/DataTableBuilder/DataTableBuilder.js +304 -1
- package/dpr/utils/DataTableBuilder/DataTableBuilder.js.map +2 -2
- package/dpr/utils/DataTableBuilder/types.d.js +16 -1
- package/dpr/utils/DataTableBuilder/types.d.js.map +2 -2
- package/dpr/utils/DateMapper/DateMapper.js +125 -1
- package/dpr/utils/DateMapper/DateMapper.js.map +2 -2
- package/dpr/utils/DateMapper/types.d.js +16 -1
- package/dpr/utils/DateMapper/types.d.js.map +2 -2
- package/dpr/utils/ErrorHandler.js +94 -1
- package/dpr/utils/ErrorHandler.js.map +3 -3
- package/dpr/utils/ErrorHandler.ts +1 -1
- package/dpr/utils/ParentChildDataTableBuilder/ParentChildDataTableBuilder.js +201 -1
- package/dpr/utils/ParentChildDataTableBuilder/ParentChildDataTableBuilder.js.map +2 -2
- package/dpr/utils/ParentChildDataTableBuilder/types.d.js +16 -1
- package/dpr/utils/ParentChildDataTableBuilder/types.d.js.map +2 -2
- package/dpr/utils/Personalisation/personalisationUtils.js +202 -1
- package/dpr/utils/Personalisation/personalisationUtils.js.map +2 -2
- package/dpr/utils/Personalisation/types.d.js +16 -1
- package/dpr/utils/Personalisation/types.d.js.map +2 -2
- package/dpr/utils/SectionedDataTableBuilder/SectionedDataTableBuilder.js +310 -1
- package/dpr/utils/SectionedDataTableBuilder/SectionedDataTableBuilder.js.map +2 -2
- package/dpr/utils/SectionedDataTableBuilder/types.d.js +16 -1
- package/dpr/utils/SectionedDataTableBuilder/types.d.js.map +2 -2
- package/dpr/utils/SectionedFieldsTableBuilder/SectionedFieldsTableBuilder.js +145 -1
- package/dpr/utils/SectionedFieldsTableBuilder/SectionedFieldsTableBuilder.js.map +2 -2
- package/dpr/utils/SummaryDataTableBuilder/SummaryDataTableBuilder.js +60 -1
- package/dpr/utils/SummaryDataTableBuilder/SummaryDataTableBuilder.js.map +2 -2
- package/dpr/utils/UserStoreItemBuilder.js +247 -1
- package/dpr/utils/UserStoreItemBuilder.js.map +2 -2
- package/dpr/utils/arrayUtils.js +28 -1
- package/dpr/utils/arrayUtils.js.map +2 -2
- package/dpr/utils/datasetHelper.js +229 -1
- package/dpr/utils/datasetHelper.js.map +2 -2
- package/dpr/utils/definitionUtils.js +133 -1
- package/dpr/utils/definitionUtils.js.map +2 -2
- package/dpr/utils/index.js +44 -1
- package/dpr/utils/index.js.map +2 -2
- package/dpr/utils/indexedAccesHelper.js +41 -1
- package/dpr/utils/indexedAccesHelper.js.map +2 -2
- package/dpr/utils/localsHelper.js +105 -1
- package/dpr/utils/localsHelper.js.map +2 -2
- package/dpr/utils/logger.js +48 -1
- package/dpr/utils/logger.js.map +2 -2
- package/dpr/utils/reportListsHelper.js +128 -12
- package/dpr/utils/reportListsHelper.js.map +2 -2
- package/dpr/utils/reportStoreHelper.js +65 -1
- package/dpr/utils/reportStoreHelper.js.map +2 -2
- package/dpr/utils/requestStatusHelper.js +172 -1
- package/dpr/utils/requestStatusHelper.js.map +2 -2
- package/dpr/utils/sanitisedError.js +45 -1
- package/dpr/utils/sanitisedError.js.map +2 -2
- package/dpr/utils/urlHelper.js +103 -1
- package/dpr/utils/urlHelper.js.map +2 -2
- package/dpr/validation/validate.js +52 -1
- package/dpr/validation/validate.js.map +2 -2
- package/package.json +9 -8
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/dpr/utils/CollatedSummaryBuilder/CollatedSummaryBuilder.ts"],
|
|
4
4
|
"sourcesContent": ["import Dict = NodeJS.Dict\nimport { AsyncSummary } from '../../types/UserReports'\nimport { SummaryTemplate } from '../../types/Templates'\nimport { components } from '../../types/api'\nimport { DataTable } from '../DataTableBuilder/types'\nimport SummaryDataTableBuilder from '../SummaryDataTableBuilder/SummaryDataTableBuilder'\n\nclass CollatedSummaryBuilder {\n private summaries: Array<AsyncSummary>\n\n private specification: components['schemas']['Specification']\n\n constructor(specification: components['schemas']['Specification'], summaries: Array<AsyncSummary>) {\n this.specification = specification\n this.summaries = summaries\n }\n\n pageSummaryTemplates: Array<SummaryTemplate> = ['page-header', 'page-footer']\n\n dataTableSummaryTemplates: Array<SummaryTemplate> = [\n 'section-footer',\n 'section-header',\n 'table-footer',\n 'table-header',\n ]\n\n collatePageSummaries(): Dict<Array<DataTable>> {\n return this.collateAndMapToDataTable(this.pageSummaryTemplates)\n }\n\n collateDataTableSummaries(): Dict<Array<AsyncSummary>> {\n return this.collate(this.dataTableSummaryTemplates)\n }\n\n collateAndMapToDataTable(summaryTemplates: Array<SummaryTemplate> = []): Dict<Array<DataTable>> {\n const collatedSummaries = this.collate(summaryTemplates)\n\n return this.mapToDataTables(collatedSummaries)\n }\n\n collate(summaryTemplates: Array<SummaryTemplate> = this.pageSummaryTemplates): Dict<Array<AsyncSummary>> {\n const collatedSummaries: Dict<Array<AsyncSummary>> = {}\n if (this.summaries) {\n this.summaries.forEach((summary: AsyncSummary) => {\n const { template } = summary\n if (summaryTemplates.includes(template)) {\n if (!collatedSummaries[template]) {\n collatedSummaries[template] = []\n }\n collatedSummaries[template].push(summary)\n }\n })\n }\n\n return collatedSummaries\n }\n\n private mapToDataTables(summaries: Dict<Array<AsyncSummary>>): Dict<Array<DataTable>> {\n const dataTables: Dict<Array<DataTable>> = {}\n\n Object.keys(summaries).forEach((summaryType) => {\n if (summaries[summaryType]) {\n dataTables[summaryType] = summaries[summaryType].map((summary) => {\n return new SummaryDataTableBuilder(summary, this.specification.sections).buildSummaryTable()\n })\n }\n })\n\n return dataTables\n }\n}\n\nexport { CollatedSummaryBuilder }\nexport default CollatedSummaryBuilder\n"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,qCAAoC;AAEpC,MAAM,uBAAuB;AAAA,EACnB;AAAA,EAEA;AAAA,EAER,YAAY,eAAuD,WAAgC;AACjG,SAAK,gBAAgB;AACrB,SAAK,YAAY;AAAA,EACnB;AAAA,EAEA,uBAA+C,CAAC,eAAe,aAAa;AAAA,EAE5E,4BAAoD;AAAA,IAClD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,uBAA+C;AAC7C,WAAO,KAAK,yBAAyB,KAAK,oBAAoB;AAAA,EAChE;AAAA,EAEA,4BAAuD;AACrD,WAAO,KAAK,QAAQ,KAAK,yBAAyB;AAAA,EACpD;AAAA,EAEA,yBAAyB,mBAA2C,CAAC,GAA2B;AAC9F,UAAM,oBAAoB,KAAK,QAAQ,gBAAgB;AAEvD,WAAO,KAAK,gBAAgB,iBAAiB;AAAA,EAC/C;AAAA,EAEA,QAAQ,mBAA2C,KAAK,sBAAiD;AACvG,UAAM,oBAA+C,CAAC;AACtD,QAAI,KAAK,WAAW;AAClB,WAAK,UAAU,QAAQ,CAAC,YAA0B;AAChD,cAAM,EAAE,SAAS,IAAI;AACrB,YAAI,iBAAiB,SAAS,QAAQ,GAAG;AACvC,cAAI,CAAC,kBAAkB,QAAQ,GAAG;AAChC,8BAAkB,QAAQ,IAAI,CAAC;AAAA,UACjC;AACA,4BAAkB,QAAQ,EAAE,KAAK,OAAO;AAAA,QAC1C;AAAA,MACF,CAAC;AAAA,IACH;AAEA,WAAO;AAAA,EACT;AAAA,EAEQ,gBAAgB,WAA8D;AACpF,UAAM,aAAqC,CAAC;AAE5C,WAAO,KAAK,SAAS,EAAE,QAAQ,CAAC,gBAAgB;AAC9C,UAAI,UAAU,WAAW,GAAG;AAC1B,mBAAW,WAAW,IAAI,UAAU,WAAW,EAAE,IAAI,CAAC,YAAY;AAChE,iBAAO,IAAI,+BAAAA,QAAwB,SAAS,KAAK,cAAc,QAAQ,EAAE,kBAAkB;AAAA,QAC7F,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAED,WAAO;AAAA,EACT;AACF;AAGA,IAAO,iCAAQ;",
|
|
6
|
+
"names": ["SummaryDataTableBuilder"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,67 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var CreateDprServices_exports = {};
|
|
30
|
+
__export(CreateDprServices_exports, {
|
|
31
|
+
createDprServices: () => createDprServices
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(CreateDprServices_exports);
|
|
34
|
+
var import_services = require("../services");
|
|
35
|
+
var import_logger = __toESM(require("./logger"));
|
|
36
|
+
var import_missingReportService = require("../services/missingReport/missingReportService");
|
|
37
|
+
var import_productCollectionStoreService = require("../services/productCollection/productCollectionStoreService");
|
|
38
|
+
var import_productCollectionService = require("../services/productCollection/productCollectionService");
|
|
39
|
+
const createDprServices = (clients, serviceFeatureConfig = {
|
|
40
|
+
bookmarking: false,
|
|
41
|
+
download: false,
|
|
42
|
+
collections: false,
|
|
43
|
+
missingReports: false,
|
|
44
|
+
saveDefaults: false
|
|
45
|
+
}) => {
|
|
46
|
+
import_logger.default.info("Initialising DPR services...");
|
|
47
|
+
const { reportingClient, dashboardClient, reportDataStore, missingReportClient, productCollectionClient } = clients;
|
|
48
|
+
const services = {
|
|
49
|
+
reportingService: new import_services.ReportingService(reportingClient),
|
|
50
|
+
dashboardService: new import_services.DashboardService(dashboardClient),
|
|
51
|
+
requestedReportService: new import_services.RequestedReportService(reportDataStore),
|
|
52
|
+
recentlyViewedService: new import_services.RecentlyViewedStoreService(reportDataStore),
|
|
53
|
+
bookmarkService: new import_services.BookmarkService(reportDataStore, serviceFeatureConfig),
|
|
54
|
+
defaultFilterValuesService: new import_services.DefaultFilterValuesService(reportDataStore, serviceFeatureConfig),
|
|
55
|
+
productCollectionStoreService: new import_productCollectionStoreService.ProductCollectionStoreService(reportDataStore, serviceFeatureConfig),
|
|
56
|
+
downloadPermissionService: new import_services.DownloadPermissionService(reportDataStore, serviceFeatureConfig),
|
|
57
|
+
missingReportService: new import_missingReportService.MissingReportService(missingReportClient, serviceFeatureConfig),
|
|
58
|
+
productCollectionService: new import_productCollectionService.ProductCollectionService(productCollectionClient, serviceFeatureConfig),
|
|
59
|
+
featureFlagService: clients.featureFlagService
|
|
60
|
+
};
|
|
61
|
+
return services;
|
|
62
|
+
};
|
|
63
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
64
|
+
0 && (module.exports = {
|
|
65
|
+
createDprServices
|
|
66
|
+
});
|
|
2
67
|
//# sourceMappingURL=CreateDprServices.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/dpr/utils/CreateDprServices.ts"],
|
|
4
4
|
"sourcesContent": ["/* eslint-disable no-param-reassign */\nimport {\n DownloadPermissionService,\n BookmarkService,\n RequestedReportService,\n RecentlyViewedStoreService,\n ReportingService,\n DashboardService,\n DefaultFilterValuesService,\n} from '../services'\nimport ReportDataStore from '../data/reportDataStore'\nimport ReportingClient from '../data/reportingClient'\nimport DashboardClient from '../data/dashboardClient'\nimport MissingReportClient from '../data/missingReportClient'\nimport ProductCollectionClient from '../data/productCollectionClient'\nimport logger from './logger'\nimport { Services } from '../types/Services'\nimport { MissingReportService } from '../services/missingReport/missingReportService'\nimport { ProductCollectionStoreService } from '../services/productCollection/productCollectionStoreService'\nimport { ProductCollectionService } from '../services/productCollection/productCollectionService'\nimport { ServiceFeatureConfig } from '../types/DprConfig'\nimport { FeatureFlagService } from '../services/featureFlagService'\n\nexport interface InitDPRServicesArgs {\n reportingClient: ReportingClient\n dashboardClient: DashboardClient\n reportDataStore: ReportDataStore\n missingReportClient: MissingReportClient\n productCollectionClient: ProductCollectionClient\n featureFlagService: FeatureFlagService\n}\n\ninterface dprServices {\n reportingService: ReportingService\n dashboardService: DashboardService\n productCollectionService: ProductCollectionService\n requestedReportService: RequestedReportService\n missingReportService: MissingReportService\n recentlyViewedService: RecentlyViewedStoreService\n bookmarkService: BookmarkService\n downloadPermissionService: DownloadPermissionService\n defaultFilterValuesService: DefaultFilterValuesService\n productCollectionStoreService: ProductCollectionStoreService\n featureFlagService: FeatureFlagService\n}\n\nexport const createDprServices = (\n clients: InitDPRServicesArgs,\n serviceFeatureConfig: ServiceFeatureConfig = {\n bookmarking: false,\n download: false,\n collections: false,\n missingReports: false,\n saveDefaults: false,\n },\n): Services => {\n logger.info('Initialising DPR services...')\n\n const { reportingClient, dashboardClient, reportDataStore, missingReportClient, productCollectionClient } = clients\n const services: dprServices = {\n reportingService: new ReportingService(reportingClient),\n dashboardService: new DashboardService(dashboardClient),\n\n requestedReportService: new RequestedReportService(reportDataStore),\n recentlyViewedService: new RecentlyViewedStoreService(reportDataStore),\n bookmarkService: new BookmarkService(reportDataStore, serviceFeatureConfig),\n\n defaultFilterValuesService: new DefaultFilterValuesService(reportDataStore, serviceFeatureConfig),\n productCollectionStoreService: new ProductCollectionStoreService(reportDataStore, serviceFeatureConfig),\n downloadPermissionService: new DownloadPermissionService(reportDataStore, serviceFeatureConfig),\n\n missingReportService: new MissingReportService(missingReportClient, serviceFeatureConfig),\n productCollectionService: new ProductCollectionService(productCollectionClient, serviceFeatureConfig),\n featureFlagService: clients.featureFlagService,\n }\n return services as Services\n}\n"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,sBAQO;AAMP,oBAAmB;AAEnB,kCAAqC;AACrC,2CAA8C;AAC9C,sCAAyC;AA2BlC,MAAM,oBAAoB,CAC/B,SACA,uBAA6C;AAAA,EAC3C,aAAa;AAAA,EACb,UAAU;AAAA,EACV,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,cAAc;AAChB,MACa;AACb,gBAAAA,QAAO,KAAK,8BAA8B;AAE1C,QAAM,EAAE,iBAAiB,iBAAiB,iBAAiB,qBAAqB,wBAAwB,IAAI;AAC5G,QAAM,WAAwB;AAAA,IAC5B,kBAAkB,IAAI,iCAAiB,eAAe;AAAA,IACtD,kBAAkB,IAAI,iCAAiB,eAAe;AAAA,IAEtD,wBAAwB,IAAI,uCAAuB,eAAe;AAAA,IAClE,uBAAuB,IAAI,2CAA2B,eAAe;AAAA,IACrE,iBAAiB,IAAI,gCAAgB,iBAAiB,oBAAoB;AAAA,IAE1E,4BAA4B,IAAI,2CAA2B,iBAAiB,oBAAoB;AAAA,IAChG,+BAA+B,IAAI,mEAA8B,iBAAiB,oBAAoB;AAAA,IACtG,2BAA2B,IAAI,0CAA0B,iBAAiB,oBAAoB;AAAA,IAE9F,sBAAsB,IAAI,iDAAqB,qBAAqB,oBAAoB;AAAA,IACxF,0BAA0B,IAAI,yDAAyB,yBAAyB,oBAAoB;AAAA,IACpG,oBAAoB,QAAQ;AAAA,EAC9B;AACA,SAAO;AACT;",
|
|
6
|
+
"names": ["logger"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,305 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var DataTableBuilder_exports = {};
|
|
30
|
+
__export(DataTableBuilder_exports, {
|
|
31
|
+
DataTableBuilder: () => DataTableBuilder,
|
|
32
|
+
default: () => DataTableBuilder_default
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(DataTableBuilder_exports);
|
|
35
|
+
var import_urlHelper = __toESM(require("../urlHelper"));
|
|
36
|
+
var import_DateMapper = __toESM(require("../DateMapper/DateMapper"));
|
|
37
|
+
class DataTableBuilder {
|
|
38
|
+
fields;
|
|
39
|
+
sortData;
|
|
40
|
+
columns = [];
|
|
41
|
+
reportSummaries = {};
|
|
42
|
+
// Sortable headers only
|
|
43
|
+
reportQuery = null;
|
|
44
|
+
currentQueryParams = null;
|
|
45
|
+
dateMapper = new import_DateMapper.default();
|
|
46
|
+
constructor(fields, sortData = false) {
|
|
47
|
+
this.fields = fields;
|
|
48
|
+
this.sortData = sortData;
|
|
49
|
+
}
|
|
50
|
+
mapDate(isoDate) {
|
|
51
|
+
if (!isoDate) return "";
|
|
52
|
+
return this.dateMapper.toDateString(isoDate, "local-datetime-short-year");
|
|
53
|
+
}
|
|
54
|
+
mapBoolean(value) {
|
|
55
|
+
if (!value) return "";
|
|
56
|
+
return value.substring(0, 1).toUpperCase() + value.substring(1).toLowerCase();
|
|
57
|
+
}
|
|
58
|
+
mapRow(rowData, extraClasses = "", overrideFields = []) {
|
|
59
|
+
return this.fields.filter((f) => this.columns.includes(f.name)).map((f) => {
|
|
60
|
+
const overrideField = overrideFields.find((o) => o.name === f.name);
|
|
61
|
+
const field = overrideField ?? f;
|
|
62
|
+
return this.mapCell(field, rowData, extraClasses);
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
mapCell(field, rowData, extraClasses = "") {
|
|
66
|
+
const displayValue = rowData[field.name];
|
|
67
|
+
const textValue = this.mapCellValue(field, displayValue);
|
|
68
|
+
let fieldFormat = "string";
|
|
69
|
+
let classes = extraClasses;
|
|
70
|
+
if (field.wordWrap) {
|
|
71
|
+
classes += ` data-table-cell-wrap-${field.wordWrap.toLowerCase()}`;
|
|
72
|
+
}
|
|
73
|
+
if (field.header) {
|
|
74
|
+
classes += " govuk-table__header";
|
|
75
|
+
}
|
|
76
|
+
if (field.type === "double" || field.type === "long" || typeof displayValue === "number") {
|
|
77
|
+
fieldFormat = "numeric";
|
|
78
|
+
}
|
|
79
|
+
if (fieldFormat === "string" && displayValue && typeof displayValue === "string") {
|
|
80
|
+
const wordCount = displayValue.split(" ").length;
|
|
81
|
+
if (wordCount > 10) {
|
|
82
|
+
classes += " data-table-cell-long-string";
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
const isHtml = field.type === "HTML";
|
|
86
|
+
const cell = {
|
|
87
|
+
fieldName: field.name,
|
|
88
|
+
...isHtml ? { html: textValue } : { text: textValue },
|
|
89
|
+
format: fieldFormat,
|
|
90
|
+
classes: classes.trim()
|
|
91
|
+
};
|
|
92
|
+
return cell;
|
|
93
|
+
}
|
|
94
|
+
mapCellValue(field, cellData) {
|
|
95
|
+
if (field.calculated) {
|
|
96
|
+
return cellData;
|
|
97
|
+
}
|
|
98
|
+
switch (field.type) {
|
|
99
|
+
case "boolean":
|
|
100
|
+
return this.mapBoolean(cellData);
|
|
101
|
+
case "date":
|
|
102
|
+
case "time":
|
|
103
|
+
return this.mapDate(cellData);
|
|
104
|
+
default:
|
|
105
|
+
return cellData === void 0 ? "" : cellData;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
mapHeader(disableSort = false, extraClasses = null) {
|
|
109
|
+
return this.fields.filter((field) => this.columns.includes(field.name)).map((f) => {
|
|
110
|
+
if (this.reportQuery && !disableSort) {
|
|
111
|
+
if (f.sortable) {
|
|
112
|
+
let sortDirection = "none";
|
|
113
|
+
let url = (0, import_urlHelper.default)(
|
|
114
|
+
this.currentQueryParams || {},
|
|
115
|
+
{
|
|
116
|
+
sortColumn: f.name,
|
|
117
|
+
sortedAsc: "true"
|
|
118
|
+
},
|
|
119
|
+
this.fields
|
|
120
|
+
);
|
|
121
|
+
if (f.name === this.reportQuery.sortColumn) {
|
|
122
|
+
sortDirection = this.reportQuery.sortedAsc ? "ascending" : "descending";
|
|
123
|
+
if (this.reportQuery.sortedAsc) {
|
|
124
|
+
url = (0, import_urlHelper.default)(
|
|
125
|
+
this.currentQueryParams || {},
|
|
126
|
+
{
|
|
127
|
+
sortColumn: f.name,
|
|
128
|
+
sortedAsc: "false"
|
|
129
|
+
},
|
|
130
|
+
this.fields
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return {
|
|
135
|
+
html: `<a data-column="${f.name}" class="data-table-header-button data-table-header-button-sort-${sortDirection}" href="${url}">${f.display}</a>`,
|
|
136
|
+
...extraClasses && { classes: extraClasses }
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return {
|
|
141
|
+
text: f.display,
|
|
142
|
+
...extraClasses && { classes: extraClasses }
|
|
143
|
+
};
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
mapData(data) {
|
|
147
|
+
const mappedHeaderSummary = this.mapSummary("table-header");
|
|
148
|
+
const mappedTableData = this.mergeCells(data.map((rowData) => this.mapRow(rowData)));
|
|
149
|
+
const mappedFooterSummary = this.mapSummary("table-footer");
|
|
150
|
+
return mappedHeaderSummary.concat(mappedTableData).concat(mappedFooterSummary);
|
|
151
|
+
}
|
|
152
|
+
mergeCells(rows) {
|
|
153
|
+
const mergeFieldNames = this.fields.filter((f) => f.mergeRows).map((f) => f.name);
|
|
154
|
+
if (mergeFieldNames.length === 0) {
|
|
155
|
+
return rows;
|
|
156
|
+
}
|
|
157
|
+
const occurrences = {};
|
|
158
|
+
mergeFieldNames.forEach((f) => {
|
|
159
|
+
occurrences[f] = rows.reduce((accumulator, currentRow) => {
|
|
160
|
+
const currentCell = this.getCellByFieldName(currentRow, f);
|
|
161
|
+
let cellValue = "";
|
|
162
|
+
if (currentCell) {
|
|
163
|
+
cellValue = currentCell.text || currentCell.html || "";
|
|
164
|
+
}
|
|
165
|
+
return {
|
|
166
|
+
...accumulator,
|
|
167
|
+
[cellValue]: (accumulator[cellValue] ?? 0) + 1
|
|
168
|
+
};
|
|
169
|
+
}, {});
|
|
170
|
+
});
|
|
171
|
+
return rows.map((row) => {
|
|
172
|
+
let mergedRow = [...row];
|
|
173
|
+
mergeFieldNames.forEach((mergeFieldName) => {
|
|
174
|
+
const currentRowCell = this.getCellByFieldName(row, mergeFieldName);
|
|
175
|
+
let cellValue;
|
|
176
|
+
let occurrencesOfValue;
|
|
177
|
+
if (currentRowCell && occurrences[mergeFieldName]) {
|
|
178
|
+
cellValue = currentRowCell.text || currentRowCell.html || "";
|
|
179
|
+
occurrencesOfValue = occurrences[mergeFieldName][cellValue];
|
|
180
|
+
switch (occurrencesOfValue) {
|
|
181
|
+
case -1:
|
|
182
|
+
mergedRow = mergedRow.filter((c) => c.fieldName !== mergeFieldName);
|
|
183
|
+
break;
|
|
184
|
+
case 1:
|
|
185
|
+
break;
|
|
186
|
+
default:
|
|
187
|
+
currentRowCell.rowspan = occurrencesOfValue;
|
|
188
|
+
occurrences[mergeFieldName][cellValue] = -1;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
return mergedRow;
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
getCellByFieldName(row, fieldName) {
|
|
196
|
+
return row.find((c) => c.fieldName === fieldName);
|
|
197
|
+
}
|
|
198
|
+
mapSummary(template) {
|
|
199
|
+
if (this.reportSummaries[template]) {
|
|
200
|
+
return this.reportSummaries[template].flatMap(
|
|
201
|
+
(reportSummary) => reportSummary.data.map(
|
|
202
|
+
(rowData) => this.mapRow(
|
|
203
|
+
rowData,
|
|
204
|
+
`dpr-report-summary-cell dpr-report-summary-cell-${template}`,
|
|
205
|
+
reportSummary.fields
|
|
206
|
+
)
|
|
207
|
+
)
|
|
208
|
+
);
|
|
209
|
+
}
|
|
210
|
+
return [];
|
|
211
|
+
}
|
|
212
|
+
sort(data) {
|
|
213
|
+
return this.appendSortKeyToData(data).sort(this.sortKeyComparison()).map((d) => ({
|
|
214
|
+
...d
|
|
215
|
+
}));
|
|
216
|
+
}
|
|
217
|
+
sortKeyComparison() {
|
|
218
|
+
return (a, b) => {
|
|
219
|
+
const aValue = a.sortKey;
|
|
220
|
+
const bValue = b.sortKey;
|
|
221
|
+
if (aValue === bValue) {
|
|
222
|
+
return 0;
|
|
223
|
+
}
|
|
224
|
+
if (aValue < bValue) {
|
|
225
|
+
return -1;
|
|
226
|
+
}
|
|
227
|
+
return 1;
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
appendSortKeyToData(data, fields = null) {
|
|
231
|
+
const sortFields = fields || this.fields;
|
|
232
|
+
return data.map((rowData) => {
|
|
233
|
+
const sortKey = this.getSortKey(rowData, sortFields);
|
|
234
|
+
return {
|
|
235
|
+
...rowData,
|
|
236
|
+
sortKey
|
|
237
|
+
};
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
mapNamesToFields(names) {
|
|
241
|
+
return names.map((s) => this.fields.find((f) => f.name === s)).filter((n) => n !== void 0);
|
|
242
|
+
}
|
|
243
|
+
getSortKey(rowData, sortFields) {
|
|
244
|
+
return sortFields.map((f) => {
|
|
245
|
+
const value = rowData[f.name];
|
|
246
|
+
if (value && this.dateMapper.isDate(value)) {
|
|
247
|
+
return this.dateMapper.toDateString(value, "iso");
|
|
248
|
+
}
|
|
249
|
+
return this.mapCellValue(f, value);
|
|
250
|
+
}).join("-").toLowerCase();
|
|
251
|
+
}
|
|
252
|
+
convertDataTableToHtml(dataTable) {
|
|
253
|
+
const head = dataTable.head || [];
|
|
254
|
+
const headers = head.map((h) => `<th scope='col' class='govuk-table__header'>${h.html ?? h.text}</th>`);
|
|
255
|
+
const rows = dataTable.rows.map(
|
|
256
|
+
(r) => `<tr class='govuk-table__row'>${r.map(
|
|
257
|
+
(c) => `<td class='govuk-table__cell govuk-table__cell--${c.format} ${c.classes}'>${c.html ?? c.text}</td>`
|
|
258
|
+
).join("")}</tr>`
|
|
259
|
+
);
|
|
260
|
+
return `<table class='govuk-table'><thead class='govuk-table__head'>${headers.join("")}</thead><tbody class='govuk-table__body'>${rows.join("")}</tbody></table>`;
|
|
261
|
+
}
|
|
262
|
+
withHeaderOptions({
|
|
263
|
+
reportQuery,
|
|
264
|
+
columns,
|
|
265
|
+
interactive
|
|
266
|
+
}) {
|
|
267
|
+
if (interactive && reportQuery) {
|
|
268
|
+
return this.withHeaderSortOptions(reportQuery);
|
|
269
|
+
}
|
|
270
|
+
return this.withNoHeaderOptions(columns);
|
|
271
|
+
}
|
|
272
|
+
withHeaderSortOptions(reportQuery) {
|
|
273
|
+
this.reportQuery = reportQuery;
|
|
274
|
+
this.columns = reportQuery.columns;
|
|
275
|
+
this.currentQueryParams = this.reportQuery.toRecordWithFilterPrefix();
|
|
276
|
+
return this;
|
|
277
|
+
}
|
|
278
|
+
withNoHeaderOptions(columns) {
|
|
279
|
+
this.columns = columns;
|
|
280
|
+
return this;
|
|
281
|
+
}
|
|
282
|
+
buildTable(data) {
|
|
283
|
+
const mappedData = this.mapData(this.sortData ? this.sort(data) : data);
|
|
284
|
+
return {
|
|
285
|
+
head: this.mapHeader(),
|
|
286
|
+
rows: mappedData,
|
|
287
|
+
rowCount: data.length,
|
|
288
|
+
colCount: this.columns.length
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
withSummaries(reportSummaries) {
|
|
292
|
+
this.reportSummaries = reportSummaries;
|
|
293
|
+
return this;
|
|
294
|
+
}
|
|
295
|
+
withSortedData(sortData = true) {
|
|
296
|
+
this.sortData = sortData;
|
|
297
|
+
return this;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
var DataTableBuilder_default = DataTableBuilder;
|
|
301
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
302
|
+
0 && (module.exports = {
|
|
303
|
+
DataTableBuilder
|
|
304
|
+
});
|
|
2
305
|
//# sourceMappingURL=DataTableBuilder.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/dpr/utils/DataTableBuilder/DataTableBuilder.ts"],
|
|
4
4
|
"sourcesContent": ["import Dict = NodeJS.Dict\nimport ReportQuery from '../../types/ReportQuery'\nimport { Cell, CellFormat, DataTable, SortKey } from './types'\nimport createUrlForParameters from '../urlHelper'\nimport type { SummaryTemplate } from '../../types/Templates'\nimport { AsyncSummary } from '../../types/UserReports'\nimport DateMapper from '../DateMapper/DateMapper'\nimport { components } from '../../types/api'\n\nclass DataTableBuilder {\n protected fields: components['schemas']['FieldDefinition'][]\n\n private sortData: boolean\n\n protected columns: Array<string> = []\n\n protected reportSummaries: Dict<Array<AsyncSummary>> = {}\n\n // Sortable headers only\n private reportQuery: ReportQuery | null = null\n\n private currentQueryParams: NodeJS.Dict<string | Array<string>> | null = null\n\n private dateMapper = new DateMapper()\n\n constructor(fields: components['schemas']['FieldDefinition'][], sortData = false) {\n this.fields = fields\n this.sortData = sortData\n }\n\n private mapDate(isoDate?: string) {\n if (!isoDate) return ''\n\n return this.dateMapper.toDateString(isoDate, 'local-datetime-short-year')\n }\n\n private mapBoolean(value?: string) {\n if (!value) return ''\n return value.substring(0, 1).toUpperCase() + value.substring(1).toLowerCase()\n }\n\n protected mapRow(\n rowData: NodeJS.Dict<string>,\n extraClasses = '',\n overrideFields: components['schemas']['FieldDefinition'][] = [],\n ): Cell[] {\n return this.fields\n .filter((f) => this.columns.includes(f.name))\n .map((f) => {\n const overrideField = overrideFields.find((o) => o.name === f.name)\n const field = overrideField ?? f\n return this.mapCell(field, rowData, extraClasses)\n })\n }\n\n private mapCell(field: components['schemas']['FieldDefinition'], rowData: NodeJS.Dict<string>, extraClasses = '') {\n const displayValue = rowData[field.name]\n const textValue = this.mapCellValue(field, displayValue)\n let fieldFormat: CellFormat = 'string'\n\n let classes = extraClasses\n\n if (field.wordWrap) {\n classes += ` data-table-cell-wrap-${field.wordWrap.toLowerCase()}`\n }\n\n if (field.header) {\n classes += ' govuk-table__header'\n }\n\n if (field.type === 'double' || field.type === 'long' || typeof displayValue === 'number') {\n fieldFormat = 'numeric'\n }\n\n if (fieldFormat === 'string' && displayValue && typeof displayValue === 'string') {\n const wordCount = displayValue.split(' ').length\n if (wordCount > 10) {\n classes += ' data-table-cell-long-string'\n }\n }\n\n const isHtml = field.type === 'HTML'\n const cell: Cell = {\n fieldName: field.name,\n ...(isHtml ? { html: textValue } : { text: textValue }),\n format: fieldFormat,\n classes: classes.trim(),\n }\n\n return cell\n }\n\n protected mapCellValue(field: components['schemas']['FieldDefinition'], cellData?: string) {\n if (field.calculated) {\n return cellData\n }\n\n switch (field.type) {\n case 'boolean':\n return this.mapBoolean(cellData)\n\n case 'date':\n case 'time':\n return this.mapDate(cellData)\n\n default:\n return cellData === undefined ? '' : cellData\n }\n }\n\n protected mapHeader(disableSort = false, extraClasses: string | null = null): Cell[] {\n return this.fields\n .filter((field) => this.columns.includes(field.name))\n .map((f) => {\n if (this.reportQuery && !disableSort) {\n if (f.sortable) {\n let sortDirection = 'none'\n let url = createUrlForParameters(\n this.currentQueryParams || {},\n {\n sortColumn: f.name,\n sortedAsc: 'true',\n },\n this.fields,\n )\n\n if (f.name === this.reportQuery.sortColumn) {\n sortDirection = this.reportQuery.sortedAsc ? 'ascending' : 'descending'\n\n if (this.reportQuery.sortedAsc) {\n url = createUrlForParameters(\n this.currentQueryParams || {},\n {\n sortColumn: f.name,\n sortedAsc: 'false',\n },\n this.fields,\n )\n }\n }\n\n return {\n html:\n `<a ` +\n `data-column=\"${f.name}\" ` +\n `class=\"data-table-header-button data-table-header-button-sort-${sortDirection}\" ` +\n `href=\"${url}\"` +\n `>${f.display}</a>`,\n ...(extraClasses && { classes: extraClasses }),\n }\n }\n }\n return {\n text: f.display,\n ...(extraClasses && { classes: extraClasses }),\n }\n })\n }\n\n protected mapData(data: Array<Dict<string>>): Cell[][] {\n const mappedHeaderSummary = this.mapSummary('table-header')\n const mappedTableData = this.mergeCells(data.map((rowData) => this.mapRow(rowData)))\n const mappedFooterSummary = this.mapSummary('table-footer')\n\n return mappedHeaderSummary.concat(mappedTableData).concat(mappedFooterSummary)\n }\n\n private mergeCells(rows: Cell[][]): Cell[][] {\n const mergeFieldNames = this.fields\n .filter((f) => (<components['schemas']['SummaryField']>f).mergeRows)\n .map((f) => f.name)\n\n if (mergeFieldNames.length === 0) {\n return rows\n }\n\n const occurrences: Dict<Dict<number>> = {}\n mergeFieldNames.forEach((f) => {\n occurrences[f] = rows.reduce((accumulator: Dict<number>, currentRow) => {\n const currentCell = this.getCellByFieldName(currentRow, f)\n let cellValue = ''\n if (currentCell) {\n cellValue = currentCell.text || currentCell.html || ''\n }\n\n return {\n ...accumulator,\n [cellValue]: (accumulator[cellValue] ?? 0) + 1,\n }\n }, {})\n })\n\n return rows.map((row) => {\n let mergedRow = [...row]\n\n mergeFieldNames.forEach((mergeFieldName) => {\n const currentRowCell = this.getCellByFieldName(row, mergeFieldName)\n let cellValue\n let occurrencesOfValue\n if (currentRowCell && occurrences[mergeFieldName]) {\n cellValue = currentRowCell.text || currentRowCell.html || ''\n occurrencesOfValue = occurrences[mergeFieldName][cellValue]\n\n switch (occurrencesOfValue) {\n case -1:\n mergedRow = mergedRow.filter((c) => c.fieldName !== mergeFieldName)\n break\n\n case 1:\n break\n\n default:\n currentRowCell.rowspan = occurrencesOfValue\n occurrences[mergeFieldName][cellValue] = -1\n }\n }\n })\n\n return mergedRow\n })\n }\n\n private getCellByFieldName(row: Cell[], fieldName: string) {\n return row.find((c) => c.fieldName === fieldName)\n }\n\n private mapSummary(template: SummaryTemplate): Cell[][] {\n if (this.reportSummaries[template]) {\n return this.reportSummaries[template].flatMap((reportSummary) =>\n reportSummary.data.map((rowData) =>\n this.mapRow(\n rowData,\n `dpr-report-summary-cell dpr-report-summary-cell-${template}`,\n <components['schemas']['FieldDefinition'][]>reportSummary.fields,\n ),\n ),\n )\n }\n return []\n }\n\n protected sort(data: Dict<string>[]): Dict<string>[] {\n return this.appendSortKeyToData(data)\n .sort(this.sortKeyComparison())\n .map((d: SortKey) => ({\n ...d,\n }))\n }\n\n protected sortKeyComparison() {\n return (a: SortKey, b: SortKey) => {\n const aValue = a.sortKey\n const bValue = b.sortKey\n\n if (aValue === bValue) {\n return 0\n }\n\n if (aValue < bValue) {\n return -1\n }\n\n return 1\n }\n }\n\n private appendSortKeyToData(\n data: Dict<string>[],\n fields: components['schemas']['FieldDefinition'][] | null = null,\n ): SortKey[] {\n const sortFields = fields || this.fields\n\n return data.map((rowData) => {\n const sortKey = this.getSortKey(rowData, sortFields)\n\n return {\n ...rowData,\n sortKey,\n }\n })\n }\n\n protected mapNamesToFields(names: string[]): components['schemas']['FieldDefinition'][] {\n return names.map((s) => this.fields.find((f) => f.name === s)).filter((n) => n !== undefined)\n }\n\n protected getSortKey(rowData: NodeJS.Dict<string>, sortFields: components['schemas']['FieldDefinition'][]) {\n return sortFields\n .map((f) => {\n const value = rowData[f.name]\n if (value && this.dateMapper.isDate(value)) {\n return this.dateMapper.toDateString(value, 'iso')\n }\n\n return this.mapCellValue(f, value)\n })\n .join('-')\n .toLowerCase()\n }\n\n protected convertDataTableToHtml(dataTable: DataTable): string {\n const head = dataTable.head || []\n const headers = head.map((h) => `<th scope='col' class='govuk-table__header'>${h.html ?? h.text}</th>`)\n const rows = dataTable.rows.map(\n (r) =>\n `<tr class='govuk-table__row'>${r\n .map(\n (c) => `<td class='govuk-table__cell govuk-table__cell--${c.format} ${c.classes}'>${c.html ?? c.text}</td>`,\n )\n .join('')}</tr>`,\n )\n\n return (\n \"<table class='govuk-table'>\" +\n `<thead class='govuk-table__head'>${headers.join('')}</thead>` +\n `<tbody class='govuk-table__body'>${rows.join('')}</tbody>` +\n '</table>'\n )\n }\n\n withHeaderOptions({\n reportQuery,\n columns,\n interactive,\n }: {\n reportQuery?: ReportQuery\n columns: string[]\n interactive: boolean\n }) {\n if (interactive && reportQuery) {\n return this.withHeaderSortOptions(reportQuery)\n }\n return this.withNoHeaderOptions(columns)\n }\n\n withHeaderSortOptions(reportQuery: ReportQuery) {\n this.reportQuery = reportQuery\n this.columns = reportQuery.columns\n this.currentQueryParams = this.reportQuery.toRecordWithFilterPrefix()\n\n return this\n }\n\n withNoHeaderOptions(columns: string[]) {\n this.columns = columns\n return this\n }\n\n buildTable(data: Array<Dict<string>>): DataTable {\n const mappedData = this.mapData(this.sortData ? this.sort(data) : data)\n\n return {\n head: this.mapHeader(),\n rows: mappedData,\n rowCount: data.length,\n colCount: this.columns.length,\n }\n }\n\n withSummaries(reportSummaries: Dict<Array<AsyncSummary>>) {\n this.reportSummaries = reportSummaries\n return this\n }\n\n withSortedData(sortData = true) {\n this.sortData = sortData\n return this\n }\n}\n\nexport { DataTableBuilder }\nexport default DataTableBuilder\n"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["DateMapper", "createUrlForParameters"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,17 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
+
var types_d_exports = {};
|
|
16
|
+
module.exports = __toCommonJS(types_d_exports);
|
|
2
17
|
//# sourceMappingURL=types.d.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/dpr/utils/DataTableBuilder/types.d.ts"],
|
|
4
4
|
"sourcesContent": ["export type CellFormat = 'numeric' | 'string'\n\nexport interface Cell {\n fieldName?: string\n text?: string | undefined\n html?: string | undefined\n format?: CellFormat\n classes?: string\n colspan?: number\n rowspan?: number | undefined\n}\n\nexport interface DataTable {\n head: Array<Cell> | null\n rows: Array<Array<Cell>>\n rowCount: number\n colCount: number\n}\n\nexport interface FieldDefinition {\n name: string\n display?: string\n type?: 'boolean' | 'date' | 'double' | 'HTML' | 'long' | 'string' | 'time'\n wordWrap?: 'none' | 'normal' | 'break-words'\n calculated?: boolean\n sortable?: boolean\n header?: boolean\n mergeRows?: boolean\n visible?: boolean\n}\n\nexport interface SortKey {\n sortKey: string\n}\n"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": [
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
|
|
6
|
+
"names": []
|
|
7
7
|
}
|