@hisptz/dhis2-analytics 2.0.67 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ChartAnalytics/DHIS2Chart.js +32 -4
- package/dist/components/ChartAnalytics/DHIS2Chart.js.map +1 -1
- package/dist/components/ChartAnalytics/hooks/useChart.js.map +1 -1
- package/dist/components/ChartAnalytics/models/area.js +33 -0
- package/dist/components/ChartAnalytics/models/area.js.map +1 -0
- package/dist/components/ChartAnalytics/models/gauge.js +112 -0
- package/dist/components/ChartAnalytics/models/gauge.js.map +1 -0
- package/dist/components/ChartAnalytics/models/index.js +4 -0
- package/dist/components/ChartAnalytics/models/index.js.map +1 -1
- package/dist/components/ChartAnalytics/models/radar.js +16 -0
- package/dist/components/ChartAnalytics/models/radar.js.map +1 -0
- package/dist/components/ChartAnalytics/models/scatter.js +17 -0
- package/dist/components/ChartAnalytics/models/scatter.js.map +1 -0
- package/dist/components/ChartAnalytics/services/export.js +7 -12
- package/dist/components/ChartAnalytics/services/export.js.map +1 -1
- package/dist/components/ChartAnalytics/utils/chart.js +14 -0
- package/dist/components/ChartAnalytics/utils/chart.js.map +1 -1
- package/dist/esm/components/ChartAnalytics/DHIS2Chart.js +13 -3
- package/dist/esm/components/ChartAnalytics/DHIS2Chart.js.map +1 -1
- package/dist/esm/components/ChartAnalytics/hooks/useChart.js.map +1 -1
- package/dist/esm/components/ChartAnalytics/models/area.js +30 -0
- package/dist/esm/components/ChartAnalytics/models/area.js.map +1 -0
- package/dist/esm/components/ChartAnalytics/models/gauge.js +110 -0
- package/dist/esm/components/ChartAnalytics/models/gauge.js.map +1 -0
- package/dist/esm/components/ChartAnalytics/models/index.js +4 -0
- package/dist/esm/components/ChartAnalytics/models/index.js.map +1 -1
- package/dist/esm/components/ChartAnalytics/models/radar.js +14 -0
- package/dist/esm/components/ChartAnalytics/models/radar.js.map +1 -0
- package/dist/esm/components/ChartAnalytics/models/scatter.js +15 -0
- package/dist/esm/components/ChartAnalytics/models/scatter.js.map +1 -0
- package/dist/esm/components/ChartAnalytics/services/export.js +7 -6
- package/dist/esm/components/ChartAnalytics/services/export.js.map +1 -1
- package/dist/esm/components/ChartAnalytics/utils/chart.js +14 -0
- package/dist/esm/components/ChartAnalytics/utils/chart.js.map +1 -1
- package/dist/types/components/ChartAnalytics/DHIS2Chart.d.ts +6 -0
- package/dist/types/components/ChartAnalytics/DHIS2Chart.d.ts.map +1 -1
- package/dist/types/components/ChartAnalytics/hooks/useChart.d.ts +2 -2
- package/dist/types/components/ChartAnalytics/hooks/useChart.d.ts.map +1 -1
- package/dist/types/components/ChartAnalytics/models/area.d.ts +11 -0
- package/dist/types/components/ChartAnalytics/models/area.d.ts.map +1 -0
- package/dist/types/components/ChartAnalytics/models/gauge.d.ts +12 -0
- package/dist/types/components/ChartAnalytics/models/gauge.d.ts.map +1 -0
- package/dist/types/components/ChartAnalytics/models/index.d.ts +9 -8
- package/dist/types/components/ChartAnalytics/models/index.d.ts.map +1 -1
- package/dist/types/components/ChartAnalytics/models/radar.d.ts +5 -0
- package/dist/types/components/ChartAnalytics/models/radar.d.ts.map +1 -0
- package/dist/types/components/ChartAnalytics/models/scatter.d.ts +7 -0
- package/dist/types/components/ChartAnalytics/models/scatter.d.ts.map +1 -0
- package/dist/types/components/ChartAnalytics/services/export.d.ts +8 -1
- package/dist/types/components/ChartAnalytics/services/export.d.ts.map +1 -1
- package/dist/types/components/ChartAnalytics/types/props.d.ts +5 -4
- package/dist/types/components/ChartAnalytics/types/props.d.ts.map +1 -1
- package/dist/types/components/ChartAnalytics/utils/chart.d.ts +1 -1
- package/dist/types/components/ChartAnalytics/utils/chart.d.ts.map +1 -1
- package/package.json +9 -9
|
@@ -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":";;;;;AAcA,MAAM,iBAAoB,GAAA,MAAA;AAC1B,MAAM,iBAAoB,GAAA,MAAA;AAEnB,MAAM,wBAAwB,UAAW,CAAA;AAAA,EAC/C,iBAA4B,GAAA;AAC3B,IAAO,OAAA,YAAA;AAAA;AACR,EAEA,cAA8B,GAAA;AAC7B,IAAO,OAAA;AAAA,MACN,UAAY,EAAA;AAAA,QACX,YAAc,EAAA,CAAA;AAAA,QACd,KAAO,EAAA,IAAA,CAAK,IAAK,CAAA,MAAA,CAAO,MAAM,CAAA;AAAA,QAC9B,UAAY,EAAA;AAAA,UACX,CAAG,EAAA,CAAA;AAAA,UACH,WAAa,EAAA,CAAA;AAAA,UACb,OAAS,EAAA;AAAA,SACV;AAAA,QACA,WAAa,EAAA,CAAA;AAAA,QACb,WAAa,EAAA,OAAA;AAAA,QACb,WAAa,EAAA;AAAA;AACd,KACD;AAAA;AACD,EAEA,QAA+B,GAAA;AAC9B,IAAA,MAAM,EAAE,IAAA,EAAM,OAAQ,EAAA,GAAI,IAAK,CAAA,SAAA;AAC/B,IAAA,MAAM,mBAAmB,OAAS,CAAA,SAAA;AAAA,MACjC,CAAC,EAAE,IAAK,EAAA,KAAM,IAAS,KAAA;AAAA,KACxB;AACA,IAAO,OAAA,UAAA,CAAW,IAAI,IAAK,CAAA,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAA,IAAK,EAAE,CAAA;AAAA;AAC5D,EAEA,OAAmC,GAAA;AAClC,IAAO,OAAA;AAAA,MACN,MAAA,EAAQ,CAAC,KAAA,EAAO,KAAK,CAAA;AAAA,MACrB,IAAM,EAAA,iBAAA;AAAA,MACN,UAAY,EAAA,GAAA;AAAA,MACZ,QAAU,EAAA,EAAA;AAAA,MACV,UAAY,EAAA;AAAA,QACX;AAAA,UACC,eAAiB,EAAA,aAAA;AAAA,UACjB,WAAa,EAAA,KAAA;AAAA,UACb,WAAa,EAAA,MAAA;AAAA,UACb,KAAO,EAAA;AAAA;AACR;AACD,KACD;AAAA;AACD,EAEA,SAAiC,GAAA;AAChC,IAAM,MAAA,KAAA,GAAQ,KAAK,QAAS,EAAA;AAC5B,IAAO,OAAA;AAAA,MACN;AAAA,QACC,MAAM,IAAK,CAAA,EAAA;AAAA,QACX,MAAM,CAAC,IAAA,CAAK,KAAM,CAAA,KAAA,IAAS,CAAC,CAAC,CAAA;AAAA,QAC7B,KAAO,EAAA,OAAA;AAAA,QACP,mBAAqB,EAAA,KAAA;AAAA,QACrB,UAAY,EAAA;AAAA,UACX,CAAG,EAAA,CAAA;AAAA,UACH,WAAa,EAAA,CAAA;AAAA,UACb,aAAe,EAAA,QAAA;AAAA,UACf,KAAO,EAAA;AAAA,YACN,QAAU,EAAA,iBAAA;AAAA,YACV,OAAO,MAAO,CAAA;AAAA;AACf,SACD;AAAA,QACA,OAAS,EAAA,SAAA;AAAA,QACT,OAAS,EAAA;AAAA,UACR,WAAa,EAAA;AAAA;AACd;AACD,KACD;AAAA;AACD,EAEA,QAA2B,GAAA;AAC1B,IAAA,MAAM,WAAc,GAAA,IAAA,CAAK,MAAO,CAAA,MAAA,IAAU,EAAC;AAC3C,IAAM,MAAA,SAAA,GAAY,KAAK,MAAO,CAAA,SAAA;AAC9B,IAAM,MAAA,WAAA,GAAc,YACjB,qBAAsB,CAAA,SAAA,EAAW,SAAS,IAAK,CAAA,QAAA,EAAU,CACzD,GAAA,MAAA;AACH,IAAO,OAAA;AAAA,MACN;AAAA,QACC,GAAK,EAAA,CAAA;AAAA,QACL,GAAK,EAAA,GAAA;AAAA,QACL,MAAQ,EAAA,CAAA;AAAA,QACR,SAAW,EAAA,CAAA;AAAA,QACX,UAAY,EAAA,KAAA;AAAA,QACZ,SAAW,EAAA,CAAA;AAAA,QACX,IAAM,EAAA,QAAA;AAAA,QACN,MAAQ,EAAA;AAAA,UACP,OAAS,EAAA,KAAA;AAAA,UACT,QAAU,EAAA,EAAA;AAAA,UACV,KAAO,EAAA;AAAA,YACN,QAAU,EAAA;AAAA;AACX,SACD;AAAA,QACA,UAAY,EAAA,CAAA;AAAA,QACZ,IAAM,EAAA,CAAA;AAAA,QACN,QAAA,EAAU,WAAe,IAAA,IAAA,CAAK,WAAW,CAAA;AAAA,QACzC,QAAA,EAAU,WAAe,IAAA,IAAA,CAAK,WAAW,CAAA;AAAA,QACzC,MAAQ,EAAA;AAAA;AACT,KACD;AAAA;AACD,EAEA,QAAqC,GAAA;AACpC,IAAO,OAAA,MAAA;AAAA;AAET","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":";;
|
|
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
|
|
2
|
-
import
|
|
3
|
-
import
|
|
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
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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":"
|
|
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"]}
|
|
@@ -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;
|
|
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
|
|
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?:
|
|
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,
|
|
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():
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
abstract
|
|
14
|
-
abstract
|
|
15
|
-
|
|
16
|
-
|
|
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,
|
|
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 @@
|
|
|
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 @@
|
|
|
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;
|
|
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
|
|
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<
|
|
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;
|
|
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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Analytics, AnalyticsHeader } from "@hisptz/dhis2-utils";
|
|
2
|
-
import { DHIS2Chart } from "../models
|
|
2
|
+
import { DHIS2Chart } from "../models";
|
|
3
3
|
import { ChartConfig, ChartType } from "../types/props.js";
|
|
4
4
|
export declare function getDimensionHeaderIndex(headers: AnalyticsHeader[], name: string): number;
|
|
5
5
|
export declare function getPointSeries(analytics: Analytics, config: ChartConfig, highchartsType: string): any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chart.d.ts","sourceRoot":"","sources":["../../../../../src/components/ChartAnalytics/utils/chart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,SAAS,EACT,eAAe,EAEf,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"chart.d.ts","sourceRoot":"","sources":["../../../../../src/components/ChartAnalytics/utils/chart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,SAAS,EACT,eAAe,EAEf,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAKvC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAO3D,wBAAgB,uBAAuB,CACtC,OAAO,EAAE,eAAe,EAAE,EAC1B,IAAI,EAAE,MAAM,GACV,MAAM,CAER;AAED,wBAAgB,cAAc,CAC7B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,WAAW,EACnB,cAAc,EAAE,MAAM,OAetB;AAED,wBAAgB,eAAe,CAC9B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,WAAW,EACnB,cAAc,EAAE,MAAM,GACpB,GAAG,CAiDL;AAeD,wBAAgB,gBAAgB,CAC/B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,WAAW,GACjB,MAAM,EAAE,CAgBV;AAED,wBAAgB,YAAY,CAC3B,MAAM,EAAE,WAAW,EACnB,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE;;;;EA0B7B;AAED,wBAAgB,gBAAgB,CAC/B,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,WAAW,GACjB,UAAU,CA6BZ"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hisptz/dhis2-analytics",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.1.1",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"module": "./dist/esm/index.js",
|
|
6
6
|
"types": "./dist/types/index.d.ts",
|
|
@@ -57,20 +57,20 @@
|
|
|
57
57
|
"d3-color": "^3.1.0",
|
|
58
58
|
"d3-scale": "^4.0.2",
|
|
59
59
|
"file-saver": "^2.0.5",
|
|
60
|
-
"highcharts": "^
|
|
61
|
-
"highcharts-react-official": "^3.1
|
|
60
|
+
"highcharts": "^12.2.0",
|
|
61
|
+
"highcharts-react-official": "^3.2.1",
|
|
62
62
|
"jotai-devtools": "^0.10.1",
|
|
63
|
-
"leaflet": "^1.9.
|
|
63
|
+
"leaflet": "^1.9.4",
|
|
64
64
|
"leaflet-easyprint": "^2.1.9",
|
|
65
|
-
"leaflet.fullscreen": "^
|
|
65
|
+
"leaflet.fullscreen": "^4.0.0",
|
|
66
66
|
"luxon": "^3.4.4",
|
|
67
67
|
"react-circular-progressbar": "^2.1.0",
|
|
68
68
|
"react-dnd": "^16.0.1",
|
|
69
69
|
"react-dnd-html5-backend": "^16.0.1",
|
|
70
70
|
"react-error-boundary": "^4.0.12",
|
|
71
71
|
"react-helmet": "^6.1.0",
|
|
72
|
-
"react-leaflet": "^
|
|
73
|
-
"react-leaflet-custom-control": "^1.
|
|
72
|
+
"react-leaflet": "^5.0.0",
|
|
73
|
+
"react-leaflet-custom-control": "^1.4.0",
|
|
74
74
|
"react-query": "^3.39.3",
|
|
75
75
|
"react-spring": "^9.6.1",
|
|
76
76
|
"react-to-print": "^3.0.1",
|
|
@@ -78,8 +78,8 @@
|
|
|
78
78
|
"screenfull": "^6.0.2",
|
|
79
79
|
"xlsx": "^0.18.5",
|
|
80
80
|
"zod": "^3.23.8",
|
|
81
|
-
"@hisptz/dhis2-ui": "2.0.
|
|
82
|
-
"@hisptz/dhis2-utils": "2.0.
|
|
81
|
+
"@hisptz/dhis2-ui": "2.0.43",
|
|
82
|
+
"@hisptz/dhis2-utils": "2.0.18"
|
|
83
83
|
},
|
|
84
84
|
"peerDependencies": {
|
|
85
85
|
"@dhis2/app-runtime": "^3.10.2",
|