@ministryofjustice/hmpps-digital-prison-reporting-frontend 4.16.1 → 4.17.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/components/_catalogue/catalogue/utils.js +1 -1
- package/dpr/components/_catalogue/catalogue/utils.js.map +3 -3
- package/dpr/components/_catalogue/catalogue/utils.test.ts +15 -1
- package/dpr/components/_catalogue/catalogue/utils.ts +22 -4
- package/dpr/components/_catalogue/catalogue/view.njk +2 -1
- package/dpr/components/_catalogue/catalogue-filters/view.njk +2 -2
- package/dpr/components/_catalogue/catalogue-list/utils.js +1 -1
- package/dpr/components/_catalogue/catalogue-list/utils.js.map +3 -3
- package/dpr/components/_catalogue/catalogue-list/utils.ts +4 -5
- package/dpr/components/_catalogue/catalogue-search/clientClass.mjs +14 -0
- package/dpr/components/_catalogue/catalogue-search/view.njk +24 -1
- package/dpr/components/_charts/chart/Buckets.js +1 -1
- package/dpr/components/_charts/chart/Buckets.js.map +3 -3
- package/dpr/components/_charts/chart/Buckets.ts +44 -36
- package/dpr/components/_charts/chart/heatmap/HeatmapChart.js +1 -1
- package/dpr/components/_charts/chart/heatmap/HeatmapChart.js.map +2 -2
- package/dpr/components/_charts/chart/heatmap/HeatmapChart.ts +22 -14
- package/dpr/components/_charts/chart/heatmap/types.js +2 -0
- package/dpr/components/_charts/chart/heatmap/types.js.map +7 -0
- package/dpr/components/_charts/chart/heatmap/types.ts +6 -0
- package/dpr/components/_charts/utils.js +1 -1
- package/dpr/components/_charts/utils.js.map +3 -3
- package/dpr/components/_charts/utils.test.ts +10 -7
- package/dpr/components/_charts/utils.ts +57 -50
- package/dpr/components/_dashboards/dashboard/view.njk +1 -1
- package/dpr/components/_dashboards/dashboard-list/utils.js +1 -1
- package/dpr/components/_dashboards/dashboard-list/utils.js.map +2 -2
- package/dpr/components/_dashboards/dashboard-list/utils.test.ts +3 -3
- package/dpr/components/_dashboards/dashboard-list/utils.ts +16 -12
- package/dpr/components/_dashboards/dashboard-section/view.njk +1 -1
- package/dpr/components/_dashboards/dashboard-visualisation/DashboardVisualisation.js +2 -0
- package/dpr/components/_dashboards/dashboard-visualisation/DashboardVisualisation.js.map +7 -0
- package/dpr/components/_dashboards/dashboard-visualisation/DashboardVisualisation.ts +40 -0
- package/dpr/components/_dashboards/dashboard-visualisation/types.js +2 -0
- package/dpr/components/_dashboards/dashboard-visualisation/types.js.map +7 -0
- package/dpr/components/_dashboards/dashboard-visualisation/types.ts +102 -0
- package/dpr/components/_dashboards/dashboard-visualisation/view.njk +1 -1
- package/dpr/components/_dashboards/scorecard/Scorecard.js +1 -1
- package/dpr/components/_dashboards/scorecard/Scorecard.js.map +2 -2
- package/dpr/components/_dashboards/scorecard/Scorecard.ts +37 -29
- package/dpr/components/_dashboards/scorecard/types.js.map +1 -1
- package/dpr/components/_dashboards/scorecard/types.ts +1 -0
- package/dpr/components/_dashboards/scorecard/utils.js +1 -1
- package/dpr/components/_dashboards/scorecard/utils.js.map +2 -2
- package/dpr/components/_dashboards/scorecard/utils.test.ts +13 -4
- package/dpr/components/_dashboards/scorecard/utils.ts +6 -5
- package/dpr/components/_dashboards/scorecard/view.njk +6 -5
- package/dpr/components/_dashboards/scorecard-group/view.njk +4 -4
- package/dpr/components/_reports/report-actions/types.d.js.map +1 -1
- package/dpr/components/_reports/report-actions/types.d.ts +1 -1
- package/dpr/components/_reports/report-heading/view.njk +1 -1
- package/dpr/data/dashboardClient.js +1 -1
- package/dpr/data/dashboardClient.js.map +2 -2
- package/dpr/data/dashboardClient.ts +8 -7
- package/dpr/data/dprReportingClient.js +1 -1
- package/dpr/data/dprReportingClient.js.map +3 -3
- package/dpr/data/dprReportingClient.ts +2 -0
- package/dpr/data/reportingClient.js +1 -1
- package/dpr/data/reportingClient.js.map +1 -1
- package/dpr/data/reportingClient.ts +1 -1
- package/dpr/middleware/reportAuthoriser.js +1 -1
- package/dpr/middleware/reportAuthoriser.js.map +3 -3
- package/dpr/middleware/reportAuthoriser.ts +9 -20
- package/dpr/middleware/setUpDprResources.js +1 -1
- package/dpr/middleware/setUpDprResources.js.map +3 -3
- package/dpr/middleware/setUpDprResources.test.ts +7 -0
- package/dpr/middleware/setUpDprResources.ts +17 -2
- package/dpr/routes/journeys/download-report/controller.js +1 -1
- package/dpr/routes/journeys/download-report/controller.js.map +3 -3
- package/dpr/routes/journeys/download-report/controller.ts +4 -1
- package/dpr/routes/journeys/download-report/request-download/form/submitted/tests.cy.js +1 -1
- package/dpr/routes/journeys/download-report/request-download/form/submitted/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/download-report/request-download/form/submitted/tests.cy.ts +1 -0
- package/dpr/routes/journeys/download-report/request-download/form/tests.cy.js +1 -1
- package/dpr/routes/journeys/download-report/request-download/form/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/download-report/request-download/form/tests.cy.ts +1 -0
- package/dpr/routes/journeys/download-report/tests.cy.js +1 -1
- package/dpr/routes/journeys/download-report/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/download-report/tests.cy.ts +2 -7
- package/dpr/routes/journeys/download-report/utils.js +1 -1
- package/dpr/routes/journeys/download-report/utils.js.map +3 -3
- package/dpr/routes/journeys/download-report/utils.ts +10 -7
- package/dpr/routes/journeys/my-reports/bookmarks/list/tests.cy.js +1 -1
- package/dpr/routes/journeys/my-reports/bookmarks/list/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/my-reports/bookmarks/list/tests.cy.ts +1 -0
- package/dpr/routes/journeys/my-reports/bookmarks/tests.cy.js +1 -1
- package/dpr/routes/journeys/my-reports/bookmarks/tests.cy.js.map +3 -3
- package/dpr/routes/journeys/my-reports/bookmarks/tests.cy.ts +5 -12
- package/dpr/routes/journeys/my-reports/bookmarks/utils.js +1 -1
- package/dpr/routes/journeys/my-reports/bookmarks/utils.js.map +3 -3
- package/dpr/routes/journeys/my-reports/bookmarks/utils.ts +11 -5
- package/dpr/routes/journeys/my-reports/recently-viewed/list/tests.cy.js +1 -1
- package/dpr/routes/journeys/my-reports/recently-viewed/list/tests.cy.js.map +3 -3
- package/dpr/routes/journeys/my-reports/recently-viewed/list/tests.cy.ts +4 -6
- package/dpr/routes/journeys/my-reports/requested-reports/list/tests.cy.js +1 -1
- package/dpr/routes/journeys/my-reports/requested-reports/list/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/my-reports/requested-reports/list/tests.cy.ts +1 -0
- package/dpr/routes/journeys/product-collection/routes.js +2 -0
- package/dpr/routes/journeys/product-collection/routes.js.map +7 -0
- package/dpr/routes/journeys/product-collection/routes.ts +28 -0
- package/dpr/routes/journeys/product-collection/selected/controller.js +2 -0
- package/dpr/routes/journeys/product-collection/selected/controller.js.map +7 -0
- package/dpr/routes/journeys/product-collection/selected/controller.ts +29 -0
- package/dpr/routes/journeys/product-collection/selected/routes.js +2 -0
- package/dpr/routes/journeys/product-collection/selected/routes.js.map +7 -0
- package/dpr/routes/journeys/product-collection/selected/routes.ts +15 -0
- package/dpr/routes/journeys/product-collection/selected/tests.cy.js +2 -0
- package/dpr/routes/journeys/product-collection/selected/tests.cy.js.map +7 -0
- package/dpr/routes/journeys/product-collection/selected/tests.cy.ts +54 -0
- package/dpr/routes/journeys/product-collection/selected/validation.js +2 -0
- package/dpr/routes/journeys/product-collection/selected/validation.js.map +7 -0
- package/dpr/routes/journeys/product-collection/selected/validation.ts +5 -0
- package/dpr/routes/journeys/request-missing-report/form/tests.cy.js +1 -1
- package/dpr/routes/journeys/request-missing-report/form/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/request-missing-report/form/tests.cy.ts +1 -0
- package/dpr/routes/journeys/request-missing-report/tests.cy.js +1 -1
- package/dpr/routes/journeys/request-missing-report/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/request-missing-report/tests.cy.ts +3 -4
- package/dpr/routes/journeys/request-report/filters/tests.cy.js +1 -1
- package/dpr/routes/journeys/request-report/filters/tests.cy.js.map +3 -3
- package/dpr/routes/journeys/request-report/filters/tests.cy.ts +3 -6
- package/dpr/routes/journeys/request-report/filters/utils.js +1 -1
- package/dpr/routes/journeys/request-report/filters/utils.js.map +2 -2
- package/dpr/routes/journeys/request-report/filters/utils.ts +2 -3
- package/dpr/routes/journeys/request-report/status/tests.cy.js +1 -1
- package/dpr/routes/journeys/request-report/status/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/request-report/status/tests.cy.ts +2 -6
- package/dpr/routes/journeys/request-report/tests.cy.js +1 -1
- package/dpr/routes/journeys/request-report/tests.cy.js.map +3 -3
- package/dpr/routes/journeys/request-report/tests.cy.ts +5 -32
- package/dpr/routes/journeys/routes.js +1 -1
- package/dpr/routes/journeys/routes.js.map +2 -2
- package/dpr/routes/journeys/routes.ts +2 -0
- package/dpr/routes/journeys/view-report/async/controller.js.map +2 -2
- package/dpr/routes/journeys/view-report/async/controller.ts +2 -2
- package/dpr/routes/journeys/view-report/async/dashboard/tests.cy.js +1 -1
- package/dpr/routes/journeys/view-report/async/dashboard/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/view-report/async/dashboard/tests.cy.ts +2 -9
- package/dpr/routes/journeys/view-report/async/dashboard/utils.js +1 -1
- package/dpr/routes/journeys/view-report/async/dashboard/utils.js.map +3 -3
- package/dpr/routes/journeys/view-report/async/dashboard/utils.ts +100 -95
- package/dpr/routes/journeys/view-report/async/report/controller.js +1 -1
- package/dpr/routes/journeys/view-report/async/report/controller.js.map +3 -3
- package/dpr/routes/journeys/view-report/async/report/controller.ts +4 -6
- package/dpr/routes/journeys/view-report/async/report/tests.cy.js +1 -1
- package/dpr/routes/journeys/view-report/async/report/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/view-report/async/report/tests.cy.ts +8 -17
- package/dpr/routes/journeys/view-report/async/report/types.js +2 -0
- package/dpr/routes/journeys/view-report/async/report/types.js.map +7 -0
- package/dpr/routes/journeys/view-report/async/report/types.ts +31 -0
- package/dpr/routes/journeys/view-report/async/report/utils.js +1 -1
- package/dpr/routes/journeys/view-report/async/report/utils.js.map +3 -3
- package/dpr/routes/journeys/view-report/async/report/utils.ts +173 -136
- package/dpr/routes/journeys/view-report/sync/tests.cy.js +1 -1
- package/dpr/routes/journeys/view-report/sync/tests.cy.js.map +3 -3
- package/dpr/routes/journeys/view-report/sync/tests.cy.ts +3 -4
- package/dpr/services/dashboardService.js +1 -1
- package/dpr/services/dashboardService.js.map +2 -2
- package/dpr/services/dashboardService.ts +7 -5
- package/dpr/services/productCollection/productCollectionService.js +2 -0
- package/dpr/services/productCollection/productCollectionService.js.map +7 -0
- package/dpr/services/productCollection/productCollectionService.ts +25 -0
- package/dpr/services/productCollection/productCollectionStoreService.js +2 -0
- package/dpr/services/productCollection/productCollectionStoreService.js.map +7 -0
- package/dpr/services/productCollection/productCollectionStoreService.ts +26 -0
- package/dpr/services/reportingService.js +1 -1
- package/dpr/services/reportingService.js.map +1 -1
- package/dpr/services/reportingService.ts +1 -1
- package/dpr/types/AsyncReportUtils.js.map +1 -1
- package/dpr/types/AsyncReportUtils.ts +3 -4
- package/dpr/types/Charts.js +1 -1
- package/dpr/types/Charts.js.map +3 -3
- package/dpr/types/Charts.ts +0 -82
- package/dpr/types/Metrics.js +1 -1
- package/dpr/types/Metrics.js.map +1 -1
- package/dpr/types/Metrics.ts +7 -0
- package/dpr/types/ReportQuery.js +1 -1
- package/dpr/types/ReportQuery.js.map +3 -3
- package/dpr/types/ReportQuery.ts +24 -15
- package/dpr/types/ReportStore.js +1 -1
- package/dpr/types/ReportStore.js.map +1 -1
- package/dpr/types/ReportStore.ts +1 -0
- package/dpr/types/Services.d.js +1 -1
- package/dpr/types/Services.d.js.map +1 -1
- package/dpr/types/Services.d.ts +15 -0
- package/dpr/types/api.d.js +1 -1
- package/dpr/types/api.d.js.map +1 -1
- package/dpr/types/api.d.ts +197 -6
- package/dpr/utils/Personalisation/personalisationUtils.js +1 -1
- package/dpr/utils/Personalisation/personalisationUtils.js.map +3 -3
- package/dpr/utils/Personalisation/personalisationUtils.ts +15 -6
- package/dpr/utils/ReportStoreServiceUtils.js +1 -1
- package/dpr/utils/ReportStoreServiceUtils.js.map +3 -3
- package/dpr/utils/ReportStoreServiceUtils.ts +7 -0
- package/dpr/utils/UserStoreItemBuilder.js +1 -1
- package/dpr/utils/UserStoreItemBuilder.js.map +1 -1
- package/dpr/utils/UserStoreItemBuilder.ts +2 -2
- package/dpr/utils/datasetHelper.js +1 -1
- package/dpr/utils/datasetHelper.js.map +3 -3
- package/dpr/utils/datasetHelper.test.ts +11 -11
- package/dpr/utils/datasetHelper.ts +23 -8
- package/dpr/utils/logger.js +1 -1
- package/dpr/utils/logger.js.map +3 -3
- package/dpr/utils/logger.ts +6 -1
- package/package.json +2 -1
- package/dpr/components/_charts/chart/DashboardVisualisation.js +0 -2
- package/dpr/components/_charts/chart/DashboardVisualisation.js.map +0 -7
- package/dpr/components/_charts/chart/DashboardVisualisation.ts +0 -43
- package/dpr/components/_dashboards/dashboard/types.js +0 -2
- package/dpr/components/_dashboards/dashboard/types.js.map +0 -7
- package/dpr/components/_dashboards/dashboard/types.ts +0 -120
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var
|
|
1
|
+
var C=Object.create;var a=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var h=Object.getPrototypeOf,S=Object.prototype.hasOwnProperty;var w=(o,e)=>{for(var t in e)a(o,t,{get:e[t],enumerable:!0})},s=(o,e,t,l)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of k(e))!S.call(o,n)&&n!==t&&a(o,n,{get:()=>e[n],enumerable:!(l=f(e,n))||l.enumerable});return o};var g=(o,e,t)=>(t=o!=null?C(h(o)):{},s(e||!o||!o.__esModule?a(t,"default",{value:o,enumerable:!0}):t,o)),T=o=>s(a({},"__esModule",{value:!0}),o);var P={};w(P,{default:()=>F,init:()=>m});module.exports=T(P);var b=g(require("../catalogue-list/utils")),p=g(require("../../../utils/localsHelper"));const m=async({features:o,res:e,services:t})=>{const l=await b.default.getReportsList(e,t,o),{token:n,bookmarkingEnabled:E,dprUser:d}=p.default.getValues(e),i=(await t.productCollectionService.getProductCollections(n))?.map(u=>({value:u.id,text:u.name}));i&&i.length>0&&i.unshift({value:"RESET",text:"Full catalogue"});const r=await t.productCollectionStoreService.getSelectedProductCollectionId(d.id),c=r&&await t.productCollectionService.getProductCollection(d.id,r);return{data:l,productCollectionInfo:{productCollections:i,...c&&{selectedProductCollection:c}},features:v(E,o)}},v=(o,e)=>({filteringEnabled:e?.filteringEnabled===void 0||e.filteringEnabled,unauthorisedToggleEnabled:e?.unauthorisedToggleEnabled===void 0||e.unauthorisedToggleEnabled,howToUseEnabled:e?.howToUseEnabled===void 0||e.howToUseEnabled,bookmarkingEnabled:e?.bookmarkingEnabled!==void 0?e.bookmarkingEnabled:o});var F={init:m};0&&(module.exports={init});
|
|
2
2
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/dpr/components/_catalogue/catalogue/utils.ts"],
|
|
4
|
-
"sourcesContent": ["import { Response } from 'express'\nimport CatalogueListUtils from '../catalogue-list/utils'\nimport { Services } from '../../../types/Services'\nimport LocalsHelper from '../../../utils/localsHelper'\nimport { CatalogueFeatures } from './types'\n\nexport const init = async ({\n features,\n res,\n services,\n}: {\n features?: CatalogueFeatures\n res: Response\n services: Services\n}) => {\n const data = await CatalogueListUtils.getReportsList(res, services, features)\n return {\n data,\n features: setFeatures(
|
|
5
|
-
"mappings": "6iBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,SAAAC,IAAA,eAAAC,EAAAJ,GACA,IAAAK,EAA+B,sCAE/BC,EAAyB,0CAGlB,MAAMH,EAAO,MAAO,CACzB,SAAAI,EACA,IAAAC,EACA,SAAAC,CACF,
|
|
6
|
-
"names": ["utils_exports", "__export", "utils_default", "init", "__toCommonJS", "import_utils", "import_localsHelper", "features", "res", "services", "CatalogueListUtils", "
|
|
4
|
+
"sourcesContent": ["import { Response } from 'express'\nimport CatalogueListUtils from '../catalogue-list/utils'\nimport { Services } from '../../../types/Services'\nimport LocalsHelper from '../../../utils/localsHelper'\nimport { CatalogueFeatures } from './types'\n\nexport const init = async ({\n features,\n res,\n services,\n}: {\n features?: CatalogueFeatures\n res: Response\n services: Services\n}) => {\n const data = await CatalogueListUtils.getReportsList(res, services, features)\n const { token, bookmarkingEnabled, dprUser } = LocalsHelper.getValues(res)\n const productCollections = (await services.productCollectionService.getProductCollections(token))?.map(\n (collection) => ({\n value: collection.id,\n text: collection.name,\n }),\n )\n if (productCollections && productCollections.length > 0) {\n productCollections.unshift({ value: 'RESET', text: 'Full catalogue' })\n }\n const selectedProductCollectionId = await services.productCollectionStoreService.getSelectedProductCollectionId(\n dprUser.id,\n )\n const selectedProductCollection =\n selectedProductCollectionId &&\n (await services.productCollectionService.getProductCollection(dprUser.id, selectedProductCollectionId))\n return {\n data,\n productCollectionInfo: {\n productCollections,\n ...(selectedProductCollection && { selectedProductCollection }),\n },\n features: setFeatures(bookmarkingEnabled, features),\n }\n}\n\nconst setFeatures = (bookmarkingEnabled: boolean, features?: CatalogueFeatures) => {\n return {\n filteringEnabled: features?.filteringEnabled === undefined || features.filteringEnabled,\n unauthorisedToggleEnabled: features?.unauthorisedToggleEnabled === undefined || features.unauthorisedToggleEnabled,\n howToUseEnabled: features?.howToUseEnabled === undefined || features.howToUseEnabled,\n bookmarkingEnabled: features?.bookmarkingEnabled !== undefined ? features.bookmarkingEnabled : bookmarkingEnabled,\n }\n}\n\nexport default {\n init,\n}\n"],
|
|
5
|
+
"mappings": "6iBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,SAAAC,IAAA,eAAAC,EAAAJ,GACA,IAAAK,EAA+B,sCAE/BC,EAAyB,0CAGlB,MAAMH,EAAO,MAAO,CACzB,SAAAI,EACA,IAAAC,EACA,SAAAC,CACF,IAIM,CACJ,MAAMC,EAAO,MAAM,EAAAC,QAAmB,eAAeH,EAAKC,EAAUF,CAAQ,EACtE,CAAE,MAAAK,EAAO,mBAAAC,EAAoB,QAAAC,CAAQ,EAAI,EAAAC,QAAa,UAAUP,CAAG,EACnEQ,GAAsB,MAAMP,EAAS,yBAAyB,sBAAsBG,CAAK,IAAI,IAChGK,IAAgB,CACf,MAAOA,EAAW,GAClB,KAAMA,EAAW,IACnB,EACF,EACID,GAAsBA,EAAmB,OAAS,GACpDA,EAAmB,QAAQ,CAAE,MAAO,QAAS,KAAM,gBAAiB,CAAC,EAEvE,MAAME,EAA8B,MAAMT,EAAS,8BAA8B,+BAC/EK,EAAQ,EACV,EACMK,EACJD,GACC,MAAMT,EAAS,yBAAyB,qBAAqBK,EAAQ,GAAII,CAA2B,EACvG,MAAO,CACL,KAAAR,EACA,sBAAuB,CACrB,mBAAAM,EACA,GAAIG,GAA6B,CAAE,0BAAAA,CAA0B,CAC/D,EACA,SAAUC,EAAYP,EAAoBN,CAAQ,CACpD,CACF,EAEMa,EAAc,CAACP,EAA6BN,KACzC,CACL,iBAAkBA,GAAU,mBAAqB,QAAaA,EAAS,iBACvE,0BAA2BA,GAAU,4BAA8B,QAAaA,EAAS,0BACzF,gBAAiBA,GAAU,kBAAoB,QAAaA,EAAS,gBACrE,mBAAoBA,GAAU,qBAAuB,OAAYA,EAAS,mBAAqBM,CACjG,GAGF,IAAOX,EAAQ,CACb,KAAAC,CACF",
|
|
6
|
+
"names": ["utils_exports", "__export", "utils_default", "init", "__toCommonJS", "import_utils", "import_localsHelper", "features", "res", "services", "data", "CatalogueListUtils", "token", "bookmarkingEnabled", "dprUser", "LocalsHelper", "productCollections", "collection", "selectedProductCollectionId", "selectedProductCollection", "setFeatures"]
|
|
7
7
|
}
|
|
@@ -22,7 +22,15 @@ describe('CatalogueUtils', () => {
|
|
|
22
22
|
},
|
|
23
23
|
} as unknown as Response
|
|
24
24
|
|
|
25
|
-
services = {
|
|
25
|
+
services = {
|
|
26
|
+
productCollectionService: {
|
|
27
|
+
getProductCollections: jest.fn(() => []),
|
|
28
|
+
getProductCollection: jest.fn(),
|
|
29
|
+
},
|
|
30
|
+
productCollectionStoreService: {
|
|
31
|
+
getSelectedProductCollectionId: jest.fn(),
|
|
32
|
+
},
|
|
33
|
+
} as unknown as Services
|
|
26
34
|
})
|
|
27
35
|
|
|
28
36
|
it('should init the catalogue with defaults', async () => {
|
|
@@ -36,6 +44,9 @@ describe('CatalogueUtils', () => {
|
|
|
36
44
|
howToUseEnabled: true,
|
|
37
45
|
unauthorisedToggleEnabled: true,
|
|
38
46
|
},
|
|
47
|
+
productCollectionInfo: {
|
|
48
|
+
productCollections: [],
|
|
49
|
+
},
|
|
39
50
|
})
|
|
40
51
|
})
|
|
41
52
|
|
|
@@ -58,6 +69,9 @@ describe('CatalogueUtils', () => {
|
|
|
58
69
|
howToUseEnabled: true,
|
|
59
70
|
unauthorisedToggleEnabled: false,
|
|
60
71
|
},
|
|
72
|
+
productCollectionInfo: {
|
|
73
|
+
productCollections: [],
|
|
74
|
+
},
|
|
61
75
|
})
|
|
62
76
|
})
|
|
63
77
|
})
|
|
@@ -14,15 +14,33 @@ export const init = async ({
|
|
|
14
14
|
services: Services
|
|
15
15
|
}) => {
|
|
16
16
|
const data = await CatalogueListUtils.getReportsList(res, services, features)
|
|
17
|
+
const { token, bookmarkingEnabled, dprUser } = LocalsHelper.getValues(res)
|
|
18
|
+
const productCollections = (await services.productCollectionService.getProductCollections(token))?.map(
|
|
19
|
+
(collection) => ({
|
|
20
|
+
value: collection.id,
|
|
21
|
+
text: collection.name,
|
|
22
|
+
}),
|
|
23
|
+
)
|
|
24
|
+
if (productCollections && productCollections.length > 0) {
|
|
25
|
+
productCollections.unshift({ value: 'RESET', text: 'Full catalogue' })
|
|
26
|
+
}
|
|
27
|
+
const selectedProductCollectionId = await services.productCollectionStoreService.getSelectedProductCollectionId(
|
|
28
|
+
dprUser.id,
|
|
29
|
+
)
|
|
30
|
+
const selectedProductCollection =
|
|
31
|
+
selectedProductCollectionId &&
|
|
32
|
+
(await services.productCollectionService.getProductCollection(dprUser.id, selectedProductCollectionId))
|
|
17
33
|
return {
|
|
18
34
|
data,
|
|
19
|
-
|
|
35
|
+
productCollectionInfo: {
|
|
36
|
+
productCollections,
|
|
37
|
+
...(selectedProductCollection && { selectedProductCollection }),
|
|
38
|
+
},
|
|
39
|
+
features: setFeatures(bookmarkingEnabled, features),
|
|
20
40
|
}
|
|
21
41
|
}
|
|
22
42
|
|
|
23
|
-
const setFeatures = (
|
|
24
|
-
const { bookmarkingEnabled } = LocalsHelper.getValues(res)
|
|
25
|
-
|
|
43
|
+
const setFeatures = (bookmarkingEnabled: boolean, features?: CatalogueFeatures) => {
|
|
26
44
|
return {
|
|
27
45
|
filteringEnabled: features?.filteringEnabled === undefined || features.filteringEnabled,
|
|
28
46
|
unauthorisedToggleEnabled: features?.unauthorisedToggleEnabled === undefined || features.unauthorisedToggleEnabled,
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
{% macro dprCatalogue(args) %}
|
|
6
6
|
{% set data = args.data %}
|
|
7
7
|
{% set features = args.features %}
|
|
8
|
+
{% set productCollectionInfo = args.productCollectionInfo %}
|
|
8
9
|
|
|
9
10
|
{% set head = data.head %}
|
|
10
11
|
{% set rows = data.rows %}
|
|
@@ -16,7 +17,7 @@
|
|
|
16
17
|
{{ dprCatalogueHowToUse(features) }}
|
|
17
18
|
{% endif %}
|
|
18
19
|
|
|
19
|
-
{{ dprCatalogueFilters(id, features) }}
|
|
20
|
+
{{ dprCatalogueFilters(id, features, productCollectionInfo) }}
|
|
20
21
|
{{ dprCatalogueList(head, rows, id) }}
|
|
21
22
|
<div>
|
|
22
23
|
{% endmacro %}
|
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
{% from "../catalogue-search/view.njk" import dprCatalogueSearch %}
|
|
4
4
|
{% from "../catalogue-unauthorised-toggle/view.njk" import dprUnauthorisedToggle %}
|
|
5
5
|
|
|
6
|
-
{% macro dprCatalogueFilters(id, features) %}
|
|
6
|
+
{% macro dprCatalogueFilters(id, features, productCollectionInfo) %}
|
|
7
7
|
{% set filteringEnabled = features.filteringEnabled %}
|
|
8
8
|
{% set unauthorisedToggleEnabled = features.unauthorisedToggleEnabled %}
|
|
9
9
|
|
|
10
10
|
<div class='dpr-catalogue-filters' data-dpr-module='dpr-catalogue-filters'>
|
|
11
11
|
<div class='dpr-catalogue-filters--heading'>
|
|
12
12
|
<div class="dpr-catalogue-filters__search">
|
|
13
|
-
{{ dprCatalogueSearch(id) }}
|
|
13
|
+
{{ dprCatalogueSearch(id, productCollectionInfo) }}
|
|
14
14
|
</div>
|
|
15
15
|
</div>
|
|
16
16
|
<div class='dpr-catalogue-filters--content'>
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var P=Object.create;var
|
|
1
|
+
var P=Object.create;var b=Object.defineProperty;var B=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var V=Object.getPrototypeOf,F=Object.prototype.hasOwnProperty;var O=(e,t)=>{for(var o in t)b(e,o,{get:t[o],enumerable:!0})},R=(e,t,o,D)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of E(t))!F.call(e,n)&&n!==o&&b(e,n,{get:()=>t[n],enumerable:!(D=B(t,n))||D.enumerable});return e};var M=(e,t,o)=>(o=e!=null?P(V(e)):{},R(t||!e||!e.__esModule?b(o,"default",{value:e,enumerable:!0}):o,e)),U=e=>R(b({},"__esModule",{value:!0}),e);var $={};O($,{default:()=>Y,getReportsList:()=>A});module.exports=U($);var d=require("../../../types/UserReports"),w=M(require("../../show-more/utils")),l=require("../../../utils/reportListsHelper"),x=M(require("../../../utils/localsHelper"));const A=async(e,t,o)=>{const{definitions:D,csrfToken:n,bookmarkingEnabled:H,dprUser:v}=x.default.getValues(e),C=D.sort((a,i)=>a.name<i.name?-1:a.name>i.name?1:0).flatMap(a=>{const{id:i,name:g,description:m,variants:S,dashboards:f,authorised:k}=a,p=S.map(r=>{const{id:s,name:u,description:c,isMissing:T}=r,N=r.loadType||d.LoadType.ASYNC;return{reportName:g,reportId:i,id:s,name:u,description:c,type:d.ReportType.REPORT,loadType:N,authorised:k,isMissing:T,...m&&m.length&&{reportDescription:m}}});let h=[];f&&(h=f.map(r=>{const{id:s,name:u,description:c}=r;return{reportName:g,reportId:i,id:s,name:u,description:c,type:d.ReportType.DASHBOARD,reportDescription:m,authorised:k,isMissing:!1,loadType:d.LoadType.ASYNC}}));const y=[...h,...p];return y.sort((r,s)=>r.name<s.name?-1:r.name>s.name?1:0),y}),I=await t.bookmarkService.getState(v.id),L=await Promise.all(C.map(async a=>{const{id:i,name:g,description:m,reportName:S,reportId:f,reportDescription:k,type:p,loadType:h,authorised:y,isMissing:r}=a,s=m||k||"",u=(0,l.setInitialHref)(h,p,f,i,e,r);let c;return(o?.bookmarkingEnabled!==void 0?o?.bookmarkingEnabled:H)&&(c=await t.bookmarkService.createBookMarkToggleHtml({userConfig:I,reportId:f,id:i,csrfToken:n,ctxId:"reports-list",reportType:p,isMissing:r})),[{html:`<p class="govuk-body-s">${S}</p>`},{html:(0,l.createListItemProductMin)(g,p)},{html:w.default.createShowMoreHtml(s)},{html:(0,l.createListActions)(u,p,h,c,y,r)}]}));return{head:[{text:"Product",classes:"dpr-product-head"},{text:"Name",classes:"dpr-name-head"},{text:"Description",classes:"dpr-description-head"},{text:"Actions",classes:"dpr-bookmark-head"}],rows:L,id:"dpr-reports-catalogue"}};var Y={getReportsList:A};0&&(module.exports={getReportsList});
|
|
2
2
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/dpr/components/_catalogue/catalogue-list/utils.ts"],
|
|
4
|
-
"sourcesContent": ["import { Response } from 'express'\nimport { components } from '../../../types/api'\nimport { Services } from '../../../types/Services'\nimport {
|
|
5
|
-
"mappings": "6iBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,mBAAAC,IAAA,eAAAC,EAAAJ,
|
|
6
|
-
"names": ["utils_exports", "__export", "utils_default", "getReportsList", "__toCommonJS", "import_UserReports", "import_utils", "import_reportListsHelper", "import_localsHelper", "res", "services", "features", "definitions", "csrfToken", "bookmarkingEnabled", "dprUser", "LocalsHelper", "sortedVariants", "
|
|
4
|
+
"sourcesContent": ["import { Response } from 'express'\nimport { components } from '../../../types/api'\nimport { Services } from '../../../types/Services'\nimport { DefinitionData, LoadType, ReportType } from '../../../types/UserReports'\nimport ShowMoreUtils from '../../show-more/utils'\nimport { createListItemProductMin, createListActions, setInitialHref } from '../../../utils/reportListsHelper'\nimport { CatalogueFeatures } from '../catalogue/types'\nimport LocalsHelper from '../../../utils/localsHelper'\n\nexport const getReportsList = async (\n res: Response,\n services: Services,\n features?: CatalogueFeatures,\n): Promise<{ head: { text: string }[]; rows: { text?: string; html?: string }[]; id: string }> => {\n const { definitions, csrfToken, bookmarkingEnabled, dprUser } = LocalsHelper.getValues(res)\n\n // Sort report Definitions by product name\n const sortedDefinitions = definitions.sort(\n (a: components['schemas']['ReportDefinitionSummary'], b: components['schemas']['ReportDefinitionSummary']) => {\n if (a.name < b.name) return -1\n if (a.name > b.name) return 1\n return 0\n },\n )\n\n // Sort by variant/dashboard name\n const sortedVariants = sortedDefinitions.flatMap(\n (\n def: components['schemas']['ReportDefinitionSummary'] & {\n dashboards: components['schemas']['DashboardDefinition'][]\n authorised: boolean\n },\n ) => {\n const { id: reportId, name: reportName, description: reportDescription, variants, dashboards, authorised } = def\n\n const variantsArray: DefinitionData[] = variants.map(\n (variant: components['schemas']['VariantDefinitionSummary']) => {\n const { id, name, description, isMissing } = variant\n\n // NOTE: loadType added to VariantDefinitionSummary mocked data to dictate the load/request journey. Not present in API response. To discuss\n const loadType = variant.loadType || LoadType.ASYNC\n\n return {\n reportName,\n reportId,\n id,\n name,\n description,\n type: ReportType.REPORT,\n loadType,\n authorised,\n isMissing,\n ...(reportDescription && reportDescription.length && { reportDescription }),\n }\n },\n )\n\n let dashboardsArray: DefinitionData[] = []\n if (dashboards) {\n dashboardsArray = dashboards.map((dashboard: components['schemas']['DashboardDefinition']) => {\n const { id, name, description } = dashboard\n return {\n reportName,\n reportId,\n id,\n name,\n description,\n type: ReportType.DASHBOARD,\n reportDescription,\n authorised,\n isMissing: false,\n loadType: LoadType.ASYNC,\n }\n })\n }\n\n const mergedArray = [...dashboardsArray, ...variantsArray]\n\n mergedArray.sort((a: DefinitionData, b: DefinitionData) => {\n if (a.name < b.name) return -1\n if (a.name > b.name) return 1\n return 0\n })\n\n return mergedArray\n },\n )\n\n const userConfig = await services.bookmarkService.getState(dprUser.id)\n const rows = await Promise.all(\n sortedVariants.map(async (v: DefinitionData) => {\n const { id, name, description, reportName, reportId, reportDescription, type, loadType, authorised, isMissing } =\n v\n const desc = description || reportDescription || ''\n\n const href = setInitialHref(loadType, type, reportId, id, res, isMissing)\n\n let bookmarkHtml\n const showBookMarkToggle =\n features?.bookmarkingEnabled !== undefined ? features?.bookmarkingEnabled : bookmarkingEnabled\n\n if (showBookMarkToggle) {\n bookmarkHtml = await services.bookmarkService.createBookMarkToggleHtml({\n userConfig,\n reportId,\n id,\n csrfToken,\n ctxId: 'reports-list',\n reportType: type,\n isMissing,\n })\n }\n\n return [\n { html: `<p class=\"govuk-body-s\">${reportName}</p>` },\n { html: createListItemProductMin(name, <ReportType>type) },\n { html: ShowMoreUtils.createShowMoreHtml(desc) },\n { html: createListActions(href, type, loadType, bookmarkHtml, authorised, isMissing) },\n ]\n }),\n )\n\n const head = [\n { text: 'Product', classes: 'dpr-product-head' },\n { text: 'Name', classes: 'dpr-name-head' },\n { text: 'Description', classes: 'dpr-description-head' },\n { text: 'Actions', classes: 'dpr-bookmark-head' },\n ]\n\n return {\n head,\n rows,\n id: 'dpr-reports-catalogue',\n }\n}\n\nexport default {\n getReportsList,\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["utils_exports", "__export", "utils_default", "getReportsList", "__toCommonJS", "import_UserReports", "import_utils", "import_reportListsHelper", "import_localsHelper", "res", "services", "features", "definitions", "csrfToken", "bookmarkingEnabled", "dprUser", "LocalsHelper", "sortedVariants", "b", "def", "reportId", "reportName", "reportDescription", "variants", "dashboards", "authorised", "variantsArray", "variant", "id", "name", "description", "isMissing", "loadType", "dashboardsArray", "dashboard", "mergedArray", "a", "userConfig", "rows", "v", "type", "desc", "href", "bookmarkHtml", "ShowMoreUtils"]
|
|
7
7
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Response } from 'express'
|
|
2
2
|
import { components } from '../../../types/api'
|
|
3
3
|
import { Services } from '../../../types/Services'
|
|
4
|
-
import { DashboardDefinition } from '../../_dashboards/dashboard/types'
|
|
5
4
|
import { DefinitionData, LoadType, ReportType } from '../../../types/UserReports'
|
|
6
5
|
import ShowMoreUtils from '../../show-more/utils'
|
|
7
6
|
import { createListItemProductMin, createListActions, setInitialHref } from '../../../utils/reportListsHelper'
|
|
@@ -28,7 +27,7 @@ export const getReportsList = async (
|
|
|
28
27
|
const sortedVariants = sortedDefinitions.flatMap(
|
|
29
28
|
(
|
|
30
29
|
def: components['schemas']['ReportDefinitionSummary'] & {
|
|
31
|
-
dashboards: DashboardDefinition[]
|
|
30
|
+
dashboards: components['schemas']['DashboardDefinition'][]
|
|
32
31
|
authorised: boolean
|
|
33
32
|
},
|
|
34
33
|
) => {
|
|
@@ -58,8 +57,8 @@ export const getReportsList = async (
|
|
|
58
57
|
|
|
59
58
|
let dashboardsArray: DefinitionData[] = []
|
|
60
59
|
if (dashboards) {
|
|
61
|
-
dashboardsArray = dashboards.map((dashboard: DashboardDefinition) => {
|
|
62
|
-
const { id, name, description
|
|
60
|
+
dashboardsArray = dashboards.map((dashboard: components['schemas']['DashboardDefinition']) => {
|
|
61
|
+
const { id, name, description } = dashboard
|
|
63
62
|
return {
|
|
64
63
|
reportName,
|
|
65
64
|
reportId,
|
|
@@ -69,7 +68,7 @@ export const getReportsList = async (
|
|
|
69
68
|
type: ReportType.DASHBOARD,
|
|
70
69
|
reportDescription,
|
|
71
70
|
authorised,
|
|
72
|
-
isMissing,
|
|
71
|
+
isMissing: false,
|
|
73
72
|
loadType: LoadType.ASYNC,
|
|
74
73
|
}
|
|
75
74
|
})
|
|
@@ -17,9 +17,23 @@ class DprCatalogueSearch extends DprCatalogueFilters {
|
|
|
17
17
|
this.initSeachBoxEvents()
|
|
18
18
|
this.updateTableRows()
|
|
19
19
|
this.initSearchInputFromQueryParams()
|
|
20
|
+
this.initProductCollectionSelect()
|
|
20
21
|
}
|
|
21
22
|
}
|
|
22
23
|
|
|
24
|
+
initProductCollectionSelect() {
|
|
25
|
+
/**
|
|
26
|
+
* @type {HTMLSelectElement | undefined}
|
|
27
|
+
*/
|
|
28
|
+
const productCollections = this.getElement().querySelector('#productCollection')
|
|
29
|
+
if (productCollections) {
|
|
30
|
+
productCollections.addEventListener('change', (e) => {
|
|
31
|
+
e.preventDefault()
|
|
32
|
+
productCollections.closest('form').submit()
|
|
33
|
+
})
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
23
37
|
initSeachBoxEvents() {
|
|
24
38
|
this.searchBox.addEventListener('keyup', (e) => {
|
|
25
39
|
this.updateTableRows(e.target.value)
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
{% from "govuk/components/input/macro.njk" import govukInput %}
|
|
2
|
+
{% from "govuk/components/select/macro.njk" import govukSelect %}
|
|
3
|
+
|
|
4
|
+
{% macro dprCatalogueSearch(id, productCollectionInfo, type = 'catalogue') %}
|
|
5
|
+
{% set productCollections = productCollectionInfo.productCollections %}
|
|
6
|
+
{% set selectedProductCollection = productCollectionInfo.selectedProductCollection %}
|
|
2
7
|
|
|
3
|
-
{% macro dprCatalogueSearch(id, type = 'catalogue') %}
|
|
4
8
|
<div class="dpr-search" data-dpr-module="dpr-catalogue-search">
|
|
5
9
|
<div class="dpr-search-inputs">
|
|
6
10
|
{{ govukInput({
|
|
@@ -17,6 +21,25 @@
|
|
|
17
21
|
"data-table-id": id
|
|
18
22
|
}
|
|
19
23
|
}) }}
|
|
24
|
+
{% if productCollections.length > 0 %}
|
|
25
|
+
<form method="post" action="dpr/product-collection/selected">
|
|
26
|
+
{{ govukSelect({
|
|
27
|
+
id: 'productCollection',
|
|
28
|
+
name: 'productCollection',
|
|
29
|
+
value: selectedProductCollection.id,
|
|
30
|
+
formGroup: {
|
|
31
|
+
attributes: {
|
|
32
|
+
style: "justify-self: end;"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
items: productCollections,
|
|
36
|
+
label: {
|
|
37
|
+
text: 'Your collections',
|
|
38
|
+
classes: "govuk-label govuk-!-font-weight-bold govuk-!-margin-bottom-2"
|
|
39
|
+
}
|
|
40
|
+
}) }}
|
|
41
|
+
</form>
|
|
42
|
+
{% endif %}
|
|
20
43
|
</div>
|
|
21
44
|
</div>
|
|
22
45
|
{% endmacro %}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var h=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var m=(
|
|
1
|
+
var h=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var m=(u,t)=>{for(var s in t)h(u,s,{get:t[s],enumerable:!0})},f=(u,t,s,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of k(t))!b.call(u,e)&&e!==s&&h(u,e,{get:()=>t[e],enumerable:!(i=p(t,e))||i.enumerable});return u};var C=u=>f(h({},"__esModule",{value:!0}),u);var g={};m(g,{Buckets:()=>c,default:()=>d});module.exports=C(g);var l=require("with-alpha-hex");class c{constructor(t,s,i,e,o){this.baseColour="#1d70b8";this.ragColours=["#00703c","#ffdd00","#d4351c"];this.buckets=[];this.useRagColour=!1;this.bucketCount=0;this.onlyBucketColoursDefined=!1;this.autoBucketing=!1;this.hasRagScore=!1;this.options={};this.initFromOptions=t=>{this.options=t.options||{},this.baseColour=this.options?.baseColour||this.baseColour,this.useRagColour=this.options?.useRagColour||!1,this.onlyBucketColoursDefined=this.options&&this.options.buckets?this.options?.buckets?.every(s=>!s.max&&!s.min&&s.hexColour!==void 0):!1};this.initBuckets=()=>{const{buckets:t}=this.options;this.setBucketCount(),this.initBucketColours(),t?this.hasRagScore?this.onlyBucketColoursDefined&&(this.buckets=t):!this.hasRagScore&&this.onlyBucketColoursDefined&&this.autoBucketing?this.initAutomaticThresholdBucket():this.initCustomThresholdBuckets():!t&&!this.hasRagScore&&this.autoBucketing&&this.initAutomaticThresholdBucket()};this.initCustomThresholdBuckets=()=>{this.buckets=this.options.buckets?this.options.buckets.map((t,s)=>({...this.buckets[s],...t})):[]};this.initAutomaticThresholdBucket=()=>{const{min:t,max:s,bucketSize:i}=this.setAutomaticThresholdSize();let e=0;this.buckets=this.buckets.map((o,a)=>{let r=t;return a!==0&&(r=e+1),e=i*(a+1)+t,a===this.buckets.length-1&&(e=s),{hexColour:this.options?.buckets?this.options.buckets[a]?.hexColour:o.hexColour,min:r,max:e}})};this.initBucketColours=()=>{if(this.useRagColour&&this.bucketCount===3)this.buckets=Array.from(new Array(this.bucketCount)).map((t,s)=>({hexColour:this.ragColours[s]}));else{const t=1/this.bucketCount;this.buckets=Array.from(new Array(this.bucketCount)).map((s,i)=>{const e=t*(i+1);return{hexColour:(0,l.withAlphaHex)(this.baseColour,e)}})}};this.setAutomaticThresholdSize=()=>{const t=this.responseData.map(o=>Number(o[this.valueKey].raw)),s=Math.min(...t),i=Math.max(...t),e=Math.ceil((i-s)/this.bucketCount);return{min:s,max:i,bucketSize:e}};this.setBucketCount=()=>{const{buckets:t}=this.options;if(this.hasRagScore)if(this.useRagColour)this.bucketCount=3;else{const s=this.responseData.reduce((i,e)=>(e[this.valueKey].rag!==void 0&&i.push(e[this.valueKey].rag),i),[]);this.bucketCount=Math.max(...s)+1}else t?this.bucketCount=t.length:this.bucketCount=3};this.getBucketForValue=(t,s)=>{let i="",e=0;return s!==void 0?{colour:this.buckets[s].hexColour||i,score:s}:(this.buckets.forEach((o,a)=>{const{min:r,max:n}=o;!r&&n&&t<=n&&(i=o.hexColour||i,e=a),r&&t>=r&&n&&t<=n&&(i=o.hexColour||i,e=a),r&&!n&&t>=r&&(i=o.hexColour||i,e=a)}),{colour:i,score:e})};this.getBuckets=()=>this.buckets;this.responseData=t,this.initFromOptions(s),this.valueKey=i,this.hasRagScore=t[0][this.valueKey].rag!==void 0,this.autoBucketing=!!e,o&&(this.ragColours=o),this.initBuckets()}}var d=c;0&&(module.exports={Buckets});
|
|
2
2
|
//# sourceMappingURL=Buckets.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/dpr/components/_charts/chart/Buckets.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable prefer-destructuring */\nimport { withAlphaHex } from 'with-alpha-hex'\nimport { DashboardDataResponse } from '../../../types/Metrics'\nimport {\n
|
|
5
|
-
"mappings": "4ZAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GACA,IAAAK,EAA6B,0BAQ7B,MAAMH,CAAQ,CAuBZ,YACEI,EACAC,EACAC,EACAC,EACAC,EACA,CA5BF,KAAQ,WAAa,UAErB,KAAQ,WAAuB,CAAC,UAAW,UAAW,SAAS,EAE/D,KAAQ,QAA0C,CAAC,
|
|
6
|
-
"names": ["Buckets_exports", "__export", "Buckets", "Buckets_default", "__toCommonJS", "import_with_alpha_hex", "responseData", "definition", "valueKey", "autoBucketing", "ragColours", "bucket", "buckets", "i", "min", "max", "bucketSize", "maxValue", "minValue", "d", "alphaDivision", "division", "values", "resData", "value", "ragScore", "colour", "score", "index"]
|
|
4
|
+
"sourcesContent": ["/* eslint-disable prefer-destructuring */\nimport { withAlphaHex } from 'with-alpha-hex'\nimport { DashboardDataResponse, DashboardDataResponseWithRag } from '../../../types/Metrics'\nimport {\n DashboardVisualisationBucket,\n BucketDashboardVisualisationOptions,\n} from '../../_dashboards/dashboard-visualisation/types'\nimport { components } from '../../../types/api'\n\nclass Buckets {\n private baseColour = '#1d70b8'\n\n private ragColours: string[] = ['#00703c', '#ffdd00', '#d4351c']\n\n private buckets: DashboardVisualisationBucket[] = []\n\n private useRagColour = false\n\n private bucketCount = 0\n\n private onlyBucketColoursDefined = false\n\n private autoBucketing = false\n\n private hasRagScore = false\n\n private valueKey: string\n\n private options: BucketDashboardVisualisationOptions = {}\n\n responseData: DashboardDataResponse[]\n\n constructor(\n responseData: DashboardDataResponse[],\n definition: components['schemas']['DashboardVisualisationDefinition'],\n valueKey: string,\n autoBucketing?: boolean,\n ragColours?: string[],\n ) {\n this.responseData = responseData\n this.initFromOptions(definition)\n this.valueKey = valueKey\n this.hasRagScore = responseData[0][this.valueKey].rag !== undefined\n this.autoBucketing = Boolean(autoBucketing)\n if (ragColours) this.ragColours = ragColours\n this.initBuckets()\n }\n\n private initFromOptions = (definition: components['schemas']['DashboardVisualisationDefinition']) => {\n this.options = <BucketDashboardVisualisationOptions>definition.options || {}\n this.baseColour = this.options?.baseColour || this.baseColour\n this.useRagColour = this.options?.useRagColour || false\n this.onlyBucketColoursDefined =\n this.options && this.options.buckets\n ? this.options?.buckets?.every((bucket) => !bucket.max && !bucket.min && bucket.hexColour !== undefined)\n : false\n }\n\n private initBuckets = () => {\n const { buckets } = this.options\n\n this.setBucketCount()\n this.initBucketColours()\n\n if (buckets) {\n if (this.hasRagScore) {\n if (this.onlyBucketColoursDefined) {\n this.buckets = buckets\n }\n } else if (!this.hasRagScore && this.onlyBucketColoursDefined && this.autoBucketing) {\n this.initAutomaticThresholdBucket()\n } else {\n this.initCustomThresholdBuckets()\n }\n } else if (!buckets && !this.hasRagScore && this.autoBucketing) {\n this.initAutomaticThresholdBucket()\n }\n }\n\n private initCustomThresholdBuckets = () => {\n this.buckets = this.options.buckets\n ? this.options.buckets.map((bucket, i) => {\n return {\n ...this.buckets[i],\n ...bucket,\n }\n })\n : []\n }\n\n /**\n * Initialises the bucket thresholds by defining the range between the min and max\n * and dividing into 3 equal parts\n */\n private initAutomaticThresholdBucket = () => {\n const { min, max, bucketSize } = this.setAutomaticThresholdSize()\n let maxValue = 0\n this.buckets = this.buckets.map((bucket, i) => {\n let minValue = min\n if (i !== 0) minValue = maxValue + 1\n maxValue = bucketSize * (i + 1) + min\n if (i === this.buckets.length - 1) maxValue = max\n\n return {\n hexColour: this.options?.buckets ? this.options.buckets[i]?.hexColour : bucket.hexColour,\n min: minValue,\n max: maxValue,\n }\n })\n }\n\n private initBucketColours = () => {\n if (this.useRagColour && this.bucketCount === 3) {\n this.buckets = Array.from(new Array(this.bucketCount)).map((d, i) => {\n return {\n hexColour: this.ragColours[i],\n }\n })\n } else {\n const alphaDivision = 1 / this.bucketCount\n this.buckets = Array.from(new Array(this.bucketCount)).map((d, i) => {\n const division = alphaDivision * (i + 1)\n return {\n hexColour: withAlphaHex(this.baseColour, division),\n }\n })\n }\n }\n\n private setAutomaticThresholdSize = () => {\n const values = this.responseData.map((resData) => Number(resData[this.valueKey].raw))\n const min = Math.min(...values)\n const max = Math.max(...values)\n const bucketSize = Math.ceil((max - min) / this.bucketCount)\n\n return {\n min,\n max,\n bucketSize,\n }\n }\n\n private setBucketCount = () => {\n const { buckets } = this.options\n if (this.hasRagScore) {\n if (this.useRagColour) {\n this.bucketCount = 3\n } else {\n const allRags: number[] = this.responseData.reduce((acc: number[], resData: DashboardDataResponse) => {\n if (resData[this.valueKey].rag !== undefined) {\n acc.push(<number>resData[this.valueKey].rag)\n }\n return acc\n }, [])\n this.bucketCount = Math.max(...allRags) + 1\n }\n } else if (buckets) {\n this.bucketCount = buckets.length\n } else {\n this.bucketCount = 3\n }\n }\n\n getBucketForValue = (value: number, ragScore?: number): { colour: string; score: number } => {\n let colour = ''\n let score = 0\n\n if (ragScore !== undefined) {\n return {\n colour: this.buckets[ragScore].hexColour || colour,\n score: ragScore,\n }\n }\n\n this.buckets.forEach((bucket, index) => {\n const { min, max } = bucket\n // First bucket\n if (!min && max && value <= max) {\n colour = bucket.hexColour || colour\n score = index\n }\n // middle buckets\n if (min && value >= min && max && value <= max) {\n colour = bucket.hexColour || colour\n score = index\n }\n // last bucket\n if (min && !max && value >= min) {\n colour = bucket.hexColour || colour\n score = index\n }\n })\n\n return {\n colour,\n score,\n }\n }\n\n getBuckets = () => {\n return this.buckets\n }\n}\n\nexport { Buckets }\nexport default Buckets\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Buckets_exports", "__export", "Buckets", "Buckets_default", "__toCommonJS", "import_with_alpha_hex", "responseData", "definition", "valueKey", "autoBucketing", "ragColours", "bucket", "buckets", "i", "min", "max", "bucketSize", "maxValue", "minValue", "d", "alphaDivision", "division", "values", "resData", "allRags", "acc", "value", "ragScore", "colour", "score", "index"]
|
|
7
7
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/* eslint-disable prefer-destructuring */
|
|
2
2
|
import { withAlphaHex } from 'with-alpha-hex'
|
|
3
|
-
import { DashboardDataResponse } from '../../../types/Metrics'
|
|
3
|
+
import { DashboardDataResponse, DashboardDataResponseWithRag } from '../../../types/Metrics'
|
|
4
4
|
import {
|
|
5
|
-
DashboardVisualisation,
|
|
6
5
|
DashboardVisualisationBucket,
|
|
7
6
|
BucketDashboardVisualisationOptions,
|
|
8
|
-
} from '../../_dashboards/dashboard/types'
|
|
7
|
+
} from '../../_dashboards/dashboard-visualisation/types'
|
|
8
|
+
import { components } from '../../../types/api'
|
|
9
9
|
|
|
10
10
|
class Buckets {
|
|
11
11
|
private baseColour = '#1d70b8'
|
|
@@ -14,25 +14,25 @@ class Buckets {
|
|
|
14
14
|
|
|
15
15
|
private buckets: DashboardVisualisationBucket[] = []
|
|
16
16
|
|
|
17
|
-
private
|
|
17
|
+
private useRagColour = false
|
|
18
18
|
|
|
19
|
-
private bucketCount
|
|
19
|
+
private bucketCount = 0
|
|
20
20
|
|
|
21
|
-
private onlyBucketColoursDefined
|
|
21
|
+
private onlyBucketColoursDefined = false
|
|
22
22
|
|
|
23
|
-
private autoBucketing
|
|
23
|
+
private autoBucketing = false
|
|
24
24
|
|
|
25
25
|
private hasRagScore = false
|
|
26
26
|
|
|
27
27
|
private valueKey: string
|
|
28
28
|
|
|
29
|
-
private options: BucketDashboardVisualisationOptions
|
|
29
|
+
private options: BucketDashboardVisualisationOptions = {}
|
|
30
30
|
|
|
31
31
|
responseData: DashboardDataResponse[]
|
|
32
32
|
|
|
33
33
|
constructor(
|
|
34
34
|
responseData: DashboardDataResponse[],
|
|
35
|
-
definition:
|
|
35
|
+
definition: components['schemas']['DashboardVisualisationDefinition'],
|
|
36
36
|
valueKey: string,
|
|
37
37
|
autoBucketing?: boolean,
|
|
38
38
|
ragColours?: string[],
|
|
@@ -41,18 +41,19 @@ class Buckets {
|
|
|
41
41
|
this.initFromOptions(definition)
|
|
42
42
|
this.valueKey = valueKey
|
|
43
43
|
this.hasRagScore = responseData[0][this.valueKey].rag !== undefined
|
|
44
|
-
this.autoBucketing = autoBucketing
|
|
44
|
+
this.autoBucketing = Boolean(autoBucketing)
|
|
45
45
|
if (ragColours) this.ragColours = ragColours
|
|
46
46
|
this.initBuckets()
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
-
private initFromOptions = (definition:
|
|
49
|
+
private initFromOptions = (definition: components['schemas']['DashboardVisualisationDefinition']) => {
|
|
50
50
|
this.options = <BucketDashboardVisualisationOptions>definition.options || {}
|
|
51
51
|
this.baseColour = this.options?.baseColour || this.baseColour
|
|
52
|
-
this.
|
|
53
|
-
this.onlyBucketColoursDefined =
|
|
54
|
-
|
|
55
|
-
|
|
52
|
+
this.useRagColour = this.options?.useRagColour || false
|
|
53
|
+
this.onlyBucketColoursDefined =
|
|
54
|
+
this.options && this.options.buckets
|
|
55
|
+
? this.options?.buckets?.every((bucket) => !bucket.max && !bucket.min && bucket.hexColour !== undefined)
|
|
56
|
+
: false
|
|
56
57
|
}
|
|
57
58
|
|
|
58
59
|
private initBuckets = () => {
|
|
@@ -77,12 +78,14 @@ class Buckets {
|
|
|
77
78
|
}
|
|
78
79
|
|
|
79
80
|
private initCustomThresholdBuckets = () => {
|
|
80
|
-
this.buckets = this.options.buckets
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
81
|
+
this.buckets = this.options.buckets
|
|
82
|
+
? this.options.buckets.map((bucket, i) => {
|
|
83
|
+
return {
|
|
84
|
+
...this.buckets[i],
|
|
85
|
+
...bucket,
|
|
86
|
+
}
|
|
87
|
+
})
|
|
88
|
+
: []
|
|
86
89
|
}
|
|
87
90
|
|
|
88
91
|
/**
|
|
@@ -107,7 +110,7 @@ class Buckets {
|
|
|
107
110
|
}
|
|
108
111
|
|
|
109
112
|
private initBucketColours = () => {
|
|
110
|
-
if (this.
|
|
113
|
+
if (this.useRagColour && this.bucketCount === 3) {
|
|
111
114
|
this.buckets = Array.from(new Array(this.bucketCount)).map((d, i) => {
|
|
112
115
|
return {
|
|
113
116
|
hexColour: this.ragColours[i],
|
|
@@ -140,11 +143,16 @@ class Buckets {
|
|
|
140
143
|
private setBucketCount = () => {
|
|
141
144
|
const { buckets } = this.options
|
|
142
145
|
if (this.hasRagScore) {
|
|
143
|
-
if (this.
|
|
146
|
+
if (this.useRagColour) {
|
|
144
147
|
this.bucketCount = 3
|
|
145
148
|
} else {
|
|
146
|
-
this.
|
|
147
|
-
|
|
149
|
+
const allRags: number[] = this.responseData.reduce((acc: number[], resData: DashboardDataResponse) => {
|
|
150
|
+
if (resData[this.valueKey].rag !== undefined) {
|
|
151
|
+
acc.push(<number>resData[this.valueKey].rag)
|
|
152
|
+
}
|
|
153
|
+
return acc
|
|
154
|
+
}, [])
|
|
155
|
+
this.bucketCount = Math.max(...allRags) + 1
|
|
148
156
|
}
|
|
149
157
|
} else if (buckets) {
|
|
150
158
|
this.bucketCount = buckets.length
|
|
@@ -153,13 +161,13 @@ class Buckets {
|
|
|
153
161
|
}
|
|
154
162
|
}
|
|
155
163
|
|
|
156
|
-
getBucketForValue = (value: number, ragScore?: number) => {
|
|
157
|
-
let colour
|
|
158
|
-
let score
|
|
164
|
+
getBucketForValue = (value: number, ragScore?: number): { colour: string; score: number } => {
|
|
165
|
+
let colour = ''
|
|
166
|
+
let score = 0
|
|
159
167
|
|
|
160
168
|
if (ragScore !== undefined) {
|
|
161
169
|
return {
|
|
162
|
-
colour: this.buckets[ragScore].hexColour,
|
|
170
|
+
colour: this.buckets[ragScore].hexColour || colour,
|
|
163
171
|
score: ragScore,
|
|
164
172
|
}
|
|
165
173
|
}
|
|
@@ -168,18 +176,18 @@ class Buckets {
|
|
|
168
176
|
const { min, max } = bucket
|
|
169
177
|
// First bucket
|
|
170
178
|
if (!min && max && value <= max) {
|
|
171
|
-
colour = bucket.hexColour
|
|
172
|
-
score = index
|
|
179
|
+
colour = bucket.hexColour || colour
|
|
180
|
+
score = index
|
|
173
181
|
}
|
|
174
182
|
// middle buckets
|
|
175
|
-
if (min && value >=
|
|
176
|
-
colour = bucket.hexColour
|
|
177
|
-
score = index
|
|
183
|
+
if (min && value >= min && max && value <= max) {
|
|
184
|
+
colour = bucket.hexColour || colour
|
|
185
|
+
score = index
|
|
178
186
|
}
|
|
179
187
|
// last bucket
|
|
180
188
|
if (min && !max && value >= min) {
|
|
181
|
-
colour = bucket.hexColour
|
|
182
|
-
score = index
|
|
189
|
+
colour = bucket.hexColour || colour
|
|
190
|
+
score = index
|
|
183
191
|
}
|
|
184
192
|
})
|
|
185
193
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var
|
|
1
|
+
var M=Object.create;var l=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var V=Object.getPrototypeOf,T=Object.prototype.hasOwnProperty;var w=(e,s)=>{for(var t in s)l(e,t,{get:s[t],enumerable:!0})},D=(e,s,t,a)=>{if(s&&typeof s=="object"||typeof s=="function")for(let i of x(s))!T.call(e,i)&&i!==t&&l(e,i,{get:()=>s[i],enumerable:!(a=g(s,i))||a.enumerable});return e};var m=(e,s,t)=>(t=e!=null?M(V(e)):{},D(s||!e||!e.__esModule?l(t,"default",{value:e,enumerable:!0}):t,e)),C=e=>D(l({},"__esModule",{value:!0}),e);var F={};w(F,{HeatmapChart:()=>p,default:()=>E});module.exports=C(F);var n=m(require("dayjs")),d=require("../../../_dashboards/dashboard-visualisation/types"),y=m(require("../../../../utils/datasetHelper")),b=m(require("../../../_dashboards/dashboard-visualisation/DashboardVisualisation")),f=m(require("../Buckets"));class p extends b.default{constructor(t,a,i){super(t,i);this.data=[];this.dayDateFormat="DD/MM/YYYY";this.valueKey="";this.label="";this.buckets=[];this.initUnit=()=>{this.unit=this.columns.measures[0].unit?this.columns.measures[0].unit:void 0};this.setLabel=()=>{const{id:t,display:a}=this.columns.measures[1];this.valueKey=t,this.label=a||""};this.validateDefinition=()=>{const{id:t,columns:a,type:i}=this.definition,o=[];if(a.measures.length!==2?o.push(`Measures should only have 2 columns defined. Only found ${a.measures.length}`):i===d.DashboardVisualisationType.MATRIX_TIMESERIES&&a.measures[0].id!=="ts"&&o.push(`measure at index 0 has incorrect ID. Expected ID to be "ts". Found "${a.measures[0].id}"`),o.length){const r=`Validation: Visualisaton definition: ID: ${t}, type: ${i}, errors: ${o.join(",")}`;throw new Error(r)}};this.initTimeseriesData=()=>{const t=y.default.groupRowsByTimestamp(this.responseData);this.data=t.map(a=>{const{raw:i,rag:o}=a[0][this.valueKey],r=a[0].ts.raw,k=Number(i),v=o!==void 0?Number(a[0][this.valueKey].rag):void 0;let u=0,h=0;switch(this.granularity){case"hourly":break;case"weekly":u=(0,n.default)(r,this.dayDateFormat).format("ddd"),h=(0,n.default)(r,this.dayDateFormat).week();break;case"daily":u=(0,n.default)(r,this.dayDateFormat).format("MMM YY"),h=(0,n.default)(r,this.dayDateFormat).format("D");break;case"monthly":{const c=r.split(" ");u=c[1],h=c[0]}break;case"annually":u="year",h=r;break;default:u=(0,n.default)(r,this.dayDateFormat).format("MMM YY"),h=(0,n.default)(r,this.dayDateFormat).format("D");break}return{y:h,x:u,v:k,r:v}})};this.bucketData=()=>{this.data=this.data.map(t=>{const{v:a,r:i}=t,o=this.bucketsHelper.getBucketForValue(a,i);return{...t,c:o.colour}})};this.build=()=>(this.validateDefinition(),this.initTimeseriesData(),this.bucketData(),{type:this.type,unit:this.unit,timeseries:!0,data:{datasets:[{label:this.label,data:this.data}]}});this.granularity=a,this.isTimeseriesChart=this.type===d.DashboardVisualisationType.LINE_TIMESERIES,this.setLabel(),this.initUnit(),this.bucketsHelper=new f.default(t,this.definition,this.valueKey,!0),this.buckets=this.bucketsHelper.getBuckets()}}var E=p;0&&(module.exports={HeatmapChart});
|
|
2
2
|
//# sourceMappingURL=HeatmapChart.js.map
|