@ministryofjustice/hmpps-digital-prison-reporting-frontend 4.29.0 → 4.29.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.
@@ -77,8 +77,9 @@ class TimeseriesChart {
77
77
  this.hexColours = new import_ChartColours.ChartColours().getHexPallette();
78
78
  for (let index = 0; index < this.datasetCount; index += 1) {
79
79
  const data = this.timeBlockData.map((timeperiod) => {
80
- const { raw } = timeperiod[index][this.measures[1].id];
81
- return raw ? Number(raw) : 0;
80
+ const valueId = this.measures[1].id;
81
+ const period = timeperiod[index];
82
+ return period && period[valueId].raw ? Number(period[valueId].raw) : 0;
82
83
  });
83
84
  const total = data.reduce((a, c) => a + c, 0);
84
85
  const rawValue = this.labelId ? this.timeBlockData[0][index][this.labelId].raw : "";
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../dpr/components/_charts/chart/ChartTimeseries.ts"],
4
- "sourcesContent": ["import { components } from '../../../types/api'\nimport { DashboardDataResponse } from '../../../types/Metrics'\nimport {\n DashboardVisualisationDataSet,\n TimeseriesChartMeasure,\n VisualisationDefinitionKey,\n} from '../../_dashboards/dashboard-visualisation/types'\nimport DatasetHelper from '../../../utils/datasetHelper'\nimport { BarTimeseriesDefinitionMeasure, BarTimeseriesDefinitionType } from './bar-timeseries/types'\nimport { LineTimeseriesDefinitionMeasure, LineTimeseriesDefinitionType } from './line-timeseries/types'\nimport { ChartColours } from './ChartColours'\nimport ChartConfig from './chart-config'\nimport { PartialDate } from '../../_filters/types'\n\nclass TimeseriesChart {\n labels: string[] = []\n\n labelId: string | undefined = undefined\n\n datasets: DashboardVisualisationDataSet[] = []\n\n unit: 'NUMBER' | 'PERCENTAGE' | undefined\n\n responseData: DashboardDataResponse[] = []\n\n measures: TimeseriesChartMeasure = []\n\n keys: VisualisationDefinitionKey[] = []\n\n timeBlockData: DashboardDataResponse[][] = []\n\n groupKey: LineTimeseriesDefinitionMeasure | BarTimeseriesDefinitionMeasure | undefined\n\n datasetCount = 0\n\n hexColours: string[] = []\n\n config = ChartConfig\n\n partialDate: PartialDate | undefined\n\n withData = (responseData: DashboardDataResponse[]) => {\n this.responseData = responseData\n this.initFromData()\n return this\n }\n\n initFromDefinition = (definition: BarTimeseriesDefinitionType | LineTimeseriesDefinitionType) => {\n this.measures = definition.columns.measures\n this.keys = definition.columns.keys || []\n this.unit = this.measures.find((m) => m.unit)?.unit\n }\n\n withPartialDate = (partialDate?: PartialDate) => {\n this.partialDate = partialDate\n return this\n }\n\n initFromData = () => {\n this.groupKey = DatasetHelper.getGroupKey(\n this.responseData,\n <Array<components['schemas']['DashboardVisualisationColumnDefinition']>>this.keys,\n )\n this.labelId = this.groupKey?.id || ''\n this.timeBlockData = DatasetHelper.groupRowsByTimestamp(this.responseData)\n this.labels = this.getLabels()\n this.datasetCount = this.timeBlockData[0]?.length\n }\n\n buildDatasets = () => {\n this.hexColours = new ChartColours().getHexPallette()\n for (let index = 0; index < this.datasetCount; index += 1) {\n const data = this.timeBlockData.map((timeperiod) => {\n const { raw } = timeperiod[index][this.measures[1].id]\n return raw ? Number(raw) : 0\n })\n const total = data.reduce((a, c) => a + c, 0)\n const rawValue = this.labelId ? this.timeBlockData[0][index][this.labelId].raw : ''\n const label = rawValue ? <string>rawValue : ''\n\n this.datasets.push({\n data,\n label,\n total,\n })\n }\n }\n\n private getLabels = () => {\n return this.timeBlockData.map((d: DashboardDataResponse[]) => <string>d[0]['ts'].raw)\n }\n}\n\nexport { TimeseriesChart }\nexport default TimeseriesChart\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,2BAA0B;AAG1B,0BAA6B;AAC7B,0BAAwB;AAGxB,MAAM,gBAAgB;AAAA,EACpB,SAAmB,CAAC;AAAA,EAEpB,UAA8B;AAAA,EAE9B,WAA4C,CAAC;AAAA,EAE7C;AAAA,EAEA,eAAwC,CAAC;AAAA,EAEzC,WAAmC,CAAC;AAAA,EAEpC,OAAqC,CAAC;AAAA,EAEtC,gBAA2C,CAAC;AAAA,EAE5C;AAAA,EAEA,eAAe;AAAA,EAEf,aAAuB,CAAC;AAAA,EAExB,SAAS,oBAAAA;AAAA,EAET;AAAA,EAEA,WAAW,CAAC,iBAA0C;AACpD,SAAK,eAAe;AACpB,SAAK,aAAa;AAClB,WAAO;AAAA,EACT;AAAA,EAEA,qBAAqB,CAAC,eAA2E;AAC/F,SAAK,WAAW,WAAW,QAAQ;AACnC,SAAK,OAAO,WAAW,QAAQ,QAAQ,CAAC;AACxC,SAAK,OAAO,KAAK,SAAS,KAAK,CAAC,MAAM,EAAE,IAAI,GAAG;AAAA,EACjD;AAAA,EAEA,kBAAkB,CAAC,gBAA8B;AAC/C,SAAK,cAAc;AACnB,WAAO;AAAA,EACT;AAAA,EAEA,eAAe,MAAM;AACnB,SAAK,WAAW,qBAAAC,QAAc;AAAA,MAC5B,KAAK;AAAA,MACmE,KAAK;AAAA,IAC/E;AACA,SAAK,UAAU,KAAK,UAAU,MAAM;AACpC,SAAK,gBAAgB,qBAAAA,QAAc,qBAAqB,KAAK,YAAY;AACzE,SAAK,SAAS,KAAK,UAAU;AAC7B,SAAK,eAAe,KAAK,cAAc,CAAC,GAAG;AAAA,EAC7C;AAAA,EAEA,gBAAgB,MAAM;AACpB,SAAK,aAAa,IAAI,iCAAa,EAAE,eAAe;AACpD,aAAS,QAAQ,GAAG,QAAQ,KAAK,cAAc,SAAS,GAAG;AACzD,YAAM,OAAO,KAAK,cAAc,IAAI,CAAC,eAAe;AAClD,cAAM,EAAE,IAAI,IAAI,WAAW,KAAK,EAAE,KAAK,SAAS,CAAC,EAAE,EAAE;AACrD,eAAO,MAAM,OAAO,GAAG,IAAI;AAAA,MAC7B,CAAC;AACD,YAAM,QAAQ,KAAK,OAAO,CAAC,GAAG,MAAM,IAAI,GAAG,CAAC;AAC5C,YAAM,WAAW,KAAK,UAAU,KAAK,cAAc,CAAC,EAAE,KAAK,EAAE,KAAK,OAAO,EAAE,MAAM;AACjF,YAAM,QAAQ,WAAmB,WAAW;AAE5C,WAAK,SAAS,KAAK;AAAA,QACjB;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEQ,YAAY,MAAM;AACxB,WAAO,KAAK,cAAc,IAAI,CAAC,MAAuC,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG;AAAA,EACtF;AACF;AAGA,IAAO,0BAAQ;",
4
+ "sourcesContent": ["import { components } from '../../../types/api'\nimport { DashboardDataResponse } from '../../../types/Metrics'\nimport {\n DashboardVisualisationDataSet,\n TimeseriesChartMeasure,\n VisualisationDefinitionKey,\n} from '../../_dashboards/dashboard-visualisation/types'\nimport DatasetHelper from '../../../utils/datasetHelper'\nimport { BarTimeseriesDefinitionMeasure, BarTimeseriesDefinitionType } from './bar-timeseries/types'\nimport { LineTimeseriesDefinitionMeasure, LineTimeseriesDefinitionType } from './line-timeseries/types'\nimport { ChartColours } from './ChartColours'\nimport ChartConfig from './chart-config'\nimport { PartialDate } from '../../_filters/types'\n\nclass TimeseriesChart {\n labels: string[] = []\n\n labelId: string | undefined = undefined\n\n datasets: DashboardVisualisationDataSet[] = []\n\n unit: 'NUMBER' | 'PERCENTAGE' | undefined\n\n responseData: DashboardDataResponse[] = []\n\n measures: TimeseriesChartMeasure = []\n\n keys: VisualisationDefinitionKey[] = []\n\n timeBlockData: DashboardDataResponse[][] = []\n\n groupKey: LineTimeseriesDefinitionMeasure | BarTimeseriesDefinitionMeasure | undefined\n\n datasetCount = 0\n\n hexColours: string[] = []\n\n config = ChartConfig\n\n partialDate: PartialDate | undefined\n\n withData = (responseData: DashboardDataResponse[]) => {\n this.responseData = responseData\n this.initFromData()\n return this\n }\n\n initFromDefinition = (definition: BarTimeseriesDefinitionType | LineTimeseriesDefinitionType) => {\n this.measures = definition.columns.measures\n this.keys = definition.columns.keys || []\n this.unit = this.measures.find((m) => m.unit)?.unit\n }\n\n withPartialDate = (partialDate?: PartialDate) => {\n this.partialDate = partialDate\n return this\n }\n\n initFromData = () => {\n this.groupKey = DatasetHelper.getGroupKey(\n this.responseData,\n <Array<components['schemas']['DashboardVisualisationColumnDefinition']>>this.keys,\n )\n this.labelId = this.groupKey?.id || ''\n this.timeBlockData = DatasetHelper.groupRowsByTimestamp(this.responseData)\n this.labels = this.getLabels()\n this.datasetCount = this.timeBlockData[0]?.length\n }\n\n buildDatasets = () => {\n this.hexColours = new ChartColours().getHexPallette()\n\n for (let index = 0; index < this.datasetCount; index += 1) {\n const data = this.timeBlockData.map((timeperiod) => {\n const valueId = this.measures[1].id\n const period = timeperiod[index]\n return period && period[valueId].raw ? Number(period[valueId].raw) : 0\n })\n const total = data.reduce((a, c) => a + c, 0)\n const rawValue = this.labelId ? this.timeBlockData[0][index][this.labelId].raw : ''\n const label = rawValue ? <string>rawValue : ''\n\n this.datasets.push({\n data,\n label,\n total,\n })\n }\n }\n\n private getLabels = () => {\n return this.timeBlockData.map((d: DashboardDataResponse[]) => <string>d[0]['ts'].raw)\n }\n}\n\nexport { TimeseriesChart }\nexport default TimeseriesChart\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,2BAA0B;AAG1B,0BAA6B;AAC7B,0BAAwB;AAGxB,MAAM,gBAAgB;AAAA,EACpB,SAAmB,CAAC;AAAA,EAEpB,UAA8B;AAAA,EAE9B,WAA4C,CAAC;AAAA,EAE7C;AAAA,EAEA,eAAwC,CAAC;AAAA,EAEzC,WAAmC,CAAC;AAAA,EAEpC,OAAqC,CAAC;AAAA,EAEtC,gBAA2C,CAAC;AAAA,EAE5C;AAAA,EAEA,eAAe;AAAA,EAEf,aAAuB,CAAC;AAAA,EAExB,SAAS,oBAAAA;AAAA,EAET;AAAA,EAEA,WAAW,CAAC,iBAA0C;AACpD,SAAK,eAAe;AACpB,SAAK,aAAa;AAClB,WAAO;AAAA,EACT;AAAA,EAEA,qBAAqB,CAAC,eAA2E;AAC/F,SAAK,WAAW,WAAW,QAAQ;AACnC,SAAK,OAAO,WAAW,QAAQ,QAAQ,CAAC;AACxC,SAAK,OAAO,KAAK,SAAS,KAAK,CAAC,MAAM,EAAE,IAAI,GAAG;AAAA,EACjD;AAAA,EAEA,kBAAkB,CAAC,gBAA8B;AAC/C,SAAK,cAAc;AACnB,WAAO;AAAA,EACT;AAAA,EAEA,eAAe,MAAM;AACnB,SAAK,WAAW,qBAAAC,QAAc;AAAA,MAC5B,KAAK;AAAA,MACmE,KAAK;AAAA,IAC/E;AACA,SAAK,UAAU,KAAK,UAAU,MAAM;AACpC,SAAK,gBAAgB,qBAAAA,QAAc,qBAAqB,KAAK,YAAY;AACzE,SAAK,SAAS,KAAK,UAAU;AAC7B,SAAK,eAAe,KAAK,cAAc,CAAC,GAAG;AAAA,EAC7C;AAAA,EAEA,gBAAgB,MAAM;AACpB,SAAK,aAAa,IAAI,iCAAa,EAAE,eAAe;AAEpD,aAAS,QAAQ,GAAG,QAAQ,KAAK,cAAc,SAAS,GAAG;AACzD,YAAM,OAAO,KAAK,cAAc,IAAI,CAAC,eAAe;AAClD,cAAM,UAAU,KAAK,SAAS,CAAC,EAAE;AACjC,cAAM,SAAS,WAAW,KAAK;AAC/B,eAAO,UAAU,OAAO,OAAO,EAAE,MAAM,OAAO,OAAO,OAAO,EAAE,GAAG,IAAI;AAAA,MACvE,CAAC;AACD,YAAM,QAAQ,KAAK,OAAO,CAAC,GAAG,MAAM,IAAI,GAAG,CAAC;AAC5C,YAAM,WAAW,KAAK,UAAU,KAAK,cAAc,CAAC,EAAE,KAAK,EAAE,KAAK,OAAO,EAAE,MAAM;AACjF,YAAM,QAAQ,WAAmB,WAAW;AAE5C,WAAK,SAAS,KAAK;AAAA,QACjB;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEQ,YAAY,MAAM;AACxB,WAAO,KAAK,cAAc,IAAI,CAAC,MAAuC,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG;AAAA,EACtF;AACF;AAGA,IAAO,0BAAQ;",
6
6
  "names": ["ChartConfig", "DatasetHelper"]
7
7
  }
@@ -69,10 +69,12 @@ class TimeseriesChart {
69
69
 
70
70
  buildDatasets = () => {
71
71
  this.hexColours = new ChartColours().getHexPallette()
72
+
72
73
  for (let index = 0; index < this.datasetCount; index += 1) {
73
74
  const data = this.timeBlockData.map((timeperiod) => {
74
- const { raw } = timeperiod[index][this.measures[1].id]
75
- return raw ? Number(raw) : 0
75
+ const valueId = this.measures[1].id
76
+ const period = timeperiod[index]
77
+ return period && period[valueId].raw ? Number(period[valueId].raw) : 0
76
78
  })
77
79
  const total = data.reduce((a, c) => a + c, 0)
78
80
  const rawValue = this.labelId ? this.timeBlockData[0][index][this.labelId].raw : ''
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.29.0",
4
+ "version": "4.29.1",
5
5
  "main": "dpr/all",
6
6
  "sass": "dpr/all.scss",
7
7
  "engines": {