@hisptz/dhis2-analytics 2.0.50 → 2.0.52
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/index.js +1 -1
- package/dist/components/ChartAnalytics/models/index.js.map +1 -1
- package/dist/components/ChartAnalytics/utils/chart.js +2 -1
- package/dist/components/ChartAnalytics/utils/chart.js.map +1 -1
- package/dist/esm/components/ChartAnalytics/models/index.js +1 -1
- package/dist/esm/components/ChartAnalytics/models/index.js.map +1 -1
- package/dist/esm/components/ChartAnalytics/utils/chart.js +2 -1
- package/dist/esm/components/ChartAnalytics/utils/chart.js.map +1 -1
- package/dist/types/components/ChartAnalytics/models/index.d.ts.map +1 -1
- package/dist/types/components/ChartAnalytics/types/props.d.ts +1 -0
- package/dist/types/components/ChartAnalytics/types/props.d.ts.map +1 -1
- package/dist/types/components/ChartAnalytics/utils/chart.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -45,7 +45,7 @@ class DHIS2Chart {
|
|
|
45
45
|
series: this.getSeries(),
|
|
46
46
|
plotOptions: this.getPlotOptions(),
|
|
47
47
|
title: {
|
|
48
|
-
text: this.config.showFilterAsTitle ? this.getFilterLabel() : ""
|
|
48
|
+
text: this.config.customTitle ? this.config.customTitle : this.config.showFilterAsTitle ? this.getFilterLabel() : ""
|
|
49
49
|
},
|
|
50
50
|
xAxis: this.getXAxis(),
|
|
51
51
|
exporting: this.getExporting(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/ChartAnalytics/models/index.ts"],"names":["compact"],"mappings":";;;;AAKO,MAAe,UAAW,CAAA;AAAA,EAKhC,WAAA,CAAY,EAAY,EAAA,SAAA,EAAsB,MAAqB,EAAA;AAClE,IAAA,IAAA,CAAK,EAAK,GAAA,EAAA,CAAA;AACV,IAAA,IAAA,CAAK,SAAY,GAAA,SAAA,CAAA;AACjB,IAAA,IAAA,CAAK,MAAS,GAAA,MAAA,CAAA;AAAA,GACf;AAAA,EAIA,cAAgD,GAAA;AAC/C,IAAO,OAAA;AAAA,MACN,UAAU,IAAK,CAAA,EAAA;AAAA,MACf,QAAU,EAAA,IAAA;AAAA,MACV,IAAA,EAAM,KAAK,iBAAkB,EAAA;AAAA,MAC7B,MAAA,EAAQ,KAAK,MAAQ,EAAA,MAAA;AAAA,MACrB,UAAY,EAAA,KAAA;AAAA,KACb,CAAA;AAAA,GACD;AAAA,EAEA,UAAiC,GAAA;AAChC,IAAA,MAAM,OAAU,GAAA;AAAA,MACf,KAAA,EAAO,KAAK,QAAS,EAAA;AAAA,MACrB,KAAA,EAAO,KAAK,cAAe,EAAA;AAAA,MAC3B,MAAA,EAAQ,IAAK,CAAA,MAAA,EAAQ,MAAU,IAAA;AAAA,QAC9B,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,OACD;AAAA,MACA,MAAA,EAAQ,KAAK,SAAU,EAAA;AAAA,MACvB,WAAA,EAAa,KAAK,cAAe,EAAA;AAAA,MACjC,KAAO,EAAA;AAAA,QACN,
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/ChartAnalytics/models/index.ts"],"names":["compact"],"mappings":"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","file":"index.js","sourcesContent":["import type { Analytics } from \"@hisptz/dhis2-utils\";\nimport HighCharts from \"highcharts\";\nimport { ChartConfig } from \"../types/props.js\";\nimport { compact } from \"lodash\";\n\nexport abstract class DHIS2Chart {\n\tid: string;\n\tanalytics: Analytics;\n\tconfig: ChartConfig;\n\n\tconstructor(id: string, analytics: Analytics, config: ChartConfig) {\n\t\tthis.id = id;\n\t\tthis.analytics = analytics;\n\t\tthis.config = config;\n\t}\n\n\tabstract getHighchartsType(): string;\n\n\tgetChartConfig(): HighCharts.ChartOptions & any {\n\t\treturn {\n\t\t\trenderTo: this.id,\n\t\t\tzoomType: \"xy\",\n\t\t\ttype: this.getHighchartsType(),\n\t\t\theight: this.config?.height,\n\t\t\tstyledMode: false,\n\t\t};\n\t}\n\n\tgetOptions(): HighCharts.Options {\n\t\tconst options = {\n\t\t\tyAxis: this.getYAxis(),\n\t\t\tchart: this.getChartConfig(),\n\t\t\tcolors: this.config?.colors ?? [\n\t\t\t\t\"#a8bf24\",\n\t\t\t\t\"#518cc3\",\n\t\t\t\t\"#d74554\",\n\t\t\t\t\"#ff9e21\",\n\t\t\t\t\"#968f8f\",\n\t\t\t\t\"#ba3ba1\",\n\t\t\t\t\"#ffda54\",\n\t\t\t\t\"#45beae\",\n\t\t\t\t\"#b98037\",\n\t\t\t\t\"#676767\",\n\t\t\t\t\"#6b2dd4\",\n\t\t\t\t\"#47792c\",\n\t\t\t\t\"#fcbdbd\",\n\t\t\t\t\"#830000\",\n\t\t\t\t\"#a5ffc0\",\n\t\t\t\t\"#000078\",\n\t\t\t\t\"#817c00\",\n\t\t\t\t\"#bdf023\",\n\t\t\t\t\"#fffac4\",\n\t\t\t],\n\t\t\tseries: this.getSeries(),\n\t\t\tplotOptions: this.getPlotOptions(),\n\t\t\ttitle: {\n\t\t\t\ttext: this.config.customTitle\n\t\t\t\t\t? this.config.customTitle\n\t\t\t\t\t: this.config.showFilterAsTitle\n\t\t\t\t\t\t? this.getFilterLabel()\n\t\t\t\t\t\t: \"\",\n\t\t\t},\n\t\t\txAxis: this.getXAxis(),\n\t\t\texporting: this.getExporting(),\n\t\t\tlegend: { enabled: true },\n\t\t\tcredits: { enabled: false },\n\t\t};\n\n\t\tlet overrides = {};\n\n\t\tif (this.config?.highChartOverrides) {\n\t\t\toverrides = {\n\t\t\t\t...(typeof this.config?.highChartOverrides === \"object\"\n\t\t\t\t\t? (this.config?.highChartOverrides ?? {})\n\t\t\t\t\t: this.config?.highChartOverrides(options)),\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\t...options,\n\t\t\t...overrides,\n\t\t};\n\t}\n\n\tabstract getSeries(): HighCharts.SeriesOptionsType[];\n\n\tabstract getPlotOptions(): HighCharts.PlotOptions;\n\n\tabstract getXAxis(): HighCharts.XAxisOptions | undefined;\n\n\tgetYAxis(): HighCharts.YAxisOptions[] {\n\t\treturn [\n\t\t\t{\n\t\t\t\ttitle: {\n\t\t\t\t\ttext: \"\",\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\tcolor: \"#000000\",\n\t\t\t\t\t\tfontWeight: \"normal\",\n\t\t\t\t\t\tfontSize: \"14px\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tlabels: {\n\t\t\t\t\tenabled: true,\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\tcolor: \"#000000\",\n\t\t\t\t\t\tfontWeight: \"normal\",\n\t\t\t\t\t\tfontSize: \"14px\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tplotLines: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcolor: \"#000000\",\n\t\t\t\t\t\tdashStyle: \"Solid\",\n\t\t\t\t\t\twidth: 2,\n\t\t\t\t\t\tzIndex: 1000,\n\t\t\t\t\t\tlabel: { text: \"\" },\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcolor: \"#bbbbbb\",\n\t\t\t\t\t\tdashStyle: \"Solid\",\n\t\t\t\t\t\tzIndex: 1000,\n\t\t\t\t\t\twidth: 2,\n\t\t\t\t\t\tlabel: { text: \"\" },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t];\n\t}\n\n\tgetExporting(): HighCharts.ExportingOptions {\n\t\tconst name = this.config?.name ?? \"chart\";\n\t\treturn {\n\t\t\tfilename: `${name}`,\n\t\t\tsourceWidth: 1200,\n\t\t\tbuttons: {\n\t\t\t\tcontextButton: {\n\t\t\t\t\tenabled: false,\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate getFilterLabel() {\n\t\tconst filters = this.config.layout.filter ?? [];\n\t\tconst labels = filters.map((filter) => {\n\t\t\tconst dimensions =\n\t\t\t\tthis.analytics.metaData?.dimensions[filter] ?? [];\n\t\t\treturn dimensions.map((dimension) => {\n\t\t\t\tconst filterItem = this.analytics.metaData?.items[dimension];\n\t\t\t\treturn filterItem?.name;\n\t\t\t});\n\t\t});\n\t\treturn compact(labels.flat()).join(\", \");\n\t}\n}\n"]}
|
|
@@ -48,9 +48,10 @@ function getColumnSeries(analytics, header, config, highchartsType) {
|
|
|
48
48
|
analytics?.rows,
|
|
49
49
|
(row2) => row2[headerIndex ?? -1] === seriesDimensionValue && row2[categoryDimensionIndex ?? -1] === category
|
|
50
50
|
);
|
|
51
|
-
return row?.[valueIndex ?? -1] ? parseFloat(row?.[valueIndex ?? -1]) :
|
|
51
|
+
return row?.[valueIndex ?? -1] ? parseFloat(row?.[valueIndex ?? -1]) : null;
|
|
52
52
|
});
|
|
53
53
|
return {
|
|
54
|
+
id: seriesDimensionValue,
|
|
54
55
|
name: items?.[seriesDimensionValue]?.name,
|
|
55
56
|
data,
|
|
56
57
|
type: highchartsType,
|
|
@@ -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","DHIS2MultiSeriesChart"],"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: 0;\n\t\t\t\t\t});\n\t\t\t\t\treturn {\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":["findIndex","header","head","find","row","compact","set","isEmpty","DHIS2ColumnChart","DHIS2BarChart","DHIS2StackedBarChart","DHIS2StackedColumnChart","DHIS2PieChart","DHIS2LineChart","DHIS2MultiSeriesChart"],"mappings":";;;;;;;;;AAcO,SAAS,uBAAA,CACf,SACA,IACS,EAAA;AACT,EAAA,OAAOA,gBAAU,CAAA,OAAA,EAAS,EAAE,IAAA,EAAM,CAAA,CAAA;AACnC,CAAA;AAEO,SAAS,cAAA,CACf,SACA,EAAA,MAAA,EACA,cACC,EAAA;AACD,EAAM,MAAA,MAAA,GAAmB,OAAO,MAAO,CAAA,MAAA,CAAA;AAEvC,EAAO,OAAA,MAAA,CAAO,GAAI,CAAA,CAAC,UAAuB,KAAA;AACzC,IAAM,MAAA,MAAA,GAAS,WAAW,OAAS,EAAA,IAAA;AAAA,MAClC,CAACC,OAAgBA,KAAAA,OAAAA,CAAO,IAAS,KAAA,UAAA;AAAA,KAClC,CAAA;AACA,IAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,MAAO,OAAA,KAAA,CAAA,CAAA;AAAA,KACR;AACA,IAAA,IAAI,WAAW,QAAU,EAAA;AACxB,MAAA,OAAO,eAAgB,CAAA,SAAA,EAAW,MAAQ,EAAA,MAAA,EAAQ,cAAc,CAAA,CAAA;AAAA,KACjE;AAAA,GACA,EAAE,CAAC,CAAA,CAAA;AACL,CAAA;AAEO,SAAS,eACf,CAAA,SAAA,EACA,MACA,EAAA,MAAA,EACA,cACM,EAAA;AACN,EAAM,MAAA,WAAA,GAAc,WAAW,OAAS,EAAA,SAAA;AAAA,IACvC,CAAC,CAAA,KAAqB,MAAO,CAAA,IAAA,KAAS,CAAE,CAAA,IAAA;AAAA,GACzC,CAAA;AACA,EAAM,MAAA,UAAA,GAAa,WAAW,OAAS,EAAA,SAAA;AAAA,IACtC,CAAC,CAAwB,KAAA,CAAA,CAAE,IAAS,KAAA,OAAA;AAAA,GACrC,CAAA;AAEA,EAAM,MAAA,MAAA,GAAS,MAAO,CAAA,MAAA,IAAU,EAAC,CAAA;AAEjC,EAAA,MAAM,EAAE,KAAO,EAAA,UAAA,EAAe,GAAA,SAAA,EAAW,YAAY,EAAC,CAAA;AACtD,EAAM,MAAA,mBAAA,GAAsB,OAAO,MAAO,CAAA,QAAA,CAAA;AAE1C,EAAA,MAAM,qBACL,GAAA,UAAA,GAAa,MAAO,CAAA,IAA0B,KAAK,EAAC,CAAA;AAErD,EAAO,OAAAC,WAAA;AAAA,IACN,mBAAA,EAAqB,GAAI,CAAA,CAAC,iBAA8B,KAAA;AACvD,MAAM,MAAA,UAAA,GAAuB,aAC5B,iBACD,CAAA,CAAA;AACA,MAAM,MAAA,sBAAA,GAAyB,WAAW,OAAS,EAAA,SAAA;AAAA,QAClD,CAAC,CAAwB,KAAA,CAAA,CAAE,IAAS,KAAA,iBAAA;AAAA,OACrC,CAAA;AACA,MAAA,OAAO,qBAAuB,EAAA,GAAA;AAAA,QAC7B,CAAC,sBAA8B,KAAU,KAAA;AACxC,UAAA,MAAM,IAAO,GAAA,UAAA,EAAY,GAAI,CAAA,CAAC,QAAqB,KAAA;AAClD,YAAA,MAAM,GAAM,GAAAC,WAAA;AAAA,cACX,SAAW,EAAA,IAAA;AAAA,cACX,CAACC,IACAA,KAAAA,IAAAA,CAAI,WAAe,IAAA,CAAA,CAAE,MACpB,oBACDA,IAAAA,IAAAA,CAAI,sBAA0B,IAAA,CAAA,CAAE,CAAM,KAAA,QAAA;AAAA,aACxC,CAAA;AACA,YAAO,OAAA,GAAA,GAAM,cAAc,CAAE,CAAA,CAAA,GAC1B,WAAW,GAAM,GAAA,UAAA,IAAc,CAAE,CAAA,CAAC,CAClC,GAAA,IAAA,CAAA;AAAA,WACH,CAAA,CAAA;AACD,UAAO,OAAA;AAAA,YACN,EAAI,EAAA,oBAAA;AAAA,YACJ,IAAA,EAAM,KAAQ,GAAA,oBAA2B,CAAG,EAAA,IAAA;AAAA,YAC5C,IAAA;AAAA,YACA,IAAM,EAAA,cAAA;AAAA,YACN,KAAO,EAAA,MAAA,CAAO,KAAQ,GAAA,MAAA,CAAO,MAAM,CAAA;AAAA,WACpC,CAAA;AAAA,SACD;AAAA,OACD,CAAA;AAAA,KACA,CAAA;AAAA,GACF,CAAA;AACD,CAAA;AAEA,SAAS,cACR,EAAE,IAAA,IACF,EAAE,KAAA,EAAO,YACE,EAAA;AACX,EAAM,MAAA,UAAA,GAAuB,aAC5B,IACD,CAAA,CAAA;AAEA,EAAO,OAAA,UAAA,EAAY,GAAI,CAAA,CAAC,QAAqB,KAAA;AAC5C,IAAO,OAAA,KAAA,CAAM,QAAe,CAAA,EAAG,IAAQ,IAAA,EAAA,CAAA;AAAA,GACvC,CAAA,CAAA;AACF,CAAA;AAEO,SAAS,gBAAA,CACf,WACA,MACW,EAAA;AACX,EAAM,MAAA,UAAA,GAAa,OAAO,MAAO,CAAA,QAAA,CAAA;AAEjC,EAAO,OAAAC,cAAA;AAAA,IACN,UAAA,EAAY,GAAI,CAAA,CAAC,QAAqB,KAAA;AACrC,MAAM,MAAA,MAAA,GAAS,WAAW,OAAS,EAAA,IAAA;AAAA,QAClC,CAACJ,OAAgBA,KAAAA,OAAAA,CAAO,IAAS,KAAA,QAAA;AAAA,OAClC,CAAA;AACA,MAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,QAAO,OAAA,KAAA,CAAA,CAAA;AAAA,OACR;AACA,MAAA,IAAI,WAAW,QAAU,EAAA;AACxB,QAAO,OAAA,aAAA,CAAc,MAAQ,EAAA,SAAA,EAAW,QAAQ,CAAA,CAAA;AAAA,OACjD;AAAA,KACA,CAAA;AAAA,IACA,CAAC,CAAA,CAAA;AACJ,CAAA;AAEO,SAAS,YACf,CAAA,MAAA,EACA,EAAE,IAAA,EACD,EAAA;AACD,EAAI,IAAA,IAAA,KAAS,OAAO,IAAM,EAAA;AACzB,IAAA,OAAO,MAAO,CAAA,MAAA,CAAA;AAAA,GACf;AAEA,EAAA,MAAM,aAAgB,GAAA,EAAE,GAAG,MAAA,CAAO,MAAO,EAAA,CAAA;AAEzC,EAAA,QAAQ,IAAM;AAAA,IACb,KAAK,KAAA;AACJ,MAAIK,UAAA,CAAA,aAAA,EAAe,UAAY,EAAA,EAAE,CAAA,CAAA;AACjC,MAAI,IAAAC,cAAA,CAAQ,aAAc,CAAA,MAAM,CAAG,EAAA;AAClC,QAAA,IAAI,CAACA,cAAA,CAAQ,MAAO,CAAA,MAAA,CAAO,QAAQ,CAAG,EAAA;AACrC,UAAAD,UAAA,CAAI,eAAe,QAAU,EAAA;AAAA,YAC5BJ,WAAA,CAAK,MAAO,CAAA,MAAA,CAAO,QAAQ,CAAA;AAAA,WAC3B,CAAA,CAAA;AAAA,SACK,MAAA;AACN,UAAM,MAAA,IAAI,MAAM,8BAA8B,CAAA,CAAA;AAAA,SAC/C;AAAA,OACD;AACA,MAAI,IAAA,aAAA,CAAc,MAAO,CAAA,MAAA,GAAS,CAAG,EAAA;AACpC,QAAAI,UAAA,CAAI,eAAe,QAAU,EAAA,CAACJ,YAAK,aAAc,CAAA,MAAM,CAAC,CAAC,CAAA,CAAA;AAAA,OAC1D;AAAA,GACF;AAEA,EAAO,OAAA,aAAA,CAAA;AACR,CAAA;AAEO,SAAS,gBAAA,CACf,EACA,EAAA,SAAA,EACA,MACa,EAAA;AACb,EAAA,QAAQ,OAAO,IAAM;AAAA,IACpB,KAAK,QAAA;AACJ,MAAA,OAAO,IAAIM,0BAAA,CAAiB,EAAI,EAAA,SAAA,EAAW,MAAM,CAAA,CAAA;AAAA,IAClD,KAAK,KAAA;AACJ,MAAA,OAAO,IAAIC,oBAAA,CAAc,EAAI,EAAA,SAAA,EAAW,MAAM,CAAA,CAAA;AAAA,IAC/C,KAAK,aAAA;AACJ,MAAA,OAAO,IAAIC,2BAAA,CAAqB,EAAI,EAAA,SAAA,EAAW,MAAM,CAAA,CAAA;AAAA,IACtD,KAAK,gBAAA;AACJ,MAAA,OAAO,IAAIC,iCAAA,CAAwB,EAAI,EAAA,SAAA,EAAW,MAAM,CAAA,CAAA;AAAA,IACzD,KAAK,KAAA;AACJ,MAAA,OAAO,IAAIC,oBAAA,CAAc,EAAI,EAAA,SAAA,EAAW,MAAM,CAAA,CAAA;AAAA,IAC/C,KAAK,MAAA;AACJ,MAAA,OAAO,IAAIC,sBAAA,CAAe,EAAI,EAAA,SAAA,EAAW,MAAM,CAAA,CAAA;AAAA,IAChD,KAAK,cAAA;AACJ,MAAA,OAAO,IAAIC,oCAAA,CAAsB,EAAI,EAAA,SAAA,EAAW,MAAM,CAAA,CAAA;AAAA,IACvD;AACC,MAAA,MAAM,IAAI,KAAA,CAAM,CAA2B,wBAAA,EAAA,MAAA,CAAO,IAAI,CAAE,CAAA,CAAA,CAAA;AAAA,GAC1D;AACD","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"]}
|
|
@@ -43,7 +43,7 @@ class DHIS2Chart {
|
|
|
43
43
|
series: this.getSeries(),
|
|
44
44
|
plotOptions: this.getPlotOptions(),
|
|
45
45
|
title: {
|
|
46
|
-
text: this.config.showFilterAsTitle ? this.getFilterLabel() : ""
|
|
46
|
+
text: this.config.customTitle ? this.config.customTitle : this.config.showFilterAsTitle ? this.getFilterLabel() : ""
|
|
47
47
|
},
|
|
48
48
|
xAxis: this.getXAxis(),
|
|
49
49
|
exporting: this.getExporting(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/ChartAnalytics/models/index.ts"],"names":[],"mappings":";;AAKO,MAAe,UAAW,CAAA;AAAA,EAKhC,WAAA,CAAY,EAAY,EAAA,SAAA,EAAsB,MAAqB,EAAA;AAClE,IAAA,IAAA,CAAK,EAAK,GAAA,EAAA,CAAA;AACV,IAAA,IAAA,CAAK,SAAY,GAAA,SAAA,CAAA;AACjB,IAAA,IAAA,CAAK,MAAS,GAAA,MAAA,CAAA;AAAA,GACf;AAAA,EAIA,cAAgD,GAAA;AAC/C,IAAO,OAAA;AAAA,MACN,UAAU,IAAK,CAAA,EAAA;AAAA,MACf,QAAU,EAAA,IAAA;AAAA,MACV,IAAA,EAAM,KAAK,iBAAkB,EAAA;AAAA,MAC7B,MAAA,EAAQ,KAAK,MAAQ,EAAA,MAAA;AAAA,MACrB,UAAY,EAAA,KAAA;AAAA,KACb,CAAA;AAAA,GACD;AAAA,EAEA,UAAiC,GAAA;AAChC,IAAA,MAAM,OAAU,GAAA;AAAA,MACf,KAAA,EAAO,KAAK,QAAS,EAAA;AAAA,MACrB,KAAA,EAAO,KAAK,cAAe,EAAA;AAAA,MAC3B,MAAA,EAAQ,IAAK,CAAA,MAAA,EAAQ,MAAU,IAAA;AAAA,QAC9B,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,OACD;AAAA,MACA,MAAA,EAAQ,KAAK,SAAU,EAAA;AAAA,MACvB,WAAA,EAAa,KAAK,cAAe,EAAA;AAAA,MACjC,KAAO,EAAA;AAAA,QACN,
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/ChartAnalytics/models/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type { Analytics } from \"@hisptz/dhis2-utils\";\nimport HighCharts from \"highcharts\";\nimport { ChartConfig } from \"../types/props.js\";\nimport { compact } from \"lodash\";\n\nexport abstract class DHIS2Chart {\n\tid: string;\n\tanalytics: Analytics;\n\tconfig: ChartConfig;\n\n\tconstructor(id: string, analytics: Analytics, config: ChartConfig) {\n\t\tthis.id = id;\n\t\tthis.analytics = analytics;\n\t\tthis.config = config;\n\t}\n\n\tabstract getHighchartsType(): string;\n\n\tgetChartConfig(): HighCharts.ChartOptions & any {\n\t\treturn {\n\t\t\trenderTo: this.id,\n\t\t\tzoomType: \"xy\",\n\t\t\ttype: this.getHighchartsType(),\n\t\t\theight: this.config?.height,\n\t\t\tstyledMode: false,\n\t\t};\n\t}\n\n\tgetOptions(): HighCharts.Options {\n\t\tconst options = {\n\t\t\tyAxis: this.getYAxis(),\n\t\t\tchart: this.getChartConfig(),\n\t\t\tcolors: this.config?.colors ?? [\n\t\t\t\t\"#a8bf24\",\n\t\t\t\t\"#518cc3\",\n\t\t\t\t\"#d74554\",\n\t\t\t\t\"#ff9e21\",\n\t\t\t\t\"#968f8f\",\n\t\t\t\t\"#ba3ba1\",\n\t\t\t\t\"#ffda54\",\n\t\t\t\t\"#45beae\",\n\t\t\t\t\"#b98037\",\n\t\t\t\t\"#676767\",\n\t\t\t\t\"#6b2dd4\",\n\t\t\t\t\"#47792c\",\n\t\t\t\t\"#fcbdbd\",\n\t\t\t\t\"#830000\",\n\t\t\t\t\"#a5ffc0\",\n\t\t\t\t\"#000078\",\n\t\t\t\t\"#817c00\",\n\t\t\t\t\"#bdf023\",\n\t\t\t\t\"#fffac4\",\n\t\t\t],\n\t\t\tseries: this.getSeries(),\n\t\t\tplotOptions: this.getPlotOptions(),\n\t\t\ttitle: {\n\t\t\t\ttext: this.config.customTitle\n\t\t\t\t\t? this.config.customTitle\n\t\t\t\t\t: this.config.showFilterAsTitle\n\t\t\t\t\t\t? this.getFilterLabel()\n\t\t\t\t\t\t: \"\",\n\t\t\t},\n\t\t\txAxis: this.getXAxis(),\n\t\t\texporting: this.getExporting(),\n\t\t\tlegend: { enabled: true },\n\t\t\tcredits: { enabled: false },\n\t\t};\n\n\t\tlet overrides = {};\n\n\t\tif (this.config?.highChartOverrides) {\n\t\t\toverrides = {\n\t\t\t\t...(typeof this.config?.highChartOverrides === \"object\"\n\t\t\t\t\t? (this.config?.highChartOverrides ?? {})\n\t\t\t\t\t: this.config?.highChartOverrides(options)),\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\t...options,\n\t\t\t...overrides,\n\t\t};\n\t}\n\n\tabstract getSeries(): HighCharts.SeriesOptionsType[];\n\n\tabstract getPlotOptions(): HighCharts.PlotOptions;\n\n\tabstract getXAxis(): HighCharts.XAxisOptions | undefined;\n\n\tgetYAxis(): HighCharts.YAxisOptions[] {\n\t\treturn [\n\t\t\t{\n\t\t\t\ttitle: {\n\t\t\t\t\ttext: \"\",\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\tcolor: \"#000000\",\n\t\t\t\t\t\tfontWeight: \"normal\",\n\t\t\t\t\t\tfontSize: \"14px\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tlabels: {\n\t\t\t\t\tenabled: true,\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\tcolor: \"#000000\",\n\t\t\t\t\t\tfontWeight: \"normal\",\n\t\t\t\t\t\tfontSize: \"14px\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tplotLines: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcolor: \"#000000\",\n\t\t\t\t\t\tdashStyle: \"Solid\",\n\t\t\t\t\t\twidth: 2,\n\t\t\t\t\t\tzIndex: 1000,\n\t\t\t\t\t\tlabel: { text: \"\" },\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcolor: \"#bbbbbb\",\n\t\t\t\t\t\tdashStyle: \"Solid\",\n\t\t\t\t\t\tzIndex: 1000,\n\t\t\t\t\t\twidth: 2,\n\t\t\t\t\t\tlabel: { text: \"\" },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t];\n\t}\n\n\tgetExporting(): HighCharts.ExportingOptions {\n\t\tconst name = this.config?.name ?? \"chart\";\n\t\treturn {\n\t\t\tfilename: `${name}`,\n\t\t\tsourceWidth: 1200,\n\t\t\tbuttons: {\n\t\t\t\tcontextButton: {\n\t\t\t\t\tenabled: false,\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate getFilterLabel() {\n\t\tconst filters = this.config.layout.filter ?? [];\n\t\tconst labels = filters.map((filter) => {\n\t\t\tconst dimensions =\n\t\t\t\tthis.analytics.metaData?.dimensions[filter] ?? [];\n\t\t\treturn dimensions.map((dimension) => {\n\t\t\t\tconst filterItem = this.analytics.metaData?.items[dimension];\n\t\t\t\treturn filterItem?.name;\n\t\t\t});\n\t\t});\n\t\treturn compact(labels.flat()).join(\", \");\n\t}\n}\n"]}
|
|
@@ -46,9 +46,10 @@ function getColumnSeries(analytics, header, config, highchartsType) {
|
|
|
46
46
|
analytics?.rows,
|
|
47
47
|
(row2) => row2[headerIndex ?? -1] === seriesDimensionValue && row2[categoryDimensionIndex ?? -1] === category
|
|
48
48
|
);
|
|
49
|
-
return row?.[valueIndex ?? -1] ? parseFloat(row?.[valueIndex ?? -1]) :
|
|
49
|
+
return row?.[valueIndex ?? -1] ? parseFloat(row?.[valueIndex ?? -1]) : null;
|
|
50
50
|
});
|
|
51
51
|
return {
|
|
52
|
+
id: seriesDimensionValue,
|
|
52
53
|
name: items?.[seriesDimensionValue]?.name,
|
|
53
54
|
data,
|
|
54
55
|
type: highchartsType,
|
|
@@ -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: 0;\n\t\t\t\t\t});\n\t\t\t\t\treturn {\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/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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/ChartAnalytics/models/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,8BAAsB,UAAU;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,WAAW,CAAC;gBAER,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW;IAMjE,QAAQ,CAAC,iBAAiB,IAAI,MAAM;IAEpC,cAAc,IAAI,UAAU,CAAC,YAAY,GAAG,GAAG;IAU/C,UAAU,IAAI,UAAU,CAAC,OAAO;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/ChartAnalytics/models/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,8BAAsB,UAAU;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,WAAW,CAAC;gBAER,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW;IAMjE,QAAQ,CAAC,iBAAiB,IAAI,MAAM;IAEpC,cAAc,IAAI,UAAU,CAAC,YAAY,GAAG,GAAG;IAU/C,UAAU,IAAI,UAAU,CAAC,OAAO;IAwDhC,QAAQ,CAAC,SAAS,IAAI,UAAU,CAAC,iBAAiB,EAAE;IAEpD,QAAQ,CAAC,cAAc,IAAI,UAAU,CAAC,WAAW;IAEjD,QAAQ,CAAC,QAAQ,IAAI,UAAU,CAAC,YAAY,GAAG,SAAS;IAExD,QAAQ,IAAI,UAAU,CAAC,YAAY,EAAE;IAuCrC,YAAY,IAAI,UAAU,CAAC,gBAAgB;IAa3C,OAAO,CAAC,cAAc;CAYtB"}
|
|
@@ -34,6 +34,7 @@ export type ChartConfig = {
|
|
|
34
34
|
height?: number;
|
|
35
35
|
colors?: Array<string>;
|
|
36
36
|
showFilterAsTitle?: boolean;
|
|
37
|
+
customTitle?: string;
|
|
37
38
|
name?: string;
|
|
38
39
|
allowChartTypeChange?: boolean;
|
|
39
40
|
highChartOverrides?: Partial<HighCharts.Options> | ((config: HighCharts.Options) => Partial<HighCharts.Options>);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"props.d.ts","sourceRoot":"","sources":["../../../../../src/components/ChartAnalytics/types/props.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,UAAU,EAAE,EAClB,cAAc,EACd,YAAY,EACZ,0BAA0B,EAC1B,MAAM,YAAY,CAAC;AACpB,OAAO,eAAe,MAAM,2BAA2B,CAAC;AAExD,MAAM,MAAM,SAAS,GAClB,QAAQ,GACR,KAAK,GACL,gBAAgB,GAChB,MAAM,GACN,cAAc,GACd,KAAK,GACL,aAAa,CAAC;AAEjB,MAAM,WAAW,iBAAiB;IACjC,MAAM,CAAC,EAAE,KAAK,CAAC;QACd,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,QAAQ,GAAG,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;KACf,CAAC,CAAC;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAC5B,MAAM,CAAC,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,0BAA0B,CAAC;IACnC,MAAM,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,cAAc,CAAC;QAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACF;AAED,MAAM,MAAM,WAAW,GAAG;IACzB,MAAM,EAAE;QACP,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACtB,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACxB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;KACtB,CAAC;IACF,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACvB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAChB,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,GAC3B,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,KAAK,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IACjE,WAAW,CAAC,EAAE,iBAAiB,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IACjC,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,CAAC,SAAS,KAAK,IAAI,CAAC;IAClD,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACrC,CAAC"}
|
|
1
|
+
{"version":3,"file":"props.d.ts","sourceRoot":"","sources":["../../../../../src/components/ChartAnalytics/types/props.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,UAAU,EAAE,EAClB,cAAc,EACd,YAAY,EACZ,0BAA0B,EAC1B,MAAM,YAAY,CAAC;AACpB,OAAO,eAAe,MAAM,2BAA2B,CAAC;AAExD,MAAM,MAAM,SAAS,GAClB,QAAQ,GACR,KAAK,GACL,gBAAgB,GAChB,MAAM,GACN,cAAc,GACd,KAAK,GACL,aAAa,CAAC;AAEjB,MAAM,WAAW,iBAAiB;IACjC,MAAM,CAAC,EAAE,KAAK,CAAC;QACd,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,QAAQ,GAAG,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;KACf,CAAC,CAAC;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAC5B,MAAM,CAAC,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,0BAA0B,CAAC;IACnC,MAAM,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,cAAc,CAAC;QAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACF;AAED,MAAM,MAAM,WAAW,GAAG;IACzB,MAAM,EAAE;QACP,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACtB,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACxB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;KACtB,CAAC;IACF,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACvB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAChB,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,GAC3B,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,KAAK,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IACjE,WAAW,CAAC,EAAE,iBAAiB,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IACjC,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,CAAC,SAAS,KAAK,IAAI,CAAC;IAClD,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACrC,CAAC"}
|
|
@@ -1 +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,oBAAoB,CAAC;AAKhD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG3D,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,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAKhD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG3D,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,CAmBZ"}
|