@hisptz/dhis2-analytics 2.1.12 → 2.1.14
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/models/gauge.js +5 -2
- package/dist/components/ChartAnalytics/models/gauge.js.map +1 -1
- package/dist/components/ChartAnalytics/utils/chart.js +49 -2
- package/dist/components/ChartAnalytics/utils/chart.js.map +1 -1
- package/dist/esm/components/ChartAnalytics/models/gauge.js +5 -2
- package/dist/esm/components/ChartAnalytics/models/gauge.js.map +1 -1
- package/dist/esm/components/ChartAnalytics/utils/chart.js +49 -3
- package/dist/esm/components/ChartAnalytics/utils/chart.js.map +1 -1
- package/dist/types/components/ChartAnalytics/models/gauge.d.ts.map +1 -1
- package/dist/types/components/ChartAnalytics/types/props.d.ts +4 -1
- package/dist/types/components/ChartAnalytics/types/props.d.ts.map +1 -1
- package/dist/types/components/ChartAnalytics/utils/chart.d.ts +5 -1
- package/dist/types/components/ChartAnalytics/utils/chart.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var lodash = require('lodash');
|
|
4
4
|
var index_js = require('./index.js');
|
|
5
|
-
var
|
|
5
|
+
var Map = require('../../Map');
|
|
6
6
|
var ui = require('@dhis2/ui');
|
|
7
7
|
|
|
8
8
|
const DEFAULT_PANE_SIZE = "100%";
|
|
@@ -77,7 +77,10 @@ class DHIS2GaugeChart extends index_js.DHIS2Chart {
|
|
|
77
77
|
getYAxis() {
|
|
78
78
|
const chartColors = this.config.colors ?? [];
|
|
79
79
|
const legendSet = this.config.legendSet;
|
|
80
|
-
const legendColor = legendSet ?
|
|
80
|
+
const legendColor = legendSet ? Map.getColorFromLegendSet(
|
|
81
|
+
Array.isArray(legendSet) ? lodash.head(legendSet).legends : legendSet.legends,
|
|
82
|
+
this.getValue()
|
|
83
|
+
) : void 0;
|
|
81
84
|
return [
|
|
82
85
|
{
|
|
83
86
|
min: 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/ChartAnalytics/models/gauge.ts"],"names":["DHIS2Chart","head","get","colors","getColorFromLegendSet"],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/ChartAnalytics/models/gauge.ts"],"names":["DHIS2Chart","head","get","colors","getColorFromLegendSet"],"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\";\nimport { colors } from \"@dhis2/ui\";\nimport type { LegendSet } from \"@hisptz/dhis2-utils/src\";\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(\n\t\t\t\t\tArray.isArray(legendSet)\n\t\t\t\t\t\t? head(legendSet).legends\n\t\t\t\t\t\t: (legendSet as LegendSet).legends,\n\t\t\t\t\tthis.getValue(),\n\t\t\t\t)\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"]}
|
|
@@ -47,12 +47,45 @@ function getColumnSeries(analytics, header, config, highchartsType) {
|
|
|
47
47
|
);
|
|
48
48
|
return seriesDimensionValues?.map(
|
|
49
49
|
(seriesDimensionValue, index) => {
|
|
50
|
-
const data = categories?.map((category) => {
|
|
50
|
+
const data = categories?.map((category, index2) => {
|
|
51
51
|
const row = lodash.find(
|
|
52
52
|
analytics?.rows,
|
|
53
53
|
(row2) => row2[headerIndex ?? -1] === seriesDimensionValue && row2[categoryDimensionIndex ?? -1] === category
|
|
54
54
|
);
|
|
55
|
-
|
|
55
|
+
const value = row?.[valueIndex ?? -1] ? parseFloat(row?.[valueIndex ?? -1]) : null;
|
|
56
|
+
if (!config.legendSet) {
|
|
57
|
+
return value;
|
|
58
|
+
}
|
|
59
|
+
if (!Array.isArray(config.legendSet)) {
|
|
60
|
+
const color2 = getLegendColorFromValue({
|
|
61
|
+
legendSet: config.legendSet,
|
|
62
|
+
value: value ?? 0
|
|
63
|
+
});
|
|
64
|
+
return {
|
|
65
|
+
x: index2,
|
|
66
|
+
y: value,
|
|
67
|
+
value,
|
|
68
|
+
color: color2
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
const legendSet = config.legendSet.find(
|
|
72
|
+
({ dataItem }) => dataItem === category
|
|
73
|
+
)?.legendSet ?? config.legendSet.find(
|
|
74
|
+
({ dataItem }) => dataItem === seriesDimensionValue
|
|
75
|
+
)?.legendSet;
|
|
76
|
+
if (!legendSet) {
|
|
77
|
+
return value;
|
|
78
|
+
}
|
|
79
|
+
const color = getLegendColorFromValue({
|
|
80
|
+
legendSet,
|
|
81
|
+
value: value ?? 0
|
|
82
|
+
});
|
|
83
|
+
return {
|
|
84
|
+
x: index2,
|
|
85
|
+
y: value,
|
|
86
|
+
value,
|
|
87
|
+
color
|
|
88
|
+
};
|
|
56
89
|
});
|
|
57
90
|
return {
|
|
58
91
|
id: seriesDimensionValue,
|
|
@@ -111,6 +144,19 @@ function updateLayout(config, { type }) {
|
|
|
111
144
|
}
|
|
112
145
|
return updatedLayout;
|
|
113
146
|
}
|
|
147
|
+
function getLegendColorFromValue({
|
|
148
|
+
legendSet,
|
|
149
|
+
value
|
|
150
|
+
}) {
|
|
151
|
+
if (!legendSet && !value) {
|
|
152
|
+
return null;
|
|
153
|
+
}
|
|
154
|
+
const legends = legendSet?.legends ?? [];
|
|
155
|
+
const legend = legends.find((l) => {
|
|
156
|
+
return l.startValue === value || l.endValue === value || l.startValue < value && value < l.endValue;
|
|
157
|
+
});
|
|
158
|
+
return legend?.color ?? null;
|
|
159
|
+
}
|
|
114
160
|
function getChartInstance(id, analytics, config) {
|
|
115
161
|
switch (config.type) {
|
|
116
162
|
case "column":
|
|
@@ -146,6 +192,7 @@ exports.getAllCategories = getAllCategories;
|
|
|
146
192
|
exports.getChartInstance = getChartInstance;
|
|
147
193
|
exports.getColumnSeries = getColumnSeries;
|
|
148
194
|
exports.getDimensionHeaderIndex = getDimensionHeaderIndex;
|
|
195
|
+
exports.getLegendColorFromValue = getLegendColorFromValue;
|
|
149
196
|
exports.getPointSeries = getPointSeries;
|
|
150
197
|
exports.updateLayout = updateLayout;
|
|
151
198
|
//# sourceMappingURL=chart.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/ChartAnalytics/utils/chart.ts"],"names":["findIndex","header","head","find","row","compact","set","isEmpty","DHIS2ColumnChart","DHIS2BarChart","DHIS2StackedBarChart","DHIS2StackedColumnChart","DHIS2PieChart","DHIS2LineChart","DHIS2AreaChart","DHISStackedAreaChart","DHIS2MultiSeriesChart","DHIS2GaugeChart","DHIS2RadarChart","DHIS2ScatterChart"],"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
|
+
{"version":3,"sources":["../../../../src/components/ChartAnalytics/utils/chart.ts"],"names":["findIndex","header","head","index","find","row","color","compact","set","isEmpty","DHIS2ColumnChart","DHIS2BarChart","DHIS2StackedBarChart","DHIS2StackedColumnChart","DHIS2PieChart","DHIS2LineChart","DHIS2AreaChart","DHISStackedAreaChart","DHIS2MultiSeriesChart","DHIS2GaugeChart","DHIS2RadarChart","DHIS2ScatterChart"],"mappings":"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","file":"chart.js","sourcesContent":["import type {\n\tAnalytics,\n\tAnalyticsHeader,\n\tAnalyticsMetadata,\n\tLegendSet,\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, index) => {\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\tconst value = 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\n\t\t\t\t\t\tif (!config.legendSet) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!Array.isArray(config.legendSet)) {\n\t\t\t\t\t\t\tconst color = getLegendColorFromValue({\n\t\t\t\t\t\t\t\tlegendSet: config.legendSet as LegendSet,\n\t\t\t\t\t\t\t\tvalue: value ?? 0,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tx: index,\n\t\t\t\t\t\t\t\ty: value,\n\t\t\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\t\t\tcolor: color,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst legendSet =\n\t\t\t\t\t\t\tconfig.legendSet.find(\n\t\t\t\t\t\t\t\t({ dataItem }) => dataItem === category,\n\t\t\t\t\t\t\t)?.legendSet ??\n\t\t\t\t\t\t\tconfig.legendSet.find(\n\t\t\t\t\t\t\t\t({ dataItem }) =>\n\t\t\t\t\t\t\t\t\tdataItem === seriesDimensionValue,\n\t\t\t\t\t\t\t)?.legendSet;\n\n\t\t\t\t\t\tif (!legendSet) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst color = getLegendColorFromValue({\n\t\t\t\t\t\t\tlegendSet: legendSet,\n\t\t\t\t\t\t\tvalue: value ?? 0,\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tx: index,\n\t\t\t\t\t\t\ty: value,\n\t\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\t\tcolor: color,\n\t\t\t\t\t\t};\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 getLegendColorFromValue({\n\tlegendSet,\n\tvalue,\n}: {\n\tlegendSet?: LegendSet;\n\tvalue?: number;\n}): string | null {\n\tif (!legendSet && !value) {\n\t\treturn null;\n\t}\n\tconst legends = legendSet?.legends ?? [];\n\tconst legend = legends.find((l) => {\n\t\treturn (\n\t\t\tl.startValue === value ||\n\t\t\tl.endValue === value ||\n\t\t\t(l.startValue < value! && value! < l.endValue)\n\t\t);\n\t});\n\treturn legend?.color ?? null;\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,6 +1,6 @@
|
|
|
1
1
|
import { head, get } from 'lodash';
|
|
2
2
|
import { DHIS2Chart } from './index.js';
|
|
3
|
-
import { getColorFromLegendSet } from '../../Map
|
|
3
|
+
import { getColorFromLegendSet } from '../../Map';
|
|
4
4
|
import { colors } from '@dhis2/ui';
|
|
5
5
|
|
|
6
6
|
const DEFAULT_PANE_SIZE = "100%";
|
|
@@ -75,7 +75,10 @@ class DHIS2GaugeChart extends DHIS2Chart {
|
|
|
75
75
|
getYAxis() {
|
|
76
76
|
const chartColors = this.config.colors ?? [];
|
|
77
77
|
const legendSet = this.config.legendSet;
|
|
78
|
-
const legendColor = legendSet ? getColorFromLegendSet(
|
|
78
|
+
const legendColor = legendSet ? getColorFromLegendSet(
|
|
79
|
+
Array.isArray(legendSet) ? head(legendSet).legends : legendSet.legends,
|
|
80
|
+
this.getValue()
|
|
81
|
+
) : void 0;
|
|
79
82
|
return [
|
|
80
83
|
{
|
|
81
84
|
min: 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/ChartAnalytics/models/gauge.ts"],"names":[],"mappings":";;;;;
|
|
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\";\nimport { colors } from \"@dhis2/ui\";\nimport type { LegendSet } from \"@hisptz/dhis2-utils/src\";\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(\n\t\t\t\t\tArray.isArray(legendSet)\n\t\t\t\t\t\t? head(legendSet).legends\n\t\t\t\t\t\t: (legendSet as LegendSet).legends,\n\t\t\t\t\tthis.getValue(),\n\t\t\t\t)\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"]}
|
|
@@ -45,12 +45,45 @@ function getColumnSeries(analytics, header, config, highchartsType) {
|
|
|
45
45
|
);
|
|
46
46
|
return seriesDimensionValues?.map(
|
|
47
47
|
(seriesDimensionValue, index) => {
|
|
48
|
-
const data = categories?.map((category) => {
|
|
48
|
+
const data = categories?.map((category, index2) => {
|
|
49
49
|
const row = find(
|
|
50
50
|
analytics?.rows,
|
|
51
51
|
(row2) => row2[headerIndex ?? -1] === seriesDimensionValue && row2[categoryDimensionIndex ?? -1] === category
|
|
52
52
|
);
|
|
53
|
-
|
|
53
|
+
const value = row?.[valueIndex ?? -1] ? parseFloat(row?.[valueIndex ?? -1]) : null;
|
|
54
|
+
if (!config.legendSet) {
|
|
55
|
+
return value;
|
|
56
|
+
}
|
|
57
|
+
if (!Array.isArray(config.legendSet)) {
|
|
58
|
+
const color2 = getLegendColorFromValue({
|
|
59
|
+
legendSet: config.legendSet,
|
|
60
|
+
value: value ?? 0
|
|
61
|
+
});
|
|
62
|
+
return {
|
|
63
|
+
x: index2,
|
|
64
|
+
y: value,
|
|
65
|
+
value,
|
|
66
|
+
color: color2
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
const legendSet = config.legendSet.find(
|
|
70
|
+
({ dataItem }) => dataItem === category
|
|
71
|
+
)?.legendSet ?? config.legendSet.find(
|
|
72
|
+
({ dataItem }) => dataItem === seriesDimensionValue
|
|
73
|
+
)?.legendSet;
|
|
74
|
+
if (!legendSet) {
|
|
75
|
+
return value;
|
|
76
|
+
}
|
|
77
|
+
const color = getLegendColorFromValue({
|
|
78
|
+
legendSet,
|
|
79
|
+
value: value ?? 0
|
|
80
|
+
});
|
|
81
|
+
return {
|
|
82
|
+
x: index2,
|
|
83
|
+
y: value,
|
|
84
|
+
value,
|
|
85
|
+
color
|
|
86
|
+
};
|
|
54
87
|
});
|
|
55
88
|
return {
|
|
56
89
|
id: seriesDimensionValue,
|
|
@@ -109,6 +142,19 @@ function updateLayout(config, { type }) {
|
|
|
109
142
|
}
|
|
110
143
|
return updatedLayout;
|
|
111
144
|
}
|
|
145
|
+
function getLegendColorFromValue({
|
|
146
|
+
legendSet,
|
|
147
|
+
value
|
|
148
|
+
}) {
|
|
149
|
+
if (!legendSet && !value) {
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
const legends = legendSet?.legends ?? [];
|
|
153
|
+
const legend = legends.find((l) => {
|
|
154
|
+
return l.startValue === value || l.endValue === value || l.startValue < value && value < l.endValue;
|
|
155
|
+
});
|
|
156
|
+
return legend?.color ?? null;
|
|
157
|
+
}
|
|
112
158
|
function getChartInstance(id, analytics, config) {
|
|
113
159
|
switch (config.type) {
|
|
114
160
|
case "column":
|
|
@@ -140,6 +186,6 @@ function getChartInstance(id, analytics, config) {
|
|
|
140
186
|
}
|
|
141
187
|
}
|
|
142
188
|
|
|
143
|
-
export { getAllCategories, getChartInstance, getColumnSeries, getDimensionHeaderIndex, getPointSeries, updateLayout };
|
|
189
|
+
export { getAllCategories, getChartInstance, getColumnSeries, getDimensionHeaderIndex, getLegendColorFromValue, getPointSeries, updateLayout };
|
|
144
190
|
//# sourceMappingURL=chart.js.map
|
|
145
191
|
//# sourceMappingURL=chart.js.map
|
|
@@ -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\";\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
|
+
{"version":3,"sources":["../../../../../src/components/ChartAnalytics/utils/chart.ts"],"names":["header","index","row","color"],"mappings":"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","file":"chart.js","sourcesContent":["import type {\n\tAnalytics,\n\tAnalyticsHeader,\n\tAnalyticsMetadata,\n\tLegendSet,\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, index) => {\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\tconst value = 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\n\t\t\t\t\t\tif (!config.legendSet) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!Array.isArray(config.legendSet)) {\n\t\t\t\t\t\t\tconst color = getLegendColorFromValue({\n\t\t\t\t\t\t\t\tlegendSet: config.legendSet as LegendSet,\n\t\t\t\t\t\t\t\tvalue: value ?? 0,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tx: index,\n\t\t\t\t\t\t\t\ty: value,\n\t\t\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\t\t\tcolor: color,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst legendSet =\n\t\t\t\t\t\t\tconfig.legendSet.find(\n\t\t\t\t\t\t\t\t({ dataItem }) => dataItem === category,\n\t\t\t\t\t\t\t)?.legendSet ??\n\t\t\t\t\t\t\tconfig.legendSet.find(\n\t\t\t\t\t\t\t\t({ dataItem }) =>\n\t\t\t\t\t\t\t\t\tdataItem === seriesDimensionValue,\n\t\t\t\t\t\t\t)?.legendSet;\n\n\t\t\t\t\t\tif (!legendSet) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst color = getLegendColorFromValue({\n\t\t\t\t\t\t\tlegendSet: legendSet,\n\t\t\t\t\t\t\tvalue: value ?? 0,\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tx: index,\n\t\t\t\t\t\t\ty: value,\n\t\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\t\tcolor: color,\n\t\t\t\t\t\t};\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 getLegendColorFromValue({\n\tlegendSet,\n\tvalue,\n}: {\n\tlegendSet?: LegendSet;\n\tvalue?: number;\n}): string | null {\n\tif (!legendSet && !value) {\n\t\treturn null;\n\t}\n\tconst legends = legendSet?.legends ?? [];\n\tconst legend = legends.find((l) => {\n\t\treturn (\n\t\t\tl.startValue === value ||\n\t\t\tl.endValue === value ||\n\t\t\t(l.startValue < value! && value! < l.endValue)\n\t\t);\n\t});\n\treturn legend?.color ?? null;\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 +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;
|
|
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;AAQxC,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;IAoC1B,QAAQ,IAAI,YAAY,GAAG,SAAS;CAGpC"}
|
|
@@ -39,7 +39,10 @@ export type ChartConfig = {
|
|
|
39
39
|
allowChartTypeChange?: boolean;
|
|
40
40
|
highChartOverrides?: Partial<Options> | ((config: Options) => Partial<Options>);
|
|
41
41
|
multiSeries?: MultiSeriesConfig;
|
|
42
|
-
legendSet?: LegendSet
|
|
42
|
+
legendSet?: LegendSet | {
|
|
43
|
+
dataItem: string;
|
|
44
|
+
legendSet: LegendSet;
|
|
45
|
+
};
|
|
43
46
|
};
|
|
44
47
|
export type ChartAnalyticsProps = {
|
|
45
48
|
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,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;
|
|
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,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,SAAS,CAAA;KAAE,CAAC;CACnE,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,4 +1,4 @@
|
|
|
1
|
-
import type { Analytics, AnalyticsHeader } from "@hisptz/dhis2-utils";
|
|
1
|
+
import type { Analytics, AnalyticsHeader, LegendSet } from "@hisptz/dhis2-utils";
|
|
2
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;
|
|
@@ -12,5 +12,9 @@ export declare function updateLayout(config: ChartConfig, { type }: {
|
|
|
12
12
|
category: Array<string>;
|
|
13
13
|
filter: Array<string>;
|
|
14
14
|
};
|
|
15
|
+
export declare function getLegendColorFromValue({ legendSet, value, }: {
|
|
16
|
+
legendSet?: LegendSet;
|
|
17
|
+
value?: number;
|
|
18
|
+
}): string | null;
|
|
15
19
|
export declare function getChartInstance(id: string, analytics: Analytics, config: ChartConfig): DHIS2Chart;
|
|
16
20
|
//# sourceMappingURL=chart.d.ts.map
|
|
@@ -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,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,
|
|
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,SAAS,EACT,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,CA0FL;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,uBAAuB,CAAC,EACvC,SAAS,EACT,KAAK,GACL,EAAE;IACF,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,MAAM,GAAG,IAAI,CAahB;AAED,wBAAgB,gBAAgB,CAC/B,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,WAAW,GACjB,UAAU,CA6BZ"}
|