@ministryofjustice/hmpps-digital-prison-reporting-frontend 4.28.0 → 4.28.1
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/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.map +1 -1
- 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 +11 -6
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../dpr/utils/DataTableBuilder/DataTableBuilder.ts"],
|
|
4
4
|
"sourcesContent": ["import Dict = NodeJS.Dict\nimport ReportQuery from '../../types/ReportQuery'\nimport { Cell, CellFormat, DataTable, SortKey } from './types'\nimport createUrlForParameters from '../urlHelper'\nimport type { SummaryTemplate } from '../../types/Templates'\nimport { AsyncSummary } from '../../types/UserReports'\nimport DateMapper from '../DateMapper/DateMapper'\nimport { components } from '../../types/api'\n\nclass DataTableBuilder {\n protected fields: components['schemas']['FieldDefinition'][]\n\n private sortData: boolean\n\n protected columns: Array<string> = []\n\n protected reportSummaries: Dict<Array<AsyncSummary>> = {}\n\n // Sortable headers only\n private reportQuery: ReportQuery | null = null\n\n private currentQueryParams: NodeJS.Dict<string | Array<string>> | null = null\n\n private dateMapper = new DateMapper()\n\n constructor(fields: components['schemas']['FieldDefinition'][], sortData = false) {\n this.fields = fields\n this.sortData = sortData\n }\n\n private mapDate(isoDate?: string) {\n if (!isoDate) return ''\n\n return this.dateMapper.toDateString(isoDate, 'local-datetime-short-year')\n }\n\n private mapBoolean(value?: string) {\n if (!value) return ''\n return value.substring(0, 1).toUpperCase() + value.substring(1).toLowerCase()\n }\n\n protected mapRow(\n rowData: NodeJS.Dict<string>,\n extraClasses = '',\n overrideFields: components['schemas']['FieldDefinition'][] = [],\n ): Cell[] {\n return this.fields\n .filter((f) => this.columns.includes(f.name))\n .map((f) => {\n const overrideField = overrideFields.find((o) => o.name === f.name)\n const field = overrideField ?? f\n return this.mapCell(field, rowData, extraClasses)\n })\n }\n\n private mapCell(field: components['schemas']['FieldDefinition'], rowData: NodeJS.Dict<string>, extraClasses = '') {\n const displayValue = rowData[field.name]\n const textValue = this.mapCellValue(field, displayValue)\n let fieldFormat: CellFormat = 'string'\n\n let classes = extraClasses\n\n if (field.wordWrap) {\n classes += ` data-table-cell-wrap-${field.wordWrap.toLowerCase()}`\n }\n\n if (field.header) {\n classes += ' govuk-table__header'\n }\n\n if (field.type === 'double' || field.type === 'long' || typeof displayValue === 'number') {\n fieldFormat = 'numeric'\n }\n\n if (fieldFormat === 'string' && displayValue && typeof displayValue === 'string') {\n const wordCount = displayValue.split(' ').length\n if (wordCount > 10) {\n classes += ' data-table-cell-long-string'\n }\n }\n\n const isHtml = field.type === 'HTML'\n const cell: Cell = {\n fieldName: field.name,\n ...(isHtml ? { html: textValue } : { text: textValue }),\n format: fieldFormat,\n classes: classes.trim(),\n }\n\n return cell\n }\n\n protected mapCellValue(field: components['schemas']['FieldDefinition'], cellData?: string) {\n if (field.calculated) {\n return cellData\n }\n\n switch (field.type) {\n case 'boolean':\n return this.mapBoolean(cellData)\n\n case 'date':\n case 'time':\n return this.mapDate(cellData)\n\n default:\n return cellData === undefined ? '' : cellData\n }\n }\n\n protected mapHeader(disableSort = false, extraClasses: string | null = null): Cell[] {\n return this.fields\n .filter((field) => this.columns.includes(field.name))\n .map((f) => {\n if (this.reportQuery && !disableSort) {\n if (f.sortable) {\n let sortDirection = 'none'\n let url = createUrlForParameters(\n this.currentQueryParams || {},\n {\n sortColumn: f.name,\n sortedAsc: 'true',\n },\n this.fields,\n )\n\n if (f.name === this.reportQuery.sortColumn) {\n sortDirection = this.reportQuery.sortedAsc ? 'ascending' : 'descending'\n\n if (this.reportQuery.sortedAsc) {\n url = createUrlForParameters(\n this.currentQueryParams || {},\n {\n sortColumn: f.name,\n sortedAsc: 'false',\n },\n this.fields,\n )\n }\n }\n\n return {\n html:\n `<a ` +\n `data-column=\"${f.name}\" ` +\n `class=\"data-table-header-button data-table-header-button-sort-${sortDirection}\" ` +\n `href=\"${url}\"` +\n `>${f.display}</a>`,\n ...(extraClasses && { classes: extraClasses }),\n }\n }\n }\n return {\n text: f.display,\n ...(extraClasses && { classes: extraClasses }),\n }\n })\n }\n\n protected mapData(data: Array<Dict<string>>): Cell[][] {\n const mappedHeaderSummary = this.mapSummary('table-header')\n const mappedTableData = this.mergeCells(data.map((rowData) => this.mapRow(rowData)))\n const mappedFooterSummary = this.mapSummary('table-footer')\n\n return mappedHeaderSummary.concat(mappedTableData).concat(mappedFooterSummary)\n }\n\n private mergeCells(rows: Cell[][]): Cell[][] {\n const mergeFieldNames = this.fields\n .filter((f) => (<components['schemas']['SummaryField']>f).mergeRows)\n .map((f) => f.name)\n\n if (mergeFieldNames.length === 0) {\n return rows\n }\n\n const occurrences: Dict<Dict<number>> = {}\n mergeFieldNames.forEach((f) => {\n occurrences[f] = rows.reduce((accumulator: Dict<number>, currentRow) => {\n const currentCell = this.getCellByFieldName(currentRow, f)\n let cellValue = ''\n if (currentCell) {\n cellValue = currentCell.text || currentCell.html || ''\n }\n\n return {\n ...accumulator,\n [cellValue]: (accumulator[cellValue] ?? 0) + 1,\n }\n }, {})\n })\n\n return rows.map((row) => {\n let mergedRow = [...row]\n\n mergeFieldNames.forEach((mergeFieldName) => {\n const currentRowCell = this.getCellByFieldName(row, mergeFieldName)\n let cellValue\n let occurrencesOfValue\n if (currentRowCell && occurrences[mergeFieldName]) {\n cellValue = currentRowCell.text || currentRowCell.html || ''\n occurrencesOfValue = occurrences[mergeFieldName][cellValue]\n\n switch (occurrencesOfValue) {\n case -1:\n mergedRow = mergedRow.filter((c) => c.fieldName !== mergeFieldName)\n break\n\n case 1:\n break\n\n default:\n currentRowCell.rowspan = occurrencesOfValue\n occurrences[mergeFieldName][cellValue] = -1\n }\n }\n })\n\n return mergedRow\n })\n }\n\n private getCellByFieldName(row: Cell[], fieldName: string) {\n return row.find((c) => c.fieldName === fieldName)\n }\n\n private mapSummary(template: SummaryTemplate): Cell[][] {\n if (this.reportSummaries[template]) {\n return this.reportSummaries[template].flatMap((reportSummary) =>\n reportSummary.data.map((rowData) =>\n this.mapRow(\n rowData,\n `dpr-report-summary-cell dpr-report-summary-cell-${template}`,\n <components['schemas']['FieldDefinition'][]>reportSummary.fields,\n ),\n ),\n )\n }\n return []\n }\n\n protected sort(data: Dict<string>[]): Dict<string>[] {\n return this.appendSortKeyToData(data)\n .sort(this.sortKeyComparison())\n .map((d: SortKey) => ({\n ...d,\n }))\n }\n\n protected sortKeyComparison() {\n return (a: SortKey, b: SortKey) => {\n const aValue = a.sortKey\n const bValue = b.sortKey\n\n if (aValue === bValue) {\n return 0\n }\n\n if (aValue < bValue) {\n return -1\n }\n\n return 1\n }\n }\n\n private appendSortKeyToData(\n data: Dict<string>[],\n fields: components['schemas']['FieldDefinition'][] | null = null,\n ): SortKey[] {\n const sortFields = fields || this.fields\n\n return data.map((rowData) => {\n const sortKey = this.getSortKey(rowData, sortFields)\n\n return {\n ...rowData,\n sortKey,\n }\n })\n }\n\n protected mapNamesToFields(names: string[]): components['schemas']['FieldDefinition'][] {\n return names.map((s) => this.fields.find((f) => f.name === s)).filter((n) => n !== undefined)\n }\n\n protected getSortKey(rowData: NodeJS.Dict<string>, sortFields: components['schemas']['FieldDefinition'][]) {\n return sortFields\n .map((f) => {\n const value = rowData[f.name]\n if (value && this.dateMapper.isDate(value)) {\n return this.dateMapper.toDateString(value, 'iso')\n }\n\n return this.mapCellValue(f, value)\n })\n .join('-')\n .toLowerCase()\n }\n\n protected convertDataTableToHtml(dataTable: DataTable): string {\n const head = dataTable.head || []\n const headers = head.map((h) => `<th scope='col' class='govuk-table__header'>${h.html ?? h.text}</th>`)\n const rows = dataTable.rows.map(\n (r) =>\n `<tr class='govuk-table__row'>${r\n .map(\n (c) => `<td class='govuk-table__cell govuk-table__cell--${c.format} ${c.classes}'>${c.html ?? c.text}</td>`,\n )\n .join('')}</tr>`,\n )\n\n return (\n \"<table class='govuk-table'>\" +\n `<thead class='govuk-table__head'>${headers.join('')}</thead>` +\n `<tbody class='govuk-table__body'>${rows.join('')}</tbody>` +\n '</table>'\n )\n }\n\n withHeaderOptions({\n reportQuery,\n columns,\n interactive,\n }: {\n reportQuery?: ReportQuery\n columns: string[]\n interactive: boolean\n }) {\n if (interactive && reportQuery) {\n return this.withHeaderSortOptions(reportQuery)\n }\n return this.withNoHeaderOptions(columns)\n }\n\n withHeaderSortOptions(reportQuery: ReportQuery) {\n this.reportQuery = reportQuery\n this.columns = reportQuery.columns\n this.currentQueryParams = this.reportQuery.toRecordWithFilterPrefix()\n\n return this\n }\n\n withNoHeaderOptions(columns: string[]) {\n this.columns = columns\n return this\n }\n\n buildTable(data: Array<Dict<string>>): DataTable {\n const mappedData = this.mapData(this.sortData ? this.sort(data) : data)\n\n return {\n head: this.mapHeader(),\n rows: mappedData,\n rowCount: data.length,\n colCount: this.columns.length,\n }\n }\n\n withSummaries(reportSummaries: Dict<Array<AsyncSummary>>) {\n this.reportSummaries = reportSummaries\n return this\n }\n\n withSortedData(sortData = true) {\n this.sortData = sortData\n return this\n }\n}\n\nexport { DataTableBuilder }\nexport default DataTableBuilder\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": ["DateMapper", "createUrlForParameters"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../dpr/utils/DataTableBuilder/types.d.ts"],
|
|
4
4
|
"sourcesContent": ["export type CellFormat = 'numeric' | 'string'\n\nexport interface Cell {\n fieldName?: string\n text?: string | undefined\n html?: string | undefined\n format?: CellFormat\n classes?: string\n colspan?: number\n rowspan?: number | undefined\n}\n\nexport interface DataTable {\n head: Array<Cell> | null\n rows: Array<Array<Cell>>\n rowCount: number\n colCount: number\n}\n\nexport interface FieldDefinition {\n name: string\n display?: string\n type?: 'boolean' | 'date' | 'double' | 'HTML' | 'long' | 'string' | 'time'\n wordWrap?: 'none' | 'normal' | 'break-words'\n calculated?: boolean\n sortable?: boolean\n header?: boolean\n mergeRows?: boolean\n visible?: boolean\n}\n\nexport interface SortKey {\n sortKey: string\n}\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
|
|
6
6
|
"names": []
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../dpr/utils/DateMapper/DateMapper.ts"],
|
|
4
4
|
"sourcesContent": ["import dayjs, { Dayjs } from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\nimport { DateType } from './types'\nimport logger from '../logger'\n\nclass DateMapper {\n private isoDateRegEx = /^(\\d{4}[/-](0?[1-9]|1[012])[/-](0?[1-9]|[12][0-9]|3[01]))/\n\n private localDateRegEx = /^(0?[1-9]|[12][0-9]|3[01])[/-](0?[1-9]|1[012])[/-]\\d{4}$/\n\n private localDateShortYearRegEx = /^(0?[1-9]|[12][0-9]|3[01])[/-](0?[1-9]|1[012])[/-]\\d{2}$/\n\n private localDateTimeRegEx = /^(0?[1-9]|[12][0-9]|3[01])[/-](0?[1-9]|1[012])[/-]\\d{4} [0-2]\\d:[0-5]\\d$/\n\n private localDateTimeShortYearRegEx = /^(0?[1-9]|[12][0-9]|3[01])[/-](0?[1-9]|1[012])[/-]\\d{2} [0-2]\\d:[0-5]\\d$/\n\n private isoFormat = 'YYYY-MM-DD'\n\n private localDateFormatInput = 'D/M/YYYY'\n\n private localDateFormatOutput = 'DD/MM/YYYY'\n\n private localDateShortYearFormatInput = 'D/M/YY'\n\n private localDateShortYearFormatOutput = 'DD/MM/YY'\n\n private localDateTimeFormatInput = 'D/M/YYYY HH:mm'\n\n private localDateTimeFormatOutput = 'DD/MM/YYYY HH:mm'\n\n private localDateTimeShortYearFormatInput = 'D/M/YY HH:mm'\n\n private localDateTimeShortYearFormatOutput = 'DD/MM/YY HH:mm'\n\n getDateType(value: string | null): DateType {\n if (value && value.match) {\n if (value.match(this.isoDateRegEx)) {\n return 'iso'\n }\n\n if (value.match(this.localDateRegEx)) {\n return 'local-date'\n }\n\n if (value.match(this.localDateShortYearRegEx)) {\n return 'local-date-short-year'\n }\n\n if (value.match(this.localDateTimeRegEx)) {\n return 'local-datetime'\n }\n\n if (value.match(this.localDateTimeShortYearRegEx)) {\n return 'local-datetime-short-year'\n }\n }\n\n return 'none'\n }\n\n getDateWrapper(value: string | null): Dayjs | null {\n dayjs.extend(customParseFormat)\n if (!value) {\n return null\n }\n switch (this.getDateType(value)) {\n case 'iso':\n return dayjs(value)\n case 'local-date':\n return dayjs(value, this.localDateFormatInput)\n case 'local-date-short-year':\n return dayjs(value, this.localDateShortYearFormatInput)\n case 'local-datetime':\n return dayjs(value, this.localDateTimeFormatInput)\n case 'local-datetime-short-year':\n return dayjs(value, this.localDateTimeShortYearFormatInput)\n default:\n return null\n }\n }\n\n isDate(value: string | null): boolean {\n return this.getDateType(value) !== 'none'\n }\n\n toDateString(value: string | null, type: DateType): string | undefined {\n const dateWrapper = this.getDateWrapper(value)\n\n if (dateWrapper) {\n switch (type) {\n case 'iso':\n return dateWrapper.format(this.isoFormat)\n case 'local-date':\n return dateWrapper.format(this.localDateFormatOutput)\n case 'local-date-short-year':\n return dateWrapper.format(this.localDateShortYearFormatOutput)\n case 'local-datetime':\n return dateWrapper.format(this.localDateTimeFormatOutput)\n case 'local-datetime-short-year':\n return dateWrapper.format(this.localDateTimeShortYearFormatOutput)\n default:\n logger.warn(`Invalid date type: ${type}`)\n return undefined\n }\n }\n\n if (value) {\n logger.warn(`Could not map non-date value : ${value}`)\n }\n return undefined\n }\n}\n\nexport { DateMapper }\nexport default DateMapper\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA6B;AAC7B,+BAA8B;AAE9B,oBAAmB;AAEnB,MAAM,WAAW;AAAA,EACP,eAAe;AAAA,EAEf,iBAAiB;AAAA,EAEjB,0BAA0B;AAAA,EAE1B,qBAAqB;AAAA,EAErB,8BAA8B;AAAA,EAE9B,YAAY;AAAA,EAEZ,uBAAuB;AAAA,EAEvB,wBAAwB;AAAA,EAExB,gCAAgC;AAAA,EAEhC,iCAAiC;AAAA,EAEjC,2BAA2B;AAAA,EAE3B,4BAA4B;AAAA,EAE5B,oCAAoC;AAAA,EAEpC,qCAAqC;AAAA,EAE7C,YAAY,OAAgC;AAC1C,QAAI,SAAS,MAAM,OAAO;AACxB,UAAI,MAAM,MAAM,KAAK,YAAY,GAAG;AAClC,eAAO;AAAA,MACT;AAEA,UAAI,MAAM,MAAM,KAAK,cAAc,GAAG;AACpC,eAAO;AAAA,MACT;AAEA,UAAI,MAAM,MAAM,KAAK,uBAAuB,GAAG;AAC7C,eAAO;AAAA,MACT;AAEA,UAAI,MAAM,MAAM,KAAK,kBAAkB,GAAG;AACxC,eAAO;AAAA,MACT;AAEA,UAAI,MAAM,MAAM,KAAK,2BAA2B,GAAG;AACjD,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,eAAe,OAAoC;AACjD,iBAAAA,QAAM,OAAO,yBAAAC,OAAiB;AAC9B,QAAI,CAAC,OAAO;AACV,aAAO;AAAA,IACT;AACA,YAAQ,KAAK,YAAY,KAAK,GAAG;AAAA,MAC/B,KAAK;AACH,mBAAO,aAAAD,SAAM,KAAK;AAAA,MACpB,KAAK;AACH,mBAAO,aAAAA,SAAM,OAAO,KAAK,oBAAoB;AAAA,MAC/C,KAAK;AACH,mBAAO,aAAAA,SAAM,OAAO,KAAK,6BAA6B;AAAA,MACxD,KAAK;AACH,mBAAO,aAAAA,SAAM,OAAO,KAAK,wBAAwB;AAAA,MACnD,KAAK;AACH,mBAAO,aAAAA,SAAM,OAAO,KAAK,iCAAiC;AAAA,MAC5D;AACE,eAAO;AAAA,IACX;AAAA,EACF;AAAA,EAEA,OAAO,OAA+B;AACpC,WAAO,KAAK,YAAY,KAAK,MAAM;AAAA,EACrC;AAAA,EAEA,aAAa,OAAsB,MAAoC;AACrE,UAAM,cAAc,KAAK,eAAe,KAAK;AAE7C,QAAI,aAAa;AACf,cAAQ,MAAM;AAAA,QACZ,KAAK;AACH,iBAAO,YAAY,OAAO,KAAK,SAAS;AAAA,QAC1C,KAAK;AACH,iBAAO,YAAY,OAAO,KAAK,qBAAqB;AAAA,QACtD,KAAK;AACH,iBAAO,YAAY,OAAO,KAAK,8BAA8B;AAAA,QAC/D,KAAK;AACH,iBAAO,YAAY,OAAO,KAAK,yBAAyB;AAAA,QAC1D,KAAK;AACH,iBAAO,YAAY,OAAO,KAAK,kCAAkC;AAAA,QACnE;AACE,wBAAAE,QAAO,KAAK,sBAAsB,IAAI,EAAE;AACxC,iBAAO;AAAA,MACX;AAAA,IACF;AAEA,QAAI,OAAO;AACT,oBAAAA,QAAO,KAAK,kCAAkC,KAAK,EAAE;AAAA,IACvD;AACA,WAAO;AAAA,EACT;AACF;AAGA,IAAO,qBAAQ;",
|
|
6
6
|
"names": ["dayjs", "customParseFormat", "logger"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../dpr/utils/DateMapper/types.d.ts"],
|
|
4
4
|
"sourcesContent": ["export type DateType =\n | 'iso'\n | 'local-date'\n | 'local-date-short-year'\n | 'local-datetime'\n | 'local-datetime-short-year'\n | 'none'\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
|
|
6
6
|
"names": []
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../dpr/utils/ErrorHandler.ts"],
|
|
4
4
|
"sourcesContent": ["import { components } from '../types/api'\nimport logger from './logger'\n\nexport interface DprErrorMessage {\n userMessage?: string\n developerMessage?: string\n stack?: string\n moreInfo?: string\n status?: string | number\n}\n\ninterface DprErrorData {\n data: components['schemas']['ErrorResponse']\n}\n\ninterface ZodValidationError {\n userMessage: string\n stack: string\n}\n\nclass ErrorHandler {\n error: Error | components['schemas']['ErrorResponse'] | string | undefined | unknown | DprErrorData\n\n developerMessage?: string | undefined\n\n userMessage?: string | undefined\n\n moreInfo?: string | undefined\n\n stack?: string | undefined\n\n status?: number | string | undefined\n\n constructor(error: Error | components['schemas']['ErrorResponse'] | string | undefined | unknown) {\n this.error = error\n logger.error(`Error: ${JSON.stringify(error)}`)\n }\n\n formatError = (): DprErrorMessage => {\n return this.handleError()\n }\n\n private handleError = (): DprErrorMessage => {\n // status: FAILED\n if (typeof this.error === 'string') {\n this.developerMessage = this.error\n }\n\n // Error response\n else if ((<DprErrorData>this.error).data) {\n const error = (<DprErrorData>this.error).data\n this.developerMessage = error.developerMessage\n this.userMessage = error.userMessage\n this.moreInfo = error.moreInfo\n this.status = error.status\n }\n\n // client side error\n else if (Object.prototype.hasOwnProperty.call(this.error, 'message')) {\n const error = <Error>this.error\n this.userMessage = error.message\n this.stack = error.stack\n this.status = 500\n }\n\n // Server response error\n else if (Object.prototype.hasOwnProperty.call(this.error, 'developerMessage')) {\n const error = <components['schemas']['ErrorResponse']>this.error\n this.developerMessage = error.developerMessage\n this.userMessage = error.userMessage\n this.moreInfo = error.moreInfo\n this.status = error.status\n }\n\n // Zod error\n else if (Object.prototype.hasOwnProperty.call(this.error, 'userMessage')) {\n const error = <ZodValidationError>this.error\n if (error.stack && error.stack.includes('ZodError')) {\n const errorArr: { message: string }[] = JSON.parse(error.userMessage)\n this.userMessage = errorArr.map((m) => m.message).join(', ')\n this.status = 500\n this.stack = error.stack\n }\n }\n\n const formattedError = {\n ...(this.developerMessage && { developerMessage: this.developerMessage }),\n ...(this.userMessage && { userMessage: this.userMessage }),\n ...(this.moreInfo && { moreInfo: this.moreInfo }),\n ...(this.stack && { stack: this.stack }),\n ...(this.status && { status: this.status }),\n }\n\n logger.error(JSON.stringify(formattedError, null, 2))\n\n return formattedError\n }\n}\n\nexport { ErrorHandler }\nexport default ErrorHandler\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBAAmB;AAmBnB,MAAM,aAAa;AAAA,EACjB;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA,YAAY,OAAsF;AAChG,SAAK,QAAQ;AACb,kBAAAA,QAAO,MAAM,UAAU,KAAK,UAAU,KAAK,CAAC,EAAE;AAAA,EAChD;AAAA,EAEA,cAAc,MAAuB;AACnC,WAAO,KAAK,YAAY;AAAA,EAC1B;AAAA,EAEQ,cAAc,MAAuB;AAE3C,QAAI,OAAO,KAAK,UAAU,UAAU;AAClC,WAAK,mBAAmB,KAAK;AAAA,IAC/B,WAGwB,KAAK,MAAO,MAAM;AACxC,YAAM,QAAuB,KAAK,MAAO;AACzC,WAAK,mBAAmB,MAAM;AAC9B,WAAK,cAAc,MAAM;AACzB,WAAK,WAAW,MAAM;AACtB,WAAK,SAAS,MAAM;AAAA,IACtB,WAGS,OAAO,UAAU,eAAe,KAAK,KAAK,OAAO,SAAS,GAAG;AACpE,YAAM,QAAe,KAAK;AAC1B,WAAK,cAAc,MAAM;AACzB,WAAK,QAAQ,MAAM;AACnB,WAAK,SAAS;AAAA,IAChB,WAGS,OAAO,UAAU,eAAe,KAAK,KAAK,OAAO,kBAAkB,GAAG;AAC7E,YAAM,QAAgD,KAAK;AAC3D,WAAK,mBAAmB,MAAM;AAC9B,WAAK,cAAc,MAAM;AACzB,WAAK,WAAW,MAAM;AACtB,WAAK,SAAS,MAAM;AAAA,IACtB,WAGS,OAAO,UAAU,eAAe,KAAK,KAAK,OAAO,aAAa,GAAG;AACxE,YAAM,QAA4B,KAAK;AACvC,UAAI,MAAM,SAAS,MAAM,MAAM,SAAS,UAAU,GAAG;AACnD,cAAM,WAAkC,KAAK,MAAM,MAAM,WAAW;AACpE,aAAK,cAAc,SAAS,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,IAAI;AAC3D,aAAK,SAAS;AACd,aAAK,QAAQ,MAAM;AAAA,MACrB;AAAA,IACF;AAEA,UAAM,iBAAiB;AAAA,MACrB,GAAI,KAAK,oBAAoB,EAAE,kBAAkB,KAAK,iBAAiB;AAAA,MACvE,GAAI,KAAK,eAAe,EAAE,aAAa,KAAK,YAAY;AAAA,MACxD,GAAI,KAAK,YAAY,EAAE,UAAU,KAAK,SAAS;AAAA,MAC/C,GAAI,KAAK,SAAS,EAAE,OAAO,KAAK,MAAM;AAAA,MACtC,GAAI,KAAK,UAAU,EAAE,QAAQ,KAAK,OAAO;AAAA,IAC3C;AAEA,kBAAAA,QAAO,MAAM,KAAK,UAAU,gBAAgB,MAAM,CAAC,CAAC;AAEpD,WAAO;AAAA,EACT;AACF;AAGA,IAAO,uBAAQ;",
|
|
6
6
|
"names": ["logger"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../dpr/utils/ParentChildDataTableBuilder/ParentChildDataTableBuilder.ts"],
|
|
4
4
|
"sourcesContent": ["import Dict = NodeJS.Dict\nimport { components } from '../../types/api'\nimport { Cell, DataTable } from '../DataTableBuilder/types'\nimport DataTableBuilder from '../DataTableBuilder/DataTableBuilder'\nimport { distinct } from '../arrayUtils'\nimport { ChildData, ParentChildSortKey } from './types'\nimport SectionedDataTableBuilder from '../SectionedDataTableBuilder/SectionedDataTableBuilder'\n\nclass ParentChildDataTableBuilder extends SectionedDataTableBuilder {\n variant: components['schemas']['VariantDefinition']\n\n childVariants: components['schemas']['ChildVariantDefinition'][]\n\n childData: Array<ChildData> = []\n\n constructor(variant: components['schemas']['VariantDefinition']) {\n const { specification } = variant\n const { sections, template } = <components['schemas']['Specification']>specification\n super(<components['schemas']['Specification']>specification)\n\n this.sections = sections\n this.template = template\n this.variant = variant\n this.childVariants = this.variant.childVariants || []\n }\n\n private createParentChildTable(parentData: Array<Dict<string>>, header: Cell[]) {\n let sectionedParentChildData: Dict<Dict<Array<Dict<string>>>> = {}\n const joinFields = this.mapNamesToFields(this.childVariants.flatMap((c) => c.joinFields).reduce(distinct, []))\n // Get the parent-child joins definition data\n\n // Create the section keys and\n const parentChildKeys = this.calculateParentChildKeys(parentData, joinFields)\n parentChildKeys.forEach((parentKey) => {\n sectionedParentChildData[parentKey.sortKey] = {\n parent: [],\n }\n })\n\n sectionedParentChildData = this.splitParentDataIntoSections(sectionedParentChildData, parentData, joinFields)\n sectionedParentChildData = this.splitChildDataIntoSections(parentChildKeys, sectionedParentChildData)\n\n const childDataTableBuilders = this.createChildDataTableBuilders()\n\n const parentChildTable = parentChildKeys.flatMap((key) => {\n const sectionData = sectionedParentChildData[key.sortKey] || {}\n\n let parentSectionData: Dict<string>[] = []\n if (sectionData) {\n parentSectionData = sectionData['parent'] ? sectionData['parent'] : []\n }\n\n return [header].concat(parentSectionData.map((r) => this.mapRow(r, 'dpr-parent-cell'))).concat(\n this.childVariants\n .filter((childVariant) => sectionData && sectionData[childVariant.id])\n .map((childVariant) => {\n const builder = childDataTableBuilders[childVariant.id]\n const section = sectionData[childVariant.id]\n const dataTable = builder && section ? builder.buildTable(section) : undefined\n const dataTableHtml = dataTable ? this.convertDataTableToHtml(dataTable) : ''\n\n return [\n {\n classes: 'dpr-child-report-cell',\n format: 'string',\n html: `<div class='dpr-child-report'><h2 class=\"govuk-heading-s\">${childVariant.name}</h2><div class=\"dpr-child-report_table\">${dataTableHtml}</div></div>`,\n colspan: this.columns.length,\n },\n ]\n }),\n )\n })\n\n return parentChildTable\n }\n\n private createParentChildSectionRows(parentData: Array<Dict<string>>, header: Cell[]) {\n const sectionsDetails = this.mapSections(parentData)\n const sectionedData = sectionsDetails.sectionedData as Dict<Array<Dict<string>>>\n const sectionedParentChildSectionedRows: {\n sectionDescription: string\n rows: Cell[][]\n count: number\n countDescription: string\n }[] = []\n\n Object.keys(sectionedData).forEach((sectionDescription) => {\n const data = sectionedData[sectionDescription] as Array<Dict<string>>\n\n sectionedParentChildSectionedRows.push({\n sectionDescription,\n ...this.getSectionCount(sectionedData, sectionDescription),\n rows: this.createParentChildTable(data, header),\n })\n })\n\n const rows = sectionedParentChildSectionedRows.flatMap((section, index) => {\n const sectionHeader = this.createSectionHeader(\n section.sectionDescription,\n index,\n section.count,\n section.countDescription,\n )\n return [...sectionHeader, ...section.rows]\n })\n\n return rows\n }\n\n private mapParentChildData(parentData: Array<Dict<string>>, header: Cell[]): Cell[][] {\n if (this.sections?.length) {\n return this.createParentChildSectionRows(parentData, header)\n }\n return this.createParentChildTable(parentData, header)\n }\n\n private createChildDataTableBuilders() {\n const childDataTables: Dict<DataTableBuilder> = this.childVariants.reduce((previousValue, childVariant) => {\n const { specification } = childVariant\n const fields = specification ? specification.fields : []\n const fieldNamesToDisplay = fields.filter((f) => f.visible || f.mandatory).map((f) => f.name)\n\n const dataTableBuilder = new DataTableBuilder(fields).withNoHeaderOptions(fieldNamesToDisplay).withSortedData()\n\n return {\n ...previousValue,\n [childVariant.id]: dataTableBuilder,\n }\n }, {})\n return childDataTables\n }\n\n private calculateParentChildKeys(\n parentData: Array<NodeJS.Dict<string>>,\n joinFields: components['schemas']['FieldDefinition'][],\n ) {\n return parentData\n .map(\n (rowData): ParentChildSortKey => ({\n sortKey: this.getSortKey(rowData, joinFields),\n childSortKeys: this.childVariants.reduce((previousValue, childVariant) => {\n return {\n ...previousValue,\n [childVariant.id]: this.getSortKey(rowData, this.mapNamesToFields(childVariant.joinFields)),\n }\n }, {}),\n }),\n )\n .reduce((previousValue: ParentChildSortKey[], sortKey: ParentChildSortKey) => {\n if (previousValue.find((v) => v.sortKey === sortKey.sortKey)) {\n return previousValue\n }\n return previousValue.concat(sortKey)\n }, [])\n }\n\n private splitParentDataIntoSections(\n sectionedParentChildData: NodeJS.Dict<NodeJS.Dict<Array<NodeJS.Dict<string>>>>,\n parentData: Array<NodeJS.Dict<string>>,\n joinFields: components['schemas']['FieldDefinition'][],\n ) {\n return parentData.reduce((previousValue, rowData) => {\n const parentKey: string = this.getSortKey(rowData, joinFields)\n const previousParentValue = previousValue[parentKey] ? previousValue[parentKey]['parent'] : []\n\n return {\n ...previousValue,\n ...(previousParentValue && {\n [parentKey]: {\n parent: previousParentValue.concat(rowData),\n },\n }),\n }\n }, sectionedParentChildData)\n }\n\n private splitChildDataIntoSections(\n parentKeys: ParentChildSortKey[],\n sectionedParentChildData: Dict<Dict<Array<Dict<string>>>>,\n ): Dict<Dict<Array<Dict<string>>>> {\n const sectionedParentChildDataWithChildren = { ...sectionedParentChildData }\n\n this.childVariants.forEach((childVariant) => {\n const childFields = this.mapNamesToFields(childVariant.joinFields)\n const matchingChildData = this.childData.find((d) => d.id === childVariant.id)\n const data = matchingChildData ? matchingChildData.data : []\n\n data\n .filter((rowData) => {\n const sortKey = this.getSortKey(rowData, childFields)\n return parentKeys.find((p) => p.childSortKeys[childVariant.id] === sortKey)\n })\n .forEach((rowData) => {\n const sortKey = this.getSortKey(rowData, childFields)\n const parent = parentKeys.find((p) => p.childSortKeys[childVariant.id] === sortKey)\n const parentSortKey = parent ? parent.sortKey : ''\n const parentSection = sectionedParentChildDataWithChildren[parentSortKey]\n if (parentSection) {\n const existingChildData = parentSection[childVariant.id] || []\n parentSection[childVariant.id] = existingChildData.concat(rowData)\n }\n })\n })\n\n return sectionedParentChildDataWithChildren\n }\n\n withChildData(childData: Array<ChildData>) {\n this.childData = childData\n return this\n }\n\n override buildTable(data: Array<Dict<string>>): DataTable {\n return {\n head: null,\n rows: this.mapParentChildData(data, this.mapHeader(true, 'govuk-table__header')),\n rowCount: data.length,\n colCount: this.columns.length,\n }\n }\n}\n\nexport { ParentChildDataTableBuilder }\nexport default ParentChildDataTableBuilder\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": ["SectionedDataTableBuilder", "DataTableBuilder"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../dpr/utils/ParentChildDataTableBuilder/types.d.ts"],
|
|
4
4
|
"sourcesContent": ["import { SortKey } from '../DataTableBuilder/types'\nimport Dict = NodeJS.Dict\n\nexport interface ParentChildSortKey extends SortKey {\n childSortKeys: Dict<string>\n}\n\nexport interface ChildData {\n id: string\n data: Array<Dict<string>>\n}\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
|
|
6
6
|
"names": []
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../dpr/utils/Personalisation/personalisationUtils.ts"],
|
|
4
4
|
"sourcesContent": ["import { Request, Response } from 'express'\nimport { Services } from '../../types/Services'\nimport localsHelper from '../localsHelper'\nimport { ReportType } from '../../types/UserReports'\nimport { components } from '../../types/api'\nimport { FilterType } from '../../components/_filters/filter-input/enum'\nimport DateRangeInputUtils from '../../components/_inputs/date-range/utils'\nimport GranularDateRangeInputUtils from '../../components/_inputs/granular-date-range/utils'\nimport MultiSelectUtils from '../../components/_inputs/multi-select/utils'\nimport DateInputUtils from '../../components/_inputs/date-input/utils'\nimport { RenderFiltersReturnValue } from '../../components/_async/async-filters-form/types'\nimport {\n DateFilterValue,\n DateRangeFilterValue,\n FilterValue,\n FilterValueWithOptions,\n GranularDateRangeFilterValue,\n MultiselectFilterValue,\n} from '../../components/_filters/types'\nimport { defaultFilterValue } from './types'\nimport { FiltersType } from '../../components/_filters/filtersTypeEnum'\nimport { getRequestParam } from '../indexedAccesHelper'\n\nexport const saveDefaults = async (type: FiltersType, res: Response, req: Request, services: Services) => {\n const defaultValuesForReport = await getDefaultValues(req, res, services, type)\n const { dprUser } = localsHelper.getValues(res)\n const id = getRequestParam({ req, param: 'id' })\n const reportId = getRequestParam({ req, param: 'reportId' })\n const { defaultFilterValuesService } = services\n return defaultFilterValuesService\n ? defaultFilterValuesService.save(dprUser.id, reportId, id, defaultValuesForReport)\n : undefined\n}\n\nexport const removeDefaults = async (type: FiltersType, res: Response, req: Request, services: Services) => {\n const { dprUser } = localsHelper.getValues(res)\n const { reportId, id } = req.params\n const { defaultFilterValuesService } = services\n return defaultFilterValuesService ? defaultFilterValuesService.delete(dprUser.id, reportId, id, type) : undefined\n}\n\nconst getDefaultValues = async (\n req: Request,\n res: Response,\n services: Services,\n filtersType: FiltersType,\n): Promise<defaultFilterValue[]> => {\n const { token, definitionsPath } = localsHelper.getValues(res)\n const { reportId, id, type } = req.params\n\n let definition: components['schemas']['SingleVariantReportDefinition'] | components['schemas']['DashboardDefinition']\n let fields = []\n if (type === ReportType.REPORT) {\n definition = await services.reportingService.getDefinition(token, reportId, id, definitionsPath)\n fields = definition.variant.specification?.fields || []\n } else {\n definition = await services.dashboardService.getDefinition(token, reportId, id, definitionsPath)\n fields = definition.filterFields || []\n }\n\n const bodyFilterValues = Object.keys(req.body)\n .filter((k) => {\n return k.includes('filters.') || k.includes('sortColumn') || k.includes('sortedAsc')\n })\n .map((k) => {\n return { name: k.replace('filters.', ''), value: req.body[k] }\n })\n .map((k) => {\n const n = k.name.split('.')[0]\n const field = fields.find((f) => f.name === n)\n let { value, name } = k\n\n if (field) {\n const filterType = field.filter?.type.toLocaleLowerCase()\n\n switch (filterType) {\n case FilterType.multiselect.toLocaleLowerCase():\n value = Array.isArray(k.value) ? k.value.join(',') : k.value\n break\n\n case FilterType.dateRange.toLocaleLowerCase():\n ;({ value, name } = DateRangeInputUtils.setDefaultValue(req, name))\n break\n\n case FilterType.granularDateRange.toLocaleLowerCase():\n ;({ name, value } = GranularDateRangeInputUtils.setDefaultValue(req, name))\n break\n\n default:\n break\n }\n }\n\n return {\n name,\n value,\n type: filtersType,\n }\n })\n\n const defaultValuesConfig = Array.from(new Set(bodyFilterValues.map((a) => a.name)))\n .map((name) => {\n return bodyFilterValues.find((a) => a.name === name)\n })\n .filter((c) => c !== undefined)\n\n const result = defaultValuesConfig.filter((defaultValue) => {\n return defaultValue ? defaultValue.value !== '' : false\n })\n\n return result\n}\n\nexport const setFilterValuesFromSavedDefaults = (\n filters: FilterValue[],\n sortBy: FilterValue[],\n defaultValues: defaultFilterValue[],\n): RenderFiltersReturnValue => {\n const hasDefaults = filters.some((f) => {\n const defaultValue = defaultValues.findIndex((v) => v.name === f.name)\n return defaultValue !== -1\n })\n\n const filterValues = filters.map((filter) => {\n const defaultValue = defaultValues.find((v) => v.name === filter.name)\n let updatedFilter = {\n ...filter,\n }\n const type = filter.type.toLocaleLowerCase()\n\n switch (type) {\n case FilterType.multiselect.toLocaleLowerCase():\n updatedFilter = MultiSelectUtils.setFilterValuesFromSavedDefault(\n <MultiselectFilterValue>updatedFilter,\n hasDefaults,\n defaultValue,\n )\n break\n case FilterType.date.toLocaleLowerCase():\n if (hasDefaults) {\n updatedFilter.value = ''\n }\n if (defaultValue) {\n updatedFilter = <DateFilterValue>DateInputUtils.setFilterValueFromDefault(defaultValue, updatedFilter)\n }\n break\n case FilterType.dateRange.toLocaleLowerCase():\n if (hasDefaults) {\n updatedFilter.value = { start: '', end: '', relative: undefined }\n }\n if (defaultValue) {\n updatedFilter = <DateRangeFilterValue>(\n DateRangeInputUtils.setFilterValueFromDefault(defaultValue, updatedFilter)\n )\n }\n break\n case FilterType.granularDateRange.toLocaleLowerCase():\n if (hasDefaults) {\n updatedFilter.value = { start: '', end: '', granularity: undefined, quickFilter: undefined }\n }\n if (defaultValue) {\n updatedFilter = <GranularDateRangeFilterValue>(\n GranularDateRangeInputUtils.setFilterValueFromDefault(defaultValue, updatedFilter)\n )\n }\n break\n default:\n {\n let value = hasDefaults ? '' : updatedFilter.value\n value = defaultValue ? defaultValue.value : value\n updatedFilter = {\n ...filter,\n value,\n }\n }\n\n break\n }\n\n return updatedFilter\n })\n\n const sortValues = sortBy.map((sortFilter) => {\n const defaultValue = defaultValues.find((v) => v.name === sortFilter.name)\n return {\n ...sortFilter,\n ...(defaultValue && { value: defaultValue.value }),\n }\n })\n\n return {\n filters: filterValues,\n sortBy: sortValues,\n }\n}\n\nexport const setUserContextDefaults = (res: Response, filters: FilterValue[]) => {\n const { dprUser } = localsHelper.getValues(res)\n const { activeCaseLoadId } = dprUser\n\n filters.forEach((filter) => {\n if (\n filter.type.toLocaleLowerCase() === FilterType.autocomplete.toLocaleLowerCase() &&\n filter.text.toLocaleLowerCase().includes('establishment') &&\n activeCaseLoadId?.length\n ) {\n const f = <FilterValueWithOptions>filter\n const option = f.options.find((opt) => opt.value === activeCaseLoadId)\n\n if (option) {\n f.value = option.text\n f.staticOptionNameValue = activeCaseLoadId\n }\n }\n })\n\n return filters\n}\n\nexport default { saveDefaults, removeDefaults, setFilterValuesFromSavedDefaults, setUserContextDefaults }\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": ["import_utils", "localsHelper", "DateRangeInputUtils", "GranularDateRangeInputUtils", "MultiSelectUtils", "DateInputUtils"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../dpr/utils/Personalisation/types.d.ts"],
|
|
4
4
|
"sourcesContent": ["import { Granularity, QuickFilters } from '../../components/_inputs/granular-date-range/types'\nimport { FiltersType } from '../../components/_filters/filtersTypeEnum'\nimport RelativeDateRange from '../../components/_inputs/date-range/types'\n\nexport interface defaultFilterValue {\n name: string\n value: string | DefaultDateFilterValue | DefaultGranularDateFilterValue\n type?: FiltersType\n}\n\nexport interface DefaultDateFilterValue {\n start: string\n end: string\n relative?: RelativeDateRange\n}\n\nexport interface DefaultGranularDateFilterValue {\n start: string\n end: string\n granularity: Granularity\n quickFilter: QuickFilters\n}\n\nexport interface defaultFilterConfig {\n reportId: string\n id: string\n values: defaultFilterValue[]\n}\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
|
|
6
6
|
"names": []
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../dpr/utils/SectionedDataTableBuilder/SectionedDataTableBuilder.ts"],
|
|
4
4
|
"sourcesContent": ["import Dict = NodeJS.Dict\nimport { components } from '../../types/api'\nimport { Cell, DataTable } from '../DataTableBuilder/types'\nimport type { SummaryTemplate, Template } from '../../types/Templates'\nimport DataTableBuilder from '../DataTableBuilder/DataTableBuilder'\nimport { distinct } from '../arrayUtils'\nimport SummaryDataTableBuilder from '../SummaryDataTableBuilder/SummaryDataTableBuilder'\nimport { SectionSortKey } from './types'\n\nclass SectionedDataTableBuilder extends DataTableBuilder {\n sections: Array<string>\n\n template: Template\n\n constructor(specification: components['schemas']['Specification']) {\n const { fields, sections, template } = specification\n super(fields)\n this.sections = sections\n this.template = template\n }\n\n /**\n * Creates the section heading strings\n *\n * @param {Dict<string>[]} data\n * @param {FieldDefinition[]} sectionFields\n * @return {*} {string[]} array of section headings\n */\n private createSectionHeadings(\n data: Dict<string>[],\n sectionFields: components['schemas']['FieldDefinition'][],\n ): string[] {\n return data\n .map(\n (rowData): SectionSortKey => ({\n description: this.mapSectionDescription(rowData),\n sortKey: this.getSortKey(rowData, sectionFields),\n }),\n )\n .sort(this.sortKeyComparison())\n .map((s) => s.description)\n .reduce(distinct, [])\n }\n\n /**\n * Initialise section heading arrays\n *\n * @private\n * @param {string[]} sectionDescriptions\n * @return {*}\n * @memberof SectionedDataTableBuilder\n */\n initSectionData(sectionDescriptions: string[]) {\n const sectionedData: Dict<Cell[][]> | Dict<Array<Dict<string>>> = {}\n sectionDescriptions.forEach((sectionDescription) => {\n sectionedData[sectionDescription] = []\n })\n return sectionedData\n }\n\n /**\n * Maps the rows to the correct section\n *\n * @private\n * @param {Array<Dict<string>>} data\n * @param {Dict<Cell[][]>} sectionedData\n * @return {*}\n * @memberof SectionedDataTableBuilder\n */\n private mapRowsToSection(data: Array<Dict<string>>, sectionedData: Dict<Cell[][]>) {\n return data.reduce((previousValue, rowData) => {\n const sectionDescription: string = this.mapSectionDescription(rowData)\n const mappedData = this.mapRow(rowData)\n const previousValueDescription = previousValue[sectionDescription]\n\n return {\n ...previousValue,\n ...(previousValueDescription && {\n [sectionDescription]: previousValueDescription.concat([mappedData]),\n }),\n }\n }, sectionedData)\n }\n\n /**\n * Maps the rows to the correct section\n *\n * @private\n * @param {Array<Dict<string>>} data\n * @param {Dict<Cell[][]>} sectionedData\n * @return {*}\n * @memberof SectionedDataTableBuilder\n */\n private mapDataToSection(data: Array<Dict<string>>, sectionedData: Dict<Array<Dict<string>>>) {\n return data.reduce((previousValue, rowData) => {\n const sectionDescription: string = this.mapSectionDescription(rowData)\n const previousValueDescription = previousValue[sectionDescription]\n const section = {\n ...previousValue,\n ...(previousValueDescription && {\n [sectionDescription]: previousValueDescription.concat([rowData]),\n }),\n }\n return section\n }, sectionedData)\n }\n\n /**\n * Gets the counts for rows in section\n *\n * @param {Dict<Cell[][]>} sectionedData\n * @param {string} sectionDescription\n * @return {*}\n * @memberof SectionedDataTableBuilder\n */\n getSectionCount(sectionedData: Dict<Cell[][]> | Dict<Dict<string>[]>, sectionDescription: string) {\n const count = sectionedData[sectionDescription] ? sectionedData[sectionDescription].length : 0\n const countDescription = `${count} result${count === 1 ? '' : 's'}`\n\n return {\n count,\n countDescription,\n }\n }\n\n /**\n * Creates the summaries and builds the table with summaries\n *\n * @private\n * @param {string} sectionDescription\n * @param {Cell[][]} mappedTableData\n * @param {Cell[]} header\n * @return {*}\n * @memberof SectionedDataTableBuilder\n */\n private mapSummariesAndCreateTable(sectionDescription: string, mappedTableData: Cell[][], header: Cell[]) {\n let tableContent: Cell[][] = []\n\n let mappedSectionHeaderSummary: Cell[][] = []\n let mappedHeaderSummary: Cell[][] = []\n let mappedFooterSummary: Cell[][] = []\n let mappedSectionFooterSummary: Cell[][] = []\n\n mappedSectionHeaderSummary = this.mapSectionSummaryTables(sectionDescription, 'section-header', this.columns.length)\n mappedHeaderSummary = this.mapSectionSummaryRows('table-header', sectionDescription)\n mappedFooterSummary = this.mapSectionSummaryRows('table-footer', sectionDescription)\n mappedSectionFooterSummary = this.mapSectionSummaryTables(sectionDescription, 'section-footer', this.columns.length)\n\n tableContent = mappedSectionHeaderSummary\n .concat(mappedTableData.length > 0 ? [header] : [])\n .concat(mappedHeaderSummary)\n .concat(mappedTableData)\n .concat(mappedFooterSummary)\n .concat(mappedSectionFooterSummary)\n\n return tableContent\n }\n\n /**\n * Creates the table data\n * - if summaries are present, includes the summaries data\n *\n * @private\n * @param {string[]} sectionDescriptions\n * @param {Dict<Cell[][]>} sectionedData\n * @param {Cell[]} header\n * @return {*}\n * @memberof SectionedDataTableBuilder\n */\n private createTableContent(sectionDescriptions: string[], sectionedData: Dict<Cell[][]>, header: Cell[]) {\n return sectionDescriptions.flatMap((sectionDescription, index) => {\n const { count, countDescription } = this.getSectionCount(sectionedData, sectionDescription)\n const mappedTableData = sectionedData[sectionDescription]\n\n let tableContent: Cell[][] = []\n if (mappedTableData) {\n if (Object.keys(this.reportSummaries).length) {\n tableContent = this.mapSummariesAndCreateTable(sectionDescription, mappedTableData, header)\n } else {\n tableContent = tableContent.concat(mappedTableData.length > 0 ? [header] : []).concat(mappedTableData)\n }\n }\n\n const sectionHeader = this.createSectionHeader(sectionDescription, index, count, countDescription)\n\n return [...sectionHeader, ...tableContent]\n })\n }\n\n createSectionHeader(sectionDescription: string, index: number, count?: number, countDescription?: string) {\n const header = []\n if (index !== 0) {\n header.push([\n {\n classes: 'dpr-section-header-spacer',\n colspan: this.columns.length,\n text: '',\n },\n ])\n }\n header.push([\n {\n classes: 'dpr-section-header',\n colspan: this.columns.length,\n html: `<h2 class=\"govuk-heading-m\">${sectionDescription}${\n count && count > 0 ? ` <span class='govuk-caption-m'>${countDescription}</span>` : ''\n }</h2>`,\n },\n ])\n header.push([\n {\n classes: 'dpr-section-header-spacer-bottom',\n colspan: this.columns.length,\n text: '',\n },\n ])\n return header\n }\n\n private mapSectionSummaryRows(template: SummaryTemplate, sectionDescription: string): Cell[][] {\n if (this.reportSummaries[template]) {\n return this.reportSummaries[template].flatMap((reportSummary) =>\n reportSummary.data\n .filter((rowData) => this.mapSectionDescription(rowData) === sectionDescription)\n .map((rowData) =>\n this.mapRow(\n rowData,\n `dpr-report-summary-cell dpr-report-summary-cell-${template}`,\n <components['schemas']['FieldDefinition'][]>reportSummary.fields,\n ),\n ),\n )\n }\n return []\n }\n\n private mapSectionSummaryTables(\n sectionDescription: string,\n summaryTemplate: SummaryTemplate,\n columnsLength: number,\n ): Cell[][] {\n const summaries = this.reportSummaries[summaryTemplate]\n if (summaries) {\n const htmlTables = summaries.map((summary) => {\n const data = summary.data.filter((row) => this.mapSectionDescription(row) === sectionDescription)\n\n if (data.length > 0) {\n const dataTable = new SummaryDataTableBuilder(summary, this.sections).buildTable(data)\n\n const htmlTable = this.convertDataTableToHtml(dataTable)\n\n return `<div class='dpr-summary-container'>${htmlTable}</div>`\n }\n return ''\n })\n\n const summaryContent = htmlTables.join('')\n if (summaryContent.length > 0) {\n return [\n [\n {\n classes: 'dpr-summary-cell',\n colspan: columnsLength,\n html: `<div class='dpr-summary-container-group dpr-summary-container-group-${summaryTemplate}'>${summaryContent}</div>`,\n },\n ],\n ]\n }\n }\n return []\n }\n\n mapSectionDescription(rowData: NodeJS.Dict<string>): string {\n const { sections } = this\n\n return this.mapNamesToFields(sections)\n .map((s) => `${s.display}: ${this.mapCellValue(s, rowData[s.name])}`)\n .join(', ')\n }\n\n mapSections(data: Array<Dict<string>>) {\n const sectionHeadings = this.initSectionedHeadings(data)\n let { sectionedData } = sectionHeadings\n\n // Maps data to sections\n if (this.template !== 'summary-section') {\n if (this.template === 'parent-child-section') {\n sectionedData = this.mapDataToSection(data, sectionedData as Dict<Dict<string>[]>)\n } else {\n sectionedData = this.mapRowsToSection(data, sectionedData as Dict<Cell[][]>)\n }\n }\n\n return {\n sectionDescriptions: sectionHeadings.sectionDescriptions,\n sectionedData,\n }\n }\n\n initSectionedHeadings(data: Array<Dict<string>>) {\n // Get the section definition data\n const sectionFields = this.mapNamesToFields(this.sections)\n // create the sectionHeadings\n const sectionDescriptions = this.createSectionHeadings(data, sectionFields)\n // init empty sections\n const sectionedData = this.initSectionData(sectionDescriptions)\n\n return {\n sectionDescriptions,\n sectionedData,\n }\n }\n\n /**\n * Creates the table rows.\n *\n * @private\n * @param {Array<Dict<string>>} data\n * @param {Cell[]} header\n * @return {*} {Cell[][]}\n * @memberof SectionedDataTableBuilder\n */\n private mapSectionedData(data: Array<Dict<string>>, header: Cell[]): Cell[][] {\n const { sectionDescriptions, sectionedData } = this.mapSections(data)\n // Create the table\n const tableContent = this.createTableContent(sectionDescriptions, sectionedData as Dict<Cell[][]>, header)\n\n return tableContent\n }\n\n override buildTable(data: Array<Dict<string>>): DataTable {\n return {\n head: null,\n rows: this.mapSectionedData(data, this.mapHeader(true, 'govuk-table__header')),\n rowCount: data.length,\n colCount: this.columns.length,\n }\n }\n}\n\nexport { SectionedDataTableBuilder }\nexport default SectionedDataTableBuilder\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": ["DataTableBuilder", "SummaryDataTableBuilder"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../dpr/utils/SectionedDataTableBuilder/types.d.ts"],
|
|
4
4
|
"sourcesContent": ["import { SortKey } from '../DataTableBuilder/types'\n\nexport interface SectionSortKey extends SortKey {\n description: string\n}\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
|
|
6
6
|
"names": []
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../dpr/utils/SectionedFieldsTableBuilder/SectionedFieldsTableBuilder.ts"],
|
|
4
4
|
"sourcesContent": ["import Dict = NodeJS.Dict\nimport { components } from '../../types/api'\nimport { Cell, DataTable, FieldDefinition } from '../DataTableBuilder/types'\nimport type { Template } from '../../types/Templates'\nimport ParentChildDataTableBuilder from '../ParentChildDataTableBuilder/ParentChildDataTableBuilder'\n\nexport interface SectionedField {\n name: string\n fields?: string[]\n child?: string\n}\n\nclass SectionedFieldsDataTableBuilder extends ParentChildDataTableBuilder {\n // TODO: change this to use schema type if ever implemented in the backend\n sectionedFields: SectionedField[]\n\n declare template: Template\n\n declare childVariants: components['schemas']['ChildVariantDefinition'][]\n\n constructor(variant: components['schemas']['VariantDefinition']) {\n // TODO: removed the union if sectionedFields changed to use schema type\n const { sectionedFields, template } = variant.specification as components['schemas']['Specification'] & {\n sectionedFields: SectionedField[]\n }\n super(variant)\n\n this.sectionedFields = sectionedFields\n this.sections = this.sectionedFields.map((f) => f.name)\n this.template = template\n this.childVariants = this.variant.childVariants || []\n }\n\n getChildFields(childId: string): FieldDefinition[] {\n const childVariant = this.childVariants.find((child) => child.id === childId)\n let fields: FieldDefinition[] = []\n if (childVariant) {\n const { specification } = childVariant\n fields = specification ? specification.fields : fields\n }\n return fields\n }\n\n getJoinKey() {\n return this.childVariants[0].joinFields[0]\n }\n\n initSectionedData(data: Array<Dict<string>>) {\n return data.flatMap((row) => {\n const initialisedSectionsWithFields = this.sectionedFields.map((section) => {\n const sectionHeader = this.mapNamesToFields([section.name])[0]\n\n let fields: FieldDefinition[] = []\n const { child } = section\n\n if (section.fields) {\n fields = this.mapNamesToFields(section.fields)\n } else if (section.child) {\n fields = this.getChildFields(section.child)\n }\n\n return {\n header: sectionHeader,\n fields,\n child,\n }\n })\n\n return initialisedSectionsWithFields.map((section) => {\n if (section.child) {\n const childData = this.getChildData(section.child)\n const displayFields = section.fields.filter((f) => f.visible)\n const joinKey = this.getJoinKey()\n\n return {\n header: section.header.display,\n fields: childData\n ? childData.data\n .filter((cd) => cd[joinKey] === row[joinKey])\n .map((cd) => {\n return {\n heading: cd[displayFields[0]?.name] || 'Not found',\n data: cd[displayFields[1]?.name] || 'Not found',\n }\n })\n : [],\n }\n }\n return {\n header: section.header.display,\n fields: section.fields\n .filter((f) => f.visible)\n .map((f) => {\n return {\n heading: f.display,\n data: row[f.name],\n }\n }),\n }\n })\n })\n }\n\n getChildData(childId: string) {\n return this.childData.find((d) => d.id === childId)\n }\n\n createRows(data: Array<Dict<string>>): Cell[][] {\n const sectionedData = this.initSectionedData(data)\n\n const rows = sectionedData.flatMap((section, index) => {\n let sectionHeaderRow: Cell[][] = []\n if (section.header) {\n sectionHeaderRow = this.createSectionHeader(section.header, index)\n }\n\n const sectionRows = section.fields.map((field) => {\n return [\n {\n text: field.heading,\n classes: 'dpr-row-heading',\n },\n {\n text: field.data,\n classes: 'dpr-row-heading-data',\n },\n ]\n })\n\n return [...sectionHeaderRow, ...sectionRows]\n })\n\n return rows\n }\n\n override buildTable(data: Array<Dict<string>>): DataTable {\n return {\n head: [\n // { text: '', classes: 'dpr-row-section-header' },\n // { text: '', classes: 'dpr-row-section-header-value' },\n ],\n rows: this.createRows(data),\n rowCount: data.length,\n colCount: this.columns.length,\n }\n }\n}\n\nexport { SectionedFieldsDataTableBuilder }\nexport default SectionedFieldsDataTableBuilder\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": ["ParentChildDataTableBuilder"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../dpr/utils/SummaryDataTableBuilder/SummaryDataTableBuilder.ts"],
|
|
4
4
|
"sourcesContent": ["import { components } from '../../types/api'\nimport { AsyncSummary } from '../../types/UserReports'\nimport DataTableBuilder from '../DataTableBuilder/DataTableBuilder'\nimport { DataTable } from '../DataTableBuilder/types'\n\nclass SummaryDataTableBuilder extends DataTableBuilder {\n private summary: AsyncSummary\n\n constructor(summary: AsyncSummary, sections?: Array<string>) {\n const columns = summary.fields\n .filter((field) => !sections || !sections.includes(field.name))\n .map((field) => field.name)\n\n const fields = summary.fields.map((field) => ({\n ...field,\n calculated: false,\n sortable: false,\n defaultsort: false,\n mandatory: true,\n visible: true,\n }))\n\n super(<components['schemas']['FieldDefinition'][]>fields, true)\n\n this.summary = summary\n this.columns = columns\n }\n\n buildSummaryTable(): DataTable {\n return super.buildTable(this.summary.data)\n }\n}\n\nexport { SummaryDataTableBuilder }\nexport default SummaryDataTableBuilder\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,8BAA6B;AAG7B,MAAM,gCAAgC,wBAAAA,QAAiB;AAAA,EAC7C;AAAA,EAER,YAAY,SAAuB,UAA0B;AAC3D,UAAM,UAAU,QAAQ,OACrB,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,SAAS,MAAM,IAAI,CAAC,EAC7D,IAAI,CAAC,UAAU,MAAM,IAAI;AAE5B,UAAM,SAAS,QAAQ,OAAO,IAAI,CAAC,WAAW;AAAA,MAC5C,GAAG;AAAA,MACH,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,aAAa;AAAA,MACb,WAAW;AAAA,MACX,SAAS;AAAA,IACX,EAAE;AAEF,UAAkD,QAAQ,IAAI;AAE9D,SAAK,UAAU;AACf,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,oBAA+B;AAC7B,WAAO,MAAM,WAAW,KAAK,QAAQ,IAAI;AAAA,EAC3C;AACF;AAGA,IAAO,kCAAQ;",
|
|
6
6
|
"names": ["DataTableBuilder"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../dpr/utils/UserStoreItemBuilder.ts"],
|
|
4
4
|
"sourcesContent": ["import type { Request } from 'express'\nimport parseUrl from 'parseurl'\nimport {\n AsyncReportUrlData,\n LoadType,\n ReportType,\n RequestedReport,\n RequestFormData,\n RequestStatus,\n UserReportData,\n} from '../types/UserReports'\nimport Dict = NodeJS.Dict\nimport { ChildReportExecutionData, ExecutionData } from '../types/ExecutionData'\nimport { components } from '../types/api'\n\ninterface ReportData {\n type: ReportType\n reportId: string\n reportName: string\n description: string\n id: string\n name: string\n}\n\nclass UserStoreItemBuilder {\n userStoreItem: UserReportData\n\n requestFormData: RequestFormData | Record<string, never>\n\n constructor(reportData: ReportData, requestFormData?: RequestFormData) {\n this.requestFormData = requestFormData || {}\n this.userStoreItem = this.addReportData(reportData)\n }\n\n build = () => {\n return this.userStoreItem as RequestedReport\n }\n\n addReportData = ({ type, reportId, reportName, description, id, name }: ReportData) => {\n return {\n type: type as ReportType,\n reportId,\n reportName,\n description,\n id,\n name,\n timestamp: {},\n }\n }\n\n addExecutionData = (executionData: ExecutionData) => {\n this.userStoreItem = {\n ...(<UserReportData>this.userStoreItem),\n ...executionData,\n }\n return this\n }\n\n addChildExecutionData = (childExecutionData: Array<ChildReportExecutionData>) => {\n this.userStoreItem = {\n ...(<UserReportData>this.userStoreItem),\n childExecutionData,\n }\n return this\n }\n\n addFilters = (filterData?: Record<string, string>) => {\n const filtersQueryString = new URLSearchParams(filterData).toString()\n this.userStoreItem = {\n ...this.userStoreItem,\n ...{\n filters: {\n data: filterData,\n queryString: filtersQueryString,\n },\n },\n }\n return this\n }\n\n addSortData = (sortData?: Record<string, string>) => {\n const sortByQueryString = new URLSearchParams(sortData).toString()\n this.userStoreItem = {\n ...this.userStoreItem,\n ...{\n sortBy: {\n data: sortData,\n queryString: sortByQueryString,\n },\n },\n }\n return this\n }\n\n addRequestUrls = (req: Request) => {\n const { origin, pathname, search, href } = this.requestFormData\n const { executionId, dataProductDefinitionsPath, dpdPathFromQuery } = this.userStoreItem\n\n // Polling path\n let pollingPath = req.baseUrl.replace('/filters', `/${executionId}/status`)\n if (dpdPathFromQuery) {\n pollingPath = `${pollingPath}?dataProductDefinitionsPath=${dataProductDefinitionsPath}`\n }\n const pollingFullUrl = `${origin}${pollingPath}`\n this.userStoreItem = {\n ...this.userStoreItem,\n ...{\n url: {\n origin,\n request: {\n fullUrl: href,\n pathname,\n search,\n },\n polling: {\n fullUrl: pollingFullUrl,\n pathname: pollingPath,\n },\n },\n },\n }\n\n return this\n }\n\n addAsyncUrls = (url?: AsyncReportUrlData) => {\n if (url) {\n this.userStoreItem = {\n ...this.userStoreItem,\n ...{\n url,\n },\n }\n }\n\n return this\n }\n\n addReportUrls = (req: Request) => {\n const origin = req.get('host')\n const fullUrl = `${req.protocol}://${req.get('host')}${req.originalUrl}`\n const urlData = parseUrl(req)\n\n this.userStoreItem = {\n ...this.userStoreItem,\n ...{\n url: {\n origin: origin || this.userStoreItem.url?.origin || '',\n ...(this.userStoreItem.url?.request && { request: this.userStoreItem.url.request }),\n ...(this.userStoreItem.url?.polling && { polling: this.userStoreItem.url.polling }),\n report: {\n ...(this.userStoreItem.url?.report && this.userStoreItem.url.report),\n fullUrl,\n ...(urlData && urlData.search && { search: urlData.search }),\n },\n },\n },\n }\n\n return this\n }\n\n addLoadType = (loadType: LoadType) => {\n this.userStoreItem = {\n ...this.userStoreItem,\n loadType,\n }\n\n return this\n }\n\n addQuery = (queryData?: { query: Dict<string | string[]>; querySummary: Array<Dict<string>> }) => {\n this.userStoreItem = {\n ...this.userStoreItem,\n ...(queryData && {\n query: {\n data: queryData.query,\n summary: queryData.querySummary,\n },\n }),\n }\n return this\n }\n\n addInteractiveQuery = (queryData?: { query: Dict<string | string[]>; querySummary: Array<Dict<string>> }) => {\n if (queryData) {\n this.userStoreItem = {\n ...this.userStoreItem,\n ...{\n interactiveQuery: {\n data: queryData.query,\n summary: queryData.querySummary,\n },\n },\n }\n }\n return this\n }\n\n addStatus = (status: RequestStatus) => {\n this.userStoreItem = {\n ...this.userStoreItem,\n status,\n }\n return this\n }\n\n addMetrics = (metrics: components['schemas']['DashboardSectionDefinition'][]) => {\n this.userStoreItem = {\n ...this.userStoreItem,\n metrics: metrics.filter((metric) => metric.display).map((metric) => ({ name: metric.display || '' })),\n }\n return this\n }\n\n addTimestamp = () => {\n const { status } = this.userStoreItem\n const ts = new Date()\n switch (status) {\n case RequestStatus.FAILED:\n this.userStoreItem.timestamp.failed = ts\n break\n case RequestStatus.EXPIRED:\n this.userStoreItem.timestamp.expired = ts\n break\n case RequestStatus.ABORTED:\n this.userStoreItem.timestamp.aborted = ts\n break\n case RequestStatus.FINISHED:\n this.userStoreItem.timestamp.completed = ts\n break\n case RequestStatus.SUBMITTED:\n this.userStoreItem.timestamp.requested = ts\n break\n case RequestStatus.STARTED:\n case RequestStatus.PICKED:\n break\n default:\n this.userStoreItem.timestamp.lastViewed = ts\n break\n }\n return this\n }\n\n addDefinitionsPath = (definitionsPath: string, dpdPathFromQuery: boolean) => {\n if (definitionsPath) {\n this.userStoreItem = {\n ...this.userStoreItem,\n dataProductDefinitionsPath: definitionsPath,\n dpdPathFromQuery,\n }\n }\n return this\n }\n}\n\nexport { UserStoreItemBuilder }\nexport default UserStoreItemBuilder\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": ["parseUrl"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../dpr/utils/arrayUtils.ts"],
|
|
4
4
|
"sourcesContent": ["/* eslint-disable import/prefer-default-export */\n\nexport const distinct = (values: string[], value: string) => (values.includes(value) ? values : values.concat(value))\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,MAAM,WAAW,CAAC,QAAkB,UAAmB,OAAO,SAAS,KAAK,IAAI,SAAS,OAAO,OAAO,KAAK;",
|
|
6
6
|
"names": []
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../dpr/utils/datasetHelper.ts"],
|
|
4
4
|
"sourcesContent": ["import { DashboardDataResponse } from '../types/Metrics'\nimport { components } from '../types/api'\nimport logger from './logger'\n\nexport const getDatasetRows = (\n listDefinition: components['schemas']['DashboardVisualisationDefinition'],\n dashboardData: DashboardDataResponse[],\n) => {\n const { measures, filters, expectNulls } = listDefinition.columns\n logger.info('DEBUG: Dashboard vis filterValues:', filters)\n const keys = <Array<components['schemas']['DashboardVisualisationColumnDefinition']>>listDefinition.columns.keys\n\n const displayColumnsIds = measures.map((col) => col.id)\n const keyColumnsIds = keys?.map((col) => col.id) || []\n let filterColIds = filters?.map((col) => col.id) || []\n filterColIds = [...new Set(filterColIds)]\n const hasOptionalKeys = keys?.some((key) => key.optional)\n\n if (dashboardData.length && dashboardData[0]['ts']) keyColumnsIds.unshift('ts')\n\n const filtered = dashboardData.filter((datasetRow: DashboardDataResponse) => {\n const validRow: boolean[] = []\n\n Object.keys(datasetRow).forEach((fieldId) => {\n const value = datasetRow[fieldId].raw\n // All rows are valid until proven otherwise\n let valid = true\n\n // 1. check if the column value is equal to a defined column value\n if (filterColIds.includes(fieldId) && filters) {\n const filterValues = filters ? filters.filter((f) => f.id === fieldId).map((f) => f.equals) : []\n const validFilters: boolean[] = []\n filterValues.forEach((filterValue) => {\n if (filterValue === null) {\n validFilters.push(value === '' || value === undefined || value === null)\n } else {\n validFilters.push(filterValue === value)\n }\n })\n valid = validFilters.some(Boolean)\n\n // 3. check keys exist in the defined columns\n } else if (keyColumnsIds.includes(fieldId) && hasOptionalKeys) {\n valid = true\n\n // 3. check keys exist in the defined columns\n } else if (keyColumnsIds.includes(fieldId) && !hasOptionalKeys) {\n valid = value !== '' && value !== undefined && value !== null\n\n // 2. check values exist in the defined columns\n } else if (displayColumnsIds.includes(fieldId)) {\n valid = value !== '' && value !== undefined && value !== null\n\n // 3. check that all remaining columns are null.\n } else if (expectNulls) {\n valid = value === '' || value === undefined || value === null\n }\n\n validRow.push(valid)\n })\n\n return validRow.every((val) => val)\n })\n\n if (hasOptionalKeys) {\n return filterKeys(filtered, keys || [])\n }\n\n return filtered\n}\n\nexport const getKeyVariations = (keys: Array<components['schemas']['DashboardVisualisationColumnDefinition']>) => {\n const colIdVariations: string[][] = []\n const keyColumnsIds = keys.map((col) => col.id)\n const allOptional = keys.every((key) => key.optional)\n const colIdCopy = [...keyColumnsIds]\n\n keyColumnsIds.reverse().forEach((id) => {\n const key = keys.find((k) => k.id === id)\n colIdVariations.push([...colIdCopy])\n if (key && key.optional) {\n colIdCopy.pop()\n }\n })\n\n if (allOptional) colIdVariations.push([])\n return colIdVariations\n}\n\nexport const getKeyIds = (dashboardData: DashboardDataResponse[], colIdVariations: string[][]) => {\n let validHeadIds: string[] = []\n colIdVariations.every((ids: string[]) => {\n const validRows = []\n\n dashboardData.forEach((datasetRow: DashboardDataResponse) => {\n const validRow: boolean[] = []\n\n Object.keys(datasetRow).forEach((datasetField) => {\n const value = datasetRow[datasetField].raw\n let valid = true\n if (ids.includes(datasetField)) {\n valid = value !== '' && value !== undefined && value !== null\n }\n validRow.push(valid)\n })\n\n if (validRow.every((val) => val)) {\n validRows.push(datasetRow)\n }\n })\n\n if (validRows.length > 0) {\n validHeadIds = ids\n return false\n }\n validHeadIds = ids\n return true\n })\n\n return validHeadIds\n}\n\nexport const filterKeys = (\n dashboardData: DashboardDataResponse[],\n keys: Array<components['schemas']['DashboardVisualisationColumnDefinition']>,\n) => {\n const colIdVariations = getKeyVariations(keys)\n const validHeadIds = getKeyIds(dashboardData, colIdVariations)\n\n return dashboardData.filter((datasetRow: DashboardDataResponse) => {\n const validRow: boolean[] = []\n Object.keys(datasetRow).forEach((datasetField) => {\n const value = datasetRow[datasetField].raw\n let valid = true\n if (validHeadIds.includes(datasetField)) {\n valid = value !== '' && value !== undefined && value !== null\n }\n validRow.push(valid)\n })\n\n return validRow.every((val) => val)\n })\n}\n\nexport const getLastestDataset = (dashboardData: DashboardDataResponse[]): DashboardDataResponse[] => {\n const latestTimestamp = dashboardData[dashboardData.length - 1]?.['ts']?.raw\n if (latestTimestamp) {\n return dashboardData.filter((data) => data['ts'].raw === latestTimestamp)\n }\n return dashboardData\n}\n\nexport const getEarliestDataset = (dashboardData: DashboardDataResponse[]): DashboardDataResponse[] => {\n const latestTimestamp = dashboardData[0]?.['ts']?.raw\n if (latestTimestamp) {\n return dashboardData.filter((data) => data['ts'].raw === latestTimestamp)\n }\n return dashboardData\n}\n\nexport const groupRowsByTimestamp = (dashboardData: DashboardDataResponse[]): DashboardDataResponse[][] => {\n const uniqueTimestamps = [...new Set(dashboardData.map((item) => item['ts'].raw))]\n return uniqueTimestamps.map((ts) => {\n return dashboardData.filter((d) => d['ts'].raw === ts)\n })\n}\n\nexport const groupRowsByKey = (dashboardData: DashboardDataResponse[], key: string): DashboardDataResponse[][] => {\n const uniqueKeyValues = [...new Set(dashboardData.map((item) => item[key].raw))]\n return uniqueKeyValues.map((keyValue) => {\n return dashboardData.filter((d) => d[key].raw === keyValue)\n })\n}\n\nexport const getGroupKey = (\n rawData: DashboardDataResponse[],\n keys?: Array<components['schemas']['DashboardVisualisationColumnDefinition']>,\n) => {\n if (!keys || !keys.length || !rawData.length) {\n return undefined\n }\n\n const data = rawData[0]\n let index = keys.length - 1\n let keyFound = false\n while (!keyFound) {\n const k = `${keys[index]?.id}`\n if (k && index !== -1 && (!data[k] || !data[k].raw || data[k].raw === '' || data[k].raw === null)) {\n index -= 1\n } else {\n keyFound = true\n }\n }\n\n return index !== -1 ? keys[index] : undefined\n}\n\nexport const filterRowsByDisplayColumns = (\n listDefinition: components['schemas']['DashboardVisualisationDefinition'],\n dashboardData: DashboardDataResponse[],\n includeKeys = false,\n) => {\n const { keys: keyCols, measures } = listDefinition.columns\n const keys = keyCols || []\n let displayColumns = [...measures]\n if (includeKeys) {\n displayColumns = [...keys, ...measures]\n }\n const displayColumnsIds = displayColumns.map((col) => col.id)\n\n return dashboardData.map((datasetRow: DashboardDataResponse) => {\n return Object.keys(datasetRow)\n .filter((key) => displayColumnsIds.includes(key))\n .reduce((acc, key) => {\n acc[key] = datasetRow[key]\n return acc\n }, {} as unknown as DashboardDataResponse)\n })\n}\n\nexport default {\n getDatasetRows,\n getLastestDataset,\n getEarliestDataset,\n filterRowsByDisplayColumns,\n groupRowsByTimestamp,\n groupRowsByKey,\n getGroupKey,\n getKeyVariations,\n getKeyIds,\n filterKeys,\n}\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,oBAAmB;AAEZ,MAAM,iBAAiB,CAC5B,gBACA,kBACG;AACH,QAAM,EAAE,UAAU,SAAS,YAAY,IAAI,eAAe;AAC1D,gBAAAA,QAAO,KAAK,sCAAsC,OAAO;AACzD,QAAM,OAA+E,eAAe,QAAQ;AAE5G,QAAM,oBAAoB,SAAS,IAAI,CAAC,QAAQ,IAAI,EAAE;AACtD,QAAM,gBAAgB,MAAM,IAAI,CAAC,QAAQ,IAAI,EAAE,KAAK,CAAC;AACrD,MAAI,eAAe,SAAS,IAAI,CAAC,QAAQ,IAAI,EAAE,KAAK,CAAC;AACrD,iBAAe,CAAC,GAAG,IAAI,IAAI,YAAY,CAAC;AACxC,QAAM,kBAAkB,MAAM,KAAK,CAAC,QAAQ,IAAI,QAAQ;AAExD,MAAI,cAAc,UAAU,cAAc,CAAC,EAAE,IAAI,EAAG,eAAc,QAAQ,IAAI;AAE9E,QAAM,WAAW,cAAc,OAAO,CAAC,eAAsC;AAC3E,UAAM,WAAsB,CAAC;AAE7B,WAAO,KAAK,UAAU,EAAE,QAAQ,CAAC,YAAY;AAC3C,YAAM,QAAQ,WAAW,OAAO,EAAE;AAElC,UAAI,QAAQ;AAGZ,UAAI,aAAa,SAAS,OAAO,KAAK,SAAS;AAC7C,cAAM,eAAe,UAAU,QAAQ,OAAO,CAAC,MAAM,EAAE,OAAO,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC;AAC/F,cAAM,eAA0B,CAAC;AACjC,qBAAa,QAAQ,CAAC,gBAAgB;AACpC,cAAI,gBAAgB,MAAM;AACxB,yBAAa,KAAK,UAAU,MAAM,UAAU,UAAa,UAAU,IAAI;AAAA,UACzE,OAAO;AACL,yBAAa,KAAK,gBAAgB,KAAK;AAAA,UACzC;AAAA,QACF,CAAC;AACD,gBAAQ,aAAa,KAAK,OAAO;AAAA,MAGnC,WAAW,cAAc,SAAS,OAAO,KAAK,iBAAiB;AAC7D,gBAAQ;AAAA,MAGV,WAAW,cAAc,SAAS,OAAO,KAAK,CAAC,iBAAiB;AAC9D,gBAAQ,UAAU,MAAM,UAAU,UAAa,UAAU;AAAA,MAG3D,WAAW,kBAAkB,SAAS,OAAO,GAAG;AAC9C,gBAAQ,UAAU,MAAM,UAAU,UAAa,UAAU;AAAA,MAG3D,WAAW,aAAa;AACtB,gBAAQ,UAAU,MAAM,UAAU,UAAa,UAAU;AAAA,MAC3D;AAEA,eAAS,KAAK,KAAK;AAAA,IACrB,CAAC;AAED,WAAO,SAAS,MAAM,CAAC,QAAQ,GAAG;AAAA,EACpC,CAAC;AAED,MAAI,iBAAiB;AACnB,WAAO,WAAW,UAAU,QAAQ,CAAC,CAAC;AAAA,EACxC;AAEA,SAAO;AACT;AAEO,MAAM,mBAAmB,CAAC,SAAiF;AAChH,QAAM,kBAA8B,CAAC;AACrC,QAAM,gBAAgB,KAAK,IAAI,CAAC,QAAQ,IAAI,EAAE;AAC9C,QAAM,cAAc,KAAK,MAAM,CAAC,QAAQ,IAAI,QAAQ;AACpD,QAAM,YAAY,CAAC,GAAG,aAAa;AAEnC,gBAAc,QAAQ,EAAE,QAAQ,CAAC,OAAO;AACtC,UAAM,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE;AACxC,oBAAgB,KAAK,CAAC,GAAG,SAAS,CAAC;AACnC,QAAI,OAAO,IAAI,UAAU;AACvB,gBAAU,IAAI;AAAA,IAChB;AAAA,EACF,CAAC;AAED,MAAI,YAAa,iBAAgB,KAAK,CAAC,CAAC;AACxC,SAAO;AACT;AAEO,MAAM,YAAY,CAAC,eAAwC,oBAAgC;AAChG,MAAI,eAAyB,CAAC;AAC9B,kBAAgB,MAAM,CAAC,QAAkB;AACvC,UAAM,YAAY,CAAC;AAEnB,kBAAc,QAAQ,CAAC,eAAsC;AAC3D,YAAM,WAAsB,CAAC;AAE7B,aAAO,KAAK,UAAU,EAAE,QAAQ,CAAC,iBAAiB;AAChD,cAAM,QAAQ,WAAW,YAAY,EAAE;AACvC,YAAI,QAAQ;AACZ,YAAI,IAAI,SAAS,YAAY,GAAG;AAC9B,kBAAQ,UAAU,MAAM,UAAU,UAAa,UAAU;AAAA,QAC3D;AACA,iBAAS,KAAK,KAAK;AAAA,MACrB,CAAC;AAED,UAAI,SAAS,MAAM,CAAC,QAAQ,GAAG,GAAG;AAChC,kBAAU,KAAK,UAAU;AAAA,MAC3B;AAAA,IACF,CAAC;AAED,QAAI,UAAU,SAAS,GAAG;AACxB,qBAAe;AACf,aAAO;AAAA,IACT;AACA,mBAAe;AACf,WAAO;AAAA,EACT,CAAC;AAED,SAAO;AACT;AAEO,MAAM,aAAa,CACxB,eACA,SACG;AACH,QAAM,kBAAkB,iBAAiB,IAAI;AAC7C,QAAM,eAAe,UAAU,eAAe,eAAe;AAE7D,SAAO,cAAc,OAAO,CAAC,eAAsC;AACjE,UAAM,WAAsB,CAAC;AAC7B,WAAO,KAAK,UAAU,EAAE,QAAQ,CAAC,iBAAiB;AAChD,YAAM,QAAQ,WAAW,YAAY,EAAE;AACvC,UAAI,QAAQ;AACZ,UAAI,aAAa,SAAS,YAAY,GAAG;AACvC,gBAAQ,UAAU,MAAM,UAAU,UAAa,UAAU;AAAA,MAC3D;AACA,eAAS,KAAK,KAAK;AAAA,IACrB,CAAC;AAED,WAAO,SAAS,MAAM,CAAC,QAAQ,GAAG;AAAA,EACpC,CAAC;AACH;AAEO,MAAM,oBAAoB,CAAC,kBAAoE;AACpG,QAAM,kBAAkB,cAAc,cAAc,SAAS,CAAC,IAAI,IAAI,GAAG;AACzE,MAAI,iBAAiB;AACnB,WAAO,cAAc,OAAO,CAAC,SAAS,KAAK,IAAI,EAAE,QAAQ,eAAe;AAAA,EAC1E;AACA,SAAO;AACT;AAEO,MAAM,qBAAqB,CAAC,kBAAoE;AACrG,QAAM,kBAAkB,cAAc,CAAC,IAAI,IAAI,GAAG;AAClD,MAAI,iBAAiB;AACnB,WAAO,cAAc,OAAO,CAAC,SAAS,KAAK,IAAI,EAAE,QAAQ,eAAe;AAAA,EAC1E;AACA,SAAO;AACT;AAEO,MAAM,uBAAuB,CAAC,kBAAsE;AACzG,QAAM,mBAAmB,CAAC,GAAG,IAAI,IAAI,cAAc,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,GAAG,CAAC,CAAC;AACjF,SAAO,iBAAiB,IAAI,CAAC,OAAO;AAClC,WAAO,cAAc,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;AAAA,EACvD,CAAC;AACH;AAEO,MAAM,iBAAiB,CAAC,eAAwC,QAA2C;AAChH,QAAM,kBAAkB,CAAC,GAAG,IAAI,IAAI,cAAc,IAAI,CAAC,SAAS,KAAK,GAAG,EAAE,GAAG,CAAC,CAAC;AAC/E,SAAO,gBAAgB,IAAI,CAAC,aAAa;AACvC,WAAO,cAAc,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,QAAQ;AAAA,EAC5D,CAAC;AACH;AAEO,MAAM,cAAc,CACzB,SACA,SACG;AACH,MAAI,CAAC,QAAQ,CAAC,KAAK,UAAU,CAAC,QAAQ,QAAQ;AAC5C,WAAO;AAAA,EACT;AAEA,QAAM,OAAO,QAAQ,CAAC;AACtB,MAAI,QAAQ,KAAK,SAAS;AAC1B,MAAI,WAAW;AACf,SAAO,CAAC,UAAU;AAChB,UAAM,IAAI,GAAG,KAAK,KAAK,GAAG,EAAE;AAC5B,QAAI,KAAK,UAAU,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC,EAAE,QAAQ,MAAM,KAAK,CAAC,EAAE,QAAQ,OAAO;AACjG,eAAS;AAAA,IACX,OAAO;AACL,iBAAW;AAAA,IACb;AAAA,EACF;AAEA,SAAO,UAAU,KAAK,KAAK,KAAK,IAAI;AACtC;AAEO,MAAM,6BAA6B,CACxC,gBACA,eACA,cAAc,UACX;AACH,QAAM,EAAE,MAAM,SAAS,SAAS,IAAI,eAAe;AACnD,QAAM,OAAO,WAAW,CAAC;AACzB,MAAI,iBAAiB,CAAC,GAAG,QAAQ;AACjC,MAAI,aAAa;AACf,qBAAiB,CAAC,GAAG,MAAM,GAAG,QAAQ;AAAA,EACxC;AACA,QAAM,oBAAoB,eAAe,IAAI,CAAC,QAAQ,IAAI,EAAE;AAE5D,SAAO,cAAc,IAAI,CAAC,eAAsC;AAC9D,WAAO,OAAO,KAAK,UAAU,EAC1B,OAAO,CAAC,QAAQ,kBAAkB,SAAS,GAAG,CAAC,EAC/C,OAAO,CAAC,KAAK,QAAQ;AACpB,UAAI,GAAG,IAAI,WAAW,GAAG;AACzB,aAAO;AAAA,IACT,GAAG,CAAC,CAAqC;AAAA,EAC7C,CAAC;AACH;AAEA,IAAO,wBAAQ;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;",
|
|
6
6
|
"names": ["logger"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../dpr/utils/definitionUtils.ts"],
|
|
4
4
|
"sourcesContent": ["import { FiltersType } from '../components/_filters/filtersTypeEnum'\nimport ReportingService from '../services/reportingService'\nimport { components } from '../types/api'\nimport { Template } from '../types/Templates'\nimport { ReportType } from '../types/UserReports'\nimport logger from './logger'\n\nexport const getFilter = (\n fields: components['schemas']['FieldDefinition'][],\n fieldId: string,\n): components['schemas']['FilterDefinition'] | undefined => {\n return fields.find((f) => f.name === fieldId)?.filter\n}\n\nexport const getFiltersDefaultsValues = (fields: components['schemas']['FieldDefinition'][]) => {\n return fields\n .filter((field) => field.filter)\n .map((field) => {\n const { name, display } = field\n\n const defaultValue = field.filter?.defaultValue\n const defaultGranularity = field.filter?.defaultGranularity\n const defaultQuickFilterValue = field.filter?.defaultQuickFilterValue\n const type = field.filter?.type || ReportType.REPORT\n const interactive = field.filter?.interactive || FiltersType.REQUEST\n\n return {\n name,\n display,\n type,\n interactive,\n ...(defaultValue && { defaultValue }),\n ...(defaultGranularity && { defaultGranularity }),\n ...(defaultQuickFilterValue && { defaultQuickFilterValue }),\n }\n })\n}\n\nexport const getCurrentVariantDefinition = (\n definitions: components['schemas']['ReportDefinitionSummary'][],\n reportId: string,\n variantId: string,\n): components['schemas']['VariantDefinition'] | undefined => {\n if (!definitions) {\n logger.info('No definitions')\n return undefined\n }\n\n let variantDef: components['schemas']['VariantDefinition']\n const reportDef = definitions.find(\n (report: components['schemas']['ReportDefinitionSummary']) => report.id === reportId,\n )\n\n if (reportDef) {\n // TODO: this needs fixing, we should never be using `as unknown as`, but the types are very mixed up here\n variantDef = reportDef.variants.find(\n (variant) => variantId === variant.id,\n ) as unknown as components['schemas']['VariantDefinition']\n\n return variantDef\n }\n\n return undefined\n}\n\nexport const getFieldDisplayName = (fields: components['schemas']['FieldDefinition'][], fieldId: string) => {\n const ids = fieldId.split('.')\n const field = fields.find((f) => {\n return f.name === ids[0]\n })\n if (field) {\n return ids[1] ? `${field.display} ${ids[1]}` : field.display\n }\n return fieldId\n}\n\nexport const getField = (fields: components['schemas']['FieldDefinition'][], fieldId: string) => {\n return fields.find((field) => {\n return field.name === fieldId\n })\n}\n\nexport const getFields = (\n definition: components['schemas']['SingleVariantReportDefinition'],\n): components['schemas']['FieldDefinition'][] => {\n return definition.variant.specification?.fields || []\n}\n\nexport const getTemplate = (definition: components['schemas']['SingleVariantReportDefinition']): Template => {\n return definition.variant.specification?.template || 'list'\n}\n\nexport const getFilters = (\n fields: components['schemas']['FieldDefinition'][],\n): components['schemas']['FilterDefinition'][] => {\n const filters: components['schemas']['FilterDefinition'][] = fields\n .filter((field: components['schemas']['FieldDefinition']) => field.filter)\n .map((field: components['schemas']['FieldDefinition']) => <components['schemas']['FilterDefinition']>field.filter)\n\n return filters.length ? filters : []\n}\n\nexport const getReportSummary = (\n reportId: string,\n reportingService: ReportingService,\n token: string,\n definitionPath: string,\n) => reportingService.getDefinitionSummary(token, reportId, definitionPath)\n\nexport default {\n getCurrentVariantDefinition,\n getFieldDisplayName,\n getField,\n getFields,\n getTemplate,\n getFilter,\n getFilters,\n getFiltersDefaultsValues,\n getReportSummary,\n}\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6BAA4B;AAI5B,yBAA2B;AAC3B,oBAAmB;AAEZ,MAAM,YAAY,CACvB,QACA,YAC0D;AAC1D,SAAO,OAAO,KAAK,CAAC,MAAM,EAAE,SAAS,OAAO,GAAG;AACjD;AAEO,MAAM,2BAA2B,CAAC,WAAuD;AAC9F,SAAO,OACJ,OAAO,CAAC,UAAU,MAAM,MAAM,EAC9B,IAAI,CAAC,UAAU;AACd,UAAM,EAAE,MAAM,QAAQ,IAAI;AAE1B,UAAM,eAAe,MAAM,QAAQ;AACnC,UAAM,qBAAqB,MAAM,QAAQ;AACzC,UAAM,0BAA0B,MAAM,QAAQ;AAC9C,UAAM,OAAO,MAAM,QAAQ,QAAQ,8BAAW;AAC9C,UAAM,cAAc,MAAM,QAAQ,eAAe,mCAAY;AAE7D,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,GAAI,gBAAgB,EAAE,aAAa;AAAA,MACnC,GAAI,sBAAsB,EAAE,mBAAmB;AAAA,MAC/C,GAAI,2BAA2B,EAAE,wBAAwB;AAAA,IAC3D;AAAA,EACF,CAAC;AACL;AAEO,MAAM,8BAA8B,CACzC,aACA,UACA,cAC2D;AAC3D,MAAI,CAAC,aAAa;AAChB,kBAAAA,QAAO,KAAK,gBAAgB;AAC5B,WAAO;AAAA,EACT;AAEA,MAAI;AACJ,QAAM,YAAY,YAAY;AAAA,IAC5B,CAAC,WAA6D,OAAO,OAAO;AAAA,EAC9E;AAEA,MAAI,WAAW;AAEb,iBAAa,UAAU,SAAS;AAAA,MAC9B,CAAC,YAAY,cAAc,QAAQ;AAAA,IACrC;AAEA,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEO,MAAM,sBAAsB,CAAC,QAAoD,YAAoB;AAC1G,QAAM,MAAM,QAAQ,MAAM,GAAG;AAC7B,QAAM,QAAQ,OAAO,KAAK,CAAC,MAAM;AAC/B,WAAO,EAAE,SAAS,IAAI,CAAC;AAAA,EACzB,CAAC;AACD,MAAI,OAAO;AACT,WAAO,IAAI,CAAC,IAAI,GAAG,MAAM,OAAO,IAAI,IAAI,CAAC,CAAC,KAAK,MAAM;AAAA,EACvD;AACA,SAAO;AACT;AAEO,MAAM,WAAW,CAAC,QAAoD,YAAoB;AAC/F,SAAO,OAAO,KAAK,CAAC,UAAU;AAC5B,WAAO,MAAM,SAAS;AAAA,EACxB,CAAC;AACH;AAEO,MAAM,YAAY,CACvB,eAC+C;AAC/C,SAAO,WAAW,QAAQ,eAAe,UAAU,CAAC;AACtD;AAEO,MAAM,cAAc,CAAC,eAAiF;AAC3G,SAAO,WAAW,QAAQ,eAAe,YAAY;AACvD;AAEO,MAAM,aAAa,CACxB,WACgD;AAChD,QAAM,UAAuD,OAC1D,OAAO,CAAC,UAAoD,MAAM,MAAM,EACxE,IAAI,CAAC,UAA+F,MAAM,MAAM;AAEnH,SAAO,QAAQ,SAAS,UAAU,CAAC;AACrC;AAEO,MAAM,mBAAmB,CAC9B,UACA,kBACA,OACA,mBACG,iBAAiB,qBAAqB,OAAO,UAAU,cAAc;AAE1E,IAAO,0BAAQ;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;",
|
|
6
6
|
"names": ["logger"]
|
package/dpr/utils/index.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../dpr/utils/index.ts"],
|
|
4
4
|
"sourcesContent": ["import SyncReportUtils from '../routes/journeys/view-report/sync/report/utils'\nimport DownloadUtils from '../routes/journeys/download-report/utils'\nimport BookmarkUtils from '../routes/journeys/my-reports/bookmarks/utils'\n\nexport { SyncReportUtils, DownloadUtils, BookmarkUtils }\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,qCAAAA;AAAA,EAAA,mCAAAC;AAAA,EAAA,oCAAAC;AAAA;AAAA;AAAA,mBAA4B;AAC5B,IAAAC,gBAA0B;AAC1B,IAAAA,gBAA0B;",
|
|
6
6
|
"names": ["BookmarkUtils", "DownloadUtils", "SyncReportUtils", "import_utils"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../dpr/utils/indexedAccesHelper.ts"],
|
|
4
4
|
"sourcesContent": ["import { Request } from 'express'\n\nexport const getRequestParam = ({\n req,\n param,\n defaultValue,\n error,\n errorString,\n}: {\n req: Request\n param: string\n defaultValue?: string\n error?: boolean\n errorString?: string\n}): string => {\n const value = req.params[param]\n\n if (value === undefined && error) {\n const errorMessage = errorString || 'Crtitical request parameter is undefined:'\n throw new Error(`${errorMessage}: paramname: ${param}`)\n }\n\n return value || defaultValue || ''\n}\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,MAAM,kBAAkB,CAAC;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAMc;AACZ,QAAM,QAAQ,IAAI,OAAO,KAAK;AAE9B,MAAI,UAAU,UAAa,OAAO;AAChC,UAAM,eAAe,eAAe;AACpC,UAAM,IAAI,MAAM,GAAG,YAAY,gBAAgB,KAAK,EAAE;AAAA,EACxD;AAEA,SAAO,SAAS,gBAAgB;AAClC;",
|
|
6
6
|
"names": []
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../dpr/utils/localsHelper.ts"],
|
|
4
4
|
"sourcesContent": ["import type { Response, Request } from 'express'\nimport { StoredReportData } from '../types/UserReports'\nimport { BookmarkStoreData } from '../types/Bookmark'\n\nexport const getValues = (res: Response) => {\n const csrfToken = (res.locals['csrfToken'] as unknown as string) || 'csrfToken'\n const dprUser = setDprUserContext(res)\n\n return {\n token: dprUser.token,\n dprUser,\n ...setUserReports(res),\n ...setDpdPaths(res),\n ...setFeatures(res),\n ...setDefinitions(res),\n csrfToken,\n nestedBaseUrl: res.locals['nestedBaseUrl'],\n }\n}\n\nconst setDefinitions = (res: Response) => {\n const definitions = res.locals['definitions'] || []\n return {\n definitions,\n }\n}\n\nconst setFeatures = (res: Response) => {\n return {\n bookmarkingEnabled: <boolean>res.locals['bookmarkingEnabled'],\n downloadingEnabled: <boolean>res.locals['downloadingEnabled'],\n }\n}\n\nconst setUserReports = (res: Response) => {\n const requestedReports: StoredReportData[] = res.locals['requestedReports'] || []\n const recentlyViewedReports: StoredReportData[] = res.locals['recentlyViewedReports'] || []\n const bookmarks: BookmarkStoreData[] = res.locals['bookmarks'] || []\n\n return {\n requestedReports,\n recentlyViewedReports,\n bookmarks,\n }\n}\n\nconst setDpdPaths = (res: Response) => {\n const { definitionsPath, dpdPathFromQuery, dpdPathFromConfig, pathSuffix } = res.locals\n return {\n definitionsPath,\n dpdPathFromQuery,\n dpdPathFromConfig,\n pathSuffix: pathSuffix || '',\n }\n}\n\nconst setDprUserContext = (res: Response) => {\n const { dprUser } = res.locals\n const id = dprUser?.id\n const token = dprUser?.token\n const activeCaseLoadId = dprUser?.activeCaseLoadId\n const staffId = dprUser?.staffId\n const email = dprUser?.emailAddress || ''\n const displayName = dprUser?.displayName || ''\n\n return {\n id,\n token,\n activeCaseLoadId,\n staffId,\n email,\n displayName,\n }\n}\n\nexport const setDdpPathToReqQuery = (req: Request, value: string) => {\n if (value) {\n req.query = {\n ...req.query,\n dataProductDefinitionsPath: value,\n }\n }\n\n return req.query\n}\n\nexport default {\n getValues,\n setDdpPathToReqQuery,\n}\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIO,MAAM,YAAY,CAAC,QAAkB;AAC1C,QAAM,YAAa,IAAI,OAAO,WAAW,KAA2B;AACpE,QAAM,UAAU,kBAAkB,GAAG;AAErC,SAAO;AAAA,IACL,OAAO,QAAQ;AAAA,IACf;AAAA,IACA,GAAG,eAAe,GAAG;AAAA,IACrB,GAAG,YAAY,GAAG;AAAA,IAClB,GAAG,YAAY,GAAG;AAAA,IAClB,GAAG,eAAe,GAAG;AAAA,IACrB;AAAA,IACA,eAAe,IAAI,OAAO,eAAe;AAAA,EAC3C;AACF;AAEA,MAAM,iBAAiB,CAAC,QAAkB;AACxC,QAAM,cAAc,IAAI,OAAO,aAAa,KAAK,CAAC;AAClD,SAAO;AAAA,IACL;AAAA,EACF;AACF;AAEA,MAAM,cAAc,CAAC,QAAkB;AACrC,SAAO;AAAA,IACL,oBAA6B,IAAI,OAAO,oBAAoB;AAAA,IAC5D,oBAA6B,IAAI,OAAO,oBAAoB;AAAA,EAC9D;AACF;AAEA,MAAM,iBAAiB,CAAC,QAAkB;AACxC,QAAM,mBAAuC,IAAI,OAAO,kBAAkB,KAAK,CAAC;AAChF,QAAM,wBAA4C,IAAI,OAAO,uBAAuB,KAAK,CAAC;AAC1F,QAAM,YAAiC,IAAI,OAAO,WAAW,KAAK,CAAC;AAEnE,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,MAAM,cAAc,CAAC,QAAkB;AACrC,QAAM,EAAE,iBAAiB,kBAAkB,mBAAmB,WAAW,IAAI,IAAI;AACjF,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY,cAAc;AAAA,EAC5B;AACF;AAEA,MAAM,oBAAoB,CAAC,QAAkB;AAC3C,QAAM,EAAE,QAAQ,IAAI,IAAI;AACxB,QAAM,KAAK,SAAS;AACpB,QAAM,QAAQ,SAAS;AACvB,QAAM,mBAAmB,SAAS;AAClC,QAAM,UAAU,SAAS;AACzB,QAAM,QAAQ,SAAS,gBAAgB;AACvC,QAAM,cAAc,SAAS,eAAe;AAE5C,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEO,MAAM,uBAAuB,CAAC,KAAc,UAAkB;AACnE,MAAI,OAAO;AACT,QAAI,QAAQ;AAAA,MACV,GAAG,IAAI;AAAA,MACP,4BAA4B;AAAA,IAC9B;AAAA,EACF;AAEA,SAAO,IAAI;AACb;AAEA,IAAO,uBAAQ;AAAA,EACb;AAAA,EACA;AACF;",
|
|
6
6
|
"names": []
|
package/dpr/utils/logger.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../dpr/utils/logger.ts"],
|
|
4
4
|
"sourcesContent": ["import bunyan from 'bunyan'\nimport bunyanFormat from 'bunyan-format'\n\nconst formatOut = bunyanFormat({ outputMode: 'short', color: false })\n\nconst disableLogs = process.env['SUPPRESS_LOGS']\nexport const logger = bunyan.createLogger({\n name: 'Digital Prison Reporting:',\n stream: formatOut,\n level: disableLogs ? bunyan.FATAL + 1 : 'debug',\n})\n\nexport default logger\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAmB;AACnB,2BAAyB;AAEzB,MAAM,gBAAY,qBAAAA,SAAa,EAAE,YAAY,SAAS,OAAO,MAAM,CAAC;AAEpE,MAAM,cAAc,QAAQ,IAAI,eAAe;AACxC,MAAM,SAAS,cAAAC,QAAO,aAAa;AAAA,EACxC,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,OAAO,cAAc,cAAAA,QAAO,QAAQ,IAAI;AAC1C,CAAC;AAED,IAAO,iBAAQ;",
|
|
6
6
|
"names": ["bunyanFormat", "bunyan"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../dpr/utils/reportListsHelper.ts"],
|
|
4
4
|
"sourcesContent": ["import { Response } from 'express'\nimport { LoadType, ReportType, RequestStatus } from '../types/UserReports'\nimport localsHelper from './localsHelper'\n\nexport const itemActionsHtml = (\n retryHref: string,\n executionId: string,\n type: 'requested' | 'viewed',\n status: RequestStatus,\n) => {\n const text = status === RequestStatus.EXPIRED ? 'Refresh' : 'Retry'\n return `<div class=\"dpr-icon-wrapper__item-actions\">\n <a class='dpr-user-list-action govuk-link--no-visited-state govuk-!-margin-bottom-1' href=\"${retryHref}\">${text}</a>\n <a class=\"dpr-user-list-action govuk-link--no-visited-state dpr-remove-${type}-report-button\"\" href=\"#\" data-execution-id='${executionId}'>Remove</a>\n </div>`\n}\n\nconst getTypeTagColor = (type: ReportType) => {\n let tagColourClass = ''\n switch (type) {\n case ReportType.DASHBOARD:\n tagColourClass = 'govuk-tag--purple'\n break\n case ReportType.UNAVAILABLE:\n tagColourClass = 'govuk-tag--grey'\n break\n default:\n tagColourClass = ''\n break\n }\n return tagColourClass\n}\n\nexport const createListItemProduct = (productName: string, reportName: string, type: ReportType, ts?: string) => {\n const tsClass = !ts ? 'dpr-display-none' : ''\n const tagColor = getTypeTagColor(type)\n const reportType = toSentenceCase(type)\n return `<div>\n <p class=\"govuk-body govuk-!-margin-bottom-1\" aria-label=\"Report name ${reportName}\"><strong>${reportName}</strong></p>\n <p class=\"govuk-body-s govuk-!-margin-bottom-3\" aria-label=\"Product name ${productName}\">${productName}</p>\n <strong class=\"govuk-tag ${tagColor} dpr-request-status-tag--small govuk-!-margin-bottom-4\" aria-label=\"Report type ${reportType}\">${reportType}</strong>\n <p class=\"govuk-body-xs govuk-!-margin-bottom-0 govuk-!-margin-top-3 ${tsClass}\" aria-label=\"Timestamp\">${ts}</p>\n</div>`\n}\n\nexport const createListItemProductMin = (reportName: string, type: ReportType) => {\n const tagColor = getTypeTagColor(type)\n const reportType = toSentenceCase(type)\n return `<div>\n <p class=\"govuk-body-s govuk-!-margin-bottom-2\"><strong>${reportName}</strong></p>\n <strong class=\"govuk-tag ${tagColor} dpr-request-status-tag--small\">${reportType}</strong>\n</div>`\n}\n\nexport const createListActions = (\n href: string,\n type: ReportType,\n loadType?: LoadType,\n bookmarkHtml?: string,\n authorised = true,\n missing = false,\n) => {\n if (!authorised) {\n return `<strong class=\"govuk-tag govuk-tag--red dpr-request-status-tag dpr-request-status-tag--small dpr-unauthorised-report\" aria-label=\"You are unauthorised to view this report\">Unauthorised</strong>`\n }\n\n let requestAction\n let actionText\n if (missing) {\n actionText = `Request report`\n requestAction = `<a class='dpr-user-list-action govuk-link--no-visited-state govuk-!-margin-bottom-1' href=\"${href}\">${actionText}</a>`\n } else {\n actionText = `Request ${type}`\n if (loadType && loadType === LoadType.SYNC) {\n actionText = `Load ${type}`\n }\n requestAction = `<a class='dpr-user-list-action govuk-link--no-visited-state govuk-!-margin-bottom-1 dpr-live-report dpr-type__${type}' href=\"${href}\">${actionText}</a>`\n }\n\n if (bookmarkHtml) {\n requestAction = `${requestAction}${bookmarkHtml}`\n }\n\n return requestAction\n}\n\nexport const toSentenceCase = (text: string) => {\n return text.charAt(0).toUpperCase() + text.substring(1).toLowerCase()\n}\n\nexport const setInitialHref = (\n loadType: LoadType,\n type: ReportType,\n reportId: string,\n id: string,\n res: Response,\n isMissing = false,\n) => {\n let href = ''\n if (isMissing) {\n href = `dpr/request-missing-report/${reportId}/${id}/form`\n } else {\n const { pathSuffix, dpdPathFromQuery } = localsHelper.getValues(res)\n const dpdPathQueryParam = dpdPathFromQuery ? pathSuffix : ''\n href = `dpr/request-report/${type}/${reportId}/${id}/filters${dpdPathQueryParam}`\n\n if (loadType && loadType === LoadType.SYNC) {\n href = `dpr/view-report/sync/${type}/${reportId}/${id}/load-report${dpdPathQueryParam}`\n }\n }\n return href\n}\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,yBAAoD;AACpD,0BAAyB;AAElB,MAAM,kBAAkB,CAC7B,WACA,aACA,MACA,WACG;AACH,QAAM,OAAO,WAAW,iCAAc,UAAU,YAAY;AAC5D,SAAO;AAAA,mGAC0F,SAAS,KAAK,IAAI;AAAA,+EACtC,IAAI,gDAAgD,WAAW;AAAA;AAE9I;AAEA,MAAM,kBAAkB,CAAC,SAAqB;AAC5C,MAAI,iBAAiB;AACrB,UAAQ,MAAM;AAAA,IACZ,KAAK,8BAAW;AACd,uBAAiB;AACjB;AAAA,IACF,KAAK,8BAAW;AACd,uBAAiB;AACjB;AAAA,IACF;AACE,uBAAiB;AACjB;AAAA,EACJ;AACA,SAAO;AACT;AAEO,MAAM,wBAAwB,CAAC,aAAqB,YAAoB,MAAkB,OAAgB;AAC/G,QAAM,UAAU,CAAC,KAAK,qBAAqB;AAC3C,QAAM,WAAW,gBAAgB,IAAI;AACrC,QAAM,aAAa,eAAe,IAAI;AACtC,SAAO;AAAA,0EACiE,UAAU,aAAa,UAAU;AAAA,6EAC9B,WAAW,KAAK,WAAW;AAAA,6BAC3E,QAAQ,mFAAmF,UAAU,KAAK,UAAU;AAAA,yEACxE,OAAO,4BAA4B,EAAE;AAAA;AAE9G;AAEO,MAAM,2BAA2B,CAAC,YAAoB,SAAqB;AAChF,QAAM,WAAW,gBAAgB,IAAI;AACrC,QAAM,aAAa,eAAe,IAAI;AACtC,SAAO;AAAA,4DACmD,UAAU;AAAA,6BACzC,QAAQ,mCAAmC,UAAU;AAAA;AAElF;AAEO,MAAM,oBAAoB,CAC/B,MACA,MACA,UACA,cACA,aAAa,MACb,UAAU,UACP;AACH,MAAI,CAAC,YAAY;AACf,WAAO;AAAA,EACT;AAEA,MAAI;AACJ,MAAI;AACJ,MAAI,SAAS;AACX,iBAAa;AACb,oBAAgB,8FAA8F,IAAI,KAAK,UAAU;AAAA,EACnI,OAAO;AACL,iBAAa,WAAW,IAAI;AAC5B,QAAI,YAAY,aAAa,4BAAS,MAAM;AAC1C,mBAAa,QAAQ,IAAI;AAAA,IAC3B;AACA,oBAAgB,iHAAiH,IAAI,WAAW,IAAI,KAAK,UAAU;AAAA,EACrK;AAEA,MAAI,cAAc;AAChB,oBAAgB,GAAG,aAAa,GAAG,YAAY;AAAA,EACjD;AAEA,SAAO;AACT;AAEO,MAAM,iBAAiB,CAAC,SAAiB;AAC9C,SAAO,KAAK,OAAO,CAAC,EAAE,YAAY,IAAI,KAAK,UAAU,CAAC,EAAE,YAAY;AACtE;AAEO,MAAM,iBAAiB,CAC5B,UACA,MACA,UACA,IACA,KACA,YAAY,UACT;AACH,MAAI,OAAO;AACX,MAAI,WAAW;AACb,WAAO,8BAA8B,QAAQ,IAAI,EAAE;AAAA,EACrD,OAAO;AACL,UAAM,EAAE,YAAY,iBAAiB,IAAI,oBAAAA,QAAa,UAAU,GAAG;AACnE,UAAM,oBAAoB,mBAAmB,aAAa;AAC1D,WAAO,sBAAsB,IAAI,IAAI,QAAQ,IAAI,EAAE,WAAW,iBAAiB;AAE/E,QAAI,YAAY,aAAa,4BAAS,MAAM;AAC1C,aAAO,wBAAwB,IAAI,IAAI,QAAQ,IAAI,EAAE,eAAe,iBAAiB;AAAA,IACvF;AAAA,EACF;AACA,SAAO;AACT;",
|
|
6
6
|
"names": ["localsHelper"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../dpr/utils/reportStoreHelper.ts"],
|
|
4
4
|
"sourcesContent": ["import type { RecentlyViewedStoreService, RequestedReportService } from '../services'\nimport { UserReportData } from '../types/UserReports'\n\nexport const removeDuplicates = async ({\n storeService,\n userId,\n id,\n search,\n}: {\n storeService: RequestedReportService | RecentlyViewedStoreService\n userId: string\n id: string\n search: string\n}) => {\n const reports = await storeService.getAllReportsById(id, userId)\n const duplicateIds = getDuplicateRequestIds(search, reports)\n if (duplicateIds.length) {\n await Promise.all(\n duplicateIds.map(async (duplicateId: string) => {\n await storeService.removeReport(duplicateId, userId)\n }),\n )\n }\n}\n\n/**\n * Gets the execution IDs of duplicate requests\n * - Checks whether the request query are the same\n *\n * @param {string} newReportSearchParams\n * @param {UserReportData[]} existingReports\n * @return {string[]} ids of the duplicate requests\n */\nexport const getDuplicateRequestIds = (newReportSearchParams: string, existingReports: UserReportData[]) => {\n const duplicates: string[] = []\n const newQueryParams = new URLSearchParams(newReportSearchParams)\n\n existingReports.forEach((existingReportData: UserReportData) => {\n const matches: boolean[] = []\n const search = existingReportData.url?.request?.search || ''\n const existingQueryParams = new URLSearchParams(search)\n const { executionId } = existingReportData\n\n if (existingQueryParams.entries.length === newQueryParams.entries.length) {\n newQueryParams.forEach((newValue, newKey) => {\n const match = existingQueryParams.has(newKey, newValue)\n matches.push(match)\n })\n }\n if (matches.every(Boolean) && executionId) {\n duplicates.push(executionId)\n }\n })\n\n return duplicates\n}\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGO,MAAM,mBAAmB,OAAO;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAKM;AACJ,QAAM,UAAU,MAAM,aAAa,kBAAkB,IAAI,MAAM;AAC/D,QAAM,eAAe,uBAAuB,QAAQ,OAAO;AAC3D,MAAI,aAAa,QAAQ;AACvB,UAAM,QAAQ;AAAA,MACZ,aAAa,IAAI,OAAO,gBAAwB;AAC9C,cAAM,aAAa,aAAa,aAAa,MAAM;AAAA,MACrD,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAUO,MAAM,yBAAyB,CAAC,uBAA+B,oBAAsC;AAC1G,QAAM,aAAuB,CAAC;AAC9B,QAAM,iBAAiB,IAAI,gBAAgB,qBAAqB;AAEhE,kBAAgB,QAAQ,CAAC,uBAAuC;AAC9D,UAAM,UAAqB,CAAC;AAC5B,UAAM,SAAS,mBAAmB,KAAK,SAAS,UAAU;AAC1D,UAAM,sBAAsB,IAAI,gBAAgB,MAAM;AACtD,UAAM,EAAE,YAAY,IAAI;AAExB,QAAI,oBAAoB,QAAQ,WAAW,eAAe,QAAQ,QAAQ;AACxE,qBAAe,QAAQ,CAAC,UAAU,WAAW;AAC3C,cAAM,QAAQ,oBAAoB,IAAI,QAAQ,QAAQ;AACtD,gBAAQ,KAAK,KAAK;AAAA,MACpB,CAAC;AAAA,IACH;AACA,QAAI,QAAQ,MAAM,OAAO,KAAK,aAAa;AACzC,iBAAW,KAAK,WAAW;AAAA,IAC7B;AAAA,EACF,CAAC;AAED,SAAO;AACT;",
|
|
6
6
|
"names": []
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../dpr/utils/requestStatusHelper.ts"],
|
|
4
4
|
"sourcesContent": ["import dayjs from 'dayjs'\nimport customParse from 'dayjs/plugin/customParseFormat'\nimport { Request, Response } from 'express'\nimport { ReportType, RequestedReport, RequestStatus } from '../types/UserReports'\nimport { ChildReportExecutionData } from '../types/ExecutionData'\nimport logger from './logger'\nimport { Services } from '../types/Services'\nimport localsHelper from './localsHelper'\nimport { components } from '../types/api'\nimport ErrorHandler from './ErrorHandler'\n\ndayjs.extend(customParse)\ninterface GetStatusUtilsResponse {\n status: RequestStatus\n errorMessage?: { userMessage?: string; developerMessage?: string }\n reportData?: RequestedReport | undefined\n}\n\nconst BAD_REQUEST_STATUSES: Array<RequestStatus> = [RequestStatus.ABORTED, RequestStatus.FAILED, RequestStatus.EXPIRED]\n\nconst IN_PROGRESS_REQUEST_STATUSES: Array<RequestStatus> = [\n RequestStatus.SUBMITTED,\n RequestStatus.STARTED,\n RequestStatus.PICKED,\n]\n\nfunction findWorstStatusResponse(\n statusRequests: Array<Promise<components['schemas']['StatementExecutionStatus']>>,\n): Promise<components['schemas']['StatementExecutionStatus']> {\n return Promise.all(statusRequests).then((statusResponses) => {\n const badStatus = statusResponses.find(\n (response) =>\n typeof response.status === 'number' || BAD_REQUEST_STATUSES.includes(response.status as RequestStatus),\n )\n\n if (badStatus) {\n return badStatus\n }\n\n const inProgressStatus = statusResponses.find((response) =>\n IN_PROGRESS_REQUEST_STATUSES.includes(response.status as RequestStatus),\n )\n\n if (inProgressStatus) {\n return inProgressStatus\n }\n\n return statusResponses[0]\n })\n}\n\nconst getStatusByReportType = async (\n services: Services,\n req: Request,\n res: Response,\n token: string,\n userId: string,\n) => {\n const { definitionsPath } = localsHelper.getValues(res)\n const { type, reportId, executionId, id, tableId } = req.body\n\n const requestedReport = await services.requestedReportService.getReportByExecutionId(executionId, userId)\n\n const reports = requestedReport?.childExecutionData ?? []\n\n let statusRequests: Array<Promise<components['schemas']['StatementExecutionStatus']>> = []\n if (type === ReportType.REPORT) {\n reports.push({ executionId, tableId, variantId: id })\n statusRequests = reports.map((executionData: ChildReportExecutionData) => {\n return services.reportingService.getAsyncReportStatus(\n token,\n reportId,\n executionData.variantId,\n executionData.executionId || '',\n definitionsPath,\n executionData.tableId || '',\n )\n })\n }\n\n if (type === ReportType.DASHBOARD) {\n statusRequests.push(\n services.dashboardService.getAsyncStatus(token, reportId, id, executionId, tableId, definitionsPath),\n )\n }\n\n const statusResponse = await findWorstStatusResponse(statusRequests)\n\n return {\n status: statusResponse.status,\n statusResponse,\n }\n}\n\nexport const getStatus = async ({\n req,\n res,\n services,\n}: {\n req: Request\n res: Response\n services: Services\n}): Promise<GetStatusUtilsResponse> => {\n const { token, dprUser } = localsHelper.getValues(res)\n const { status: currentStatus, requestedAt } = req.body\n const timeoutExemptStatuses = [RequestStatus.READY, RequestStatus.EXPIRED, RequestStatus.FAILED]\n\n let status: RequestStatus\n let errorMessage\n let statusResponse: components['schemas']['StatementExecutionStatus']\n try {\n const statusResponseData = await getStatusByReportType(services, req, res, token, dprUser.id)\n statusResponse = statusResponseData.statusResponse\n status = <RequestStatus>statusResponseData.status\n if (\n shouldTimeoutRequest({ requestedAt, compareTime: new Date(), durationMins: 15 }) &&\n !timeoutExemptStatuses.includes(<RequestStatus>status)\n ) {\n throw new Error('Request taking too long. Request Halted')\n }\n\n if (status === RequestStatus.FAILED) {\n logger.error(`Error: ${JSON.stringify(statusResponse.error)}`)\n errorMessage = new ErrorHandler(statusResponse.error).formatError()\n }\n } catch (error) {\n errorMessage = new ErrorHandler(error).formatError()\n status = currentStatus === RequestStatus.FINISHED ? RequestStatus.EXPIRED : RequestStatus.FAILED\n }\n\n if (typeof status === 'number') {\n status = RequestStatus.FAILED\n }\n\n return {\n status,\n ...(errorMessage && { errorMessage }),\n }\n}\n\n/**\n * Gets the expired status of a viewed report\n * - if reports status was READY/FINISHED\n * - And the new Status is an error status\n * - it means the report has expired\n *\n * @param {AsyncReportUtilsParams} { req, res, services }\n * @return {*}\n */\nexport const getExpiredStatus = async ({ req, res, services }: { req: Request; res: Response; services: Services }) => {\n const { token, dprUser } = localsHelper.getValues(res)\n const { executionId, status: currentStatus } = req.body\n\n let errorMessage\n let status\n try {\n const statusData = await getStatusByReportType(services, req, res, token, dprUser.id)\n status = <RequestStatus>statusData.status\n } catch (error) {\n errorMessage = new ErrorHandler(error).formatError()\n status =\n currentStatus === RequestStatus.READY || currentStatus === RequestStatus.FINISHED\n ? RequestStatus.EXPIRED\n : RequestStatus.FAILED\n }\n\n const result: GetStatusUtilsResponse = {\n status,\n ...(errorMessage && { errorMessage }),\n }\n\n return {\n isExpired: result.status === RequestStatus.EXPIRED,\n executionId,\n }\n}\n\nexport const shouldTimeoutRequest = ({\n requestedAt,\n compareTime,\n durationMins,\n}: {\n requestedAt: Date\n compareTime: Date\n durationMins: number\n}) => {\n const compareDate = dayjs(compareTime)\n const requestDate = dayjs(requestedAt)\n\n const result = compareDate.diff(requestDate, 'minutes')\n\n return result >= durationMins\n}\n\nexport default {\n getStatus,\n getExpiredStatus,\n shouldTimeoutRequest,\n}\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": ["dayjs", "customParse", "localsHelper", "logger", "ErrorHandler"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../dpr/utils/sanitisedError.ts"],
|
|
4
4
|
"sourcesContent": ["import type { ResponseError } from 'superagent'\n\ninterface SanitisedError {\n text?: string\n status?: number\n headers?: unknown\n data?: unknown\n stack?: string | undefined\n message: string\n}\n\nexport type UnsanitisedError = ResponseError\n\nexport function sanitise(error: UnsanitisedError): SanitisedError {\n if (error.response) {\n return {\n text: error.response.text,\n status: error.response.status,\n headers: error.response.headers,\n data: error.response.body,\n message: error.message,\n stack: error.stack,\n }\n }\n return {\n message: error.message,\n stack: error.stack,\n }\n}\n\nexport default sanitise\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaO,SAAS,SAAS,OAAyC;AAChE,MAAI,MAAM,UAAU;AAClB,WAAO;AAAA,MACL,MAAM,MAAM,SAAS;AAAA,MACrB,QAAQ,MAAM,SAAS;AAAA,MACvB,SAAS,MAAM,SAAS;AAAA,MACxB,MAAM,MAAM,SAAS;AAAA,MACrB,SAAS,MAAM;AAAA,MACf,OAAO,MAAM;AAAA,IACf;AAAA,EACF;AACA,SAAO;AAAA,IACL,SAAS,MAAM;AAAA,IACf,OAAO,MAAM;AAAA,EACf;AACF;AAEA,IAAO,yBAAQ;",
|
|
6
6
|
"names": []
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../dpr/utils/urlHelper.ts"],
|
|
4
4
|
"sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { FilterType } from '../components/_filters/filter-input/enum'\nimport { components } from '../types/api'\nimport { DprConfig } from '../types/DprConfig'\n\nexport const clearFilterValue = '~clear~'\n\nexport const createUrlForParameters = (\n currentQueryParams: NodeJS.Dict<string | Array<string>>,\n updateQueryParams: NodeJS.Dict<string>,\n fields?: components['schemas']['FieldDefinition'][],\n) => {\n let queryParams: NodeJS.Dict<string | Array<string>>\n\n if (updateQueryParams) {\n queryParams = {\n ...currentQueryParams,\n selectedPage: '1',\n }\n\n Object.keys(updateQueryParams).forEach((q) => {\n if (updateQueryParams[q]) {\n queryParams[q] = updateQueryParams[q]\n } else {\n Object.keys(queryParams)\n .filter((key) => key === q || key.startsWith(`${q}.`))\n .forEach((key) => {\n queryParams[key] = clearFilterValue\n })\n }\n })\n } else {\n queryParams = {\n selectedPage: '1',\n pageSize: currentQueryParams['pageSize'],\n sortColumn: currentQueryParams['sortColumn'],\n sortedAsc: currentQueryParams['sortedAsc'],\n dataProductDefinitionsPath: currentQueryParams['dataProductDefinitionsPath'],\n }\n }\n\n const nonEmptyQueryParams: NodeJS.Dict<string | Array<string>> = {}\n\n Object.keys(queryParams)\n .filter((key) => queryParams[key])\n .forEach((key) => {\n nonEmptyQueryParams[key] = queryParams[key]\n })\n\n return createQuerystringFromObject(nonEmptyQueryParams, fields)\n}\n\nexport const createQuerystringFromObject = (\n source: NodeJS.Dict<string | Array<string>>,\n fields?: components['schemas']['FieldDefinition'][],\n) => {\n const querystring = Object.keys(source)\n .flatMap((key: string) => {\n const fieldDef = fields?.find((f) => `filters.${f.name}` === key)\n const value = source[key] || ''\n\n if (Array.isArray(value)) {\n return value.map((v) => `${encodeURI(key)}=${encodeURI(v)}`)\n }\n\n if (fieldDef && fieldDef.filter && fieldDef.filter.type.toLowerCase() === FilterType.multiselect.toLowerCase()) {\n const values = value.split(',')\n return values.map((v) => {\n return `${encodeURI(key)}=${encodeURI(v)}`\n })\n }\n\n return [`${encodeURI(key)}=${encodeURI(value)}`]\n })\n .join('&')\n\n return `?${querystring}`\n}\n\nexport const getDpdPathSuffix = (dpdsPath: string) => {\n if (dpdsPath && dpdsPath !== '') {\n return `?dataProductDefinitionsPath=${dpdsPath}`\n }\n\n return ''\n}\n\nexport const getRoutePrefix = (config?: DprConfig) => {\n let prefix = config?.routePrefix\n if (!prefix) {\n prefix = '/dpr'\n }\n if (prefix === 'dpr') {\n prefix = ''\n }\n return prefix\n}\n\nexport default createUrlForParameters\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,kBAA2B;AAIpB,MAAM,mBAAmB;AAEzB,MAAM,yBAAyB,CACpC,oBACA,mBACA,WACG;AACH,MAAI;AAEJ,MAAI,mBAAmB;AACrB,kBAAc;AAAA,MACZ,GAAG;AAAA,MACH,cAAc;AAAA,IAChB;AAEA,WAAO,KAAK,iBAAiB,EAAE,QAAQ,CAAC,MAAM;AAC5C,UAAI,kBAAkB,CAAC,GAAG;AACxB,oBAAY,CAAC,IAAI,kBAAkB,CAAC;AAAA,MACtC,OAAO;AACL,eAAO,KAAK,WAAW,EACpB,OAAO,CAAC,QAAQ,QAAQ,KAAK,IAAI,WAAW,GAAG,CAAC,GAAG,CAAC,EACpD,QAAQ,CAAC,QAAQ;AAChB,sBAAY,GAAG,IAAI;AAAA,QACrB,CAAC;AAAA,MACL;AAAA,IACF,CAAC;AAAA,EACH,OAAO;AACL,kBAAc;AAAA,MACZ,cAAc;AAAA,MACd,UAAU,mBAAmB,UAAU;AAAA,MACvC,YAAY,mBAAmB,YAAY;AAAA,MAC3C,WAAW,mBAAmB,WAAW;AAAA,MACzC,4BAA4B,mBAAmB,4BAA4B;AAAA,IAC7E;AAAA,EACF;AAEA,QAAM,sBAA2D,CAAC;AAElE,SAAO,KAAK,WAAW,EACpB,OAAO,CAAC,QAAQ,YAAY,GAAG,CAAC,EAChC,QAAQ,CAAC,QAAQ;AAChB,wBAAoB,GAAG,IAAI,YAAY,GAAG;AAAA,EAC5C,CAAC;AAEH,SAAO,4BAA4B,qBAAqB,MAAM;AAChE;AAEO,MAAM,8BAA8B,CACzC,QACA,WACG;AACH,QAAM,cAAc,OAAO,KAAK,MAAM,EACnC,QAAQ,CAAC,QAAgB;AACxB,UAAM,WAAW,QAAQ,KAAK,CAAC,MAAM,WAAW,EAAE,IAAI,OAAO,GAAG;AAChE,UAAM,QAAQ,OAAO,GAAG,KAAK;AAE7B,QAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,aAAO,MAAM,IAAI,CAAC,MAAM,GAAG,UAAU,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,EAAE;AAAA,IAC7D;AAEA,QAAI,YAAY,SAAS,UAAU,SAAS,OAAO,KAAK,YAAY,MAAM,uBAAW,YAAY,YAAY,GAAG;AAC9G,YAAM,SAAS,MAAM,MAAM,GAAG;AAC9B,aAAO,OAAO,IAAI,CAAC,MAAM;AACvB,eAAO,GAAG,UAAU,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC;AAAA,MAC1C,CAAC;AAAA,IACH;AAEA,WAAO,CAAC,GAAG,UAAU,GAAG,CAAC,IAAI,UAAU,KAAK,CAAC,EAAE;AAAA,EACjD,CAAC,EACA,KAAK,GAAG;AAEX,SAAO,IAAI,WAAW;AACxB;AAEO,MAAM,mBAAmB,CAAC,aAAqB;AACpD,MAAI,YAAY,aAAa,IAAI;AAC/B,WAAO,+BAA+B,QAAQ;AAAA,EAChD;AAEA,SAAO;AACT;AAEO,MAAM,iBAAiB,CAAC,WAAuB;AACpD,MAAI,SAAS,QAAQ;AACrB,MAAI,CAAC,QAAQ;AACX,aAAS;AAAA,EACX;AACA,MAAI,WAAW,OAAO;AACpB,aAAS;AAAA,EACX;AACA,SAAO;AACT;AAEA,IAAO,oBAAQ;",
|
|
6
6
|
"names": []
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../dpr/validation/validate.ts"],
|
|
4
4
|
"sourcesContent": ["import { RequestHandler } from 'express'\nimport z from 'zod'\n\nexport const validate =\n (schema: z.ZodType): RequestHandler =>\n (req, res, next) => {\n const result = schema.safeParse(req.body)\n if (result.success) {\n return next()\n }\n\n const errors = Object.entries(z.flattenError(result.error).fieldErrors).map(\n ([fieldName, err]: [string, unknown]) => ({\n href: `#${fieldName}`,\n text: Array.isArray(err) ? err[0] : err,\n }),\n )\n req.flash(`DPR_ERRORS`, JSON.stringify(errors))\n return res.redirect(`${req.baseUrl}#`)\n }\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,iBAAc;AAEP,MAAM,WACX,CAAC,WACD,CAAC,KAAK,KAAK,SAAS;AAClB,QAAM,SAAS,OAAO,UAAU,IAAI,IAAI;AACxC,MAAI,OAAO,SAAS;AAClB,WAAO,KAAK;AAAA,EACd;AAEA,QAAM,SAAS,OAAO,QAAQ,WAAAA,QAAE,aAAa,OAAO,KAAK,EAAE,WAAW,EAAE;AAAA,IACtE,CAAC,CAAC,WAAW,GAAG,OAA0B;AAAA,MACxC,MAAM,IAAI,SAAS;AAAA,MACnB,MAAM,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI;AAAA,IACtC;AAAA,EACF;AACA,MAAI,MAAM,cAAc,KAAK,UAAU,MAAM,CAAC;AAC9C,SAAO,IAAI,SAAS,GAAG,IAAI,OAAO,GAAG;AACvC;",
|
|
6
6
|
"names": ["z"]
|