@ministryofjustice/hmpps-digital-prison-reporting-frontend 4.22.4 → 4.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- "use strict";var c=Object.create;var i=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var I=(e,a)=>{for(var t in a)i(e,t,{get:a[t],enumerable:!0})},l=(e,a,t,r)=>{if(a&&typeof a=="object"||typeof a=="function")for(let s of m(a))!g.call(e,s)&&s!==t&&i(e,s,{get:()=>a[s],enumerable:!(r=C(a,s))||r.enumerable});return e};var R=(e,a,t)=>(t=e!=null?c(f(e)):{},l(a||!e||!e.__esModule?i(t,"default",{value:e,enumerable:!0}):t,e)),x=e=>l(i({},"__esModule",{value:!0}),e);var V={};I(V,{Chart:()=>o,default:()=>M});module.exports=x(V);var u=require("./ChartColours"),d=R(require("./chart-config"));class o{constructor(){this.labels=[];this.labelId=void 0;this.datasets=[];this.responseData=[];this.backgroundColor=[];this.borderWidth=[0,0];this.borderColor=[];this.hexColours=[];this.config=d.default;this.withData=a=>(this.responseData=a,this);this.initUnit=a=>{this.unit=a.find(t=>t.unit)?.unit};this.createDatasets=(a,t)=>{this.hexColours=new u.ChartColours().getHexPallette(),this.datasets=t.map((r,s)=>{const h=this.createDatasetLabel(r),n=this.createDatasetValues(a,r),b=n.reduce((D,p)=>D+p,0);return{label:h,data:n,total:b,...this.setStyles(s)}})};this.createDatasetLabel=a=>this.labelId&&a[this.labelId]?`${a[this.labelId].raw}`:"All";this.createDatasetValues=(a,t)=>a.map(r=>{const s=r.id;return t[s]&&t[s].raw?Number(t[s].raw):0});this.setStyles=a=>{const t=this.hexColours[a];return{backgroundColor:t,borderColor:t}};this.createLabels=a=>{this.labels=a.map(t=>t.display||"")};this.getLabelId=a=>{if(a.length){const t=a.length-1;this.labelId=a[t]?.id}}}}var M=o;0&&(module.exports={Chart});
1
+ "use strict";var C=Object.create;var i=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var x=(e,a)=>{for(var t in a)i(e,t,{get:a[t],enumerable:!0})},l=(e,a,t,r)=>{if(a&&typeof a=="object"||typeof a=="function")for(let s of m(a))!g.call(e,s)&&s!==t&&i(e,s,{get:()=>a[s],enumerable:!(r=c(a,s))||r.enumerable});return e};var I=(e,a,t)=>(t=e!=null?C(f(e)):{},l(a||!e||!e.__esModule?i(t,"default",{value:e,enumerable:!0}):t,e)),R=e=>l(i({},"__esModule",{value:!0}),e);var V={};x(V,{Chart:()=>o,default:()=>M});module.exports=R(V);var h=require("./ChartColours"),u=I(require("./chart-config"));class o{constructor(){this.labels=[];this.labelId=void 0;this.datasets=[];this.responseData=[];this.backgroundColor=[];this.borderWidth=[0,0];this.borderColor=[];this.hexColours=[];this.config=u.default;this.withData=a=>(this.responseData=a,this);this.initUnit=a=>{this.unit=a.find(t=>t.unit)?.unit};this.createDatasets=(a,t)=>{this.hexColours=new h.ChartColours().getHexPallette(),this.datasets=t.map((r,s)=>{const d=this.createDatasetLabel(r),n=this.createDatasetValues(a,r),b=n.reduce((D,p)=>D+p,0);return{label:d,data:n,total:b,...this.setStyles(s)}})};this.createDatasetLabel=a=>this.labelId&&a[this.labelId]?`${a[this.labelId].raw}`:"All";this.createDatasetValues=(a,t)=>a.map(r=>{const s=r.id;return t[s]&&t[s].raw?Number(t[s].raw):0});this.setStyles=a=>{const t=this.hexColours[a%this.hexColours.length];return{backgroundColor:t,borderColor:t}};this.createLabels=a=>{this.labels=a.map(t=>t.display||"")};this.getLabelId=a=>{if(a.length){const t=a.length-1;this.labelId=a[t]?.id}}}}var M=o;0&&(module.exports={Chart});
2
2
  //# sourceMappingURL=Chart.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/dpr/components/_charts/chart/Chart.ts"],
4
- "sourcesContent": ["/* eslint-disable prefer-destructuring */\nimport { DashboardDataResponse } from '../../../types/Metrics'\nimport {\n DashboardVisualisationDataSet,\n VisualisationDefinitionKey,\n ChartMeasure,\n} from '../../_dashboards/dashboard-visualisation/types'\nimport { ChartColours } from './ChartColours'\nimport ChartConfig from './chart-config'\n\nclass Chart {\n labels: string[] = []\n\n private labelId: string | undefined = undefined\n\n datasets: DashboardVisualisationDataSet[] = []\n\n unit: 'NUMBER' | 'PERCENTAGE' | undefined\n\n responseData: DashboardDataResponse[] = []\n\n backgroundColor: string[][] = []\n\n borderWidth: number[] = [0, 0]\n\n borderColor: string[][] = []\n\n hexColours: string[] = []\n\n config = ChartConfig\n\n withData = (responseData: DashboardDataResponse[]) => {\n this.responseData = responseData\n return this\n }\n\n initUnit = (measures: ChartMeasure) => {\n this.unit = measures.find((m) => m.unit)?.unit\n }\n\n createDatasets = (measures: ChartMeasure, responseData: DashboardDataResponse[]) => {\n this.hexColours = new ChartColours().getHexPallette()\n this.datasets = responseData.map((row, datasetIndex) => {\n const label = this.createDatasetLabel(row)\n const data = this.createDatasetValues(measures, row)\n const total = data.reduce((acc: number, val: number) => acc + val, 0)\n\n return {\n label,\n data,\n total,\n ...this.setStyles(datasetIndex),\n }\n })\n }\n\n private createDatasetLabel = (row: DashboardDataResponse) => {\n return this.labelId && row[this.labelId] ? `${row[this.labelId].raw}` : 'All'\n }\n\n private createDatasetValues = (measures: ChartMeasure, row: DashboardDataResponse) => {\n return measures.map((column) => {\n const rowId = column.id\n return row[rowId] && row[rowId].raw ? Number(row[rowId].raw) : 0\n })\n }\n\n setStyles = (datasetIndex: number) => {\n const colour = this.hexColours[datasetIndex]\n return {\n backgroundColor: colour,\n borderColor: colour,\n }\n }\n\n createLabels = (measures: ChartMeasure) => {\n this.labels = measures.map((col) => col.display || '')\n }\n\n getLabelId = (keys: VisualisationDefinitionKey[]) => {\n if (keys.length) {\n const lastIndex = keys.length - 1\n this.labelId = keys[lastIndex]?.id\n }\n }\n}\n\nexport { Chart }\nexport default Chart\n"],
5
- "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,WAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAOA,IAAAK,EAA6B,0BAC7BC,EAAwB,6BAExB,MAAMJ,CAAM,CAAZ,cACE,YAAmB,CAAC,EAEpB,KAAQ,QAA8B,OAEtC,cAA4C,CAAC,EAI7C,kBAAwC,CAAC,EAEzC,qBAA8B,CAAC,EAE/B,iBAAwB,CAAC,EAAG,CAAC,EAE7B,iBAA0B,CAAC,EAE3B,gBAAuB,CAAC,EAExB,YAAS,EAAAK,QAET,cAAYC,IACV,KAAK,aAAeA,EACb,MAGT,cAAYC,GAA2B,CACrC,KAAK,KAAOA,EAAS,KAAMC,GAAMA,EAAE,IAAI,GAAG,IAC5C,EAEA,oBAAiB,CAACD,EAAwBD,IAA0C,CAClF,KAAK,WAAa,IAAI,eAAa,EAAE,eAAe,EACpD,KAAK,SAAWA,EAAa,IAAI,CAACG,EAAKC,IAAiB,CACtD,MAAMC,EAAQ,KAAK,mBAAmBF,CAAG,EACnCG,EAAO,KAAK,oBAAoBL,EAAUE,CAAG,EAC7CI,EAAQD,EAAK,OAAO,CAACE,EAAaC,IAAgBD,EAAMC,EAAK,CAAC,EAEpE,MAAO,CACL,MAAAJ,EACA,KAAAC,EACA,MAAAC,EACA,GAAG,KAAK,UAAUH,CAAY,CAChC,CACF,CAAC,CACH,EAEA,KAAQ,mBAAsBD,GACrB,KAAK,SAAWA,EAAI,KAAK,OAAO,EAAI,GAAGA,EAAI,KAAK,OAAO,EAAE,GAAG,GAAK,MAG1E,KAAQ,oBAAsB,CAACF,EAAwBE,IAC9CF,EAAS,IAAKS,GAAW,CAC9B,MAAMC,EAAQD,EAAO,GACrB,OAAOP,EAAIQ,CAAK,GAAKR,EAAIQ,CAAK,EAAE,IAAM,OAAOR,EAAIQ,CAAK,EAAE,GAAG,EAAI,CACjE,CAAC,EAGH,eAAaP,GAAyB,CACpC,MAAMQ,EAAS,KAAK,WAAWR,CAAY,EAC3C,MAAO,CACL,gBAAiBQ,EACjB,YAAaA,CACf,CACF,EAEA,kBAAgBX,GAA2B,CACzC,KAAK,OAASA,EAAS,IAAKY,GAAQA,EAAI,SAAW,EAAE,CACvD,EAEA,gBAAcC,GAAuC,CACnD,GAAIA,EAAK,OAAQ,CACf,MAAMC,EAAYD,EAAK,OAAS,EAChC,KAAK,QAAUA,EAAKC,CAAS,GAAG,EAClC,CACF,EACF,CAGA,IAAOpB,EAAQD",
4
+ "sourcesContent": ["/* eslint-disable prefer-destructuring */\nimport { DashboardDataResponse } from '../../../types/Metrics'\nimport {\n DashboardVisualisationDataSet,\n VisualisationDefinitionKey,\n ChartMeasure,\n} from '../../_dashboards/dashboard-visualisation/types'\nimport { ChartColours } from './ChartColours'\nimport ChartConfig from './chart-config'\n\nclass Chart {\n labels: string[] = []\n\n private labelId: string | undefined = undefined\n\n datasets: DashboardVisualisationDataSet[] = []\n\n unit: 'NUMBER' | 'PERCENTAGE' | undefined\n\n responseData: DashboardDataResponse[] = []\n\n backgroundColor: string[][] = []\n\n borderWidth: number[] = [0, 0]\n\n borderColor: string[][] = []\n\n hexColours: string[] = []\n\n config = ChartConfig\n\n withData = (responseData: DashboardDataResponse[]) => {\n this.responseData = responseData\n return this\n }\n\n initUnit = (measures: ChartMeasure) => {\n this.unit = measures.find((m) => m.unit)?.unit\n }\n\n createDatasets = (measures: ChartMeasure, responseData: DashboardDataResponse[]) => {\n this.hexColours = new ChartColours().getHexPallette()\n this.datasets = responseData.map((row, datasetIndex) => {\n const label = this.createDatasetLabel(row)\n const data = this.createDatasetValues(measures, row)\n const total = data.reduce((acc: number, val: number) => acc + val, 0)\n\n return {\n label,\n data,\n total,\n ...this.setStyles(datasetIndex),\n }\n })\n }\n\n private createDatasetLabel = (row: DashboardDataResponse) => {\n return this.labelId && row[this.labelId] ? `${row[this.labelId].raw}` : 'All'\n }\n\n private createDatasetValues = (measures: ChartMeasure, row: DashboardDataResponse) => {\n return measures.map((column) => {\n const rowId = column.id\n return row[rowId] && row[rowId].raw ? Number(row[rowId].raw) : 0\n })\n }\n\n setStyles = (datasetIndex: number) => {\n const colour = this.hexColours[datasetIndex % this.hexColours.length]\n return {\n backgroundColor: colour,\n borderColor: colour,\n }\n }\n\n createLabels = (measures: ChartMeasure) => {\n this.labels = measures.map((col) => col.display || '')\n }\n\n getLabelId = (keys: VisualisationDefinitionKey[]) => {\n if (keys.length) {\n const lastIndex = keys.length - 1\n this.labelId = keys[lastIndex]?.id\n }\n }\n}\n\nexport { Chart }\nexport default Chart\n"],
5
+ "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,WAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAOA,IAAAK,EAA6B,0BAC7BC,EAAwB,6BAExB,MAAMJ,CAAM,CAAZ,cACE,YAAmB,CAAC,EAEpB,KAAQ,QAA8B,OAEtC,cAA4C,CAAC,EAI7C,kBAAwC,CAAC,EAEzC,qBAA8B,CAAC,EAE/B,iBAAwB,CAAC,EAAG,CAAC,EAE7B,iBAA0B,CAAC,EAE3B,gBAAuB,CAAC,EAExB,YAAS,EAAAK,QAET,cAAYC,IACV,KAAK,aAAeA,EACb,MAGT,cAAYC,GAA2B,CACrC,KAAK,KAAOA,EAAS,KAAMC,GAAMA,EAAE,IAAI,GAAG,IAC5C,EAEA,oBAAiB,CAACD,EAAwBD,IAA0C,CAClF,KAAK,WAAa,IAAI,eAAa,EAAE,eAAe,EACpD,KAAK,SAAWA,EAAa,IAAI,CAACG,EAAKC,IAAiB,CACtD,MAAMC,EAAQ,KAAK,mBAAmBF,CAAG,EACnCG,EAAO,KAAK,oBAAoBL,EAAUE,CAAG,EAC7CI,EAAQD,EAAK,OAAO,CAACE,EAAaC,IAAgBD,EAAMC,EAAK,CAAC,EAEpE,MAAO,CACL,MAAAJ,EACA,KAAAC,EACA,MAAAC,EACA,GAAG,KAAK,UAAUH,CAAY,CAChC,CACF,CAAC,CACH,EAEA,KAAQ,mBAAsBD,GACrB,KAAK,SAAWA,EAAI,KAAK,OAAO,EAAI,GAAGA,EAAI,KAAK,OAAO,EAAE,GAAG,GAAK,MAG1E,KAAQ,oBAAsB,CAACF,EAAwBE,IAC9CF,EAAS,IAAKS,GAAW,CAC9B,MAAMC,EAAQD,EAAO,GACrB,OAAOP,EAAIQ,CAAK,GAAKR,EAAIQ,CAAK,EAAE,IAAM,OAAOR,EAAIQ,CAAK,EAAE,GAAG,EAAI,CACjE,CAAC,EAGH,eAAaP,GAAyB,CACpC,MAAMQ,EAAS,KAAK,WAAWR,EAAe,KAAK,WAAW,MAAM,EACpE,MAAO,CACL,gBAAiBQ,EACjB,YAAaA,CACf,CACF,EAEA,kBAAgBX,GAA2B,CACzC,KAAK,OAASA,EAAS,IAAKY,GAAQA,EAAI,SAAW,EAAE,CACvD,EAEA,gBAAcC,GAAuC,CACnD,GAAIA,EAAK,OAAQ,CACf,MAAMC,EAAYD,EAAK,OAAS,EAChC,KAAK,QAAUA,EAAKC,CAAS,GAAG,EAClC,CACF,EACF,CAGA,IAAOpB,EAAQD",
6
6
  "names": ["Chart_exports", "__export", "Chart", "Chart_default", "__toCommonJS", "import_ChartColours", "import_chart_config", "ChartConfig", "responseData", "measures", "m", "row", "datasetIndex", "label", "data", "total", "acc", "val", "column", "rowId", "colour", "col", "keys", "lastIndex"]
7
7
  }
@@ -66,7 +66,7 @@ class Chart {
66
66
  }
67
67
 
68
68
  setStyles = (datasetIndex: number) => {
69
- const colour = this.hexColours[datasetIndex]
69
+ const colour = this.hexColours[datasetIndex % this.hexColours.length]
70
70
  return {
71
71
  backgroundColor: colour,
72
72
  borderColor: colour,
@@ -1,2 +1,2 @@
1
- "use strict";var i=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var m=Object.prototype.hasOwnProperty;var g=(e,a)=>{for(var s in a)i(e,s,{get:a[s],enumerable:!0})},h=(e,a,s,r)=>{if(a&&typeof a=="object"||typeof a=="function")for(let t of d(a))!m.call(e,t)&&t!==s&&i(e,t,{get:()=>a[t],enumerable:!(r=b(a,t))||r.enumerable});return e};var f=e=>h(i({},"__esModule",{value:!0}),e);var S={};g(S,{BucketOptionsSchema:()=>j,DashboardColumns:()=>c,DashboardVisualisationMeasureSchema:()=>n,DashboardVisualisationSchema:()=>p,default:()=>D});module.exports=f(S);var o=require("zod");const l=o.z.object({min:o.z.number().optional(),max:o.z.number().optional(),hexColour:o.z.string().optional()}),j=o.z.object({useRagColour:o.z.boolean().default(!1),buckets:o.z.array(l).default([]),baseColour:o.z.string().regex(/^#/).optional()}),x=o.z.object({id:o.z.string(),equals:o.z.string()}),u=o.z.object({id:o.z.string(),display:o.z.string().optional(),optional:o.z.boolean().default(!1)}),n=o.z.object({id:o.z.string(),display:o.z.string().optional(),unit:o.z.enum(["NUMBER","PERCENTAGE"]).optional(),aggregate:o.z.enum(["sum","average"]).optional()}),c=o.z.object({keys:o.z.array(u),measures:o.z.array(n).length(1,"Measure must contain a single item"),filters:o.z.array(x).min(1).optional(),expectNulls:o.z.boolean().default(!1)}),y=o.z.object({...l.shape,showLatest:o.z.boolean().default(!0),columnsAsList:o.z.boolean().optional()}),p=o.z.object({id:o.z.string(),type:o.z.enum(["list","doughnut","bar","bar-timeseries","line","scorecard","scorecard-group","matrix-timeseries","line-timeseries"]),display:o.z.string().optional(),description:o.z.string().optional(),options:o.z.object(y.shape),columns:o.z.object(c.shape)}),C={DashboardVisualisationSchema:p,DashboardVisualisationMeasureSchema:n,DashboardVisualisationKeySchema:u};var D=C;0&&(module.exports={BucketOptionsSchema,DashboardColumns,DashboardVisualisationMeasureSchema,DashboardVisualisationSchema});
1
+ "use strict";var i=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var m=Object.prototype.hasOwnProperty;var g=(e,a)=>{for(var s in a)i(e,s,{get:a[s],enumerable:!0})},h=(e,a,s,r)=>{if(a&&typeof a=="object"||typeof a=="function")for(let t of d(a))!m.call(e,t)&&t!==s&&i(e,t,{get:()=>a[t],enumerable:!(r=b(a,t))||r.enumerable});return e};var f=e=>h(i({},"__esModule",{value:!0}),e);var S={};g(S,{BucketOptionsSchema:()=>j,DashboardColumns:()=>c,DashboardVisualisationMeasureSchema:()=>n,DashboardVisualisationSchema:()=>p,default:()=>D});module.exports=f(S);var o=require("zod");const l=o.z.object({min:o.z.number().optional(),max:o.z.number().optional(),hexColour:o.z.string().optional()}),j=o.z.object({useRagColour:o.z.boolean().default(!1),buckets:o.z.array(l).default([]),baseColour:o.z.string().regex(/^#/).optional()}),x=o.z.object({id:o.z.string(),equals:o.z.string().nullable()}),u=o.z.object({id:o.z.string(),display:o.z.string().optional(),optional:o.z.boolean().default(!1)}),n=o.z.object({id:o.z.string(),display:o.z.string().optional(),unit:o.z.enum(["NUMBER","PERCENTAGE"]).optional(),aggregate:o.z.enum(["sum","average"]).optional()}),c=o.z.object({keys:o.z.array(u),measures:o.z.array(n).length(1,"Measure must contain a single item"),filters:o.z.array(x).min(1).optional(),expectNulls:o.z.boolean().default(!1)}),y=o.z.object({...l.shape,showLatest:o.z.boolean().default(!0),columnsAsList:o.z.boolean().optional()}),p=o.z.object({id:o.z.string(),type:o.z.enum(["list","doughnut","bar","bar-timeseries","line","scorecard","scorecard-group","matrix-timeseries","line-timeseries"]),display:o.z.string().optional(),description:o.z.string().optional(),options:o.z.object(y.shape),columns:o.z.object(c.shape)}),C={DashboardVisualisationSchema:p,DashboardVisualisationMeasureSchema:n,DashboardVisualisationKeySchema:u};var D=C;0&&(module.exports={BucketOptionsSchema,DashboardColumns,DashboardVisualisationMeasureSchema,DashboardVisualisationSchema});
2
2
  //# sourceMappingURL=Validate.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/dpr/components/_dashboards/dashboard-visualisation/Validate.ts"],
4
- "sourcesContent": ["import { z } from 'zod'\n\nconst dashboardBucket = z.object({\n min: z.number().optional(),\n max: z.number().optional(),\n hexColour: z.string().optional(),\n})\n\nexport const BucketOptionsSchema = z.object({\n useRagColour: z.boolean().default(false),\n buckets: z.array(dashboardBucket).default([]),\n baseColour: z.string().regex(/^#/).optional(),\n})\n\nconst dashboardVisFilter = z.object({\n id: z.string(),\n equals: z.string(),\n})\n\nconst DashboardVisualisationKeySchema = z.object({\n id: z.string(),\n display: z.string().optional(),\n optional: z.boolean().default(false),\n})\n\nexport const DashboardVisualisationMeasureSchema = z.object({\n id: z.string(),\n display: z.string().optional(),\n unit: z.enum(['NUMBER', 'PERCENTAGE']).optional(),\n aggregate: z.enum(['sum', 'average']).optional(),\n})\n\nexport const DashboardColumns = z.object({\n keys: z.array(DashboardVisualisationKeySchema),\n measures: z.array(DashboardVisualisationMeasureSchema).length(1, 'Measure must contain a single item'),\n filters: z.array(dashboardVisFilter).min(1).optional(),\n expectNulls: z.boolean().default(false),\n})\n\nconst dashboardOptions = z.object({\n ...dashboardBucket.shape,\n showLatest: z.boolean().default(true),\n columnsAsList: z.boolean().optional(),\n})\n\nexport const DashboardVisualisationSchema = z.object({\n id: z.string(),\n type: z.enum([\n 'list',\n 'doughnut',\n 'bar',\n 'bar-timeseries',\n 'line',\n 'scorecard',\n 'scorecard-group',\n 'matrix-timeseries',\n 'line-timeseries',\n ]),\n display: z.string().optional(),\n description: z.string().optional(),\n options: z.object(dashboardOptions.shape),\n columns: z.object(DashboardColumns.shape),\n})\n\nconst DashboardVisualisationSchemas = {\n DashboardVisualisationSchema,\n DashboardVisualisationMeasureSchema,\n DashboardVisualisationKeySchema,\n}\n\nexport default DashboardVisualisationSchemas\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,yBAAAE,EAAA,qBAAAC,EAAA,wCAAAC,EAAA,iCAAAC,EAAA,YAAAC,IAAA,eAAAC,EAAAP,GAAA,IAAAQ,EAAkB,eAElB,MAAMC,EAAkB,IAAE,OAAO,CAC/B,IAAK,IAAE,OAAO,EAAE,SAAS,EACzB,IAAK,IAAE,OAAO,EAAE,SAAS,EACzB,UAAW,IAAE,OAAO,EAAE,SAAS,CACjC,CAAC,EAEYP,EAAsB,IAAE,OAAO,CAC1C,aAAc,IAAE,QAAQ,EAAE,QAAQ,EAAK,EACvC,QAAS,IAAE,MAAMO,CAAe,EAAE,QAAQ,CAAC,CAAC,EAC5C,WAAY,IAAE,OAAO,EAAE,MAAM,IAAI,EAAE,SAAS,CAC9C,CAAC,EAEKC,EAAqB,IAAE,OAAO,CAClC,GAAI,IAAE,OAAO,EACb,OAAQ,IAAE,OAAO,CACnB,CAAC,EAEKC,EAAkC,IAAE,OAAO,CAC/C,GAAI,IAAE,OAAO,EACb,QAAS,IAAE,OAAO,EAAE,SAAS,EAC7B,SAAU,IAAE,QAAQ,EAAE,QAAQ,EAAK,CACrC,CAAC,EAEYP,EAAsC,IAAE,OAAO,CAC1D,GAAI,IAAE,OAAO,EACb,QAAS,IAAE,OAAO,EAAE,SAAS,EAC7B,KAAM,IAAE,KAAK,CAAC,SAAU,YAAY,CAAC,EAAE,SAAS,EAChD,UAAW,IAAE,KAAK,CAAC,MAAO,SAAS,CAAC,EAAE,SAAS,CACjD,CAAC,EAEYD,EAAmB,IAAE,OAAO,CACvC,KAAM,IAAE,MAAMQ,CAA+B,EAC7C,SAAU,IAAE,MAAMP,CAAmC,EAAE,OAAO,EAAG,oCAAoC,EACrG,QAAS,IAAE,MAAMM,CAAkB,EAAE,IAAI,CAAC,EAAE,SAAS,EACrD,YAAa,IAAE,QAAQ,EAAE,QAAQ,EAAK,CACxC,CAAC,EAEKE,EAAmB,IAAE,OAAO,CAChC,GAAGH,EAAgB,MACnB,WAAY,IAAE,QAAQ,EAAE,QAAQ,EAAI,EACpC,cAAe,IAAE,QAAQ,EAAE,SAAS,CACtC,CAAC,EAEYJ,EAA+B,IAAE,OAAO,CACnD,GAAI,IAAE,OAAO,EACb,KAAM,IAAE,KAAK,CACX,OACA,WACA,MACA,iBACA,OACA,YACA,kBACA,oBACA,iBACF,CAAC,EACD,QAAS,IAAE,OAAO,EAAE,SAAS,EAC7B,YAAa,IAAE,OAAO,EAAE,SAAS,EACjC,QAAS,IAAE,OAAOO,EAAiB,KAAK,EACxC,QAAS,IAAE,OAAOT,EAAiB,KAAK,CAC1C,CAAC,EAEKU,EAAgC,CACpC,6BAAAR,EACA,oCAAAD,EACA,gCAAAO,CACF,EAEA,IAAOL,EAAQO",
4
+ "sourcesContent": ["import { z } from 'zod'\n\nconst dashboardBucket = z.object({\n min: z.number().optional(),\n max: z.number().optional(),\n hexColour: z.string().optional(),\n})\n\nexport const BucketOptionsSchema = z.object({\n useRagColour: z.boolean().default(false),\n buckets: z.array(dashboardBucket).default([]),\n baseColour: z.string().regex(/^#/).optional(),\n})\n\nconst dashboardVisFilter = z.object({\n id: z.string(),\n equals: z.string().nullable(),\n})\n\nconst DashboardVisualisationKeySchema = z.object({\n id: z.string(),\n display: z.string().optional(),\n optional: z.boolean().default(false),\n})\n\nexport const DashboardVisualisationMeasureSchema = z.object({\n id: z.string(),\n display: z.string().optional(),\n unit: z.enum(['NUMBER', 'PERCENTAGE']).optional(),\n aggregate: z.enum(['sum', 'average']).optional(),\n})\n\nexport const DashboardColumns = z.object({\n keys: z.array(DashboardVisualisationKeySchema),\n measures: z.array(DashboardVisualisationMeasureSchema).length(1, 'Measure must contain a single item'),\n filters: z.array(dashboardVisFilter).min(1).optional(),\n expectNulls: z.boolean().default(false),\n})\n\nconst dashboardOptions = z.object({\n ...dashboardBucket.shape,\n showLatest: z.boolean().default(true),\n columnsAsList: z.boolean().optional(),\n})\n\nexport const DashboardVisualisationSchema = z.object({\n id: z.string(),\n type: z.enum([\n 'list',\n 'doughnut',\n 'bar',\n 'bar-timeseries',\n 'line',\n 'scorecard',\n 'scorecard-group',\n 'matrix-timeseries',\n 'line-timeseries',\n ]),\n display: z.string().optional(),\n description: z.string().optional(),\n options: z.object(dashboardOptions.shape),\n columns: z.object(DashboardColumns.shape),\n})\n\nconst DashboardVisualisationSchemas = {\n DashboardVisualisationSchema,\n DashboardVisualisationMeasureSchema,\n DashboardVisualisationKeySchema,\n}\n\nexport default DashboardVisualisationSchemas\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,yBAAAE,EAAA,qBAAAC,EAAA,wCAAAC,EAAA,iCAAAC,EAAA,YAAAC,IAAA,eAAAC,EAAAP,GAAA,IAAAQ,EAAkB,eAElB,MAAMC,EAAkB,IAAE,OAAO,CAC/B,IAAK,IAAE,OAAO,EAAE,SAAS,EACzB,IAAK,IAAE,OAAO,EAAE,SAAS,EACzB,UAAW,IAAE,OAAO,EAAE,SAAS,CACjC,CAAC,EAEYP,EAAsB,IAAE,OAAO,CAC1C,aAAc,IAAE,QAAQ,EAAE,QAAQ,EAAK,EACvC,QAAS,IAAE,MAAMO,CAAe,EAAE,QAAQ,CAAC,CAAC,EAC5C,WAAY,IAAE,OAAO,EAAE,MAAM,IAAI,EAAE,SAAS,CAC9C,CAAC,EAEKC,EAAqB,IAAE,OAAO,CAClC,GAAI,IAAE,OAAO,EACb,OAAQ,IAAE,OAAO,EAAE,SAAS,CAC9B,CAAC,EAEKC,EAAkC,IAAE,OAAO,CAC/C,GAAI,IAAE,OAAO,EACb,QAAS,IAAE,OAAO,EAAE,SAAS,EAC7B,SAAU,IAAE,QAAQ,EAAE,QAAQ,EAAK,CACrC,CAAC,EAEYP,EAAsC,IAAE,OAAO,CAC1D,GAAI,IAAE,OAAO,EACb,QAAS,IAAE,OAAO,EAAE,SAAS,EAC7B,KAAM,IAAE,KAAK,CAAC,SAAU,YAAY,CAAC,EAAE,SAAS,EAChD,UAAW,IAAE,KAAK,CAAC,MAAO,SAAS,CAAC,EAAE,SAAS,CACjD,CAAC,EAEYD,EAAmB,IAAE,OAAO,CACvC,KAAM,IAAE,MAAMQ,CAA+B,EAC7C,SAAU,IAAE,MAAMP,CAAmC,EAAE,OAAO,EAAG,oCAAoC,EACrG,QAAS,IAAE,MAAMM,CAAkB,EAAE,IAAI,CAAC,EAAE,SAAS,EACrD,YAAa,IAAE,QAAQ,EAAE,QAAQ,EAAK,CACxC,CAAC,EAEKE,EAAmB,IAAE,OAAO,CAChC,GAAGH,EAAgB,MACnB,WAAY,IAAE,QAAQ,EAAE,QAAQ,EAAI,EACpC,cAAe,IAAE,QAAQ,EAAE,SAAS,CACtC,CAAC,EAEYJ,EAA+B,IAAE,OAAO,CACnD,GAAI,IAAE,OAAO,EACb,KAAM,IAAE,KAAK,CACX,OACA,WACA,MACA,iBACA,OACA,YACA,kBACA,oBACA,iBACF,CAAC,EACD,QAAS,IAAE,OAAO,EAAE,SAAS,EAC7B,YAAa,IAAE,OAAO,EAAE,SAAS,EACjC,QAAS,IAAE,OAAOO,EAAiB,KAAK,EACxC,QAAS,IAAE,OAAOT,EAAiB,KAAK,CAC1C,CAAC,EAEKU,EAAgC,CACpC,6BAAAR,EACA,oCAAAD,EACA,gCAAAO,CACF,EAEA,IAAOL,EAAQO",
6
6
  "names": ["Validate_exports", "__export", "BucketOptionsSchema", "DashboardColumns", "DashboardVisualisationMeasureSchema", "DashboardVisualisationSchema", "Validate_default", "__toCommonJS", "import_zod", "dashboardBucket", "dashboardVisFilter", "DashboardVisualisationKeySchema", "dashboardOptions", "DashboardVisualisationSchemas"]
7
7
  }
@@ -14,7 +14,7 @@ export const BucketOptionsSchema = z.object({
14
14
 
15
15
  const dashboardVisFilter = z.object({
16
16
  id: z.string(),
17
- equals: z.string(),
17
+ equals: z.string().nullable(),
18
18
  })
19
19
 
20
20
  const DashboardVisualisationKeySchema = z.object({
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ministryofjustice/hmpps-digital-prison-reporting-frontend",
3
3
  "description": "The Digital Prison Reporting Frontend contains templates and code to help display data effectively in UI applications.",
4
- "version": "4.22.4",
4
+ "version": "4.23.0",
5
5
  "main": "dpr/all.mjs",
6
6
  "sass": "dpr/all.scss",
7
7
  "engines": {
@@ -38,8 +38,6 @@
38
38
  "scripts": {
39
39
  "package": "node esbuild/esbuild.config.js --build",
40
40
  "bundle-modules": "node ./scripts/bundle-modules.mjs",
41
- "ci:release": "HUSKY=0 CI=true semantic-release --debug",
42
- "ci:dryrun": "HUSKY=0 CI=true semantic-release --dry-run",
43
41
  "docs:serve-prod": "serve -l 3000 dist-docs/dpr",
44
42
  "docs": "node esbuild/esbuild.docs.config.js --build",
45
43
  "docs:serve": "serve dist-docs/dpr",
@@ -174,8 +172,6 @@
174
172
  "@bahmutov/cypress-esbuild-preprocessor": "^2.2.5",
175
173
  "@jest/globals": "^30.2.0",
176
174
  "@ministryofjustice/hmpps-npm-script-allowlist": "0.0.3",
177
- "@semantic-release/git": "^10.0.1",
178
- "@semantic-release/npm": "^11.0.0",
179
175
  "@testing-library/cypress": "^10.0.3",
180
176
  "@types/bunyan": "^1.8.8",
181
177
  "@types/bunyan-format": "^0.2.5",
@@ -236,7 +232,6 @@
236
232
  "prettier-plugin-jinja-template": "^0.5.0",
237
233
  "require-dir": "^1.2.0",
238
234
  "sass": "^1.66.1",
239
- "semantic-release": "^22.0.5",
240
235
  "serve": "^14.2.4",
241
236
  "superagent": "^10.2.3",
242
237
  "ts-jest": "^29.1.1",