@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/routes/journeys/download-report/routes.ts"],
|
|
4
4
|
"sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { Router } from 'express'\n\nimport DownloadReportController from './controller'\n\n// Routes\nimport RequestDownloadRoutes from './request-download/routes'\nimport { Services } from '../../../types/Services'\n\nexport function Routes({ layoutPath, services }: { services: Services; layoutPath: string }) {\n const router = Router({ mergeParams: true })\n\n const controller = new DownloadReportController(layoutPath, services)\n\n // Download report\n router.post('/', controller.POST)\n\n // Request download form routes\n router.use(\n [`/request-download/:reportId/:variantId/tableId/:tableId`, `/request-download/:reportId/:variantId`],\n RequestDownloadRoutes({ layoutPath, services }),\n )\n\n return router\n}\n\nexport const DownloadReportRoutes = ({\n services,\n path,\n layoutPath,\n}: {\n services: Services\n path: string\n layoutPath: string\n}) => {\n const router = Router({ mergeParams: true })\n if (services.downloadPermissionService.enabled) {\n router.use(path, Routes({ services, layoutPath }))\n }\n return router\n}\n"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qBAAuB;AAEvB,wBAAqC;AAGrC,oBAAkC;AAG3B,SAAS,OAAO,EAAE,YAAY,SAAS,GAA+C;AAC3F,QAAM,aAAS,uBAAO,EAAE,aAAa,KAAK,CAAC;AAE3C,QAAM,aAAa,IAAI,kBAAAA,QAAyB,YAAY,QAAQ;AAGpE,SAAO,KAAK,KAAK,WAAW,IAAI;AAGhC,SAAO;AAAA,IACL,CAAC,2DAA2D,wCAAwC;AAAA,QACpG,cAAAC,SAAsB,EAAE,YAAY,SAAS,CAAC;AAAA,EAChD;AAEA,SAAO;AACT;AAEO,MAAM,uBAAuB,CAAC;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AACF,MAIM;AACJ,QAAM,aAAS,uBAAO,EAAE,aAAa,KAAK,CAAC;AAC3C,MAAI,SAAS,0BAA0B,SAAS;AAC9C,WAAO,IAAI,MAAM,OAAO,EAAE,UAAU,WAAW,CAAC,CAAC;AAAA,EACnD;AACA,SAAO;AACT;",
|
|
6
|
+
"names": ["DownloadReportController", "RequestDownloadRoutes"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,105 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
var import_appStateUtils = require("test-app/routes/integrationTests/appStateUtils");
|
|
3
|
+
var import_cypressUtils = require("../../../../../cypress-tests/cypressUtils");
|
|
4
|
+
context("Download report", () => {
|
|
5
|
+
const path = "/embedded/platform/";
|
|
6
|
+
let downloadRequestFormPage;
|
|
7
|
+
let viewReportUrl;
|
|
8
|
+
before(() => {
|
|
9
|
+
(0, import_cypressUtils.executeReportStubs)();
|
|
10
|
+
cy.task("stubDefinitionRequestExamplesSuccess");
|
|
11
|
+
cy.task("stubRequestSuccessResult20");
|
|
12
|
+
cy.task("stubRequestSuccessResult100");
|
|
13
|
+
cy.visit(path);
|
|
14
|
+
cy.findByLabelText(/Reports catalogue.*/i).within(() => {
|
|
15
|
+
cy.findByRole("row", {
|
|
16
|
+
name: (_, element) => {
|
|
17
|
+
return Boolean(element.textContent?.includes("Successful Report")) && Boolean(element.textContent?.includes("this will succeed"));
|
|
18
|
+
}
|
|
19
|
+
}).within(() => {
|
|
20
|
+
cy.findByRole("link", { name: "Request report" }).click();
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
(0, import_cypressUtils.checkA11y)();
|
|
24
|
+
cy.findByRole("button", { name: /Request/ }).click();
|
|
25
|
+
(0, import_cypressUtils.checkA11y)();
|
|
26
|
+
cy.findByRole("heading", { level: 1, name: /Successful Report/ }).should("be.visible");
|
|
27
|
+
cy.url().then((url) => {
|
|
28
|
+
viewReportUrl = url;
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
beforeEach(() => {
|
|
32
|
+
cy.visit(viewReportUrl);
|
|
33
|
+
});
|
|
34
|
+
describe("Enabling download", () => {
|
|
35
|
+
it("should show the enable download button", () => {
|
|
36
|
+
cy.findByLabelText(/Enable download/).should("exist").should("be.visible");
|
|
37
|
+
cy.findByRole("heading", { name: "To download this report" }).should("not.exist");
|
|
38
|
+
});
|
|
39
|
+
it("should show the download disabled message with link to form", () => {
|
|
40
|
+
cy.findByLabelText(/Enable download/).click();
|
|
41
|
+
cy.url().should("have.string", "/report/download-disabled");
|
|
42
|
+
cy.findByRole("heading", { name: "To download this report" }).should("be.visible");
|
|
43
|
+
cy.findByRole("link", { name: "Fill out a form" });
|
|
44
|
+
});
|
|
45
|
+
it("should go to the request download form", () => {
|
|
46
|
+
cy.findByLabelText(/Enable download/).click();
|
|
47
|
+
cy.findByRole("link", { name: "Fill out a form" }).click();
|
|
48
|
+
cy.url().then((url) => {
|
|
49
|
+
downloadRequestFormPage = url;
|
|
50
|
+
});
|
|
51
|
+
cy.url().should(
|
|
52
|
+
"match",
|
|
53
|
+
/\/embedded\/platform\/dpr\/download-report\/request-download\/request-examples\/request-example-success\/tableId\/tblId_[0-9]+\/form/
|
|
54
|
+
);
|
|
55
|
+
cy.location().should((location) => {
|
|
56
|
+
expect(location.search).to.match(
|
|
57
|
+
/.*reportUrl=\/embedded\/platform\/dpr\/view-report\/async\/report\/request-examples\/request-example-success\/tblId_[0-9]+\/report/
|
|
58
|
+
);
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
describe("Requesting download", () => {
|
|
63
|
+
it("should prefill the user data in the request form", () => {
|
|
64
|
+
cy.visit(downloadRequestFormPage);
|
|
65
|
+
cy.findByRole("textbox", { name: "What is your Full name?" }).should("have.value", "Test User");
|
|
66
|
+
cy.findByRole("textbox", { name: "What is your Email address?" }).should("have.value", "test@user.com");
|
|
67
|
+
});
|
|
68
|
+
it("should validate the required fields", () => {
|
|
69
|
+
cy.visit(downloadRequestFormPage);
|
|
70
|
+
cy.findByRole("alert").should("not.exist");
|
|
71
|
+
cy.findAllByRole("paragraph").contains("Enter your Job title").should("not.exist");
|
|
72
|
+
cy.findAllByRole("paragraph").contains("provide information on how you will use this data").should("not.exist");
|
|
73
|
+
cy.get("#more-detail-error").should("not.be.visible");
|
|
74
|
+
cy.findByRole("button", { name: /Submit request/ }).click();
|
|
75
|
+
cy.findByRole("alert").should("exist");
|
|
76
|
+
cy.findAllByRole("paragraph").contains("Enter your Job title").should("exist");
|
|
77
|
+
cy.findAllByRole("paragraph").contains("provide information on how you will use this data").should("exist");
|
|
78
|
+
});
|
|
79
|
+
it("should submit the download request", () => {
|
|
80
|
+
cy.visit(downloadRequestFormPage);
|
|
81
|
+
cy.findByRole("textbox", { name: "What is your Job title?" }).type("Software engineer");
|
|
82
|
+
cy.findByRole("textbox", { name: "Can you provide more detail" }).type("I like this report");
|
|
83
|
+
cy.findByRole("button", { name: "Submit request" }).click();
|
|
84
|
+
cy.findByText(/You have been granted permission/).should("be.visible");
|
|
85
|
+
cy.url().as("downloadRequestSubmittedPage");
|
|
86
|
+
cy.url().and(
|
|
87
|
+
"match",
|
|
88
|
+
/dpr\/download-report\/request-download\/request-examples\/request-example-success\/tableId\/tblId_[0-9]+\/form\/submitted/
|
|
89
|
+
);
|
|
90
|
+
cy.findByRole("link", { name: /Return to report to download/ }).click();
|
|
91
|
+
cy.findAllByRole("heading").contains("Successful Report").should("exist");
|
|
92
|
+
cy.findByRole("button", { name: /download/ }).should("be.visible");
|
|
93
|
+
cy.task("stubRequestSuccessResult10MissingFirstRow");
|
|
94
|
+
cy.findByRole("button", { name: /download/ }).click();
|
|
95
|
+
cy.task("checkContents10RowExcelValid").should("equal", true);
|
|
96
|
+
});
|
|
97
|
+
it("should redirect on trying to download after having the permission to download removed", () => {
|
|
98
|
+
(0, import_appStateUtils.updateRedisState)("downloadPermissions", []);
|
|
99
|
+
cy.findByRole("heading", { name: /To download this report/ }).should("not.exist");
|
|
100
|
+
cy.findByRole("button", { name: /download/ }).click();
|
|
101
|
+
cy.findByRole("heading", { name: /To download this report/ }).should("be.visible");
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
});
|
|
2
105
|
//# sourceMappingURL=tests.cy.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/dpr/routes/journeys/download-report/tests.cy.ts"],
|
|
4
4
|
"sourcesContent": ["import { updateRedisState } from 'test-app/routes/integrationTests/appStateUtils'\nimport { checkA11y, executeReportStubs } from '../../../../../cypress-tests/cypressUtils'\n\ncontext('Download report', () => {\n const path = '/embedded/platform/'\n let downloadRequestFormPage: string\n let viewReportUrl: string\n\n before(() => {\n executeReportStubs()\n cy.task('stubDefinitionRequestExamplesSuccess')\n cy.task('stubRequestSuccessResult20')\n cy.task('stubRequestSuccessResult100')\n cy.visit(path)\n cy.findByLabelText(/Reports catalogue.*/i).within(() => {\n cy.findByRole('row', {\n name: (_, element) => {\n return (\n Boolean(element.textContent?.includes('Successful Report')) &&\n Boolean(element.textContent?.includes('this will succeed'))\n )\n },\n }).within(() => {\n cy.findByRole('link', { name: 'Request report' }).click()\n })\n })\n checkA11y()\n cy.findByRole('button', { name: /Request/ }).click()\n checkA11y()\n cy.findByRole('heading', { level: 1, name: /Successful Report/ }).should('be.visible')\n cy.url().then((url) => {\n viewReportUrl = url\n })\n })\n\n beforeEach(() => {\n cy.visit(viewReportUrl)\n })\n\n describe('Enabling download', () => {\n it('should show the enable download button', () => {\n cy.findByLabelText(/Enable download/)\n .should('exist')\n .should('be.visible')\n cy.findByRole('heading', { name: 'To download this report' }).should('not.exist')\n })\n\n it('should show the download disabled message with link to form', () => {\n cy.findByLabelText(/Enable download/).click()\n cy.url().should('have.string', '/report/download-disabled')\n cy.findByRole('heading', { name: 'To download this report' }).should('be.visible')\n cy.findByRole('link', { name: 'Fill out a form' })\n })\n\n it('should go to the request download form', () => {\n cy.findByLabelText(/Enable download/).click()\n cy.findByRole('link', { name: 'Fill out a form' }).click()\n\n cy.url().then((url) => {\n downloadRequestFormPage = url\n })\n\n cy.url().should(\n 'match',\n /\\/embedded\\/platform\\/dpr\\/download-report\\/request-download\\/request-examples\\/request-example-success\\/tableId\\/tblId_[0-9]+\\/form/,\n )\n cy.location().should((location) => {\n expect(location.search).to.match(\n /.*reportUrl=\\/embedded\\/platform\\/dpr\\/view-report\\/async\\/report\\/request-examples\\/request-example-success\\/tblId_[0-9]+\\/report/,\n )\n })\n })\n })\n\n describe('Requesting download', () => {\n it('should prefill the user data in the request form', () => {\n cy.visit(downloadRequestFormPage)\n cy.findByRole('textbox', { name: 'What is your Full name?' }).should('have.value', 'Test User')\n cy.findByRole('textbox', { name: 'What is your Email address?' }).should('have.value', 'test@user.com')\n })\n\n it('should validate the required fields', () => {\n cy.visit(downloadRequestFormPage)\n cy.findByRole('alert').should('not.exist')\n\n cy.findAllByRole('paragraph').contains('Enter your Job title').should('not.exist')\n cy.findAllByRole('paragraph').contains('provide information on how you will use this data').should('not.exist')\n cy.get('#more-detail-error').should('not.be.visible')\n\n cy.findByRole('button', { name: /Submit request/ }).click()\n\n cy.findByRole('alert').should('exist')\n cy.findAllByRole('paragraph').contains('Enter your Job title').should('exist')\n cy.findAllByRole('paragraph').contains('provide information on how you will use this data').should('exist')\n })\n\n it('should submit the download request', () => {\n cy.visit(downloadRequestFormPage)\n cy.findByRole('textbox', { name: 'What is your Job title?' }).type('Software engineer')\n cy.findByRole('textbox', { name: 'Can you provide more detail' }).type('I like this report')\n\n cy.findByRole('button', { name: 'Submit request' }).click()\n cy.findByText(/You have been granted permission/).should('be.visible')\n\n cy.url().as('downloadRequestSubmittedPage')\n\n cy.url().and(\n 'match',\n /dpr\\/download-report\\/request-download\\/request-examples\\/request-example-success\\/tableId\\/tblId_[0-9]+\\/form\\/submitted/,\n )\n cy.findByRole('link', { name: /Return to report to download/ }).click()\n cy.findAllByRole('heading').contains('Successful Report').should('exist')\n cy.findByRole('button', { name: /download/ }).should('be.visible')\n\n cy.task('stubRequestSuccessResult10MissingFirstRow')\n cy.findByRole('button', { name: /download/ }).click()\n cy.task('checkContents10RowExcelValid').should('equal', true)\n })\n\n it('should redirect on trying to download after having the permission to download removed', () => {\n updateRedisState('downloadPermissions', [])\n cy.findByRole('heading', { name: /To download this report/ }).should('not.exist')\n cy.findByRole('button', { name: /download/ }).click()\n cy.findByRole('heading', { name: /To download this report/ }).should('be.visible')\n })\n })\n})\n"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": [
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
7
|
}
|
|
@@ -1,2 +1,197 @@
|
|
|
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 utils_exports = {};
|
|
30
|
+
__export(utils_exports, {
|
|
31
|
+
default: () => utils_default,
|
|
32
|
+
downloadReport: () => downloadReport,
|
|
33
|
+
getKeys: () => getKeys
|
|
34
|
+
});
|
|
35
|
+
module.exports = __toCommonJS(utils_exports);
|
|
36
|
+
var import_json_2_csv = require("json-2-csv");
|
|
37
|
+
var import_UserReports = require("../../../types/UserReports");
|
|
38
|
+
var import_localsHelper = __toESM(require("../../../utils/localsHelper"));
|
|
39
|
+
var import_ReportQuery = __toESM(require("../../../types/ReportQuery"));
|
|
40
|
+
const convertToCsv = (reportData, options) => {
|
|
41
|
+
const csvData = (0, import_json_2_csv.json2csv)(reportData, options);
|
|
42
|
+
return csvData;
|
|
43
|
+
};
|
|
44
|
+
const getKeys = (reportData, fields) => {
|
|
45
|
+
const keys = [];
|
|
46
|
+
const keyNames = [];
|
|
47
|
+
reportData.forEach((row) => {
|
|
48
|
+
Object.keys(row).forEach((key) => {
|
|
49
|
+
const field = fields.find((f) => f.name === key);
|
|
50
|
+
if (field && !keyNames.includes(key)) {
|
|
51
|
+
keyNames.push(key);
|
|
52
|
+
keys.push({
|
|
53
|
+
field: key,
|
|
54
|
+
title: field.display
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
return keys;
|
|
60
|
+
};
|
|
61
|
+
const applyColumnsAndSort = (data, columns) => {
|
|
62
|
+
return data.map((row) => {
|
|
63
|
+
return Object.keys(row).filter((key) => columns.includes(key)).reduce((obj, key) => {
|
|
64
|
+
obj[key] = row[key];
|
|
65
|
+
return obj;
|
|
66
|
+
}, {});
|
|
67
|
+
});
|
|
68
|
+
};
|
|
69
|
+
const removeHtmlTags = (reportData, reportDefinition) => {
|
|
70
|
+
const { specification } = reportDefinition.variant;
|
|
71
|
+
if (specification) {
|
|
72
|
+
const { fields } = specification;
|
|
73
|
+
const htmlFields = fields.filter((field) => {
|
|
74
|
+
return field.type === "HTML";
|
|
75
|
+
});
|
|
76
|
+
if (htmlFields.length) {
|
|
77
|
+
reportData.map((d) => {
|
|
78
|
+
htmlFields.forEach((field) => {
|
|
79
|
+
const { name } = field;
|
|
80
|
+
const colValue = d[name];
|
|
81
|
+
if (colValue) {
|
|
82
|
+
const innerText = /target="_blank">(.*?)<\/a>/g.exec(colValue);
|
|
83
|
+
d[name] = innerText ? innerText[1] : colValue;
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
return d;
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return reportData;
|
|
91
|
+
};
|
|
92
|
+
const dowloadAsyncData = async (args) => {
|
|
93
|
+
const { token, services, tableId, reportId, id, queryParams } = args;
|
|
94
|
+
const pageSize = await services.reportingService.getAsyncCount(token, tableId);
|
|
95
|
+
const query = {
|
|
96
|
+
...queryParams,
|
|
97
|
+
pageSize: pageSize.toString()
|
|
98
|
+
};
|
|
99
|
+
return services.reportingService.getAsyncReport(token, reportId, id, tableId, query);
|
|
100
|
+
};
|
|
101
|
+
const downloadSyncData = async (args) => {
|
|
102
|
+
const { token, services, queryParams, definition } = args;
|
|
103
|
+
const { variant } = definition;
|
|
104
|
+
const { resourceName, specification } = variant;
|
|
105
|
+
let data = [];
|
|
106
|
+
if (specification) {
|
|
107
|
+
const countReportQuery = new import_ReportQuery.default({
|
|
108
|
+
fields: specification.fields,
|
|
109
|
+
template: specification.template,
|
|
110
|
+
queryParams,
|
|
111
|
+
definitionsPath: queryParams.dataProductDefinitionsPath
|
|
112
|
+
});
|
|
113
|
+
const count = await services.reportingService.getCount(resourceName, token, countReportQuery);
|
|
114
|
+
const dataReportQuery = new import_ReportQuery.default({
|
|
115
|
+
fields: specification.fields,
|
|
116
|
+
template: specification.template,
|
|
117
|
+
queryParams: {
|
|
118
|
+
...queryParams,
|
|
119
|
+
pageSize: count.toString()
|
|
120
|
+
},
|
|
121
|
+
definitionsPath: queryParams.dataProductDefinitionsPath
|
|
122
|
+
});
|
|
123
|
+
const reportData = await services.reportingService.getListWithWarnings(resourceName, token, dataReportQuery);
|
|
124
|
+
data = reportData.data;
|
|
125
|
+
}
|
|
126
|
+
return data;
|
|
127
|
+
};
|
|
128
|
+
const downloadReport = async ({
|
|
129
|
+
req,
|
|
130
|
+
services,
|
|
131
|
+
res,
|
|
132
|
+
redirect,
|
|
133
|
+
loadType
|
|
134
|
+
}) => {
|
|
135
|
+
const { dprUser, token } = import_localsHelper.default.getValues(res);
|
|
136
|
+
const {
|
|
137
|
+
reportId,
|
|
138
|
+
id,
|
|
139
|
+
tableId,
|
|
140
|
+
dataProductDefinitionsPath,
|
|
141
|
+
reportName,
|
|
142
|
+
name,
|
|
143
|
+
cols: columns,
|
|
144
|
+
sortedAsc,
|
|
145
|
+
sortColumn
|
|
146
|
+
} = req.body;
|
|
147
|
+
const { downloadPermissionService } = services;
|
|
148
|
+
const canDownloadReport = await downloadPermissionService.downloadEnabledForReport(dprUser.id, reportId, id);
|
|
149
|
+
if (!canDownloadReport) {
|
|
150
|
+
res.redirect(redirect);
|
|
151
|
+
} else {
|
|
152
|
+
const definition = await services.reportingService.getDefinition(token, reportId, id, dataProductDefinitionsPath);
|
|
153
|
+
const queryParams = {
|
|
154
|
+
dataProductDefinitionsPath,
|
|
155
|
+
...sortedAsc && { sortedAsc },
|
|
156
|
+
...sortColumn && { sortColumn }
|
|
157
|
+
};
|
|
158
|
+
let reportData;
|
|
159
|
+
if (loadType === import_UserReports.LoadType.SYNC) {
|
|
160
|
+
reportData = await downloadSyncData({
|
|
161
|
+
definition,
|
|
162
|
+
services,
|
|
163
|
+
token,
|
|
164
|
+
queryParams
|
|
165
|
+
});
|
|
166
|
+
} else {
|
|
167
|
+
reportData = await dowloadAsyncData({
|
|
168
|
+
services,
|
|
169
|
+
token,
|
|
170
|
+
reportId,
|
|
171
|
+
id,
|
|
172
|
+
tableId,
|
|
173
|
+
queryParams
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
if (columns) {
|
|
177
|
+
reportData = applyColumnsAndSort(reportData, JSON.parse(columns));
|
|
178
|
+
}
|
|
179
|
+
reportData = removeHtmlTags(reportData, definition);
|
|
180
|
+
const fields = definition.variant.specification?.fields || [];
|
|
181
|
+
const keys = getKeys(reportData, fields);
|
|
182
|
+
const csvData = convertToCsv(reportData, { keys, emptyFieldValue: "" });
|
|
183
|
+
res.setHeader("Content-Type", "application/json");
|
|
184
|
+
res.setHeader("Content-disposition", `attachment; filename=${reportName}-${name}-${(/* @__PURE__ */ new Date()).toISOString()}.csv`);
|
|
185
|
+
res.end(csvData);
|
|
186
|
+
}
|
|
187
|
+
};
|
|
188
|
+
var utils_default = {
|
|
189
|
+
downloadReport,
|
|
190
|
+
getKeys
|
|
191
|
+
};
|
|
192
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
193
|
+
0 && (module.exports = {
|
|
194
|
+
downloadReport,
|
|
195
|
+
getKeys
|
|
196
|
+
});
|
|
2
197
|
//# sourceMappingURL=utils.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/dpr/routes/journeys/download-report/utils.ts"],
|
|
4
4
|
"sourcesContent": ["import { Response, Request } from 'express'\nimport { json2csv, Json2CsvOptions } from 'json-2-csv'\nimport { KeysList } from 'json-2-csv/lib/types'\nimport { Services } from '../../../types/Services'\nimport Dict = NodeJS.Dict\nimport { LoadType } from '../../../types/UserReports'\nimport { components } from '../../../types/api'\nimport LocalsHelper from '../../../utils/localsHelper'\nimport { Template } from '../../../types/Templates'\nimport ReportQuery from '../../../types/ReportQuery'\n\nconst convertToCsv = (reportData: Dict<string>[], options: Json2CsvOptions) => {\n const csvData = json2csv(reportData, options)\n return csvData\n}\n\nexport const getKeys = (reportData: Dict<string>[], fields: components['schemas']['FieldDefinition'][]): KeysList => {\n const keys: KeysList = []\n const keyNames: string[] = []\n reportData.forEach((row) => {\n Object.keys(row).forEach((key) => {\n const field = fields.find((f) => f.name === key)\n if (field && !keyNames.includes(key)) {\n keyNames.push(key)\n keys.push({\n field: key,\n title: field.display,\n })\n }\n })\n })\n return keys\n}\n\nconst applyColumnsAndSort = (data: Dict<string>[], columns: string[]) => {\n return data.map((row) => {\n return Object.keys(row)\n .filter((key) => columns.includes(key))\n .reduce((obj: Dict<string>, key) => {\n // eslint-disable-next-line no-param-reassign\n obj[key] = row[key]\n return obj\n }, {})\n })\n}\n\nconst removeHtmlTags = (\n reportData: Dict<string>[],\n reportDefinition: components['schemas']['SingleVariantReportDefinition'],\n) => {\n // Find HMTL field + name\n const { specification } = reportDefinition.variant\n if (specification) {\n const { fields } = specification\n const htmlFields = fields.filter((field) => {\n return field.type === 'HTML'\n })\n\n if (htmlFields.length) {\n reportData.map((d) => {\n htmlFields.forEach((field) => {\n const { name } = field\n const colValue = d[name]\n if (colValue) {\n const innerText = /target=\"_blank\">(.*?)<\\/a>/g.exec(colValue)\n // eslint-disable-next-line prefer-destructuring, no-param-reassign\n d[name] = innerText ? innerText[1] : colValue\n }\n })\n return d\n })\n }\n }\n return reportData\n}\n\nconst dowloadAsyncData = async (args: {\n services: Services\n token: string\n tableId: string\n reportId: string\n id: string\n queryParams: {\n dataProductDefinitionsPath: string\n sortedAsc?: string\n sortColumn?: string\n }\n}) => {\n const { token, services, tableId, reportId, id, queryParams } = args\n const pageSize = await services.reportingService.getAsyncCount(token, tableId)\n const query: Record<string, string | string[]> = {\n ...queryParams,\n pageSize: pageSize.toString(),\n }\n return services.reportingService.getAsyncReport(token, reportId, id, tableId, query)\n}\n\nconst downloadSyncData = async (args: {\n definition: components['schemas']['SingleVariantReportDefinition']\n services: Services\n token: string\n queryParams: {\n dataProductDefinitionsPath: string\n sortedAsc?: string\n sortColumn?: string\n }\n}) => {\n const { token, services, queryParams, definition } = args\n const { variant } = definition\n const { resourceName, specification } = variant\n let data: Dict<string>[] = []\n\n if (specification) {\n const countReportQuery = new ReportQuery({\n fields: specification.fields,\n template: specification.template as Template,\n queryParams,\n definitionsPath: <string>queryParams.dataProductDefinitionsPath,\n })\n const count = await services.reportingService.getCount(resourceName, token, countReportQuery)\n\n const dataReportQuery = new ReportQuery({\n fields: specification.fields,\n template: specification.template as Template,\n queryParams: {\n ...queryParams,\n pageSize: count.toString(),\n },\n definitionsPath: <string>queryParams.dataProductDefinitionsPath,\n })\n const reportData = await services.reportingService.getListWithWarnings(resourceName, token, dataReportQuery)\n data = reportData.data\n }\n\n return data\n}\n\nexport const downloadReport = async ({\n req,\n services,\n res,\n redirect,\n loadType,\n}: {\n req: Request\n services: Services\n res: Response\n redirect: string\n loadType?: LoadType\n}) => {\n const { dprUser, token } = LocalsHelper.getValues(res)\n const {\n reportId,\n id,\n tableId,\n dataProductDefinitionsPath,\n reportName,\n name,\n cols: columns,\n sortedAsc,\n sortColumn,\n } = req.body\n const { downloadPermissionService } = services\n const canDownloadReport = await downloadPermissionService.downloadEnabledForReport(dprUser.id, reportId, id)\n if (!canDownloadReport) {\n res.redirect(redirect)\n } else {\n const definition = await services.reportingService.getDefinition(token, reportId, id, dataProductDefinitionsPath)\n const queryParams = {\n dataProductDefinitionsPath,\n ...(sortedAsc && { sortedAsc }),\n ...(sortColumn && { sortColumn }),\n }\n\n let reportData\n if (loadType === LoadType.SYNC) {\n reportData = await downloadSyncData({\n definition,\n services,\n token,\n queryParams,\n })\n } else {\n reportData = await dowloadAsyncData({\n services,\n token,\n reportId,\n id,\n tableId,\n queryParams,\n })\n }\n if (columns) {\n reportData = applyColumnsAndSort(reportData, JSON.parse(columns))\n }\n reportData = removeHtmlTags(reportData, definition)\n const fields = definition.variant.specification?.fields || []\n const keys: KeysList = getKeys(reportData, fields)\n const csvData = convertToCsv(reportData, { keys, emptyFieldValue: '' })\n\n res.setHeader('Content-Type', 'application/json')\n res.setHeader('Content-disposition', `attachment; filename=${reportName}-${name}-${new Date().toISOString()}.csv`)\n res.end(csvData)\n }\n}\n\nexport default {\n downloadReport,\n getKeys,\n}\n"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["ReportQuery", "LocalsHelper"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,59 @@
|
|
|
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 controller_exports = {};
|
|
30
|
+
__export(controller_exports, {
|
|
31
|
+
BookmarkController: () => BookmarkController,
|
|
32
|
+
default: () => controller_default
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(controller_exports);
|
|
35
|
+
var import_localsHelper = __toESM(require("../../../../utils/localsHelper"));
|
|
36
|
+
class BookmarkController {
|
|
37
|
+
layoutPath;
|
|
38
|
+
services;
|
|
39
|
+
constructor(layoutPath, services) {
|
|
40
|
+
this.layoutPath = layoutPath;
|
|
41
|
+
this.services = services;
|
|
42
|
+
}
|
|
43
|
+
POST = async (req, res) => {
|
|
44
|
+
const { dprUser } = import_localsHelper.default.getValues(res);
|
|
45
|
+
const { reportId, id, reportType, type } = req.body;
|
|
46
|
+
if (type === "add") {
|
|
47
|
+
await this.services.bookmarkService.addBookmark(dprUser.id, reportId, id, reportType);
|
|
48
|
+
} else {
|
|
49
|
+
await this.services.bookmarkService.removeBookmark(dprUser.id, id, reportId);
|
|
50
|
+
}
|
|
51
|
+
res.end();
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
var controller_default = BookmarkController;
|
|
55
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
56
|
+
0 && (module.exports = {
|
|
57
|
+
BookmarkController
|
|
58
|
+
});
|
|
2
59
|
//# sourceMappingURL=controller.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/dpr/routes/journeys/my-reports/bookmarks/controller.ts"],
|
|
4
4
|
"sourcesContent": ["import { RequestHandler } from 'express'\nimport { Services } from '../../../../types/Services'\nimport LocalsHelper from '../../../../utils/localsHelper'\n\nclass BookmarkController {\n layoutPath: string\n\n services: Services\n\n constructor(layoutPath: string, services: Services) {\n this.layoutPath = layoutPath\n this.services = services\n }\n\n POST: RequestHandler = async (req, res) => {\n const { dprUser } = LocalsHelper.getValues(res)\n const { reportId, id, reportType, type } = req.body\n if (type === 'add') {\n await this.services.bookmarkService.addBookmark(dprUser.id, reportId, id, reportType)\n } else {\n await this.services.bookmarkService.removeBookmark(dprUser.id, id, reportId)\n }\n res.end()\n }\n}\n\nexport { BookmarkController }\nexport default BookmarkController\n"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,0BAAyB;AAEzB,MAAM,mBAAmB;AAAA,EACvB;AAAA,EAEA;AAAA,EAEA,YAAY,YAAoB,UAAoB;AAClD,SAAK,aAAa;AAClB,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,OAAuB,OAAO,KAAK,QAAQ;AACzC,UAAM,EAAE,QAAQ,IAAI,oBAAAA,QAAa,UAAU,GAAG;AAC9C,UAAM,EAAE,UAAU,IAAI,YAAY,KAAK,IAAI,IAAI;AAC/C,QAAI,SAAS,OAAO;AAClB,YAAM,KAAK,SAAS,gBAAgB,YAAY,QAAQ,IAAI,UAAU,IAAI,UAAU;AAAA,IACtF,OAAO;AACL,YAAM,KAAK,SAAS,gBAAgB,eAAe,QAAQ,IAAI,IAAI,QAAQ;AAAA,IAC7E;AACA,QAAI,IAAI;AAAA,EACV;AACF;AAGA,IAAO,qBAAQ;",
|
|
6
|
+
"names": ["LocalsHelper"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,57 @@
|
|
|
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 controller_exports = {};
|
|
30
|
+
__export(controller_exports, {
|
|
31
|
+
BookmarkListingController: () => BookmarkListingController,
|
|
32
|
+
default: () => controller_default
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(controller_exports);
|
|
35
|
+
var import_utils = __toESM(require("../../../../../components/user-reports/bookmarks/utils"));
|
|
36
|
+
class BookmarkListingController {
|
|
37
|
+
layoutPath;
|
|
38
|
+
services;
|
|
39
|
+
constructor(layoutPath, services) {
|
|
40
|
+
this.layoutPath = layoutPath;
|
|
41
|
+
this.services = services;
|
|
42
|
+
}
|
|
43
|
+
GET = async (_req, res, _next) => {
|
|
44
|
+
res.render(`dpr/routes/journeys/my-reports/view`, {
|
|
45
|
+
title: "Bookmarks",
|
|
46
|
+
layoutPath: this.layoutPath,
|
|
47
|
+
id: "dpr-bookmarks-list",
|
|
48
|
+
...await import_utils.default.renderBookmarkList({ services: this.services, res })
|
|
49
|
+
});
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
var controller_default = BookmarkListingController;
|
|
53
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
54
|
+
0 && (module.exports = {
|
|
55
|
+
BookmarkListingController
|
|
56
|
+
});
|
|
2
57
|
//# sourceMappingURL=controller.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../../src/dpr/routes/journeys/my-reports/bookmarks/list/controller.ts"],
|
|
4
4
|
"sourcesContent": ["import { RequestHandler } from 'express'\nimport BookmarklistUtils from '../../../../../components/user-reports/bookmarks/utils'\nimport { Services } from '../../../../../types/Services'\n\nclass BookmarkListingController {\n layoutPath: string\n\n services: Services\n\n constructor(layoutPath: string, services: Services) {\n this.layoutPath = layoutPath\n this.services = services\n }\n\n GET: RequestHandler = async (_req, res, _next) => {\n res.render(`dpr/routes/journeys/my-reports/view`, {\n title: 'Bookmarks',\n layoutPath: this.layoutPath,\n id: 'dpr-bookmarks-list',\n ...(await BookmarklistUtils.renderBookmarkList({ services: this.services, res })),\n })\n }\n}\n\nexport { BookmarkListingController }\nexport default BookmarkListingController\n"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAA8B;AAG9B,MAAM,0BAA0B;AAAA,EAC9B;AAAA,EAEA;AAAA,EAEA,YAAY,YAAoB,UAAoB;AAClD,SAAK,aAAa;AAClB,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,MAAsB,OAAO,MAAM,KAAK,UAAU;AAChD,QAAI,OAAO,uCAAuC;AAAA,MAChD,OAAO;AAAA,MACP,YAAY,KAAK;AAAA,MACjB,IAAI;AAAA,MACJ,GAAI,MAAM,aAAAA,QAAkB,mBAAmB,EAAE,UAAU,KAAK,UAAU,IAAI,CAAC;AAAA,IACjF,CAAC;AAAA,EACH;AACF;AAGA,IAAO,qBAAQ;",
|
|
6
|
+
"names": ["BookmarklistUtils"]
|
|
7
7
|
}
|