@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
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../dpr/components/_charts/chart/clientClass.ts"],
|
|
4
|
+
"sourcesContent": ["// @ts-nocheck\n/* eslint-disable class-methods-use-this */\nimport Chart from 'chart.js/auto'\nimport ChartDataLabels from 'chartjs-plugin-datalabels'\nimport { MatrixController, MatrixElement } from 'chartjs-chart-matrix'\n\nimport { DprClientClass } from '../../../DprClientClass'\n\nclass ChartVisualisation extends DprClientClass {\n setupCanvas() {\n this.chartContext = this.getElement().querySelector('canvas')\n\n // data\n this.id = this.chartContext.getAttribute('id')\n this.chartParams = JSON.parse(this.getElement().getAttribute('data-dpr-chart-data'))\n this.type = this.getElement().getAttribute('data-dpr-chart-type')\n this.setValueSuffix()\n\n // elements\n this.legend = this.getElement().querySelector(`#js-legend-${this.id}`)\n\n // ChartCard elements\n this.tooltipDetailsEl = document.getElementById(`dpr-${this.id}-tooltip-details`)\n this.headlineValuesEl = document.getElementById(`dpr-${this.id}-headline-values`)\n this.labelElement = document.getElementById(`dpr-${this.id}-label`)\n this.valueElement = document.getElementById(`dpr-${this.id}-value`)\n this.legendElement = document.getElementById(`dpr-${this.id}-legend`)\n this.legendElement = document.getElementById(`dpr-${this.id}-legend`)\n\n if (this.chartParams.partialDate) {\n this.partialStart = this.chartParams.partialDate.start || false\n this.partialEnd = this.chartParams.partialDate.end || false\n }\n\n // flags\n this.singleDataset = this.chartParams.datasets.length === 1\n }\n\n initChart() {\n // Prevent font loading issue\n window.addEventListener('load', () => {\n // An example of creating a chart, replace with your code:\n Chart.defaults.font.family = 'GDS Transport'\n Chart.defaults.font.size = 12\n Chart.register(ChartDataLabels)\n Chart.register(MatrixController, MatrixElement)\n this.chart = new Chart(this.chartContext, this.chartData)\n })\n\n this.initChartEvents()\n }\n\n generateChartData(settings) {\n const { datasets, labels, config } = this.chartParams\n const { options, datalabels, plugins, pluginsOptions, toolTipOptions, hoverEvent, styling } = settings\n\n const chartData = {\n type: this.type,\n data: {\n labels,\n datasets: this.createDatasets(datasets, styling),\n },\n options: {\n ...config,\n ...(options && options),\n ...(hoverEvent && hoverEvent),\n plugins: {\n ...config.plugins,\n ...(pluginsOptions && pluginsOptions),\n ...(datalabels && { datalabels }),\n tooltip: {\n ...config.plugins.tooltip,\n ...(toolTipOptions && toolTipOptions),\n },\n },\n },\n plugins: plugins && plugins.length ? [...plugins] : [],\n }\n\n return chartData\n }\n\n createDatasets(datasets, styling) {\n return datasets.map((dataset) => {\n return {\n ...dataset,\n ...(styling && styling),\n }\n })\n }\n\n setHoverValue({ label, value, legend, ctx }) {\n if (ctx.tooltipDetailsEl) {\n ctx.tooltipDetailsEl.style.display = 'block'\n ctx.labelElement.innerHTML = ctx.singleDataset ? `${label}` : `${legend}: ${label}`\n ctx.valueElement.innerHTML = `${value}`\n }\n if (ctx.headlineValuesEl) {\n ctx.headlineValuesEl.style.display = 'none'\n }\n if (!legend) {\n ctx.legendElement.style.display = 'none'\n }\n }\n\n setValueSuffix() {\n this.unit = this.getElement().getAttribute('data-dpr-chart-unit')\n this.suffix = this.unit === 'percentage' ? '%' : ''\n }\n\n isPercentage() {\n return this.unit === 'percentage'\n }\n\n initChartEvents() {\n this.chart.canvas.addEventListener('mouseout', (e) => {\n if (this.tooltipDetailsEl) this.tooltipDetailsEl.style.display = 'none'\n if (this.headlineValuesEl) this.headlineValuesEl.style.display = 'block'\n })\n }\n}\n\nexport { ChartVisualisation }\nexport default ChartVisualisation\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Chart", "ChartDataLabels"]
|
|
7
|
+
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
1
2
|
/* eslint-disable class-methods-use-this */
|
|
2
3
|
import Chart from 'chart.js/auto'
|
|
3
4
|
import ChartDataLabels from 'chartjs-plugin-datalabels'
|
|
4
5
|
import { MatrixController, MatrixElement } from 'chartjs-chart-matrix'
|
|
5
6
|
|
|
6
|
-
import { DprClientClass } from '../../../DprClientClass
|
|
7
|
+
import { DprClientClass } from '../../../DprClientClass'
|
|
7
8
|
|
|
8
9
|
class ChartVisualisation extends DprClientClass {
|
|
9
10
|
setupCanvas() {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../../../dpr/components/_charts/chart/doughnut/DoughnutChart.ts"],
|
|
4
4
|
"sourcesContent": ["/* eslint-disable prefer-destructuring */\nimport {\n DashboardVisualisationType,\n DashboardVisualisationData,\n VisualisationDefinitionKey,\n} from '../../../_dashboards/dashboard-visualisation/types'\nimport { components } from '../../../../types/api'\nimport Chart from '../Chart'\nimport { DoughnutDefinitionMeasure, DoughnutDefinitionType } from './types'\nimport DoughnutChartSchemas from './validate'\n\nclass DoughnutChart extends Chart {\n private definition!: DoughnutDefinitionType\n\n private measures!: DoughnutDefinitionMeasure[]\n\n private keys!: VisualisationDefinitionKey[]\n\n private init = () => {\n this.measures = this.definition.columns.measures\n this.keys = this.definition.columns.keys || []\n this.initUnit(this.measures)\n this.getLabelId(this.keys)\n }\n\n withDefinition = (definition: components['schemas']['DashboardVisualisationDefinition']) => {\n this.definition = DoughnutChartSchemas.DoughnutSchema.parse(definition)\n this.init()\n\n return this\n }\n\n build = (): DashboardVisualisationData => {\n this.createDatasets(this.measures, this.responseData)\n this.augmentDataset()\n this.setBespokeOptions()\n this.createLabels(this.measures)\n\n return {\n type: DashboardVisualisationType.DONUT,\n options: {\n unit: this.unit,\n },\n data: {\n labels: this.labels,\n datasets: this.datasets,\n config: this.config,\n },\n }\n }\n\n private augmentDataset = () => {\n this.datasets = this.datasets.map((set) => {\n return {\n ...set,\n backgroundColor: [...this.hexColours, ...this.hexColours],\n borderColor: '#FFFFFF',\n hoverOffset: 4,\n datalabels: {\n anchor: 'center',\n borderWidth: 0,\n },\n }\n })\n }\n\n private setBespokeOptions = () => {\n const cutout = this.datasets.length === 1 ? '50%' : '20%'\n this.config = {\n ...this.config,\n cutout,\n }\n }\n}\n\nexport { DoughnutChart }\nexport default DoughnutChart\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAIO;AAEP,mBAAkB;AAElB,sBAAiC;AAEjC,MAAM,sBAAsB,aAAAA,QAAM;AAAA,EACxB;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA,OAAO,MAAM;AACnB,SAAK,WAAW,KAAK,WAAW,QAAQ;AACxC,SAAK,OAAO,KAAK,WAAW,QAAQ,QAAQ,CAAC;AAC7C,SAAK,SAAS,KAAK,QAAQ;AAC3B,SAAK,WAAW,KAAK,IAAI;AAAA,EAC3B;AAAA,EAEA,iBAAiB,CAAC,eAA0E;AAC1F,SAAK,aAAa,gBAAAC,QAAqB,eAAe,MAAM,UAAU;AACtE,SAAK,KAAK;AAEV,WAAO;AAAA,EACT;AAAA,EAEA,QAAQ,MAAkC;AACxC,SAAK,eAAe,KAAK,UAAU,KAAK,YAAY;AACpD,SAAK,eAAe;AACpB,SAAK,kBAAkB;AACvB,SAAK,aAAa,KAAK,QAAQ;AAE/B,WAAO;AAAA,MACL,MAAM,wCAA2B;AAAA,MACjC,SAAS;AAAA,QACP,MAAM,KAAK;AAAA,MACb;AAAA,MACA,MAAM;AAAA,QACJ,QAAQ,KAAK;AAAA,QACb,UAAU,KAAK;AAAA,QACf,QAAQ,KAAK;AAAA,MACf;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,iBAAiB,MAAM;AAC7B,SAAK,WAAW,KAAK,SAAS,IAAI,CAAC,QAAQ;AACzC,aAAO;AAAA,QACL,GAAG;AAAA,QACH,iBAAiB,CAAC,GAAG,KAAK,YAAY,GAAG,KAAK,UAAU;AAAA,QACxD,aAAa;AAAA,QACb,aAAa;AAAA,QACb,YAAY;AAAA,UACV,QAAQ;AAAA,UACR,aAAa;AAAA,QACf;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEQ,oBAAoB,MAAM;AAChC,UAAM,SAAS,KAAK,SAAS,WAAW,IAAI,QAAQ;AACpD,SAAK,SAAS;AAAA,MACZ,GAAG,KAAK;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;AAGA,IAAO,wBAAQ;",
|
|
6
6
|
"names": ["Chart", "DoughnutChartSchemas"]
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var clientClass_exports = {};
|
|
30
|
+
__export(clientClass_exports, {
|
|
31
|
+
DoughnutChartVisualisation: () => DoughnutChartVisualisation,
|
|
32
|
+
default: () => clientClass_default
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(clientClass_exports);
|
|
35
|
+
var import_clientClass = __toESM(require("../clientClass"));
|
|
36
|
+
class DoughnutChartVisualisation extends import_clientClass.default {
|
|
37
|
+
static getModuleName() {
|
|
38
|
+
return "doughnut-chart";
|
|
39
|
+
}
|
|
40
|
+
initialise() {
|
|
41
|
+
this.setupCanvas();
|
|
42
|
+
this.settings = this.initSettings();
|
|
43
|
+
this.chartData = this.generateChartData(this.settings);
|
|
44
|
+
this.initChart(this.chartData);
|
|
45
|
+
}
|
|
46
|
+
initSettings() {
|
|
47
|
+
return {
|
|
48
|
+
options: this.setOptions(),
|
|
49
|
+
datalabels: this.setDataLabels(),
|
|
50
|
+
pluginsOptions: this.setPluginsOptions(),
|
|
51
|
+
toolTipOptions: this.setToolTipOptions(),
|
|
52
|
+
plugins: this.setPlugins()
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
setOptions() {
|
|
56
|
+
const cutoutValue = this.chartParams.datasets.length === 1 ? "50%" : "20%";
|
|
57
|
+
return {
|
|
58
|
+
cutout: cutoutValue
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
setPluginsOptions() {
|
|
62
|
+
return {
|
|
63
|
+
legend: {
|
|
64
|
+
display: true,
|
|
65
|
+
position: "bottom"
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
setPlugins() {
|
|
70
|
+
const plugins = [];
|
|
71
|
+
if (this.chartParams.datasets.length === 1 && !this.isPercentage) {
|
|
72
|
+
plugins.push(this.setCentralText());
|
|
73
|
+
}
|
|
74
|
+
return plugins;
|
|
75
|
+
}
|
|
76
|
+
setCentralText() {
|
|
77
|
+
return {
|
|
78
|
+
// Put the total in the center of the donut
|
|
79
|
+
id: "text",
|
|
80
|
+
beforeDraw(chart) {
|
|
81
|
+
const { width } = chart;
|
|
82
|
+
const { height } = chart;
|
|
83
|
+
const { ctx } = chart;
|
|
84
|
+
ctx.textBaseline = "middle";
|
|
85
|
+
let fontSize = 2.5;
|
|
86
|
+
ctx.font = `100 ${fontSize}em GDS Transport`;
|
|
87
|
+
ctx.fillStyle = " #505a5f";
|
|
88
|
+
const total = chart.data.datasets[0].data.reduce((a, c) => a + c, 0);
|
|
89
|
+
const text = total;
|
|
90
|
+
const textX = Math.round((width - ctx.measureText(text).width) / 2);
|
|
91
|
+
const textY = height / 2;
|
|
92
|
+
ctx.fillText(text, textX, textY);
|
|
93
|
+
ctx.save();
|
|
94
|
+
ctx.textBaseline = "middle";
|
|
95
|
+
fontSize = 1;
|
|
96
|
+
ctx.font = `100 ${fontSize}em GDS Transport`;
|
|
97
|
+
ctx.fillStyle = " #505a5f";
|
|
98
|
+
const title = "Total";
|
|
99
|
+
const titleX = Math.round((width - ctx.measureText(title).width) / 2);
|
|
100
|
+
const titleY = textY + 30;
|
|
101
|
+
ctx.fillText(title, titleX, titleY);
|
|
102
|
+
ctx.save();
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
setToolTipOptions() {
|
|
107
|
+
const ctx = this;
|
|
108
|
+
return {
|
|
109
|
+
callbacks: {
|
|
110
|
+
title(context) {
|
|
111
|
+
const { label, dataset } = context[0];
|
|
112
|
+
const { label: establishmentId } = dataset;
|
|
113
|
+
const title = ctx.singleDataset ? `${label}` : `${establishmentId}: ${label}`;
|
|
114
|
+
return title;
|
|
115
|
+
},
|
|
116
|
+
label(context) {
|
|
117
|
+
const { label, parsed: value, dataset } = context;
|
|
118
|
+
const { label: legend } = dataset;
|
|
119
|
+
const dataArr = dataset.data;
|
|
120
|
+
let toolipValue = `${value}${ctx.suffix}`;
|
|
121
|
+
if (!ctx.isPercentage) {
|
|
122
|
+
const val = dataArr.reduce((sum, d) => sum + Number(d), 0);
|
|
123
|
+
const percentage = `${(value * 100 / val).toFixed(2)}%`;
|
|
124
|
+
toolipValue = ctx.singleDataset ? `${toolipValue} (${percentage})` : `${legend}: ${toolipValue} (${percentage})`;
|
|
125
|
+
ctx.setHoverValue({ label, value: toolipValue, legend, ctx });
|
|
126
|
+
} else {
|
|
127
|
+
toolipValue = `${toolipValue}`;
|
|
128
|
+
ctx.setHoverValue({ label, value: toolipValue, legend, ctx });
|
|
129
|
+
}
|
|
130
|
+
return toolipValue;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
setDataLabels() {
|
|
136
|
+
const ctx = this;
|
|
137
|
+
return {
|
|
138
|
+
textAlign: "center",
|
|
139
|
+
color: "#FFF",
|
|
140
|
+
display: (context) => {
|
|
141
|
+
const { dataset, dataIndex } = context;
|
|
142
|
+
const value = dataset.data[dataIndex];
|
|
143
|
+
const total = dataset.data.reduce((a, c) => a + c, 0);
|
|
144
|
+
const percentage = value / total * 100;
|
|
145
|
+
return percentage > 4;
|
|
146
|
+
},
|
|
147
|
+
formatter: (value, context) => {
|
|
148
|
+
const { dataset } = context;
|
|
149
|
+
const label = ctx.singleDataset ? `${value}${this.suffix}` : `${value}${this.suffix}
|
|
150
|
+
${dataset.label}`;
|
|
151
|
+
return label;
|
|
152
|
+
},
|
|
153
|
+
labels: {
|
|
154
|
+
title: {
|
|
155
|
+
font: {
|
|
156
|
+
weight: "bold",
|
|
157
|
+
size: 16,
|
|
158
|
+
color: "#FFF"
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
var clientClass_default = DoughnutChartVisualisation;
|
|
166
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
167
|
+
0 && (module.exports = {
|
|
168
|
+
DoughnutChartVisualisation
|
|
169
|
+
});
|
|
170
|
+
//# sourceMappingURL=clientClass.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../dpr/components/_charts/chart/doughnut/clientClass.ts"],
|
|
4
|
+
"sourcesContent": ["// @ts-nocheck\n/* eslint-disable class-methods-use-this */\nimport ChartVisualisation from '../clientClass'\n\nclass DoughnutChartVisualisation extends ChartVisualisation {\n static getModuleName() {\n return 'doughnut-chart'\n }\n\n initialise() {\n this.setupCanvas()\n this.settings = this.initSettings()\n this.chartData = this.generateChartData(this.settings)\n this.initChart(this.chartData)\n }\n\n initSettings() {\n return {\n options: this.setOptions(),\n datalabels: this.setDataLabels(),\n pluginsOptions: this.setPluginsOptions(),\n toolTipOptions: this.setToolTipOptions(),\n plugins: this.setPlugins(),\n }\n }\n\n setOptions() {\n const cutoutValue = this.chartParams.datasets.length === 1 ? '50%' : '20%'\n return {\n cutout: cutoutValue,\n }\n }\n\n setPluginsOptions() {\n return {\n legend: {\n display: true,\n position: 'bottom',\n },\n }\n }\n\n setPlugins() {\n const plugins = []\n if (this.chartParams.datasets.length === 1 && !this.isPercentage) {\n plugins.push(this.setCentralText())\n }\n return plugins\n }\n\n setCentralText() {\n return {\n // Put the total in the center of the donut\n id: 'text',\n beforeDraw(chart) {\n const { width } = chart\n const { height } = chart\n const { ctx } = chart\n\n ctx.textBaseline = 'middle'\n let fontSize = 2.5\n ctx.font = `100 ${fontSize}em GDS Transport`\n ctx.fillStyle = '\t#505a5f'\n\n // Accumulated total\n const total = chart.data.datasets[0].data.reduce((a, c) => a + c, 0)\n const text = total\n const textX = Math.round((width - ctx.measureText(text).width) / 2)\n const textY = height / 2\n\n ctx.fillText(text, textX, textY)\n ctx.save()\n\n ctx.textBaseline = 'middle'\n fontSize = 1\n ctx.font = `100 ${fontSize}em GDS Transport`\n ctx.fillStyle = '\t#505a5f'\n\n // Chart title\n const title = 'Total'\n const titleX = Math.round((width - ctx.measureText(title).width) / 2)\n const titleY = textY + 30\n\n ctx.fillText(title, titleX, titleY)\n ctx.save()\n },\n }\n }\n\n setToolTipOptions() {\n const ctx = this\n return {\n callbacks: {\n title(context) {\n const { label, dataset } = context[0]\n const { label: establishmentId } = dataset\n const title = ctx.singleDataset ? `${label}` : `${establishmentId}: ${label}`\n return title\n },\n label(context) {\n const { label, parsed: value, dataset } = context\n const { label: legend } = dataset\n const dataArr = dataset.data\n\n let toolipValue = `${value}${ctx.suffix}`\n\n if (!ctx.isPercentage) {\n const val = dataArr.reduce((sum, d) => sum + Number(d), 0)\n const percentage = `${((value * 100) / val).toFixed(2)}%`\n toolipValue = ctx.singleDataset\n ? `${toolipValue} (${percentage})`\n : `${legend}: ${toolipValue} (${percentage})`\n ctx.setHoverValue({ label, value: toolipValue, legend, ctx })\n } else {\n toolipValue = `${toolipValue}`\n ctx.setHoverValue({ label, value: toolipValue, legend, ctx })\n }\n\n return toolipValue\n },\n },\n }\n }\n\n setDataLabels() {\n const ctx = this\n return {\n textAlign: 'center',\n color: '#FFF',\n display: (context) => {\n const { dataset, dataIndex } = context\n const value = dataset.data[dataIndex]\n const total = dataset.data.reduce((a, c) => a + c, 0)\n const percentage = (value / total) * 100\n return percentage > 4\n },\n formatter: (value, context) => {\n const { dataset } = context\n const label = ctx.singleDataset\n ? `${value}${this.suffix}`\n : `${value}${this.suffix}\n${dataset.label}`\n\n return label\n },\n labels: {\n title: {\n font: {\n weight: 'bold',\n size: 16,\n color: '#FFF',\n },\n },\n },\n }\n }\n}\n\nexport { DoughnutChartVisualisation }\nexport default DoughnutChartVisualisation\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["ChartVisualisation"]
|
|
7
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../../../dpr/components/_charts/chart/doughnut/types.ts"],
|
|
4
4
|
"sourcesContent": ["import z from 'zod'\nimport DoughnutChartSchemas from './validate'\n\nexport type DoughnutDefinitionType = z.infer<typeof DoughnutChartSchemas.DoughnutSchema>\nexport type DoughnutDefinitionMeasure = z.infer<typeof DoughnutChartSchemas.DounutMeasureSchema>\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
|
|
6
6
|
"names": []
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../../../dpr/components/_charts/chart/doughnut/validate.ts"],
|
|
4
4
|
"sourcesContent": ["import { z } from 'zod'\nimport { DashboardVisualisationSchema, DashboardColumns } from '../../../_dashboards/dashboard-visualisation/Validate'\n\nconst DounutMeasureSchema = z.object({\n id: z.string(),\n display: z.string().optional(),\n unit: z.enum(['NUMBER', 'PERCENTAGE']).optional(),\n})\n\nconst DonutOptions = z.object({\n showLatest: z.boolean().default(true),\n})\n\nconst DoughnutSchema = z.object({\n ...DashboardVisualisationSchema.shape,\n type: z.literal('doughnut'),\n display: z.string(),\n options: z.object(DonutOptions.shape).optional(),\n columns: z.object({\n ...DashboardColumns.shape,\n measures: z.array(DounutMeasureSchema).min(2, 'Measure must contain 2 items'),\n }),\n})\n\nconst DoughnutChartSchemas = {\n DoughnutSchema,\n DounutMeasureSchema,\n}\n\nexport default DoughnutChartSchemas\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAkB;AAClB,sBAA+D;AAE/D,MAAM,sBAAsB,aAAE,OAAO;AAAA,EACnC,IAAI,aAAE,OAAO;AAAA,EACb,SAAS,aAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,MAAM,aAAE,KAAK,CAAC,UAAU,YAAY,CAAC,EAAE,SAAS;AAClD,CAAC;AAED,MAAM,eAAe,aAAE,OAAO;AAAA,EAC5B,YAAY,aAAE,QAAQ,EAAE,QAAQ,IAAI;AACtC,CAAC;AAED,MAAM,iBAAiB,aAAE,OAAO;AAAA,EAC9B,GAAG,6CAA6B;AAAA,EAChC,MAAM,aAAE,QAAQ,UAAU;AAAA,EAC1B,SAAS,aAAE,OAAO;AAAA,EAClB,SAAS,aAAE,OAAO,aAAa,KAAK,EAAE,SAAS;AAAA,EAC/C,SAAS,aAAE,OAAO;AAAA,IAChB,GAAG,iCAAiB;AAAA,IACpB,UAAU,aAAE,MAAM,mBAAmB,EAAE,IAAI,GAAG,8BAA8B;AAAA,EAC9E,CAAC;AACH,CAAC;AAED,MAAM,uBAAuB;AAAA,EAC3B;AAAA,EACA;AACF;AAEA,IAAO,mBAAQ;",
|
|
6
6
|
"names": []
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../../../dpr/components/_charts/chart/heatmap/HeatmapChart.ts"],
|
|
4
4
|
"sourcesContent": ["/* eslint-disable prefer-destructuring */\nimport dayjs from 'dayjs'\nimport { Granularity } from '../../../_inputs/granular-date-range/types'\nimport { DashboardDataResponse } from '../../../../types/Metrics'\nimport {\n DashboardVisualisationType,\n DashboardVisualisationData,\n DashboardVisualisationDataSet,\n} from '../../../_dashboards/dashboard-visualisation/types'\nimport { MatrixChartData, MatrixTimeseriesDefinitionType } from './types'\nimport DatasetHelper from '../../../../utils/datasetHelper'\nimport Buckets from '../buckets/Buckets'\nimport { components } from '../../../../types/api'\nimport MatrixSchema from './validate'\nimport ChartConfig from '../chart-config'\n\nclass HeatmapChart {\n private definition!: MatrixTimeseriesDefinitionType\n\n private measures!: MatrixTimeseriesDefinitionType['columns']['measures']\n\n private responseData: DashboardDataResponse[] = []\n\n private granularity!: Granularity\n\n private data: MatrixChartData[] = []\n\n private dayDateFormat = 'DD/MM/YYYY'\n\n private valueKey = ''\n\n private label = ''\n\n private unit: 'NUMBER' | 'PERCENTAGE' | undefined\n\n private bucketsHelper!: Buckets\n\n private datasets: DashboardVisualisationDataSet[] = []\n\n config = ChartConfig\n\n private xLabels: (string | number)[] = []\n\n private yLabels: (string | number)[] = []\n\n withDefinition = (definition: components['schemas']['DashboardVisualisationDefinition']) => {\n this.definition = MatrixSchema.parse(definition)\n this.init()\n return this\n }\n\n withData = (responseData: DashboardDataResponse[]) => {\n this.responseData = responseData\n this.bucketsHelper = new Buckets(this.responseData, this.definition, this.valueKey, true)\n return this\n }\n\n withGranularity = (granularity: Granularity) => {\n this.granularity = granularity\n return this\n }\n\n private init = () => {\n this.measures = this.definition.columns.measures\n this.setLabel()\n this.initUnit()\n }\n\n initUnit = () => {\n this.unit = this.measures[0].unit ? this.measures[0].unit : undefined\n }\n\n private setLabel = () => {\n const { id, display } = this.measures[1]\n this.valueKey = id\n this.label = display || ''\n }\n\n private initTimeseriesData = () => {\n const timeBlockData = DatasetHelper.groupRowsByTimestamp(this.responseData)\n\n this.data = timeBlockData.map((tsData) => {\n const { raw, rag } = tsData[0][this.valueKey]\n const tsRaw = tsData[0]['ts'].raw\n\n const v: MatrixChartData['v'] = Number(raw)\n const r: MatrixChartData['r'] = rag !== undefined ? Number(tsData[0][this.valueKey].rag) : undefined\n let x: MatrixChartData['x'] = 0\n let y: MatrixChartData['y'] = 0\n\n switch (this.granularity) {\n case 'hourly':\n break\n case 'weekly':\n x = dayjs(tsRaw, this.dayDateFormat).format('ddd')\n y = dayjs(tsRaw, this.dayDateFormat).week()\n break\n case 'daily':\n x = dayjs(tsRaw, this.dayDateFormat).format('MMM YY')\n y = dayjs(tsRaw, this.dayDateFormat).format('D')\n break\n case 'monthly':\n {\n const ts = (<string>tsRaw).split(' ')\n x = ts[1]\n y = ts[0]\n }\n break\n case 'annually':\n x = 'year'\n y = <string>tsRaw\n break\n default:\n x = dayjs(tsRaw, this.dayDateFormat).format('MMM YY')\n y = dayjs(tsRaw, this.dayDateFormat).format('D')\n break\n }\n return { y, x, v, r }\n })\n\n this.bucketData()\n this.datasets = [\n {\n label: this.label,\n data: this.data,\n },\n ]\n }\n\n private bucketData = () => {\n this.data = this.data.map((d) => {\n const { v, r } = d\n const bucketData = this.bucketsHelper.getBucketForValue(v, r)\n return { ...d, c: bucketData.colour }\n })\n }\n\n private setBespokeOptions = () => {\n this.config = {\n ...this.config,\n scales: this.setScales(),\n }\n }\n\n setScales() {\n this.xLabels = [\n ...new Set(\n (<MatrixChartData[]>this.datasets[0].data).map((d) => {\n return d.x\n }),\n ),\n ]\n this.yLabels = [\n ...new Set(\n (<MatrixChartData[]>this.datasets[0].data).map((d) => {\n return d.y\n }),\n ),\n ]\n const grid = {\n display: false,\n drawBorder: false,\n }\n const ticks = {\n padding: 1,\n maxRotation: 0,\n stepSize: 1,\n }\n const offset = true\n const common = {\n offset,\n ticks,\n grid,\n }\n\n return {\n y: {\n position: 'left',\n type: 'category',\n ...(this.yLabels && { labels: this.yLabels }),\n ...common,\n },\n x: {\n position: 'top',\n type: 'category',\n ...(this.xLabels && { labels: this.xLabels }),\n ...common,\n },\n }\n }\n\n getCanvasHeight = () => {\n return this.yLabels.length / 2\n }\n\n build = (): DashboardVisualisationData => {\n this.initTimeseriesData()\n this.bucketData()\n this.setBespokeOptions()\n const height = this.getCanvasHeight()\n\n return {\n type: DashboardVisualisationType.MATRIX,\n options: {\n unit: this.unit,\n timeseries: true,\n height,\n },\n data: {\n datasets: this.datasets,\n config: this.config,\n },\n }\n }\n}\n\nexport { HeatmapChart }\nexport default HeatmapChart\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": ["import_types", "ChartConfig", "MatrixSchema", "Buckets", "DatasetHelper", "dayjs"]
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var clientClass_exports = {};
|
|
30
|
+
__export(clientClass_exports, {
|
|
31
|
+
default: () => MatrixChartVisualisation
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(clientClass_exports);
|
|
34
|
+
var import_clientClass = __toESM(require("../clientClass"));
|
|
35
|
+
class MatrixChartVisualisation extends import_clientClass.default {
|
|
36
|
+
static getModuleName() {
|
|
37
|
+
return "matrix-chart";
|
|
38
|
+
}
|
|
39
|
+
initialise() {
|
|
40
|
+
this.setupCanvas();
|
|
41
|
+
this.settings = this.initSettings();
|
|
42
|
+
this.chartData = this.generateChartData(this.settings);
|
|
43
|
+
this.initChart(this.chartData);
|
|
44
|
+
}
|
|
45
|
+
initSettings() {
|
|
46
|
+
return {
|
|
47
|
+
toolTipOptions: this.setToolTipOptions()
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
setToolTipOptions() {
|
|
51
|
+
const ctx = this;
|
|
52
|
+
return {
|
|
53
|
+
callbacks: {
|
|
54
|
+
title(context) {
|
|
55
|
+
const { raw } = context[0];
|
|
56
|
+
const title = `${raw.y} ${raw.x}`;
|
|
57
|
+
return title;
|
|
58
|
+
},
|
|
59
|
+
label(context) {
|
|
60
|
+
const { data, label: legend } = context.dataset;
|
|
61
|
+
const dataValue = data[context.dataIndex];
|
|
62
|
+
const label = `${dataValue.y} ${dataValue.x}`;
|
|
63
|
+
const value = `${dataValue.v}${ctx.suffix}`;
|
|
64
|
+
ctx.setHoverValue({ label, value, legend, ctx });
|
|
65
|
+
return `${legend}: ${value}`;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
generateChartData(settings) {
|
|
71
|
+
const { config } = this.chartParams;
|
|
72
|
+
const { options, plugins, pluginsOptions, toolTipOptions, hoverEvent } = settings;
|
|
73
|
+
const d = {
|
|
74
|
+
type: this.type,
|
|
75
|
+
data: {
|
|
76
|
+
datasets: this.createDatasets()
|
|
77
|
+
},
|
|
78
|
+
options: {
|
|
79
|
+
...config,
|
|
80
|
+
...options && options,
|
|
81
|
+
...hoverEvent && hoverEvent,
|
|
82
|
+
plugins: {
|
|
83
|
+
...config.plugins,
|
|
84
|
+
legend: {
|
|
85
|
+
position: "bottom",
|
|
86
|
+
display: false
|
|
87
|
+
},
|
|
88
|
+
...pluginsOptions && pluginsOptions,
|
|
89
|
+
datalabels: {
|
|
90
|
+
display: false
|
|
91
|
+
},
|
|
92
|
+
tooltip: {
|
|
93
|
+
...config.plugins.tooltip,
|
|
94
|
+
...toolTipOptions && toolTipOptions
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
plugins: plugins && plugins.length ? [...plugins] : []
|
|
99
|
+
};
|
|
100
|
+
return d;
|
|
101
|
+
}
|
|
102
|
+
createDatasets() {
|
|
103
|
+
const { datasets } = this.chartParams;
|
|
104
|
+
return datasets.map((d) => {
|
|
105
|
+
const { label, data } = d;
|
|
106
|
+
return {
|
|
107
|
+
label,
|
|
108
|
+
data,
|
|
109
|
+
backgroundColor(c) {
|
|
110
|
+
return c.raw.c;
|
|
111
|
+
},
|
|
112
|
+
width: ({ chart }) => (chart.chartArea || {}).width / chart.scales.x.ticks.length - 1,
|
|
113
|
+
height: ({ chart }) => (chart.chartArea || {}).height / chart.scales.y.ticks.length - 1
|
|
114
|
+
};
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=clientClass.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../dpr/components/_charts/chart/heatmap/clientClass.ts"],
|
|
4
|
+
"sourcesContent": ["// @ts-nocheck\n/* eslint-disable prefer-destructuring */\n/* eslint-disable class-methods-use-this */\nimport ChartVisualisation from '../clientClass'\n\nexport default class MatrixChartVisualisation extends ChartVisualisation {\n static getModuleName() {\n return 'matrix-chart'\n }\n\n initialise() {\n this.setupCanvas()\n this.settings = this.initSettings()\n this.chartData = this.generateChartData(this.settings)\n this.initChart(this.chartData)\n }\n\n initSettings() {\n return {\n toolTipOptions: this.setToolTipOptions(),\n }\n }\n\n setToolTipOptions() {\n const ctx = this\n return {\n callbacks: {\n title(context) {\n const { raw } = context[0]\n const title = `${raw.y} ${raw.x}`\n return title\n },\n label(context) {\n const { data, label: legend } = context.dataset\n const dataValue = data[context.dataIndex]\n const label = `${dataValue.y} ${dataValue.x}`\n const value = `${dataValue.v}${ctx.suffix}`\n ctx.setHoverValue({ label, value, legend, ctx })\n return `${legend}: ${value}`\n },\n },\n }\n }\n\n generateChartData(settings) {\n const { config } = this.chartParams\n const { options, plugins, pluginsOptions, toolTipOptions, hoverEvent } = settings\n const d = {\n type: this.type,\n data: {\n datasets: this.createDatasets(),\n },\n options: {\n ...config,\n ...(options && options),\n ...(hoverEvent && hoverEvent),\n plugins: {\n ...config.plugins,\n legend: {\n position: 'bottom',\n display: false,\n },\n ...(pluginsOptions && pluginsOptions),\n datalabels: {\n display: false,\n },\n tooltip: {\n ...config.plugins.tooltip,\n ...(toolTipOptions && toolTipOptions),\n },\n },\n },\n plugins: plugins && plugins.length ? [...plugins] : [],\n }\n\n return d\n }\n\n createDatasets() {\n const { datasets } = this.chartParams\n return datasets.map((d) => {\n const { label, data } = d\n return {\n label,\n data,\n backgroundColor(c) {\n return c.raw.c\n },\n width: ({ chart }) => (chart.chartArea || {}).width / chart.scales.x.ticks.length - 1,\n height: ({ chart }) => (chart.chartArea || {}).height / chart.scales.y.ticks.length - 1,\n }\n })\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,yBAA+B;AAE/B,MAAO,iCAA+C,mBAAAA,QAAmB;AAAA,EACvE,OAAO,gBAAgB;AACrB,WAAO;AAAA,EACT;AAAA,EAEA,aAAa;AACX,SAAK,YAAY;AACjB,SAAK,WAAW,KAAK,aAAa;AAClC,SAAK,YAAY,KAAK,kBAAkB,KAAK,QAAQ;AACrD,SAAK,UAAU,KAAK,SAAS;AAAA,EAC/B;AAAA,EAEA,eAAe;AACb,WAAO;AAAA,MACL,gBAAgB,KAAK,kBAAkB;AAAA,IACzC;AAAA,EACF;AAAA,EAEA,oBAAoB;AAClB,UAAM,MAAM;AACZ,WAAO;AAAA,MACL,WAAW;AAAA,QACT,MAAM,SAAS;AACb,gBAAM,EAAE,IAAI,IAAI,QAAQ,CAAC;AACzB,gBAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC;AAC/B,iBAAO;AAAA,QACT;AAAA,QACA,MAAM,SAAS;AACb,gBAAM,EAAE,MAAM,OAAO,OAAO,IAAI,QAAQ;AACxC,gBAAM,YAAY,KAAK,QAAQ,SAAS;AACxC,gBAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,UAAU,CAAC;AAC3C,gBAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,IAAI,MAAM;AACzC,cAAI,cAAc,EAAE,OAAO,OAAO,QAAQ,IAAI,CAAC;AAC/C,iBAAO,GAAG,MAAM,KAAK,KAAK;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,kBAAkB,UAAU;AAC1B,UAAM,EAAE,OAAO,IAAI,KAAK;AACxB,UAAM,EAAE,SAAS,SAAS,gBAAgB,gBAAgB,WAAW,IAAI;AACzE,UAAM,IAAI;AAAA,MACR,MAAM,KAAK;AAAA,MACX,MAAM;AAAA,QACJ,UAAU,KAAK,eAAe;AAAA,MAChC;AAAA,MACA,SAAS;AAAA,QACP,GAAG;AAAA,QACH,GAAI,WAAW;AAAA,QACf,GAAI,cAAc;AAAA,QAClB,SAAS;AAAA,UACP,GAAG,OAAO;AAAA,UACV,QAAQ;AAAA,YACN,UAAU;AAAA,YACV,SAAS;AAAA,UACX;AAAA,UACA,GAAI,kBAAkB;AAAA,UACtB,YAAY;AAAA,YACV,SAAS;AAAA,UACX;AAAA,UACA,SAAS;AAAA,YACP,GAAG,OAAO,QAAQ;AAAA,YAClB,GAAI,kBAAkB;AAAA,UACxB;AAAA,QACF;AAAA,MACF;AAAA,MACA,SAAS,WAAW,QAAQ,SAAS,CAAC,GAAG,OAAO,IAAI,CAAC;AAAA,IACvD;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,iBAAiB;AACf,UAAM,EAAE,SAAS,IAAI,KAAK;AAC1B,WAAO,SAAS,IAAI,CAAC,MAAM;AACzB,YAAM,EAAE,OAAO,KAAK,IAAI;AACxB,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,gBAAgB,GAAG;AACjB,iBAAO,EAAE,IAAI;AAAA,QACf;AAAA,QACA,OAAO,CAAC,EAAE,MAAM,OAAO,MAAM,aAAa,CAAC,GAAG,QAAQ,MAAM,OAAO,EAAE,MAAM,SAAS;AAAA,QACpF,QAAQ,CAAC,EAAE,MAAM,OAAO,MAAM,aAAa,CAAC,GAAG,SAAS,MAAM,OAAO,EAAE,MAAM,SAAS;AAAA,MACxF;AAAA,IACF,CAAC;AAAA,EACH;AACF;",
|
|
6
|
+
"names": ["ChartVisualisation"]
|
|
7
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
1
2
|
/* eslint-disable prefer-destructuring */
|
|
2
3
|
/* eslint-disable class-methods-use-this */
|
|
3
|
-
import ChartVisualisation from '../clientClass
|
|
4
|
+
import ChartVisualisation from '../clientClass'
|
|
4
5
|
|
|
5
6
|
export default class MatrixChartVisualisation extends ChartVisualisation {
|
|
6
7
|
static getModuleName() {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../../../dpr/components/_charts/chart/heatmap/types.ts"],
|
|
4
4
|
"sourcesContent": ["import z from 'zod'\nimport MatrixTimeseriesSchema from './validate'\n\nexport interface MatrixChartData {\n x: number | string\n y: number | string\n r?: number | undefined\n v: number\n}\n\nexport type MatrixTimeseriesDefinitionType = z.infer<typeof MatrixTimeseriesSchema>\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
|
|
6
6
|
"names": []
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../../../dpr/components/_charts/chart/heatmap/validate.ts"],
|
|
4
4
|
"sourcesContent": ["import { z } from 'zod'\nimport {\n DashboardVisualisationSchema,\n DashboardColumns,\n DashboardVisualisationMeasureSchema,\n BucketOptionsSchema,\n} from '../../../_dashboards/dashboard-visualisation/Validate'\n\nconst matrixKeys = z.object({\n id: z.string(),\n optional: z.boolean().default(false),\n})\n\nconst MatrixTimeseriesSchema = z.object({\n ...DashboardVisualisationSchema.shape,\n type: z.literal('matrix-timeseries'),\n options: z.object(BucketOptionsSchema.shape).optional(),\n columns: z.object({\n ...DashboardColumns.shape,\n keys: z.array(matrixKeys).min(1, 'Key array cannot be empty').optional(),\n measures: z.array(DashboardVisualisationMeasureSchema).length(2, 'Measure must contain a single item'),\n }),\n})\n\nexport default MatrixTimeseriesSchema\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAkB;AAClB,sBAKO;AAEP,MAAM,aAAa,aAAE,OAAO;AAAA,EAC1B,IAAI,aAAE,OAAO;AAAA,EACb,UAAU,aAAE,QAAQ,EAAE,QAAQ,KAAK;AACrC,CAAC;AAED,MAAM,yBAAyB,aAAE,OAAO;AAAA,EACtC,GAAG,6CAA6B;AAAA,EAChC,MAAM,aAAE,QAAQ,mBAAmB;AAAA,EACnC,SAAS,aAAE,OAAO,oCAAoB,KAAK,EAAE,SAAS;AAAA,EACtD,SAAS,aAAE,OAAO;AAAA,IAChB,GAAG,iCAAiB;AAAA,IACpB,MAAM,aAAE,MAAM,UAAU,EAAE,IAAI,GAAG,2BAA2B,EAAE,SAAS;AAAA,IACvE,UAAU,aAAE,MAAM,mDAAmC,EAAE,OAAO,GAAG,oCAAoC;AAAA,EACvG,CAAC;AACH,CAAC;AAED,IAAO,mBAAQ;",
|
|
6
6
|
"names": []
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../../../dpr/components/_charts/chart/line/LineChart.ts"],
|
|
4
4
|
"sourcesContent": ["/* eslint-disable prefer-destructuring */\nimport {\n DashboardVisualisationType,\n DashboardVisualisationData,\n VisualisationDefinitionKey,\n DashboardVisualisationDataSet,\n} from '../../../_dashboards/dashboard-visualisation/types'\nimport { components } from '../../../../types/api'\nimport Chart from '../Chart'\nimport { LineDefinitionMeasure, LineDefinitionType } from './types'\nimport LineChartSchemas from './validate'\n\nclass LineChart extends Chart {\n private definition!: LineDefinitionType\n\n private measures!: LineDefinitionMeasure[]\n\n private keys!: VisualisationDefinitionKey[]\n\n private init = () => {\n this.measures = this.definition.columns.measures\n this.keys = this.definition.columns.keys || []\n this.initUnit(this.measures)\n this.getLabelId(this.keys)\n }\n\n withDefinition = (definition: components['schemas']['DashboardVisualisationDefinition']) => {\n this.definition = LineChartSchemas.LineSchema.parse(definition)\n this.init()\n\n return this\n }\n\n build = (): DashboardVisualisationData => {\n this.createDatasets(this.measures, this.responseData)\n this.datasets = this.augmentDataset(this.datasets)\n this.config = this.setBespokeOptions()\n this.createLabels(this.measures)\n\n return {\n type: DashboardVisualisationType.LINE,\n options: {\n unit: this.unit,\n },\n data: {\n labels: this.labels,\n datasets: this.datasets,\n config: this.config,\n },\n }\n }\n\n augmentDataset = (datasets: DashboardVisualisationDataSet[]) => {\n return datasets.map((set) => {\n return {\n ...set,\n pointStyle: 'circle',\n pointRadius: 4,\n pointHoverRadius: 10,\n pointHitRadius: 20,\n datalabels: {\n display: false,\n },\n }\n })\n }\n\n setBespokeOptions = () => {\n return {\n ...this.config,\n scales: {\n y: {\n min: 0,\n ticks: {\n fontSize: 12,\n },\n },\n x: {\n ticks: {\n fontSize: 12,\n },\n },\n },\n }\n }\n}\n\nexport { LineChart }\nexport default LineChart\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAKO;AAEP,mBAAkB;AAElB,sBAA6B;AAE7B,MAAM,kBAAkB,aAAAA,QAAM;AAAA,EACpB;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA,OAAO,MAAM;AACnB,SAAK,WAAW,KAAK,WAAW,QAAQ;AACxC,SAAK,OAAO,KAAK,WAAW,QAAQ,QAAQ,CAAC;AAC7C,SAAK,SAAS,KAAK,QAAQ;AAC3B,SAAK,WAAW,KAAK,IAAI;AAAA,EAC3B;AAAA,EAEA,iBAAiB,CAAC,eAA0E;AAC1F,SAAK,aAAa,gBAAAC,QAAiB,WAAW,MAAM,UAAU;AAC9D,SAAK,KAAK;AAEV,WAAO;AAAA,EACT;AAAA,EAEA,QAAQ,MAAkC;AACxC,SAAK,eAAe,KAAK,UAAU,KAAK,YAAY;AACpD,SAAK,WAAW,KAAK,eAAe,KAAK,QAAQ;AACjD,SAAK,SAAS,KAAK,kBAAkB;AACrC,SAAK,aAAa,KAAK,QAAQ;AAE/B,WAAO;AAAA,MACL,MAAM,wCAA2B;AAAA,MACjC,SAAS;AAAA,QACP,MAAM,KAAK;AAAA,MACb;AAAA,MACA,MAAM;AAAA,QACJ,QAAQ,KAAK;AAAA,QACb,UAAU,KAAK;AAAA,QACf,QAAQ,KAAK;AAAA,MACf;AAAA,IACF;AAAA,EACF;AAAA,EAEA,iBAAiB,CAAC,aAA8C;AAC9D,WAAO,SAAS,IAAI,CAAC,QAAQ;AAC3B,aAAO;AAAA,QACL,GAAG;AAAA,QACH,YAAY;AAAA,QACZ,aAAa;AAAA,QACb,kBAAkB;AAAA,QAClB,gBAAgB;AAAA,QAChB,YAAY;AAAA,UACV,SAAS;AAAA,QACX;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,oBAAoB,MAAM;AACxB,WAAO;AAAA,MACL,GAAG,KAAK;AAAA,MACR,QAAQ;AAAA,QACN,GAAG;AAAA,UACD,KAAK;AAAA,UACL,OAAO;AAAA,YACL,UAAU;AAAA,UACZ;AAAA,QACF;AAAA,QACA,GAAG;AAAA,UACD,OAAO;AAAA,YACL,UAAU;AAAA,UACZ;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAGA,IAAO,oBAAQ;",
|
|
6
6
|
"names": ["Chart", "LineChartSchemas"]
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var clientClass_exports = {};
|
|
30
|
+
__export(clientClass_exports, {
|
|
31
|
+
LineChartVisualisation: () => LineChartVisualisation,
|
|
32
|
+
default: () => clientClass_default
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(clientClass_exports);
|
|
35
|
+
var import_clientClass = __toESM(require("../clientClass"));
|
|
36
|
+
class LineChartVisualisation extends import_clientClass.default {
|
|
37
|
+
static getModuleName() {
|
|
38
|
+
return "line-chart";
|
|
39
|
+
}
|
|
40
|
+
initialise() {
|
|
41
|
+
this.setupCanvas();
|
|
42
|
+
this.settings = this.initSettings();
|
|
43
|
+
this.chartData = this.generateChartData(this.settings);
|
|
44
|
+
this.lastIndex = this.chartData.data.labels.length - 1;
|
|
45
|
+
this.initChart(this.chartData);
|
|
46
|
+
}
|
|
47
|
+
initSettings() {
|
|
48
|
+
return {
|
|
49
|
+
toolTipOptions: this.setToolTipOptions(),
|
|
50
|
+
styling: this.setDatasetStyling()
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
setPartialStyle(ctx) {
|
|
54
|
+
let style;
|
|
55
|
+
if (this.partialEnd && ctx.p1DataIndex === this.lastIndex || this.partialStart && ctx.p1DataIndex === 1) {
|
|
56
|
+
style = [6, 6];
|
|
57
|
+
}
|
|
58
|
+
return style;
|
|
59
|
+
}
|
|
60
|
+
setDatasetStyling() {
|
|
61
|
+
return {
|
|
62
|
+
segment: {
|
|
63
|
+
borderDash: (ctx) => this.setPartialStyle(ctx)
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
setToolTipOptions() {
|
|
68
|
+
const ctx = this;
|
|
69
|
+
return {
|
|
70
|
+
callbacks: {
|
|
71
|
+
title(context) {
|
|
72
|
+
const { label, dataset } = context[0];
|
|
73
|
+
const { label: establishmentId } = dataset;
|
|
74
|
+
const title = ctx.singleDataset ? `${label}` : `${establishmentId}: ${label}`;
|
|
75
|
+
return title;
|
|
76
|
+
},
|
|
77
|
+
label(context) {
|
|
78
|
+
const { label } = context;
|
|
79
|
+
const { data, label: legend } = context.dataset;
|
|
80
|
+
const value = data[context.dataIndex];
|
|
81
|
+
ctx.setHoverValue({ label, value, legend, ctx });
|
|
82
|
+
return value;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
var clientClass_default = LineChartVisualisation;
|
|
89
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
90
|
+
0 && (module.exports = {
|
|
91
|
+
LineChartVisualisation
|
|
92
|
+
});
|
|
93
|
+
//# sourceMappingURL=clientClass.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../dpr/components/_charts/chart/line/clientClass.ts"],
|
|
4
|
+
"sourcesContent": ["// @ts-nocheck\n/* eslint-disable class-methods-use-this */\nimport ChartVisualisation from '../clientClass'\n\nclass LineChartVisualisation extends ChartVisualisation {\n static getModuleName() {\n return 'line-chart'\n }\n\n initialise() {\n this.setupCanvas()\n this.settings = this.initSettings()\n this.chartData = this.generateChartData(this.settings)\n this.lastIndex = this.chartData.data.labels.length - 1\n this.initChart(this.chartData)\n }\n\n initSettings() {\n return {\n toolTipOptions: this.setToolTipOptions(),\n styling: this.setDatasetStyling(),\n }\n }\n\n setPartialStyle(ctx) {\n let style\n if ((this.partialEnd && ctx.p1DataIndex === this.lastIndex) || (this.partialStart && ctx.p1DataIndex === 1)) {\n style = [6, 6]\n }\n return style\n }\n\n setDatasetStyling() {\n return {\n segment: {\n borderDash: (ctx) => this.setPartialStyle(ctx),\n },\n }\n }\n\n setToolTipOptions() {\n const ctx = this\n return {\n callbacks: {\n title(context) {\n const { label, dataset } = context[0]\n const { label: establishmentId } = dataset\n const title = ctx.singleDataset ? `${label}` : `${establishmentId}: ${label}`\n return title\n },\n label(context) {\n const { label } = context\n const { data, label: legend } = context.dataset\n const value = data[context.dataIndex]\n ctx.setHoverValue({ label, value, legend, ctx })\n return value\n },\n },\n }\n }\n}\n\nexport { LineChartVisualisation }\nexport default LineChartVisualisation\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,yBAA+B;AAE/B,MAAM,+BAA+B,mBAAAA,QAAmB;AAAA,EACtD,OAAO,gBAAgB;AACrB,WAAO;AAAA,EACT;AAAA,EAEA,aAAa;AACX,SAAK,YAAY;AACjB,SAAK,WAAW,KAAK,aAAa;AAClC,SAAK,YAAY,KAAK,kBAAkB,KAAK,QAAQ;AACrD,SAAK,YAAY,KAAK,UAAU,KAAK,OAAO,SAAS;AACrD,SAAK,UAAU,KAAK,SAAS;AAAA,EAC/B;AAAA,EAEA,eAAe;AACb,WAAO;AAAA,MACL,gBAAgB,KAAK,kBAAkB;AAAA,MACvC,SAAS,KAAK,kBAAkB;AAAA,IAClC;AAAA,EACF;AAAA,EAEA,gBAAgB,KAAK;AACnB,QAAI;AACJ,QAAK,KAAK,cAAc,IAAI,gBAAgB,KAAK,aAAe,KAAK,gBAAgB,IAAI,gBAAgB,GAAI;AAC3G,cAAQ,CAAC,GAAG,CAAC;AAAA,IACf;AACA,WAAO;AAAA,EACT;AAAA,EAEA,oBAAoB;AAClB,WAAO;AAAA,MACL,SAAS;AAAA,QACP,YAAY,CAAC,QAAQ,KAAK,gBAAgB,GAAG;AAAA,MAC/C;AAAA,IACF;AAAA,EACF;AAAA,EAEA,oBAAoB;AAClB,UAAM,MAAM;AACZ,WAAO;AAAA,MACL,WAAW;AAAA,QACT,MAAM,SAAS;AACb,gBAAM,EAAE,OAAO,QAAQ,IAAI,QAAQ,CAAC;AACpC,gBAAM,EAAE,OAAO,gBAAgB,IAAI;AACnC,gBAAM,QAAQ,IAAI,gBAAgB,GAAG,KAAK,KAAK,GAAG,eAAe,KAAK,KAAK;AAC3E,iBAAO;AAAA,QACT;AAAA,QACA,MAAM,SAAS;AACb,gBAAM,EAAE,MAAM,IAAI;AAClB,gBAAM,EAAE,MAAM,OAAO,OAAO,IAAI,QAAQ;AACxC,gBAAM,QAAQ,KAAK,QAAQ,SAAS;AACpC,cAAI,cAAc,EAAE,OAAO,OAAO,QAAQ,IAAI,CAAC;AAC/C,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAGA,IAAO,sBAAQ;",
|
|
6
|
+
"names": ["ChartVisualisation"]
|
|
7
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../../../dpr/components/_charts/chart/line/types.ts"],
|
|
4
4
|
"sourcesContent": ["import z from 'zod'\nimport LineChartSchemas from './validate'\n\nexport type LineDefinitionType = z.infer<typeof LineChartSchemas.LineSchema>\nexport type LineDefinitionMeasure = z.infer<typeof LineChartSchemas.LineMeasureSchema>\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
|
|
6
6
|
"names": []
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../../../dpr/components/_charts/chart/line/validate.ts"],
|
|
4
4
|
"sourcesContent": ["import { z } from 'zod'\nimport { DashboardVisualisationSchema, DashboardColumns } from '../../../_dashboards/dashboard-visualisation/Validate'\n\nconst LineMeasureSchema = z.object({\n id: z.string(),\n display: z.string().optional(),\n unit: z.enum(['NUMBER', 'PERCENTAGE']).optional(),\n})\n\nconst lineOptions = z.object({\n showLatest: z.boolean().default(true),\n})\n\nconst LineSchema = z.object({\n ...DashboardVisualisationSchema.shape,\n display: z.string(),\n type: z.literal('line'),\n options: z.object(lineOptions.shape).optional(),\n columns: z.object({\n ...DashboardColumns.shape,\n measures: z.array(LineMeasureSchema).min(1, 'Measure must contain at least one item'),\n }),\n})\n\nconst LineChartSchemas = {\n LineMeasureSchema,\n LineSchema,\n}\n\nexport default LineChartSchemas\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAkB;AAClB,sBAA+D;AAE/D,MAAM,oBAAoB,aAAE,OAAO;AAAA,EACjC,IAAI,aAAE,OAAO;AAAA,EACb,SAAS,aAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,MAAM,aAAE,KAAK,CAAC,UAAU,YAAY,CAAC,EAAE,SAAS;AAClD,CAAC;AAED,MAAM,cAAc,aAAE,OAAO;AAAA,EAC3B,YAAY,aAAE,QAAQ,EAAE,QAAQ,IAAI;AACtC,CAAC;AAED,MAAM,aAAa,aAAE,OAAO;AAAA,EAC1B,GAAG,6CAA6B;AAAA,EAChC,SAAS,aAAE,OAAO;AAAA,EAClB,MAAM,aAAE,QAAQ,MAAM;AAAA,EACtB,SAAS,aAAE,OAAO,YAAY,KAAK,EAAE,SAAS;AAAA,EAC9C,SAAS,aAAE,OAAO;AAAA,IAChB,GAAG,iCAAiB;AAAA,IACpB,UAAU,aAAE,MAAM,iBAAiB,EAAE,IAAI,GAAG,wCAAwC;AAAA,EACtF,CAAC;AACH,CAAC;AAED,MAAM,mBAAmB;AAAA,EACvB;AAAA,EACA;AACF;AAEA,IAAO,mBAAQ;",
|
|
6
6
|
"names": []
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../../../dpr/components/_charts/chart/line-timeseries/LineTimeseriesChart.ts"],
|
|
4
4
|
"sourcesContent": ["/* eslint-disable prefer-destructuring */\nimport {\n DashboardVisualisationType,\n DashboardVisualisationData,\n} from '../../../_dashboards/dashboard-visualisation/types'\nimport { components } from '../../../../types/api'\nimport { LineTimeseriesDefinitionType } from './types'\nimport LineTimeseriesChartSchemas from './validate'\nimport TimeseriesChart from '../ChartTimeseries'\nimport LineChart from '../line/LineChart'\n\nclass LineTimeseriesChart extends TimeseriesChart {\n private definition!: LineTimeseriesDefinitionType\n\n private lineChartBuilder: LineChart = new LineChart()\n\n withDefinition = (definition: components['schemas']['DashboardVisualisationDefinition']) => {\n this.definition = LineTimeseriesChartSchemas.LineTimeseriesSchema.parse(definition)\n this.initFromDefinition(this.definition)\n return this\n }\n\n build = (): DashboardVisualisationData => {\n this.buildDatasets()\n this.datasets = this.lineChartBuilder.augmentDataset(this.datasets)\n this.setStyles()\n this.config = this.lineChartBuilder.setBespokeOptions()\n\n return {\n type: DashboardVisualisationType.LINE,\n options: {\n unit: this.unit,\n timeseries: true,\n },\n data: {\n labels: this.labels,\n datasets: this.datasets,\n config: this.config,\n partialDate: this.partialDate,\n },\n }\n }\n\n private setStyles = () => {\n this.datasets = this.datasets.map((set, datasetIndex) => {\n const colour = this.hexColours[datasetIndex]\n return {\n ...set,\n backgroundColor: colour,\n borderColor: colour,\n }\n })\n }\n}\n\nexport { LineTimeseriesChart }\nexport default LineTimeseriesChart\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAGO;AAGP,sBAAuC;AACvC,6BAA4B;AAC5B,uBAAsB;AAEtB,MAAM,4BAA4B,uBAAAA,QAAgB;AAAA,EACxC;AAAA,EAEA,mBAA8B,IAAI,iBAAAC,QAAU;AAAA,EAEpD,iBAAiB,CAAC,eAA0E;AAC1F,SAAK,aAAa,gBAAAC,QAA2B,qBAAqB,MAAM,UAAU;AAClF,SAAK,mBAAmB,KAAK,UAAU;AACvC,WAAO;AAAA,EACT;AAAA,EAEA,QAAQ,MAAkC;AACxC,SAAK,cAAc;AACnB,SAAK,WAAW,KAAK,iBAAiB,eAAe,KAAK,QAAQ;AAClE,SAAK,UAAU;AACf,SAAK,SAAS,KAAK,iBAAiB,kBAAkB;AAEtD,WAAO;AAAA,MACL,MAAM,wCAA2B;AAAA,MACjC,SAAS;AAAA,QACP,MAAM,KAAK;AAAA,QACX,YAAY;AAAA,MACd;AAAA,MACA,MAAM;AAAA,QACJ,QAAQ,KAAK;AAAA,QACb,UAAU,KAAK;AAAA,QACf,QAAQ,KAAK;AAAA,QACb,aAAa,KAAK;AAAA,MACpB;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,YAAY,MAAM;AACxB,SAAK,WAAW,KAAK,SAAS,IAAI,CAAC,KAAK,iBAAiB;AACvD,YAAM,SAAS,KAAK,WAAW,YAAY;AAC3C,aAAO;AAAA,QACL,GAAG;AAAA,QACH,iBAAiB;AAAA,QACjB,aAAa;AAAA,MACf;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAGA,IAAO,8BAAQ;",
|
|
6
6
|
"names": ["TimeseriesChart", "LineChart", "LineTimeseriesChartSchemas"]
|