@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
|
@@ -1,2 +1,311 @@
|
|
|
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 SectionedDataTableBuilder_exports = {};
|
|
30
|
+
__export(SectionedDataTableBuilder_exports, {
|
|
31
|
+
SectionedDataTableBuilder: () => SectionedDataTableBuilder,
|
|
32
|
+
default: () => SectionedDataTableBuilder_default
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(SectionedDataTableBuilder_exports);
|
|
35
|
+
var import_DataTableBuilder = __toESM(require("../DataTableBuilder/DataTableBuilder"));
|
|
36
|
+
var import_arrayUtils = require("../arrayUtils");
|
|
37
|
+
var import_SummaryDataTableBuilder = __toESM(require("../SummaryDataTableBuilder/SummaryDataTableBuilder"));
|
|
38
|
+
class SectionedDataTableBuilder extends import_DataTableBuilder.default {
|
|
39
|
+
sections;
|
|
40
|
+
template;
|
|
41
|
+
constructor(specification) {
|
|
42
|
+
const { fields, sections, template } = specification;
|
|
43
|
+
super(fields);
|
|
44
|
+
this.sections = sections;
|
|
45
|
+
this.template = template;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Creates the section heading strings
|
|
49
|
+
*
|
|
50
|
+
* @param {Dict<string>[]} data
|
|
51
|
+
* @param {FieldDefinition[]} sectionFields
|
|
52
|
+
* @return {*} {string[]} array of section headings
|
|
53
|
+
*/
|
|
54
|
+
createSectionHeadings(data, sectionFields) {
|
|
55
|
+
return data.map(
|
|
56
|
+
(rowData) => ({
|
|
57
|
+
description: this.mapSectionDescription(rowData),
|
|
58
|
+
sortKey: this.getSortKey(rowData, sectionFields)
|
|
59
|
+
})
|
|
60
|
+
).sort(this.sortKeyComparison()).map((s) => s.description).reduce(import_arrayUtils.distinct, []);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Initialise section heading arrays
|
|
64
|
+
*
|
|
65
|
+
* @private
|
|
66
|
+
* @param {string[]} sectionDescriptions
|
|
67
|
+
* @return {*}
|
|
68
|
+
* @memberof SectionedDataTableBuilder
|
|
69
|
+
*/
|
|
70
|
+
initSectionData(sectionDescriptions) {
|
|
71
|
+
const sectionedData = {};
|
|
72
|
+
sectionDescriptions.forEach((sectionDescription) => {
|
|
73
|
+
sectionedData[sectionDescription] = [];
|
|
74
|
+
});
|
|
75
|
+
return sectionedData;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Maps the rows to the correct section
|
|
79
|
+
*
|
|
80
|
+
* @private
|
|
81
|
+
* @param {Array<Dict<string>>} data
|
|
82
|
+
* @param {Dict<Cell[][]>} sectionedData
|
|
83
|
+
* @return {*}
|
|
84
|
+
* @memberof SectionedDataTableBuilder
|
|
85
|
+
*/
|
|
86
|
+
mapRowsToSection(data, sectionedData) {
|
|
87
|
+
return data.reduce((previousValue, rowData) => {
|
|
88
|
+
const sectionDescription = this.mapSectionDescription(rowData);
|
|
89
|
+
const mappedData = this.mapRow(rowData);
|
|
90
|
+
const previousValueDescription = previousValue[sectionDescription];
|
|
91
|
+
return {
|
|
92
|
+
...previousValue,
|
|
93
|
+
...previousValueDescription && {
|
|
94
|
+
[sectionDescription]: previousValueDescription.concat([mappedData])
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
}, sectionedData);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Maps the rows to the correct section
|
|
101
|
+
*
|
|
102
|
+
* @private
|
|
103
|
+
* @param {Array<Dict<string>>} data
|
|
104
|
+
* @param {Dict<Cell[][]>} sectionedData
|
|
105
|
+
* @return {*}
|
|
106
|
+
* @memberof SectionedDataTableBuilder
|
|
107
|
+
*/
|
|
108
|
+
mapDataToSection(data, sectionedData) {
|
|
109
|
+
return data.reduce((previousValue, rowData) => {
|
|
110
|
+
const sectionDescription = this.mapSectionDescription(rowData);
|
|
111
|
+
const previousValueDescription = previousValue[sectionDescription];
|
|
112
|
+
const section = {
|
|
113
|
+
...previousValue,
|
|
114
|
+
...previousValueDescription && {
|
|
115
|
+
[sectionDescription]: previousValueDescription.concat([rowData])
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
return section;
|
|
119
|
+
}, sectionedData);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Gets the counts for rows in section
|
|
123
|
+
*
|
|
124
|
+
* @param {Dict<Cell[][]>} sectionedData
|
|
125
|
+
* @param {string} sectionDescription
|
|
126
|
+
* @return {*}
|
|
127
|
+
* @memberof SectionedDataTableBuilder
|
|
128
|
+
*/
|
|
129
|
+
getSectionCount(sectionedData, sectionDescription) {
|
|
130
|
+
const count = sectionedData[sectionDescription] ? sectionedData[sectionDescription].length : 0;
|
|
131
|
+
const countDescription = `${count} result${count === 1 ? "" : "s"}`;
|
|
132
|
+
return {
|
|
133
|
+
count,
|
|
134
|
+
countDescription
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Creates the summaries and builds the table with summaries
|
|
139
|
+
*
|
|
140
|
+
* @private
|
|
141
|
+
* @param {string} sectionDescription
|
|
142
|
+
* @param {Cell[][]} mappedTableData
|
|
143
|
+
* @param {Cell[]} header
|
|
144
|
+
* @return {*}
|
|
145
|
+
* @memberof SectionedDataTableBuilder
|
|
146
|
+
*/
|
|
147
|
+
mapSummariesAndCreateTable(sectionDescription, mappedTableData, header) {
|
|
148
|
+
let tableContent = [];
|
|
149
|
+
let mappedSectionHeaderSummary = [];
|
|
150
|
+
let mappedHeaderSummary = [];
|
|
151
|
+
let mappedFooterSummary = [];
|
|
152
|
+
let mappedSectionFooterSummary = [];
|
|
153
|
+
mappedSectionHeaderSummary = this.mapSectionSummaryTables(sectionDescription, "section-header", this.columns.length);
|
|
154
|
+
mappedHeaderSummary = this.mapSectionSummaryRows("table-header", sectionDescription);
|
|
155
|
+
mappedFooterSummary = this.mapSectionSummaryRows("table-footer", sectionDescription);
|
|
156
|
+
mappedSectionFooterSummary = this.mapSectionSummaryTables(sectionDescription, "section-footer", this.columns.length);
|
|
157
|
+
tableContent = mappedSectionHeaderSummary.concat(mappedTableData.length > 0 ? [header] : []).concat(mappedHeaderSummary).concat(mappedTableData).concat(mappedFooterSummary).concat(mappedSectionFooterSummary);
|
|
158
|
+
return tableContent;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Creates the table data
|
|
162
|
+
* - if summaries are present, includes the summaries data
|
|
163
|
+
*
|
|
164
|
+
* @private
|
|
165
|
+
* @param {string[]} sectionDescriptions
|
|
166
|
+
* @param {Dict<Cell[][]>} sectionedData
|
|
167
|
+
* @param {Cell[]} header
|
|
168
|
+
* @return {*}
|
|
169
|
+
* @memberof SectionedDataTableBuilder
|
|
170
|
+
*/
|
|
171
|
+
createTableContent(sectionDescriptions, sectionedData, header) {
|
|
172
|
+
return sectionDescriptions.flatMap((sectionDescription, index) => {
|
|
173
|
+
const { count, countDescription } = this.getSectionCount(sectionedData, sectionDescription);
|
|
174
|
+
const mappedTableData = sectionedData[sectionDescription];
|
|
175
|
+
let tableContent = [];
|
|
176
|
+
if (mappedTableData) {
|
|
177
|
+
if (Object.keys(this.reportSummaries).length) {
|
|
178
|
+
tableContent = this.mapSummariesAndCreateTable(sectionDescription, mappedTableData, header);
|
|
179
|
+
} else {
|
|
180
|
+
tableContent = tableContent.concat(mappedTableData.length > 0 ? [header] : []).concat(mappedTableData);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
const sectionHeader = this.createSectionHeader(sectionDescription, index, count, countDescription);
|
|
184
|
+
return [...sectionHeader, ...tableContent];
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
createSectionHeader(sectionDescription, index, count, countDescription) {
|
|
188
|
+
const header = [];
|
|
189
|
+
if (index !== 0) {
|
|
190
|
+
header.push([
|
|
191
|
+
{
|
|
192
|
+
classes: "dpr-section-header-spacer",
|
|
193
|
+
colspan: this.columns.length,
|
|
194
|
+
text: ""
|
|
195
|
+
}
|
|
196
|
+
]);
|
|
197
|
+
}
|
|
198
|
+
header.push([
|
|
199
|
+
{
|
|
200
|
+
classes: "dpr-section-header",
|
|
201
|
+
colspan: this.columns.length,
|
|
202
|
+
html: `<h2 class="govuk-heading-m">${sectionDescription}${count && count > 0 ? ` <span class='govuk-caption-m'>${countDescription}</span>` : ""}</h2>`
|
|
203
|
+
}
|
|
204
|
+
]);
|
|
205
|
+
header.push([
|
|
206
|
+
{
|
|
207
|
+
classes: "dpr-section-header-spacer-bottom",
|
|
208
|
+
colspan: this.columns.length,
|
|
209
|
+
text: ""
|
|
210
|
+
}
|
|
211
|
+
]);
|
|
212
|
+
return header;
|
|
213
|
+
}
|
|
214
|
+
mapSectionSummaryRows(template, sectionDescription) {
|
|
215
|
+
if (this.reportSummaries[template]) {
|
|
216
|
+
return this.reportSummaries[template].flatMap(
|
|
217
|
+
(reportSummary) => reportSummary.data.filter((rowData) => this.mapSectionDescription(rowData) === sectionDescription).map(
|
|
218
|
+
(rowData) => this.mapRow(
|
|
219
|
+
rowData,
|
|
220
|
+
`dpr-report-summary-cell dpr-report-summary-cell-${template}`,
|
|
221
|
+
reportSummary.fields
|
|
222
|
+
)
|
|
223
|
+
)
|
|
224
|
+
);
|
|
225
|
+
}
|
|
226
|
+
return [];
|
|
227
|
+
}
|
|
228
|
+
mapSectionSummaryTables(sectionDescription, summaryTemplate, columnsLength) {
|
|
229
|
+
const summaries = this.reportSummaries[summaryTemplate];
|
|
230
|
+
if (summaries) {
|
|
231
|
+
const htmlTables = summaries.map((summary) => {
|
|
232
|
+
const data = summary.data.filter((row) => this.mapSectionDescription(row) === sectionDescription);
|
|
233
|
+
if (data.length > 0) {
|
|
234
|
+
const dataTable = new import_SummaryDataTableBuilder.default(summary, this.sections).buildTable(data);
|
|
235
|
+
const htmlTable = this.convertDataTableToHtml(dataTable);
|
|
236
|
+
return `<div class='dpr-summary-container'>${htmlTable}</div>`;
|
|
237
|
+
}
|
|
238
|
+
return "";
|
|
239
|
+
});
|
|
240
|
+
const summaryContent = htmlTables.join("");
|
|
241
|
+
if (summaryContent.length > 0) {
|
|
242
|
+
return [
|
|
243
|
+
[
|
|
244
|
+
{
|
|
245
|
+
classes: "dpr-summary-cell",
|
|
246
|
+
colspan: columnsLength,
|
|
247
|
+
html: `<div class='dpr-summary-container-group dpr-summary-container-group-${summaryTemplate}'>${summaryContent}</div>`
|
|
248
|
+
}
|
|
249
|
+
]
|
|
250
|
+
];
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
return [];
|
|
254
|
+
}
|
|
255
|
+
mapSectionDescription(rowData) {
|
|
256
|
+
const { sections } = this;
|
|
257
|
+
return this.mapNamesToFields(sections).map((s) => `${s.display}: ${this.mapCellValue(s, rowData[s.name])}`).join(", ");
|
|
258
|
+
}
|
|
259
|
+
mapSections(data) {
|
|
260
|
+
const sectionHeadings = this.initSectionedHeadings(data);
|
|
261
|
+
let { sectionedData } = sectionHeadings;
|
|
262
|
+
if (this.template !== "summary-section") {
|
|
263
|
+
if (this.template === "parent-child-section") {
|
|
264
|
+
sectionedData = this.mapDataToSection(data, sectionedData);
|
|
265
|
+
} else {
|
|
266
|
+
sectionedData = this.mapRowsToSection(data, sectionedData);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
return {
|
|
270
|
+
sectionDescriptions: sectionHeadings.sectionDescriptions,
|
|
271
|
+
sectionedData
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
initSectionedHeadings(data) {
|
|
275
|
+
const sectionFields = this.mapNamesToFields(this.sections);
|
|
276
|
+
const sectionDescriptions = this.createSectionHeadings(data, sectionFields);
|
|
277
|
+
const sectionedData = this.initSectionData(sectionDescriptions);
|
|
278
|
+
return {
|
|
279
|
+
sectionDescriptions,
|
|
280
|
+
sectionedData
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Creates the table rows.
|
|
285
|
+
*
|
|
286
|
+
* @private
|
|
287
|
+
* @param {Array<Dict<string>>} data
|
|
288
|
+
* @param {Cell[]} header
|
|
289
|
+
* @return {*} {Cell[][]}
|
|
290
|
+
* @memberof SectionedDataTableBuilder
|
|
291
|
+
*/
|
|
292
|
+
mapSectionedData(data, header) {
|
|
293
|
+
const { sectionDescriptions, sectionedData } = this.mapSections(data);
|
|
294
|
+
const tableContent = this.createTableContent(sectionDescriptions, sectionedData, header);
|
|
295
|
+
return tableContent;
|
|
296
|
+
}
|
|
297
|
+
buildTable(data) {
|
|
298
|
+
return {
|
|
299
|
+
head: null,
|
|
300
|
+
rows: this.mapSectionedData(data, this.mapHeader(true, "govuk-table__header")),
|
|
301
|
+
rowCount: data.length,
|
|
302
|
+
colCount: this.columns.length
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
var SectionedDataTableBuilder_default = SectionedDataTableBuilder;
|
|
307
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
308
|
+
0 && (module.exports = {
|
|
309
|
+
SectionedDataTableBuilder
|
|
310
|
+
});
|
|
2
311
|
//# sourceMappingURL=SectionedDataTableBuilder.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/dpr/utils/SectionedDataTableBuilder/SectionedDataTableBuilder.ts"],
|
|
4
4
|
"sourcesContent": ["import Dict = NodeJS.Dict\nimport { components } from '../../types/api'\nimport { Cell, DataTable } from '../DataTableBuilder/types'\nimport type { SummaryTemplate, Template } from '../../types/Templates'\nimport DataTableBuilder from '../DataTableBuilder/DataTableBuilder'\nimport { distinct } from '../arrayUtils'\nimport SummaryDataTableBuilder from '../SummaryDataTableBuilder/SummaryDataTableBuilder'\nimport { SectionSortKey } from './types'\n\nclass SectionedDataTableBuilder extends DataTableBuilder {\n sections: Array<string>\n\n template: Template\n\n constructor(specification: components['schemas']['Specification']) {\n const { fields, sections, template } = specification\n super(fields)\n this.sections = sections\n this.template = template\n }\n\n /**\n * Creates the section heading strings\n *\n * @param {Dict<string>[]} data\n * @param {FieldDefinition[]} sectionFields\n * @return {*} {string[]} array of section headings\n */\n private createSectionHeadings(\n data: Dict<string>[],\n sectionFields: components['schemas']['FieldDefinition'][],\n ): string[] {\n return data\n .map(\n (rowData): SectionSortKey => ({\n description: this.mapSectionDescription(rowData),\n sortKey: this.getSortKey(rowData, sectionFields),\n }),\n )\n .sort(this.sortKeyComparison())\n .map((s) => s.description)\n .reduce(distinct, [])\n }\n\n /**\n * Initialise section heading arrays\n *\n * @private\n * @param {string[]} sectionDescriptions\n * @return {*}\n * @memberof SectionedDataTableBuilder\n */\n initSectionData(sectionDescriptions: string[]) {\n const sectionedData: Dict<Cell[][]> | Dict<Array<Dict<string>>> = {}\n sectionDescriptions.forEach((sectionDescription) => {\n sectionedData[sectionDescription] = []\n })\n return sectionedData\n }\n\n /**\n * Maps the rows to the correct section\n *\n * @private\n * @param {Array<Dict<string>>} data\n * @param {Dict<Cell[][]>} sectionedData\n * @return {*}\n * @memberof SectionedDataTableBuilder\n */\n private mapRowsToSection(data: Array<Dict<string>>, sectionedData: Dict<Cell[][]>) {\n return data.reduce((previousValue, rowData) => {\n const sectionDescription: string = this.mapSectionDescription(rowData)\n const mappedData = this.mapRow(rowData)\n const previousValueDescription = previousValue[sectionDescription]\n\n return {\n ...previousValue,\n ...(previousValueDescription && {\n [sectionDescription]: previousValueDescription.concat([mappedData]),\n }),\n }\n }, sectionedData)\n }\n\n /**\n * Maps the rows to the correct section\n *\n * @private\n * @param {Array<Dict<string>>} data\n * @param {Dict<Cell[][]>} sectionedData\n * @return {*}\n * @memberof SectionedDataTableBuilder\n */\n private mapDataToSection(data: Array<Dict<string>>, sectionedData: Dict<Array<Dict<string>>>) {\n return data.reduce((previousValue, rowData) => {\n const sectionDescription: string = this.mapSectionDescription(rowData)\n const previousValueDescription = previousValue[sectionDescription]\n const section = {\n ...previousValue,\n ...(previousValueDescription && {\n [sectionDescription]: previousValueDescription.concat([rowData]),\n }),\n }\n return section\n }, sectionedData)\n }\n\n /**\n * Gets the counts for rows in section\n *\n * @param {Dict<Cell[][]>} sectionedData\n * @param {string} sectionDescription\n * @return {*}\n * @memberof SectionedDataTableBuilder\n */\n getSectionCount(sectionedData: Dict<Cell[][]> | Dict<Dict<string>[]>, sectionDescription: string) {\n const count = sectionedData[sectionDescription] ? sectionedData[sectionDescription].length : 0\n const countDescription = `${count} result${count === 1 ? '' : 's'}`\n\n return {\n count,\n countDescription,\n }\n }\n\n /**\n * Creates the summaries and builds the table with summaries\n *\n * @private\n * @param {string} sectionDescription\n * @param {Cell[][]} mappedTableData\n * @param {Cell[]} header\n * @return {*}\n * @memberof SectionedDataTableBuilder\n */\n private mapSummariesAndCreateTable(sectionDescription: string, mappedTableData: Cell[][], header: Cell[]) {\n let tableContent: Cell[][] = []\n\n let mappedSectionHeaderSummary: Cell[][] = []\n let mappedHeaderSummary: Cell[][] = []\n let mappedFooterSummary: Cell[][] = []\n let mappedSectionFooterSummary: Cell[][] = []\n\n mappedSectionHeaderSummary = this.mapSectionSummaryTables(sectionDescription, 'section-header', this.columns.length)\n mappedHeaderSummary = this.mapSectionSummaryRows('table-header', sectionDescription)\n mappedFooterSummary = this.mapSectionSummaryRows('table-footer', sectionDescription)\n mappedSectionFooterSummary = this.mapSectionSummaryTables(sectionDescription, 'section-footer', this.columns.length)\n\n tableContent = mappedSectionHeaderSummary\n .concat(mappedTableData.length > 0 ? [header] : [])\n .concat(mappedHeaderSummary)\n .concat(mappedTableData)\n .concat(mappedFooterSummary)\n .concat(mappedSectionFooterSummary)\n\n return tableContent\n }\n\n /**\n * Creates the table data\n * - if summaries are present, includes the summaries data\n *\n * @private\n * @param {string[]} sectionDescriptions\n * @param {Dict<Cell[][]>} sectionedData\n * @param {Cell[]} header\n * @return {*}\n * @memberof SectionedDataTableBuilder\n */\n private createTableContent(sectionDescriptions: string[], sectionedData: Dict<Cell[][]>, header: Cell[]) {\n return sectionDescriptions.flatMap((sectionDescription, index) => {\n const { count, countDescription } = this.getSectionCount(sectionedData, sectionDescription)\n const mappedTableData = sectionedData[sectionDescription]\n\n let tableContent: Cell[][] = []\n if (mappedTableData) {\n if (Object.keys(this.reportSummaries).length) {\n tableContent = this.mapSummariesAndCreateTable(sectionDescription, mappedTableData, header)\n } else {\n tableContent = tableContent.concat(mappedTableData.length > 0 ? [header] : []).concat(mappedTableData)\n }\n }\n\n const sectionHeader = this.createSectionHeader(sectionDescription, index, count, countDescription)\n\n return [...sectionHeader, ...tableContent]\n })\n }\n\n createSectionHeader(sectionDescription: string, index: number, count?: number, countDescription?: string) {\n const header = []\n if (index !== 0) {\n header.push([\n {\n classes: 'dpr-section-header-spacer',\n colspan: this.columns.length,\n text: '',\n },\n ])\n }\n header.push([\n {\n classes: 'dpr-section-header',\n colspan: this.columns.length,\n html: `<h2 class=\"govuk-heading-m\">${sectionDescription}${\n count && count > 0 ? ` <span class='govuk-caption-m'>${countDescription}</span>` : ''\n }</h2>`,\n },\n ])\n header.push([\n {\n classes: 'dpr-section-header-spacer-bottom',\n colspan: this.columns.length,\n text: '',\n },\n ])\n return header\n }\n\n private mapSectionSummaryRows(template: SummaryTemplate, sectionDescription: string): Cell[][] {\n if (this.reportSummaries[template]) {\n return this.reportSummaries[template].flatMap((reportSummary) =>\n reportSummary.data\n .filter((rowData) => this.mapSectionDescription(rowData) === sectionDescription)\n .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 private mapSectionSummaryTables(\n sectionDescription: string,\n summaryTemplate: SummaryTemplate,\n columnsLength: number,\n ): Cell[][] {\n const summaries = this.reportSummaries[summaryTemplate]\n if (summaries) {\n const htmlTables = summaries.map((summary) => {\n const data = summary.data.filter((row) => this.mapSectionDescription(row) === sectionDescription)\n\n if (data.length > 0) {\n const dataTable = new SummaryDataTableBuilder(summary, this.sections).buildTable(data)\n\n const htmlTable = this.convertDataTableToHtml(dataTable)\n\n return `<div class='dpr-summary-container'>${htmlTable}</div>`\n }\n return ''\n })\n\n const summaryContent = htmlTables.join('')\n if (summaryContent.length > 0) {\n return [\n [\n {\n classes: 'dpr-summary-cell',\n colspan: columnsLength,\n html: `<div class='dpr-summary-container-group dpr-summary-container-group-${summaryTemplate}'>${summaryContent}</div>`,\n },\n ],\n ]\n }\n }\n return []\n }\n\n mapSectionDescription(rowData: NodeJS.Dict<string>): string {\n const { sections } = this\n\n return this.mapNamesToFields(sections)\n .map((s) => `${s.display}: ${this.mapCellValue(s, rowData[s.name])}`)\n .join(', ')\n }\n\n mapSections(data: Array<Dict<string>>) {\n const sectionHeadings = this.initSectionedHeadings(data)\n let { sectionedData } = sectionHeadings\n\n // Maps data to sections\n if (this.template !== 'summary-section') {\n if (this.template === 'parent-child-section') {\n sectionedData = this.mapDataToSection(data, sectionedData as Dict<Dict<string>[]>)\n } else {\n sectionedData = this.mapRowsToSection(data, sectionedData as Dict<Cell[][]>)\n }\n }\n\n return {\n sectionDescriptions: sectionHeadings.sectionDescriptions,\n sectionedData,\n }\n }\n\n initSectionedHeadings(data: Array<Dict<string>>) {\n // Get the section definition data\n const sectionFields = this.mapNamesToFields(this.sections)\n // create the sectionHeadings\n const sectionDescriptions = this.createSectionHeadings(data, sectionFields)\n // init empty sections\n const sectionedData = this.initSectionData(sectionDescriptions)\n\n return {\n sectionDescriptions,\n sectionedData,\n }\n }\n\n /**\n * Creates the table rows.\n *\n * @private\n * @param {Array<Dict<string>>} data\n * @param {Cell[]} header\n * @return {*} {Cell[][]}\n * @memberof SectionedDataTableBuilder\n */\n private mapSectionedData(data: Array<Dict<string>>, header: Cell[]): Cell[][] {\n const { sectionDescriptions, sectionedData } = this.mapSections(data)\n // Create the table\n const tableContent = this.createTableContent(sectionDescriptions, sectionedData as Dict<Cell[][]>, header)\n\n return tableContent\n }\n\n override buildTable(data: Array<Dict<string>>): DataTable {\n return {\n head: null,\n rows: this.mapSectionedData(data, this.mapHeader(true, 'govuk-table__header')),\n rowCount: data.length,\n colCount: this.columns.length,\n }\n }\n}\n\nexport { SectionedDataTableBuilder }\nexport default SectionedDataTableBuilder\n"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["DataTableBuilder", "SummaryDataTableBuilder"]
|
|
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/SectionedDataTableBuilder/types.d.ts"],
|
|
4
4
|
"sourcesContent": ["import { SortKey } from '../DataTableBuilder/types'\n\nexport interface SectionSortKey extends SortKey {\n description: string\n}\n"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": [
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
|
|
6
|
+
"names": []
|
|
7
7
|
}
|
|
@@ -1,2 +1,146 @@
|
|
|
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 SectionedFieldsTableBuilder_exports = {};
|
|
30
|
+
__export(SectionedFieldsTableBuilder_exports, {
|
|
31
|
+
SectionedFieldsDataTableBuilder: () => SectionedFieldsDataTableBuilder,
|
|
32
|
+
default: () => SectionedFieldsTableBuilder_default
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(SectionedFieldsTableBuilder_exports);
|
|
35
|
+
var import_ParentChildDataTableBuilder = __toESM(require("../ParentChildDataTableBuilder/ParentChildDataTableBuilder"));
|
|
36
|
+
class SectionedFieldsDataTableBuilder extends import_ParentChildDataTableBuilder.default {
|
|
37
|
+
// TODO: change this to use schema type if ever implemented in the backend
|
|
38
|
+
sectionedFields;
|
|
39
|
+
constructor(variant) {
|
|
40
|
+
const { sectionedFields, template } = variant.specification;
|
|
41
|
+
super(variant);
|
|
42
|
+
this.sectionedFields = sectionedFields;
|
|
43
|
+
this.sections = this.sectionedFields.map((f) => f.name);
|
|
44
|
+
this.template = template;
|
|
45
|
+
this.childVariants = this.variant.childVariants || [];
|
|
46
|
+
}
|
|
47
|
+
getChildFields(childId) {
|
|
48
|
+
const childVariant = this.childVariants.find((child) => child.id === childId);
|
|
49
|
+
let fields = [];
|
|
50
|
+
if (childVariant) {
|
|
51
|
+
const { specification } = childVariant;
|
|
52
|
+
fields = specification ? specification.fields : fields;
|
|
53
|
+
}
|
|
54
|
+
return fields;
|
|
55
|
+
}
|
|
56
|
+
getJoinKey() {
|
|
57
|
+
return this.childVariants[0].joinFields[0];
|
|
58
|
+
}
|
|
59
|
+
initSectionedData(data) {
|
|
60
|
+
return data.flatMap((row) => {
|
|
61
|
+
const initialisedSectionsWithFields = this.sectionedFields.map((section) => {
|
|
62
|
+
const sectionHeader = this.mapNamesToFields([section.name])[0];
|
|
63
|
+
let fields = [];
|
|
64
|
+
const { child } = section;
|
|
65
|
+
if (section.fields) {
|
|
66
|
+
fields = this.mapNamesToFields(section.fields);
|
|
67
|
+
} else if (section.child) {
|
|
68
|
+
fields = this.getChildFields(section.child);
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
header: sectionHeader,
|
|
72
|
+
fields,
|
|
73
|
+
child
|
|
74
|
+
};
|
|
75
|
+
});
|
|
76
|
+
return initialisedSectionsWithFields.map((section) => {
|
|
77
|
+
if (section.child) {
|
|
78
|
+
const childData = this.getChildData(section.child);
|
|
79
|
+
const displayFields = section.fields.filter((f) => f.visible);
|
|
80
|
+
const joinKey = this.getJoinKey();
|
|
81
|
+
return {
|
|
82
|
+
header: section.header.display,
|
|
83
|
+
fields: childData ? childData.data.filter((cd) => cd[joinKey] === row[joinKey]).map((cd) => {
|
|
84
|
+
return {
|
|
85
|
+
heading: cd[displayFields[0]?.name] || "Not found",
|
|
86
|
+
data: cd[displayFields[1]?.name] || "Not found"
|
|
87
|
+
};
|
|
88
|
+
}) : []
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
return {
|
|
92
|
+
header: section.header.display,
|
|
93
|
+
fields: section.fields.filter((f) => f.visible).map((f) => {
|
|
94
|
+
return {
|
|
95
|
+
heading: f.display,
|
|
96
|
+
data: row[f.name]
|
|
97
|
+
};
|
|
98
|
+
})
|
|
99
|
+
};
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
getChildData(childId) {
|
|
104
|
+
return this.childData.find((d) => d.id === childId);
|
|
105
|
+
}
|
|
106
|
+
createRows(data) {
|
|
107
|
+
const sectionedData = this.initSectionedData(data);
|
|
108
|
+
const rows = sectionedData.flatMap((section, index) => {
|
|
109
|
+
let sectionHeaderRow = [];
|
|
110
|
+
if (section.header) {
|
|
111
|
+
sectionHeaderRow = this.createSectionHeader(section.header, index);
|
|
112
|
+
}
|
|
113
|
+
const sectionRows = section.fields.map((field) => {
|
|
114
|
+
return [
|
|
115
|
+
{
|
|
116
|
+
text: field.heading,
|
|
117
|
+
classes: "dpr-row-heading"
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
text: field.data,
|
|
121
|
+
classes: "dpr-row-heading-data"
|
|
122
|
+
}
|
|
123
|
+
];
|
|
124
|
+
});
|
|
125
|
+
return [...sectionHeaderRow, ...sectionRows];
|
|
126
|
+
});
|
|
127
|
+
return rows;
|
|
128
|
+
}
|
|
129
|
+
buildTable(data) {
|
|
130
|
+
return {
|
|
131
|
+
head: [
|
|
132
|
+
// { text: '', classes: 'dpr-row-section-header' },
|
|
133
|
+
// { text: '', classes: 'dpr-row-section-header-value' },
|
|
134
|
+
],
|
|
135
|
+
rows: this.createRows(data),
|
|
136
|
+
rowCount: data.length,
|
|
137
|
+
colCount: this.columns.length
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
var SectionedFieldsTableBuilder_default = SectionedFieldsDataTableBuilder;
|
|
142
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
143
|
+
0 && (module.exports = {
|
|
144
|
+
SectionedFieldsDataTableBuilder
|
|
145
|
+
});
|
|
2
146
|
//# sourceMappingURL=SectionedFieldsTableBuilder.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/dpr/utils/SectionedFieldsTableBuilder/SectionedFieldsTableBuilder.ts"],
|
|
4
4
|
"sourcesContent": ["import Dict = NodeJS.Dict\nimport { components } from '../../types/api'\nimport { Cell, DataTable, FieldDefinition } from '../DataTableBuilder/types'\nimport type { Template } from '../../types/Templates'\nimport ParentChildDataTableBuilder from '../ParentChildDataTableBuilder/ParentChildDataTableBuilder'\n\nexport interface SectionedField {\n name: string\n fields?: string[]\n child?: string\n}\n\nclass SectionedFieldsDataTableBuilder extends ParentChildDataTableBuilder {\n // TODO: change this to use schema type if ever implemented in the backend\n sectionedFields: SectionedField[]\n\n declare template: Template\n\n declare childVariants: components['schemas']['ChildVariantDefinition'][]\n\n constructor(variant: components['schemas']['VariantDefinition']) {\n // TODO: removed the union if sectionedFields changed to use schema type\n const { sectionedFields, template } = variant.specification as components['schemas']['Specification'] & {\n sectionedFields: SectionedField[]\n }\n super(variant)\n\n this.sectionedFields = sectionedFields\n this.sections = this.sectionedFields.map((f) => f.name)\n this.template = template\n this.childVariants = this.variant.childVariants || []\n }\n\n getChildFields(childId: string): FieldDefinition[] {\n const childVariant = this.childVariants.find((child) => child.id === childId)\n let fields: FieldDefinition[] = []\n if (childVariant) {\n const { specification } = childVariant\n fields = specification ? specification.fields : fields\n }\n return fields\n }\n\n getJoinKey() {\n return this.childVariants[0].joinFields[0]\n }\n\n initSectionedData(data: Array<Dict<string>>) {\n return data.flatMap((row) => {\n const initialisedSectionsWithFields = this.sectionedFields.map((section) => {\n const sectionHeader = this.mapNamesToFields([section.name])[0]\n\n let fields: FieldDefinition[] = []\n const { child } = section\n\n if (section.fields) {\n fields = this.mapNamesToFields(section.fields)\n } else if (section.child) {\n fields = this.getChildFields(section.child)\n }\n\n return {\n header: sectionHeader,\n fields,\n child,\n }\n })\n\n return initialisedSectionsWithFields.map((section) => {\n if (section.child) {\n const childData = this.getChildData(section.child)\n const displayFields = section.fields.filter((f) => f.visible)\n const joinKey = this.getJoinKey()\n\n return {\n header: section.header.display,\n fields: childData\n ? childData.data\n .filter((cd) => cd[joinKey] === row[joinKey])\n .map((cd) => {\n return {\n heading: cd[displayFields[0]?.name] || 'Not found',\n data: cd[displayFields[1]?.name] || 'Not found',\n }\n })\n : [],\n }\n }\n return {\n header: section.header.display,\n fields: section.fields\n .filter((f) => f.visible)\n .map((f) => {\n return {\n heading: f.display,\n data: row[f.name],\n }\n }),\n }\n })\n })\n }\n\n getChildData(childId: string) {\n return this.childData.find((d) => d.id === childId)\n }\n\n createRows(data: Array<Dict<string>>): Cell[][] {\n const sectionedData = this.initSectionedData(data)\n\n const rows = sectionedData.flatMap((section, index) => {\n let sectionHeaderRow: Cell[][] = []\n if (section.header) {\n sectionHeaderRow = this.createSectionHeader(section.header, index)\n }\n\n const sectionRows = section.fields.map((field) => {\n return [\n {\n text: field.heading,\n classes: 'dpr-row-heading',\n },\n {\n text: field.data,\n classes: 'dpr-row-heading-data',\n },\n ]\n })\n\n return [...sectionHeaderRow, ...sectionRows]\n })\n\n return rows\n }\n\n override buildTable(data: Array<Dict<string>>): DataTable {\n return {\n head: [\n // { text: '', classes: 'dpr-row-section-header' },\n // { text: '', classes: 'dpr-row-section-header-value' },\n ],\n rows: this.createRows(data),\n rowCount: data.length,\n colCount: this.columns.length,\n }\n }\n}\n\nexport { SectionedFieldsDataTableBuilder }\nexport default SectionedFieldsDataTableBuilder\n"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["ParentChildDataTableBuilder"]
|
|
7
7
|
}
|