@hisptz/dhis2-analytics 2.1.6 → 2.1.8

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.
@@ -9,7 +9,11 @@ class DHIS2LineChart extends index_js.DHIS2Chart {
9
9
  }
10
10
  getPlotOptions() {
11
11
  return {
12
- line: {}
12
+ line: {
13
+ dataLabels: {
14
+ enabled: true
15
+ }
16
+ }
13
17
  };
14
18
  }
15
19
  getSeries() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/ChartAnalytics/models/line.ts"],"names":["DHIS2Chart","getPointSeries","getAllCategories"],"mappings":";;;;;AAIO,MAAM,uBAAuBA,mBAAW,CAAA;AAAA,EAC9C,iBAA4B,GAAA;AAC3B,IAAO,OAAA,MAAA;AAAA;AACR,EAEA,cAA8B,GAAA;AAC7B,IAAO,OAAA;AAAA,MACN,MAAM;AAAC,KACR;AAAA;AACD,EAEA,SAAiC,GAAA;AAChC,IAAA,OAAOC,uBAAe,CAAA,IAAA,CAAK,SAAW,EAAA,IAAA,CAAK,QAAQ,MAAM,CAAA;AAAA;AAC1D,EAEA,QAAqC,GAAA;AACpC,IAAO,OAAA;AAAA,MACN,IAAM,EAAA,UAAA;AAAA,MACN,UAAY,EAAAC,yBAAA,CAAiB,IAAK,CAAA,SAAA,EAAW,KAAK,MAAM,CAAA;AAAA,MACxD,SAAW,EAAA,IAAA;AAAA,MACX,MAAQ,EAAA;AAAA,QACP,OAAS,EAAA;AAAA,OACV;AAAA,MACA,KAAA,EAAO,EAAE,IAAA,EAAM,EAAG;AAAA,KACnB;AAAA;AAEF","file":"line.js","sourcesContent":["import { PlotOptions, SeriesOptionsType, XAxisOptions } from \"highcharts\";\nimport { getAllCategories, getPointSeries } from \"../utils/chart.js\";\nimport { DHIS2Chart } from \"./index.js\";\n\nexport class DHIS2LineChart extends DHIS2Chart {\n\tgetHighchartsType(): string {\n\t\treturn \"line\";\n\t}\n\n\tgetPlotOptions(): PlotOptions {\n\t\treturn {\n\t\t\tline: {},\n\t\t};\n\t}\n\n\tgetSeries(): SeriesOptionsType[] {\n\t\treturn getPointSeries(this.analytics, this.config, \"line\");\n\t}\n\n\tgetXAxis(): XAxisOptions | undefined {\n\t\treturn {\n\t\t\ttype: \"category\",\n\t\t\tcategories: getAllCategories(this.analytics, this.config),\n\t\t\tcrosshair: true,\n\t\t\tlabels: {\n\t\t\t\tenabled: true,\n\t\t\t},\n\t\t\ttitle: { text: \"\" },\n\t\t};\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../../../src/components/ChartAnalytics/models/line.ts"],"names":["DHIS2Chart","getPointSeries","getAllCategories"],"mappings":";;;;;AAIO,MAAM,uBAAuBA,mBAAW,CAAA;AAAA,EAC9C,iBAA4B,GAAA;AAC3B,IAAO,OAAA,MAAA;AAAA;AACR,EAEA,cAA8B,GAAA;AAC7B,IAAO,OAAA;AAAA,MACN,IAAM,EAAA;AAAA,QACL,UAAY,EAAA;AAAA,UACX,OAAS,EAAA;AAAA;AACV;AACD,KACD;AAAA;AACD,EAEA,SAAiC,GAAA;AAChC,IAAA,OAAOC,uBAAe,CAAA,IAAA,CAAK,SAAW,EAAA,IAAA,CAAK,QAAQ,MAAM,CAAA;AAAA;AAC1D,EAEA,QAAqC,GAAA;AACpC,IAAO,OAAA;AAAA,MACN,IAAM,EAAA,UAAA;AAAA,MACN,UAAY,EAAAC,yBAAA,CAAiB,IAAK,CAAA,SAAA,EAAW,KAAK,MAAM,CAAA;AAAA,MACxD,SAAW,EAAA,IAAA;AAAA,MACX,MAAQ,EAAA;AAAA,QACP,OAAS,EAAA;AAAA,OACV;AAAA,MACA,KAAA,EAAO,EAAE,IAAA,EAAM,EAAG;AAAA,KACnB;AAAA;AAEF","file":"line.js","sourcesContent":["import { PlotOptions, SeriesOptionsType, XAxisOptions } from \"highcharts\";\nimport { getAllCategories, getPointSeries } from \"../utils/chart.js\";\nimport { DHIS2Chart } from \"./index.js\";\n\nexport class DHIS2LineChart extends DHIS2Chart {\n\tgetHighchartsType(): string {\n\t\treturn \"line\";\n\t}\n\n\tgetPlotOptions(): PlotOptions {\n\t\treturn {\n\t\t\tline: {\n\t\t\t\tdataLabels: {\n\t\t\t\t\tenabled: true,\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n\n\tgetSeries(): SeriesOptionsType[] {\n\t\treturn getPointSeries(this.analytics, this.config, \"line\");\n\t}\n\n\tgetXAxis(): XAxisOptions | undefined {\n\t\treturn {\n\t\t\ttype: \"category\",\n\t\t\tcategories: getAllCategories(this.analytics, this.config),\n\t\t\tcrosshair: true,\n\t\t\tlabels: {\n\t\t\t\tenabled: true,\n\t\t\t},\n\t\t\ttitle: { text: \"\" },\n\t\t};\n\t}\n}\n"]}
@@ -10,8 +10,21 @@ class DHIS2MultiSeriesChart extends index_js.DHIS2Chart {
10
10
  }
11
11
  getPlotOptions() {
12
12
  return {
13
- column: {},
14
- line: {}
13
+ column: {
14
+ dataLabels: {
15
+ enabled: true
16
+ }
17
+ },
18
+ line: {
19
+ dataLabels: {
20
+ enabled: true
21
+ }
22
+ },
23
+ bar: {
24
+ dataLabels: {
25
+ enabled: true
26
+ }
27
+ }
15
28
  };
16
29
  }
17
30
  getSeries() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/ChartAnalytics/models/multi-series.ts"],"names":["DHIS2Chart","head","getDimensionHeaderIndex","compact","row","getAllCategories"],"mappings":"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","file":"multi-series.js","sourcesContent":["import {\n\tPlotOptions,\n\tSeriesOptionsType,\n\tXAxisOptions,\n\tYAxisOptions,\n} from \"highcharts\";\nimport { compact, head } from \"lodash\";\nimport { MultiSeriesConfig } from \"../types/props.js\";\nimport { getAllCategories, getDimensionHeaderIndex } from \"../utils/chart.js\";\nimport { DHIS2Chart } from \"./index.js\";\n\nexport class DHIS2MultiSeriesChart extends DHIS2Chart {\n\tgetHighchartsType(): string {\n\t\treturn \"\";\n\t}\n\n\tgetPlotOptions(): PlotOptions {\n\t\treturn {\n\t\t\tcolumn: {},\n\t\t\tline: {},\n\t\t};\n\t}\n\n\tgetSeries(): SeriesOptionsType[] {\n\t\tconst analytics = this.analytics;\n\t\tconst config = this.config;\n\n\t\tconst categoryDimension = head(config.layout.category);\n\t\tconst seriesConfig: MultiSeriesConfig | undefined =\n\t\t\tthis.config.multiSeries;\n\n\t\tconst categoryIndex = getDimensionHeaderIndex(\n\t\t\tanalytics.headers ?? [],\n\t\t\tcategoryDimension ?? \"\",\n\t\t);\n\t\tconst seriesIndex = getDimensionHeaderIndex(\n\t\t\tanalytics.headers ?? [],\n\t\t\thead(config.layout.series) ?? \"\",\n\t\t);\n\t\tconst valueIndex = getDimensionHeaderIndex(\n\t\t\tanalytics.headers ?? [],\n\t\t\t\"value\",\n\t\t);\n\n\t\tif (!categoryDimension) {\n\t\t\tthrow new Error(\"At least one category dimension is required\");\n\t\t}\n\n\t\tif (!seriesConfig) {\n\t\t\tthrow new Error(\n\t\t\t\t\"MultiSeries config is required for chart type multi-series\",\n\t\t\t);\n\t\t}\n\n\t\treturn compact(\n\t\t\tseriesConfig?.series?.map(({ id, as, cumulative, yAxis }) => {\n\t\t\t\tconst dataItem = analytics.metaData?.items[id as any];\n\t\t\t\tconst categoryItems =\n\t\t\t\t\tanalytics.metaData?.dimensions[\n\t\t\t\t\t\tcategoryDimension as \"dx\" | \"ou\" | \"pe\"\n\t\t\t\t\t];\n\n\t\t\t\tconst data = categoryItems?.map((item: string) => {\n\t\t\t\t\tconst row = analytics.rows?.find(\n\t\t\t\t\t\t(row: any) =>\n\t\t\t\t\t\t\trow[categoryIndex] === item &&\n\t\t\t\t\t\t\trow[seriesIndex] === id,\n\t\t\t\t\t);\n\t\t\t\t\treturn row?.[valueIndex]\n\t\t\t\t\t\t? parseFloat(row?.[valueIndex])\n\t\t\t\t\t\t: null;\n\t\t\t\t});\n\n\t\t\t\tlet cumulativeData: number[] = [];\n\n\t\t\t\tif (cumulative) {\n\t\t\t\t\tcumulativeData =\n\t\t\t\t\t\tcompact(data)?.reduce((acc, curr, index) => {\n\t\t\t\t\t\t\tif (index === 0) {\n\t\t\t\t\t\t\t\treturn [...acc, curr];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn [...acc, acc[index - 1] + curr];\n\t\t\t\t\t\t}, [] as number[]) ?? [];\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tid,\n\t\t\t\t\tname: dataItem?.name,\n\t\t\t\t\tdata: cumulative ? cumulativeData : data,\n\t\t\t\t\ttype: as,\n\t\t\t\t\tyAxis: yAxis ?? 0,\n\t\t\t\t};\n\t\t\t}),\n\t\t) as SeriesOptionsType[];\n\t}\n\n\tgetXAxis(): XAxisOptions | undefined {\n\t\treturn {\n\t\t\ttype: \"category\",\n\t\t\tcategories: getAllCategories(this.analytics, this.config),\n\t\t\tcrosshair: true,\n\t\t\tlabels: {\n\t\t\t\tenabled: true,\n\t\t\t},\n\t\t\ttitle: { text: \"\" },\n\t\t};\n\t}\n\n\tgetYAxis(): YAxisOptions[] {\n\t\tlet yAxes: YAxisOptions[];\n\n\t\tif (this.config.multiSeries?.yAxes) {\n\t\t\tyAxes = this.config.multiSeries?.yAxes;\n\t\t} else {\n\t\t\tyAxes = super.getYAxis();\n\t\t}\n\n\t\tif (!this.config.multiSeries?.target) {\n\t\t\treturn yAxes;\n\t\t}\n\n\t\tconst { value, styles, label } = this.config.multiSeries?.target ?? {};\n\n\t\treturn [\n\t\t\t{\n\t\t\t\t...yAxes[0],\n\t\t\t\tplotLines: [\n\t\t\t\t\t...(yAxes[0].plotLines ?? []),\n\t\t\t\t\t{\n\t\t\t\t\t\tcolor: styles?.color ?? \"#00FF00\",\n\t\t\t\t\t\tdashStyle: styles?.dashStyle ?? \"Solid\",\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\twidth: styles?.width ?? 2,\n\t\t\t\t\t\tzIndex: styles?.zIndex ?? 1000,\n\t\t\t\t\t\tlabel: label,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t...yAxes.slice(1),\n\t\t];\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../../../src/components/ChartAnalytics/models/multi-series.ts"],"names":["DHIS2Chart","head","getDimensionHeaderIndex","compact","row","getAllCategories"],"mappings":"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","file":"multi-series.js","sourcesContent":["import {\n\tPlotOptions,\n\tSeriesOptionsType,\n\tXAxisOptions,\n\tYAxisOptions,\n} from \"highcharts\";\nimport { compact, head } from \"lodash\";\nimport { MultiSeriesConfig } from \"../types/props.js\";\nimport { getAllCategories, getDimensionHeaderIndex } from \"../utils/chart.js\";\nimport { DHIS2Chart } from \"./index.js\";\n\nexport class DHIS2MultiSeriesChart extends DHIS2Chart {\n\tgetHighchartsType(): string {\n\t\treturn \"\";\n\t}\n\n\tgetPlotOptions(): PlotOptions {\n\t\treturn {\n\t\t\tcolumn: {\n\t\t\t\tdataLabels: {\n\t\t\t\t\tenabled: true,\n\t\t\t\t},\n\t\t\t},\n\t\t\tline: {\n\t\t\t\tdataLabels: {\n\t\t\t\t\tenabled: true,\n\t\t\t\t},\n\t\t\t},\n\t\t\tbar: {\n\t\t\t\tdataLabels: {\n\t\t\t\t\tenabled: true,\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n\n\tgetSeries(): SeriesOptionsType[] {\n\t\tconst analytics = this.analytics;\n\t\tconst config = this.config;\n\n\t\tconst categoryDimension = head(config.layout.category);\n\t\tconst seriesConfig: MultiSeriesConfig | undefined =\n\t\t\tthis.config.multiSeries;\n\n\t\tconst categoryIndex = getDimensionHeaderIndex(\n\t\t\tanalytics.headers ?? [],\n\t\t\tcategoryDimension ?? \"\",\n\t\t);\n\t\tconst seriesIndex = getDimensionHeaderIndex(\n\t\t\tanalytics.headers ?? [],\n\t\t\thead(config.layout.series) ?? \"\",\n\t\t);\n\t\tconst valueIndex = getDimensionHeaderIndex(\n\t\t\tanalytics.headers ?? [],\n\t\t\t\"value\",\n\t\t);\n\n\t\tif (!categoryDimension) {\n\t\t\tthrow new Error(\"At least one category dimension is required\");\n\t\t}\n\n\t\tif (!seriesConfig) {\n\t\t\tthrow new Error(\n\t\t\t\t\"MultiSeries config is required for chart type multi-series\",\n\t\t\t);\n\t\t}\n\n\t\treturn compact(\n\t\t\tseriesConfig?.series?.map(({ id, as, cumulative, yAxis }) => {\n\t\t\t\tconst dataItem = analytics.metaData?.items[id as any];\n\t\t\t\tconst categoryItems =\n\t\t\t\t\tanalytics.metaData?.dimensions[\n\t\t\t\t\t\tcategoryDimension as \"dx\" | \"ou\" | \"pe\"\n\t\t\t\t\t];\n\n\t\t\t\tconst data = categoryItems?.map((item: string) => {\n\t\t\t\t\tconst row = analytics.rows?.find(\n\t\t\t\t\t\t(row: any) =>\n\t\t\t\t\t\t\trow[categoryIndex] === item &&\n\t\t\t\t\t\t\trow[seriesIndex] === id,\n\t\t\t\t\t);\n\t\t\t\t\treturn row?.[valueIndex]\n\t\t\t\t\t\t? parseFloat(row?.[valueIndex])\n\t\t\t\t\t\t: null;\n\t\t\t\t});\n\n\t\t\t\tlet cumulativeData: number[] = [];\n\n\t\t\t\tif (cumulative) {\n\t\t\t\t\tcumulativeData =\n\t\t\t\t\t\tcompact(data)?.reduce((acc, curr, index) => {\n\t\t\t\t\t\t\tif (index === 0) {\n\t\t\t\t\t\t\t\treturn [...acc, curr];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn [...acc, acc[index - 1] + curr];\n\t\t\t\t\t\t}, [] as number[]) ?? [];\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tid,\n\t\t\t\t\tname: dataItem?.name,\n\t\t\t\t\tdata: cumulative ? cumulativeData : data,\n\t\t\t\t\ttype: as,\n\t\t\t\t\tyAxis: yAxis ?? 0,\n\t\t\t\t};\n\t\t\t}),\n\t\t) as SeriesOptionsType[];\n\t}\n\n\tgetXAxis(): XAxisOptions | undefined {\n\t\treturn {\n\t\t\ttype: \"category\",\n\t\t\tcategories: getAllCategories(this.analytics, this.config),\n\t\t\tcrosshair: true,\n\t\t\tlabels: {\n\t\t\t\tenabled: true,\n\t\t\t},\n\t\t\ttitle: { text: \"\" },\n\t\t};\n\t}\n\n\tgetYAxis(): YAxisOptions[] {\n\t\tlet yAxes: YAxisOptions[];\n\n\t\tif (this.config.multiSeries?.yAxes) {\n\t\t\tyAxes = this.config.multiSeries?.yAxes;\n\t\t} else {\n\t\t\tyAxes = super.getYAxis();\n\t\t}\n\n\t\tif (!this.config.multiSeries?.target) {\n\t\t\treturn yAxes;\n\t\t}\n\n\t\tconst { value, styles, label } = this.config.multiSeries?.target ?? {};\n\n\t\treturn [\n\t\t\t{\n\t\t\t\t...yAxes[0],\n\t\t\t\tplotLines: [\n\t\t\t\t\t...(yAxes[0].plotLines ?? []),\n\t\t\t\t\t{\n\t\t\t\t\t\tcolor: styles?.color ?? \"#00FF00\",\n\t\t\t\t\t\tdashStyle: styles?.dashStyle ?? \"Solid\",\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\twidth: styles?.width ?? 2,\n\t\t\t\t\t\tzIndex: styles?.zIndex ?? 1000,\n\t\t\t\t\t\tlabel: label,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t...yAxes.slice(1),\n\t\t];\n\t}\n}\n"]}
@@ -7,7 +7,11 @@ class DHIS2LineChart extends DHIS2Chart {
7
7
  }
8
8
  getPlotOptions() {
9
9
  return {
10
- line: {}
10
+ line: {
11
+ dataLabels: {
12
+ enabled: true
13
+ }
14
+ }
11
15
  };
12
16
  }
13
17
  getSeries() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/ChartAnalytics/models/line.ts"],"names":[],"mappings":";;;AAIO,MAAM,uBAAuB,UAAW,CAAA;AAAA,EAC9C,iBAA4B,GAAA;AAC3B,IAAO,OAAA,MAAA;AAAA;AACR,EAEA,cAA8B,GAAA;AAC7B,IAAO,OAAA;AAAA,MACN,MAAM;AAAC,KACR;AAAA;AACD,EAEA,SAAiC,GAAA;AAChC,IAAA,OAAO,cAAe,CAAA,IAAA,CAAK,SAAW,EAAA,IAAA,CAAK,QAAQ,MAAM,CAAA;AAAA;AAC1D,EAEA,QAAqC,GAAA;AACpC,IAAO,OAAA;AAAA,MACN,IAAM,EAAA,UAAA;AAAA,MACN,UAAY,EAAA,gBAAA,CAAiB,IAAK,CAAA,SAAA,EAAW,KAAK,MAAM,CAAA;AAAA,MACxD,SAAW,EAAA,IAAA;AAAA,MACX,MAAQ,EAAA;AAAA,QACP,OAAS,EAAA;AAAA,OACV;AAAA,MACA,KAAA,EAAO,EAAE,IAAA,EAAM,EAAG;AAAA,KACnB;AAAA;AAEF","file":"line.js","sourcesContent":["import { PlotOptions, SeriesOptionsType, XAxisOptions } from \"highcharts\";\nimport { getAllCategories, getPointSeries } from \"../utils/chart.js\";\nimport { DHIS2Chart } from \"./index.js\";\n\nexport class DHIS2LineChart extends DHIS2Chart {\n\tgetHighchartsType(): string {\n\t\treturn \"line\";\n\t}\n\n\tgetPlotOptions(): PlotOptions {\n\t\treturn {\n\t\t\tline: {},\n\t\t};\n\t}\n\n\tgetSeries(): SeriesOptionsType[] {\n\t\treturn getPointSeries(this.analytics, this.config, \"line\");\n\t}\n\n\tgetXAxis(): XAxisOptions | undefined {\n\t\treturn {\n\t\t\ttype: \"category\",\n\t\t\tcategories: getAllCategories(this.analytics, this.config),\n\t\t\tcrosshair: true,\n\t\t\tlabels: {\n\t\t\t\tenabled: true,\n\t\t\t},\n\t\t\ttitle: { text: \"\" },\n\t\t};\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../../../../src/components/ChartAnalytics/models/line.ts"],"names":[],"mappings":";;;AAIO,MAAM,uBAAuB,UAAW,CAAA;AAAA,EAC9C,iBAA4B,GAAA;AAC3B,IAAO,OAAA,MAAA;AAAA;AACR,EAEA,cAA8B,GAAA;AAC7B,IAAO,OAAA;AAAA,MACN,IAAM,EAAA;AAAA,QACL,UAAY,EAAA;AAAA,UACX,OAAS,EAAA;AAAA;AACV;AACD,KACD;AAAA;AACD,EAEA,SAAiC,GAAA;AAChC,IAAA,OAAO,cAAe,CAAA,IAAA,CAAK,SAAW,EAAA,IAAA,CAAK,QAAQ,MAAM,CAAA;AAAA;AAC1D,EAEA,QAAqC,GAAA;AACpC,IAAO,OAAA;AAAA,MACN,IAAM,EAAA,UAAA;AAAA,MACN,UAAY,EAAA,gBAAA,CAAiB,IAAK,CAAA,SAAA,EAAW,KAAK,MAAM,CAAA;AAAA,MACxD,SAAW,EAAA,IAAA;AAAA,MACX,MAAQ,EAAA;AAAA,QACP,OAAS,EAAA;AAAA,OACV;AAAA,MACA,KAAA,EAAO,EAAE,IAAA,EAAM,EAAG;AAAA,KACnB;AAAA;AAEF","file":"line.js","sourcesContent":["import { PlotOptions, SeriesOptionsType, XAxisOptions } from \"highcharts\";\nimport { getAllCategories, getPointSeries } from \"../utils/chart.js\";\nimport { DHIS2Chart } from \"./index.js\";\n\nexport class DHIS2LineChart extends DHIS2Chart {\n\tgetHighchartsType(): string {\n\t\treturn \"line\";\n\t}\n\n\tgetPlotOptions(): PlotOptions {\n\t\treturn {\n\t\t\tline: {\n\t\t\t\tdataLabels: {\n\t\t\t\t\tenabled: true,\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n\n\tgetSeries(): SeriesOptionsType[] {\n\t\treturn getPointSeries(this.analytics, this.config, \"line\");\n\t}\n\n\tgetXAxis(): XAxisOptions | undefined {\n\t\treturn {\n\t\t\ttype: \"category\",\n\t\t\tcategories: getAllCategories(this.analytics, this.config),\n\t\t\tcrosshair: true,\n\t\t\tlabels: {\n\t\t\t\tenabled: true,\n\t\t\t},\n\t\t\ttitle: { text: \"\" },\n\t\t};\n\t}\n}\n"]}
@@ -8,8 +8,21 @@ class DHIS2MultiSeriesChart extends DHIS2Chart {
8
8
  }
9
9
  getPlotOptions() {
10
10
  return {
11
- column: {},
12
- line: {}
11
+ column: {
12
+ dataLabels: {
13
+ enabled: true
14
+ }
15
+ },
16
+ line: {
17
+ dataLabels: {
18
+ enabled: true
19
+ }
20
+ },
21
+ bar: {
22
+ dataLabels: {
23
+ enabled: true
24
+ }
25
+ }
13
26
  };
14
27
  }
15
28
  getSeries() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/ChartAnalytics/models/multi-series.ts"],"names":["row"],"mappings":"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","file":"multi-series.js","sourcesContent":["import {\n\tPlotOptions,\n\tSeriesOptionsType,\n\tXAxisOptions,\n\tYAxisOptions,\n} from \"highcharts\";\nimport { compact, head } from \"lodash\";\nimport { MultiSeriesConfig } from \"../types/props.js\";\nimport { getAllCategories, getDimensionHeaderIndex } from \"../utils/chart.js\";\nimport { DHIS2Chart } from \"./index.js\";\n\nexport class DHIS2MultiSeriesChart extends DHIS2Chart {\n\tgetHighchartsType(): string {\n\t\treturn \"\";\n\t}\n\n\tgetPlotOptions(): PlotOptions {\n\t\treturn {\n\t\t\tcolumn: {},\n\t\t\tline: {},\n\t\t};\n\t}\n\n\tgetSeries(): SeriesOptionsType[] {\n\t\tconst analytics = this.analytics;\n\t\tconst config = this.config;\n\n\t\tconst categoryDimension = head(config.layout.category);\n\t\tconst seriesConfig: MultiSeriesConfig | undefined =\n\t\t\tthis.config.multiSeries;\n\n\t\tconst categoryIndex = getDimensionHeaderIndex(\n\t\t\tanalytics.headers ?? [],\n\t\t\tcategoryDimension ?? \"\",\n\t\t);\n\t\tconst seriesIndex = getDimensionHeaderIndex(\n\t\t\tanalytics.headers ?? [],\n\t\t\thead(config.layout.series) ?? \"\",\n\t\t);\n\t\tconst valueIndex = getDimensionHeaderIndex(\n\t\t\tanalytics.headers ?? [],\n\t\t\t\"value\",\n\t\t);\n\n\t\tif (!categoryDimension) {\n\t\t\tthrow new Error(\"At least one category dimension is required\");\n\t\t}\n\n\t\tif (!seriesConfig) {\n\t\t\tthrow new Error(\n\t\t\t\t\"MultiSeries config is required for chart type multi-series\",\n\t\t\t);\n\t\t}\n\n\t\treturn compact(\n\t\t\tseriesConfig?.series?.map(({ id, as, cumulative, yAxis }) => {\n\t\t\t\tconst dataItem = analytics.metaData?.items[id as any];\n\t\t\t\tconst categoryItems =\n\t\t\t\t\tanalytics.metaData?.dimensions[\n\t\t\t\t\t\tcategoryDimension as \"dx\" | \"ou\" | \"pe\"\n\t\t\t\t\t];\n\n\t\t\t\tconst data = categoryItems?.map((item: string) => {\n\t\t\t\t\tconst row = analytics.rows?.find(\n\t\t\t\t\t\t(row: any) =>\n\t\t\t\t\t\t\trow[categoryIndex] === item &&\n\t\t\t\t\t\t\trow[seriesIndex] === id,\n\t\t\t\t\t);\n\t\t\t\t\treturn row?.[valueIndex]\n\t\t\t\t\t\t? parseFloat(row?.[valueIndex])\n\t\t\t\t\t\t: null;\n\t\t\t\t});\n\n\t\t\t\tlet cumulativeData: number[] = [];\n\n\t\t\t\tif (cumulative) {\n\t\t\t\t\tcumulativeData =\n\t\t\t\t\t\tcompact(data)?.reduce((acc, curr, index) => {\n\t\t\t\t\t\t\tif (index === 0) {\n\t\t\t\t\t\t\t\treturn [...acc, curr];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn [...acc, acc[index - 1] + curr];\n\t\t\t\t\t\t}, [] as number[]) ?? [];\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tid,\n\t\t\t\t\tname: dataItem?.name,\n\t\t\t\t\tdata: cumulative ? cumulativeData : data,\n\t\t\t\t\ttype: as,\n\t\t\t\t\tyAxis: yAxis ?? 0,\n\t\t\t\t};\n\t\t\t}),\n\t\t) as SeriesOptionsType[];\n\t}\n\n\tgetXAxis(): XAxisOptions | undefined {\n\t\treturn {\n\t\t\ttype: \"category\",\n\t\t\tcategories: getAllCategories(this.analytics, this.config),\n\t\t\tcrosshair: true,\n\t\t\tlabels: {\n\t\t\t\tenabled: true,\n\t\t\t},\n\t\t\ttitle: { text: \"\" },\n\t\t};\n\t}\n\n\tgetYAxis(): YAxisOptions[] {\n\t\tlet yAxes: YAxisOptions[];\n\n\t\tif (this.config.multiSeries?.yAxes) {\n\t\t\tyAxes = this.config.multiSeries?.yAxes;\n\t\t} else {\n\t\t\tyAxes = super.getYAxis();\n\t\t}\n\n\t\tif (!this.config.multiSeries?.target) {\n\t\t\treturn yAxes;\n\t\t}\n\n\t\tconst { value, styles, label } = this.config.multiSeries?.target ?? {};\n\n\t\treturn [\n\t\t\t{\n\t\t\t\t...yAxes[0],\n\t\t\t\tplotLines: [\n\t\t\t\t\t...(yAxes[0].plotLines ?? []),\n\t\t\t\t\t{\n\t\t\t\t\t\tcolor: styles?.color ?? \"#00FF00\",\n\t\t\t\t\t\tdashStyle: styles?.dashStyle ?? \"Solid\",\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\twidth: styles?.width ?? 2,\n\t\t\t\t\t\tzIndex: styles?.zIndex ?? 1000,\n\t\t\t\t\t\tlabel: label,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t...yAxes.slice(1),\n\t\t];\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../../../../src/components/ChartAnalytics/models/multi-series.ts"],"names":["row"],"mappings":"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","file":"multi-series.js","sourcesContent":["import {\n\tPlotOptions,\n\tSeriesOptionsType,\n\tXAxisOptions,\n\tYAxisOptions,\n} from \"highcharts\";\nimport { compact, head } from \"lodash\";\nimport { MultiSeriesConfig } from \"../types/props.js\";\nimport { getAllCategories, getDimensionHeaderIndex } from \"../utils/chart.js\";\nimport { DHIS2Chart } from \"./index.js\";\n\nexport class DHIS2MultiSeriesChart extends DHIS2Chart {\n\tgetHighchartsType(): string {\n\t\treturn \"\";\n\t}\n\n\tgetPlotOptions(): PlotOptions {\n\t\treturn {\n\t\t\tcolumn: {\n\t\t\t\tdataLabels: {\n\t\t\t\t\tenabled: true,\n\t\t\t\t},\n\t\t\t},\n\t\t\tline: {\n\t\t\t\tdataLabels: {\n\t\t\t\t\tenabled: true,\n\t\t\t\t},\n\t\t\t},\n\t\t\tbar: {\n\t\t\t\tdataLabels: {\n\t\t\t\t\tenabled: true,\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n\n\tgetSeries(): SeriesOptionsType[] {\n\t\tconst analytics = this.analytics;\n\t\tconst config = this.config;\n\n\t\tconst categoryDimension = head(config.layout.category);\n\t\tconst seriesConfig: MultiSeriesConfig | undefined =\n\t\t\tthis.config.multiSeries;\n\n\t\tconst categoryIndex = getDimensionHeaderIndex(\n\t\t\tanalytics.headers ?? [],\n\t\t\tcategoryDimension ?? \"\",\n\t\t);\n\t\tconst seriesIndex = getDimensionHeaderIndex(\n\t\t\tanalytics.headers ?? [],\n\t\t\thead(config.layout.series) ?? \"\",\n\t\t);\n\t\tconst valueIndex = getDimensionHeaderIndex(\n\t\t\tanalytics.headers ?? [],\n\t\t\t\"value\",\n\t\t);\n\n\t\tif (!categoryDimension) {\n\t\t\tthrow new Error(\"At least one category dimension is required\");\n\t\t}\n\n\t\tif (!seriesConfig) {\n\t\t\tthrow new Error(\n\t\t\t\t\"MultiSeries config is required for chart type multi-series\",\n\t\t\t);\n\t\t}\n\n\t\treturn compact(\n\t\t\tseriesConfig?.series?.map(({ id, as, cumulative, yAxis }) => {\n\t\t\t\tconst dataItem = analytics.metaData?.items[id as any];\n\t\t\t\tconst categoryItems =\n\t\t\t\t\tanalytics.metaData?.dimensions[\n\t\t\t\t\t\tcategoryDimension as \"dx\" | \"ou\" | \"pe\"\n\t\t\t\t\t];\n\n\t\t\t\tconst data = categoryItems?.map((item: string) => {\n\t\t\t\t\tconst row = analytics.rows?.find(\n\t\t\t\t\t\t(row: any) =>\n\t\t\t\t\t\t\trow[categoryIndex] === item &&\n\t\t\t\t\t\t\trow[seriesIndex] === id,\n\t\t\t\t\t);\n\t\t\t\t\treturn row?.[valueIndex]\n\t\t\t\t\t\t? parseFloat(row?.[valueIndex])\n\t\t\t\t\t\t: null;\n\t\t\t\t});\n\n\t\t\t\tlet cumulativeData: number[] = [];\n\n\t\t\t\tif (cumulative) {\n\t\t\t\t\tcumulativeData =\n\t\t\t\t\t\tcompact(data)?.reduce((acc, curr, index) => {\n\t\t\t\t\t\t\tif (index === 0) {\n\t\t\t\t\t\t\t\treturn [...acc, curr];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn [...acc, acc[index - 1] + curr];\n\t\t\t\t\t\t}, [] as number[]) ?? [];\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tid,\n\t\t\t\t\tname: dataItem?.name,\n\t\t\t\t\tdata: cumulative ? cumulativeData : data,\n\t\t\t\t\ttype: as,\n\t\t\t\t\tyAxis: yAxis ?? 0,\n\t\t\t\t};\n\t\t\t}),\n\t\t) as SeriesOptionsType[];\n\t}\n\n\tgetXAxis(): XAxisOptions | undefined {\n\t\treturn {\n\t\t\ttype: \"category\",\n\t\t\tcategories: getAllCategories(this.analytics, this.config),\n\t\t\tcrosshair: true,\n\t\t\tlabels: {\n\t\t\t\tenabled: true,\n\t\t\t},\n\t\t\ttitle: { text: \"\" },\n\t\t};\n\t}\n\n\tgetYAxis(): YAxisOptions[] {\n\t\tlet yAxes: YAxisOptions[];\n\n\t\tif (this.config.multiSeries?.yAxes) {\n\t\t\tyAxes = this.config.multiSeries?.yAxes;\n\t\t} else {\n\t\t\tyAxes = super.getYAxis();\n\t\t}\n\n\t\tif (!this.config.multiSeries?.target) {\n\t\t\treturn yAxes;\n\t\t}\n\n\t\tconst { value, styles, label } = this.config.multiSeries?.target ?? {};\n\n\t\treturn [\n\t\t\t{\n\t\t\t\t...yAxes[0],\n\t\t\t\tplotLines: [\n\t\t\t\t\t...(yAxes[0].plotLines ?? []),\n\t\t\t\t\t{\n\t\t\t\t\t\tcolor: styles?.color ?? \"#00FF00\",\n\t\t\t\t\t\tdashStyle: styles?.dashStyle ?? \"Solid\",\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\twidth: styles?.width ?? 2,\n\t\t\t\t\t\tzIndex: styles?.zIndex ?? 1000,\n\t\t\t\t\t\tlabel: label,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t...yAxes.slice(1),\n\t\t];\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"line.d.ts","sourceRoot":"","sources":["../../../../../src/components/ChartAnalytics/models/line.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1E,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,qBAAa,cAAe,SAAQ,UAAU;IAC7C,iBAAiB,IAAI,MAAM;IAI3B,cAAc,IAAI,WAAW;IAM7B,SAAS,IAAI,iBAAiB,EAAE;IAIhC,QAAQ,IAAI,YAAY,GAAG,SAAS;CAWpC"}
1
+ {"version":3,"file":"line.d.ts","sourceRoot":"","sources":["../../../../../src/components/ChartAnalytics/models/line.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1E,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,qBAAa,cAAe,SAAQ,UAAU;IAC7C,iBAAiB,IAAI,MAAM;IAI3B,cAAc,IAAI,WAAW;IAU7B,SAAS,IAAI,iBAAiB,EAAE;IAIhC,QAAQ,IAAI,YAAY,GAAG,SAAS;CAWpC"}
@@ -1 +1 @@
1
- {"version":3,"file":"multi-series.d.ts","sourceRoot":"","sources":["../../../../../src/components/ChartAnalytics/models/multi-series.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,MAAM,YAAY,CAAC;AAIpB,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,qBAAa,qBAAsB,SAAQ,UAAU;IACpD,iBAAiB,IAAI,MAAM;IAI3B,cAAc,IAAI,WAAW;IAO7B,SAAS,IAAI,iBAAiB,EAAE;IAyEhC,QAAQ,IAAI,YAAY,GAAG,SAAS;IAYpC,QAAQ,IAAI,YAAY,EAAE;CAiC1B"}
1
+ {"version":3,"file":"multi-series.d.ts","sourceRoot":"","sources":["../../../../../src/components/ChartAnalytics/models/multi-series.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,MAAM,YAAY,CAAC;AAIpB,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,qBAAa,qBAAsB,SAAQ,UAAU;IACpD,iBAAiB,IAAI,MAAM;IAI3B,cAAc,IAAI,WAAW;IAoB7B,SAAS,IAAI,iBAAiB,EAAE;IAyEhC,QAAQ,IAAI,YAAY,GAAG,SAAS;IAYpC,QAAQ,IAAI,YAAY,EAAE;CAiC1B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hisptz/dhis2-analytics",
3
- "version": "2.1.6",
3
+ "version": "2.1.8",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/esm/index.js",
6
6
  "types": "./dist/types/index.d.ts",
@@ -73,8 +73,8 @@
73
73
  "screenfull": "^6.0.2",
74
74
  "xlsx": "^0.18.5",
75
75
  "zod": "^3.23.8",
76
- "@hisptz/dhis2-ui": "2.0.47",
77
- "@hisptz/dhis2-utils": "2.0.18"
76
+ "@hisptz/dhis2-utils": "2.0.18",
77
+ "@hisptz/dhis2-ui": "2.0.48"
78
78
  },
79
79
  "peerDependencies": {
80
80
  "@dhis2/app-runtime": "^3",