@ministryofjustice/hmpps-digital-prison-reporting-frontend 4.20.1 → 4.21.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.
Files changed (166) hide show
  1. package/dpr/components/_async/async-filters-form/types.d.js +1 -1
  2. package/dpr/components/_async/async-filters-form/types.d.js.map +1 -1
  3. package/dpr/components/_async/async-filters-form/types.d.ts +7 -4
  4. package/dpr/components/_async/async-filters-form/utils.js +1 -1
  5. package/dpr/components/_async/async-filters-form/utils.js.map +2 -2
  6. package/dpr/components/_async/async-filters-form/utils.ts +18 -17
  7. package/dpr/components/_catalogue/catalogue-list/utils.test.ts +1 -1
  8. package/dpr/components/_charts/chart/Chart.js +2 -0
  9. package/dpr/components/_charts/chart/Chart.js.map +7 -0
  10. package/dpr/components/_charts/chart/Chart.ts +89 -0
  11. package/dpr/components/_charts/chart/ChartColours.js +2 -0
  12. package/dpr/components/_charts/chart/ChartColours.js.map +7 -0
  13. package/dpr/components/_charts/chart/ChartColours.ts +36 -0
  14. package/dpr/components/_charts/chart/ChartTimeseries.js +2 -0
  15. package/dpr/components/_charts/chart/ChartTimeseries.js.map +7 -0
  16. package/dpr/components/_charts/chart/ChartTimeseries.ts +95 -0
  17. package/dpr/components/_charts/chart/bar/BarChart.js +2 -0
  18. package/dpr/components/_charts/chart/bar/BarChart.js.map +7 -0
  19. package/dpr/components/_charts/chart/bar/BarChart.ts +204 -0
  20. package/dpr/components/_charts/chart/bar/clientClass.mjs +0 -58
  21. package/dpr/components/_charts/chart/bar/types.js +2 -0
  22. package/dpr/components/_charts/chart/bar/types.js.map +7 -0
  23. package/dpr/components/_charts/chart/bar/types.ts +6 -0
  24. package/dpr/components/_charts/chart/bar/validate.js +2 -0
  25. package/dpr/components/_charts/chart/bar/validate.js.map +7 -0
  26. package/dpr/components/_charts/chart/bar/validate.ts +59 -0
  27. package/dpr/components/_charts/chart/bar-timeseries/BarTimeseriesChart.js +2 -0
  28. package/dpr/components/_charts/chart/bar-timeseries/BarTimeseriesChart.js.map +7 -0
  29. package/dpr/components/_charts/chart/bar-timeseries/BarTimeseriesChart.ts +57 -0
  30. package/dpr/components/_charts/chart/bar-timeseries/types.js +2 -0
  31. package/dpr/components/_charts/chart/bar-timeseries/types.js.map +7 -0
  32. package/dpr/components/_charts/chart/bar-timeseries/types.ts +5 -0
  33. package/dpr/components/_charts/chart/bar-timeseries/validate.js +2 -0
  34. package/dpr/components/_charts/chart/bar-timeseries/validate.js.map +7 -0
  35. package/dpr/components/_charts/chart/bar-timeseries/validate.ts +30 -0
  36. package/dpr/components/_charts/chart/buckets/Buckets.js +2 -0
  37. package/dpr/components/_charts/chart/buckets/Buckets.js.map +7 -0
  38. package/dpr/components/_charts/chart/{Buckets.ts → buckets/Buckets.ts} +18 -14
  39. package/dpr/components/_charts/chart/buckets/types.js +2 -0
  40. package/dpr/components/_charts/chart/buckets/types.js.map +7 -0
  41. package/dpr/components/_charts/chart/buckets/types.ts +4 -0
  42. package/dpr/components/_charts/chart/buckets/validate.js +2 -0
  43. package/dpr/components/_charts/chart/buckets/validate.js.map +7 -0
  44. package/dpr/components/_charts/chart/buckets/validate.ts +15 -0
  45. package/dpr/components/_charts/chart/chart-config.js +2 -0
  46. package/dpr/components/_charts/chart/chart-config.js.map +7 -0
  47. package/dpr/components/_charts/chart/chart-config.ts +108 -0
  48. package/dpr/components/_charts/chart/clientClass.mjs +28 -106
  49. package/dpr/components/_charts/chart/doughnut/DoughnutChart.js +2 -0
  50. package/dpr/components/_charts/chart/doughnut/DoughnutChart.js.map +7 -0
  51. package/dpr/components/_charts/chart/doughnut/DoughnutChart.ts +77 -0
  52. package/dpr/components/_charts/chart/doughnut/clientClass.mjs +0 -45
  53. package/dpr/components/_charts/chart/doughnut/types.js +2 -0
  54. package/dpr/components/_charts/chart/doughnut/types.js.map +7 -0
  55. package/dpr/components/_charts/chart/doughnut/types.ts +5 -0
  56. package/dpr/components/_charts/chart/doughnut/validate.js +2 -0
  57. package/dpr/components/_charts/chart/doughnut/validate.js.map +7 -0
  58. package/dpr/components/_charts/chart/doughnut/validate.ts +30 -0
  59. package/dpr/components/_charts/chart/heatmap/HeatmapChart.js +1 -1
  60. package/dpr/components/_charts/chart/heatmap/HeatmapChart.js.map +3 -3
  61. package/dpr/components/_charts/chart/heatmap/HeatmapChart.ts +122 -44
  62. package/dpr/components/_charts/chart/heatmap/clientClass.mjs +7 -89
  63. package/dpr/components/_charts/chart/heatmap/types.js +1 -1
  64. package/dpr/components/_charts/chart/heatmap/types.js.map +1 -1
  65. package/dpr/components/_charts/chart/heatmap/types.ts +5 -0
  66. package/dpr/components/_charts/chart/heatmap/validate.js +2 -0
  67. package/dpr/components/_charts/chart/heatmap/validate.js.map +7 -0
  68. package/dpr/components/_charts/chart/heatmap/validate.ts +25 -0
  69. package/dpr/components/_charts/chart/line/LineChart.js +2 -0
  70. package/dpr/components/_charts/chart/line/LineChart.js.map +7 -0
  71. package/dpr/components/_charts/chart/line/LineChart.ts +89 -0
  72. package/dpr/components/_charts/chart/line/clientClass.mjs +5 -36
  73. package/dpr/components/_charts/chart/line/types.js +2 -0
  74. package/dpr/components/_charts/chart/line/types.js.map +7 -0
  75. package/dpr/components/_charts/chart/line/types.ts +5 -0
  76. package/dpr/components/_charts/chart/line/validate.js +2 -0
  77. package/dpr/components/_charts/chart/line/validate.js.map +7 -0
  78. package/dpr/components/_charts/chart/line/validate.ts +30 -0
  79. package/dpr/components/_charts/chart/line-timeseries/LineTimeseriesChart.js +2 -0
  80. package/dpr/components/_charts/chart/line-timeseries/LineTimeseriesChart.js.map +7 -0
  81. package/dpr/components/_charts/chart/line-timeseries/LineTimeseriesChart.ts +57 -0
  82. package/dpr/components/_charts/chart/line-timeseries/types.js +2 -0
  83. package/dpr/components/_charts/chart/line-timeseries/types.js.map +7 -0
  84. package/dpr/components/_charts/chart/line-timeseries/types.ts +5 -0
  85. package/dpr/components/_charts/chart/line-timeseries/validate.js +2 -0
  86. package/dpr/components/_charts/chart/line-timeseries/validate.js.map +7 -0
  87. package/dpr/components/_charts/chart/line-timeseries/validate.ts +30 -0
  88. package/dpr/components/_charts/chart/view.njk +8 -1
  89. package/dpr/components/_charts/chart-tabs/view.njk +15 -14
  90. package/dpr/components/_charts/utils.js +1 -1
  91. package/dpr/components/_charts/utils.js.map +3 -3
  92. package/dpr/components/_charts/utils.test.ts +9 -3
  93. package/dpr/components/_charts/utils.ts +59 -193
  94. package/dpr/components/_dashboards/dashboard-list/types.js +2 -0
  95. package/dpr/components/_dashboards/dashboard-list/types.js.map +7 -0
  96. package/dpr/components/_dashboards/dashboard-list/types.ts +4 -0
  97. package/dpr/components/_dashboards/dashboard-list/validate.js +2 -0
  98. package/dpr/components/_dashboards/dashboard-list/validate.js.map +7 -0
  99. package/dpr/components/_dashboards/dashboard-list/validate.ts +28 -0
  100. package/dpr/components/_dashboards/dashboard-visualisation/Validate.js +2 -0
  101. package/dpr/components/_dashboards/dashboard-visualisation/Validate.js.map +7 -0
  102. package/dpr/components/_dashboards/dashboard-visualisation/Validate.ts +71 -0
  103. package/dpr/components/_dashboards/dashboard-visualisation/types.js +1 -1
  104. package/dpr/components/_dashboards/dashboard-visualisation/types.js.map +2 -2
  105. package/dpr/components/_dashboards/dashboard-visualisation/types.ts +32 -2
  106. package/dpr/components/_dashboards/scorecard/Scorecard.js +1 -1
  107. package/dpr/components/_dashboards/scorecard/Scorecard.js.map +3 -3
  108. package/dpr/components/_dashboards/scorecard/Scorecard.ts +82 -213
  109. package/dpr/components/_dashboards/scorecard/types.js +1 -1
  110. package/dpr/components/_dashboards/scorecard/types.js.map +1 -1
  111. package/dpr/components/_dashboards/scorecard/types.ts +11 -1
  112. package/dpr/components/_dashboards/scorecard/validate.js +2 -0
  113. package/dpr/components/_dashboards/scorecard/validate.js.map +7 -0
  114. package/dpr/components/_dashboards/scorecard/validate.ts +36 -0
  115. package/dpr/components/_dashboards/scorecard-group/ScorecardGroup.js +2 -0
  116. package/dpr/components/_dashboards/scorecard-group/ScorecardGroup.js.map +7 -0
  117. package/dpr/components/_dashboards/scorecard-group/ScorecardGroup.ts +228 -0
  118. package/dpr/components/_dashboards/scorecard-group/types.js +2 -0
  119. package/dpr/components/_dashboards/scorecard-group/types.js.map +7 -0
  120. package/dpr/components/_dashboards/scorecard-group/types.ts +5 -0
  121. package/dpr/components/_dashboards/scorecard-group/validate.js +2 -0
  122. package/dpr/components/_dashboards/scorecard-group/validate.js.map +7 -0
  123. package/dpr/components/_dashboards/scorecard-group/validate.ts +37 -0
  124. package/dpr/components/_filters/filter-input/types.d.js.map +1 -1
  125. package/dpr/components/_filters/filter-input/types.d.ts +1 -1
  126. package/dpr/components/_filters/types.d.js.map +1 -1
  127. package/dpr/components/_filters/types.d.ts +6 -4
  128. package/dpr/components/_reports/report-actions/types.d.js.map +1 -1
  129. package/dpr/components/_reports/report-actions/types.d.ts +1 -1
  130. package/dpr/components/report-list/types.d.js.map +1 -1
  131. package/dpr/components/report-list/types.d.ts +1 -1
  132. package/dpr/data/types.d.js +1 -1
  133. package/dpr/data/types.d.js.map +1 -1
  134. package/dpr/data/types.d.ts +2 -1
  135. package/dpr/routes/journeys/view-report/async/dashboard/utils.js +1 -1
  136. package/dpr/routes/journeys/view-report/async/dashboard/utils.js.map +3 -3
  137. package/dpr/routes/journeys/view-report/async/dashboard/utils.ts +22 -10
  138. package/dpr/routes/journeys/view-report/async/report/utils.js +1 -1
  139. package/dpr/routes/journeys/view-report/async/report/utils.js.map +2 -2
  140. package/dpr/routes/journeys/view-report/async/report/utils.ts +1 -1
  141. package/dpr/routes/journeys/view-report/controller.js +1 -1
  142. package/dpr/routes/journeys/view-report/controller.js.map +3 -3
  143. package/dpr/routes/journeys/view-report/controller.ts +3 -1
  144. package/dpr/types/Services.d.js +1 -1
  145. package/dpr/types/Services.d.js.map +1 -1
  146. package/dpr/types/Services.d.ts +0 -2
  147. package/dpr/utils/DataTableBuilder/types.d.js +1 -1
  148. package/dpr/utils/DataTableBuilder/types.d.js.map +1 -1
  149. package/dpr/utils/DataTableBuilder/types.d.ts +2 -2
  150. package/dpr/utils/ErrorHandler.js +1 -1
  151. package/dpr/utils/ErrorHandler.js.map +3 -3
  152. package/dpr/utils/ErrorHandler.ts +16 -0
  153. package/dpr/utils/ParentChildDataTableBuilder/types.d.js +1 -1
  154. package/dpr/utils/ParentChildDataTableBuilder/types.d.js.map +1 -1
  155. package/dpr/utils/ParentChildDataTableBuilder/types.d.ts +1 -0
  156. package/dpr/utils/Personalisation/types.d.js +1 -1
  157. package/dpr/utils/Personalisation/types.d.js.map +1 -1
  158. package/dpr/utils/Personalisation/types.d.ts +1 -0
  159. package/dpr/utils/UserStoreItemBuilder.js.map +2 -2
  160. package/dpr/utils/UserStoreItemBuilder.ts +1 -1
  161. package/package.json +1 -1
  162. package/dpr/components/_charts/chart/Buckets.js +0 -2
  163. package/dpr/components/_charts/chart/Buckets.js.map +0 -7
  164. package/dpr/components/_dashboards/dashboard-visualisation/DashboardVisualisation.js +0 -2
  165. package/dpr/components/_dashboards/dashboard-visualisation/DashboardVisualisation.js.map +0 -7
  166. package/dpr/components/_dashboards/dashboard-visualisation/DashboardVisualisation.ts +0 -40
@@ -0,0 +1,5 @@
1
+ import z from 'zod'
2
+ import LineChartSchemas from './validate'
3
+
4
+ export type LineDefinitionType = z.infer<typeof LineChartSchemas.LineSchema>
5
+ export type LineDefinitionMeasure = z.infer<typeof LineChartSchemas.LineMeasureSchema>
@@ -0,0 +1,2 @@
1
+ "use strict";var i=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var u=(o,t)=>{for(var s in t)i(o,s,{get:t[s],enumerable:!0})},h=(o,t,s,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of m(t))!p.call(o,a)&&a!==s&&i(o,a,{get:()=>t[a],enumerable:!(r=c(t,a))||r.enumerable});return o};var b=o=>h(i({},"__esModule",{value:!0}),o);var E={};u(E,{default:()=>y});module.exports=b(E);var e=require("zod"),n=require("../../../_dashboards/dashboard-visualisation/Validate");const l=e.z.object({id:e.z.string(),display:e.z.string().optional(),unit:e.z.enum(["NUMBER","PERCENTAGE"]).optional()}),d=e.z.object({showLatest:e.z.boolean().default(!0)}),j=e.z.object({...n.DashboardVisualisationSchema.shape,display:e.z.string(),type:e.z.literal("line"),options:e.z.object(d.shape).optional(),columns:e.z.object({...n.DashboardColumns.shape,measures:e.z.array(l).min(1,"Measure must contain at least one item")})}),f={LineMeasureSchema:l,LineSchema:j};var y=f;
2
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/dpr/components/_charts/chart/line/validate.ts"],
4
+ "sourcesContent": ["import { z } from 'zod'\nimport { DashboardVisualisationSchema, DashboardColumns } from '../../../_dashboards/dashboard-visualisation/Validate'\n\nconst LineMeasureSchema = z.object({\n id: z.string(),\n display: z.string().optional(),\n unit: z.enum(['NUMBER', 'PERCENTAGE']).optional(),\n})\n\nconst lineOptions = z.object({\n showLatest: z.boolean().default(true),\n})\n\nconst LineSchema = z.object({\n ...DashboardVisualisationSchema.shape,\n display: z.string(),\n type: z.literal('line'),\n options: z.object(lineOptions.shape).optional(),\n columns: z.object({\n ...DashboardColumns.shape,\n measures: z.array(LineMeasureSchema).min(1, 'Measure must contain at least one item'),\n }),\n})\n\nconst LineChartSchemas = {\n LineMeasureSchema,\n LineSchema,\n}\n\nexport default LineChartSchemas\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAkB,eAClBC,EAA+D,iEAE/D,MAAMC,EAAoB,IAAE,OAAO,CACjC,GAAI,IAAE,OAAO,EACb,QAAS,IAAE,OAAO,EAAE,SAAS,EAC7B,KAAM,IAAE,KAAK,CAAC,SAAU,YAAY,CAAC,EAAE,SAAS,CAClD,CAAC,EAEKC,EAAc,IAAE,OAAO,CAC3B,WAAY,IAAE,QAAQ,EAAE,QAAQ,EAAI,CACtC,CAAC,EAEKC,EAAa,IAAE,OAAO,CAC1B,GAAG,+BAA6B,MAChC,QAAS,IAAE,OAAO,EAClB,KAAM,IAAE,QAAQ,MAAM,EACtB,QAAS,IAAE,OAAOD,EAAY,KAAK,EAAE,SAAS,EAC9C,QAAS,IAAE,OAAO,CAChB,GAAG,mBAAiB,MACpB,SAAU,IAAE,MAAMD,CAAiB,EAAE,IAAI,EAAG,wCAAwC,CACtF,CAAC,CACH,CAAC,EAEKG,EAAmB,CACvB,kBAAAH,EACA,WAAAE,CACF,EAEA,IAAON,EAAQO",
6
+ "names": ["validate_exports", "__export", "validate_default", "__toCommonJS", "import_zod", "import_Validate", "LineMeasureSchema", "lineOptions", "LineSchema", "LineChartSchemas"]
7
+ }
@@ -0,0 +1,30 @@
1
+ import { z } from 'zod'
2
+ import { DashboardVisualisationSchema, DashboardColumns } from '../../../_dashboards/dashboard-visualisation/Validate'
3
+
4
+ const LineMeasureSchema = z.object({
5
+ id: z.string(),
6
+ display: z.string().optional(),
7
+ unit: z.enum(['NUMBER', 'PERCENTAGE']).optional(),
8
+ })
9
+
10
+ const lineOptions = z.object({
11
+ showLatest: z.boolean().default(true),
12
+ })
13
+
14
+ const LineSchema = z.object({
15
+ ...DashboardVisualisationSchema.shape,
16
+ display: z.string(),
17
+ type: z.literal('line'),
18
+ options: z.object(lineOptions.shape).optional(),
19
+ columns: z.object({
20
+ ...DashboardColumns.shape,
21
+ measures: z.array(LineMeasureSchema).min(1, 'Measure must contain at least one item'),
22
+ }),
23
+ })
24
+
25
+ const LineChartSchemas = {
26
+ LineMeasureSchema,
27
+ LineSchema,
28
+ }
29
+
30
+ export default LineChartSchemas
@@ -0,0 +1,2 @@
1
+ "use strict";var u=Object.create;var r=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var D=Object.getOwnPropertyNames;var c=Object.getPrototypeOf,C=Object.prototype.hasOwnProperty;var b=(i,t)=>{for(var e in t)r(i,e,{get:t[e],enumerable:!0})},h=(i,t,e,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of D(t))!C.call(i,s)&&s!==e&&r(i,s,{get:()=>t[s],enumerable:!(a=f(t,s))||a.enumerable});return i};var o=(i,t,e)=>(e=i!=null?u(c(i)):{},h(t||!i||!i.__esModule?r(e,"default",{value:i,enumerable:!0}):e,i)),T=i=>h(r({},"__esModule",{value:!0}),i);var y={};b(y,{LineTimeseriesChart:()=>n,default:()=>L});module.exports=T(y);var m=require("../../../_dashboards/dashboard-visualisation/types"),l=o(require("./validate")),p=o(require("../ChartTimeseries")),d=o(require("../line/LineChart"));class n extends p.default{constructor(){super(...arguments);this.lineChartBuilder=new d.default;this.withDefinition=e=>(this.definition=l.default.LineTimeseriesSchema.parse(e),this.initFromDefinition(this.definition),this);this.build=()=>(this.buildDatasets(),this.datasets=this.lineChartBuilder.augmentDataset(this.datasets),this.setStyles(),this.config=this.lineChartBuilder.setBespokeOptions(),{type:m.DashboardVisualisationType.LINE,options:{unit:this.unit,timeseries:!0},data:{labels:this.labels,datasets:this.datasets,config:this.config,partialDate:this.partialDate}});this.setStyles=()=>{this.datasets=this.datasets.map((e,a)=>{const s=this.hexColours[a];return{...e,backgroundColor:s,borderColor:s}})}}}var L=n;0&&(module.exports={LineTimeseriesChart});
2
+ //# sourceMappingURL=LineTimeseriesChart.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/dpr/components/_charts/chart/line-timeseries/LineTimeseriesChart.ts"],
4
+ "sourcesContent": ["/* eslint-disable prefer-destructuring */\nimport {\n DashboardVisualisationType,\n DashboardVisualisationData,\n} from '../../../_dashboards/dashboard-visualisation/types'\nimport { components } from '../../../../types/api'\nimport { LineTimeseriesDefinitionType } from './types'\nimport LineTimeseriesChartSchemas from './validate'\nimport TimeseriesChart from '../ChartTimeseries'\nimport LineChart from '../line/LineChart'\n\nclass LineTimeseriesChart extends TimeseriesChart {\n private definition!: LineTimeseriesDefinitionType\n\n private lineChartBuilder: LineChart = new LineChart()\n\n withDefinition = (definition: components['schemas']['DashboardVisualisationDefinition']) => {\n this.definition = LineTimeseriesChartSchemas.LineTimeseriesSchema.parse(definition)\n this.initFromDefinition(this.definition)\n return this\n }\n\n build = (): DashboardVisualisationData => {\n this.buildDatasets()\n this.datasets = this.lineChartBuilder.augmentDataset(this.datasets)\n this.setStyles()\n this.config = this.lineChartBuilder.setBespokeOptions()\n\n return {\n type: DashboardVisualisationType.LINE,\n options: {\n unit: this.unit,\n timeseries: true,\n },\n data: {\n labels: this.labels,\n datasets: this.datasets,\n config: this.config,\n partialDate: this.partialDate,\n },\n }\n }\n\n private setStyles = () => {\n this.datasets = this.datasets.map((set, datasetIndex) => {\n const colour = this.hexColours[datasetIndex]\n return {\n ...set,\n backgroundColor: colour,\n borderColor: colour,\n }\n })\n }\n}\n\nexport { LineTimeseriesChart }\nexport default LineTimeseriesChart\n"],
5
+ "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,yBAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GACA,IAAAK,EAGO,8DAGPC,EAAuC,yBACvCC,EAA4B,iCAC5BC,EAAsB,gCAEtB,MAAMN,UAA4B,EAAAO,OAAgB,CAAlD,kCAGE,KAAQ,iBAA8B,IAAI,EAAAC,QAE1C,oBAAkBC,IAChB,KAAK,WAAa,EAAAC,QAA2B,qBAAqB,MAAMD,CAAU,EAClF,KAAK,mBAAmB,KAAK,UAAU,EAChC,MAGT,WAAQ,KACN,KAAK,cAAc,EACnB,KAAK,SAAW,KAAK,iBAAiB,eAAe,KAAK,QAAQ,EAClE,KAAK,UAAU,EACf,KAAK,OAAS,KAAK,iBAAiB,kBAAkB,EAE/C,CACL,KAAM,6BAA2B,KACjC,QAAS,CACP,KAAM,KAAK,KACX,WAAY,EACd,EACA,KAAM,CACJ,OAAQ,KAAK,OACb,SAAU,KAAK,SACf,OAAQ,KAAK,OACb,YAAa,KAAK,WACpB,CACF,GAGF,KAAQ,UAAY,IAAM,CACxB,KAAK,SAAW,KAAK,SAAS,IAAI,CAACE,EAAKC,IAAiB,CACvD,MAAMC,EAAS,KAAK,WAAWD,CAAY,EAC3C,MAAO,CACL,GAAGD,EACH,gBAAiBE,EACjB,YAAaA,CACf,CACF,CAAC,CACH,EACF,CAGA,IAAOZ,EAAQD",
6
+ "names": ["LineTimeseriesChart_exports", "__export", "LineTimeseriesChart", "LineTimeseriesChart_default", "__toCommonJS", "import_types", "import_validate", "import_ChartTimeseries", "import_LineChart", "TimeseriesChart", "LineChart", "definition", "LineTimeseriesChartSchemas", "set", "datasetIndex", "colour"]
7
+ }
@@ -0,0 +1,57 @@
1
+ /* eslint-disable prefer-destructuring */
2
+ import {
3
+ DashboardVisualisationType,
4
+ DashboardVisualisationData,
5
+ } from '../../../_dashboards/dashboard-visualisation/types'
6
+ import { components } from '../../../../types/api'
7
+ import { LineTimeseriesDefinitionType } from './types'
8
+ import LineTimeseriesChartSchemas from './validate'
9
+ import TimeseriesChart from '../ChartTimeseries'
10
+ import LineChart from '../line/LineChart'
11
+
12
+ class LineTimeseriesChart extends TimeseriesChart {
13
+ private definition!: LineTimeseriesDefinitionType
14
+
15
+ private lineChartBuilder: LineChart = new LineChart()
16
+
17
+ withDefinition = (definition: components['schemas']['DashboardVisualisationDefinition']) => {
18
+ this.definition = LineTimeseriesChartSchemas.LineTimeseriesSchema.parse(definition)
19
+ this.initFromDefinition(this.definition)
20
+ return this
21
+ }
22
+
23
+ build = (): DashboardVisualisationData => {
24
+ this.buildDatasets()
25
+ this.datasets = this.lineChartBuilder.augmentDataset(this.datasets)
26
+ this.setStyles()
27
+ this.config = this.lineChartBuilder.setBespokeOptions()
28
+
29
+ return {
30
+ type: DashboardVisualisationType.LINE,
31
+ options: {
32
+ unit: this.unit,
33
+ timeseries: true,
34
+ },
35
+ data: {
36
+ labels: this.labels,
37
+ datasets: this.datasets,
38
+ config: this.config,
39
+ partialDate: this.partialDate,
40
+ },
41
+ }
42
+ }
43
+
44
+ private setStyles = () => {
45
+ this.datasets = this.datasets.map((set, datasetIndex) => {
46
+ const colour = this.hexColours[datasetIndex]
47
+ return {
48
+ ...set,
49
+ backgroundColor: colour,
50
+ borderColor: colour,
51
+ }
52
+ })
53
+ }
54
+ }
55
+
56
+ export { LineTimeseriesChart }
57
+ export default LineTimeseriesChart
@@ -0,0 +1,2 @@
1
+ "use strict";var m=Object.defineProperty;var t=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var o=Object.prototype.hasOwnProperty;var p=(i,e,n,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of a(e))!o.call(i,r)&&r!==n&&m(i,r,{get:()=>e[r],enumerable:!(s=t(e,r))||s.enumerable});return i};var f=i=>p(m({},"__esModule",{value:!0}),i);var h={};module.exports=f(h);
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/dpr/components/_charts/chart/line-timeseries/types.ts"],
4
+ "sourcesContent": ["import z from 'zod'\nimport LineTimeseriesChartSchemas from './validate'\n\nexport type LineTimeseriesDefinitionType = z.infer<typeof LineTimeseriesChartSchemas.LineTimeseriesSchema>\nexport type LineTimeseriesDefinitionMeasure = z.infer<typeof LineTimeseriesChartSchemas.LineTimeseriesMeasureSchema>\n"],
5
+ "mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
6
+ "names": ["types_exports", "__toCommonJS"]
7
+ }
@@ -0,0 +1,5 @@
1
+ import z from 'zod'
2
+ import LineTimeseriesChartSchemas from './validate'
3
+
4
+ export type LineTimeseriesDefinitionType = z.infer<typeof LineTimeseriesChartSchemas.LineTimeseriesSchema>
5
+ export type LineTimeseriesDefinitionMeasure = z.infer<typeof LineTimeseriesChartSchemas.LineTimeseriesMeasureSchema>
@@ -0,0 +1,2 @@
1
+ "use strict";var n=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var h=(i,s)=>{for(var a in s)n(i,a,{get:s[a],enumerable:!0})},u=(i,s,a,r)=>{if(s&&typeof s=="object"||typeof s=="function")for(let t of c(s))!p.call(i,t)&&t!==a&&n(i,t,{get:()=>s[t],enumerable:!(r=l(s,t))||r.enumerable});return i};var b=i=>u(n({},"__esModule",{value:!0}),i);var f={};h(f,{default:()=>T});module.exports=b(f);var e=require("zod"),o=require("../../../_dashboards/dashboard-visualisation/Validate");const m=e.z.object({id:e.z.string(),display:e.z.string().optional(),unit:e.z.enum(["NUMBER","PERCENTAGE"]).optional()}),d=e.z.object({showLatest:e.z.literal(!1)}),j=e.z.object({...o.DashboardVisualisationSchema.shape,display:e.z.string(),type:e.z.literal("line-timeseries"),options:e.z.object(d.shape).optional(),columns:e.z.object({...o.DashboardColumns.shape,measures:e.z.array(m).min(1,"Measure must contain at least one item")})}),L={LineTimeseriesMeasureSchema:m,LineTimeseriesSchema:j};var T=L;
2
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/dpr/components/_charts/chart/line-timeseries/validate.ts"],
4
+ "sourcesContent": ["import { z } from 'zod'\nimport { DashboardVisualisationSchema, DashboardColumns } from '../../../_dashboards/dashboard-visualisation/Validate'\n\nconst LineTimeseriesMeasureSchema = z.object({\n id: z.string(),\n display: z.string().optional(),\n unit: z.enum(['NUMBER', 'PERCENTAGE']).optional(),\n})\n\nconst LineTimeseriesOptions = z.object({\n showLatest: z.literal(false),\n})\n\nconst LineTimeseriesSchema = z.object({\n ...DashboardVisualisationSchema.shape,\n display: z.string(),\n type: z.literal('line-timeseries'),\n options: z.object(LineTimeseriesOptions.shape).optional(),\n columns: z.object({\n ...DashboardColumns.shape,\n measures: z.array(LineTimeseriesMeasureSchema).min(1, 'Measure must contain at least one item'),\n }),\n})\n\nconst LineTimeseriesChartSchemas = {\n LineTimeseriesMeasureSchema,\n LineTimeseriesSchema,\n}\n\nexport default LineTimeseriesChartSchemas\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAkB,eAClBC,EAA+D,iEAE/D,MAAMC,EAA8B,IAAE,OAAO,CAC3C,GAAI,IAAE,OAAO,EACb,QAAS,IAAE,OAAO,EAAE,SAAS,EAC7B,KAAM,IAAE,KAAK,CAAC,SAAU,YAAY,CAAC,EAAE,SAAS,CAClD,CAAC,EAEKC,EAAwB,IAAE,OAAO,CACrC,WAAY,IAAE,QAAQ,EAAK,CAC7B,CAAC,EAEKC,EAAuB,IAAE,OAAO,CACpC,GAAG,+BAA6B,MAChC,QAAS,IAAE,OAAO,EAClB,KAAM,IAAE,QAAQ,iBAAiB,EACjC,QAAS,IAAE,OAAOD,EAAsB,KAAK,EAAE,SAAS,EACxD,QAAS,IAAE,OAAO,CAChB,GAAG,mBAAiB,MACpB,SAAU,IAAE,MAAMD,CAA2B,EAAE,IAAI,EAAG,wCAAwC,CAChG,CAAC,CACH,CAAC,EAEKG,EAA6B,CACjC,4BAAAH,EACA,qBAAAE,CACF,EAEA,IAAON,EAAQO",
6
+ "names": ["validate_exports", "__export", "validate_default", "__toCommonJS", "import_zod", "import_Validate", "LineTimeseriesMeasureSchema", "LineTimeseriesOptions", "LineTimeseriesSchema", "LineTimeseriesChartSchemas"]
7
+ }
@@ -0,0 +1,30 @@
1
+ import { z } from 'zod'
2
+ import { DashboardVisualisationSchema, DashboardColumns } from '../../../_dashboards/dashboard-visualisation/Validate'
3
+
4
+ const LineTimeseriesMeasureSchema = z.object({
5
+ id: z.string(),
6
+ display: z.string().optional(),
7
+ unit: z.enum(['NUMBER', 'PERCENTAGE']).optional(),
8
+ })
9
+
10
+ const LineTimeseriesOptions = z.object({
11
+ showLatest: z.literal(false),
12
+ })
13
+
14
+ const LineTimeseriesSchema = z.object({
15
+ ...DashboardVisualisationSchema.shape,
16
+ display: z.string(),
17
+ type: z.literal('line-timeseries'),
18
+ options: z.object(LineTimeseriesOptions.shape).optional(),
19
+ columns: z.object({
20
+ ...DashboardColumns.shape,
21
+ measures: z.array(LineTimeseriesMeasureSchema).min(1, 'Measure must contain at least one item'),
22
+ }),
23
+ })
24
+
25
+ const LineTimeseriesChartSchemas = {
26
+ LineTimeseriesMeasureSchema,
27
+ LineTimeseriesSchema,
28
+ }
29
+
30
+ export default LineTimeseriesChartSchemas
@@ -1,4 +1,8 @@
1
- {% macro dprChart(id, type, chartData, unit, timeseries) %}
1
+ {% macro dprChart(id, type, chartData, options) %}
2
+ {% set timeseries = options.timeseries %}
3
+ {% set unit = options.unit %}
4
+ {% set height = options.height %}
5
+
2
6
  <div id="{{ id }}-chart-wrapper"
3
7
  class="dpr-chart dpr-{{ type }}-chart"
4
8
  data-dpr-module="{{ type }}-chart"
@@ -6,6 +10,9 @@
6
10
  data-dpr-chart-type="{{ type }}"
7
11
  data-dpr-chart-unit="{{ unit }}"
8
12
  data-dpr-chart-timeseries="{{ timeseries }}"
13
+ {% if options.height %}
14
+ style="height: {{ height }}px"
15
+ {% endif %}
9
16
  >
10
17
  <div class="dpr-canvas-wrapper"><canvas id="{{ id }}" class="chart-canvas"></canvas></div>
11
18
  <div id="js-legend-{{ id }}" class="dpr-chart-legend"></div>
@@ -10,23 +10,24 @@
10
10
 
11
11
  {% set type = chartData.type %}
12
12
  {% set data = chartData.data %}
13
- {% set unit = chartData.unit %}
14
- {% set timeseries = chartData.timeseries %}
13
+
14
+ {# Options #}
15
+ {% set options = chartData.options %}
15
16
 
16
17
  {% if chartData %}
17
- {% set chartHtml %}
18
- {{ dprChart(id, type, data, unit, timeseries) }}
19
- {% endset -%}
20
-
21
- {% set tabContent = {
22
- label: type | capitalize,
23
- id: id + "_" + type + "_tab",
24
- panel: {
25
- html: chartHtml
26
- }
27
- } %}
18
+ {% set chartHtml %}
19
+ {{ dprChart(id, type, data, options) }}
20
+ {% endset -%}
21
+
22
+ {% set tabContent = {
23
+ label: type | capitalize,
24
+ id: id + "_" + type + "_tab",
25
+ panel: {
26
+ html: chartHtml
27
+ }
28
+ } %}
28
29
 
29
- {% set tabItems = (tabItems.push(tabContent), tabItems) %}
30
+ {% set tabItems = (tabItems.push(tabContent), tabItems) %}
30
31
  {% endif %}
31
32
 
32
33
  {% if tableData %}
@@ -1,2 +1,2 @@
1
- "use strict";var G=Object.create;var w=Object.defineProperty;var $=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var E=Object.getPrototypeOf,H=Object.prototype.hasOwnProperty;var Y=(a,s)=>{for(var t in s)w(a,t,{get:s[t],enumerable:!0})},k=(a,s,t,e)=>{if(s&&typeof s=="object"||typeof s=="function")for(let o of v(s))!H.call(a,o)&&o!==t&&w(a,o,{get:()=>s[o],enumerable:!(e=$(s,o))||e.enumerable});return a};var C=(a,s,t)=>(t=a!=null?G(E(a)):{},k(s||!a||!a.__esModule?w(t,"default",{value:a,enumerable:!0}):t,a)),j=a=>k(w({},"__esModule",{value:!0}),a);var _={};Y(_,{createChart:()=>K,createMatrixChart:()=>A,createTimeseriesCharts:()=>N,default:()=>Z});module.exports=j(_);var I=C(require("dayjs")),L=C(require("dayjs/plugin/weekOfYear")),p=C(require("../../utils/datasetHelper")),x=C(require("../_dashboards/dashboard-list/utils")),B=require("../_inputs/granular-date-range/types"),J=C(require("./chart/heatmap/HeatmapChart"));I.default.extend(L.default);const K=(a,s)=>{let t,e,o;const{dataSetRows:i,snapshotData:l}=O(a,s);return i.length&&(e=U(a,l),t=P(a,i),o=V(a,i)),{details:o,table:t,chart:e}},N=(a,s)=>{let t,e,o;const{latestData:i,dataSetRows:l,timeseriesData:d}=M(a,s);return l.length&&(e=Q(a,d),t=S(a,d),o=V(a,i,!0)),{details:o,table:t,chart:e}},A=(a,s,t)=>{let e,o,i,l=B.Granularity.DAILY;Object.keys(t).forEach(D=>{D.includes("granularity")&&(l=t[D])});const{latestData:d,dataSetRows:r,timeseriesData:n}=M(a,s);return r.length&&(o=new J.default(n,l,a).build(),e=S(a,n),i=V(a,d,!0)),{details:i,table:e,chart:o}},O=(a,s)=>{const t=p.default.getLastestDataset(s),e=p.default.getDatasetRows(a,t),o=p.default.filterRowsByDisplayColumns(a,e,!0);return{dataSetRows:e,snapshotData:o}},M=(a,s)=>{const t=p.default.getLastestDataset(s),e=p.default.getDatasetRows(a,s),o=p.default.filterRowsByDisplayColumns(a,e,!0);return{latestData:t,dataSetRows:e,timeseriesData:o}},V=(a,s,t=!1)=>{const e=[],o=W(a,s,t);return s[0]?.ts?.raw&&e.push({label:"Values for:",value:s[0]?.ts.raw}),{meta:e,headlines:o}},W=(a,s,t=!1)=>{const e=[],{columns:o}=a,{measures:i}=o,l=!!i.find(u=>u.axis);let d,r,n,D;if(t){if(r=i.find(u=>u.id!=="ts"),r){const{id:u}=r,{raw:c}=s[0][u];D=`${s[0].ts.raw}`,n=c?Number(c):void 0,n&&(d={label:D,value:n})}}else if(r=l?i.find(u=>u.axis&&u.axis==="y"):i[0],r){const u=r.display?.toLowerCase();D=u?`Total ${u}`:"Total",n=s.reduce((c,m)=>{if(r){const{id:h}=r,{raw:b}=m[h];if(b)return c+Number(b)}return c},0),d={label:D,value:n}}return d&&e.push(d),e},U=(a,s)=>{const{type:t,columns:e}=a,{measures:o}=e,i=!!o.find(n=>n.axis);let l,d,r;if(i)({labels:l,unit:d,datasets:r}=z(e,s));else{const n=X(e,s);l=n.labels,d=n.unit,r=n.datasets}return{type:t,unit:d,data:{labels:l,datasets:r}}},X=(a,s)=>{const{keys:t,measures:e}=a,o=e.map(r=>r.display||""),i=t?t[t.length-1]?.id:void 0,l=e[0].unit?e[0].unit:void 0,d=s.map(r=>{const n=i&&r[i]?`${r[i].raw}`:"All",D=e.map(c=>{const m=c.id;return r[m]&&r[m].raw?Number(r[m].raw):0}),u=D.reduce((c,m)=>c+m,0);return{label:n,data:D,total:u}});return{labels:o,unit:l,datasets:d}},z=(a,s)=>{const{measures:t,keys:e}=a,o=t.find(u=>u.axis==="x")||t[0],i=t.find(u=>u.axis==="y")||t[1];if(!o||!i)throw new Error("No X of Y Axis found in definition");const l=i?.unit||void 0,d=p.default.getGroupKey(s,e),r=d?p.default.groupRowsByKey(s,d.id):[s],n=r.flatMap(u=>u.map(c=>{const{id:m}=o,h=c[m];return h?`${h.raw}`:""})),D=r.map(u=>{const c=Array(n.length);u.forEach(h=>{const{id:b}=i,{id:R}=o,g=h[R],f=h[b],y=f&&f.raw?Number(f.raw):0,T=n.findIndex(F=>F===g.raw);T!==-1&&(c[T]=Number(y))});let m="";if(d){const h=d.id,b=u[0];m=b&&b[h]?`${b[h].raw}`:""}else m=i.display||m;return{label:m,data:c,total:c.reduce((h,b)=>h+b,0)}});return{labels:n,unit:l,datasets:D}},P=(a,s)=>{const{columns:t}=a,{measures:e}=t,l=[...t.keys||[],...e].map(n=>({text:n.display||""})),d=p.default.filterRowsByDisplayColumns(a,s,!0),r=x.default.createTableRows(d);return{head:l,rows:r}},Q=(a,s)=>{const{columns:t}=a,{keys:e,measures:o}=t,i=o[0].unit?o[0].unit:void 0,l=a.type.split("-")[0],r=p.default.getGroupKey(s,e)?.id,n=p.default.groupRowsByTimestamp(s),D=n.map(m=>m[0].ts.raw),u=n[0].length,c=[];for(let m=0;m<u;m+=1){const h=n.map(f=>{const{raw:y}=f[m][o[1].id];return y?Number(y):0}),b=h.reduce((f,y)=>f+y,0),R=n[0][m][r].raw,g=R||"";c.push({data:h,label:g,total:b})}return{type:l,unit:i,timeseries:!0,data:{labels:D,datasets:c}}},S=(a,s)=>{const{columns:t}=a,{keys:e,measures:o}=t;let i=s.flat(),l=[...o];if(s.length>1){const n=l.findIndex(c=>c.id==="ts"),D=l[n];l.splice(n,1),l=[...e?e.filter(c=>c.id!=="ts"):[],...l],l.unshift(D)}else i=p.default.filterRowsByDisplayColumns(a,i);const d=l.map(n=>({text:n.display})),r=x.default.createTableRows(i);return{head:d,rows:r}};var Z={createChart:K,createTimeseriesCharts:N,createMatrixChart:A};0&&(module.exports={createChart,createMatrixChart,createTimeseriesCharts});
1
+ "use strict";var N=Object.create;var p=Object.defineProperty;var A=Object.getOwnPropertyDescriptor;var G=Object.getOwnPropertyNames;var P=Object.getPrototypeOf,H=Object.prototype.hasOwnProperty;var O=(a,t)=>{for(var e in t)p(a,e,{get:t[e],enumerable:!0})},C=(a,t,e,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of G(t))!H.call(a,o)&&o!==e&&p(a,o,{get:()=>t[o],enumerable:!(s=A(t,o))||s.enumerable});return a};var u=(a,t,e)=>(e=a!=null?N(P(a)):{},C(t||!a||!a.__esModule?p(e,"default",{value:a,enumerable:!0}):e,a)),_=a=>C(p({},"__esModule",{value:!0}),a);var $={};O($,{createChart:()=>x,createTimeseriesCharts:()=>L,default:()=>Y});module.exports=_($);var y=u(require("dayjs")),T=u(require("dayjs/plugin/weekOfYear")),D=u(require("../../utils/datasetHelper")),b=u(require("../_dashboards/dashboard-list/utils")),V=require("../_inputs/granular-date-range/types"),g=u(require("./chart/heatmap/HeatmapChart")),k=u(require("./chart/bar/BarChart")),f=require("../_dashboards/dashboard-visualisation/types"),M=u(require("./chart/doughnut/DoughnutChart")),E=u(require("./chart/line/LineChart")),I=u(require("./chart/line-timeseries/LineTimeseriesChart")),S=u(require("./chart/bar-timeseries/BarTimeseriesChart"));y.default.extend(T.default);const x=(a,t,e)=>{let s,o,r;const{dataSetRows:i,snapshotData:l}=j(a,t);if(i.length){switch(e){case f.DashboardVisualisationType.BAR:o=new k.default().withDefinition(a).withData(l).build();break;case f.DashboardVisualisationType.DONUT:o=new M.default().withDefinition(a).withData(l).build();break;case f.DashboardVisualisationType.LINE:o=new E.default().withDefinition(a).withData(l).build();break;default:break}s=U(a,i),r=R(a,i)}return{details:r,table:s,chart:o}},L=(a,t,e,s,o)=>{let r,i,l,d=V.Granularity.DAILY;s&&Object.keys(s).forEach(h=>{h.includes("granularity")&&(d=s[h])});const{latestData:m,dataSetRows:c,timeseriesData:n}=v(a,t);if(c.length){switch(e){case f.DashboardVisualisationType.MATRIX_TIMESERIES:i=new g.default().withDefinition(a).withGranularity(d).withData(n).build();break;case f.DashboardVisualisationType.LINE_TIMESERIES:i=new I.default().withDefinition(a).withData(n).withPartialDate(o).build();break;case f.DashboardVisualisationType.BAR_TIMESERIES:i=new S.default().withDefinition(a).withData(n).withPartialDate(o).build();break;default:break}r=W(a,n),l=R(a,m,!0)}return{details:l,table:r,chart:i}},j=(a,t)=>{const e=D.default.getLastestDataset(t),s=D.default.getDatasetRows(a,e),o=D.default.filterRowsByDisplayColumns(a,s,!0);return{dataSetRows:s,snapshotData:o}},v=(a,t)=>{const e=D.default.getLastestDataset(t),s=D.default.getDatasetRows(a,t),o=D.default.filterRowsByDisplayColumns(a,s,!0);return{latestData:e,dataSetRows:s,timeseriesData:o}},R=(a,t,e=!1)=>{const s=[],o=F(a,t,e);return t[0]?.ts?.raw&&s.push({label:"Values for:",value:t[0]?.ts.raw}),{meta:s,headlines:o}},F=(a,t,e=!1)=>{const s=[],{columns:o}=a,{measures:r}=o,i=!!r.find(n=>n.axis);let l,d,m,c;if(e){if(d=r.find(n=>n.id!=="ts"),d){const{id:n}=d,{raw:h}=t[0][n];c=`${t[0].ts.raw}`,m=h?Number(h):void 0,m&&(l={label:c,value:m})}}else if(d=i?r.find(n=>n.axis&&n.axis==="y"):r[0],d){const n=d.display?.toLowerCase();c=n?`Total ${n}`:"Total",m=t.reduce((h,B)=>{if(d){const{id:J}=d,{raw:w}=B[J];if(w)return h+Number(w)}return h},0),l={label:c,value:m}}return l&&s.push(l),s},U=(a,t)=>{const{columns:e}=a,{measures:s}=e,i=[...e.keys||[],...s].map(m=>({text:m.display||""})),l=D.default.filterRowsByDisplayColumns(a,t,!0),d=b.default.createTableRows(l);return{head:i,rows:d}},W=(a,t)=>{const{columns:e}=a,{keys:s,measures:o}=e;let r=t.flat(),i=[...o];if(t.length>1){const m=i.findIndex(h=>h.id==="ts"),c=i[m];i.splice(m,1),i=[...s?s.filter(h=>h.id!=="ts"):[],...i],i.unshift(c)}else r=D.default.filterRowsByDisplayColumns(a,r);const l=i.map(m=>({text:m.display})),d=b.default.createTableRows(r);return{head:l,rows:d}};var Y={createChart:x,createTimeseriesCharts:L};0&&(module.exports={createChart,createTimeseriesCharts});
2
2
  //# sourceMappingURL=utils.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/dpr/components/_charts/utils.ts"],
4
- "sourcesContent": ["import dayjs from 'dayjs'\nimport weekOfYear from 'dayjs/plugin/weekOfYear'\nimport { ChartDetails, ChartMetaData } from '../../types/Charts'\nimport { DashboardDataResponse } from '../../types/Metrics'\nimport DatasetHelper from '../../utils/datasetHelper'\nimport DashboardListUtils from '../_dashboards/dashboard-list/utils'\nimport { Granularity } from '../_inputs/granular-date-range/types'\nimport HeatmapChart from './chart/heatmap/HeatmapChart'\nimport { components } from '../../types/api'\nimport {\n DashboardVisualisationData,\n DashboardVisualisationDataSet,\n DashboardVisualisatonCardData,\n MoJTable,\n} from '../_dashboards/dashboard-visualisation/types'\n\ndayjs.extend(weekOfYear)\n\nexport const createChart = (\n chartDefinition: components['schemas']['DashboardVisualisationDefinition'],\n rawData: DashboardDataResponse[],\n): DashboardVisualisatonCardData | undefined => {\n let table: MoJTable | undefined\n let chart: DashboardVisualisationData | undefined\n let details: ChartDetails | undefined\n\n const { dataSetRows, snapshotData } = getDataForSnapshotCharts(chartDefinition, rawData)\n if (dataSetRows.length) {\n chart = createSnapshotChart(chartDefinition, snapshotData)\n table = createSnapshotTable(chartDefinition, dataSetRows)\n details = getChartDetails(chartDefinition, dataSetRows)\n }\n\n return {\n details,\n table,\n chart,\n }\n}\n\nexport const createTimeseriesCharts = (\n chartDefinition: components['schemas']['DashboardVisualisationDefinition'],\n rawData: DashboardDataResponse[],\n): DashboardVisualisatonCardData => {\n let table: MoJTable | undefined\n let chart: DashboardVisualisationData | undefined\n let details: ChartDetails | undefined\n\n const { latestData, dataSetRows, timeseriesData } = getDataForTimeseriesCharts(chartDefinition, rawData)\n if (dataSetRows.length) {\n chart = createTimeseriesChart(chartDefinition, timeseriesData)\n table = createTimeseriesTable(chartDefinition, timeseriesData)\n details = getChartDetails(chartDefinition, latestData, true)\n }\n return {\n details,\n table,\n chart,\n }\n}\n\nexport const createMatrixChart = (\n chartDefinition: components['schemas']['DashboardVisualisationDefinition'],\n rawData: DashboardDataResponse[],\n query: Record<string, string | string[]>,\n) => {\n let table: MoJTable | undefined\n let chart: DashboardVisualisationData | undefined\n let details: ChartDetails | undefined\n let granularity: Granularity = Granularity.DAILY\n\n Object.keys(query).forEach((key) => {\n if (key.includes('granularity')) {\n granularity = <Granularity>query[key]\n }\n })\n\n const { latestData, dataSetRows, timeseriesData } = getDataForTimeseriesCharts(chartDefinition, rawData)\n if (dataSetRows.length) {\n chart = new HeatmapChart(timeseriesData, granularity, chartDefinition).build()\n table = createTimeseriesTable(chartDefinition, timeseriesData)\n details = getChartDetails(chartDefinition, latestData, true)\n }\n return {\n details,\n table,\n chart,\n }\n}\n\nconst getDataForSnapshotCharts = (\n chartDefinition: components['schemas']['DashboardVisualisationDefinition'],\n rawData: DashboardDataResponse[],\n) => {\n const data = DatasetHelper.getLastestDataset(rawData)\n const dataSetRows = DatasetHelper.getDatasetRows(chartDefinition, data)\n const snapshotData = DatasetHelper.filterRowsByDisplayColumns(chartDefinition, dataSetRows, true)\n\n return {\n dataSetRows,\n snapshotData,\n }\n}\n\nconst getDataForTimeseriesCharts = (\n chartDefinition: components['schemas']['DashboardVisualisationDefinition'],\n rawData: DashboardDataResponse[],\n) => {\n const latestData = DatasetHelper.getLastestDataset(rawData)\n const dataSetRows = DatasetHelper.getDatasetRows(chartDefinition, rawData)\n const timeseriesData = DatasetHelper.filterRowsByDisplayColumns(chartDefinition, dataSetRows, true)\n\n return {\n latestData,\n dataSetRows,\n timeseriesData,\n }\n}\n\nconst getChartDetails = (\n chartDefinition: components['schemas']['DashboardVisualisationDefinition'],\n data: DashboardDataResponse[],\n timeseries = false,\n): ChartDetails => {\n const meta: ChartMetaData[] = []\n const headlines: ChartMetaData[] = createHeadlines(chartDefinition, data, timeseries)\n\n if (data[0]?.['ts']?.raw) {\n meta.push({\n label: 'Values for:',\n value: data[0]?.['ts'].raw,\n })\n }\n\n return {\n meta,\n headlines,\n }\n}\n\nconst createHeadlines = (\n chartDefinition: components['schemas']['DashboardVisualisationDefinition'],\n data: DashboardDataResponse[],\n timeseries = false,\n) => {\n const headlines: ChartMetaData[] = []\n const { columns } = chartDefinition\n const { measures } = columns\n const isListChart = !!measures.find((col) => col.axis)\n let headline: ChartMetaData | undefined\n\n let headlineColumn: components['schemas']['DashboardVisualisationColumnDefinition'] | undefined\n let value: number | undefined\n let label: string\n\n if (timeseries) {\n headlineColumn = measures.find((col) => col.id !== 'ts')\n if (headlineColumn) {\n const { id } = headlineColumn\n const { raw } = data[0][id]\n label = `${data[0]['ts'].raw}`\n value = raw ? Number(raw) : undefined\n\n if (value) {\n headline = {\n label,\n value,\n }\n }\n }\n } else {\n headlineColumn = !isListChart ? measures[0] : measures.find((col) => col.axis && col.axis === 'y')\n\n if (headlineColumn) {\n const display = headlineColumn.display?.toLowerCase()\n label = display ? `Total ${display}` : 'Total'\n value = data.reduce((acc: number, d: DashboardDataResponse) => {\n if (headlineColumn) {\n const { id } = headlineColumn\n const { raw } = d[id]\n if (raw) {\n return acc + Number(raw)\n }\n }\n return acc\n }, 0)\n\n headline = {\n label,\n value,\n }\n }\n }\n\n if (headline) headlines.push(headline)\n\n return headlines\n}\n\nconst createSnapshotChart = (\n chartDefinition: components['schemas']['DashboardVisualisationDefinition'],\n snapshotData: DashboardDataResponse[],\n): DashboardVisualisationData => {\n const { type, columns } = chartDefinition\n const { measures } = columns\n const isListChart = !!measures.find((col) => col.axis)\n\n let labels: string[]\n let unit\n let datasets: DashboardVisualisationDataSet[]\n\n if (!isListChart) {\n const chart = buildChart(columns, snapshotData)\n labels = chart.labels\n unit = chart.unit\n datasets = chart.datasets\n } else {\n ;({ labels, unit, datasets } = buildChartFromListData(columns, snapshotData))\n }\n\n return {\n type,\n unit,\n data: {\n labels,\n datasets,\n },\n }\n}\n\nconst buildChart = (\n columns: components['schemas']['DashboardVisualisationColumnsDefinition'],\n rawData: DashboardDataResponse[],\n) => {\n const { keys, measures } = columns\n const labels = measures.map((col) => col.display || '')\n const labelId = keys ? (keys[keys.length - 1]?.id as keyof DashboardDataResponse) : undefined\n const unit = measures[0].unit ? measures[0].unit : undefined\n\n const datasets = rawData.map((row) => {\n const label = labelId && row[labelId] ? `${row[labelId].raw}` : 'All'\n const data = measures.map((c) => {\n const rowId = c.id as keyof DashboardDataResponse\n return row[rowId] && row[rowId].raw ? Number(row[rowId].raw) : 0\n })\n const total = data.reduce((acc: number, val: number) => acc + val, 0)\n return { label, data, total } as DashboardVisualisationDataSet\n })\n\n return {\n labels,\n unit,\n datasets,\n }\n}\n\nconst buildChartFromListData = (\n columns: components['schemas']['DashboardVisualisationColumnsDefinition'],\n rawData: DashboardDataResponse[],\n) => {\n const { measures, keys } = columns\n\n const xAxisColumn = measures.find((col) => col.axis === 'x') || measures[0]\n const yAxisColumn = measures.find((col) => col.axis === 'y') || measures[1]\n\n if (!xAxisColumn || !yAxisColumn) {\n throw new Error('No X of Y Axis found in definition')\n }\n\n const unit = yAxisColumn?.unit || undefined\n const groupKey = DatasetHelper.getGroupKey(rawData, keys)\n const groupsData = groupKey ? DatasetHelper.groupRowsByKey(rawData, groupKey.id) : [rawData]\n\n const labels = groupsData.flatMap((gd) => {\n return gd.map((row) => {\n const { id: xId } = xAxisColumn\n const field = row[xId]\n return field ? `${field.raw}` : ''\n })\n })\n\n const datasets: DashboardVisualisationDataSet[] = groupsData.map((groupData) => {\n const data = Array(labels.length)\n groupData.forEach((row) => {\n const { id: yId } = yAxisColumn\n const { id: xId } = xAxisColumn\n const labelField = row[xId]\n const valueField = row[yId]\n const raw = valueField && valueField.raw ? Number(valueField.raw) : 0\n const dataIndex = labels.findIndex((l) => l === labelField.raw)\n if (dataIndex !== -1) {\n data[dataIndex] = Number(raw)\n }\n })\n\n let label = ''\n if (groupKey) {\n const groupKeyId = groupKey.id\n const groupRow = groupData[0]\n label = groupRow && groupRow[groupKeyId] ? `${groupRow[groupKeyId].raw}` : ''\n } else {\n label = yAxisColumn.display || label\n }\n\n return {\n label,\n data,\n total: data.reduce((acc: number, val: number) => acc + val, 0),\n }\n })\n\n return {\n labels,\n unit,\n datasets,\n }\n}\n\nconst createSnapshotTable = (\n chartDefinition: components['schemas']['DashboardVisualisationDefinition'],\n data: DashboardDataResponse[],\n): MoJTable => {\n const { columns } = chartDefinition\n const { measures } = columns\n const keys = columns.keys || []\n\n const headerColumns = [...keys, ...measures]\n const head = headerColumns.map((column) => {\n return { text: column.display || '' }\n })\n\n const filteredRowData = DatasetHelper.filterRowsByDisplayColumns(chartDefinition, data, true)\n const rows = DashboardListUtils.createTableRows(filteredRowData)\n\n return {\n head,\n rows,\n }\n}\n\nconst createTimeseriesChart = (\n chartDefinition: components['schemas']['DashboardVisualisationDefinition'],\n timeseriesData: DashboardDataResponse[],\n): DashboardVisualisationData => {\n const { columns } = chartDefinition\n const { keys, measures } = columns\n\n const unit = measures[0].unit ? measures[0].unit : undefined\n const type = <components['schemas']['DashboardVisualisationDefinition']['type']>chartDefinition.type.split('-')[0]\n const groupKey = DatasetHelper.getGroupKey(timeseriesData, keys)\n const labelId = groupKey?.id as keyof DashboardDataResponse\n\n const timeBlockData = DatasetHelper.groupRowsByTimestamp(timeseriesData)\n const labels = timeBlockData.map((d: DashboardDataResponse[]) => d[0]['ts'].raw as unknown as string)\n const datasetCount = timeBlockData[0].length\n\n const datasets: DashboardVisualisationDataSet[] = []\n for (let index = 0; index < datasetCount; index += 1) {\n const data = timeBlockData.map((timeperiod) => {\n const { raw } = timeperiod[index][measures[1].id]\n return raw ? Number(raw) : 0\n })\n const total = data.reduce((a, c) => a + c, 0)\n const rawValue = timeBlockData[0][index][labelId].raw\n const label = rawValue ? <string>rawValue : ''\n\n datasets.push({\n data,\n label,\n total,\n })\n }\n\n return {\n type,\n unit,\n timeseries: true,\n data: {\n labels,\n datasets,\n },\n }\n}\n\nconst createTimeseriesTable = (\n chartDefinition: components['schemas']['DashboardVisualisationDefinition'],\n timeseriesData: DashboardDataResponse[],\n): MoJTable => {\n const { columns } = chartDefinition\n const { keys, measures } = columns\n\n let flatTimeseriesData = timeseriesData.flat()\n let headerColumns = [...measures]\n\n if (timeseriesData.length > 1) {\n // Add keys as columns as well as measures, and put TS first:\n // Get TS column an remove it from headings\n const timestampIndex = headerColumns.findIndex((m) => m.id === 'ts')\n const timestampCol = headerColumns[timestampIndex]\n headerColumns.splice(timestampIndex, 1)\n // Remove duplicate TS from keys if present and add keys to headings\n const keysWithoutTs = keys ? keys.filter((k) => k.id !== 'ts') : []\n headerColumns = [...keysWithoutTs, ...headerColumns]\n // Add TS column to the start\n headerColumns.unshift(timestampCol)\n } else {\n flatTimeseriesData = DatasetHelper.filterRowsByDisplayColumns(chartDefinition, flatTimeseriesData)\n }\n\n const head = headerColumns.map((column) => {\n return { text: column.display }\n })\n\n const rows = DashboardListUtils.createTableRows(flatTimeseriesData)\n\n return {\n head,\n rows,\n } as MoJTable\n}\n\nexport default {\n createChart,\n createTimeseriesCharts,\n createMatrixChart,\n}\n"],
5
- "mappings": "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",
6
- "names": ["utils_exports", "__export", "createChart", "createMatrixChart", "createTimeseriesCharts", "utils_default", "__toCommonJS", "import_dayjs", "import_weekOfYear", "import_datasetHelper", "import_utils", "import_types", "import_HeatmapChart", "dayjs", "weekOfYear", "chartDefinition", "rawData", "table", "chart", "details", "dataSetRows", "snapshotData", "getDataForSnapshotCharts", "createSnapshotChart", "createSnapshotTable", "getChartDetails", "latestData", "timeseriesData", "getDataForTimeseriesCharts", "createTimeseriesChart", "createTimeseriesTable", "query", "granularity", "key", "HeatmapChart", "data", "DatasetHelper", "timeseries", "meta", "headlines", "createHeadlines", "columns", "measures", "isListChart", "col", "headline", "headlineColumn", "value", "label", "id", "raw", "display", "acc", "d", "type", "labels", "unit", "datasets", "buildChartFromListData", "buildChart", "keys", "labelId", "row", "rowId", "total", "val", "xAxisColumn", "yAxisColumn", "groupKey", "groupsData", "gd", "xId", "field", "groupData", "yId", "labelField", "valueField", "dataIndex", "l", "groupKeyId", "groupRow", "head", "column", "filteredRowData", "rows", "DashboardListUtils", "timeBlockData", "datasetCount", "index", "timeperiod", "a", "c", "rawValue", "flatTimeseriesData", "headerColumns", "timestampIndex", "m", "timestampCol", "k"]
4
+ "sourcesContent": ["import dayjs from 'dayjs'\nimport weekOfYear from 'dayjs/plugin/weekOfYear'\nimport { ChartDetails, ChartMetaData } from '../../types/Charts'\nimport { DashboardDataResponse } from '../../types/Metrics'\nimport DatasetHelper from '../../utils/datasetHelper'\nimport DashboardListUtils from '../_dashboards/dashboard-list/utils'\nimport { Granularity } from '../_inputs/granular-date-range/types'\nimport HeatmapChart from './chart/heatmap/HeatmapChart'\nimport BarChart from './chart/bar/BarChart'\nimport { components } from '../../types/api'\nimport {\n DashboardVisualisationData,\n DashboardVisualisationType,\n DashboardVisualisatonCardData,\n MoJTable,\n} from '../_dashboards/dashboard-visualisation/types'\nimport DoughnutChart from './chart/doughnut/DoughnutChart'\nimport LineChart from './chart/line/LineChart'\nimport LineTimeseriesChart from './chart/line-timeseries/LineTimeseriesChart'\nimport BarTimeseriesChart from './chart/bar-timeseries/BarTimeseriesChart'\nimport { PartialDate } from '../_filters/types'\n\ndayjs.extend(weekOfYear)\n\nexport const createChart = (\n chartDefinition: components['schemas']['DashboardVisualisationDefinition'],\n rawData: DashboardDataResponse[],\n type: components['schemas']['DashboardVisualisationDefinition']['type'],\n): DashboardVisualisatonCardData | undefined => {\n let table: MoJTable | undefined\n let chart: DashboardVisualisationData | undefined\n let details: ChartDetails | undefined\n\n const { dataSetRows, snapshotData } = getDataForSnapshotCharts(chartDefinition, rawData)\n if (dataSetRows.length) {\n switch (type) {\n case DashboardVisualisationType.BAR:\n chart = new BarChart().withDefinition(chartDefinition).withData(snapshotData).build()\n break\n case DashboardVisualisationType.DONUT:\n chart = new DoughnutChart().withDefinition(chartDefinition).withData(snapshotData).build()\n break\n case DashboardVisualisationType.LINE:\n chart = new LineChart().withDefinition(chartDefinition).withData(snapshotData).build()\n break\n default:\n break\n }\n\n table = createSnapshotTable(chartDefinition, dataSetRows)\n details = getChartDetails(chartDefinition, dataSetRows)\n }\n\n return {\n details,\n table,\n chart,\n }\n}\n\nexport const createTimeseriesCharts = (\n chartDefinition: components['schemas']['DashboardVisualisationDefinition'],\n rawData: DashboardDataResponse[],\n type: components['schemas']['DashboardVisualisationDefinition']['type'],\n query: Record<string, string | string[]>,\n partialDate?: PartialDate,\n) => {\n let table: MoJTable | undefined\n let chart: DashboardVisualisationData | undefined\n let details: ChartDetails | undefined\n let granularity: Granularity = Granularity.DAILY\n\n if (query) {\n Object.keys(query).forEach((key) => {\n if (key.includes('granularity')) {\n granularity = <Granularity>query[key]\n }\n })\n }\n\n const { latestData, dataSetRows, timeseriesData } = getDataForTimeseriesCharts(chartDefinition, rawData)\n\n if (dataSetRows.length) {\n switch (type) {\n case DashboardVisualisationType.MATRIX_TIMESERIES:\n chart = new HeatmapChart()\n .withDefinition(chartDefinition)\n .withGranularity(granularity)\n .withData(timeseriesData)\n .build()\n break\n case DashboardVisualisationType.LINE_TIMESERIES:\n chart = new LineTimeseriesChart()\n .withDefinition(chartDefinition)\n .withData(timeseriesData)\n .withPartialDate(partialDate)\n .build()\n break\n case DashboardVisualisationType.BAR_TIMESERIES:\n chart = new BarTimeseriesChart()\n .withDefinition(chartDefinition)\n .withData(timeseriesData)\n .withPartialDate(partialDate)\n .build()\n break\n default:\n break\n }\n\n table = createTimeseriesTable(chartDefinition, timeseriesData)\n details = getChartDetails(chartDefinition, latestData, true)\n }\n\n return {\n details,\n table,\n chart,\n }\n}\n\nconst getDataForSnapshotCharts = (\n chartDefinition: components['schemas']['DashboardVisualisationDefinition'],\n rawData: DashboardDataResponse[],\n) => {\n const data = DatasetHelper.getLastestDataset(rawData)\n const dataSetRows = DatasetHelper.getDatasetRows(chartDefinition, data)\n const snapshotData = DatasetHelper.filterRowsByDisplayColumns(chartDefinition, dataSetRows, true)\n\n return {\n dataSetRows,\n snapshotData,\n }\n}\n\nconst getDataForTimeseriesCharts = (\n chartDefinition: components['schemas']['DashboardVisualisationDefinition'],\n rawData: DashboardDataResponse[],\n) => {\n const latestData = DatasetHelper.getLastestDataset(rawData)\n const dataSetRows = DatasetHelper.getDatasetRows(chartDefinition, rawData)\n const timeseriesData = DatasetHelper.filterRowsByDisplayColumns(chartDefinition, dataSetRows, true)\n\n return {\n latestData,\n dataSetRows,\n timeseriesData,\n }\n}\n\nconst getChartDetails = (\n chartDefinition: components['schemas']['DashboardVisualisationDefinition'],\n data: DashboardDataResponse[],\n timeseries = false,\n): ChartDetails => {\n const meta: ChartMetaData[] = []\n const headlines: ChartMetaData[] = createHeadlines(chartDefinition, data, timeseries)\n\n if (data[0]?.['ts']?.raw) {\n meta.push({\n label: 'Values for:',\n value: data[0]?.['ts'].raw,\n })\n }\n\n return {\n meta,\n headlines,\n }\n}\n\nconst createHeadlines = (\n chartDefinition: components['schemas']['DashboardVisualisationDefinition'],\n data: DashboardDataResponse[],\n timeseries = false,\n) => {\n const headlines: ChartMetaData[] = []\n const { columns } = chartDefinition\n const { measures } = columns\n const isListChart = !!measures.find((col) => col.axis)\n let headline: ChartMetaData | undefined\n\n let headlineColumn: components['schemas']['DashboardVisualisationColumnDefinition'] | undefined\n let value: number | undefined\n let label: string\n\n if (timeseries) {\n headlineColumn = measures.find((col) => col.id !== 'ts')\n if (headlineColumn) {\n const { id } = headlineColumn\n const { raw } = data[0][id]\n label = `${data[0]['ts'].raw}`\n value = raw ? Number(raw) : undefined\n\n if (value) {\n headline = {\n label,\n value,\n }\n }\n }\n } else {\n headlineColumn = !isListChart ? measures[0] : measures.find((col) => col.axis && col.axis === 'y')\n\n if (headlineColumn) {\n const display = headlineColumn.display?.toLowerCase()\n label = display ? `Total ${display}` : 'Total'\n value = data.reduce((acc: number, d: DashboardDataResponse) => {\n if (headlineColumn) {\n const { id } = headlineColumn\n const { raw } = d[id]\n if (raw) {\n return acc + Number(raw)\n }\n }\n return acc\n }, 0)\n\n headline = {\n label,\n value,\n }\n }\n }\n\n if (headline) headlines.push(headline)\n\n return headlines\n}\n\nconst createSnapshotTable = (\n chartDefinition: components['schemas']['DashboardVisualisationDefinition'],\n data: DashboardDataResponse[],\n): MoJTable => {\n const { columns } = chartDefinition\n const { measures } = columns\n const keys = columns.keys || []\n\n const headerColumns = [...keys, ...measures]\n const head = headerColumns.map((column) => {\n return { text: column.display || '' }\n })\n\n const filteredRowData = DatasetHelper.filterRowsByDisplayColumns(chartDefinition, data, true)\n const rows = DashboardListUtils.createTableRows(filteredRowData)\n\n return {\n head,\n rows,\n }\n}\n\nconst createTimeseriesTable = (\n chartDefinition: components['schemas']['DashboardVisualisationDefinition'],\n timeseriesData: DashboardDataResponse[],\n): MoJTable => {\n const { columns } = chartDefinition\n const { keys, measures } = columns\n\n let flatTimeseriesData = timeseriesData.flat()\n let headerColumns = [...measures]\n\n if (timeseriesData.length > 1) {\n // Add keys as columns as well as measures, and put TS first:\n // Get TS column an remove it from headings\n const timestampIndex = headerColumns.findIndex((m) => m.id === 'ts')\n const timestampCol = headerColumns[timestampIndex]\n headerColumns.splice(timestampIndex, 1)\n // Remove duplicate TS from keys if present and add keys to headings\n const keysWithoutTs = keys ? keys.filter((k) => k.id !== 'ts') : []\n headerColumns = [...keysWithoutTs, ...headerColumns]\n // Add TS column to the start\n headerColumns.unshift(timestampCol)\n } else {\n flatTimeseriesData = DatasetHelper.filterRowsByDisplayColumns(chartDefinition, flatTimeseriesData)\n }\n\n const head = headerColumns.map((column) => {\n return { text: column.display }\n })\n\n const rows = DashboardListUtils.createTableRows(flatTimeseriesData)\n\n return {\n head,\n rows,\n } as MoJTable\n}\n\nexport default {\n createChart,\n createTimeseriesCharts,\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["utils_exports", "__export", "createChart", "createTimeseriesCharts", "utils_default", "__toCommonJS", "import_dayjs", "import_weekOfYear", "import_datasetHelper", "import_utils", "import_types", "import_HeatmapChart", "import_BarChart", "import_DoughnutChart", "import_LineChart", "import_LineTimeseriesChart", "import_BarTimeseriesChart", "dayjs", "weekOfYear", "chartDefinition", "rawData", "type", "table", "chart", "details", "dataSetRows", "snapshotData", "getDataForSnapshotCharts", "BarChart", "DoughnutChart", "LineChart", "createSnapshotTable", "getChartDetails", "query", "partialDate", "granularity", "key", "latestData", "timeseriesData", "getDataForTimeseriesCharts", "HeatmapChart", "LineTimeseriesChart", "BarTimeseriesChart", "createTimeseriesTable", "data", "DatasetHelper", "timeseries", "meta", "headlines", "createHeadlines", "columns", "measures", "isListChart", "col", "headline", "headlineColumn", "value", "label", "id", "raw", "display", "acc", "d", "head", "column", "filteredRowData", "rows", "DashboardListUtils", "keys", "flatTimeseriesData", "headerColumns", "timestampIndex", "m", "timestampCol", "k"]
7
7
  }
@@ -38,19 +38,21 @@ describe('ChartCard Utils', () => {
38
38
  describe('createChart', () => {
39
39
  it('should get the snapshot chart data', async () => {
40
40
  const expectedResult = barChartDataHasEthnicity
41
- const result = ChartCardUtils.createChart(snapshotVisualisationDefinition, dashboardMetricsData.flat())
41
+ const result = ChartCardUtils.createChart(snapshotVisualisationDefinition, dashboardMetricsData.flat(), 'bar')
42
+ console.log(JSON.stringify(result, null, 2))
42
43
  expect(result).toEqual(expectedResult)
43
44
  })
44
45
 
45
46
  it('should get the snapshot chart data from a list', async () => {
46
47
  const expectedResult = chartFromList
47
- const result = ChartCardUtils.createChart(snapshotVisualisationFromListDefinition, dashboardMockDietData)
48
+ const result = ChartCardUtils.createChart(snapshotVisualisationFromListDefinition, dashboardMockDietData, 'bar')
48
49
  expect(result).toEqual(expectedResult)
49
50
  })
50
51
 
51
52
  it('should create the snapshot chart data from a list', () => {
52
53
  const expectedResult = barChartFromListDataHasEthnicity
53
- const result = ChartCardUtils.createChart(snapshotVisualisationDefinition, dashboardMetricsData.flat())
54
+ const result = ChartCardUtils.createChart(snapshotVisualisationDefinition, dashboardMetricsData.flat(), 'bar')
55
+
54
56
  expect(result).toEqual(expectedResult)
55
57
  })
56
58
 
@@ -59,7 +61,11 @@ describe('ChartCard Utils', () => {
59
61
  const result = ChartCardUtils.createTimeseriesCharts(
60
62
  timeseriesVisualisationDefinition,
61
63
  dashboardMetricsData.flat(),
64
+ 'line-timeseries',
65
+ {},
62
66
  )
67
+
68
+ console.log(JSON.stringify(result, null, 2))
63
69
  expect(result).toEqual(expectedResult)
64
70
  })
65
71
  })