@ministryofjustice/hmpps-digital-prison-reporting-frontend 4.28.0 → 4.28.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dpr/DprClientClass.js +43 -0
- package/dpr/DprClientClass.js.map +7 -0
- package/dpr/{DprClientClass.mjs → DprClientClass.ts} +1 -0
- package/dpr/DprFormValidationClass.js +157 -0
- package/dpr/DprFormValidationClass.js.map +7 -0
- package/dpr/{DprFormValidationClass.mjs → DprFormValidationClass.ts} +2 -1
- package/dpr/DprGenericFormClass.js +66 -0
- package/dpr/DprGenericFormClass.js.map +7 -0
- package/dpr/{DprGenericFormClass.mjs → DprGenericFormClass.ts} +2 -1
- package/dpr/DprLoadingHelper.js +51 -0
- package/dpr/DprLoadingHelper.js.map +7 -0
- package/dpr/{DprLoadingHelper.mjs → DprLoadingHelper.ts} +1 -0
- package/dpr/DprPollingStatusClass.js +79 -0
- package/dpr/DprPollingStatusClass.js.map +7 -0
- package/dpr/{DprPollingStatusClass.mjs → DprPollingStatusClass.ts} +2 -1
- package/dpr/DprQueryParamClass.js +231 -0
- package/dpr/DprQueryParamClass.js.map +7 -0
- package/dpr/{DprQueryParamClass.mjs → DprQueryParamClass.ts} +2 -1
- package/dpr/DprSyncLoading.js +44 -0
- package/dpr/DprSyncLoading.js.map +7 -0
- package/dpr/{DprSyncLoading.mjs → DprSyncLoading.ts} +2 -1
- package/dpr/all.js +111 -0
- package/dpr/all.js.map +7 -0
- package/dpr/{all.mjs → all.ts} +29 -28
- package/dpr/assets/app.js +1 -1
- package/dpr/assets/app.js.map +2 -2
- package/dpr/components/_async/async-filters-form/clientClass.js +76 -0
- package/dpr/components/_async/async-filters-form/clientClass.js.map +7 -0
- package/dpr/components/_async/async-filters-form/{clientClass.mjs → clientClass.ts} +3 -2
- package/dpr/components/_async/async-filters-form/sortByTemplate.js.map +1 -1
- package/dpr/components/_async/async-filters-form/types.d.js.map +1 -1
- package/dpr/components/_async/async-filters-form/utils.js.map +1 -1
- package/dpr/components/_async/async-polling/clientClass.js +78 -0
- package/dpr/components/_async/async-polling/clientClass.js.map +7 -0
- package/dpr/components/_async/async-polling/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_catalogue/catalogue/types.js.map +1 -1
- package/dpr/components/_catalogue/catalogue/utils.js.map +1 -1
- package/dpr/components/_catalogue/catalogue-filter-by-type/clientClass.js +94 -0
- package/dpr/components/_catalogue/catalogue-filter-by-type/clientClass.js.map +7 -0
- package/dpr/components/_catalogue/catalogue-filter-by-type/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_catalogue/catalogue-filters/clientClass.js +70 -0
- package/dpr/components/_catalogue/catalogue-filters/clientClass.js.map +7 -0
- package/dpr/components/_catalogue/catalogue-filters/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_catalogue/catalogue-list/utils.js.map +1 -1
- package/dpr/components/_catalogue/catalogue-search/clientClass.js +106 -0
- package/dpr/components/_catalogue/catalogue-search/clientClass.js.map +7 -0
- package/dpr/components/_catalogue/catalogue-search/{clientClass.mjs → clientClass.ts} +3 -2
- package/dpr/components/_catalogue/catalogue-unauthorised-toggle/clientClass.js +135 -0
- package/dpr/components/_catalogue/catalogue-unauthorised-toggle/clientClass.js.map +7 -0
- package/dpr/components/_catalogue/catalogue-unauthorised-toggle/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_charts/chart/Chart.js.map +1 -1
- package/dpr/components/_charts/chart/ChartColours.js.map +1 -1
- package/dpr/components/_charts/chart/ChartTimeseries.js.map +1 -1
- package/dpr/components/_charts/chart/bar/BarChart.js.map +1 -1
- package/dpr/components/_charts/chart/bar/clientClass.js +98 -0
- package/dpr/components/_charts/chart/bar/clientClass.js.map +7 -0
- package/dpr/components/_charts/chart/bar/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_charts/chart/bar/types.js.map +1 -1
- package/dpr/components/_charts/chart/bar/validate.js.map +1 -1
- package/dpr/components/_charts/chart/bar-timeseries/BarTimeseriesChart.js.map +1 -1
- package/dpr/components/_charts/chart/bar-timeseries/types.js.map +1 -1
- package/dpr/components/_charts/chart/bar-timeseries/validate.js.map +1 -1
- package/dpr/components/_charts/chart/buckets/Buckets.js.map +1 -1
- package/dpr/components/_charts/chart/buckets/types.js.map +1 -1
- package/dpr/components/_charts/chart/buckets/validate.js.map +1 -1
- package/dpr/components/_charts/chart/chart-config.js.map +1 -1
- package/dpr/components/_charts/chart/clientClass.js +136 -0
- package/dpr/components/_charts/chart/clientClass.js.map +7 -0
- package/dpr/components/_charts/chart/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_charts/chart/doughnut/DoughnutChart.js.map +1 -1
- package/dpr/components/_charts/chart/doughnut/clientClass.js +170 -0
- package/dpr/components/_charts/chart/doughnut/clientClass.js.map +7 -0
- package/dpr/components/_charts/chart/doughnut/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_charts/chart/doughnut/types.js.map +1 -1
- package/dpr/components/_charts/chart/doughnut/validate.js.map +1 -1
- package/dpr/components/_charts/chart/heatmap/HeatmapChart.js.map +1 -1
- package/dpr/components/_charts/chart/heatmap/clientClass.js +118 -0
- package/dpr/components/_charts/chart/heatmap/clientClass.js.map +7 -0
- package/dpr/components/_charts/chart/heatmap/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_charts/chart/heatmap/types.js.map +1 -1
- package/dpr/components/_charts/chart/heatmap/validate.js.map +1 -1
- package/dpr/components/_charts/chart/line/LineChart.js.map +1 -1
- package/dpr/components/_charts/chart/line/clientClass.js +93 -0
- package/dpr/components/_charts/chart/line/clientClass.js.map +7 -0
- package/dpr/components/_charts/chart/line/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_charts/chart/line/types.js.map +1 -1
- package/dpr/components/_charts/chart/line/validate.js.map +1 -1
- package/dpr/components/_charts/chart/line-timeseries/LineTimeseriesChart.js.map +1 -1
- package/dpr/components/_charts/chart/line-timeseries/types.js.map +1 -1
- package/dpr/components/_charts/chart/line-timeseries/validate.js.map +1 -1
- package/dpr/components/_charts/utils.js.map +1 -1
- package/dpr/components/_dashboards/dashboard-list/types.js.map +1 -1
- package/dpr/components/_dashboards/dashboard-list/utils.js.map +1 -1
- package/dpr/components/_dashboards/dashboard-list/validate.js.map +1 -1
- package/dpr/components/_dashboards/dashboard-visualisation/Validate.js.map +1 -1
- package/dpr/components/_dashboards/dashboard-visualisation/types.js.map +1 -1
- package/dpr/components/_dashboards/scorecard/Scorecard.js.map +1 -1
- package/dpr/components/_dashboards/scorecard/clientClass.js +50 -0
- package/dpr/components/_dashboards/scorecard/clientClass.js.map +7 -0
- package/dpr/components/_dashboards/scorecard/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_dashboards/scorecard/types.js.map +1 -1
- package/dpr/components/_dashboards/scorecard/utils.js.map +1 -1
- package/dpr/components/_dashboards/scorecard/validate.js.map +1 -1
- package/dpr/components/_dashboards/scorecard-group/ScorecardGroup.js.map +1 -1
- package/dpr/components/_dashboards/scorecard-group/types.js.map +1 -1
- package/dpr/components/_dashboards/scorecard-group/validate.js.map +1 -1
- package/dpr/components/_filters/filter-input/enum.js.map +1 -1
- package/dpr/components/_filters/filter-input/filters.js.map +1 -1
- package/dpr/components/_filters/filter-input/types.d.js.map +1 -1
- package/dpr/components/_filters/filters-form/clientClass.js +104 -0
- package/dpr/components/_filters/filters-form/clientClass.js.map +7 -0
- package/dpr/components/_filters/filters-form/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_filters/filters-interactive/clientClass.js +55 -0
- package/dpr/components/_filters/filters-interactive/clientClass.js.map +7 -0
- package/dpr/components/_filters/filters-interactive/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_filters/filters-selected/clientClass.js +396 -0
- package/dpr/components/_filters/filters-selected/clientClass.js.map +7 -0
- package/dpr/components/_filters/filters-selected/{clientClass.mjs → clientClass.ts} +7 -7
- package/dpr/components/_filters/filters-selected/utils.js.map +1 -1
- package/dpr/components/_filters/filtersTypeEnum.js.map +1 -1
- package/dpr/components/_filters/types.d.js.map +1 -1
- package/dpr/components/_filters/utils.js.map +1 -1
- package/dpr/components/_inputs/autocomplete-text-input/clientClass.js +153 -0
- package/dpr/components/_inputs/autocomplete-text-input/clientClass.js.map +7 -0
- package/dpr/components/_inputs/autocomplete-text-input/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_inputs/autocomplete-text-input/utils.js.map +1 -1
- package/dpr/components/_inputs/date-input/clientClass.js +109 -0
- package/dpr/components/_inputs/date-input/clientClass.js.map +7 -0
- package/dpr/components/_inputs/date-input/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_inputs/date-input/utils.js.map +1 -1
- package/dpr/components/_inputs/date-range/clientClass.js +206 -0
- package/dpr/components/_inputs/date-range/clientClass.js.map +7 -0
- package/dpr/components/_inputs/date-range/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_inputs/date-range/types.js.map +1 -1
- package/dpr/components/_inputs/date-range/utils.js.map +1 -1
- package/dpr/components/_inputs/granular-date-range/clientClass.js +245 -0
- package/dpr/components/_inputs/granular-date-range/clientClass.js.map +7 -0
- package/dpr/components/_inputs/granular-date-range/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_inputs/granular-date-range/types.js.map +1 -1
- package/dpr/components/_inputs/granular-date-range/utils.js.map +1 -1
- package/dpr/components/_inputs/multi-select/utils.js.map +1 -1
- package/dpr/components/_inputs/start-end-date/utils.js.map +1 -1
- package/dpr/components/_reports/report-actions/actionsTemplate.js.map +1 -1
- package/dpr/components/_reports/report-actions/clientClass.js +103 -0
- package/dpr/components/_reports/report-actions/clientClass.js.map +7 -0
- package/dpr/components/_reports/report-actions/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_reports/report-actions/types.d.js.map +1 -1
- package/dpr/components/_reports/report-actions/utils.js.map +1 -1
- package/dpr/components/_reports/report-columns-form/clientClass.js +76 -0
- package/dpr/components/_reports/report-columns-form/clientClass.js.map +7 -0
- package/dpr/components/_reports/report-columns-form/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_reports/report-columns-form/types.d.js.map +1 -1
- package/dpr/components/_reports/report-columns-form/utils.js.map +1 -1
- package/dpr/components/_reports/report-data-table/clientClass.js +80 -0
- package/dpr/components/_reports/report-data-table/clientClass.js.map +7 -0
- package/dpr/components/_reports/report-data-table/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_reports/report-data-table/types.d.js.map +1 -1
- package/dpr/components/_reports/report-data-table/utils.js.map +1 -1
- package/dpr/components/_reports/report-download-message/clientClass.js +42 -0
- package/dpr/components/_reports/report-download-message/clientClass.js.map +7 -0
- package/dpr/components/_reports/report-download-message/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_reports/report-pagination/clientClass.js +61 -0
- package/dpr/components/_reports/report-pagination/clientClass.js.map +7 -0
- package/dpr/components/_reports/report-pagination/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_reports/report-pagination/types.d.js.map +1 -1
- package/dpr/components/_reports/report-pagination/utils.js.map +1 -1
- package/dpr/components/_reports/report-totals/utils.js.map +1 -1
- package/dpr/components/_sync/sync-load/view.njk +1 -1
- package/dpr/components/bookmark-toggle/clientClass.js +111 -0
- package/dpr/components/bookmark-toggle/clientClass.js.map +7 -0
- package/dpr/components/bookmark-toggle/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/card-group/clientClass.js +53 -0
- package/dpr/components/card-group/clientClass.js.map +7 -0
- package/dpr/components/card-group/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/card-group/utils.js.map +1 -1
- package/dpr/components/report-list/defaultTokenProvider.js.map +1 -1
- package/dpr/components/report-list/types.d.js.map +1 -1
- package/dpr/components/report-list/utils.js.map +1 -1
- package/dpr/components/show-more/clientClass.js +63 -0
- package/dpr/components/show-more/clientClass.js.map +7 -0
- package/dpr/components/show-more/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/show-more/utils.js.map +1 -1
- package/dpr/components/user-reports/bookmarks/utils.js.map +1 -1
- package/dpr/components/user-reports/requested/clientClass.js +132 -0
- package/dpr/components/user-reports/requested/clientClass.js.map +7 -0
- package/dpr/components/user-reports/requested/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/user-reports/requested/utils.js.map +1 -1
- package/dpr/components/user-reports/types.d.js.map +1 -1
- package/dpr/components/user-reports/utils.js.map +1 -1
- package/dpr/components/user-reports/viewed/clientClass.js +102 -0
- package/dpr/components/user-reports/viewed/clientClass.js.map +7 -0
- package/dpr/components/user-reports/viewed/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/user-reports/viewed/utils.js.map +1 -1
- package/dpr/data/agentConfig.js.map +1 -1
- package/dpr/data/dashboardClient.js.map +1 -1
- package/dpr/data/dprReportingClient.js.map +1 -1
- package/dpr/data/missingReportClient.js.map +1 -1
- package/dpr/data/productCollectionClient.js.map +1 -1
- package/dpr/data/reportDataStore.js.map +1 -1
- package/dpr/data/reportingClient.js.map +1 -1
- package/dpr/data/restClient.js.map +1 -1
- package/dpr/data/types.d.js.map +1 -1
- package/dpr/middleware/reportAuthoriser.js.map +1 -1
- package/dpr/middleware/setUpDprResources.js.map +1 -1
- package/dpr/middleware/setUpNestedRoute.js.map +1 -1
- package/dpr/routes/index.js.map +1 -1
- package/dpr/routes/journeys/api-failures.cy.js.map +1 -1
- package/dpr/routes/journeys/download-report/controller.js.map +1 -1
- package/dpr/routes/journeys/download-report/request-download/form/controller.js.map +1 -1
- package/dpr/routes/journeys/download-report/request-download/form/routes.js.map +1 -1
- package/dpr/routes/journeys/download-report/request-download/form/submitted/controller.js.map +1 -1
- package/dpr/routes/journeys/download-report/request-download/form/submitted/routes.js.map +1 -1
- package/dpr/routes/journeys/download-report/request-download/form/submitted/tests.cy.js.map +1 -1
- package/dpr/routes/journeys/download-report/request-download/form/tests.cy.js.map +1 -1
- package/dpr/routes/journeys/download-report/request-download/routes.js.map +1 -1
- package/dpr/routes/journeys/download-report/request-download/service.js.map +1 -1
- package/dpr/routes/journeys/download-report/routes.js.map +1 -1
- package/dpr/routes/journeys/download-report/tests.cy.js.map +1 -1
- package/dpr/routes/journeys/download-report/utils.js.map +1 -1
- package/dpr/routes/journeys/my-reports/bookmarks/controller.js.map +1 -1
- package/dpr/routes/journeys/my-reports/bookmarks/list/controller.js.map +1 -1
- package/dpr/routes/journeys/my-reports/bookmarks/list/routes.js.map +1 -1
- package/dpr/routes/journeys/my-reports/bookmarks/list/tests.cy.js.map +1 -1
- package/dpr/routes/journeys/my-reports/bookmarks/routes.js.map +1 -1
- package/dpr/routes/journeys/my-reports/bookmarks/service.js.map +1 -1
- package/dpr/routes/journeys/my-reports/bookmarks/tests.cy.js.map +1 -1
- package/dpr/routes/journeys/my-reports/bookmarks/utils.js.map +1 -1
- package/dpr/routes/journeys/my-reports/recently-viewed/controller.js.map +1 -1
- package/dpr/routes/journeys/my-reports/recently-viewed/list/controller.js.map +1 -1
- package/dpr/routes/journeys/my-reports/recently-viewed/list/routes.js.map +1 -1
- package/dpr/routes/journeys/my-reports/recently-viewed/list/tests.cy.js.map +1 -1
- package/dpr/routes/journeys/my-reports/recently-viewed/routes.js.map +1 -1
- package/dpr/routes/journeys/my-reports/recently-viewed/service.js.map +1 -1
- package/dpr/routes/journeys/my-reports/requested-reports/controller.js.map +1 -1
- package/dpr/routes/journeys/my-reports/requested-reports/list/controller.js.map +1 -1
- package/dpr/routes/journeys/my-reports/requested-reports/list/routes.js.map +1 -1
- package/dpr/routes/journeys/my-reports/requested-reports/list/tests.cy.js.map +1 -1
- package/dpr/routes/journeys/my-reports/requested-reports/routes.js.map +1 -1
- package/dpr/routes/journeys/my-reports/requested-reports/service.js.map +1 -1
- package/dpr/routes/journeys/my-reports/routes.js.map +1 -1
- package/dpr/routes/journeys/product-collection/routes.js.map +1 -1
- package/dpr/routes/journeys/product-collection/selected/controller.js.map +1 -1
- package/dpr/routes/journeys/product-collection/selected/routes.js.map +1 -1
- package/dpr/routes/journeys/product-collection/selected/tests.cy.js.map +1 -1
- package/dpr/routes/journeys/product-collection/selected/validation.js.map +1 -1
- package/dpr/routes/journeys/request-missing-report/form/controller.js.map +1 -1
- package/dpr/routes/journeys/request-missing-report/form/routes.js.map +1 -1
- package/dpr/routes/journeys/request-missing-report/form/tests.cy.js.map +1 -1
- package/dpr/routes/journeys/request-missing-report/form/validation.js.map +1 -1
- package/dpr/routes/journeys/request-missing-report/routes.js.map +1 -1
- package/dpr/routes/journeys/request-missing-report/submitted/controller.js.map +1 -1
- package/dpr/routes/journeys/request-missing-report/submitted/routes.js.map +1 -1
- package/dpr/routes/journeys/request-missing-report/submitted/tests.cy.js.map +1 -1
- package/dpr/routes/journeys/request-missing-report/tests.cy.js.map +1 -1
- package/dpr/routes/journeys/request-report/controller.js.map +1 -1
- package/dpr/routes/journeys/request-report/filters/controller.js.map +1 -1
- package/dpr/routes/journeys/request-report/filters/routes.js.map +1 -1
- package/dpr/routes/journeys/request-report/filters/tests.cy.js.map +1 -1
- package/dpr/routes/journeys/request-report/filters/utils.js.map +1 -1
- package/dpr/routes/journeys/request-report/routes.js.map +1 -1
- package/dpr/routes/journeys/request-report/status/controller.js.map +1 -1
- package/dpr/routes/journeys/request-report/status/routes.js.map +1 -1
- package/dpr/routes/journeys/request-report/status/tests.cy.js.map +1 -1
- package/dpr/routes/journeys/request-report/status/utils.js.map +1 -1
- package/dpr/routes/journeys/request-report/tests.cy.js.map +1 -1
- package/dpr/routes/journeys/routes.js.map +1 -1
- package/dpr/routes/journeys/view-report/async/controller.js.map +1 -1
- package/dpr/routes/journeys/view-report/async/dashboard/controller.js.map +1 -1
- package/dpr/routes/journeys/view-report/async/dashboard/routes.js.map +1 -1
- package/dpr/routes/journeys/view-report/async/dashboard/tests.cy.js.map +1 -1
- package/dpr/routes/journeys/view-report/async/dashboard/utils.js.map +1 -1
- package/dpr/routes/journeys/view-report/async/report/controller.js.map +1 -1
- package/dpr/routes/journeys/view-report/async/report/report-variants.cy.js.map +1 -1
- package/dpr/routes/journeys/view-report/async/report/routes.js.map +1 -1
- package/dpr/routes/journeys/view-report/async/report/tests.cy.js.map +1 -1
- package/dpr/routes/journeys/view-report/async/report/types.js.map +1 -1
- package/dpr/routes/journeys/view-report/async/report/utils.js +2 -2
- package/dpr/routes/journeys/view-report/async/report/utils.js.map +3 -3
- package/dpr/routes/journeys/view-report/async/report/utils.ts +2 -2
- package/dpr/routes/journeys/view-report/async/routes.js.map +1 -1
- package/dpr/routes/journeys/view-report/controller.js.map +2 -2
- package/dpr/routes/journeys/view-report/controller.ts +1 -1
- package/dpr/routes/journeys/view-report/routes.js.map +1 -1
- package/dpr/routes/journeys/view-report/sync/dashboard/controller.js.map +1 -1
- package/dpr/routes/journeys/view-report/sync/dashboard/routes.js.map +1 -1
- package/dpr/routes/journeys/view-report/sync/dashboard/utils.js.map +1 -1
- package/dpr/routes/journeys/view-report/sync/load-report/controller.js.map +1 -1
- package/dpr/routes/journeys/view-report/sync/load-report/routes.js.map +1 -1
- package/dpr/routes/journeys/view-report/sync/report/controller.js.map +1 -1
- package/dpr/routes/journeys/view-report/sync/report/routes.js.map +1 -1
- package/dpr/routes/journeys/view-report/sync/report/utils.js.map +1 -1
- package/dpr/routes/journeys/view-report/sync/routes.js.map +1 -1
- package/dpr/routes/journeys/view-report/sync/tests.cy.js.map +1 -1
- package/dpr/routes/journeys/view-report/utils.js.map +1 -1
- package/dpr/services/dashboardService.js.map +1 -1
- package/dpr/services/defaultFilterValuesService.js.map +1 -1
- package/dpr/services/featureFlagService.js.map +1 -1
- package/dpr/services/featureFlags.cy.js.map +1 -1
- package/dpr/services/index.js.map +1 -1
- package/dpr/services/missingReport/missingReportService.js.map +1 -1
- package/dpr/services/productCollection/productCollectionService.js.map +1 -1
- package/dpr/services/productCollection/productCollectionStoreService.js.map +1 -1
- package/dpr/services/reportStoreService.js.map +1 -1
- package/dpr/services/reportingService.js.map +1 -1
- package/dpr/setUpNunjucksFilters.js.map +1 -1
- package/dpr/types/AsyncReportUtils.js.map +1 -1
- package/dpr/types/Bookmark.js.map +1 -1
- package/dpr/types/Charts.js.map +1 -1
- package/dpr/types/Download.js.map +1 -1
- package/dpr/types/DprConfig.js.map +1 -1
- package/dpr/types/DprUser.js.map +1 -1
- package/dpr/types/EmbeddedReportUtils.js.map +1 -1
- package/dpr/types/ExecutionData.d.js.map +1 -1
- package/dpr/types/Metrics.js.map +1 -1
- package/dpr/types/ReportQuery.js.map +1 -1
- package/dpr/types/ReportStore.js.map +1 -1
- package/dpr/types/Services.d.js.map +1 -1
- package/dpr/types/Templates.d.js.map +1 -1
- package/dpr/types/UserReports.js.map +1 -1
- package/dpr/types/api.d.js.map +1 -1
- package/dpr/types/index.d.js.map +1 -1
- package/dpr/utils/CollatedSummaryBuilder/CollatedSummaryBuilder.js.map +1 -1
- package/dpr/utils/CreateDprServices.js.map +1 -1
- package/dpr/utils/DataTableBuilder/DataTableBuilder.js.map +1 -1
- package/dpr/utils/DataTableBuilder/types.d.js.map +1 -1
- package/dpr/utils/DateMapper/DateMapper.js.map +1 -1
- package/dpr/utils/DateMapper/types.d.js.map +1 -1
- package/dpr/utils/ErrorHandler.js.map +1 -1
- package/dpr/utils/ParentChildDataTableBuilder/ParentChildDataTableBuilder.js.map +1 -1
- package/dpr/utils/ParentChildDataTableBuilder/types.d.js.map +1 -1
- package/dpr/utils/Personalisation/personalisationUtils.js.map +1 -1
- package/dpr/utils/Personalisation/types.d.js.map +1 -1
- package/dpr/utils/SectionedDataTableBuilder/SectionedDataTableBuilder.js.map +1 -1
- package/dpr/utils/SectionedDataTableBuilder/types.d.js.map +1 -1
- package/dpr/utils/SectionedFieldsTableBuilder/SectionedFieldsTableBuilder.js.map +1 -1
- package/dpr/utils/SummaryDataTableBuilder/SummaryDataTableBuilder.js.map +1 -1
- package/dpr/utils/UserStoreItemBuilder.js.map +1 -1
- package/dpr/utils/arrayUtils.js.map +1 -1
- package/dpr/utils/datasetHelper.js.map +1 -1
- package/dpr/utils/definitionUtils.js.map +1 -1
- package/dpr/utils/index.js.map +1 -1
- package/dpr/utils/indexedAccesHelper.js.map +1 -1
- package/dpr/utils/localsHelper.js.map +1 -1
- package/dpr/utils/logger.js.map +1 -1
- package/dpr/utils/reportListsHelper.js.map +1 -1
- package/dpr/utils/reportStoreHelper.js.map +1 -1
- package/dpr/utils/requestStatusHelper.js.map +1 -1
- package/dpr/utils/sanitisedError.js.map +1 -1
- package/dpr/utils/urlHelper.js.map +1 -1
- package/dpr/validation/validate.js.map +1 -1
- package/package.json +10 -6
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../../../../dpr/routes/journeys/view-report/async/report/tests.cy.ts"],
|
|
4
4
|
"sourcesContent": ["import {\n checkSelectedFilterValues,\n requestReport,\n executeReportStubs,\n} from '../../../../../../../cypress-tests/cypressUtils'\nimport DateMapper from '../../../../../utils/DateMapper/DateMapper'\n\ncontext('Viewing a report', () => {\n const path = '/embedded/platform/'\n let viewReportUrl: string\n let tableId: string\n\n describe('List report page', () => {\n before(() => {\n executeReportStubs()\n cy.task('stubDefinitionRequestExamplesSuccess')\n cy.task('stubRequestSuccessResult10')\n cy.task('stubRequestSuccessResult20')\n cy.task('stubRequestSuccessResult100')\n\n // Request and run a report so we can go back to it for each test\n requestReport({ name: 'Successful Report', description: 'this will succeed', path })\n cy.url().then((url) => {\n viewReportUrl = url\n const urlArr = url.split('/')\n tableId = urlArr[urlArr.length - 2]\n })\n })\n\n beforeEach(() => {\n cy.visit(viewReportUrl)\n })\n\n describe('Report details', () => {\n it('should show the report details', () => {\n cy.findAllByRole('group').contains('Report details').should('be.visible').click()\n\n cy.findAllByRole('group')\n .contains('Report details')\n .parent()\n .parent()\n .within(() => {\n cy.findAllByRole('row').each((row, index) => {\n cy.wrap(row).within(() => {\n switch (index) {\n case 0:\n cy.findAllByRole('cell', { name: 'Name:' }).should('exist')\n cy.findAllByRole('cell', { name: 'Successful Report' }).should('exist')\n break\n case 1:\n cy.findAllByRole('cell', { name: 'Product:' }).should('exist')\n cy.findAllByRole('cell', { name: 'Successful Report' }).should('exist')\n break\n case 2:\n cy.findAllByRole('cell', { name: 'Description:' }).should('exist')\n cy.findAllByRole('cell', { name: 'this will succeed' }).should('exist')\n break\n case 3:\n cy.findAllByRole('cell', { name: 'Classification:' }).should('exist')\n cy.findAllByRole('cell', { name: 'OFFICIAL' }).should('exist')\n break\n case 4:\n cy.findAllByRole('cell', { name: 'Requested at:' }).should('exist')\n cy.findAllByRole('cell', { name: /\\d{1,2}\\/\\d{1,2}\\/\\d{2,4}/ }).should('exist')\n break\n case 5:\n cy.findAllByRole('cell', { name: 'Applied Filters:' }).should('exist')\n cy.findAllByRole('listitem').each((item, i) => {\n switch (i) {\n case 0:\n cy.wrap(item).contains('Field 1: value1.2')\n break\n case 1:\n cy.wrap(item).contains('Field 3 start: 01/02/2003')\n break\n case 2:\n cy.wrap(item).contains('Field 3 end: 04/05/2006')\n break\n case 3:\n cy.wrap(item).contains('Field 7: 01/02/2005')\n break\n case 4:\n cy.wrap(item).contains('Field 8: value8.2,value8.3')\n break\n case 5:\n cy.wrap(item).contains('Sort column: Field 1')\n break\n case 6:\n cy.wrap(item).contains('Sort direction: Descending')\n break\n default:\n break\n }\n })\n break\n default:\n break\n }\n })\n })\n })\n })\n })\n\n describe('Actions', () => {\n it('should show the actions and go to the filters page when refresh action is clicked', () => {\n cy.findByLabelText('Refresh report').should('be.visible')\n cy.findByLabelText(/download/).should('be.visible')\n cy.findByLabelText(/Copy report link/).should('be.visible')\n cy.findByRole('button', { name: /Add bookmark/ }).should('be.visible')\n\n cy.findByLabelText('Refresh report').should('be.visible').click()\n cy.url().should(\n 'match',\n /.*\\/embedded\\/platform\\/dpr\\/request-report\\/report\\/request-examples\\/request-example-success\\/filters/i,\n )\n\n cy.location().should((location) => {\n expect(location.search).to.contain(`filters.field1=value1.2`)\n expect(location.search).to.contain(`filters.field3.start=2003-02-01`)\n expect(location.search).to.contain(`filters.field3.end=2006-05-04`)\n expect(location.search).to.contain(`filters.field7=2005-02-01`)\n expect(location.search).to.contain(`filters.field8=value8.2&filters.field8=value8.3`)\n })\n })\n })\n\n describe('Column interactions', () => {\n const expectInitialisedColumns = () => {\n cy.findByRole('checkbox', { name: 'Field 1' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Field 2' }).should('be.checked').should('be.disabled')\n cy.findByRole('checkbox', { name: 'Field 3' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Field 4' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 5' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 6' }).should('be.checked').should('be.disabled')\n cy.findByRole('checkbox', { name: 'Field 7' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Field 8' }).should('not.be.checked')\n\n cy.location().should((location) => {\n expect(location.search).to.contain(`columns=field1`)\n expect(location.search).to.contain(`columns=field2`)\n expect(location.search).to.contain(`columns=field3`)\n expect(location.search).not.to.contain(`columns=field4`)\n expect(location.search).not.to.contain(`columns=field5`)\n expect(location.search).to.contain(`columns=field6`)\n expect(location.search).to.contain(`columns=field7`)\n expect(location.search).not.to.contain(`columns=field8`)\n })\n\n cy.findByLabelText(/Successful Report/).within(() => {\n cy.findAllByRole('rowgroup')\n .eq(0)\n .within(() => {\n cy.findAllByRole('row')\n .eq(1)\n .within(() => {\n cy.findAllByRole('columnheader').should('have.length', 5)\n })\n })\n })\n }\n\n const expectUpdatedColumns = () => {\n cy.findByRole('checkbox', { name: 'Field 1' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 2' }).should('be.checked').should('be.disabled')\n cy.findByRole('checkbox', { name: 'Field 3' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 4' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 5' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Field 6' }).should('be.checked').should('be.disabled')\n cy.findByRole('checkbox', { name: 'Field 7' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 8' }).should('be.checked')\n\n cy.location().should((location) => {\n expect(location.search).not.to.contain(`columns=field1`)\n expect(location.search).to.contain(`columns=field2`)\n expect(location.search).not.to.contain(`columns=field3`)\n expect(location.search).not.to.contain(`columns=field4`)\n expect(location.search).to.contain(`columns=field5`)\n expect(location.search).to.contain(`columns=field6`)\n expect(location.search).not.to.contain(`columns=field7`)\n expect(location.search).to.contain(`columns=field8`)\n })\n\n cy.findByLabelText(/Successful Report/).within(() => {\n cy.findAllByRole('rowgroup')\n .eq(0)\n .within(() => {\n cy.findAllByRole('row')\n .eq(1)\n .within(() => {\n cy.findAllByRole('columnheader').should('have.length', 4)\n })\n })\n })\n }\n\n const setColumnValues = () => {\n cy.findByRole('checkbox', { name: 'Field 1' }).uncheck()\n cy.findByRole('checkbox', { name: 'Field 3' }).uncheck()\n cy.findByRole('checkbox', { name: 'Field 5' }).check()\n cy.findByRole('checkbox', { name: 'Field 7' }).uncheck()\n cy.findByRole('checkbox', { name: 'Field 8' }).check()\n }\n\n it('should initialise the column content correctly', () => {\n cy.findAllByRole('group')\n .contains(/Show columns/)\n .should('be.visible')\n .click()\n expectInitialisedColumns()\n cy.findAllByRole('group').contains('Show columns (5 of 8 shown)')\n cy.findByLabelText(/Successful Report/).within(() => {\n cy.findAllByRole('rowgroup')\n .eq(0)\n .within(() => {\n cy.findAllByRole('columnheader').each((head, index) => {\n switch (index) {\n case 0:\n cy.wrap(head).contains('Field 1')\n break\n case 1:\n cy.wrap(head).contains('Field 2')\n break\n case 2:\n cy.wrap(head).contains('Field 3')\n break\n case 3:\n cy.wrap(head).contains('Field 6')\n break\n case 4:\n cy.wrap(head).contains('Field 7')\n break\n default:\n break\n }\n })\n })\n })\n })\n\n it('should apply the columns', () => {\n cy.findAllByRole('group')\n .contains(/Show columns/)\n .click()\n\n setColumnValues()\n\n cy.findByRole('button', { name: 'Apply columns' }).click()\n\n expectUpdatedColumns()\n\n cy.findByLabelText(/Successful Report/).within(() => {\n cy.findAllByRole('rowgroup')\n .eq(0)\n .within(() => {\n cy.findAllByRole('columnheader').each((head, index) => {\n switch (index) {\n case 0:\n cy.wrap(head).contains('Field 2')\n break\n case 1:\n cy.wrap(head).contains('Field 5')\n break\n case 2:\n cy.wrap(head).contains('Field 6')\n break\n case 3:\n cy.wrap(head).contains('Field 8')\n break\n default:\n break\n }\n })\n })\n })\n })\n\n it('should reset the columns to their DPD defaults', () => {\n cy.findAllByRole('group')\n .contains(/Show columns/)\n .click()\n\n setColumnValues()\n cy.findByRole('button', { name: 'Apply columns' }).click()\n expectUpdatedColumns()\n\n cy.findAllByRole('group')\n .contains(/Show columns/)\n .click()\n\n cy.findByRole('link', { name: 'Reset columns' }).click()\n\n expectInitialisedColumns()\n })\n\n it('should apply the columns from the URL', () => {\n cy.visit(\n `/embedded/platform/dpr/view-report/async/report/request-examples/request-example-success/${tableId}/report?columns=field1&columns=field5&columns=field8`,\n )\n\n cy.findByRole('checkbox', { name: 'Field 1' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Field 2' }).should('be.checked').should('be.disabled')\n cy.findByRole('checkbox', { name: 'Field 3' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 4' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 5' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Field 6' }).should('be.checked').should('be.disabled')\n cy.findByRole('checkbox', { name: 'Field 7' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 8' }).should('be.checked')\n\n cy.findByLabelText(/Successful Report/).within(() => {\n cy.findAllByRole('rowgroup')\n .eq(0)\n .within(() => {\n cy.findAllByRole('columnheader').each((head, index) => {\n switch (index) {\n case 0:\n cy.wrap(head).contains('Field 1')\n break\n case 1:\n cy.wrap(head).contains('Field 2')\n break\n case 2:\n cy.wrap(head).contains('Field 5')\n break\n case 3:\n cy.wrap(head).contains('Field 6')\n break\n case 4:\n cy.wrap(head).contains('Field 8')\n break\n default:\n break\n }\n })\n })\n })\n })\n\n it('should only apply mandatory columms', () => {\n cy.findAllByRole('group')\n .contains(/Show columns/)\n .click()\n\n cy.findByRole('checkbox', { name: 'Field 1' }).uncheck()\n cy.findByRole('checkbox', { name: 'Field 3' }).uncheck()\n cy.findByRole('checkbox', { name: 'Field 7' }).uncheck()\n\n cy.findByRole('button', { name: 'Apply columns' }).click()\n\n cy.findByRole('checkbox', { name: 'Field 1' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 2' }).should('be.checked').should('be.disabled')\n cy.findByRole('checkbox', { name: 'Field 3' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 4' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 5' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 6' }).should('be.checked').should('be.disabled')\n cy.findByRole('checkbox', { name: 'Field 7' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 8' }).should('not.be.checked')\n\n cy.location().should((location) => {\n expect(location.search).not.to.contain(`columns=field1`)\n expect(location.search).to.contain(`columns=field2`)\n expect(location.search).not.to.contain(`columns=field3`)\n expect(location.search).not.to.contain(`columns=field4`)\n expect(location.search).not.to.contain(`columns=field5`)\n expect(location.search).to.contain(`columns=field6`)\n expect(location.search).not.to.contain(`columns=field7`)\n expect(location.search).not.to.contain(`columns=field8`)\n })\n\n cy.findByLabelText(/Successful Report/).within(() => {\n cy.findAllByRole('rowgroup')\n .eq(0)\n .within(() => {\n cy.findAllByRole('row')\n .eq(1)\n .within(() => {\n cy.findAllByRole('columnheader').should('have.length', 2)\n })\n })\n })\n })\n })\n\n describe('Paging interaction', () => {\n it('should show the table totals', () => {\n cy.findAllByRole('paragraph')\n .contains(/Showing \\d{1,4} to \\d{1,4} of \\d{1,4} results/)\n .should('exist')\n cy.findByLabelText(/Successful Report/).within(() => {\n cy.findAllByRole('rowgroup')\n .eq(1)\n .within(() => {\n cy.findAllByRole('row').should('have.length', 20)\n })\n })\n })\n\n it('should change the page size', () => {\n cy.get('#page-size-select').select('10')\n cy.findAllByRole('paragraph')\n .contains(/Showing 1 to 10 of 100 results/)\n .should('exist')\n cy.findByLabelText(/Successful Report/).within(() => {\n cy.findAllByRole('rowgroup')\n .eq(1)\n .within(() => {\n cy.findAllByRole('row').should('have.length', 10)\n })\n })\n })\n\n it('should change the page size via the URL', () => {\n cy.visit(\n `/embedded/platform/dpr/view-report/async/report/request-examples/request-example-success/${tableId}/report?pageSize=100`,\n )\n cy.findAllByRole('paragraph')\n .contains(/100 total results/)\n .should('exist')\n cy.findByLabelText(/Successful Report/).within(() => {\n cy.findAllByRole('rowgroup')\n .eq(1)\n .within(() => {\n cy.findAllByRole('row').should('have.length', 100)\n })\n })\n })\n\n it('should change the page', () => {\n cy.findByLabelText('Page 5').click()\n cy.location().should((location) => {\n expect(location.search).to.contain(`selectedPage=5`)\n })\n })\n\n it('should change the page via the URL', () => {\n cy.visit(\n `/embedded/platform/dpr/view-report/async/report/request-examples/request-example-success/${tableId}/report?selectedPage=3`,\n )\n cy.findByRole('link', { current: 'page' }).contains('3')\n })\n })\n })\n\n describe('Interactive report', () => {\n const applyFilters = () => {\n cy.findByRole('button', { name: 'Apply filters' }).click()\n }\n\n const showFilters = () => {\n cy.findAllByRole('group')\n .contains(/Show filters/)\n .click()\n }\n\n before(() => {\n executeReportStubs()\n cy.task('stubDefinitionFeatureTestingInteractive')\n cy.task('stubAsyncRequestSuccessReportTablesCount')\n cy.task('stubRequestSuccessResult20')\n cy.task('stubRequestSuccessResult100')\n })\n\n describe('Apply filters', () => {\n before(() => {\n requestReport({ name: 'Interactive Report', description: 'this is an interactive report', path })\n cy.url().then((url) => {\n viewReportUrl = url\n })\n })\n\n beforeEach(() => {\n cy.visit(viewReportUrl)\n })\n\n const removeAllFilters = () => {\n for (let index = 0; index < 4; index += 1) {\n cy.findByLabelText('Selected filters').within(() => {\n cy.findAllByRole('link').first().click()\n })\n }\n }\n\n describe('Date range', () => {\n it('should apply the date range', () => {\n cy.findByRole('textbox', { name: 'From' }).should('have.value', '01/02/2003')\n cy.findByRole('textbox', { name: 'To' }).should('have.value', '04/05/2006')\n\n removeAllFilters()\n showFilters()\n\n cy.findByRole('textbox', { name: 'From' }).type('02/05/2025')\n cy.findByRole('textbox', { name: 'To' }).type('05/07/2025').blur()\n\n applyFilters()\n\n cy.location().should((location) => {\n expect(location.search).to.contain(`filters.field3.start=2025-05-02`)\n expect(location.search).to.contain(`filters.field3.end=2025-07-05`)\n })\n\n checkSelectedFilterValues({ length: 2, buttonValues: [{ key: 'Field 3', value: '02/05/2025 - 05/07/2025' }] })\n })\n\n it('should apply the relative daterange', () => {\n removeAllFilters()\n showFilters()\n\n cy.findByRole('tab', { name: 'Preset date ranges' }).click()\n cy.findByRole('radio', { name: 'Tomorrow' }).check()\n\n applyFilters()\n\n let startValue: string | number | string[] | undefined\n let endValue: string | number | string[] | undefined\n cy.findByRole('textbox', { name: 'From' })\n .invoke('val')\n .should('not.be.empty')\n .then((val) => {\n startValue = val\n })\n cy.findByRole('textbox', { name: 'To' })\n .invoke('val')\n .should('not.be.empty')\n .then((val) => {\n endValue = val\n })\n\n const dateMapper = new DateMapper()\n cy.location().should((location) => {\n expect(location.search).to.contain(\n `filters.field3.start=${dateMapper.toDateString(<string>startValue, 'iso')}`,\n )\n expect(location.search).to.contain(`filters.field3.end=${dateMapper.toDateString(<string>endValue, 'iso')}`)\n expect(location.search).to.contain(`filters.field3.relative-duration=tomorrow`)\n })\n\n checkSelectedFilterValues({ length: 2, buttonValues: [{ key: 'Field 3', value: 'Tomorrow' }] })\n })\n })\n\n describe('Multiselect', () => {\n it('should apply the multiselect values', () => {\n cy.findByRole('checkbox', { name: 'Value 8.2' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.3' }).should('be.checked')\n\n removeAllFilters()\n\n cy.findByRole('checkbox', { name: 'Value 8.1' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.2' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.3' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.4' }).should('not.be.checked')\n\n showFilters()\n\n cy.findByRole('checkbox', { name: 'Value 8.1' }).check()\n cy.findByRole('checkbox', { name: 'Value 8.3' }).check()\n\n applyFilters()\n\n cy.findByRole('checkbox', { name: 'Value 8.1' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.2' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.3' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.4' }).should('not.be.checked')\n\n checkSelectedFilterValues({ length: 2, buttonValues: [{ key: 'Field 8', value: 'Value 8.1, Value 8.3' }] })\n })\n\n it('should set the selected filter values correctly', () => {\n cy.findByRole('checkbox', { name: 'Value 8.2' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.3' }).should('be.checked')\n\n removeAllFilters()\n\n cy.findByRole('checkbox', { name: 'Value 8.1' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.2' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.3' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.4' }).should('not.be.checked')\n\n showFilters()\n\n cy.findByRole('checkbox', { name: 'Value 8.1' }).check()\n cy.findByRole('checkbox', { name: 'Value 8.2' }).check()\n cy.findByRole('checkbox', { name: 'Value 8.3' }).check()\n cy.findByRole('checkbox', { name: 'Value 8.4' }).check()\n\n applyFilters()\n\n cy.findByRole('checkbox', { name: 'Value 8.1' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.2' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.3' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.4' }).should('be.checked')\n\n checkSelectedFilterValues({\n length: 2,\n buttonValues: [{ key: 'Field 8', value: 'Value 8.1, Value 8.2, Value 8.3 + 1 more' }],\n })\n })\n\n it('should set the values correctly when only one checkbox selected', () => {\n removeAllFilters()\n\n cy.findByRole('checkbox', { name: 'Value 8.1' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.2' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.3' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.4' }).should('not.be.checked')\n\n showFilters()\n\n cy.findByRole('checkbox', { name: 'Value 8.1' }).check()\n\n applyFilters()\n\n cy.findByRole('checkbox', { name: 'Value 8.1' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.2' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.3' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.4' }).should('not.be.checked')\n\n checkSelectedFilterValues({\n length: 2,\n buttonValues: [{ key: 'Field 8', value: 'Value 8.1' }],\n })\n })\n })\n\n it('Applying filters should persist current applied columns', () => {\n cy.findAllByRole('group')\n .contains(/Show columns/)\n .should('be.visible')\n .click()\n\n cy.findByRole('checkbox', { name: 'Field 1' }).uncheck()\n cy.findByRole('checkbox', { name: 'Field 3' }).uncheck()\n cy.findByRole('checkbox', { name: 'Field 5' }).check()\n cy.findByRole('checkbox', { name: 'Field 7' }).uncheck()\n cy.findByRole('checkbox', { name: 'Field 8' }).check()\n\n cy.findByRole('button', { name: 'Apply columns' }).click()\n cy.findAllByRole('group').contains('Show columns (4 of 8 shown)')\n\n showFilters()\n cy.findByRole('checkbox', { name: 'Value 8.1' }).check()\n cy.findByRole('checkbox', { name: 'Value 8.3' }).check()\n applyFilters()\n\n cy.findAllByRole('group').contains('Show columns (4 of 8 shown)')\n })\n })\n\n describe('User defined interactive defaults', () => {\n const saveDefaultsButton = () => {\n return cy.findByRole('button', { name: 'Save current filter values as defaults' })\n }\n const updateDefaultsButton = () => {\n return cy.findByRole('button', { name: 'Update defaults' })\n }\n const deleteDefaultsButton = () => {\n return cy.findByRole('button', { name: 'Delete defaults' })\n }\n\n const checkSelectedFiltersInUserReports = ({\n name,\n product,\n length,\n selectedFilters,\n }: {\n name: string\n product: string\n length: number\n selectedFilters: { key: string; value: string }[]\n }) => {\n cy.findByLabelText(/Viewed \\(/).within(() => {\n cy.findByRole('row', {\n name: (_, element) => {\n return Boolean(element.textContent?.includes(name)) && Boolean(element.textContent?.includes(product))\n },\n }).within(() => {\n cy.findAllByRole('listitem')\n .should('have.length', length)\n .each((li, index) => {\n if (selectedFilters[index]) {\n const { key, value } = selectedFilters[index]\n cy.wrap(li).contains(key)\n cy.wrap(li).contains(value)\n }\n })\n })\n })\n }\n\n it('should save the interactive filters correctly', () => {\n // request the report\n requestReport({ name: 'Interactive Report', description: 'this is an interactive report', path })\n\n // check the default filters\n checkSelectedFilterValues({\n length: 5,\n buttonValues: [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.2, Value 8.3' },\n ],\n })\n\n // update the filters\n showFilters()\n cy.findByRole('checkbox', { name: 'Value 8.1' }).check()\n cy.findByRole('checkbox', { name: 'Value 8.4' }).check()\n cy.findByRole('combobox', { name: 'Field 2' }).select('value2.2')\n applyFilters()\n\n const selectedFiltersButtonValues = [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 2', value: 'Value 2.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.1, Value 8.2, Value 8.3 + 1 more' },\n ]\n checkSelectedFilterValues({\n length: 6,\n buttonValues: selectedFiltersButtonValues,\n })\n\n // save the filters\n saveDefaultsButton().click()\n\n // check for saved page furniture\n updateDefaultsButton().should('exist')\n deleteDefaultsButton().should('exist')\n\n // check the selected filters\n checkSelectedFilterValues({\n length: 6,\n buttonValues: selectedFiltersButtonValues,\n })\n })\n\n it('should init the report with saved interactive defaults', () => {\n // request the report\n requestReport({ name: 'Interactive Report', description: 'this is an interactive report', path })\n cy.url().then((url) => {\n viewReportUrl = url\n })\n\n // check saved defaults page furniture\n updateDefaultsButton().should('exist')\n deleteDefaultsButton().should('exist')\n\n const selectedFiltersButtonValues = [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 2', value: 'Value 2.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.1, Value 8.2, Value 8.3 + 1 more' },\n ]\n checkSelectedFilterValues({\n length: 6,\n buttonValues: selectedFiltersButtonValues,\n })\n\n cy.visit(path)\n cy.findByRole('tab', { name: /Viewed/ }).click()\n checkSelectedFiltersInUserReports({\n name: 'Interactive Report',\n product: 'Interactive Report',\n length: 5,\n selectedFilters: selectedFiltersButtonValues,\n })\n })\n\n it('should reset the filter values to the saved defaults', () => {\n cy.visit(viewReportUrl)\n\n // check saved defaults page furniture\n updateDefaultsButton().should('exist')\n deleteDefaultsButton().should('exist')\n\n const savedDefaultSelectedFilters = [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 2', value: 'Value 2.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.1, Value 8.2, Value 8.3 + 1 more' },\n ]\n checkSelectedFilterValues({\n length: 6,\n buttonValues: savedDefaultSelectedFilters,\n })\n\n // apply some filters\n showFilters()\n cy.findByRole('checkbox', { name: 'Value 8.1' }).uncheck()\n cy.findByRole('checkbox', { name: 'Value 8.3' }).uncheck()\n cy.findByRole('combobox', { name: 'Field 2' }).select('value2.3')\n applyFilters()\n\n checkSelectedFilterValues({\n length: 6,\n buttonValues: [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 2', value: 'Value 2.3' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.4' },\n ],\n })\n\n cy.visit(path)\n cy.findByRole('tab', { name: /Viewed/ }).click()\n checkSelectedFiltersInUserReports({\n name: 'Interactive Report',\n product: 'Interactive Report',\n length: 5,\n selectedFilters: [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 2', value: 'Value 2.3' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.4' },\n ],\n })\n\n cy.visit(viewReportUrl)\n\n cy.findByRole('link', { name: 'Reset filters' }).click()\n\n checkSelectedFilterValues({\n length: 6,\n buttonValues: savedDefaultSelectedFilters,\n })\n\n cy.visit(path)\n cy.findByRole('tab', { name: /Viewed/ }).click()\n checkSelectedFiltersInUserReports({\n name: 'Interactive Report',\n product: 'Interactive Report',\n length: 5,\n selectedFilters: savedDefaultSelectedFilters,\n })\n })\n\n it('should update the filter values and init the report with the updated interactive defaults', () => {\n cy.visit(viewReportUrl)\n\n // check saved defaults page furniture\n updateDefaultsButton().should('exist')\n deleteDefaultsButton().should('exist')\n\n checkSelectedFilterValues({\n length: 6,\n buttonValues: [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 2', value: 'Value 2.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.1, Value 8.2, Value 8.3 + 1 more' },\n ],\n })\n\n // apply some filters\n showFilters()\n cy.findByRole('checkbox', { name: 'Value 8.1' }).uncheck()\n cy.findByRole('checkbox', { name: 'Value 8.3' }).uncheck()\n cy.findByRole('combobox', { name: 'Field 2' }).select('value2.3')\n applyFilters()\n\n const expectedSelectedValues = [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 2', value: 'Value 2.3' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.2, Value 8.4' },\n ]\n\n checkSelectedFilterValues({\n length: 6,\n buttonValues: expectedSelectedValues,\n })\n\n updateDefaultsButton().click()\n\n checkSelectedFilterValues({\n length: 6,\n buttonValues: expectedSelectedValues,\n })\n\n requestReport({ name: 'Interactive Report', description: 'this is an interactive report', path })\n cy.url().then((url) => {\n viewReportUrl = url\n })\n\n // check the initial filter values match the default\n checkSelectedFilterValues({\n length: 6,\n buttonValues: expectedSelectedValues,\n })\n\n // check saved defaults page furniture\n updateDefaultsButton().should('exist')\n deleteDefaultsButton().should('exist')\n\n cy.visit(path)\n cy.findByRole('tab', { name: /Viewed/ }).click()\n checkSelectedFiltersInUserReports({\n name: 'Interactive Report',\n product: 'Interactive Report',\n length: 5,\n selectedFilters: expectedSelectedValues,\n })\n })\n\n it('should delete the saved defaults', () => {\n cy.visit(viewReportUrl)\n\n checkSelectedFilterValues({\n length: 6,\n buttonValues: [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 2', value: 'Value 2.3' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.2, Value 8.4' },\n ],\n })\n\n deleteDefaultsButton().click()\n\n // Expect DPD defaults to be applied\n checkSelectedFilterValues({\n length: 5,\n buttonValues: [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.2, Value 8.3' },\n ],\n })\n\n cy.visit(path)\n cy.findByRole('tab', { name: /Viewed/ }).click()\n checkSelectedFiltersInUserReports({\n name: 'Interactive Report',\n product: 'Interactive Report',\n length: 4,\n selectedFilters: [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.2, Value 8.3' },\n ],\n })\n })\n\n describe('Input types', () => {\n describe('Relative date range', () => {\n it('should save the relative daterange', () => {\n // request the report\n requestReport({ name: 'Interactive Report', description: 'this is an interactive report', path })\n\n checkSelectedFilterValues({\n length: 5,\n buttonValues: [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.2, Value 8.3' },\n ],\n })\n\n // update the filters\n showFilters()\n cy.findByRole('tab', { name: 'Preset date ranges' }).click()\n cy.findByRole('radio', { name: 'Tomorrow' }).check()\n applyFilters()\n\n const expectedUpdatedSelected = [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 3', value: 'Tomorrow' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.2, Value 8.3' },\n ]\n\n checkSelectedFilterValues({\n length: 5,\n buttonValues: expectedUpdatedSelected,\n })\n\n // save the filters\n saveDefaultsButton().click()\n\n // check for saved page furniture\n updateDefaultsButton().should('exist')\n deleteDefaultsButton().should('exist')\n\n // check the selected filters\n checkSelectedFilterValues({\n length: 5,\n buttonValues: expectedUpdatedSelected,\n })\n\n // request the report to check it defaults to saved\n requestReport({ name: 'Interactive Report', description: 'this is an interactive report', path })\n\n // check the selected filters\n checkSelectedFilterValues({\n length: 5,\n buttonValues: expectedUpdatedSelected,\n })\n\n deleteDefaultsButton().click()\n })\n })\n\n describe('Multiselect', () => {\n it('should save a single multiselect value', () => {\n // request the report\n requestReport({ name: 'Interactive Report', description: 'this is an interactive report', path })\n\n checkSelectedFilterValues({\n length: 5,\n buttonValues: [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.2, Value 8.3' },\n ],\n })\n\n // update the filters\n showFilters()\n cy.findByRole('checkbox', { name: 'Value 8.3' }).uncheck()\n applyFilters()\n\n const expectedUpdatedSelected = [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.2' },\n ]\n\n checkSelectedFilterValues({\n length: 5,\n buttonValues: expectedUpdatedSelected,\n })\n\n // save the filters\n saveDefaultsButton().click()\n\n // check for saved page furniture\n updateDefaultsButton().should('exist')\n deleteDefaultsButton().should('exist')\n\n // check the selected filters\n checkSelectedFilterValues({\n length: 5,\n buttonValues: expectedUpdatedSelected,\n })\n\n // request the report to check it defaults to saved\n requestReport({ name: 'Interactive Report', description: 'this is an interactive report', path })\n\n // check the selected filters\n checkSelectedFilterValues({\n length: 5,\n buttonValues: expectedUpdatedSelected,\n })\n\n deleteDefaultsButton().click()\n })\n })\n })\n })\n\n describe('Sorting', () => {\n before(() => {\n requestReport({ name: 'Interactive Report', description: 'this is an interactive report', path })\n cy.url().then((url) => {\n viewReportUrl = url\n })\n })\n\n beforeEach(() => {\n cy.visit(viewReportUrl)\n })\n\n it('should show the sort direction in the column header and the url', () => {\n cy.findByRole('link', { name: 'Reset filters' }).click()\n\n // Initial state\n cy.findByRole('link', { name: 'Field 1' }).should('have.class', 'data-table-header-button-sort-ascending')\n cy.findByRole('link', { name: 'Field 2' }).should('have.class', 'data-table-header-button-sort-none')\n\n // Sort desc by field 1\n cy.findByRole('link', { name: 'Field 1' }).click()\n cy.findByRole('link', { name: 'Field 1' }).should('have.class', 'data-table-header-button-sort-descending')\n cy.findByRole('link', { name: 'Field 2' }).should('have.class', 'data-table-header-button-sort-none')\n cy.location().should((location) => {\n expect(location.search).to.contain(`&sortColumn=field1&sortedAsc=false`)\n expect(location.search).to.contain(`filters.field8=value8.2&filters.field8=value8.3`)\n })\n\n // Sort asc by field 1\n cy.findByRole('link', { name: 'Field 1' }).click()\n cy.findByRole('link', { name: 'Field 1' }).should('have.class', 'data-table-header-button-sort-ascending')\n cy.findByRole('link', { name: 'Field 2' }).should('have.class', 'data-table-header-button-sort-none')\n cy.location().should((location) => {\n expect(location.search).to.contain(`&sortColumn=field1&sortedAsc=true`)\n expect(location.search).to.contain(`filters.field8=value8.2&filters.field8=value8.3`)\n })\n\n // Sort asc by field 2\n cy.findByRole('link', { name: 'Field 2' }).click()\n cy.findByRole('link', { name: 'Field 2' }).should('have.class', 'data-table-header-button-sort-ascending')\n cy.findByRole('link', { name: 'Field 1' }).should('have.class', 'data-table-header-button-sort-none')\n cy.location().should((location) => {\n expect(location.search).to.contain(`&sortColumn=field2&sortedAsc=true`)\n expect(location.search).to.contain(`filters.field8=value8.2&filters.field8=value8.3`)\n })\n\n // Sort desc by field 2\n cy.findByRole('link', { name: 'Field 2' }).click()\n cy.findByRole('link', { name: 'Field 2' }).should('have.class', 'data-table-header-button-sort-descending')\n cy.findByRole('link', { name: 'Field 1' }).should('have.class', 'data-table-header-button-sort-none')\n cy.location().should((location) => {\n expect(location.search).to.contain(`&sortColumn=field2&sortedAsc=false`)\n expect(location.search).to.contain(`filters.field8=value8.2&filters.field8=value8.3`)\n })\n })\n })\n })\n})\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": ["DateMapper"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../../../../dpr/routes/journeys/view-report/async/report/types.ts"],
|
|
4
4
|
"sourcesContent": ["import { components } from '../../../../../types/api'\nimport Dict = NodeJS.Dict\nimport { AsyncReportUrlItemData } from '../../../../../types/UserReports'\n\nexport interface ReportUrls {\n reportUrl: string\n reportSearch?: string | undefined\n encodedSearch?: string | undefined\n pathname: string\n}\n\nexport interface ExtractedDefinitionData {\n reportName: string\n name: string\n description: string | undefined\n classification: string | undefined\n printable: boolean\n specification: components['schemas']['Specification']\n template: string\n fields: components['schemas']['FieldDefinition'][]\n}\n\nexport interface ExtractedRequestData {\n executionId?: string | undefined\n requestedTimestamp?: string | undefined\n querySummary: Dict<string>[]\n queryData?: Dict<string | string[]> | undefined\n requestUrl?: AsyncReportUrlItemData | undefined\n defaultQuery?: string | undefined\n dataProductDefinitionsPath?: string | undefined\n}\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
|
|
6
6
|
"names": []
|
|
@@ -96,8 +96,8 @@ const initReportQuery = async (definition, columns, res, req, services, requestD
|
|
|
96
96
|
res,
|
|
97
97
|
services
|
|
98
98
|
});
|
|
99
|
-
const sortColumn = req.query?.["sortColumn"] || requestData?.
|
|
100
|
-
const sortedAsc = req.query?.["sortedAsc"] || requestData?.
|
|
99
|
+
const sortColumn = req.query?.["sortColumn"] || requestData?.sortBy?.data?.["sortColumn"];
|
|
100
|
+
const sortedAsc = req.query?.["sortedAsc"] || requestData?.sortBy?.data?.["sortedAsc"];
|
|
101
101
|
const selectedPage = req.query?.["selectedPage"];
|
|
102
102
|
const pageSize = req.query?.["pageSize"];
|
|
103
103
|
const filtersQuery = import_utils3.default.setRequestQueryFromFilterValues(filtersData.filters);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
4
|
-
"sourcesContent": ["import parseUrl from 'parseurl'\nimport { Url } from 'url'\nimport { Request, Response } from 'express'\n\n// Types\nimport type { Columns } from '../../../../../components/_reports/report-columns-form/types'\nimport type { AsyncReportUtilsParams } from '../../../../../types/AsyncReportUtils'\nimport type { DataTable } from '../../../../../utils/DataTableBuilder/types'\nimport type { components } from '../../../../../types/api'\nimport type { AsyncSummary, RequestedReport } from '../../../../../types/UserReports'\nimport { LoadType, ReportType } from '../../../../../types/UserReports'\nimport ReportQuery from '../../../../../types/ReportQuery'\nimport type { ChildData } from '../../../../../utils/ParentChildDataTableBuilder/types'\nimport type { ExtractedDefinitionData, ExtractedRequestData, ReportUrls } from './types'\nimport type { DownloadActionParams } from '../../../../../components/_reports/report-actions/types'\nimport { FiltersType } from '../../../../../components/_filters/filtersTypeEnum'\nimport type { Services } from '../../../../../types/Services'\n\n// Utils\nimport definitionUtils from '../../../../../utils/definitionUtils'\nimport PaginationUtils from '../../../../../components/_reports/report-pagination/utils'\nimport TotalsUtils from '../../../../../components/_reports/report-totals/utils'\nimport ReportFiltersUtils from '../../../../../components/_filters/utils'\nimport ColumnUtils from '../../../../../components/_reports/report-columns-form/utils'\nimport ReportActionsUtils from '../../../../../components/_reports/report-actions/utils'\nimport UserReportsUtils from '../../../../../components/user-reports/utils'\nimport LocalsHelper from '../../../../../utils/localsHelper'\nimport DataTableUtils from '../../../../../components/_reports/report-data-table/utils'\nimport RequestedReportService from '../../../my-reports/requested-reports/service'\n\nimport CollatedSummaryBuilder from '../../../../../utils/CollatedSummaryBuilder/CollatedSummaryBuilder'\n\nexport const getData = async ({\n res,\n req,\n services,\n token,\n userId,\n}: AsyncReportUtilsParams & { token: string; userId: string }) => {\n const { definitionsPath: definitionPath } = LocalsHelper.getValues(res)\n const { reportId, variantId, id, tableId } = req.params\n const reportVariantId = variantId || id\n\n // Get the request data\n const requestedReportService = <RequestedReportService>services.requestedReportService\n const requestData: RequestedReport | undefined = await requestedReportService.getReportByTableId(tableId, userId)\n const queryData = requestData?.query?.data\n\n // Get the definition\n const definition: components['schemas']['SingleVariantReportDefinition'] =\n await services.reportingService.getDefinition(token, reportId, reportVariantId, definitionPath, queryData)\n const { variant } = definition\n const { specification } = variant\n\n if (!specification) {\n throw new Error('No specification found in variant definition')\n }\n\n // Get the columns\n const columns = ColumnUtils.getColumns(specification, req)\n\n // initialise report query\n const reportQuery = await initReportQuery(definition, columns, res, req, services, requestData)\n\n // Get the reportData\n const reportData = await getReportData({ definition, services, token, req, res, reportQuery })\n\n // Get the summary data, if applicable\n const { summaries } = definition.variant\n const summariesData = !summaries ? [] : await getSummariesData(summaries, services, token, req, res)\n\n // Get the child data, if applicable\n const { childVariants } = definition.variant\n const childData: ChildData[] = !childVariants\n ? []\n : await getChildData(childVariants, services, token, req, res, requestData)\n\n return {\n definition,\n requestData,\n reportData,\n summariesData,\n childData,\n reportQuery,\n columns,\n }\n}\n\nconst initReportQuery = async (\n definition: components['schemas']['SingleVariantReportDefinition'],\n columns: Columns,\n res: Response,\n req: Request,\n services: Services,\n requestData?: RequestedReport,\n) => {\n const { definitionsPath } = LocalsHelper.getValues(res)\n const fields = definitionUtils.getFields(definition)\n const template = definitionUtils.getTemplate(definition)\n\n const filtersData = await ReportFiltersUtils.getFilters({\n fields,\n req,\n filtersType: FiltersType.INTERACTIVE,\n res,\n services,\n })\n\n // Sort\n const sortColumn = req.query?.['sortColumn'] || requestData?.query?.data?.['sortColumn']\n const sortedAsc = req.query?.['sortedAsc'] || requestData?.query?.data?.['sortedAsc']\n\n // Pagination\n const selectedPage = req.query?.['selectedPage']\n const pageSize = req.query?.['pageSize']\n\n // Filters\n const filtersQuery = ReportFiltersUtils.setRequestQueryFromFilterValues(filtersData.filters)\n\n const queryParams = {\n ...(sortColumn && { sortColumn }),\n ...(sortedAsc && { sortedAsc }),\n ...filtersQuery,\n ...(pageSize && { pageSize }),\n ...(selectedPage && { selectedPage }),\n ...(columns && { columns: columns.value }),\n }\n\n return new ReportQuery({\n fields,\n template,\n queryParams,\n definitionsPath,\n })\n}\n\nconst getReportData = async (args: {\n definition: components['schemas']['SingleVariantReportDefinition']\n services: Services\n token: string\n req: Request\n res: Response\n reportQuery: ReportQuery\n}) => {\n const { services, token, req, reportQuery } = args\n const { reportId, variantId, id, tableId } = req.params\n const reportVariantId = variantId || id\n\n return services.reportingService.getAsyncReport(\n token,\n reportId,\n reportVariantId,\n tableId,\n reportQuery.toRecordWithFilterPrefix(true),\n )\n}\n\nexport const getSummariesData = async (\n summaries: components['schemas']['ReportSummary'][],\n services: Services,\n token: string,\n req: Request,\n res: Response,\n): Promise<AsyncSummary[]> => {\n const { reportId, variantId, id, tableId } = req.params\n const { definitionsPath: dataProductDefinitionsPath } = LocalsHelper.getValues(res)\n const reportVariantId = variantId || id\n\n return Promise.all(\n summaries.map(async (summary) => {\n const summaryReport = await services.reportingService.getAsyncSummaryReport(\n token,\n reportId,\n reportVariantId,\n tableId,\n summary.id,\n {\n dataProductDefinitionsPath,\n },\n )\n\n return {\n ...summary,\n data: summaryReport,\n }\n }),\n )\n}\n\nexport const getChildData = async (\n childVariants: components['schemas']['ChildVariantDefinition'][],\n services: Services,\n token: string,\n req: Request,\n res: Response,\n requestData?: RequestedReport,\n): Promise<ChildData[]> => {\n const { definitionsPath: dataProductDefinitionsPath } = LocalsHelper.getValues(res)\n const { reportId } = req.params\n const childExecutionData = requestData?.childExecutionData\n if (!childExecutionData) {\n throw new Error('getChildData: No execution data found for child variants')\n }\n return Promise.all(\n childVariants.map(async (childVariant) => {\n const { specification } = childVariant\n if (!specification) {\n throw new Error('getChildData: No specification found in child variant definition')\n }\n\n const query = new ReportQuery({\n fields: specification?.fields || [],\n template: 'parent-child',\n queryParams: req.query,\n definitionsPath: dataProductDefinitionsPath,\n }).toRecordWithFilterPrefix(true)\n\n const childData = childExecutionData.find((e) => e.variantId === childVariant.id)\n if (!childData || !childData.tableId) {\n throw new Error('getChildData: No matching child execution data found')\n }\n const { tableId: childTableId } = childData\n\n const childReport = await services.reportingService.getAsyncReport(\n token,\n reportId,\n childVariant.id,\n childTableId,\n query,\n )\n\n return {\n id: childVariant.id,\n data: childReport,\n }\n }),\n )\n}\n\n/**\n * Entry point function to render the report\n *\n * @param {AsyncReportUtilsParams} { req, res, services }\n * @return {*}\n */\nexport const renderReport = async ({ req, res, services }: AsyncReportUtilsParams) => {\n const { token, dprUser } = LocalsHelper.getValues(res)\n\n // Get the report data\n const { definition, requestData, reportData, childData, summariesData, reportQuery, columns } = await getData({\n req,\n res,\n services,\n token,\n userId: dprUser.id,\n })\n\n // Get the data table\n const dataTable: DataTable[] = DataTableUtils.createDataTable(\n definition,\n columns,\n reportData,\n childData,\n summariesData,\n reportQuery,\n )\n\n // Get the template data\n const templateData = await getTemplateData(\n req,\n res,\n services,\n definition,\n summariesData,\n dataTable,\n columns,\n reportQuery,\n requestData,\n )\n\n const renderData = {\n ...templateData,\n dataTable,\n }\n\n if (requestData && Object.keys(requestData).length) {\n UserReportsUtils.updateLastViewed({\n req,\n services,\n reportStateData: requestData,\n userId: dprUser.id,\n filters: templateData.filterData.filters,\n })\n }\n\n return { renderData }\n}\n\nconst getTemplateData = async (\n req: Request,\n res: Response,\n services: Services,\n definition: components['schemas']['SingleVariantReportDefinition'],\n summariesData: AsyncSummary[],\n dataTable: DataTable[],\n columns: Columns,\n reportQuery: ReportQuery,\n requestData?: RequestedReport,\n) => {\n const { nestedBaseUrl } = LocalsHelper.getValues(res)\n\n // get url data\n const url = parseUrl(req)\n if (!url) {\n throw new Error('Unable to set url data from request')\n }\n\n const urls = url ? setUrls(url, req) : undefined\n\n // get from definition\n const definitionData = extractDataFromDefinition(definition)\n const { fields, specification } = definitionData\n\n // get from requestedData\n const requestedData = requestData ? extractDataFromRequest(requestData) : undefined\n\n // Get the count\n const count = await getCount(definition, services, res, req, reportQuery)\n\n // Get the filters\n const filterData = await ReportFiltersUtils.getFilters({\n fields,\n req,\n res,\n services,\n filtersType: FiltersType.INTERACTIVE,\n })\n\n // Set the features\n const features = await setFeatures(services, res, req, columns, definitionData, requestedData, urls)\n\n // Set the extra meta data\n const meta = setMetaData(res, req)\n\n let reportSummaries\n if (summariesData.length) {\n const collatedSummaryBuilder = new CollatedSummaryBuilder(specification, summariesData)\n reportSummaries = collatedSummaryBuilder.collatePageSummaries()\n }\n\n let pagination\n let totals\n if (definitionData.template === 'list') {\n pagination = PaginationUtils.getPaginationData(url, count, req)\n const { pageSize, currentPage, totalRows } = pagination\n totals = TotalsUtils.getTotals(pageSize, currentPage, totalRows, dataTable[0].rowCount)\n }\n\n return {\n ...(showColumns(specification) && { columns }),\n filterData,\n count,\n nestedBaseUrl,\n ...meta,\n ...features,\n ...definitionData,\n ...requestedData,\n ...urls,\n ...(pagination && { pagination }),\n ...(totals && { totals }),\n ...(reportSummaries && { reportSummaries }),\n }\n}\n\nconst showColumns = (specification: components['schemas']['Specification']) => {\n const { template } = specification\n\n return !['row-section', 'row-section-child', 'summary', 'summary-section'].includes(template)\n}\n\nconst setMetaData = (res: Response, req: Request) => {\n const { csrfToken } = LocalsHelper.getValues(res)\n const { tableId, reportId, id } = req.params\n\n return {\n csrfToken,\n loadType: LoadType.ASYNC,\n type: ReportType.REPORT,\n tableId,\n reportId,\n id,\n }\n}\n\nconst setUrls = (url: Url, req: Request): ReportUrls => {\n const { search } = url\n const encodedSearch = search ? encodeURIComponent(search) : undefined\n const pathname = search ? req.originalUrl.split(search)[0] : req.originalUrl\n const reportUrl = pathname.replace('/download-disabled', '').replace('/download-disabled?', '')\n\n return {\n reportUrl,\n reportSearch: search || undefined,\n encodedSearch,\n pathname,\n }\n}\n\nconst setFeatures = async (\n services: Services,\n res: Response,\n req: Request,\n columns: Columns,\n definitionData: ExtractedDefinitionData,\n requestData?: ExtractedRequestData,\n urls?: ReportUrls,\n) => {\n const { csrfToken, dprUser, bookmarkingEnabled, downloadingEnabled } = LocalsHelper.getValues(res)\n const { reportId, id } = req.params\n const { downloadPermissionService, bookmarkService } = services\n\n let canDownload = false\n if (downloadingEnabled) {\n canDownload = await downloadPermissionService.downloadEnabledForReport(dprUser.id, reportId, id)\n }\n\n let bookmarked\n if (bookmarkingEnabled) {\n bookmarked = await bookmarkService.isBookmarked(id, reportId, dprUser.id)\n }\n\n const actions = setActions(csrfToken, columns, canDownload, res, req, definitionData, requestData, urls)\n\n return {\n actions,\n canDownload,\n bookmarked,\n }\n}\n\nconst getCount = async (\n definition: components['schemas']['SingleVariantReportDefinition'],\n services: Services,\n res: Response,\n req: Request,\n reportQuery: ReportQuery,\n) => {\n const { token } = LocalsHelper.getValues(res)\n const { tableId, reportId, id } = req.params\n\n return !definition.variant.interactive\n ? services.reportingService.getAsyncCount(token, tableId)\n : services.reportingService.getAsyncInteractiveCount(token, tableId, reportId, id, reportQuery)\n}\n\nconst extractDataFromDefinition = (\n definition: components['schemas']['SingleVariantReportDefinition'],\n): ExtractedDefinitionData => {\n const { variant, name: reportName, description: reportDescription } = definition\n const { classification, printable, specification, name, description } = variant\n if (!specification) {\n throw new Error('No specification found in variant definition')\n }\n const { template, fields } = specification\n\n return {\n reportName,\n name,\n description: description || reportDescription,\n classification,\n printable: Boolean(printable),\n specification,\n template,\n fields,\n }\n}\n\nconst extractDataFromRequest = (requestData: RequestedReport): ExtractedRequestData => {\n const { query, url, timestamp } = requestData\n\n return {\n executionId: requestData.executionId,\n requestedTimestamp: timestamp.requested ? new Date(timestamp.requested).toLocaleString() : undefined,\n querySummary: query?.summary || [],\n queryData: query?.data,\n requestUrl: url?.request,\n defaultQuery: url?.report?.default,\n dataProductDefinitionsPath: requestData.dataProductDefinitionsPath,\n }\n}\n\nconst setActions = (\n csrfToken: string,\n columns: Columns,\n canDownload: boolean,\n res: Response,\n req: Request,\n definitionData: ExtractedDefinitionData,\n requestData?: ExtractedRequestData,\n urls?: ReportUrls,\n) => {\n const { reportName, name, printable } = definitionData\n const { tableId, id, reportId } = req.params\n const { nestedBaseUrl, definitionsPath, downloadingEnabled } = LocalsHelper.getValues(res)\n\n // DownloadActionParams\n let downloadConfig: DownloadActionParams | undefined\n if (urls && downloadingEnabled) {\n downloadConfig = {\n enabled: downloadingEnabled,\n name,\n reportName,\n csrfToken,\n reportId,\n id,\n tableId,\n columns: columns.value,\n definitionPath: definitionsPath,\n loadType: LoadType.ASYNC,\n nestedBaseUrl,\n canDownload,\n currentUrl: urls.pathname,\n currentQueryParams: urls.reportSearch,\n ...(requestData?.queryData && {\n sortColumn: <string>requestData.queryData['sortColumn'],\n sortedAsc: <string>requestData.queryData['sortedAsc'],\n }),\n }\n }\n\n let shareConfig\n let copyConfig\n if (requestData?.requestUrl?.fullUrl) {\n shareConfig = {\n reportName,\n name,\n url: requestData.requestUrl.fullUrl,\n }\n copyConfig = {\n url: requestData.requestUrl.fullUrl,\n }\n }\n\n let refreshConfig\n if (requestData?.executionId && requestData?.requestUrl?.fullUrl) {\n refreshConfig = {\n url: requestData.requestUrl.fullUrl,\n executionId: requestData.executionId,\n }\n }\n\n return ReportActionsUtils.getActions({\n ...(downloadConfig && { download: downloadConfig }),\n ...(shareConfig && { share: shareConfig }),\n ...(refreshConfig && { refresh: refreshConfig }),\n ...(copyConfig && { copy: copyConfig }),\n print: { enabled: printable },\n })\n}\n\nexport default {\n renderReport,\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAqB;AAUrB,yBAAqC;AACrC,yBAAwB;AAIxB,6BAA4B;AAI5B,6BAA4B;AAC5B,mBAA4B;AAC5B,IAAAA,gBAAwB;AACxB,IAAAA,gBAA+B;AAC/B,IAAAA,gBAAwB;AACxB,IAAAA,gBAA+B;AAC/B,IAAAA,gBAA6B;AAC7B,0BAAyB;AACzB,IAAAA,gBAA2B;AAG3B,oCAAmC;AAE5B,MAAM,UAAU,OAAO;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAkE;AAChE,QAAM,EAAE,iBAAiB,eAAe,IAAI,oBAAAC,QAAa,UAAU,GAAG;AACtE,QAAM,EAAE,UAAU,WAAW,IAAI,QAAQ,IAAI,IAAI;AACjD,QAAM,kBAAkB,aAAa;AAGrC,QAAM,yBAAiD,SAAS;AAChE,QAAM,cAA2C,MAAM,uBAAuB,mBAAmB,SAAS,MAAM;AAChH,QAAM,YAAY,aAAa,OAAO;AAGtC,QAAM,aACJ,MAAM,SAAS,iBAAiB,cAAc,OAAO,UAAU,iBAAiB,gBAAgB,SAAS;AAC3G,QAAM,EAAE,QAAQ,IAAI;AACpB,QAAM,EAAE,cAAc,IAAI;AAE1B,MAAI,CAAC,eAAe;AAClB,UAAM,IAAI,MAAM,8CAA8C;AAAA,EAChE;AAGA,QAAM,UAAU,cAAAC,QAAY,WAAW,eAAe,GAAG;AAGzD,QAAM,cAAc,MAAM,gBAAgB,YAAY,SAAS,KAAK,KAAK,UAAU,WAAW;AAG9F,QAAM,aAAa,MAAM,cAAc,EAAE,YAAY,UAAU,OAAO,KAAK,KAAK,YAAY,CAAC;AAG7F,QAAM,EAAE,UAAU,IAAI,WAAW;AACjC,QAAM,gBAAgB,CAAC,YAAY,CAAC,IAAI,MAAM,iBAAiB,WAAW,UAAU,OAAO,KAAK,GAAG;AAGnG,QAAM,EAAE,cAAc,IAAI,WAAW;AACrC,QAAM,YAAyB,CAAC,gBAC5B,CAAC,IACD,MAAM,aAAa,eAAe,UAAU,OAAO,KAAK,KAAK,WAAW;AAE5E,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,MAAM,kBAAkB,OACtB,YACA,SACA,KACA,KACA,UACA,gBACG;AACH,QAAM,EAAE,gBAAgB,IAAI,oBAAAD,QAAa,UAAU,GAAG;AACtD,QAAM,SAAS,uBAAAE,QAAgB,UAAU,UAAU;AACnD,QAAM,WAAW,uBAAAA,QAAgB,YAAY,UAAU;AAEvD,QAAM,cAAc,MAAM,cAAAC,QAAmB,WAAW;AAAA,IACtD;AAAA,IACA;AAAA,IACA,aAAa,mCAAY;AAAA,IACzB;AAAA,IACA;AAAA,EACF,CAAC;AAGD,QAAM,aAAa,IAAI,QAAQ,YAAY,KAAK,aAAa,
|
|
3
|
+
"sources": ["../../../../../../dpr/routes/journeys/view-report/async/report/utils.ts"],
|
|
4
|
+
"sourcesContent": ["import parseUrl from 'parseurl'\nimport { Url } from 'url'\nimport { Request, Response } from 'express'\n\n// Types\nimport type { Columns } from '../../../../../components/_reports/report-columns-form/types'\nimport type { AsyncReportUtilsParams } from '../../../../../types/AsyncReportUtils'\nimport type { DataTable } from '../../../../../utils/DataTableBuilder/types'\nimport type { components } from '../../../../../types/api'\nimport type { AsyncSummary, RequestedReport } from '../../../../../types/UserReports'\nimport { LoadType, ReportType } from '../../../../../types/UserReports'\nimport ReportQuery from '../../../../../types/ReportQuery'\nimport type { ChildData } from '../../../../../utils/ParentChildDataTableBuilder/types'\nimport type { ExtractedDefinitionData, ExtractedRequestData, ReportUrls } from './types'\nimport type { DownloadActionParams } from '../../../../../components/_reports/report-actions/types'\nimport { FiltersType } from '../../../../../components/_filters/filtersTypeEnum'\nimport type { Services } from '../../../../../types/Services'\n\n// Utils\nimport definitionUtils from '../../../../../utils/definitionUtils'\nimport PaginationUtils from '../../../../../components/_reports/report-pagination/utils'\nimport TotalsUtils from '../../../../../components/_reports/report-totals/utils'\nimport ReportFiltersUtils from '../../../../../components/_filters/utils'\nimport ColumnUtils from '../../../../../components/_reports/report-columns-form/utils'\nimport ReportActionsUtils from '../../../../../components/_reports/report-actions/utils'\nimport UserReportsUtils from '../../../../../components/user-reports/utils'\nimport LocalsHelper from '../../../../../utils/localsHelper'\nimport DataTableUtils from '../../../../../components/_reports/report-data-table/utils'\nimport RequestedReportService from '../../../my-reports/requested-reports/service'\n\nimport CollatedSummaryBuilder from '../../../../../utils/CollatedSummaryBuilder/CollatedSummaryBuilder'\n\nexport const getData = async ({\n res,\n req,\n services,\n token,\n userId,\n}: AsyncReportUtilsParams & { token: string; userId: string }) => {\n const { definitionsPath: definitionPath } = LocalsHelper.getValues(res)\n const { reportId, variantId, id, tableId } = req.params\n const reportVariantId = variantId || id\n\n // Get the request data\n const requestedReportService = <RequestedReportService>services.requestedReportService\n const requestData: RequestedReport | undefined = await requestedReportService.getReportByTableId(tableId, userId)\n const queryData = requestData?.query?.data\n\n // Get the definition\n const definition: components['schemas']['SingleVariantReportDefinition'] =\n await services.reportingService.getDefinition(token, reportId, reportVariantId, definitionPath, queryData)\n const { variant } = definition\n const { specification } = variant\n\n if (!specification) {\n throw new Error('No specification found in variant definition')\n }\n\n // Get the columns\n const columns = ColumnUtils.getColumns(specification, req)\n\n // initialise report query\n const reportQuery = await initReportQuery(definition, columns, res, req, services, requestData)\n\n // Get the reportData\n const reportData = await getReportData({ definition, services, token, req, res, reportQuery })\n\n // Get the summary data, if applicable\n const { summaries } = definition.variant\n const summariesData = !summaries ? [] : await getSummariesData(summaries, services, token, req, res)\n\n // Get the child data, if applicable\n const { childVariants } = definition.variant\n const childData: ChildData[] = !childVariants\n ? []\n : await getChildData(childVariants, services, token, req, res, requestData)\n\n return {\n definition,\n requestData,\n reportData,\n summariesData,\n childData,\n reportQuery,\n columns,\n }\n}\n\nconst initReportQuery = async (\n definition: components['schemas']['SingleVariantReportDefinition'],\n columns: Columns,\n res: Response,\n req: Request,\n services: Services,\n requestData?: RequestedReport,\n) => {\n const { definitionsPath } = LocalsHelper.getValues(res)\n const fields = definitionUtils.getFields(definition)\n const template = definitionUtils.getTemplate(definition)\n\n const filtersData = await ReportFiltersUtils.getFilters({\n fields,\n req,\n filtersType: FiltersType.INTERACTIVE,\n res,\n services,\n })\n\n // Sort\n const sortColumn = req.query?.['sortColumn'] || requestData?.sortBy?.data?.['sortColumn']\n const sortedAsc = req.query?.['sortedAsc'] || requestData?.sortBy?.data?.['sortedAsc']\n\n // Pagination\n const selectedPage = req.query?.['selectedPage']\n const pageSize = req.query?.['pageSize']\n\n // Filters\n const filtersQuery = ReportFiltersUtils.setRequestQueryFromFilterValues(filtersData.filters)\n\n const queryParams = {\n ...(sortColumn && { sortColumn }),\n ...(sortedAsc && { sortedAsc }),\n ...filtersQuery,\n ...(pageSize && { pageSize }),\n ...(selectedPage && { selectedPage }),\n ...(columns && { columns: columns.value }),\n }\n\n return new ReportQuery({\n fields,\n template,\n queryParams,\n definitionsPath,\n })\n}\n\nconst getReportData = async (args: {\n definition: components['schemas']['SingleVariantReportDefinition']\n services: Services\n token: string\n req: Request\n res: Response\n reportQuery: ReportQuery\n}) => {\n const { services, token, req, reportQuery } = args\n const { reportId, variantId, id, tableId } = req.params\n const reportVariantId = variantId || id\n\n return services.reportingService.getAsyncReport(\n token,\n reportId,\n reportVariantId,\n tableId,\n reportQuery.toRecordWithFilterPrefix(true),\n )\n}\n\nexport const getSummariesData = async (\n summaries: components['schemas']['ReportSummary'][],\n services: Services,\n token: string,\n req: Request,\n res: Response,\n): Promise<AsyncSummary[]> => {\n const { reportId, variantId, id, tableId } = req.params\n const { definitionsPath: dataProductDefinitionsPath } = LocalsHelper.getValues(res)\n const reportVariantId = variantId || id\n\n return Promise.all(\n summaries.map(async (summary) => {\n const summaryReport = await services.reportingService.getAsyncSummaryReport(\n token,\n reportId,\n reportVariantId,\n tableId,\n summary.id,\n {\n dataProductDefinitionsPath,\n },\n )\n\n return {\n ...summary,\n data: summaryReport,\n }\n }),\n )\n}\n\nexport const getChildData = async (\n childVariants: components['schemas']['ChildVariantDefinition'][],\n services: Services,\n token: string,\n req: Request,\n res: Response,\n requestData?: RequestedReport,\n): Promise<ChildData[]> => {\n const { definitionsPath: dataProductDefinitionsPath } = LocalsHelper.getValues(res)\n const { reportId } = req.params\n const childExecutionData = requestData?.childExecutionData\n if (!childExecutionData) {\n throw new Error('getChildData: No execution data found for child variants')\n }\n return Promise.all(\n childVariants.map(async (childVariant) => {\n const { specification } = childVariant\n if (!specification) {\n throw new Error('getChildData: No specification found in child variant definition')\n }\n\n const query = new ReportQuery({\n fields: specification?.fields || [],\n template: 'parent-child',\n queryParams: req.query,\n definitionsPath: dataProductDefinitionsPath,\n }).toRecordWithFilterPrefix(true)\n\n const childData = childExecutionData.find((e) => e.variantId === childVariant.id)\n if (!childData || !childData.tableId) {\n throw new Error('getChildData: No matching child execution data found')\n }\n const { tableId: childTableId } = childData\n\n const childReport = await services.reportingService.getAsyncReport(\n token,\n reportId,\n childVariant.id,\n childTableId,\n query,\n )\n\n return {\n id: childVariant.id,\n data: childReport,\n }\n }),\n )\n}\n\n/**\n * Entry point function to render the report\n *\n * @param {AsyncReportUtilsParams} { req, res, services }\n * @return {*}\n */\nexport const renderReport = async ({ req, res, services }: AsyncReportUtilsParams) => {\n const { token, dprUser } = LocalsHelper.getValues(res)\n\n // Get the report data\n const { definition, requestData, reportData, childData, summariesData, reportQuery, columns } = await getData({\n req,\n res,\n services,\n token,\n userId: dprUser.id,\n })\n\n // Get the data table\n const dataTable: DataTable[] = DataTableUtils.createDataTable(\n definition,\n columns,\n reportData,\n childData,\n summariesData,\n reportQuery,\n )\n\n // Get the template data\n const templateData = await getTemplateData(\n req,\n res,\n services,\n definition,\n summariesData,\n dataTable,\n columns,\n reportQuery,\n requestData,\n )\n\n const renderData = {\n ...templateData,\n dataTable,\n }\n\n if (requestData && Object.keys(requestData).length) {\n UserReportsUtils.updateLastViewed({\n req,\n services,\n reportStateData: requestData,\n userId: dprUser.id,\n filters: templateData.filterData.filters,\n })\n }\n\n return { renderData }\n}\n\nconst getTemplateData = async (\n req: Request,\n res: Response,\n services: Services,\n definition: components['schemas']['SingleVariantReportDefinition'],\n summariesData: AsyncSummary[],\n dataTable: DataTable[],\n columns: Columns,\n reportQuery: ReportQuery,\n requestData?: RequestedReport,\n) => {\n const { nestedBaseUrl } = LocalsHelper.getValues(res)\n\n // get url data\n const url = parseUrl(req)\n if (!url) {\n throw new Error('Unable to set url data from request')\n }\n\n const urls = url ? setUrls(url, req) : undefined\n\n // get from definition\n const definitionData = extractDataFromDefinition(definition)\n const { fields, specification } = definitionData\n\n // get from requestedData\n const requestedData = requestData ? extractDataFromRequest(requestData) : undefined\n\n // Get the count\n const count = await getCount(definition, services, res, req, reportQuery)\n\n // Get the filters\n const filterData = await ReportFiltersUtils.getFilters({\n fields,\n req,\n res,\n services,\n filtersType: FiltersType.INTERACTIVE,\n })\n\n // Set the features\n const features = await setFeatures(services, res, req, columns, definitionData, requestedData, urls)\n\n // Set the extra meta data\n const meta = setMetaData(res, req)\n\n let reportSummaries\n if (summariesData.length) {\n const collatedSummaryBuilder = new CollatedSummaryBuilder(specification, summariesData)\n reportSummaries = collatedSummaryBuilder.collatePageSummaries()\n }\n\n let pagination\n let totals\n if (definitionData.template === 'list') {\n pagination = PaginationUtils.getPaginationData(url, count, req)\n const { pageSize, currentPage, totalRows } = pagination\n totals = TotalsUtils.getTotals(pageSize, currentPage, totalRows, dataTable[0].rowCount)\n }\n\n return {\n ...(showColumns(specification) && { columns }),\n filterData,\n count,\n nestedBaseUrl,\n ...meta,\n ...features,\n ...definitionData,\n ...requestedData,\n ...urls,\n ...(pagination && { pagination }),\n ...(totals && { totals }),\n ...(reportSummaries && { reportSummaries }),\n }\n}\n\nconst showColumns = (specification: components['schemas']['Specification']) => {\n const { template } = specification\n\n return !['row-section', 'row-section-child', 'summary', 'summary-section'].includes(template)\n}\n\nconst setMetaData = (res: Response, req: Request) => {\n const { csrfToken } = LocalsHelper.getValues(res)\n const { tableId, reportId, id } = req.params\n\n return {\n csrfToken,\n loadType: LoadType.ASYNC,\n type: ReportType.REPORT,\n tableId,\n reportId,\n id,\n }\n}\n\nconst setUrls = (url: Url, req: Request): ReportUrls => {\n const { search } = url\n const encodedSearch = search ? encodeURIComponent(search) : undefined\n const pathname = search ? req.originalUrl.split(search)[0] : req.originalUrl\n const reportUrl = pathname.replace('/download-disabled', '').replace('/download-disabled?', '')\n\n return {\n reportUrl,\n reportSearch: search || undefined,\n encodedSearch,\n pathname,\n }\n}\n\nconst setFeatures = async (\n services: Services,\n res: Response,\n req: Request,\n columns: Columns,\n definitionData: ExtractedDefinitionData,\n requestData?: ExtractedRequestData,\n urls?: ReportUrls,\n) => {\n const { csrfToken, dprUser, bookmarkingEnabled, downloadingEnabled } = LocalsHelper.getValues(res)\n const { reportId, id } = req.params\n const { downloadPermissionService, bookmarkService } = services\n\n let canDownload = false\n if (downloadingEnabled) {\n canDownload = await downloadPermissionService.downloadEnabledForReport(dprUser.id, reportId, id)\n }\n\n let bookmarked\n if (bookmarkingEnabled) {\n bookmarked = await bookmarkService.isBookmarked(id, reportId, dprUser.id)\n }\n\n const actions = setActions(csrfToken, columns, canDownload, res, req, definitionData, requestData, urls)\n\n return {\n actions,\n canDownload,\n bookmarked,\n }\n}\n\nconst getCount = async (\n definition: components['schemas']['SingleVariantReportDefinition'],\n services: Services,\n res: Response,\n req: Request,\n reportQuery: ReportQuery,\n) => {\n const { token } = LocalsHelper.getValues(res)\n const { tableId, reportId, id } = req.params\n\n return !definition.variant.interactive\n ? services.reportingService.getAsyncCount(token, tableId)\n : services.reportingService.getAsyncInteractiveCount(token, tableId, reportId, id, reportQuery)\n}\n\nconst extractDataFromDefinition = (\n definition: components['schemas']['SingleVariantReportDefinition'],\n): ExtractedDefinitionData => {\n const { variant, name: reportName, description: reportDescription } = definition\n const { classification, printable, specification, name, description } = variant\n if (!specification) {\n throw new Error('No specification found in variant definition')\n }\n const { template, fields } = specification\n\n return {\n reportName,\n name,\n description: description || reportDescription,\n classification,\n printable: Boolean(printable),\n specification,\n template,\n fields,\n }\n}\n\nconst extractDataFromRequest = (requestData: RequestedReport): ExtractedRequestData => {\n const { query, url, timestamp } = requestData\n\n return {\n executionId: requestData.executionId,\n requestedTimestamp: timestamp.requested ? new Date(timestamp.requested).toLocaleString() : undefined,\n querySummary: query?.summary || [],\n queryData: query?.data,\n requestUrl: url?.request,\n defaultQuery: url?.report?.default,\n dataProductDefinitionsPath: requestData.dataProductDefinitionsPath,\n }\n}\n\nconst setActions = (\n csrfToken: string,\n columns: Columns,\n canDownload: boolean,\n res: Response,\n req: Request,\n definitionData: ExtractedDefinitionData,\n requestData?: ExtractedRequestData,\n urls?: ReportUrls,\n) => {\n const { reportName, name, printable } = definitionData\n const { tableId, id, reportId } = req.params\n const { nestedBaseUrl, definitionsPath, downloadingEnabled } = LocalsHelper.getValues(res)\n\n // DownloadActionParams\n let downloadConfig: DownloadActionParams | undefined\n if (urls && downloadingEnabled) {\n downloadConfig = {\n enabled: downloadingEnabled,\n name,\n reportName,\n csrfToken,\n reportId,\n id,\n tableId,\n columns: columns.value,\n definitionPath: definitionsPath,\n loadType: LoadType.ASYNC,\n nestedBaseUrl,\n canDownload,\n currentUrl: urls.pathname,\n currentQueryParams: urls.reportSearch,\n ...(requestData?.queryData && {\n sortColumn: <string>requestData.queryData['sortColumn'],\n sortedAsc: <string>requestData.queryData['sortedAsc'],\n }),\n }\n }\n\n let shareConfig\n let copyConfig\n if (requestData?.requestUrl?.fullUrl) {\n shareConfig = {\n reportName,\n name,\n url: requestData.requestUrl.fullUrl,\n }\n copyConfig = {\n url: requestData.requestUrl.fullUrl,\n }\n }\n\n let refreshConfig\n if (requestData?.executionId && requestData?.requestUrl?.fullUrl) {\n refreshConfig = {\n url: requestData.requestUrl.fullUrl,\n executionId: requestData.executionId,\n }\n }\n\n return ReportActionsUtils.getActions({\n ...(downloadConfig && { download: downloadConfig }),\n ...(shareConfig && { share: shareConfig }),\n ...(refreshConfig && { refresh: refreshConfig }),\n ...(copyConfig && { copy: copyConfig }),\n print: { enabled: printable },\n })\n}\n\nexport default {\n renderReport,\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["import_utils", "LocalsHelper", "ColumnUtils", "definitionUtils", "ReportFiltersUtils", "ReportQuery", "DataTableUtils", "UserReportsUtils", "parseUrl", "CollatedSummaryBuilder", "PaginationUtils", "TotalsUtils", "ReportActionsUtils"]
|
|
7
7
|
}
|
|
@@ -107,8 +107,8 @@ const initReportQuery = async (
|
|
|
107
107
|
})
|
|
108
108
|
|
|
109
109
|
// Sort
|
|
110
|
-
const sortColumn = req.query?.['sortColumn'] || requestData?.
|
|
111
|
-
const sortedAsc = req.query?.['sortedAsc'] || requestData?.
|
|
110
|
+
const sortColumn = req.query?.['sortColumn'] || requestData?.sortBy?.data?.['sortColumn']
|
|
111
|
+
const sortedAsc = req.query?.['sortedAsc'] || requestData?.sortBy?.data?.['sortedAsc']
|
|
112
112
|
|
|
113
113
|
// Pagination
|
|
114
114
|
const selectedPage = req.query?.['selectedPage']
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../../../dpr/routes/journeys/view-report/async/routes.ts"],
|
|
4
4
|
"sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { Router } from 'express'\nimport { Services } from '../../../../types/Services'\n\n// Routes\nimport viewReportRoutes from './report/routes'\nimport viewDashboardRoutes from './dashboard/routes'\n\n// middleware\nimport reportAuthoriser from '../../../../middleware/reportAuthoriser'\nimport AsyncController from './controller'\n\nexport function routes({ layoutPath, services }: { layoutPath: string; services: Services }) {\n const router = Router({ mergeParams: true })\n\n const controller = new AsyncController(layoutPath, services)\n\n // Expired check\n router.post(['/report', '/dashboard'], controller.POST)\n router.use('/report', reportAuthoriser(services, layoutPath), viewReportRoutes({ layoutPath, services }))\n router.use('/dashboard', reportAuthoriser(services, layoutPath), viewDashboardRoutes({ layoutPath, services }))\n return router\n}\n\nexport default routes\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qBAAuB;AAIvB,oBAA6B;AAC7B,IAAAA,iBAAgC;AAGhC,8BAA6B;AAC7B,wBAA4B;AAErB,SAAS,OAAO,EAAE,YAAY,SAAS,GAA+C;AAC3F,QAAM,aAAS,uBAAO,EAAE,aAAa,KAAK,CAAC;AAE3C,QAAM,aAAa,IAAI,kBAAAC,QAAgB,YAAY,QAAQ;AAG3D,SAAO,KAAK,CAAC,WAAW,YAAY,GAAG,WAAW,IAAI;AACtD,SAAO,IAAI,eAAW,wBAAAC,SAAiB,UAAU,UAAU,OAAG,cAAAC,SAAiB,EAAE,YAAY,SAAS,CAAC,CAAC;AACxG,SAAO,IAAI,kBAAc,wBAAAD,SAAiB,UAAU,UAAU,OAAG,eAAAE,SAAoB,EAAE,YAAY,SAAS,CAAC,CAAC;AAC9G,SAAO;AACT;AAEA,IAAO,iBAAQ;",
|
|
6
6
|
"names": ["import_routes", "AsyncController", "reportAuthoriser", "viewReportRoutes", "viewDashboardRoutes"]
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
4
|
-
"sourcesContent": ["import { ErrorRequestHandler
|
|
3
|
+
"sources": ["../../../../dpr/routes/journeys/view-report/controller.ts"],
|
|
4
|
+
"sourcesContent": ["import { ErrorRequestHandler } from 'express'\nimport { captureException } from '@sentry/node'\nimport ErrorHandler from '../../../utils/ErrorHandler'\nimport { Services } from '../../../types/Services'\nimport logger from '../../../utils/logger'\n\nclass ViewReportController {\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 errorHandler: ErrorRequestHandler = async (error, req, res, _next) => {\n logger.error(`Error: ${JSON.stringify(req.body)}`)\n const formattedErr = new ErrorHandler(error || {}).formatError()\n\n captureException(error)\n\n res.render(`dpr/routes/journeys/view-report/error`, {\n layoutPath: this.layoutPath,\n ...(req.body && { ...req.body }),\n ...req.params,\n error: formattedErr,\n params: req.params,\n })\n }\n}\n\nexport { ViewReportController }\nexport default ViewReportController\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,kBAAiC;AACjC,0BAAyB;AAEzB,oBAAmB;AAEnB,MAAM,qBAAqB;AAAA,EACzB;AAAA,EAEA;AAAA,EAEA,YAAY,YAAoB,UAAoB;AAClD,SAAK,aAAa;AAClB,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,eAAoC,OAAO,OAAO,KAAK,KAAK,UAAU;AACpE,kBAAAA,QAAO,MAAM,UAAU,KAAK,UAAU,IAAI,IAAI,CAAC,EAAE;AACjD,UAAM,eAAe,IAAI,oBAAAC,QAAa,SAAS,CAAC,CAAC,EAAE,YAAY;AAE/D,sCAAiB,KAAK;AAEtB,QAAI,OAAO,yCAAyC;AAAA,MAClD,YAAY,KAAK;AAAA,MACjB,GAAI,IAAI,QAAQ,EAAE,GAAG,IAAI,KAAK;AAAA,MAC9B,GAAG,IAAI;AAAA,MACP,OAAO;AAAA,MACP,QAAQ,IAAI;AAAA,IACd,CAAC;AAAA,EACH;AACF;AAGA,IAAO,qBAAQ;",
|
|
6
6
|
"names": ["logger", "ErrorHandler"]
|
|
7
7
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../../dpr/routes/journeys/view-report/routes.ts"],
|
|
4
4
|
"sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { Router } from 'express'\nimport { Services } from '../../../types/Services'\nimport ViewReportController from './controller'\n\n// Routes\nimport viewSyncReportRoutes from './sync/routes'\nimport viewAyncReportRoutes from './async/routes'\n\nexport function Routes({ layoutPath, services }: { services: Services; layoutPath: string }) {\n const router = Router({ mergeParams: true })\n\n const controller = new ViewReportController(layoutPath, services)\n router.use(`/sync/:type/:reportId/:id`, viewSyncReportRoutes({ layoutPath, services }), controller.errorHandler)\n router.use(\n `/async/:type/:reportId/:id/:tableId`,\n viewAyncReportRoutes({ layoutPath, services }),\n controller.errorHandler,\n )\n\n return router\n}\n\nexport function Redirects() {\n const router = Router({ mergeParams: true })\n\n // View Report\n router.get([`/async/:type/:reportId/:id/request/:tableId/:type`], (req, res) => {\n const { type, reportId, id, tableId } = req.params\n res.redirect(`${res.locals['nestedBaseUrl']}/dpr/view-report/async/${type}/${reportId}/${id}/${tableId}/${type}`)\n })\n\n // Download\n router.get(`/async/:type/:reportId/:id/request/:tableId/report/:download`, (req, res) => {\n const { type, reportId, id, tableId } = req.params\n res.redirect(\n `${res.locals['nestedBaseUrl']}/dpr/view-report/async/${type}/${reportId}/${id}/${tableId}/${type}/download-disabled`,\n )\n })\n\n // Expired Status\n router.post('/async/:type/:reportId/:id/request/:tableId/:type', (req, res) => {\n const { type, reportId, id, tableId } = req.params\n res.redirect(\n 308,\n `${res.locals['nestedBaseUrl']}/dpr/view-report/async/${type}/${reportId}/${id}/${tableId}/${type}`,\n )\n })\n\n return router\n}\n\nexport const ViewReportRoutes = ({\n services,\n path,\n layoutPath,\n}: {\n services: Services\n path: string\n layoutPath: string\n}) => {\n const router = Router({ mergeParams: true })\n router.use(path, Routes({ services, layoutPath }))\n router.use('/', Redirects())\n\n return router\n}\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qBAAuB;AAEvB,wBAAiC;AAGjC,oBAAiC;AACjC,IAAAA,iBAAiC;AAE1B,SAAS,OAAO,EAAE,YAAY,SAAS,GAA+C;AAC3F,QAAM,aAAS,uBAAO,EAAE,aAAa,KAAK,CAAC;AAE3C,QAAM,aAAa,IAAI,kBAAAC,QAAqB,YAAY,QAAQ;AAChE,SAAO,IAAI,iCAA6B,cAAAC,SAAqB,EAAE,YAAY,SAAS,CAAC,GAAG,WAAW,YAAY;AAC/G,SAAO;AAAA,IACL;AAAA,QACA,eAAAC,SAAqB,EAAE,YAAY,SAAS,CAAC;AAAA,IAC7C,WAAW;AAAA,EACb;AAEA,SAAO;AACT;AAEO,SAAS,YAAY;AAC1B,QAAM,aAAS,uBAAO,EAAE,aAAa,KAAK,CAAC;AAG3C,SAAO,IAAI,CAAC,mDAAmD,GAAG,CAAC,KAAK,QAAQ;AAC9E,UAAM,EAAE,MAAM,UAAU,IAAI,QAAQ,IAAI,IAAI;AAC5C,QAAI,SAAS,GAAG,IAAI,OAAO,eAAe,CAAC,0BAA0B,IAAI,IAAI,QAAQ,IAAI,EAAE,IAAI,OAAO,IAAI,IAAI,EAAE;AAAA,EAClH,CAAC;AAGD,SAAO,IAAI,gEAAgE,CAAC,KAAK,QAAQ;AACvF,UAAM,EAAE,MAAM,UAAU,IAAI,QAAQ,IAAI,IAAI;AAC5C,QAAI;AAAA,MACF,GAAG,IAAI,OAAO,eAAe,CAAC,0BAA0B,IAAI,IAAI,QAAQ,IAAI,EAAE,IAAI,OAAO,IAAI,IAAI;AAAA,IACnG;AAAA,EACF,CAAC;AAGD,SAAO,KAAK,qDAAqD,CAAC,KAAK,QAAQ;AAC7E,UAAM,EAAE,MAAM,UAAU,IAAI,QAAQ,IAAI,IAAI;AAC5C,QAAI;AAAA,MACF;AAAA,MACA,GAAG,IAAI,OAAO,eAAe,CAAC,0BAA0B,IAAI,IAAI,QAAQ,IAAI,EAAE,IAAI,OAAO,IAAI,IAAI;AAAA,IACnG;AAAA,EACF,CAAC;AAED,SAAO;AACT;AAEO,MAAM,mBAAmB,CAAC;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AACF,MAIM;AACJ,QAAM,aAAS,uBAAO,EAAE,aAAa,KAAK,CAAC;AAC3C,SAAO,IAAI,MAAM,OAAO,EAAE,UAAU,WAAW,CAAC,CAAC;AACjD,SAAO,IAAI,KAAK,UAAU,CAAC;AAE3B,SAAO;AACT;",
|
|
6
6
|
"names": ["import_routes", "ViewReportController", "viewSyncReportRoutes", "viewAyncReportRoutes"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../../../../dpr/routes/journeys/view-report/sync/dashboard/controller.ts"],
|
|
4
4
|
"sourcesContent": ["import { RequestHandler } from 'express'\nimport ErrorHandler from '../../../../../utils/ErrorHandler'\nimport { Services } from '../../../../../types/Services'\nimport SyncDashboardUtils from './utils'\nimport ViewReportUtils from '../../utils'\n\nclass ViewSyncDashboardController {\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 try {\n const renderData = await SyncDashboardUtils.renderSyncDashboard({ req, res, services: this.services })\n\n res.render(`dpr/routes/journeys/view-report/dashboard`, {\n layoutPath: this.layoutPath,\n ...renderData,\n })\n } catch (error) {\n req.body ??= {}\n req.body.title = `Dashboard Failed`\n req.body.errorDescription = 'We were unable to show this dashboard for the following reason:'\n req.body.error = new ErrorHandler(error).formatError()\n next(error)\n }\n }\n\n applyFilters: RequestHandler = async (req, res, _next) => {\n await ViewReportUtils.applyDashboardInteractiveQuery(req, res, this.services, 'filters')\n }\n}\n\nexport { ViewSyncDashboardController }\nexport default ViewSyncDashboardController\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,0BAAyB;AAEzB,mBAA+B;AAC/B,IAAAA,gBAA4B;AAE5B,MAAM,4BAA4B;AAAA,EAChC;AAAA,EAEA;AAAA,EAEA,YAAY,YAAoB,UAAoB;AAClD,SAAK,aAAa;AAClB,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,MAAsB,OAAO,KAAK,KAAK,SAAS;AAC9C,QAAI;AACF,YAAM,aAAa,MAAM,aAAAC,QAAmB,oBAAoB,EAAE,KAAK,KAAK,UAAU,KAAK,SAAS,CAAC;AAErG,UAAI,OAAO,6CAA6C;AAAA,QACtD,YAAY,KAAK;AAAA,QACjB,GAAG;AAAA,MACL,CAAC;AAAA,IACH,SAAS,OAAO;AACd,UAAI,SAAS,CAAC;AACd,UAAI,KAAK,QAAQ;AACjB,UAAI,KAAK,mBAAmB;AAC5B,UAAI,KAAK,QAAQ,IAAI,oBAAAC,QAAa,KAAK,EAAE,YAAY;AACrD,WAAK,KAAK;AAAA,IACZ;AAAA,EACF;AAAA,EAEA,eAA+B,OAAO,KAAK,KAAK,UAAU;AACxD,UAAM,cAAAC,QAAgB,+BAA+B,KAAK,KAAK,KAAK,UAAU,SAAS;AAAA,EACzF;AACF;AAGA,IAAO,qBAAQ;",
|
|
6
6
|
"names": ["import_utils", "SyncDashboardUtils", "ErrorHandler", "ViewReportUtils"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../../../../dpr/routes/journeys/view-report/sync/dashboard/routes.ts"],
|
|
4
4
|
"sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { Router } from 'express'\nimport ViewSyncDashboardController from './controller'\nimport { Services } from '../../../../../types/Services'\n\nexport function routes({ layoutPath, services }: { layoutPath: string; services: Services }) {\n const router = Router({ mergeParams: true })\n const controller = new ViewSyncDashboardController(layoutPath, services)\n\n router.get([`/`], controller.GET)\n\n // Interactive controls\n router.post('/apply-filters', controller.applyFilters)\n\n return router\n}\n\nexport default routes\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qBAAuB;AACvB,wBAAwC;AAGjC,SAAS,OAAO,EAAE,YAAY,SAAS,GAA+C;AAC3F,QAAM,aAAS,uBAAO,EAAE,aAAa,KAAK,CAAC;AAC3C,QAAM,aAAa,IAAI,kBAAAA,QAA4B,YAAY,QAAQ;AAEvE,SAAO,IAAI,CAAC,GAAG,GAAG,WAAW,GAAG;AAGhC,SAAO,KAAK,kBAAkB,WAAW,YAAY;AAErD,SAAO;AACT;AAEA,IAAO,iBAAQ;",
|
|
6
6
|
"names": ["ViewSyncDashboardController"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../../../../dpr/routes/journeys/view-report/sync/dashboard/utils.ts"],
|
|
4
4
|
"sourcesContent": ["import type { Request, Response } from 'express'\nimport Dict = NodeJS.Dict\n\nimport type { Services } from '../../../../../types/Services'\nimport { ReportType, RequestStatus } from '../../../../../types/UserReports'\nimport { FilterValue } from '../../../../../components/_filters/types'\nimport SelectedFiltersUtils from '../../../../../components/_filters/filters-selected/utils'\nimport LocalsHelper from '../../../../../utils/localsHelper'\nimport UserStoreItemBuilder from '../../../../../utils/UserStoreItemBuilder'\nimport { DashboardDataResponse } from '../../../../../types/Metrics'\nimport AsyncDashboardUtils from '../../async/dashboard/utils'\nimport { DashboardSection } from '../../../../../components/_dashboards/dashboard-visualisation/types'\nimport { components } from '../../../../../types/api'\nimport ReportActionsUtils from '../../../../../components/_reports/report-actions/utils'\n\nconst setAsRecentlyViewed = async ({\n req,\n services,\n reportName,\n name,\n description,\n reportId,\n id,\n userId,\n filters,\n}: {\n req: Request\n services: Services\n reportName: string\n name: string\n description: string\n reportId: string\n id: string\n userId: string\n filters: FilterValue[]\n}) => {\n const stateData = {\n type: ReportType.DASHBOARD,\n reportId,\n id,\n reportName,\n description,\n name,\n }\n\n const interactiveQueryData: { query: Dict<string>; querySummary: Array<Dict<string>> } = {\n query: <Dict<string>>req.query,\n querySummary: SelectedFiltersUtils.getQuerySummary(<Dict<string>>req.query, filters),\n }\n\n const recentlyViewedData = new UserStoreItemBuilder(stateData)\n .addInteractiveQuery(interactiveQueryData)\n .addStatus(RequestStatus.READY)\n .addTimestamp()\n .addReportUrls(req)\n .build()\n\n await services.recentlyViewedService.setRecentlyViewed(recentlyViewedData, userId)\n}\n\nexport const renderSyncDashboard = async ({\n req,\n res,\n services,\n}: {\n req: Request\n res: Response\n services: Services\n}) => {\n const { token, csrfToken, dprUser, nestedBaseUrl } = LocalsHelper.getValues(res)\n const { reportId, id } = req.params\n const fullUrl = `${req.protocol}://${req.get('host')}${req.originalUrl}`\n\n const {\n query,\n filters: filterData,\n reportDefinition,\n dashboardDefinition,\n } = await AsyncDashboardUtils.getDefinitionData({\n req,\n res,\n services,\n })\n\n const dashboardData: DashboardDataResponse[][] = await services.dashboardService.getSyncDashboard(\n token,\n reportId,\n reportId,\n query,\n )\n const flattenedData: DashboardDataResponse[] = dashboardData.flat()\n\n // Get the dashboard parts\n const sections: DashboardSection[] = AsyncDashboardUtils.getSections(dashboardDefinition, flattenedData, query)\n\n await setAsRecentlyViewed({\n req,\n services,\n reportName: reportDefinition.name,\n name: dashboardDefinition.name,\n description: dashboardDefinition.description || reportDefinition.description || '',\n reportId,\n id,\n userId: dprUser.id,\n filters: filterData.filters,\n })\n\n return {\n dashboardData: {\n token,\n id,\n reportId,\n name: dashboardDefinition.name,\n description: dashboardDefinition.description,\n reportName: reportDefinition.name,\n bookmarked: await services.bookmarkService.isBookmarked(id, reportId, dprUser.id),\n nestedBaseUrl,\n csrfToken,\n sections,\n filters: filterData,\n type: ReportType.DASHBOARD,\n actions: setActions(dashboardDefinition, reportDefinition, fullUrl),\n },\n }\n}\n\nexport const setActions = (\n definition: components['schemas']['DashboardDefinition'],\n summaryDefinition: components['schemas']['ReportDefinitionSummary'],\n url: string,\n) => {\n const { name: reportName } = summaryDefinition\n const { name } = definition\n\n return ReportActionsUtils.getActions({\n share: {\n reportName,\n name,\n url,\n },\n copy: {\n url,\n },\n })\n}\n\nexport default {\n renderSyncDashboard,\n}\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,yBAA0C;AAE1C,mBAAiC;AACjC,0BAAyB;AACzB,kCAAiC;AAEjC,IAAAA,gBAAgC;AAGhC,IAAAA,gBAA+B;AAE/B,MAAM,sBAAsB,OAAO;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAUM;AACJ,QAAM,YAAY;AAAA,IAChB,MAAM,8BAAW;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,QAAM,uBAAmF;AAAA,IACvF,OAAqB,IAAI;AAAA,IACzB,cAAc,aAAAC,QAAqB,gBAA8B,IAAI,OAAO,OAAO;AAAA,EACrF;AAEA,QAAM,qBAAqB,IAAI,4BAAAC,QAAqB,SAAS,EAC1D,oBAAoB,oBAAoB,EACxC,UAAU,iCAAc,KAAK,EAC7B,aAAa,EACb,cAAc,GAAG,EACjB,MAAM;AAET,QAAM,SAAS,sBAAsB,kBAAkB,oBAAoB,MAAM;AACnF;AAEO,MAAM,sBAAsB,OAAO;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AACF,MAIM;AACJ,QAAM,EAAE,OAAO,WAAW,SAAS,cAAc,IAAI,oBAAAC,QAAa,UAAU,GAAG;AAC/E,QAAM,EAAE,UAAU,GAAG,IAAI,IAAI;AAC7B,QAAM,UAAU,GAAG,IAAI,QAAQ,MAAM,IAAI,IAAI,MAAM,CAAC,GAAG,IAAI,WAAW;AAEtE,QAAM;AAAA,IACJ;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,EACF,IAAI,MAAM,cAAAC,QAAoB,kBAAkB;AAAA,IAC9C;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,gBAA2C,MAAM,SAAS,iBAAiB;AAAA,IAC/E;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,QAAM,gBAAyC,cAAc,KAAK;AAGlE,QAAM,WAA+B,cAAAA,QAAoB,YAAY,qBAAqB,eAAe,KAAK;AAE9G,QAAM,oBAAoB;AAAA,IACxB;AAAA,IACA;AAAA,IACA,YAAY,iBAAiB;AAAA,IAC7B,MAAM,oBAAoB;AAAA,IAC1B,aAAa,oBAAoB,eAAe,iBAAiB,eAAe;AAAA,IAChF;AAAA,IACA;AAAA,IACA,QAAQ,QAAQ;AAAA,IAChB,SAAS,WAAW;AAAA,EACtB,CAAC;AAED,SAAO;AAAA,IACL,eAAe;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM,oBAAoB;AAAA,MAC1B,aAAa,oBAAoB;AAAA,MACjC,YAAY,iBAAiB;AAAA,MAC7B,YAAY,MAAM,SAAS,gBAAgB,aAAa,IAAI,UAAU,QAAQ,EAAE;AAAA,MAChF;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS;AAAA,MACT,MAAM,8BAAW;AAAA,MACjB,SAAS,WAAW,qBAAqB,kBAAkB,OAAO;AAAA,IACpE;AAAA,EACF;AACF;AAEO,MAAM,aAAa,CACxB,YACA,mBACA,QACG;AACH,QAAM,EAAE,MAAM,WAAW,IAAI;AAC7B,QAAM,EAAE,KAAK,IAAI;AAEjB,SAAO,cAAAC,QAAmB,WAAW;AAAA,IACnC,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,MAAM;AAAA,MACJ;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEA,IAAO,gBAAQ;AAAA,EACb;AACF;",
|
|
6
6
|
"names": ["import_utils", "SelectedFiltersUtils", "UserStoreItemBuilder", "LocalsHelper", "AsyncDashboardUtils", "ReportActionsUtils"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../../../../dpr/routes/journeys/view-report/sync/load-report/controller.ts"],
|
|
4
4
|
"sourcesContent": ["import { RequestHandler } from 'express'\nimport { Services } from '../../../../../types/Services'\nimport LocalsHelper from '../../../../../utils/localsHelper'\nimport { ReportType } from '../../../../../types/UserReports'\nimport { components } from '../../../../../types/api'\n\nclass LoadReportController {\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 try {\n const { token } = LocalsHelper.getValues(res)\n const { reportId, id, type } = req.params\n const { dataProductDefinitionsPath } = req.query\n\n const definitionSummary = await this.services.reportingService.getDefinitionSummary(\n token,\n reportId,\n <string | undefined>dataProductDefinitionsPath,\n )\n\n let definition:\n | components['schemas']['SingleVariantReportDefinition']\n | components['schemas']['DashboardDefinition']\n\n let classification\n let description\n let name\n if (type === ReportType.REPORT) {\n definition = await this.services.reportingService.getDefinition(\n token,\n reportId,\n id,\n <string | undefined>dataProductDefinitionsPath,\n )\n const { variant } = definition\n classification = variant.classification\n description = variant.description\n name = variant.name\n } else {\n definition = await this.services.dashboardService.getDefinition(\n token,\n reportId,\n id,\n <string | undefined>dataProductDefinitionsPath,\n )\n description = definition.description\n name = definition.name\n }\n const { name: reportName, description: reportDescription } = definitionSummary\n\n const renderData = {\n reportId,\n id,\n type,\n reportName,\n name,\n classification,\n description: description || reportDescription,\n }\n\n res.render(`dpr/routes/journeys/view-report/sync/load-report/view`, {\n renderData,\n layoutPath: this.layoutPath,\n })\n } catch (error) {\n next(error)\n }\n }\n}\n\nexport { LoadReportController }\nexport default LoadReportController\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,0BAAyB;AACzB,yBAA2B;AAG3B,MAAM,qBAAqB;AAAA,EACzB;AAAA,EAEA;AAAA,EAEA,YAAY,YAAoB,UAAoB;AAClD,SAAK,aAAa;AAClB,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,MAAsB,OAAO,KAAK,KAAK,SAAS;AAC9C,QAAI;AACF,YAAM,EAAE,MAAM,IAAI,oBAAAA,QAAa,UAAU,GAAG;AAC5C,YAAM,EAAE,UAAU,IAAI,KAAK,IAAI,IAAI;AACnC,YAAM,EAAE,2BAA2B,IAAI,IAAI;AAE3C,YAAM,oBAAoB,MAAM,KAAK,SAAS,iBAAiB;AAAA,QAC7D;AAAA,QACA;AAAA,QACoB;AAAA,MACtB;AAEA,UAAI;AAIJ,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI,SAAS,8BAAW,QAAQ;AAC9B,qBAAa,MAAM,KAAK,SAAS,iBAAiB;AAAA,UAChD;AAAA,UACA;AAAA,UACA;AAAA,UACoB;AAAA,QACtB;AACA,cAAM,EAAE,QAAQ,IAAI;AACpB,yBAAiB,QAAQ;AACzB,sBAAc,QAAQ;AACtB,eAAO,QAAQ;AAAA,MACjB,OAAO;AACL,qBAAa,MAAM,KAAK,SAAS,iBAAiB;AAAA,UAChD;AAAA,UACA;AAAA,UACA;AAAA,UACoB;AAAA,QACtB;AACA,sBAAc,WAAW;AACzB,eAAO,WAAW;AAAA,MACpB;AACA,YAAM,EAAE,MAAM,YAAY,aAAa,kBAAkB,IAAI;AAE7D,YAAM,aAAa;AAAA,QACjB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,aAAa,eAAe;AAAA,MAC9B;AAEA,UAAI,OAAO,yDAAyD;AAAA,QAClE;AAAA,QACA,YAAY,KAAK;AAAA,MACnB,CAAC;AAAA,IACH,SAAS,OAAO;AACd,WAAK,KAAK;AAAA,IACZ;AAAA,EACF;AACF;AAGA,IAAO,qBAAQ;",
|
|
6
6
|
"names": ["LocalsHelper"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../../../../dpr/routes/journeys/view-report/sync/load-report/routes.ts"],
|
|
4
4
|
"sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { Router } from 'express'\nimport LoadReportController from './controller'\nimport { Services } from '../../../../../types/Services'\n\nexport function routes({ layoutPath, services }: { layoutPath: string; services: Services }) {\n const router = Router({ mergeParams: true })\n\n const controller = new LoadReportController(layoutPath, services)\n router.get(`/`, controller.GET)\n\n return router\n}\n\nexport default routes\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qBAAuB;AACvB,wBAAiC;AAG1B,SAAS,OAAO,EAAE,YAAY,SAAS,GAA+C;AAC3F,QAAM,aAAS,uBAAO,EAAE,aAAa,KAAK,CAAC;AAE3C,QAAM,aAAa,IAAI,kBAAAA,QAAqB,YAAY,QAAQ;AAChE,SAAO,IAAI,KAAK,WAAW,GAAG;AAE9B,SAAO;AACT;AAEA,IAAO,iBAAQ;",
|
|
6
6
|
"names": ["LoadReportController"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../../../../dpr/routes/journeys/view-report/sync/report/controller.ts"],
|
|
4
4
|
"sourcesContent": ["import { RequestHandler } from 'express'\nimport ErrorHandler from '../../../../../utils/ErrorHandler'\nimport { Services } from '../../../../../types/Services'\nimport SyncReportUtils from './utils'\nimport { FiltersType } from '../../../../../components/_filters/filtersTypeEnum'\nimport PersonalisationUtils from '../../../../../utils/Personalisation/personalisationUtils'\nimport ViewReportUtils from '../../utils'\n\nclass ViewSyncReportController {\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 try {\n const renderData = await SyncReportUtils.getReport({ req, res, services: this.services })\n res.render(`dpr/routes/journeys/view-report/report`, {\n layoutPath: this.layoutPath,\n ...renderData,\n })\n } catch (error) {\n req.body ??= {}\n req.body.title = `Report Failed`\n req.body.errorDescription = 'We were unable to show this report for the following reason:'\n req.body.error = new ErrorHandler(error).formatError()\n next(error)\n }\n }\n\n saveDefaultFilterValues: RequestHandler = async (req, res, next) => {\n try {\n PersonalisationUtils.saveDefaults(FiltersType.INTERACTIVE, res, req, this.services)\n res.redirect(`${req.baseUrl}?defaultsSaved=true`)\n } catch (error) {\n req.body = {\n title: 'Failed to save defaults',\n error: new ErrorHandler(error).formatError(),\n ...(req.body && { ...req.body }),\n }\n next(error)\n }\n }\n\n removeDefaultFilterValues: RequestHandler = async (req, res, next) => {\n try {\n PersonalisationUtils.removeDefaults(FiltersType.INTERACTIVE, res, req, this.services)\n res.redirect(req.baseUrl)\n } catch (error) {\n req.body = {\n title: 'Failed to remove defaults',\n error: new ErrorHandler(error).formatError(),\n ...(req.body && { ...req.body }),\n }\n next(error)\n }\n }\n\n applyFilters: RequestHandler = async (req, res, _next) => {\n await ViewReportUtils.applyReportInteractiveQuery(req, res, this.services, 'filters')\n }\n\n applyColumns: RequestHandler = async (req, res, _next) => {\n await ViewReportUtils.applyReportInteractiveQuery(req, res, this.services, 'columns')\n }\n}\n\nexport { ViewSyncReportController }\nexport default ViewSyncReportController\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,0BAAyB;AAEzB,mBAA4B;AAC5B,6BAA4B;AAC5B,kCAAiC;AACjC,IAAAA,gBAA4B;AAE5B,MAAM,yBAAyB;AAAA,EAC7B;AAAA,EAEA;AAAA,EAEA,YAAY,YAAoB,UAAoB;AAClD,SAAK,aAAa;AAClB,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,MAAsB,OAAO,KAAK,KAAK,SAAS;AAC9C,QAAI;AACF,YAAM,aAAa,MAAM,aAAAC,QAAgB,UAAU,EAAE,KAAK,KAAK,UAAU,KAAK,SAAS,CAAC;AACxF,UAAI,OAAO,0CAA0C;AAAA,QACnD,YAAY,KAAK;AAAA,QACjB,GAAG;AAAA,MACL,CAAC;AAAA,IACH,SAAS,OAAO;AACd,UAAI,SAAS,CAAC;AACd,UAAI,KAAK,QAAQ;AACjB,UAAI,KAAK,mBAAmB;AAC5B,UAAI,KAAK,QAAQ,IAAI,oBAAAC,QAAa,KAAK,EAAE,YAAY;AACrD,WAAK,KAAK;AAAA,IACZ;AAAA,EACF;AAAA,EAEA,0BAA0C,OAAO,KAAK,KAAK,SAAS;AAClE,QAAI;AACF,kCAAAC,QAAqB,aAAa,mCAAY,aAAa,KAAK,KAAK,KAAK,QAAQ;AAClF,UAAI,SAAS,GAAG,IAAI,OAAO,qBAAqB;AAAA,IAClD,SAAS,OAAO;AACd,UAAI,OAAO;AAAA,QACT,OAAO;AAAA,QACP,OAAO,IAAI,oBAAAD,QAAa,KAAK,EAAE,YAAY;AAAA,QAC3C,GAAI,IAAI,QAAQ,EAAE,GAAG,IAAI,KAAK;AAAA,MAChC;AACA,WAAK,KAAK;AAAA,IACZ;AAAA,EACF;AAAA,EAEA,4BAA4C,OAAO,KAAK,KAAK,SAAS;AACpE,QAAI;AACF,kCAAAC,QAAqB,eAAe,mCAAY,aAAa,KAAK,KAAK,KAAK,QAAQ;AACpF,UAAI,SAAS,IAAI,OAAO;AAAA,IAC1B,SAAS,OAAO;AACd,UAAI,OAAO;AAAA,QACT,OAAO;AAAA,QACP,OAAO,IAAI,oBAAAD,QAAa,KAAK,EAAE,YAAY;AAAA,QAC3C,GAAI,IAAI,QAAQ,EAAE,GAAG,IAAI,KAAK;AAAA,MAChC;AACA,WAAK,KAAK;AAAA,IACZ;AAAA,EACF;AAAA,EAEA,eAA+B,OAAO,KAAK,KAAK,UAAU;AACxD,UAAM,cAAAE,QAAgB,4BAA4B,KAAK,KAAK,KAAK,UAAU,SAAS;AAAA,EACtF;AAAA,EAEA,eAA+B,OAAO,KAAK,KAAK,UAAU;AACxD,UAAM,cAAAA,QAAgB,4BAA4B,KAAK,KAAK,KAAK,UAAU,SAAS;AAAA,EACtF;AACF;AAGA,IAAO,qBAAQ;",
|
|
6
6
|
"names": ["import_utils", "SyncReportUtils", "ErrorHandler", "PersonalisationUtils", "ViewReportUtils"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../../../../dpr/routes/journeys/view-report/sync/report/routes.ts"],
|
|
4
4
|
"sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { Router } from 'express'\nimport ViewSyncReportController from './controller'\nimport { Services } from '../../../../../types/Services'\n\nexport function routes({ layoutPath, services }: { layoutPath: string; services: Services }) {\n const router = Router({ mergeParams: true })\n const controller = new ViewSyncReportController(layoutPath, services)\n\n router.get([`/`, `/download-disabled`], controller.GET)\n\n // Interactive controls\n router.post('/apply-filters', controller.applyFilters)\n router.post('/apply-columns', controller.applyColumns)\n\n // User defined defaults\n router.post('/save-defaults', controller.saveDefaultFilterValues)\n router.post('/remove-defaults', controller.removeDefaultFilterValues)\n\n return router\n}\n\nexport default routes\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qBAAuB;AACvB,wBAAqC;AAG9B,SAAS,OAAO,EAAE,YAAY,SAAS,GAA+C;AAC3F,QAAM,aAAS,uBAAO,EAAE,aAAa,KAAK,CAAC;AAC3C,QAAM,aAAa,IAAI,kBAAAA,QAAyB,YAAY,QAAQ;AAEpE,SAAO,IAAI,CAAC,KAAK,oBAAoB,GAAG,WAAW,GAAG;AAGtD,SAAO,KAAK,kBAAkB,WAAW,YAAY;AACrD,SAAO,KAAK,kBAAkB,WAAW,YAAY;AAGrD,SAAO,KAAK,kBAAkB,WAAW,uBAAuB;AAChE,SAAO,KAAK,oBAAoB,WAAW,yBAAyB;AAEpE,SAAO;AACT;AAEA,IAAO,iBAAQ;",
|
|
6
6
|
"names": ["ViewSyncReportController"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../../../../dpr/routes/journeys/view-report/sync/report/utils.ts"],
|
|
4
4
|
"sourcesContent": ["import parseUrl from 'parseurl'\nimport type { Request, Response } from 'express'\nimport Dict = NodeJS.Dict\nimport type { components } from '../../../../../types/api'\nimport type { DataTable } from '../../../../../utils/DataTableBuilder/types'\nimport type { ListWithWarnings } from '../../../../../data/types'\nimport type { Columns } from '../../../../../components/_reports/report-columns-form/types'\nimport type { Services } from '../../../../../types/Services'\nimport type { DownloadActionParams } from '../../../../../components/_reports/report-actions/types'\nimport { LoadType, ReportType, RequestStatus } from '../../../../../types/UserReports'\nimport ReportQuery from '../../../../../types/ReportQuery'\nimport { Template } from '../../../../../types/Templates'\nimport { FilterValue } from '../../../../../components/_filters/types'\n\nimport PaginationUtils from '../../../../../components/_reports/report-pagination/utils'\nimport TotalsUtils from '../../../../../components/_reports/report-totals/utils'\nimport ColumnUtils from '../../../../../components/_reports/report-columns-form/utils'\nimport ReportActionsUtils from '../../../../../components/_reports/report-actions/utils'\nimport FiltersUtils from '../../../../../components/_filters/utils'\nimport SelectedFiltersUtils from '../../../../../components/_filters/filters-selected/utils'\nimport LocalsHelper from '../../../../../utils/localsHelper'\nimport UserStoreItemBuilder from '../../../../../utils/UserStoreItemBuilder'\n\nimport DataTableBuilder from '../../../../../utils/DataTableBuilder/DataTableBuilder'\nimport { FiltersType } from '../../../../../components/_filters/filtersTypeEnum'\n\nexport const setActions = (\n csrfToken: string,\n reportDefinition: components['schemas']['SingleVariantReportDefinition'],\n columns: Columns,\n url: string,\n canDownload: boolean,\n count: number,\n dataProductDefinitionsPath: string,\n currentUrl: string,\n currentQueryParams: string,\n nestedBaseUrl: string,\n) => {\n const { name: reportName, variant, id: reportId } = reportDefinition\n const { name, id, printable } = variant\n\n const downloadConfig: DownloadActionParams = {\n enabled: count > 0,\n name,\n reportName,\n csrfToken,\n reportId,\n id,\n columns: columns.value,\n loadType: LoadType.SYNC,\n definitionPath: dataProductDefinitionsPath,\n canDownload,\n currentUrl,\n currentQueryParams,\n nestedBaseUrl,\n }\n\n return ReportActionsUtils.getActions({\n download: downloadConfig,\n print: {\n enabled: Boolean(printable),\n },\n share: {\n reportName,\n name,\n url,\n },\n copy: {\n url,\n },\n })\n}\n\nconst setAsRecentlyViewed = async ({\n req,\n services,\n reportName,\n name,\n description,\n reportId,\n id,\n userId,\n filters,\n}: {\n req: Request\n services: Services\n reportName: string\n name: string\n description: string\n reportId: string\n id: string\n userId: string\n filters: FilterValue[]\n}) => {\n const stateData = {\n type: ReportType.REPORT,\n reportId,\n id,\n reportName,\n description,\n name,\n }\n\n const interactiveQueryData: { query: Dict<string>; querySummary: Array<Dict<string>> } = {\n query: <Dict<string>>req.query,\n querySummary: SelectedFiltersUtils.getQuerySummary(<Dict<string>>req.query, filters),\n }\n\n const recentlyViewedData = new UserStoreItemBuilder(stateData)\n .addInteractiveQuery(interactiveQueryData)\n .addStatus(RequestStatus.READY)\n .addTimestamp()\n .addReportUrls(req)\n .build()\n\n await services.recentlyViewedService?.setRecentlyViewed(recentlyViewedData, userId)\n}\n\nexport const getReportData = async ({\n services,\n req,\n token,\n reportId,\n id,\n dataProductDefinitionsPath,\n}: {\n services: Services\n req: Request\n token: string\n reportId: string\n id: string\n dataProductDefinitionsPath?: string\n}) => {\n const reportDefinition = await services.reportingService.getDefinition(\n token,\n reportId,\n id,\n dataProductDefinitionsPath,\n )\n const { variant } = reportDefinition\n const { resourceName, specification } = variant\n\n const reportQuery = new ReportQuery({\n fields: specification?.fields || [],\n template: (specification?.template as Template) || 'list',\n queryParams: req.query,\n definitionsPath: <string>dataProductDefinitionsPath,\n })\n\n return {\n reportData: await services.reportingService.getListWithWarnings(resourceName, token, reportQuery),\n reportDefinition,\n reportQuery,\n }\n}\n\nexport const getReport = async ({ req, res, services }: { req: Request; res: Response; services: Services }) => {\n const { token, csrfToken, dprUser } = LocalsHelper.getValues(res)\n const { reportId, id } = req.params\n const dataProductDefinitionsPath = <string>req.query['dataProductDefinitionsPath']\n\n const { reportData, reportDefinition, reportQuery } = await getReportData({\n services,\n req,\n token,\n reportId,\n id,\n dataProductDefinitionsPath,\n })\n const count = await services.reportingService.getCount(reportDefinition.variant.resourceName, token, reportQuery)\n const canDownload = Boolean(\n await services.downloadPermissionService?.downloadEnabledForReport(dprUser.id, reportId, id),\n )\n const bookmarked = Boolean(await services.bookmarkService?.isBookmarked(id, reportId, dprUser.id))\n\n const renderData = await getRenderData({\n req,\n res,\n services,\n reportDefinition,\n reportQuery,\n reportData,\n count,\n csrfToken,\n canDownload,\n })\n\n if (Object.keys(renderData).length) {\n await setAsRecentlyViewed({\n req,\n services,\n reportName: renderData.reportName,\n name: renderData.name,\n description: renderData.description || '',\n reportId,\n id,\n userId: dprUser.id,\n filters: renderData.filterData.filters,\n })\n }\n\n return {\n renderData: {\n ...renderData,\n csrfToken,\n loadType: LoadType.SYNC,\n reportId,\n id,\n bookmarked,\n dataProductDefinitionsPath,\n },\n }\n}\n\nexport const getReportRenderData = async ({\n req,\n res,\n services,\n count,\n specification,\n reportQuery,\n data,\n filtersType,\n}: {\n req: Request\n res?: Response\n services?: Services\n count: number\n specification: components['schemas']['Specification']\n reportQuery: ReportQuery\n data: Dict<string>[]\n filtersType?: FiltersType\n}) => {\n const url = parseUrl(req)\n const fullUrl = `${req.protocol}://${req.get('host')}${req.originalUrl}`\n const pathname = url?.search ? req.originalUrl.split(url.search)[0] : req.originalUrl\n\n const dataTable: DataTable = new DataTableBuilder(specification.fields)\n .withHeaderSortOptions(reportQuery)\n .buildTable(data)\n\n let pagination\n let totals\n if (url) {\n pagination = PaginationUtils.getPaginationData(url, count, req)\n totals = TotalsUtils.getTotals(\n pagination.pageSize,\n pagination.currentPage,\n pagination.totalRows,\n dataTable.rowCount,\n )\n }\n\n const filterData = await FiltersUtils.getFilters({\n fields: specification.fields,\n req,\n res,\n services,\n filtersType: filtersType || FiltersType.INTERACTIVE,\n })\n\n const columns = ColumnUtils.getColumns(specification, req)\n\n return {\n dataTable: [dataTable],\n totals,\n filterData,\n columns,\n pagination,\n reportUrl: pathname.replace('/download-disabled', '').replace('/download-disabled?', ''),\n reportSearch: url?.search,\n encodedSearch: url?.search ? encodeURIComponent(url.search) : undefined,\n fullUrl,\n }\n}\n\nexport const getRenderData = async ({\n req,\n res,\n services,\n reportDefinition,\n reportQuery,\n reportData,\n count,\n csrfToken,\n canDownload,\n}: {\n req: Request\n res: Response\n services: Services\n reportDefinition: components['schemas']['SingleVariantReportDefinition']\n reportQuery: ReportQuery\n reportData: ListWithWarnings\n csrfToken: string\n count: number\n canDownload: boolean\n}) => {\n const { dataProductDefinitionsPath } = req.query\n const { nestedBaseUrl } = LocalsHelper.getValues(res)\n const { name: reportName, description: reportDescription } = reportDefinition\n const { specification, name, description, classification, printable } = reportDefinition.variant\n const { data } = reportData\n\n if (!specification) {\n throw new Error('No specicication found in definition')\n }\n\n const reportRenderData = await getReportRenderData({ req, res, services, count, specification, reportQuery, data })\n\n const actions = setActions(\n csrfToken,\n reportDefinition,\n reportRenderData.columns,\n `${req.protocol}://${req.get('host')}${req.originalUrl}`,\n canDownload,\n count,\n <string>dataProductDefinitionsPath,\n reportRenderData.reportUrl,\n reportRenderData.reportSearch || '',\n nestedBaseUrl,\n )\n\n return {\n ...reportRenderData,\n reportName,\n name,\n description: description || reportDescription,\n count,\n type: ReportType.REPORT,\n classification,\n printable,\n actions,\n warnings: reportData.warnings,\n canDownload,\n nestedBaseUrl,\n }\n}\n\nexport default {\n getRenderData,\n getReport,\n getReportData,\n getReportRenderData,\n setActions,\n}\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": ["import_utils", "ReportActionsUtils", "SelectedFiltersUtils", "UserStoreItemBuilder", "ReportQuery", "LocalsHelper", "parseUrl", "DataTableBuilder", "PaginationUtils", "TotalsUtils", "FiltersUtils", "ColumnUtils"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../../../dpr/routes/journeys/view-report/sync/routes.ts"],
|
|
4
4
|
"sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { Router } from 'express'\nimport { Services } from '../../../../types/Services'\n\n// Routes\nimport loadReportRoutes from './load-report/routes'\nimport viewReportRoutes from './report/routes'\nimport viewDashboardRoutes from './dashboard/routes'\n\n// middleware\nimport reportAuthoriser from '../../../../middleware/reportAuthoriser'\n\nexport function routes({ layoutPath, services }: { layoutPath: string; services: Services }) {\n const router = Router({ mergeParams: true })\n\n router.use('/report', reportAuthoriser(services, layoutPath), viewReportRoutes({ layoutPath, services }))\n router.use('/dashboard', reportAuthoriser(services, layoutPath), viewDashboardRoutes({ layoutPath, services }))\n router.use(`/load-report`, loadReportRoutes({ layoutPath, services }))\n\n return router\n}\n\nexport default routes\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qBAAuB;AAIvB,oBAA6B;AAC7B,IAAAA,iBAA6B;AAC7B,IAAAA,iBAAgC;AAGhC,8BAA6B;AAEtB,SAAS,OAAO,EAAE,YAAY,SAAS,GAA+C;AAC3F,QAAM,aAAS,uBAAO,EAAE,aAAa,KAAK,CAAC;AAE3C,SAAO,IAAI,eAAW,wBAAAC,SAAiB,UAAU,UAAU,OAAG,eAAAC,SAAiB,EAAE,YAAY,SAAS,CAAC,CAAC;AACxG,SAAO,IAAI,kBAAc,wBAAAD,SAAiB,UAAU,UAAU,OAAG,eAAAE,SAAoB,EAAE,YAAY,SAAS,CAAC,CAAC;AAC9G,SAAO,IAAI,oBAAgB,cAAAC,SAAiB,EAAE,YAAY,SAAS,CAAC,CAAC;AAErE,SAAO;AACT;AAEA,IAAO,iBAAQ;",
|
|
6
6
|
"names": ["import_routes", "reportAuthoriser", "viewReportRoutes", "viewDashboardRoutes", "loadReportRoutes"]
|