@hisptz/dhis2-analytics 2.0.66 → 2.1.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 (59) hide show
  1. package/dist/components/ChartAnalytics/DHIS2Chart.js +32 -4
  2. package/dist/components/ChartAnalytics/DHIS2Chart.js.map +1 -1
  3. package/dist/components/ChartAnalytics/hooks/useChart.js.map +1 -1
  4. package/dist/components/ChartAnalytics/models/area.js +33 -0
  5. package/dist/components/ChartAnalytics/models/area.js.map +1 -0
  6. package/dist/components/ChartAnalytics/models/gauge.js +112 -0
  7. package/dist/components/ChartAnalytics/models/gauge.js.map +1 -0
  8. package/dist/components/ChartAnalytics/models/index.js +4 -0
  9. package/dist/components/ChartAnalytics/models/index.js.map +1 -1
  10. package/dist/components/ChartAnalytics/models/radar.js +16 -0
  11. package/dist/components/ChartAnalytics/models/radar.js.map +1 -0
  12. package/dist/components/ChartAnalytics/models/scatter.js +17 -0
  13. package/dist/components/ChartAnalytics/models/scatter.js.map +1 -0
  14. package/dist/components/ChartAnalytics/services/export.js +7 -12
  15. package/dist/components/ChartAnalytics/services/export.js.map +1 -1
  16. package/dist/components/ChartAnalytics/utils/chart.js +14 -0
  17. package/dist/components/ChartAnalytics/utils/chart.js.map +1 -1
  18. package/dist/components/Map/components/MapArea/index.js +1 -1
  19. package/dist/components/Map/components/MapArea/index.js.map +1 -1
  20. package/dist/esm/components/ChartAnalytics/DHIS2Chart.js +13 -3
  21. package/dist/esm/components/ChartAnalytics/DHIS2Chart.js.map +1 -1
  22. package/dist/esm/components/ChartAnalytics/hooks/useChart.js.map +1 -1
  23. package/dist/esm/components/ChartAnalytics/models/area.js +30 -0
  24. package/dist/esm/components/ChartAnalytics/models/area.js.map +1 -0
  25. package/dist/esm/components/ChartAnalytics/models/gauge.js +110 -0
  26. package/dist/esm/components/ChartAnalytics/models/gauge.js.map +1 -0
  27. package/dist/esm/components/ChartAnalytics/models/index.js +4 -0
  28. package/dist/esm/components/ChartAnalytics/models/index.js.map +1 -1
  29. package/dist/esm/components/ChartAnalytics/models/radar.js +14 -0
  30. package/dist/esm/components/ChartAnalytics/models/radar.js.map +1 -0
  31. package/dist/esm/components/ChartAnalytics/models/scatter.js +15 -0
  32. package/dist/esm/components/ChartAnalytics/models/scatter.js.map +1 -0
  33. package/dist/esm/components/ChartAnalytics/services/export.js +7 -6
  34. package/dist/esm/components/ChartAnalytics/services/export.js.map +1 -1
  35. package/dist/esm/components/ChartAnalytics/utils/chart.js +14 -0
  36. package/dist/esm/components/ChartAnalytics/utils/chart.js.map +1 -1
  37. package/dist/esm/components/Map/components/MapArea/index.js +1 -1
  38. package/dist/esm/components/Map/components/MapArea/index.js.map +1 -1
  39. package/dist/types/components/ChartAnalytics/DHIS2Chart.d.ts +6 -0
  40. package/dist/types/components/ChartAnalytics/DHIS2Chart.d.ts.map +1 -1
  41. package/dist/types/components/ChartAnalytics/hooks/useChart.d.ts +2 -2
  42. package/dist/types/components/ChartAnalytics/hooks/useChart.d.ts.map +1 -1
  43. package/dist/types/components/ChartAnalytics/models/area.d.ts +11 -0
  44. package/dist/types/components/ChartAnalytics/models/area.d.ts.map +1 -0
  45. package/dist/types/components/ChartAnalytics/models/gauge.d.ts +12 -0
  46. package/dist/types/components/ChartAnalytics/models/gauge.d.ts.map +1 -0
  47. package/dist/types/components/ChartAnalytics/models/index.d.ts +9 -8
  48. package/dist/types/components/ChartAnalytics/models/index.d.ts.map +1 -1
  49. package/dist/types/components/ChartAnalytics/models/radar.d.ts +5 -0
  50. package/dist/types/components/ChartAnalytics/models/radar.d.ts.map +1 -0
  51. package/dist/types/components/ChartAnalytics/models/scatter.d.ts +7 -0
  52. package/dist/types/components/ChartAnalytics/models/scatter.d.ts.map +1 -0
  53. package/dist/types/components/ChartAnalytics/services/export.d.ts +8 -1
  54. package/dist/types/components/ChartAnalytics/services/export.d.ts.map +1 -1
  55. package/dist/types/components/ChartAnalytics/types/props.d.ts +5 -4
  56. package/dist/types/components/ChartAnalytics/types/props.d.ts.map +1 -1
  57. package/dist/types/components/ChartAnalytics/utils/chart.d.ts +1 -1
  58. package/dist/types/components/ChartAnalytics/utils/chart.d.ts.map +1 -1
  59. package/package.json +7 -7
@@ -0,0 +1,30 @@
1
+ import { getPointSeries } from '../utils/chart.js';
2
+ import { DHIS2LineChart } from './line';
3
+
4
+ class DHIS2AreaChart extends DHIS2LineChart {
5
+ getHighchartsType() {
6
+ return "area";
7
+ }
8
+ getPlotOptions() {
9
+ return {
10
+ area: {}
11
+ };
12
+ }
13
+ getSeries() {
14
+ return getPointSeries(this.analytics, this.config, "area");
15
+ }
16
+ }
17
+ class DHISStackedAreaChart extends DHIS2AreaChart {
18
+ getPlotOptions() {
19
+ return {
20
+ area: {
21
+ stacking: "normal",
22
+ ...super.getPlotOptions().area
23
+ }
24
+ };
25
+ }
26
+ }
27
+
28
+ export { DHIS2AreaChart, DHISStackedAreaChart };
29
+ //# sourceMappingURL=area.js.map
30
+ //# sourceMappingURL=area.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/components/ChartAnalytics/models/area.ts"],"names":[],"mappings":";;;AAIO,MAAM,uBAAuB,cAAe,CAAA;AAAA,EAClD,iBAA4B,GAAA;AAC3B,IAAO,OAAA,MAAA;AAAA;AACR,EAEA,cAA8B,GAAA;AAC7B,IAAO,OAAA;AAAA,MACN,MAAM;AAAC,KACR;AAAA;AACD,EAEA,SAAiC,GAAA;AAChC,IAAA,OAAO,cAAe,CAAA,IAAA,CAAK,SAAW,EAAA,IAAA,CAAK,QAAQ,MAAM,CAAA;AAAA;AAE3D;AAEO,MAAM,6BAA6B,cAAe,CAAA;AAAA,EACxD,cAA8B,GAAA;AAC7B,IAAO,OAAA;AAAA,MACN,IAAM,EAAA;AAAA,QACL,QAAU,EAAA,QAAA;AAAA,QACV,GAAG,KAAM,CAAA,cAAA,EAAiB,CAAA;AAAA;AAC3B,KACD;AAAA;AAEF","file":"area.js","sourcesContent":["import { PlotOptions, SeriesOptionsType } from \"highcharts\";\nimport { getPointSeries } from \"../utils/chart.js\";\nimport { DHIS2LineChart } from \"./line\";\n\nexport class DHIS2AreaChart extends DHIS2LineChart {\n\tgetHighchartsType(): string {\n\t\treturn \"area\";\n\t}\n\n\tgetPlotOptions(): PlotOptions {\n\t\treturn {\n\t\t\tarea: {},\n\t\t};\n\t}\n\n\tgetSeries(): SeriesOptionsType[] {\n\t\treturn getPointSeries(this.analytics, this.config, \"area\");\n\t}\n}\n\nexport class DHISStackedAreaChart extends DHIS2AreaChart {\n\tgetPlotOptions(): PlotOptions {\n\t\treturn {\n\t\t\tarea: {\n\t\t\t\tstacking: \"normal\",\n\t\t\t\t...super.getPlotOptions().area,\n\t\t\t},\n\t\t};\n\t}\n}\n"]}
@@ -0,0 +1,110 @@
1
+ import { head, get } from 'lodash';
2
+ import { DHIS2Chart } from './index.js';
3
+ import { getColorFromLegendSet } from '../../Map/utils/map';
4
+ import { colors } from '@dhis2/ui';
5
+
6
+ const DEFAULT_PANE_SIZE = "100%";
7
+ const DEFAULT_FONT_SIZE = "28px";
8
+ class DHIS2GaugeChart extends DHIS2Chart {
9
+ getHighchartsType() {
10
+ return "solidgauge";
11
+ }
12
+ getPlotOptions() {
13
+ return {
14
+ solidgauge: {
15
+ borderRadius: 4,
16
+ color: head(this.config.colors),
17
+ dataLabels: {
18
+ y: 5,
19
+ borderWidth: 0,
20
+ useHTML: true
21
+ },
22
+ borderWidth: 0,
23
+ borderColor: "white",
24
+ innerRadius: "60%"
25
+ }
26
+ };
27
+ }
28
+ getValue() {
29
+ const { rows, headers } = this.analytics;
30
+ const valueHeaderIndex = headers.findIndex(
31
+ ({ name }) => name === "value"
32
+ );
33
+ return parseFloat(get(head(rows), [valueHeaderIndex]) ?? "");
34
+ }
35
+ getPane() {
36
+ return {
37
+ center: ["50%", "85%"],
38
+ size: DEFAULT_PANE_SIZE,
39
+ startAngle: -90,
40
+ endAngle: 90,
41
+ background: [
42
+ {
43
+ backgroundColor: "transparent",
44
+ innerRadius: "60%",
45
+ outerRadius: "100%",
46
+ shape: "arc"
47
+ }
48
+ ]
49
+ };
50
+ }
51
+ getSeries() {
52
+ const value = this.getValue();
53
+ return [
54
+ {
55
+ name: this.id,
56
+ data: [Math.round(value ?? 0)],
57
+ color: "white",
58
+ enableMouseTracking: false,
59
+ dataLabels: {
60
+ y: 0,
61
+ borderWidth: 0,
62
+ verticalAlign: "bottom",
63
+ style: {
64
+ fontSize: DEFAULT_FONT_SIZE,
65
+ color: colors.grey900
66
+ }
67
+ },
68
+ compare: "percent",
69
+ tooltip: {
70
+ valueSuffix: "%"
71
+ }
72
+ }
73
+ ];
74
+ }
75
+ getYAxis() {
76
+ const chartColors = this.config.colors ?? [];
77
+ const legendSet = this.config.legendSet;
78
+ const legendColor = legendSet ? getColorFromLegendSet(legendSet?.legends, this.getValue()) : void 0;
79
+ return [
80
+ {
81
+ min: 0,
82
+ max: 100,
83
+ offset: 0,
84
+ lineWidth: 0,
85
+ minorTicks: false,
86
+ tickWidth: 0,
87
+ type: "linear",
88
+ labels: {
89
+ enabled: false,
90
+ distance: 20,
91
+ style: {
92
+ fontSize: "14px"
93
+ }
94
+ },
95
+ maxPadding: 0,
96
+ pane: 0,
97
+ minColor: legendColor ?? head(chartColors),
98
+ maxColor: legendColor ?? head(chartColors),
99
+ margin: 0
100
+ }
101
+ ];
102
+ }
103
+ getXAxis() {
104
+ return void 0;
105
+ }
106
+ }
107
+
108
+ export { DHIS2GaugeChart };
109
+ //# sourceMappingURL=gauge.js.map
110
+ //# sourceMappingURL=gauge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/components/ChartAnalytics/models/gauge.ts"],"names":[],"mappings":"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","file":"gauge.js","sourcesContent":["import {\n\ttype PaneBackgroundOptions,\n\ttype PaneOptions,\n\tPlotOptions,\n\tSeriesGaugeOptions,\n\tSeriesOptionsType,\n\tXAxisOptions,\n\ttype YAxisOptions,\n} from \"highcharts\";\nimport { get, head } from \"lodash\";\nimport { DHIS2Chart } from \"./index.js\";\nimport { getColorFromLegendSet } from \"../../Map/utils/map\";\nimport { colors } from \"@dhis2/ui\";\n\nconst DEFAULT_PANE_SIZE = \"100%\";\nconst DEFAULT_FONT_SIZE = \"28px\";\n\nexport class DHIS2GaugeChart extends DHIS2Chart {\n\tgetHighchartsType(): string {\n\t\treturn \"solidgauge\";\n\t}\n\n\tgetPlotOptions(): PlotOptions {\n\t\treturn {\n\t\t\tsolidgauge: {\n\t\t\t\tborderRadius: 4,\n\t\t\t\tcolor: head(this.config.colors),\n\t\t\t\tdataLabels: {\n\t\t\t\t\ty: 5,\n\t\t\t\t\tborderWidth: 0,\n\t\t\t\t\tuseHTML: true,\n\t\t\t\t},\n\t\t\t\tborderWidth: 0,\n\t\t\t\tborderColor: \"white\",\n\t\t\t\tinnerRadius: \"60%\",\n\t\t\t},\n\t\t} as Highcharts.PlotOptions;\n\t}\n\n\tgetValue(): number | undefined {\n\t\tconst { rows, headers } = this.analytics;\n\t\tconst valueHeaderIndex = headers!.findIndex(\n\t\t\t({ name }) => name === \"value\",\n\t\t);\n\t\treturn parseFloat(get(head(rows), [valueHeaderIndex]) ?? \"\");\n\t}\n\n\tgetPane(): PaneOptions | undefined {\n\t\treturn {\n\t\t\tcenter: [\"50%\", \"85%\"],\n\t\t\tsize: DEFAULT_PANE_SIZE,\n\t\t\tstartAngle: -90,\n\t\t\tendAngle: 90,\n\t\t\tbackground: [\n\t\t\t\t{\n\t\t\t\t\tbackgroundColor: \"transparent\",\n\t\t\t\t\tinnerRadius: \"60%\",\n\t\t\t\t\touterRadius: \"100%\",\n\t\t\t\t\tshape: \"arc\",\n\t\t\t\t} as PaneBackgroundOptions,\n\t\t\t],\n\t\t};\n\t}\n\n\tgetSeries(): SeriesOptionsType[] {\n\t\tconst value = this.getValue();\n\t\treturn [\n\t\t\t{\n\t\t\t\tname: this.id,\n\t\t\t\tdata: [Math.round(value ?? 0)],\n\t\t\t\tcolor: \"white\",\n\t\t\t\tenableMouseTracking: false,\n\t\t\t\tdataLabels: {\n\t\t\t\t\ty: 0,\n\t\t\t\t\tborderWidth: 0,\n\t\t\t\t\tverticalAlign: \"bottom\",\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\tfontSize: DEFAULT_FONT_SIZE,\n\t\t\t\t\t\tcolor: colors.grey900,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tcompare: \"percent\",\n\t\t\t\ttooltip: {\n\t\t\t\t\tvalueSuffix: \"%\",\n\t\t\t\t},\n\t\t\t},\n\t\t] as unknown as SeriesGaugeOptions[];\n\t}\n\n\tgetYAxis(): YAxisOptions[] {\n\t\tconst chartColors = this.config.colors ?? [];\n\t\tconst legendSet = this.config.legendSet;\n\t\tconst legendColor = legendSet\n\t\t\t? getColorFromLegendSet(legendSet?.legends, this.getValue())\n\t\t\t: undefined;\n\t\treturn [\n\t\t\t{\n\t\t\t\tmin: 0,\n\t\t\t\tmax: 100,\n\t\t\t\toffset: 0,\n\t\t\t\tlineWidth: 0,\n\t\t\t\tminorTicks: false,\n\t\t\t\ttickWidth: 0,\n\t\t\t\ttype: \"linear\",\n\t\t\t\tlabels: {\n\t\t\t\t\tenabled: false,\n\t\t\t\t\tdistance: 20,\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\tfontSize: \"14px\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tmaxPadding: 0,\n\t\t\t\tpane: 0,\n\t\t\t\tminColor: legendColor ?? head(chartColors),\n\t\t\t\tmaxColor: legendColor ?? head(chartColors),\n\t\t\t\tmargin: 0,\n\t\t\t} as YAxisOptions,\n\t\t];\n\t}\n\n\tgetXAxis(): XAxisOptions | undefined {\n\t\treturn undefined;\n\t}\n}\n"]}
@@ -15,10 +15,14 @@ class DHIS2Chart {
15
15
  styledMode: false
16
16
  };
17
17
  }
18
+ getPane() {
19
+ return void 0;
20
+ }
18
21
  getOptions() {
19
22
  const options = {
20
23
  yAxis: this.getYAxis(),
21
24
  chart: this.getChartConfig(),
25
+ pane: this.getPane(),
22
26
  colors: this.config?.colors ?? [
23
27
  "#a8bf24",
24
28
  "#518cc3",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/ChartAnalytics/models/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type { Analytics } from \"@hisptz/dhis2-utils\";\nimport HighCharts from \"highcharts\";\nimport { ChartConfig } from \"../types/props.js\";\nimport { compact } from \"lodash\";\n\nexport abstract class DHIS2Chart {\n\tid: string;\n\tanalytics: Analytics;\n\tconfig: ChartConfig;\n\n\tconstructor(id: string, analytics: Analytics, config: ChartConfig) {\n\t\tthis.id = id;\n\t\tthis.analytics = analytics;\n\t\tthis.config = config;\n\t}\n\n\tabstract getHighchartsType(): string;\n\n\tgetChartConfig(): HighCharts.ChartOptions & any {\n\t\treturn {\n\t\t\trenderTo: this.id,\n\t\t\tzoomType: \"xy\",\n\t\t\ttype: this.getHighchartsType(),\n\t\t\theight: this.config?.height,\n\t\t\tstyledMode: false,\n\t\t};\n\t}\n\n\tgetOptions(): HighCharts.Options {\n\t\tconst options = {\n\t\t\tyAxis: this.getYAxis(),\n\t\t\tchart: this.getChartConfig(),\n\t\t\tcolors: this.config?.colors ?? [\n\t\t\t\t\"#a8bf24\",\n\t\t\t\t\"#518cc3\",\n\t\t\t\t\"#d74554\",\n\t\t\t\t\"#ff9e21\",\n\t\t\t\t\"#968f8f\",\n\t\t\t\t\"#ba3ba1\",\n\t\t\t\t\"#ffda54\",\n\t\t\t\t\"#45beae\",\n\t\t\t\t\"#b98037\",\n\t\t\t\t\"#676767\",\n\t\t\t\t\"#6b2dd4\",\n\t\t\t\t\"#47792c\",\n\t\t\t\t\"#fcbdbd\",\n\t\t\t\t\"#830000\",\n\t\t\t\t\"#a5ffc0\",\n\t\t\t\t\"#000078\",\n\t\t\t\t\"#817c00\",\n\t\t\t\t\"#bdf023\",\n\t\t\t\t\"#fffac4\",\n\t\t\t],\n\t\t\tseries: this.getSeries(),\n\t\t\tplotOptions: this.getPlotOptions(),\n\t\t\ttitle: {\n\t\t\t\ttext: this.config.customTitle\n\t\t\t\t\t? this.config.customTitle\n\t\t\t\t\t: this.config.showFilterAsTitle\n\t\t\t\t\t\t? this.getFilterLabel()\n\t\t\t\t\t\t: \"\",\n\t\t\t},\n\t\t\txAxis: this.getXAxis(),\n\t\t\texporting: this.getExporting(),\n\t\t\tlegend: { enabled: true },\n\t\t\tcredits: { enabled: false },\n\t\t};\n\n\t\tlet overrides = {};\n\n\t\tif (this.config?.highChartOverrides) {\n\t\t\toverrides = {\n\t\t\t\t...(typeof this.config?.highChartOverrides === \"object\"\n\t\t\t\t\t? (this.config?.highChartOverrides ?? {})\n\t\t\t\t\t: this.config?.highChartOverrides(options)),\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\t...options,\n\t\t\t...overrides,\n\t\t};\n\t}\n\n\tabstract getSeries(): HighCharts.SeriesOptionsType[];\n\n\tabstract getPlotOptions(): HighCharts.PlotOptions;\n\n\tabstract getXAxis(): HighCharts.XAxisOptions | undefined;\n\n\tgetYAxis(): HighCharts.YAxisOptions[] {\n\t\treturn [\n\t\t\t{\n\t\t\t\ttitle: {\n\t\t\t\t\ttext: \"\",\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\tcolor: \"#000000\",\n\t\t\t\t\t\tfontWeight: \"normal\",\n\t\t\t\t\t\tfontSize: \"14px\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tlabels: {\n\t\t\t\t\tenabled: true,\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\tcolor: \"#000000\",\n\t\t\t\t\t\tfontWeight: \"normal\",\n\t\t\t\t\t\tfontSize: \"14px\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tplotLines: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcolor: \"#000000\",\n\t\t\t\t\t\tdashStyle: \"Solid\",\n\t\t\t\t\t\twidth: 2,\n\t\t\t\t\t\tzIndex: 1000,\n\t\t\t\t\t\tlabel: { text: \"\" },\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcolor: \"#bbbbbb\",\n\t\t\t\t\t\tdashStyle: \"Solid\",\n\t\t\t\t\t\tzIndex: 1000,\n\t\t\t\t\t\twidth: 2,\n\t\t\t\t\t\tlabel: { text: \"\" },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t];\n\t}\n\n\tgetExporting(): HighCharts.ExportingOptions {\n\t\tconst name = this.config?.name ?? \"chart\";\n\t\treturn {\n\t\t\tfilename: `${name}`,\n\t\t\tsourceWidth: 1200,\n\t\t\tbuttons: {\n\t\t\t\tcontextButton: {\n\t\t\t\t\tenabled: false,\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate getFilterLabel() {\n\t\tconst filters = this.config.layout.filter ?? [];\n\t\tconst labels = filters.map((filter) => {\n\t\t\tconst dimensions =\n\t\t\t\tthis.analytics.metaData?.dimensions[filter] ?? [];\n\t\t\treturn dimensions.map((dimension) => {\n\t\t\t\tconst filterItem = this.analytics.metaData?.items[dimension];\n\t\t\t\treturn filterItem?.name;\n\t\t\t});\n\t\t});\n\t\treturn compact(labels.flat()).join(\", \");\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../../../../src/components/ChartAnalytics/models/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type { Analytics } from \"@hisptz/dhis2-utils\";\nimport { ChartConfig } from \"../types/props.js\";\nimport { compact } from \"lodash\";\nimport {\n\tChartOptions,\n\tExportingOptions,\n\tOptions,\n\tPaneOptions,\n\tPlotOptions,\n\tSeriesOptionsType,\n\tXAxisOptions,\n\tYAxisOptions,\n} from \"highcharts\";\n\nexport abstract class DHIS2Chart {\n\tid: string;\n\tanalytics: Analytics;\n\tconfig: ChartConfig;\n\n\tconstructor(id: string, analytics: Analytics, config: ChartConfig) {\n\t\tthis.id = id;\n\t\tthis.analytics = analytics;\n\t\tthis.config = config;\n\t}\n\n\tabstract getHighchartsType(): string;\n\n\tgetChartConfig(): ChartOptions & any {\n\t\treturn {\n\t\t\trenderTo: this.id,\n\t\t\tzoomType: \"xy\",\n\t\t\ttype: this.getHighchartsType(),\n\t\t\theight: this.config?.height,\n\t\t\tstyledMode: false,\n\t\t};\n\t}\n\n\tgetPane(): PaneOptions | undefined {\n\t\treturn undefined;\n\t}\n\n\tgetOptions(): Options {\n\t\tconst options = {\n\t\t\tyAxis: this.getYAxis(),\n\t\t\tchart: this.getChartConfig(),\n\t\t\tpane: this.getPane(),\n\t\t\tcolors: this.config?.colors ?? [\n\t\t\t\t\"#a8bf24\",\n\t\t\t\t\"#518cc3\",\n\t\t\t\t\"#d74554\",\n\t\t\t\t\"#ff9e21\",\n\t\t\t\t\"#968f8f\",\n\t\t\t\t\"#ba3ba1\",\n\t\t\t\t\"#ffda54\",\n\t\t\t\t\"#45beae\",\n\t\t\t\t\"#b98037\",\n\t\t\t\t\"#676767\",\n\t\t\t\t\"#6b2dd4\",\n\t\t\t\t\"#47792c\",\n\t\t\t\t\"#fcbdbd\",\n\t\t\t\t\"#830000\",\n\t\t\t\t\"#a5ffc0\",\n\t\t\t\t\"#000078\",\n\t\t\t\t\"#817c00\",\n\t\t\t\t\"#bdf023\",\n\t\t\t\t\"#fffac4\",\n\t\t\t],\n\t\t\tseries: this.getSeries(),\n\t\t\tplotOptions: this.getPlotOptions(),\n\t\t\ttitle: {\n\t\t\t\ttext: this.config.customTitle\n\t\t\t\t\t? this.config.customTitle\n\t\t\t\t\t: this.config.showFilterAsTitle\n\t\t\t\t\t\t? this.getFilterLabel()\n\t\t\t\t\t\t: \"\",\n\t\t\t},\n\t\t\txAxis: this.getXAxis(),\n\t\t\texporting: this.getExporting(),\n\t\t\tlegend: { enabled: true },\n\t\t\tcredits: { enabled: false },\n\t\t};\n\n\t\tlet overrides = {};\n\n\t\tif (this.config?.highChartOverrides) {\n\t\t\toverrides = {\n\t\t\t\t...(typeof this.config?.highChartOverrides === \"object\"\n\t\t\t\t\t? (this.config?.highChartOverrides ?? {})\n\t\t\t\t\t: this.config?.highChartOverrides(options)),\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\t...options,\n\t\t\t...overrides,\n\t\t};\n\t}\n\n\tabstract getSeries(): SeriesOptionsType[];\n\n\tabstract getPlotOptions(): PlotOptions;\n\n\tabstract getXAxis(): XAxisOptions | undefined;\n\n\tgetYAxis(): YAxisOptions[] {\n\t\treturn [\n\t\t\t{\n\t\t\t\ttitle: {\n\t\t\t\t\ttext: \"\",\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\tcolor: \"#000000\",\n\t\t\t\t\t\tfontWeight: \"normal\",\n\t\t\t\t\t\tfontSize: \"14px\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tlabels: {\n\t\t\t\t\tenabled: true,\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\tcolor: \"#000000\",\n\t\t\t\t\t\tfontWeight: \"normal\",\n\t\t\t\t\t\tfontSize: \"14px\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tplotLines: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcolor: \"#000000\",\n\t\t\t\t\t\tdashStyle: \"Solid\",\n\t\t\t\t\t\twidth: 2,\n\t\t\t\t\t\tzIndex: 1000,\n\t\t\t\t\t\tlabel: { text: \"\" },\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcolor: \"#bbbbbb\",\n\t\t\t\t\t\tdashStyle: \"Solid\",\n\t\t\t\t\t\tzIndex: 1000,\n\t\t\t\t\t\twidth: 2,\n\t\t\t\t\t\tlabel: { text: \"\" },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t];\n\t}\n\n\tgetExporting(): ExportingOptions {\n\t\tconst name = this.config?.name ?? \"chart\";\n\t\treturn {\n\t\t\tfilename: `${name}`,\n\t\t\tsourceWidth: 1200,\n\t\t\tbuttons: {\n\t\t\t\tcontextButton: {\n\t\t\t\t\tenabled: false,\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate getFilterLabel() {\n\t\tconst filters = this.config.layout.filter ?? [];\n\t\tconst labels = filters.map((filter) => {\n\t\t\tconst dimensions =\n\t\t\t\tthis.analytics.metaData?.dimensions[filter] ?? [];\n\t\t\treturn dimensions.map((dimension) => {\n\t\t\t\tconst filterItem = this.analytics.metaData?.items[dimension];\n\t\t\t\treturn filterItem?.name;\n\t\t\t});\n\t\t});\n\t\treturn compact(labels.flat()).join(\", \");\n\t}\n}\n"]}
@@ -0,0 +1,14 @@
1
+ import { DHIS2LineChart } from './line';
2
+
3
+ class DHIS2RadarChart extends DHIS2LineChart {
4
+ getChartConfig() {
5
+ return {
6
+ ...super.getChartConfig(),
7
+ polar: true
8
+ };
9
+ }
10
+ }
11
+
12
+ export { DHIS2RadarChart };
13
+ //# sourceMappingURL=radar.js.map
14
+ //# sourceMappingURL=radar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/components/ChartAnalytics/models/radar.ts"],"names":[],"mappings":";;AAEO,MAAM,wBAAwB,cAAe,CAAA;AAAA,EACnD,cAAsB,GAAA;AACrB,IAAO,OAAA;AAAA,MACN,GAAG,MAAM,cAAe,EAAA;AAAA,MACxB,KAAO,EAAA;AAAA,KACR;AAAA;AAEF","file":"radar.js","sourcesContent":["import { DHIS2LineChart } from \"./line\";\n\nexport class DHIS2RadarChart extends DHIS2LineChart {\n\tgetChartConfig(): any {\n\t\treturn {\n\t\t\t...super.getChartConfig(),\n\t\t\tpolar: true,\n\t\t};\n\t}\n}\n"]}
@@ -0,0 +1,15 @@
1
+ import { DHIS2LineChart } from './line';
2
+ import { getPointSeries } from '../utils/chart';
3
+
4
+ class DHIS2ScatterChart extends DHIS2LineChart {
5
+ getHighchartsType() {
6
+ return "scatter";
7
+ }
8
+ getSeries() {
9
+ return getPointSeries(this.analytics, this.config, "scatter");
10
+ }
11
+ }
12
+
13
+ export { DHIS2ScatterChart };
14
+ //# sourceMappingURL=scatter.js.map
15
+ //# sourceMappingURL=scatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/components/ChartAnalytics/models/scatter.ts"],"names":[],"mappings":";;;AAIO,MAAM,0BAA0B,cAAe,CAAA;AAAA,EACrD,iBAA4B,GAAA;AAC3B,IAAO,OAAA,SAAA;AAAA;AACR,EAEA,SAAiC,GAAA;AAChC,IAAA,OAAO,cAAe,CAAA,IAAA,CAAK,SAAW,EAAA,IAAA,CAAK,QAAQ,SAAS,CAAA;AAAA;AAE9D","file":"scatter.js","sourcesContent":["import { DHIS2LineChart } from \"./line\";\nimport { SeriesOptionsType } from \"highcharts\";\nimport { getPointSeries } from \"../utils/chart\";\n\nexport class DHIS2ScatterChart extends DHIS2LineChart {\n\tgetHighchartsType(): string {\n\t\treturn \"scatter\";\n\t}\n\n\tgetSeries(): SeriesOptionsType[] {\n\t\treturn getPointSeries(this.analytics, this.config, \"scatter\");\n\t}\n}\n"]}
@@ -1,11 +1,12 @@
1
- import HighChartsExportCSV from 'highcharts/modules/export-data.js';
2
- import HighChartsExport from 'highcharts/modules/exporting.js';
3
- import HighChartsFullScreen from 'highcharts/modules/full-screen.js';
1
+ import 'highcharts/modules/exporting';
2
+ import 'highcharts/modules/export-data';
3
+ import 'highcharts/modules/full-screen';
4
+ import 'highcharts/modules/accessibility';
4
5
 
5
6
  function setupHighchartsModules(highcharts) {
6
- HighChartsExport(highcharts);
7
- HighChartsExportCSV(highcharts);
8
- HighChartsFullScreen(highcharts);
7
+ console.warn(
8
+ `Due to highchart changes this is no longer needed. You can remove this call.`
9
+ );
9
10
  }
10
11
  function onFullScreenView(chartRef, options) {
11
12
  chartRef?.chart?.fullscreen.toggle();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/ChartAnalytics/services/export.ts"],"names":[],"mappings":";;;;AAMO,SAAS,uBAAuB,UAA+B,EAAA;AACrE,EAAA,gBAAA,CAAiB,UAAU,CAAA;AAC3B,EAAA,mBAAA,CAAoB,UAAU,CAAA;AAC9B,EAAA,oBAAA,CAAqB,UAAU,CAAA;AAChC;AAEO,SAAS,gBAAA,CACf,UACA,OACC,EAAA;AACD,EAAU,QAAA,EAAA,KAAA,EAAO,WAAW,MAAO,EAAA;AACpC;AAEO,SAAS,aAAA,CACf,UACA,OACC,EAAA;AACD,EAAU,QAAA,EAAA,KAAA,CAAM,YAAY,EAAE,IAAA,EAAM,mBAAqB,EAAA,OAAA,IAAW,EAAE,CAAA;AACvE;AAEO,SAAS,aAAA,CACf,UACA,OACC,EAAA;AACD,EAAA,QAAA,EAAU,MAAM,WAAY,EAAA;AAC7B;AAEO,MAAM,eAAkB,GAAA,CAC9B,QACA,EAAA,IAAA,EACA,OACI,KAAA;AACJ,EAAU,QAAA,EAAA,KAAA,CAAM,WAAY,CAAA,EAAE,IAAM,EAAA,CAAA,MAAA,EAAS,IAAI,CAAG,CAAA,EAAA,EAAG,OAAW,IAAA,EAAE,CAAA;AACrE;AAEa,MAAA,aAAA,GAAgB,CAC5B,QAAA,EACA,IACI,KAAA;AACJ,EAAM,MAAA,OAAA,GAAU,UAAU,KAAM,CAAA,OAAA;AAChC,EAAA,QAAA,EAAU,OAAO,MAAO,CAAA;AAAA,IACvB,GAAG,OAAA;AAAA,IACH,SAAW,EAAA;AAAA,MACV,GAAG,OAAS,EAAA,SAAA;AAAA,MACZ,SAAW,EAAA;AAAA;AACZ,GACA,CAAA;AACF","file":"export.js","sourcesContent":["import Highcharts from \"highcharts\";\nimport HighchartsReact from \"highcharts-react-official\";\nimport HighChartsExportCSV from \"highcharts/modules/export-data.js\";\nimport HighChartsExport from \"highcharts/modules/exporting.js\";\nimport HighChartsFullScreen from \"highcharts/modules/full-screen.js\";\n\nexport function setupHighchartsModules(highcharts: typeof Highcharts) {\n\tHighChartsExport(highcharts);\n\tHighChartsExportCSV(highcharts);\n\tHighChartsFullScreen(highcharts);\n}\n\nexport function onFullScreenView(\n\tchartRef: HighchartsReact.RefObject,\n\toptions?: Highcharts.Options,\n) {\n\tchartRef?.chart?.fullscreen.toggle();\n}\n\nexport function onPDFDownload(\n\tchartRef: HighchartsReact.RefObject,\n\toptions?: Highcharts.Options,\n) {\n\tchartRef?.chart.exportChart({ type: \"application/pdf\" }, options ?? {});\n}\n\nexport function onCSVDownload(\n\tchartRef: HighchartsReact.RefObject,\n\toptions?: Highcharts.Options,\n) {\n\tchartRef?.chart.downloadCSV();\n}\n\nexport const onImageDownload = (\n\tchartRef: HighchartsReact.RefObject,\n\ttype: \"png\" | \"svg+xml\" | \"jpeg\",\n\toptions?: Highcharts.Options,\n) => {\n\tchartRef?.chart.exportChart({ type: `image/${type}` }, options ?? {});\n};\n\nexport const onViewAsTable = (\n\tchartRef: HighchartsReact.RefObject,\n\tshow: boolean,\n) => {\n\tconst options = chartRef?.chart.options;\n\tchartRef?.chart?.update({\n\t\t...options,\n\t\texporting: {\n\t\t\t...options?.exporting,\n\t\t\tshowTable: show,\n\t\t},\n\t});\n};\n"]}
1
+ {"version":3,"sources":["../../../../../src/components/ChartAnalytics/services/export.ts"],"names":[],"mappings":";;;;;AAUO,SAAS,uBAAuB,UAA+B,EAAA;AACrE,EAAQ,OAAA,CAAA,IAAA;AAAA,IACP,CAAA,4EAAA;AAAA,GACD;AACD;AAEO,SAAS,gBAAA,CACf,UACA,OACC,EAAA;AACD,EAAU,QAAA,EAAA,KAAA,EAAO,WAAW,MAAO,EAAA;AACpC;AAEO,SAAS,aAAA,CACf,UACA,OACC,EAAA;AACD,EAAU,QAAA,EAAA,KAAA,CAAM,YAAY,EAAE,IAAA,EAAM,mBAAqB,EAAA,OAAA,IAAW,EAAE,CAAA;AACvE;AAEO,SAAS,aAAA,CACf,UACA,OACC,EAAA;AACD,EAAA,QAAA,EAAU,MAAM,WAAY,EAAA;AAC7B;AAEO,MAAM,eAAkB,GAAA,CAC9B,QACA,EAAA,IAAA,EACA,OACI,KAAA;AACJ,EAAU,QAAA,EAAA,KAAA,CAAM,WAAY,CAAA,EAAE,IAAM,EAAA,CAAA,MAAA,EAAS,IAAI,CAAG,CAAA,EAAA,EAAG,OAAW,IAAA,EAAE,CAAA;AACrE;AAEa,MAAA,aAAA,GAAgB,CAC5B,QAAA,EACA,IACI,KAAA;AACJ,EAAM,MAAA,OAAA,GAAU,UAAU,KAAM,CAAA,OAAA;AAChC,EAAA,QAAA,EAAU,OAAO,MAAO,CAAA;AAAA,IACvB,GAAG,OAAA;AAAA,IACH,SAAW,EAAA;AAAA,MACV,GAAG,OAAS,EAAA,SAAA;AAAA,MACZ,SAAW,EAAA;AAAA;AACZ,GACA,CAAA;AACF","file":"export.js","sourcesContent":["import * as Highcharts from \"highcharts\";\nimport HighchartsReact from \"highcharts-react-official\";\nimport \"highcharts/modules/exporting\";\nimport \"highcharts/modules/export-data\";\nimport \"highcharts/modules/full-screen\";\nimport \"highcharts/modules/accessibility\";\n\n/**\n * @deprecated since `v2`. Not needed for highcharts > v12\n * */\nexport function setupHighchartsModules(highcharts: typeof Highcharts) {\n\tconsole.warn(\n\t\t`Due to highchart changes this is no longer needed. You can remove this call.`,\n\t);\n}\n\nexport function onFullScreenView(\n\tchartRef: HighchartsReact.RefObject,\n\toptions?: Highcharts.Options,\n) {\n\tchartRef?.chart?.fullscreen.toggle();\n}\n\nexport function onPDFDownload(\n\tchartRef: HighchartsReact.RefObject,\n\toptions?: Highcharts.Options,\n) {\n\tchartRef?.chart.exportChart({ type: \"application/pdf\" }, options ?? {});\n}\n\nexport function onCSVDownload(\n\tchartRef: HighchartsReact.RefObject,\n\toptions?: Highcharts.Options,\n) {\n\tchartRef?.chart.downloadCSV();\n}\n\nexport const onImageDownload = (\n\tchartRef: HighchartsReact.RefObject,\n\ttype: \"png\" | \"svg+xml\" | \"jpeg\",\n\toptions?: Highcharts.Options,\n) => {\n\tchartRef?.chart.exportChart({ type: `image/${type}` }, options ?? {});\n};\n\nexport const onViewAsTable = (\n\tchartRef: HighchartsReact.RefObject,\n\tshow: boolean,\n) => {\n\tconst options = chartRef?.chart.options;\n\tchartRef?.chart?.update({\n\t\t...options,\n\t\texporting: {\n\t\t\t...options?.exporting,\n\t\t\tshowTable: show,\n\t\t},\n\t});\n};\n"]}
@@ -4,6 +4,10 @@ import { DHIS2LineChart } from '../models/line.js';
4
4
  import { DHIS2MultiSeriesChart } from '../models/multi-series.js';
5
5
  import { DHIS2PieChart } from '../models/pie.js';
6
6
  import { DHIS2StackedBarChart, DHIS2BarChart } from '../models/bar.js';
7
+ import { DHIS2GaugeChart } from '../models/gauge';
8
+ import { DHISStackedAreaChart, DHIS2AreaChart } from '../models/area';
9
+ import { DHIS2RadarChart } from '../models/radar';
10
+ import { DHIS2ScatterChart } from '../models/scatter';
7
11
 
8
12
  function getDimensionHeaderIndex(headers, name) {
9
13
  return findIndex(headers, { name });
@@ -119,8 +123,18 @@ function getChartInstance(id, analytics, config) {
119
123
  return new DHIS2PieChart(id, analytics, config);
120
124
  case "line":
121
125
  return new DHIS2LineChart(id, analytics, config);
126
+ case "area":
127
+ return new DHIS2AreaChart(id, analytics, config);
128
+ case "stacked-area":
129
+ return new DHISStackedAreaChart(id, analytics, config);
122
130
  case "multi-series":
123
131
  return new DHIS2MultiSeriesChart(id, analytics, config);
132
+ case "gauge":
133
+ return new DHIS2GaugeChart(id, analytics, config);
134
+ case "radar":
135
+ return new DHIS2RadarChart(id, analytics, config);
136
+ case "scatter":
137
+ return new DHIS2ScatterChart(id, analytics, config);
124
138
  default:
125
139
  throw new Error(`Unsupported chart type: ${config.type}`);
126
140
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/ChartAnalytics/utils/chart.ts"],"names":["header","row"],"mappings":"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","file":"chart.js","sourcesContent":["import type {\n\tAnalytics,\n\tAnalyticsHeader,\n\tAnalyticsMetadata,\n} from \"@hisptz/dhis2-utils\";\nimport { compact, find, findIndex, head, isEmpty, set } from \"lodash\";\nimport { DHIS2Chart } from \"../models/index.js\";\nimport { DHIS2ColumnChart, DHIS2StackedColumnChart } from \"../models/column.js\";\nimport { DHIS2LineChart } from \"../models/line.js\";\nimport { DHIS2MultiSeriesChart } from \"../models/multi-series.js\";\nimport { DHIS2PieChart } from \"../models/pie.js\";\nimport { ChartConfig, ChartType } from \"../types/props.js\";\nimport { DHIS2BarChart, DHIS2StackedBarChart } from \"../models/bar.js\";\n\nexport function getDimensionHeaderIndex(\n\theaders: AnalyticsHeader[],\n\tname: string,\n): number {\n\treturn findIndex(headers, { name });\n}\n\nexport function getPointSeries(\n\tanalytics: Analytics,\n\tconfig: ChartConfig,\n\thighchartsType: string,\n) {\n\tconst series: string[] = config.layout.series;\n\n\treturn series.map((seriesName: string) => {\n\t\tconst header = analytics?.headers?.find(\n\t\t\t(header: any) => header.name === seriesName,\n\t\t);\n\t\tif (!header) {\n\t\t\treturn undefined;\n\t\t}\n\t\tif (analytics?.metaData) {\n\t\t\treturn getColumnSeries(analytics, header, config, highchartsType);\n\t\t}\n\t})[0];\n}\n\nexport function getColumnSeries(\n\tanalytics: Analytics,\n\theader: AnalyticsHeader,\n\tconfig: ChartConfig,\n\thighchartsType: string,\n): any {\n\tconst headerIndex = analytics?.headers?.findIndex(\n\t\t(h: { name: any }) => header.name === h.name,\n\t);\n\tconst valueIndex = analytics?.headers?.findIndex(\n\t\t(h: { name: string }) => h.name === \"value\",\n\t);\n\n\tconst colors = config.colors ?? [];\n\n\tconst { items, dimensions } = analytics?.metaData ?? {};\n\tconst categoriesDimension = config.layout.category;\n\n\tconst seriesDimensionValues: string[] =\n\t\tdimensions?.[header.name as \"dx\" | \"ou\" | \"pe\"] ?? [];\n\n\treturn head(\n\t\tcategoriesDimension?.map((categoryDimension: string) => {\n\t\t\tconst categories: string[] = dimensions?.[\n\t\t\t\tcategoryDimension as \"dx\" | \"ou\" | \"pe\"\n\t\t\t] as any;\n\t\t\tconst categoryDimensionIndex = analytics?.headers?.findIndex(\n\t\t\t\t(h: { name: string }) => h.name === categoryDimension,\n\t\t\t);\n\t\t\treturn seriesDimensionValues?.map(\n\t\t\t\t(seriesDimensionValue: string, index) => {\n\t\t\t\t\tconst data = categories?.map((category: string) => {\n\t\t\t\t\t\tconst row = find(\n\t\t\t\t\t\t\tanalytics?.rows,\n\t\t\t\t\t\t\t(row: any) =>\n\t\t\t\t\t\t\t\trow[headerIndex ?? -1] ===\n\t\t\t\t\t\t\t\t\tseriesDimensionValue &&\n\t\t\t\t\t\t\t\trow[categoryDimensionIndex ?? -1] === category,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn row?.[valueIndex ?? -1]\n\t\t\t\t\t\t\t? parseFloat(row?.[valueIndex ?? -1])\n\t\t\t\t\t\t\t: null;\n\t\t\t\t\t});\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: seriesDimensionValue,\n\t\t\t\t\t\tname: items?.[seriesDimensionValue as any]?.name,\n\t\t\t\t\t\tdata,\n\t\t\t\t\t\ttype: highchartsType,\n\t\t\t\t\t\tcolor: colors[index % colors.length],\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t);\n\t\t}),\n\t);\n}\n\nfunction getCategories(\n\t{ name }: AnalyticsHeader,\n\t{ items, dimensions }: AnalyticsMetadata,\n): string[] {\n\tconst categories: string[] = dimensions?.[\n\t\tname as \"dx\" | \"ou\" | \"pe\"\n\t] as any;\n\n\treturn categories?.map((category: string) => {\n\t\treturn items[category as any]?.name ?? \"\";\n\t}) as unknown as string[];\n}\n\nexport function getAllCategories(\n\tanalytics: Analytics,\n\tconfig: ChartConfig,\n): string[] {\n\tconst categories = config.layout.category;\n\n\treturn compact(\n\t\tcategories?.map((category: string) => {\n\t\t\tconst header = analytics?.headers?.find(\n\t\t\t\t(header: any) => header.name === category,\n\t\t\t);\n\t\t\tif (!header) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif (analytics?.metaData) {\n\t\t\t\treturn getCategories(header, analytics?.metaData);\n\t\t\t}\n\t\t}),\n\t)[0];\n}\n\nexport function updateLayout(\n\tconfig: ChartConfig,\n\t{ type }: { type: ChartType },\n) {\n\tif (type === config.type) {\n\t\treturn config.layout;\n\t}\n\n\tconst updatedLayout = { ...config.layout };\n\n\tswitch (type) {\n\t\tcase \"pie\":\n\t\t\tset(updatedLayout, \"category\", []);\n\t\t\tif (isEmpty(updatedLayout.series)) {\n\t\t\t\tif (!isEmpty(config.layout.category)) {\n\t\t\t\t\tset(updatedLayout, \"series\", [\n\t\t\t\t\t\thead(config.layout.category),\n\t\t\t\t\t]);\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(\"Invalid layout for pie chart\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (updatedLayout.series.length > 1) {\n\t\t\t\tset(updatedLayout, \"series\", [head(updatedLayout.series)]);\n\t\t\t}\n\t}\n\n\treturn updatedLayout;\n}\n\nexport function getChartInstance(\n\tid: string,\n\tanalytics: Analytics,\n\tconfig: ChartConfig,\n): DHIS2Chart {\n\tswitch (config.type) {\n\t\tcase \"column\":\n\t\t\treturn new DHIS2ColumnChart(id, analytics, config);\n\t\tcase \"bar\":\n\t\t\treturn new DHIS2BarChart(id, analytics, config);\n\t\tcase \"stacked-bar\":\n\t\t\treturn new DHIS2StackedBarChart(id, analytics, config);\n\t\tcase \"stacked-column\":\n\t\t\treturn new DHIS2StackedColumnChart(id, analytics, config);\n\t\tcase \"pie\":\n\t\t\treturn new DHIS2PieChart(id, analytics, config);\n\t\tcase \"line\":\n\t\t\treturn new DHIS2LineChart(id, analytics, config);\n\t\tcase \"multi-series\":\n\t\t\treturn new DHIS2MultiSeriesChart(id, analytics, config);\n\t\tdefault:\n\t\t\tthrow new Error(`Unsupported chart type: ${config.type}`);\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../../../../src/components/ChartAnalytics/utils/chart.ts"],"names":["header","row"],"mappings":"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","file":"chart.js","sourcesContent":["import type {\n\tAnalytics,\n\tAnalyticsHeader,\n\tAnalyticsMetadata,\n} from \"@hisptz/dhis2-utils\";\nimport { compact, find, findIndex, head, isEmpty, set } from \"lodash\";\nimport { DHIS2Chart } from \"../models\";\nimport { DHIS2ColumnChart, DHIS2StackedColumnChart } from \"../models/column.js\";\nimport { DHIS2LineChart } from \"../models/line.js\";\nimport { DHIS2MultiSeriesChart } from \"../models/multi-series.js\";\nimport { DHIS2PieChart } from \"../models/pie.js\";\nimport { ChartConfig, ChartType } from \"../types/props.js\";\nimport { DHIS2BarChart, DHIS2StackedBarChart } from \"../models/bar.js\";\nimport { DHIS2GaugeChart } from \"../models/gauge\";\nimport { DHIS2AreaChart, DHISStackedAreaChart } from \"../models/area\";\nimport { DHIS2RadarChart } from \"../models/radar\";\nimport { DHIS2ScatterChart } from \"../models/scatter\";\n\nexport function getDimensionHeaderIndex(\n\theaders: AnalyticsHeader[],\n\tname: string,\n): number {\n\treturn findIndex(headers, { name });\n}\n\nexport function getPointSeries(\n\tanalytics: Analytics,\n\tconfig: ChartConfig,\n\thighchartsType: string,\n) {\n\tconst series: string[] = config.layout.series;\n\n\treturn series.map((seriesName: string) => {\n\t\tconst header = analytics?.headers?.find(\n\t\t\t(header: any) => header.name === seriesName,\n\t\t);\n\t\tif (!header) {\n\t\t\treturn undefined;\n\t\t}\n\t\tif (analytics?.metaData) {\n\t\t\treturn getColumnSeries(analytics, header, config, highchartsType);\n\t\t}\n\t})[0];\n}\n\nexport function getColumnSeries(\n\tanalytics: Analytics,\n\theader: AnalyticsHeader,\n\tconfig: ChartConfig,\n\thighchartsType: string,\n): any {\n\tconst headerIndex = analytics?.headers?.findIndex(\n\t\t(h: { name: any }) => header.name === h.name,\n\t);\n\tconst valueIndex = analytics?.headers?.findIndex(\n\t\t(h: { name: string }) => h.name === \"value\",\n\t);\n\n\tconst colors = config.colors ?? [];\n\n\tconst { items, dimensions } = analytics?.metaData ?? {};\n\tconst categoriesDimension = config.layout.category;\n\n\tconst seriesDimensionValues: string[] =\n\t\tdimensions?.[header.name as \"dx\" | \"ou\" | \"pe\"] ?? [];\n\n\treturn head(\n\t\tcategoriesDimension?.map((categoryDimension: string) => {\n\t\t\tconst categories: string[] = dimensions?.[\n\t\t\t\tcategoryDimension as \"dx\" | \"ou\" | \"pe\"\n\t\t\t] as any;\n\t\t\tconst categoryDimensionIndex = analytics?.headers?.findIndex(\n\t\t\t\t(h: { name: string }) => h.name === categoryDimension,\n\t\t\t);\n\t\t\treturn seriesDimensionValues?.map(\n\t\t\t\t(seriesDimensionValue: string, index) => {\n\t\t\t\t\tconst data = categories?.map((category: string) => {\n\t\t\t\t\t\tconst row = find(\n\t\t\t\t\t\t\tanalytics?.rows,\n\t\t\t\t\t\t\t(row: any) =>\n\t\t\t\t\t\t\t\trow[headerIndex ?? -1] ===\n\t\t\t\t\t\t\t\t\tseriesDimensionValue &&\n\t\t\t\t\t\t\t\trow[categoryDimensionIndex ?? -1] === category,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn row?.[valueIndex ?? -1]\n\t\t\t\t\t\t\t? parseFloat(row?.[valueIndex ?? -1])\n\t\t\t\t\t\t\t: null;\n\t\t\t\t\t});\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: seriesDimensionValue,\n\t\t\t\t\t\tname: items?.[seriesDimensionValue as any]?.name,\n\t\t\t\t\t\tdata,\n\t\t\t\t\t\ttype: highchartsType,\n\t\t\t\t\t\tcolor: colors[index % colors.length],\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t);\n\t\t}),\n\t);\n}\n\nfunction getCategories(\n\t{ name }: AnalyticsHeader,\n\t{ items, dimensions }: AnalyticsMetadata,\n): string[] {\n\tconst categories: string[] = dimensions?.[\n\t\tname as \"dx\" | \"ou\" | \"pe\"\n\t] as any;\n\n\treturn categories?.map((category: string) => {\n\t\treturn items[category as any]?.name ?? \"\";\n\t}) as unknown as string[];\n}\n\nexport function getAllCategories(\n\tanalytics: Analytics,\n\tconfig: ChartConfig,\n): string[] {\n\tconst categories = config.layout.category;\n\n\treturn compact(\n\t\tcategories?.map((category: string) => {\n\t\t\tconst header = analytics?.headers?.find(\n\t\t\t\t(header: any) => header.name === category,\n\t\t\t);\n\t\t\tif (!header) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif (analytics?.metaData) {\n\t\t\t\treturn getCategories(header, analytics?.metaData);\n\t\t\t}\n\t\t}),\n\t)[0];\n}\n\nexport function updateLayout(\n\tconfig: ChartConfig,\n\t{ type }: { type: ChartType },\n) {\n\tif (type === config.type) {\n\t\treturn config.layout;\n\t}\n\n\tconst updatedLayout = { ...config.layout };\n\n\tswitch (type) {\n\t\tcase \"pie\":\n\t\t\tset(updatedLayout, \"category\", []);\n\t\t\tif (isEmpty(updatedLayout.series)) {\n\t\t\t\tif (!isEmpty(config.layout.category)) {\n\t\t\t\t\tset(updatedLayout, \"series\", [\n\t\t\t\t\t\thead(config.layout.category),\n\t\t\t\t\t]);\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(\"Invalid layout for pie chart\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (updatedLayout.series.length > 1) {\n\t\t\t\tset(updatedLayout, \"series\", [head(updatedLayout.series)]);\n\t\t\t}\n\t}\n\n\treturn updatedLayout;\n}\n\nexport function getChartInstance(\n\tid: string,\n\tanalytics: Analytics,\n\tconfig: ChartConfig,\n): DHIS2Chart {\n\tswitch (config.type) {\n\t\tcase \"column\":\n\t\t\treturn new DHIS2ColumnChart(id, analytics, config);\n\t\tcase \"bar\":\n\t\t\treturn new DHIS2BarChart(id, analytics, config);\n\t\tcase \"stacked-bar\":\n\t\t\treturn new DHIS2StackedBarChart(id, analytics, config);\n\t\tcase \"stacked-column\":\n\t\t\treturn new DHIS2StackedColumnChart(id, analytics, config);\n\t\tcase \"pie\":\n\t\t\treturn new DHIS2PieChart(id, analytics, config);\n\t\tcase \"line\":\n\t\t\treturn new DHIS2LineChart(id, analytics, config);\n\t\tcase \"area\":\n\t\t\treturn new DHIS2AreaChart(id, analytics, config);\n\t\tcase \"stacked-area\":\n\t\t\treturn new DHISStackedAreaChart(id, analytics, config);\n\t\tcase \"multi-series\":\n\t\t\treturn new DHIS2MultiSeriesChart(id, analytics, config);\n\t\tcase \"gauge\":\n\t\t\treturn new DHIS2GaugeChart(id, analytics, config);\n\t\tcase \"radar\":\n\t\t\treturn new DHIS2RadarChart(id, analytics, config);\n\t\tcase \"scatter\":\n\t\t\treturn new DHIS2ScatterChart(id, analytics, config);\n\t\tdefault:\n\t\t\tthrow new Error(`Unsupported chart type: ${config.type}`);\n\t}\n}\n"]}
@@ -19,7 +19,7 @@ function MapLayerArea({
19
19
  }) {
20
20
  const { layers } = useMapLayers();
21
21
  return /* @__PURE__ */ jsxs(Fragment, { children: [
22
- !base?.enabled && /* @__PURE__ */ jsx(
22
+ base?.enabled && /* @__PURE__ */ jsx(
23
23
  TileLayer,
24
24
  {
25
25
  id,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/components/Map/components/MapArea/index.tsx"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { uid } from \"@hisptz/dhis2-utils\";\nimport { Map as LeafletMap } from \"leaflet\";\nimport { isEmpty } from \"lodash\";\nimport React, { forwardRef, useRef } from \"react\";\nimport { LayersControl, MapContainer, TileLayer } from \"react-leaflet\";\nimport { useMapBounds } from \"../../hooks/map.js\";\nimport MapControl from \"../MapControls/index.js\";\nimport MapLayer from \"../MapLayer/index.js\";\nimport LegendArea from \"../MapLayer/components/LegendArea/index.js\";\nimport { CustomThematicLayer } from \"../MapLayer/interfaces/index.js\";\nimport { MapLayersProvider } from \"../MapProvider/components/MapLayerProvider/index.js\";\nimport { useMapLayers } from \"../MapProvider/hooks/index.js\";\nimport {\n\tMapAreaProps,\n\tMapControls,\n\tMapLegendConfig,\n} from \"./interfaces/index.js\";\nimport MapUpdater from \"../MapUpdater/index.js\";\n\nfunction MapLayerArea({\n\tid,\n\tbase = { enabled: true },\n\tcontrols,\n\tlegends,\n}: {\n\tid: string;\n\tbase?: {\n\t\turl?: string;\n\t\tattribution?: string;\n\t\tenabled?: boolean;\n\t};\n\tcontrols?: MapControls[];\n\tlegends?: MapLegendConfig;\n}) {\n\tconst { layers } = useMapLayers();\n\n\treturn (\n\t\t<>\n\t\t\t{!base?.enabled && (\n\t\t\t\t<TileLayer\n\t\t\t\t\tid={id}\n\t\t\t\t\tattribution={\n\t\t\t\t\t\tbase?.attribution ??\n\t\t\t\t\t\t'&copy; <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> | &copy; <a href=\"https://carto.com/attribution\">CARTO</a>'\n\t\t\t\t\t}\n\t\t\t\t\turl={\n\t\t\t\t\t\tbase?.url ??\n\t\t\t\t\t\t\"https://cartodb-basemaps-{s}.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png\"\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{controls?.map((control) => (\n\t\t\t\t<MapControl\n\t\t\t\t\tmapId={id}\n\t\t\t\t\tkey={`${control.type}-control`}\n\t\t\t\t\t{...control}\n\t\t\t\t/>\n\t\t\t))}\n\t\t\t{!isEmpty(layers) && (\n\t\t\t\t<LayersControl hideSingleBase position={\"topleft\"}>\n\t\t\t\t\t{(layers as CustomThematicLayer[]).map(\n\t\t\t\t\t\t(layer: CustomThematicLayer, index) => (\n\t\t\t\t\t\t\t<MapLayer\n\t\t\t\t\t\t\t\tkey={layer.id}\n\t\t\t\t\t\t\t\tlayer={layer}\n\t\t\t\t\t\t\t\tindex={index}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t),\n\t\t\t\t\t)}\n\t\t\t\t</LayersControl>\n\t\t\t)}\n\t\t\t{!isEmpty(layers) && (\n\t\t\t\t<LegendArea\n\t\t\t\t\tlegends={legends}\n\t\t\t\t\tlayers={layers as CustomThematicLayer[]}\n\t\t\t\t\tposition={\"topright\"}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</>\n\t);\n}\n\nconst MapArea = (\n\t{\n\t\tbase,\n\t\tcontrols,\n\t\tmapOptions,\n\t\tkey,\n\t\tlegends,\n\t\tlayers,\n\t\tanalyticsOptions,\n\t}: MapAreaProps,\n\tref: React.Ref<LeafletMap> | undefined,\n) => {\n\tconst { center, bounds } = useMapBounds();\n\tconst { current: id } = useRef<string>(uid());\n\tconst containerRef = useRef<HTMLDivElement | null>(null);\n\n\treturn (\n\t\t<div\n\t\t\tref={containerRef}\n\t\t\tid={`${id}-\"map-container`}\n\t\t\tstyle={{ height: \"100%\", width: \"100%\" }}\n\t\t>\n\t\t\t<MapContainer\n\t\t\t\tattributionControl\n\t\t\t\tref={ref}\n\t\t\t\tid={id}\n\t\t\t\tcenter={center}\n\t\t\t\tbounceAtZoomLimits\n\t\t\t\tbounds={bounds}\n\t\t\t\tstyle={{ height: \"100%\", width: \"100%\", minHeight: 500 }}\n\t\t\t\tkey={key}\n\t\t\t\ttrackResize\n\t\t\t\t{...mapOptions}\n\t\t\t>\n\t\t\t\t<MapUpdater containerRef={containerRef} bounds={bounds} />\n\t\t\t\t<MapLayersProvider\n\t\t\t\t\tanalyticsOptions={analyticsOptions}\n\t\t\t\t\tlayers={layers}\n\t\t\t\t>\n\t\t\t\t\t<MapLayerArea\n\t\t\t\t\t\tbase={base}\n\t\t\t\t\t\tid={id}\n\t\t\t\t\t\tcontrols={controls}\n\t\t\t\t\t\tlegends={legends}\n\t\t\t\t\t/>\n\t\t\t\t</MapLayersProvider>\n\t\t\t</MapContainer>\n\t\t</div>\n\t);\n};\n\nexport default forwardRef(MapArea);\n"]}
1
+ {"version":3,"sources":["../../../../../../src/components/Map/components/MapArea/index.tsx"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { uid } from \"@hisptz/dhis2-utils\";\nimport { Map as LeafletMap } from \"leaflet\";\nimport { isEmpty } from \"lodash\";\nimport React, { forwardRef, useRef } from \"react\";\nimport { LayersControl, MapContainer, TileLayer } from \"react-leaflet\";\nimport { useMapBounds } from \"../../hooks/map.js\";\nimport MapControl from \"../MapControls/index.js\";\nimport MapLayer from \"../MapLayer/index.js\";\nimport LegendArea from \"../MapLayer/components/LegendArea/index.js\";\nimport { CustomThematicLayer } from \"../MapLayer/interfaces/index.js\";\nimport { MapLayersProvider } from \"../MapProvider/components/MapLayerProvider/index.js\";\nimport { useMapLayers } from \"../MapProvider/hooks/index.js\";\nimport {\n\tMapAreaProps,\n\tMapControls,\n\tMapLegendConfig,\n} from \"./interfaces/index.js\";\nimport MapUpdater from \"../MapUpdater/index.js\";\n\nfunction MapLayerArea({\n\tid,\n\tbase = { enabled: true },\n\tcontrols,\n\tlegends,\n}: {\n\tid: string;\n\tbase?: {\n\t\turl?: string;\n\t\tattribution?: string;\n\t\tenabled?: boolean;\n\t};\n\tcontrols?: MapControls[];\n\tlegends?: MapLegendConfig;\n}) {\n\tconst { layers } = useMapLayers();\n\n\treturn (\n\t\t<>\n\t\t\t{base?.enabled && (\n\t\t\t\t<TileLayer\n\t\t\t\t\tid={id}\n\t\t\t\t\tattribution={\n\t\t\t\t\t\tbase?.attribution ??\n\t\t\t\t\t\t'&copy; <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> | &copy; <a href=\"https://carto.com/attribution\">CARTO</a>'\n\t\t\t\t\t}\n\t\t\t\t\turl={\n\t\t\t\t\t\tbase?.url ??\n\t\t\t\t\t\t\"https://cartodb-basemaps-{s}.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png\"\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{controls?.map((control) => (\n\t\t\t\t<MapControl\n\t\t\t\t\tmapId={id}\n\t\t\t\t\tkey={`${control.type}-control`}\n\t\t\t\t\t{...control}\n\t\t\t\t/>\n\t\t\t))}\n\t\t\t{!isEmpty(layers) && (\n\t\t\t\t<LayersControl hideSingleBase position={\"topleft\"}>\n\t\t\t\t\t{(layers as CustomThematicLayer[]).map(\n\t\t\t\t\t\t(layer: CustomThematicLayer, index) => (\n\t\t\t\t\t\t\t<MapLayer\n\t\t\t\t\t\t\t\tkey={layer.id}\n\t\t\t\t\t\t\t\tlayer={layer}\n\t\t\t\t\t\t\t\tindex={index}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t),\n\t\t\t\t\t)}\n\t\t\t\t</LayersControl>\n\t\t\t)}\n\t\t\t{!isEmpty(layers) && (\n\t\t\t\t<LegendArea\n\t\t\t\t\tlegends={legends}\n\t\t\t\t\tlayers={layers as CustomThematicLayer[]}\n\t\t\t\t\tposition={\"topright\"}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</>\n\t);\n}\n\nconst MapArea = (\n\t{\n\t\tbase,\n\t\tcontrols,\n\t\tmapOptions,\n\t\tkey,\n\t\tlegends,\n\t\tlayers,\n\t\tanalyticsOptions,\n\t}: MapAreaProps,\n\tref: React.Ref<LeafletMap> | undefined,\n) => {\n\tconst { center, bounds } = useMapBounds();\n\tconst { current: id } = useRef<string>(uid());\n\tconst containerRef = useRef<HTMLDivElement | null>(null);\n\n\treturn (\n\t\t<div\n\t\t\tref={containerRef}\n\t\t\tid={`${id}-\"map-container`}\n\t\t\tstyle={{ height: \"100%\", width: \"100%\" }}\n\t\t>\n\t\t\t<MapContainer\n\t\t\t\tattributionControl\n\t\t\t\tref={ref}\n\t\t\t\tid={id}\n\t\t\t\tcenter={center}\n\t\t\t\tbounceAtZoomLimits\n\t\t\t\tbounds={bounds}\n\t\t\t\tstyle={{ height: \"100%\", width: \"100%\", minHeight: 500 }}\n\t\t\t\tkey={key}\n\t\t\t\ttrackResize\n\t\t\t\t{...mapOptions}\n\t\t\t>\n\t\t\t\t<MapUpdater containerRef={containerRef} bounds={bounds} />\n\t\t\t\t<MapLayersProvider\n\t\t\t\t\tanalyticsOptions={analyticsOptions}\n\t\t\t\t\tlayers={layers}\n\t\t\t\t>\n\t\t\t\t\t<MapLayerArea\n\t\t\t\t\t\tbase={base}\n\t\t\t\t\t\tid={id}\n\t\t\t\t\t\tcontrols={controls}\n\t\t\t\t\t\tlegends={legends}\n\t\t\t\t\t/>\n\t\t\t\t</MapLayersProvider>\n\t\t\t</MapContainer>\n\t\t</div>\n\t);\n};\n\nexport default forwardRef(MapArea);\n"]}
@@ -1,5 +1,11 @@
1
1
  import React from "react";
2
2
  import "./styles/custom-highchart.css";
3
+ import "highcharts/modules/exporting";
4
+ import "highcharts/modules/export-data";
5
+ import "highcharts/modules/full-screen";
6
+ import "highcharts/highcharts-more";
7
+ import "highcharts/modules/solid-gauge";
8
+ import "highcharts/modules/accessibility";
3
9
  import { ChartAnalyticsProps } from "./types/props.js";
4
10
  export * from "./services/export.js";
5
11
  export * from "./types/props.js";
@@ -1 +1 @@
1
- {"version":3,"file":"DHIS2Chart.d.ts","sourceRoot":"","sources":["../../../../src/components/ChartAnalytics/DHIS2Chart.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA6B,MAAM,OAAO,CAAC;AAElD,OAAO,+BAA+B,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oCAAoC,CAAC;AAyBnD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,yBAAyB,CAAC,mBAAmB,CAG1E,CAAC;AAEH;;KAEK;AACL,eAAO,MAAM,cAAc,sDAAa,CAAC"}
1
+ {"version":3,"file":"DHIS2Chart.d.ts","sourceRoot":"","sources":["../../../../src/components/ChartAnalytics/DHIS2Chart.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA6B,MAAM,OAAO,CAAC;AAElD,OAAO,+BAA+B,CAAC;AACvC,OAAO,8BAA8B,CAAC;AACtC,OAAO,gCAAgC,CAAC;AACxC,OAAO,gCAAgC,CAAC;AACxC,OAAO,4BAA4B,CAAC;AACpC,OAAO,gCAAgC,CAAC;AACxC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oCAAoC,CAAC;AA6BnD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,yBAAyB,CAAC,mBAAmB,CAG1E,CAAC;AAEH;;KAEK;AACL,eAAO,MAAM,cAAc,sDAAa,CAAC"}
@@ -1,12 +1,12 @@
1
1
  import type { Analytics } from "@hisptz/dhis2-utils";
2
- import HighCharts from "highcharts";
2
+ import { Options } from "highcharts";
3
3
  import { ChartConfig, ChartType } from "../types/props.js";
4
4
  export declare function useChart({ id, analytics, config, }: {
5
5
  id: string;
6
6
  analytics: Analytics;
7
7
  config: ChartConfig;
8
8
  }): {
9
- chart?: HighCharts.Options;
9
+ chart?: Options;
10
10
  changeChartType: (type: ChartType) => void;
11
11
  };
12
12
  //# sourceMappingURL=useChart.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useChart.d.ts","sourceRoot":"","sources":["../../../../../src/components/ChartAnalytics/hooks/useChart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,UAAU,MAAM,YAAY,CAAC;AAGpC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG3D,wBAAgB,QAAQ,CAAC,EACxB,EAAE,EACF,SAAS,EACT,MAAM,GACN,EAAE;IACF,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,WAAW,CAAC;CACpB,GAAG;IACH,KAAK,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC;IAC3B,eAAe,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;CAC3C,CAkCA"}
1
+ {"version":3,"file":"useChart.d.ts","sourceRoot":"","sources":["../../../../../src/components/ChartAnalytics/hooks/useChart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAGrC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG3D,wBAAgB,QAAQ,CAAC,EACxB,EAAE,EACF,SAAS,EACT,MAAM,GACN,EAAE;IACF,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,WAAW,CAAC;CACpB,GAAG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,eAAe,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;CAC3C,CAkCA"}
@@ -0,0 +1,11 @@
1
+ import { PlotOptions, SeriesOptionsType } from "highcharts";
2
+ import { DHIS2LineChart } from "./line";
3
+ export declare class DHIS2AreaChart extends DHIS2LineChart {
4
+ getHighchartsType(): string;
5
+ getPlotOptions(): PlotOptions;
6
+ getSeries(): SeriesOptionsType[];
7
+ }
8
+ export declare class DHISStackedAreaChart extends DHIS2AreaChart {
9
+ getPlotOptions(): PlotOptions;
10
+ }
11
+ //# sourceMappingURL=area.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"area.d.ts","sourceRoot":"","sources":["../../../../../src/components/ChartAnalytics/models/area.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAExC,qBAAa,cAAe,SAAQ,cAAc;IACjD,iBAAiB,IAAI,MAAM;IAI3B,cAAc,IAAI,WAAW;IAM7B,SAAS,IAAI,iBAAiB,EAAE;CAGhC;AAED,qBAAa,oBAAqB,SAAQ,cAAc;IACvD,cAAc,IAAI,WAAW;CAQ7B"}
@@ -0,0 +1,12 @@
1
+ import { type PaneOptions, PlotOptions, SeriesOptionsType, XAxisOptions, type YAxisOptions } from "highcharts";
2
+ import { DHIS2Chart } from "./index.js";
3
+ export declare class DHIS2GaugeChart extends DHIS2Chart {
4
+ getHighchartsType(): string;
5
+ getPlotOptions(): PlotOptions;
6
+ getValue(): number | undefined;
7
+ getPane(): PaneOptions | undefined;
8
+ getSeries(): SeriesOptionsType[];
9
+ getYAxis(): YAxisOptions[];
10
+ getXAxis(): XAxisOptions | undefined;
11
+ }
12
+ //# sourceMappingURL=gauge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gauge.d.ts","sourceRoot":"","sources":["../../../../../src/components/ChartAnalytics/models/gauge.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,WAAW,EAChB,WAAW,EAEX,iBAAiB,EACjB,YAAY,EACZ,KAAK,YAAY,EACjB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAOxC,qBAAa,eAAgB,SAAQ,UAAU;IAC9C,iBAAiB,IAAI,MAAM;IAI3B,cAAc,IAAI,WAAW;IAiB7B,QAAQ,IAAI,MAAM,GAAG,SAAS;IAQ9B,OAAO,IAAI,WAAW,GAAG,SAAS;IAiBlC,SAAS,IAAI,iBAAiB,EAAE;IAyBhC,QAAQ,IAAI,YAAY,EAAE;IA+B1B,QAAQ,IAAI,YAAY,GAAG,SAAS;CAGpC"}
@@ -1,19 +1,20 @@
1
1
  import type { Analytics } from "@hisptz/dhis2-utils";
2
- import HighCharts from "highcharts";
3
2
  import { ChartConfig } from "../types/props.js";
3
+ import { ChartOptions, ExportingOptions, Options, PaneOptions, PlotOptions, SeriesOptionsType, XAxisOptions, YAxisOptions } from "highcharts";
4
4
  export declare abstract class DHIS2Chart {
5
5
  id: string;
6
6
  analytics: Analytics;
7
7
  config: ChartConfig;
8
8
  constructor(id: string, analytics: Analytics, config: ChartConfig);
9
9
  abstract getHighchartsType(): string;
10
- getChartConfig(): HighCharts.ChartOptions & any;
11
- getOptions(): HighCharts.Options;
12
- abstract getSeries(): HighCharts.SeriesOptionsType[];
13
- abstract getPlotOptions(): HighCharts.PlotOptions;
14
- abstract getXAxis(): HighCharts.XAxisOptions | undefined;
15
- getYAxis(): HighCharts.YAxisOptions[];
16
- getExporting(): HighCharts.ExportingOptions;
10
+ getChartConfig(): ChartOptions & any;
11
+ getPane(): PaneOptions | undefined;
12
+ getOptions(): Options;
13
+ abstract getSeries(): SeriesOptionsType[];
14
+ abstract getPlotOptions(): PlotOptions;
15
+ abstract getXAxis(): XAxisOptions | undefined;
16
+ getYAxis(): YAxisOptions[];
17
+ getExporting(): ExportingOptions;
17
18
  private getFilterLabel;
18
19
  }
19
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/ChartAnalytics/models/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,8BAAsB,UAAU;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,WAAW,CAAC;gBAER,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW;IAMjE,QAAQ,CAAC,iBAAiB,IAAI,MAAM;IAEpC,cAAc,IAAI,UAAU,CAAC,YAAY,GAAG,GAAG;IAU/C,UAAU,IAAI,UAAU,CAAC,OAAO;IAwDhC,QAAQ,CAAC,SAAS,IAAI,UAAU,CAAC,iBAAiB,EAAE;IAEpD,QAAQ,CAAC,cAAc,IAAI,UAAU,CAAC,WAAW;IAEjD,QAAQ,CAAC,QAAQ,IAAI,UAAU,CAAC,YAAY,GAAG,SAAS;IAExD,QAAQ,IAAI,UAAU,CAAC,YAAY,EAAE;IAuCrC,YAAY,IAAI,UAAU,CAAC,gBAAgB;IAa3C,OAAO,CAAC,cAAc;CAYtB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/ChartAnalytics/models/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EACN,YAAY,EACZ,gBAAgB,EAChB,OAAO,EACP,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,MAAM,YAAY,CAAC;AAEpB,8BAAsB,UAAU;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,WAAW,CAAC;gBAER,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW;IAMjE,QAAQ,CAAC,iBAAiB,IAAI,MAAM;IAEpC,cAAc,IAAI,YAAY,GAAG,GAAG;IAUpC,OAAO,IAAI,WAAW,GAAG,SAAS;IAIlC,UAAU,IAAI,OAAO;IAyDrB,QAAQ,CAAC,SAAS,IAAI,iBAAiB,EAAE;IAEzC,QAAQ,CAAC,cAAc,IAAI,WAAW;IAEtC,QAAQ,CAAC,QAAQ,IAAI,YAAY,GAAG,SAAS;IAE7C,QAAQ,IAAI,YAAY,EAAE;IAuC1B,YAAY,IAAI,gBAAgB;IAahC,OAAO,CAAC,cAAc;CAYtB"}
@@ -0,0 +1,5 @@
1
+ import { DHIS2LineChart } from "./line";
2
+ export declare class DHIS2RadarChart extends DHIS2LineChart {
3
+ getChartConfig(): any;
4
+ }
5
+ //# sourceMappingURL=radar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radar.d.ts","sourceRoot":"","sources":["../../../../../src/components/ChartAnalytics/models/radar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAExC,qBAAa,eAAgB,SAAQ,cAAc;IAClD,cAAc,IAAI,GAAG;CAMrB"}
@@ -0,0 +1,7 @@
1
+ import { DHIS2LineChart } from "./line";
2
+ import { SeriesOptionsType } from "highcharts";
3
+ export declare class DHIS2ScatterChart extends DHIS2LineChart {
4
+ getHighchartsType(): string;
5
+ getSeries(): SeriesOptionsType[];
6
+ }
7
+ //# sourceMappingURL=scatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scatter.d.ts","sourceRoot":"","sources":["../../../../../src/components/ChartAnalytics/models/scatter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAG/C,qBAAa,iBAAkB,SAAQ,cAAc;IACpD,iBAAiB,IAAI,MAAM;IAI3B,SAAS,IAAI,iBAAiB,EAAE;CAGhC"}
@@ -1,5 +1,12 @@
1
- import Highcharts from "highcharts";
1
+ import * as Highcharts from "highcharts";
2
2
  import HighchartsReact from "highcharts-react-official";
3
+ import "highcharts/modules/exporting";
4
+ import "highcharts/modules/export-data";
5
+ import "highcharts/modules/full-screen";
6
+ import "highcharts/modules/accessibility";
7
+ /**
8
+ * @deprecated since `v2`. Not needed for highcharts > v12
9
+ * */
3
10
  export declare function setupHighchartsModules(highcharts: typeof Highcharts): void;
4
11
  export declare function onFullScreenView(chartRef: HighchartsReact.RefObject, options?: Highcharts.Options): void;
5
12
  export declare function onPDFDownload(chartRef: HighchartsReact.RefObject, options?: Highcharts.Options): void;
@@ -1 +1 @@
1
- {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../../../src/components/ChartAnalytics/services/export.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,eAAe,MAAM,2BAA2B,CAAC;AAKxD,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,OAAO,UAAU,QAInE;AAED,wBAAgB,gBAAgB,CAC/B,QAAQ,EAAE,eAAe,CAAC,SAAS,EACnC,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,QAG5B;AAED,wBAAgB,aAAa,CAC5B,QAAQ,EAAE,eAAe,CAAC,SAAS,EACnC,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,QAG5B;AAED,wBAAgB,aAAa,CAC5B,QAAQ,EAAE,eAAe,CAAC,SAAS,EACnC,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,QAG5B;AAED,eAAO,MAAM,eAAe,aACjB,eAAe,CAAC,SAAS,QAC7B,KAAK,GAAG,SAAS,GAAG,MAAM,YACtB,UAAU,CAAC,OAAO,SAG5B,CAAC;AAEF,eAAO,MAAM,aAAa,aACf,eAAe,CAAC,SAAS,QAC7B,OAAO,SAUb,CAAC"}
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../../../src/components/ChartAnalytics/services/export.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,YAAY,CAAC;AACzC,OAAO,eAAe,MAAM,2BAA2B,CAAC;AACxD,OAAO,8BAA8B,CAAC;AACtC,OAAO,gCAAgC,CAAC;AACxC,OAAO,gCAAgC,CAAC;AACxC,OAAO,kCAAkC,CAAC;AAE1C;;KAEK;AACL,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,OAAO,UAAU,QAInE;AAED,wBAAgB,gBAAgB,CAC/B,QAAQ,EAAE,eAAe,CAAC,SAAS,EACnC,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,QAG5B;AAED,wBAAgB,aAAa,CAC5B,QAAQ,EAAE,eAAe,CAAC,SAAS,EACnC,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,QAG5B;AAED,wBAAgB,aAAa,CAC5B,QAAQ,EAAE,eAAe,CAAC,SAAS,EACnC,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,QAG5B;AAED,eAAO,MAAM,eAAe,aACjB,eAAe,CAAC,SAAS,QAC7B,KAAK,GAAG,SAAS,GAAG,MAAM,YACtB,UAAU,CAAC,OAAO,SAG5B,CAAC;AAEF,eAAO,MAAM,aAAa,aACf,eAAe,CAAC,SAAS,QAC7B,OAAO,SAUb,CAAC"}
@@ -1,7 +1,7 @@
1
- import type { Analytics } from "@hisptz/dhis2-utils";
2
- import HighCharts, { DashStyleValue, YAxisOptions, YAxisPlotLinesLabelOptions } from "highcharts";
1
+ import type { Analytics, LegendSet } from "@hisptz/dhis2-utils";
2
+ import { DashStyleValue, Options, YAxisOptions, YAxisPlotLinesLabelOptions } from "highcharts";
3
3
  import HighchartsReact from "highcharts-react-official";
4
- export type ChartType = "column" | "pie" | "stacked-column" | "line" | "multi-series" | "bar" | "stacked-bar";
4
+ export type ChartType = "column" | "pie" | "stacked-column" | "line" | "multi-series" | "bar" | "stacked-bar" | "gauge" | "area" | "stacked-area" | "radar" | "scatter";
5
5
  export interface MultiSeriesConfig {
6
6
  series?: Array<{
7
7
  id: string;
@@ -37,8 +37,9 @@ export type ChartConfig = {
37
37
  customTitle?: string;
38
38
  name?: string;
39
39
  allowChartTypeChange?: boolean;
40
- highChartOverrides?: Partial<HighCharts.Options> | ((config: HighCharts.Options) => Partial<HighCharts.Options>);
40
+ highChartOverrides?: Partial<Options> | ((config: Options) => Partial<Options>);
41
41
  multiSeries?: MultiSeriesConfig;
42
+ legendSet?: LegendSet;
42
43
  };
43
44
  export type ChartAnalyticsProps = {
44
45
  analytics: Analytics;
@@ -1 +1 @@
1
- {"version":3,"file":"props.d.ts","sourceRoot":"","sources":["../../../../../src/components/ChartAnalytics/types/props.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,UAAU,EAAE,EAClB,cAAc,EACd,YAAY,EACZ,0BAA0B,EAC1B,MAAM,YAAY,CAAC;AACpB,OAAO,eAAe,MAAM,2BAA2B,CAAC;AAExD,MAAM,MAAM,SAAS,GAClB,QAAQ,GACR,KAAK,GACL,gBAAgB,GAChB,MAAM,GACN,cAAc,GACd,KAAK,GACL,aAAa,CAAC;AAEjB,MAAM,WAAW,iBAAiB;IACjC,MAAM,CAAC,EAAE,KAAK,CAAC;QACd,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,QAAQ,GAAG,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;KACf,CAAC,CAAC;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAC5B,MAAM,CAAC,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,0BAA0B,CAAC;IACnC,MAAM,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,cAAc,CAAC;QAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACF;AAED,MAAM,MAAM,WAAW,GAAG;IACzB,MAAM,EAAE;QACP,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACtB,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACxB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;KACtB,CAAC;IACF,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACvB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAChB,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,GAC3B,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,KAAK,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IACjE,WAAW,CAAC,EAAE,iBAAiB,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IACjC,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,CAAC,SAAS,KAAK,IAAI,CAAC;IAClD,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACrC,CAAC"}
1
+ {"version":3,"file":"props.d.ts","sourceRoot":"","sources":["../../../../../src/components/ChartAnalytics/types/props.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EACN,cAAc,EACd,OAAO,EACP,YAAY,EACZ,0BAA0B,EAC1B,MAAM,YAAY,CAAC;AACpB,OAAO,eAAe,MAAM,2BAA2B,CAAC;AAExD,MAAM,MAAM,SAAS,GAClB,QAAQ,GACR,KAAK,GACL,gBAAgB,GAChB,MAAM,GACN,cAAc,GACd,KAAK,GACL,aAAa,GACb,OAAO,GACP,MAAM,GACN,cAAc,GACd,OAAO,GACP,SAAS,CAAC;AAEb,MAAM,WAAW,iBAAiB;IACjC,MAAM,CAAC,EAAE,KAAK,CAAC;QACd,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,QAAQ,GAAG,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;KACf,CAAC,CAAC;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAC5B,MAAM,CAAC,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,0BAA0B,CAAC;IACnC,MAAM,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,cAAc,CAAC;QAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACF;AAED,MAAM,MAAM,WAAW,GAAG;IACzB,MAAM,EAAE;QACP,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACtB,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACxB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;KACtB,CAAC;IACF,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACvB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAChB,OAAO,CAAC,OAAO,CAAC,GAChB,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3C,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,SAAS,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IACjC,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,CAAC,SAAS,KAAK,IAAI,CAAC;IAClD,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACrC,CAAC"}