@hisptz/dhis2-analytics 2.1.11 → 2.1.13

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.
@@ -2,30 +2,15 @@
2
2
 
3
3
  var utils = require('../utils');
4
4
  var lodash = require('lodash');
5
- var EE = require('@google/earthengine');
5
+ var EE = require('./api');
6
6
 
7
- function _interopNamespace(e) {
8
- if (e && e.__esModule) return e;
9
- var n = Object.create(null);
10
- if (e) {
11
- Object.keys(e).forEach(function (k) {
12
- if (k !== 'default') {
13
- var d = Object.getOwnPropertyDescriptor(e, k);
14
- Object.defineProperty(n, k, d.get ? d : {
15
- enumerable: true,
16
- get: function () { return e[k]; }
17
- });
18
- }
19
- });
20
- }
21
- n.default = e;
22
- return Object.freeze(n);
23
- }
7
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
24
8
 
25
- var EE__namespace = /*#__PURE__*/_interopNamespace(EE);
9
+ var EE__default = /*#__PURE__*/_interopDefault(EE);
26
10
 
27
- const ee = EE__namespace;
11
+ const ee = EE__default.default;
28
12
  window.ee = ee;
13
+ console.log(ee.data);
29
14
  const FEATURE_STYLE = { color: "FFA500", strokeWidth: 2 };
30
15
  const DEFAULT_TILE_SCALE = 1;
31
16
  class EarthEngine {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../src/components/Map/components/MapLayer/components/GoogleEngineLayer/services/engine.ts"],"names":["EE","token","getInfo","getScale","getFeatureCollectionProperties","head","getHistogramStatistics","hasClasses","combineReducers","isEmpty","find"],"mappings":"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","file":"engine.js","sourcesContent":["import { MapOrgUnit } from \"../../../../../interfaces\";\nimport {\n\tEarthEngineOptions,\n\tEarthEngineToken,\n\tRefreshToken,\n} from \"../interfaces\";\nimport {\n\tcombineReducers,\n\tgetFeatureCollectionProperties,\n\tgetHistogramStatistics,\n\tgetInfo,\n\tgetScale,\n\thasClasses,\n} from \"../utils\";\nimport { find, head, isEmpty } from \"lodash\";\n\n//@ts-expect-error earth engine does not have types\nimport * as EE from \"@google/earthengine\";\n// @ts-ignore\nconst ee = EE as any;\n// @ts-ignore\nwindow.ee = ee;\n\nconst FEATURE_STYLE = { color: \"FFA500\", strokeWidth: 2 };\nconst DEFAULT_TILE_SCALE = 1;\n\nexport class EarthEngine {\n\ttoken?: EarthEngineToken;\n\toptions: EarthEngineOptions;\n\trefresh?: RefreshToken;\n\torgUnits?: MapOrgUnit[];\n\tinitialized = false;\n\tperiod?: string | string[];\n\tinstance: any;\n\tscale?: any;\n\timage: any;\n\taggregationData: any;\n\n\tconstructor({ options }: { options: EarthEngineOptions }) {\n\t\tthis.options = options;\n\t\tthis.initialized = true;\n\t\tthis.getInstance();\n\t}\n\n\tstatic async setToken(\n\t\ttoken: EarthEngineToken,\n\t\trefresh: RefreshToken,\n\t): Promise<void> {\n\t\tconst tokenType = \"Bearer\";\n\n\t\tfunction refreshToken(\n\t\t\tauthArgs: { scope: any },\n\t\t\tcallback: (props: any) => void,\n\t\t) {\n\t\t\trefresh().then(({ token }: { token: EarthEngineToken }) => {\n\t\t\t\tcallback({\n\t\t\t\t\t...token,\n\t\t\t\t\ttoken_type: tokenType ?? \"Bearer\",\n\t\t\t\t\tstate: authArgs?.scope,\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tawait new Promise((resolve, reject) => {\n\t\t\tif (ee.data.getAuthToken()) {\n\t\t\t\tee.initialize(null, null, resolve, reject);\n\t\t\t}\n\t\t\tif (token) {\n\t\t\t\tconst { access_token, client_id, expires_in } = token;\n\t\t\t\tee.data.setAuthToken(\n\t\t\t\t\tclient_id,\n\t\t\t\t\ttokenType ?? \"Bearer\",\n\t\t\t\t\taccess_token,\n\t\t\t\t\texpires_in,\n\t\t\t\t\tnull,\n\t\t\t\t\t() => {\n\t\t\t\t\t\tee.initialize(null, null, resolve, reject);\n\t\t\t\t\t},\n\t\t\t\t\tfalse,\n\t\t\t\t);\n\t\t\t\tee.data.setAuthTokenRefresher(refreshToken);\n\t\t\t}\n\t\t\tresolve(\"Token not found\");\n\t\t});\n\t}\n\n\tsetOrgUnits(orgUnits: MapOrgUnit[]): EarthEngine {\n\t\tthis.orgUnits = orgUnits;\n\t\treturn this;\n\t}\n\n\tsetPeriod(period: string) {\n\t\tthis.period = period;\n\t}\n\n\tasync getValue(geoJSON: any, type: string) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst point = this.getGeometryByType(geoJSON);\n\t\t\tconst reducer = this.getReducerByType(type);\n\t\t\tconst image = this.getImage();\n\n\t\t\tconst reducedImage = image.reduceRegion(reducer, point, 1);\n\n\t\t\treducedImage.evaluate((data: unknown, error: any) => {\n\t\t\t\tif (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t} else {\n\t\t\t\t\tresolve(data);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tasync getPeriod() {\n\t\tconst { type } = this.options;\n\t\tif (type !== \"ImageCollection\") {\n\t\t\treturn;\n\t\t}\n\n\t\tconst imageCollection = this.instance\n\t\t\t.distinct(\"system:time_start\")\n\t\t\t.sort(\"system:time_start\", false);\n\t\tconst featureCollection = ee\n\t\t\t.FeatureCollection(imageCollection)\n\t\t\t.select([\"system:time_start\", \"system:time_end\"], null, false);\n\n\t\treturn getInfo(featureCollection);\n\t}\n\n\tasync info() {\n\t\treturn new Promise((resolve) => {\n\t\t\tthis.instance.getInfo(resolve);\n\t\t});\n\t}\n\n\tasync getScale() {\n\t\ttry {\n\t\t\tconst { type } = this.options;\n\t\t\tswitch (type) {\n\t\t\t\tcase \"ImageCollection\":\n\t\t\t\t\tthis.scale = await getScale(this.instance.first());\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthis.scale = await getScale(this.getImage());\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\tasync getFeatureCollectionAggregation() {\n\t\tconst { datasetId } = this.options;\n\t\tconst dataset = ee.FeatureCollection(datasetId);\n\t\tconst collection = this.getFeatureCollection() as any;\n\t\tconst aggFeatures = collection\n\t\t\t?.map((feature: any) => {\n\t\t\t\tfeature = ee.Feature(feature);\n\t\t\t\tconst count = dataset.filterBounds(feature.geometry()).size();\n\n\t\t\t\treturn feature.set(\"count\", count);\n\t\t\t})\n\t\t\t.select([\"count\"], null, false);\n\n\t\treturn getInfo(aggFeatures).then(getFeatureCollectionProperties);\n\t}\n\n\tasync getHistogramAggregations() {\n\t\ttry {\n\t\t\tconst aggregation = head(this.options.aggregations) ?? \"\";\n\t\t\tconst reducer = ee.Reducer.frequencyHistogram();\n\t\t\tconst collection = this.getFeatureCollection();\n\t\t\tconst legend = this.options.legend?.items;\n\t\t\tconst scale = this.scale;\n\t\t\tconst tileScale = this.options.tileScale ?? DEFAULT_TILE_SCALE;\n\t\t\tconst scaleValue = await getInfo(scale);\n\n\t\t\tconst image = this.getImage();\n\t\t\tconst features = Object.values(\n\t\t\t\tawait getInfo(\n\t\t\t\t\timage\n\t\t\t\t\t\t.reduceRegions({\n\t\t\t\t\t\t\tcollection,\n\t\t\t\t\t\t\treducer,\n\t\t\t\t\t\t\tscale,\n\t\t\t\t\t\t\ttileScale,\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.select([\"histogram\"], null, false),\n\t\t\t\t).then((data) =>\n\t\t\t\t\tgetHistogramStatistics({\n\t\t\t\t\t\tdata,\n\t\t\t\t\t\tscale: scaleValue,\n\t\t\t\t\t\taggregationType: aggregation,\n\t\t\t\t\t\tlegend,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t);\n\n\t\t\treturn features.map((feature: any, index: number) => {\n\t\t\t\treturn {\n\t\t\t\t\torgUnit: this.orgUnits?.[index],\n\t\t\t\t\tdata: feature,\n\t\t\t\t};\n\t\t\t});\n\t\t} catch (e: any) {\n\t\t\tthrow Error(\"Could not get histogram\", {\n\t\t\t\tcause: e,\n\t\t\t});\n\t\t}\n\t}\n\n\tasync getAggregations() {\n\t\tawait this.getScale();\n\t\tconst { type } = this.options;\n\t\tif (type === \"FeatureCollection\") {\n\t\t\tthis.aggregationData = await this.getFeatureCollectionAggregation();\n\t\t\treturn;\n\t\t}\n\t\tconst aggregations = this.options.aggregations;\n\t\tif (!aggregations) return;\n\n\t\tif (hasClasses(head(aggregations) ?? \"\")) {\n\t\t\tthis.aggregationData = await this.getHistogramAggregations();\n\t\t\treturn;\n\t\t}\n\n\t\tconst reducer = combineReducers(ee)(aggregations);\n\t\tconst collection = this.getFeatureCollection();\n\t\tconst image = this.getImage();\n\t\tconst scale = this.scale;\n\t\tconst tileScale = this.options.tileScale ?? DEFAULT_TILE_SCALE;\n\t\tconst aggregatedFeatures = image\n\t\t\t.reduceRegions({\n\t\t\t\tcollection,\n\t\t\t\treducer,\n\t\t\t\tscale,\n\t\t\t\ttileScale,\n\t\t\t})\n\t\t\t.select(aggregations, null, false);\n\n\t\tconst features = Object.values(\n\t\t\tgetFeatureCollectionProperties(await getInfo(aggregatedFeatures)),\n\t\t) as any[];\n\t\tif (!isEmpty(features) && features.length === this.orgUnits?.length) {\n\t\t\t//Mapping features to orgUnits using index.\n\t\t\tthis.aggregationData = features.map(\n\t\t\t\t(feature: any, index: number) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\torgUnit: this.orgUnits?.[index],\n\t\t\t\t\t\tdata: feature,\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t}\n\n\tgetAggregation(orgUnit: MapOrgUnit) {\n\t\tif (isEmpty(this.aggregationData)) {\n\t\t\treturn;\n\t\t}\n\t\treturn find(\n\t\t\tthis.aggregationData,\n\t\t\t(aggregation) => aggregation.orgUnit.id === orgUnit.id,\n\t\t);\n\t}\n\n\tasync url(): Promise<string> {\n\t\tif (!this.initialized) throw \"You need to call init() first\";\n\t\treturn this.visualize(this.getImage());\n\t}\n\n\tprotected applyPeriod(imageCollection: any) {\n\t\tconst period = this.period;\n\t\tif (period) {\n\t\t\treturn imageCollection.filterDate(period);\n\t\t}\n\t}\n\n\tprotected applyMask(image: any) {\n\t\tif (this.options.mask) {\n\t\t\treturn image.updateMask(image.gt(0));\n\t\t} else {\n\t\t\treturn image;\n\t\t}\n\t}\n\n\tprotected applyBand(imageCollection: any) {\n\t\tif (this.options.selectedBands) {\n\t\t\treturn imageCollection.select(this.options.selectedBands);\n\t\t} else {\n\t\t\treturn imageCollection;\n\t\t}\n\t}\n\n\tprotected getReducerByType(type: string) {\n\t\treturn ee.Reducer[type].call();\n\t}\n\n\tprotected getGeometryByType(geoJSON: any) {\n\t\treturn ee.Geometry(geoJSON?.geometry);\n\t}\n\n\tprotected getFeatureByType(geoJSON: any) {\n\t\tconst featureType = geoJSON.type;\n\t\tconst features = geoJSON.features ?? [];\n\t\tconst geometry = this.getGeometryByType(geoJSON);\n\t\tswitch (featureType) {\n\t\t\tcase \"Feature\":\n\t\t\t\treturn ee.Feature(geometry);\n\t\t\tcase \"FeatureCollection\":\n\t\t\t\treturn ee.FeatureCollection([\n\t\t\t\t\t...features.map((feature: any) =>\n\t\t\t\t\t\tee.Feature(this.getGeometryByType(feature)),\n\t\t\t\t\t),\n\t\t\t\t]);\n\t\t}\n\t}\n\n\tprotected getFeatureCollection(): unknown {\n\t\tif (this.orgUnits) {\n\t\t\treturn ee.FeatureCollection(\n\t\t\t\tthis.orgUnits.map((orgUnit: MapOrgUnit) =>\n\t\t\t\t\tthis.getFeatureByType(orgUnit.geoJSON),\n\t\t\t\t),\n\t\t\t);\n\t\t} else {\n\t\t\tthrow \"You need to set org units first\";\n\t\t}\n\t}\n\n\tprotected getParamsFromLegend() {\n\t\tif (!this.options.legend) return;\n\t\tconst legend = this.options.legend.items;\n\t\tconst keys = legend.map((l) => l.id);\n\t\tconst min = Math.min(...keys);\n\t\tconst max = Math.max(...keys);\n\t\tconst palette = legend.map((l) => l.color).join(\",\");\n\t\treturn { min, max, palette };\n\t}\n\n\tprotected async visualize(image: any): Promise<string> {\n\t\tconst { min, max, palette } = this.getParamsFromLegend() ??\n\t\t\tthis.options.params ?? {\n\t\t\t\tmin: null,\n\t\t\t\tmax: null,\n\t\t\t\tpalette: null,\n\t\t\t};\n\t\treturn (\n\t\t\t(await new Promise((resolve, reject) => {\n\t\t\t\timage.getMap({ min, max, palette }, resolve);\n\t\t\t})) as any\n\t\t)?.urlFormat;\n\t}\n\n\tprotected getImageCollectionInstance() {\n\t\tconst { datasetId } = this.options;\n\t\tlet imageCollection = ee.ImageCollection(datasetId);\n\t\tif (this.period) {\n\t\t\timageCollection = this.applyPeriod(imageCollection);\n\t\t}\n\t\timageCollection = this.applyBand(imageCollection);\n\t\treturn imageCollection;\n\t}\n\n\tprotected getImageFromImageCollection() {\n\t\tconst { mosaic } = this.options;\n\t\tconst imageCollection = this.instance;\n\t\treturn mosaic\n\t\t\t? imageCollection\n\t\t\t\t\t.mosaic()\n\t\t\t\t\t.clipToCollection(this.getFeatureCollection())\n\t\t\t: ee\n\t\t\t\t\t.Image(imageCollection.first())\n\t\t\t\t\t.clipToCollection(this.getFeatureCollection());\n\t}\n\n\tprotected getImageInstance() {\n\t\tconst { datasetId } = this.options;\n\t\treturn ee\n\t\t\t.Image(datasetId)\n\t\t\t.clipToCollection(this.getFeatureCollection());\n\t}\n\n\tprotected getImageFromImage() {\n\t\treturn this.instance;\n\t}\n\n\tprotected getFeatureInstance() {\n\t\tconst { datasetId } = this.options;\n\t\tconst feature = ee.Feature(datasetId);\n\t\tthis.instance = feature;\n\t\treturn feature;\n\t}\n\n\tprotected getImageFromFeature() {\n\t\treturn this.instance;\n\t}\n\n\tprotected getFeatureCollectionInstance() {\n\t\tconst { datasetId } = this.options;\n\t\tlet featureCollection = ee.FeatureCollection(datasetId);\n\t\tif (this.period) {\n\t\t\tfeatureCollection = this.applyPeriod(featureCollection);\n\t\t}\n\t\treturn featureCollection;\n\t}\n\n\tprotected getImageFromFeatureCollection() {\n\t\tlet featureCollection = this.instance;\n\t\treturn featureCollection\n\t\t\t.draw(FEATURE_STYLE)\n\t\t\t.clipToCollection(this.getFeatureCollection());\n\t}\n\n\tprotected getInstance() {\n\t\tconst { type } = this.options;\n\t\tswitch (type) {\n\t\t\tcase \"Feature\":\n\t\t\t\tthis.instance = this.getFeatureInstance();\n\t\t\t\tbreak;\n\t\t\tcase \"FeatureCollection\":\n\t\t\t\tthis.instance = this.getFeatureCollectionInstance();\n\t\t\t\tbreak;\n\t\t\tcase \"Image\":\n\t\t\t\tthis.instance = this.getImageInstance();\n\t\t\t\tbreak;\n\t\t\tcase \"ImageCollection\":\n\t\t\t\tthis.instance = this.getImageCollectionInstance();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthis.instance = this.getImageFromImage();\n\t\t}\n\t}\n\n\tprotected getImage(): any {\n\t\tif (this.image) {\n\t\t\treturn this.image;\n\t\t}\n\t\tconst { type } = this.options;\n\t\tlet image;\n\t\tswitch (type) {\n\t\t\tcase \"Feature\":\n\t\t\t\timage = this.getImageFromFeature();\n\t\t\t\tbreak;\n\t\t\tcase \"FeatureCollection\":\n\t\t\t\timage = this.getImageFromFeatureCollection();\n\t\t\t\tbreak;\n\t\t\tcase \"Image\":\n\t\t\t\timage = this.getImageFromImage();\n\t\t\t\tbreak;\n\t\t\tcase \"ImageCollection\":\n\t\t\t\timage = this.getImageFromImageCollection();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\timage = this.getImageFromImage();\n\t\t}\n\t\timage = this.applyMask(image);\n\t\timage = this.applyBand(image);\n\t\tthis.image = image;\n\t\treturn image;\n\t}\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../../../src/components/Map/components/MapLayer/components/GoogleEngineLayer/services/engine.ts"],"names":["EE","token","getInfo","getScale","getFeatureCollectionProperties","head","getHistogramStatistics","hasClasses","combineReducers","isEmpty","find"],"mappings":"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","file":"engine.js","sourcesContent":["import { MapOrgUnit } from \"../../../../../interfaces\";\nimport {\n\tEarthEngineOptions,\n\tEarthEngineToken,\n\tRefreshToken,\n} from \"../interfaces\";\nimport {\n\tcombineReducers,\n\tgetFeatureCollectionProperties,\n\tgetHistogramStatistics,\n\tgetInfo,\n\tgetScale,\n\thasClasses,\n} from \"../utils\";\nimport { find, head, isEmpty } from \"lodash\";\n\n//@ts-expect-error earth engine does not have types\nimport EE from \"./api\";\n// @ts-ignore\nconst ee = EE as any;\n// @ts-ignore\nwindow.ee = ee;\n\nconsole.log(ee.data);\n\nconst FEATURE_STYLE = { color: \"FFA500\", strokeWidth: 2 };\nconst DEFAULT_TILE_SCALE = 1;\n\nexport class EarthEngine {\n\ttoken?: EarthEngineToken;\n\toptions: EarthEngineOptions;\n\trefresh?: RefreshToken;\n\torgUnits?: MapOrgUnit[];\n\tinitialized = false;\n\tperiod?: string | string[];\n\tinstance: any;\n\tscale?: any;\n\timage: any;\n\taggregationData: any;\n\n\tconstructor({ options }: { options: EarthEngineOptions }) {\n\t\tthis.options = options;\n\t\tthis.initialized = true;\n\t\tthis.getInstance();\n\t}\n\n\tstatic async setToken(\n\t\ttoken: EarthEngineToken,\n\t\trefresh: RefreshToken,\n\t): Promise<void> {\n\t\tconst tokenType = \"Bearer\";\n\n\t\tfunction refreshToken(\n\t\t\tauthArgs: { scope: any },\n\t\t\tcallback: (props: any) => void,\n\t\t) {\n\t\t\trefresh().then(({ token }: { token: EarthEngineToken }) => {\n\t\t\t\tcallback({\n\t\t\t\t\t...token,\n\t\t\t\t\ttoken_type: tokenType ?? \"Bearer\",\n\t\t\t\t\tstate: authArgs?.scope,\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tawait new Promise((resolve, reject) => {\n\t\t\tif (ee.data.getAuthToken()) {\n\t\t\t\tee.initialize(null, null, resolve, reject);\n\t\t\t}\n\t\t\tif (token) {\n\t\t\t\tconst { access_token, client_id, expires_in } = token;\n\t\t\t\tee.data.setAuthToken(\n\t\t\t\t\tclient_id,\n\t\t\t\t\ttokenType ?? \"Bearer\",\n\t\t\t\t\taccess_token,\n\t\t\t\t\texpires_in,\n\t\t\t\t\tnull,\n\t\t\t\t\t() => {\n\t\t\t\t\t\tee.initialize(null, null, resolve, reject);\n\t\t\t\t\t},\n\t\t\t\t\tfalse,\n\t\t\t\t);\n\t\t\t\tee.data.setAuthTokenRefresher(refreshToken);\n\t\t\t}\n\t\t\tresolve(\"Token not found\");\n\t\t});\n\t}\n\n\tsetOrgUnits(orgUnits: MapOrgUnit[]): EarthEngine {\n\t\tthis.orgUnits = orgUnits;\n\t\treturn this;\n\t}\n\n\tsetPeriod(period: string) {\n\t\tthis.period = period;\n\t}\n\n\tasync getValue(geoJSON: any, type: string) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst point = this.getGeometryByType(geoJSON);\n\t\t\tconst reducer = this.getReducerByType(type);\n\t\t\tconst image = this.getImage();\n\n\t\t\tconst reducedImage = image.reduceRegion(reducer, point, 1);\n\n\t\t\treducedImage.evaluate((data: unknown, error: any) => {\n\t\t\t\tif (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t} else {\n\t\t\t\t\tresolve(data);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tasync getPeriod() {\n\t\tconst { type } = this.options;\n\t\tif (type !== \"ImageCollection\") {\n\t\t\treturn;\n\t\t}\n\n\t\tconst imageCollection = this.instance\n\t\t\t.distinct(\"system:time_start\")\n\t\t\t.sort(\"system:time_start\", false);\n\t\tconst featureCollection = ee\n\t\t\t.FeatureCollection(imageCollection)\n\t\t\t.select([\"system:time_start\", \"system:time_end\"], null, false);\n\n\t\treturn getInfo(featureCollection);\n\t}\n\n\tasync info() {\n\t\treturn new Promise((resolve) => {\n\t\t\tthis.instance.getInfo(resolve);\n\t\t});\n\t}\n\n\tasync getScale() {\n\t\ttry {\n\t\t\tconst { type } = this.options;\n\t\t\tswitch (type) {\n\t\t\t\tcase \"ImageCollection\":\n\t\t\t\t\tthis.scale = await getScale(this.instance.first());\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthis.scale = await getScale(this.getImage());\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\tasync getFeatureCollectionAggregation() {\n\t\tconst { datasetId } = this.options;\n\t\tconst dataset = ee.FeatureCollection(datasetId);\n\t\tconst collection = this.getFeatureCollection() as any;\n\t\tconst aggFeatures = collection\n\t\t\t?.map((feature: any) => {\n\t\t\t\tfeature = ee.Feature(feature);\n\t\t\t\tconst count = dataset.filterBounds(feature.geometry()).size();\n\n\t\t\t\treturn feature.set(\"count\", count);\n\t\t\t})\n\t\t\t.select([\"count\"], null, false);\n\n\t\treturn getInfo(aggFeatures).then(getFeatureCollectionProperties);\n\t}\n\n\tasync getHistogramAggregations() {\n\t\ttry {\n\t\t\tconst aggregation = head(this.options.aggregations) ?? \"\";\n\t\t\tconst reducer = ee.Reducer.frequencyHistogram();\n\t\t\tconst collection = this.getFeatureCollection();\n\t\t\tconst legend = this.options.legend?.items;\n\t\t\tconst scale = this.scale;\n\t\t\tconst tileScale = this.options.tileScale ?? DEFAULT_TILE_SCALE;\n\t\t\tconst scaleValue = await getInfo(scale);\n\n\t\t\tconst image = this.getImage();\n\t\t\tconst features = Object.values(\n\t\t\t\tawait getInfo(\n\t\t\t\t\timage\n\t\t\t\t\t\t.reduceRegions({\n\t\t\t\t\t\t\tcollection,\n\t\t\t\t\t\t\treducer,\n\t\t\t\t\t\t\tscale,\n\t\t\t\t\t\t\ttileScale,\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.select([\"histogram\"], null, false),\n\t\t\t\t).then((data) =>\n\t\t\t\t\tgetHistogramStatistics({\n\t\t\t\t\t\tdata,\n\t\t\t\t\t\tscale: scaleValue,\n\t\t\t\t\t\taggregationType: aggregation,\n\t\t\t\t\t\tlegend,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t);\n\n\t\t\treturn features.map((feature: any, index: number) => {\n\t\t\t\treturn {\n\t\t\t\t\torgUnit: this.orgUnits?.[index],\n\t\t\t\t\tdata: feature,\n\t\t\t\t};\n\t\t\t});\n\t\t} catch (e: any) {\n\t\t\tthrow Error(\"Could not get histogram\", {\n\t\t\t\tcause: e,\n\t\t\t});\n\t\t}\n\t}\n\n\tasync getAggregations() {\n\t\tawait this.getScale();\n\t\tconst { type } = this.options;\n\t\tif (type === \"FeatureCollection\") {\n\t\t\tthis.aggregationData = await this.getFeatureCollectionAggregation();\n\t\t\treturn;\n\t\t}\n\t\tconst aggregations = this.options.aggregations;\n\t\tif (!aggregations) return;\n\n\t\tif (hasClasses(head(aggregations) ?? \"\")) {\n\t\t\tthis.aggregationData = await this.getHistogramAggregations();\n\t\t\treturn;\n\t\t}\n\n\t\tconst reducer = combineReducers(ee)(aggregations);\n\t\tconst collection = this.getFeatureCollection();\n\t\tconst image = this.getImage();\n\t\tconst scale = this.scale;\n\t\tconst tileScale = this.options.tileScale ?? DEFAULT_TILE_SCALE;\n\t\tconst aggregatedFeatures = image\n\t\t\t.reduceRegions({\n\t\t\t\tcollection,\n\t\t\t\treducer,\n\t\t\t\tscale,\n\t\t\t\ttileScale,\n\t\t\t})\n\t\t\t.select(aggregations, null, false);\n\n\t\tconst features = Object.values(\n\t\t\tgetFeatureCollectionProperties(await getInfo(aggregatedFeatures)),\n\t\t) as any[];\n\t\tif (!isEmpty(features) && features.length === this.orgUnits?.length) {\n\t\t\t//Mapping features to orgUnits using index.\n\t\t\tthis.aggregationData = features.map(\n\t\t\t\t(feature: any, index: number) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\torgUnit: this.orgUnits?.[index],\n\t\t\t\t\t\tdata: feature,\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t}\n\n\tgetAggregation(orgUnit: MapOrgUnit) {\n\t\tif (isEmpty(this.aggregationData)) {\n\t\t\treturn;\n\t\t}\n\t\treturn find(\n\t\t\tthis.aggregationData,\n\t\t\t(aggregation) => aggregation.orgUnit.id === orgUnit.id,\n\t\t);\n\t}\n\n\tasync url(): Promise<string> {\n\t\tif (!this.initialized) throw \"You need to call init() first\";\n\t\treturn this.visualize(this.getImage());\n\t}\n\n\tprotected applyPeriod(imageCollection: any) {\n\t\tconst period = this.period;\n\t\tif (period) {\n\t\t\treturn imageCollection.filterDate(period);\n\t\t}\n\t}\n\n\tprotected applyMask(image: any) {\n\t\tif (this.options.mask) {\n\t\t\treturn image.updateMask(image.gt(0));\n\t\t} else {\n\t\t\treturn image;\n\t\t}\n\t}\n\n\tprotected applyBand(imageCollection: any) {\n\t\tif (this.options.selectedBands) {\n\t\t\treturn imageCollection.select(this.options.selectedBands);\n\t\t} else {\n\t\t\treturn imageCollection;\n\t\t}\n\t}\n\n\tprotected getReducerByType(type: string) {\n\t\treturn ee.Reducer[type].call();\n\t}\n\n\tprotected getGeometryByType(geoJSON: any) {\n\t\treturn ee.Geometry(geoJSON?.geometry);\n\t}\n\n\tprotected getFeatureByType(geoJSON: any) {\n\t\tconst featureType = geoJSON.type;\n\t\tconst features = geoJSON.features ?? [];\n\t\tconst geometry = this.getGeometryByType(geoJSON);\n\t\tswitch (featureType) {\n\t\t\tcase \"Feature\":\n\t\t\t\treturn ee.Feature(geometry);\n\t\t\tcase \"FeatureCollection\":\n\t\t\t\treturn ee.FeatureCollection([\n\t\t\t\t\t...features.map((feature: any) =>\n\t\t\t\t\t\tee.Feature(this.getGeometryByType(feature)),\n\t\t\t\t\t),\n\t\t\t\t]);\n\t\t}\n\t}\n\n\tprotected getFeatureCollection(): unknown {\n\t\tif (this.orgUnits) {\n\t\t\treturn ee.FeatureCollection(\n\t\t\t\tthis.orgUnits.map((orgUnit: MapOrgUnit) =>\n\t\t\t\t\tthis.getFeatureByType(orgUnit.geoJSON),\n\t\t\t\t),\n\t\t\t);\n\t\t} else {\n\t\t\tthrow \"You need to set org units first\";\n\t\t}\n\t}\n\n\tprotected getParamsFromLegend() {\n\t\tif (!this.options.legend) return;\n\t\tconst legend = this.options.legend.items;\n\t\tconst keys = legend.map((l) => l.id);\n\t\tconst min = Math.min(...keys);\n\t\tconst max = Math.max(...keys);\n\t\tconst palette = legend.map((l) => l.color).join(\",\");\n\t\treturn { min, max, palette };\n\t}\n\n\tprotected async visualize(image: any): Promise<string> {\n\t\tconst { min, max, palette } = this.getParamsFromLegend() ??\n\t\t\tthis.options.params ?? {\n\t\t\t\tmin: null,\n\t\t\t\tmax: null,\n\t\t\t\tpalette: null,\n\t\t\t};\n\t\treturn (\n\t\t\t(await new Promise((resolve, reject) => {\n\t\t\t\timage.getMap({ min, max, palette }, resolve);\n\t\t\t})) as any\n\t\t)?.urlFormat;\n\t}\n\n\tprotected getImageCollectionInstance() {\n\t\tconst { datasetId } = this.options;\n\t\tlet imageCollection = ee.ImageCollection(datasetId);\n\t\tif (this.period) {\n\t\t\timageCollection = this.applyPeriod(imageCollection);\n\t\t}\n\t\timageCollection = this.applyBand(imageCollection);\n\t\treturn imageCollection;\n\t}\n\n\tprotected getImageFromImageCollection() {\n\t\tconst { mosaic } = this.options;\n\t\tconst imageCollection = this.instance;\n\t\treturn mosaic\n\t\t\t? imageCollection\n\t\t\t\t\t.mosaic()\n\t\t\t\t\t.clipToCollection(this.getFeatureCollection())\n\t\t\t: ee\n\t\t\t\t\t.Image(imageCollection.first())\n\t\t\t\t\t.clipToCollection(this.getFeatureCollection());\n\t}\n\n\tprotected getImageInstance() {\n\t\tconst { datasetId } = this.options;\n\t\treturn ee\n\t\t\t.Image(datasetId)\n\t\t\t.clipToCollection(this.getFeatureCollection());\n\t}\n\n\tprotected getImageFromImage() {\n\t\treturn this.instance;\n\t}\n\n\tprotected getFeatureInstance() {\n\t\tconst { datasetId } = this.options;\n\t\tconst feature = ee.Feature(datasetId);\n\t\tthis.instance = feature;\n\t\treturn feature;\n\t}\n\n\tprotected getImageFromFeature() {\n\t\treturn this.instance;\n\t}\n\n\tprotected getFeatureCollectionInstance() {\n\t\tconst { datasetId } = this.options;\n\t\tlet featureCollection = ee.FeatureCollection(datasetId);\n\t\tif (this.period) {\n\t\t\tfeatureCollection = this.applyPeriod(featureCollection);\n\t\t}\n\t\treturn featureCollection;\n\t}\n\n\tprotected getImageFromFeatureCollection() {\n\t\tlet featureCollection = this.instance;\n\t\treturn featureCollection\n\t\t\t.draw(FEATURE_STYLE)\n\t\t\t.clipToCollection(this.getFeatureCollection());\n\t}\n\n\tprotected getInstance() {\n\t\tconst { type } = this.options;\n\t\tswitch (type) {\n\t\t\tcase \"Feature\":\n\t\t\t\tthis.instance = this.getFeatureInstance();\n\t\t\t\tbreak;\n\t\t\tcase \"FeatureCollection\":\n\t\t\t\tthis.instance = this.getFeatureCollectionInstance();\n\t\t\t\tbreak;\n\t\t\tcase \"Image\":\n\t\t\t\tthis.instance = this.getImageInstance();\n\t\t\t\tbreak;\n\t\t\tcase \"ImageCollection\":\n\t\t\t\tthis.instance = this.getImageCollectionInstance();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthis.instance = this.getImageFromImage();\n\t\t}\n\t}\n\n\tprotected getImage(): any {\n\t\tif (this.image) {\n\t\t\treturn this.image;\n\t\t}\n\t\tconst { type } = this.options;\n\t\tlet image;\n\t\tswitch (type) {\n\t\t\tcase \"Feature\":\n\t\t\t\timage = this.getImageFromFeature();\n\t\t\t\tbreak;\n\t\t\tcase \"FeatureCollection\":\n\t\t\t\timage = this.getImageFromFeatureCollection();\n\t\t\t\tbreak;\n\t\t\tcase \"Image\":\n\t\t\t\timage = this.getImageFromImage();\n\t\t\t\tbreak;\n\t\t\tcase \"ImageCollection\":\n\t\t\t\timage = this.getImageFromImageCollection();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\timage = this.getImageFromImage();\n\t\t}\n\t\timage = this.applyMask(image);\n\t\timage = this.applyBand(image);\n\t\tthis.image = image;\n\t\treturn image;\n\t}\n}\n"]}
@@ -55,7 +55,18 @@ function getColumnSeries(analytics, header, config, highchartsType) {
55
55
  return {
56
56
  id: seriesDimensionValue,
57
57
  name: items?.[seriesDimensionValue]?.name,
58
- data,
58
+ data: config.legendSet ? data.map((value, index2) => {
59
+ const color = getLegendColorFromValue({
60
+ legendSet: config.legendSet,
61
+ value: value ?? 0
62
+ });
63
+ return {
64
+ x: index2,
65
+ y: value,
66
+ value,
67
+ color
68
+ };
69
+ }) : data,
59
70
  type: highchartsType,
60
71
  color: colors[index % colors.length]
61
72
  };
@@ -109,6 +120,19 @@ function updateLayout(config, { type }) {
109
120
  }
110
121
  return updatedLayout;
111
122
  }
123
+ function getLegendColorFromValue({
124
+ legendSet,
125
+ value
126
+ }) {
127
+ if (!legendSet && !value) {
128
+ return null;
129
+ }
130
+ const legends = legendSet?.legends ?? [];
131
+ const legend = legends.find((l) => {
132
+ return l.startValue === value || l.endValue === value || l.startValue < value && value < l.endValue;
133
+ });
134
+ return legend?.color ?? null;
135
+ }
112
136
  function getChartInstance(id, analytics, config) {
113
137
  switch (config.type) {
114
138
  case "column":
@@ -140,6 +164,6 @@ function getChartInstance(id, analytics, config) {
140
164
  }
141
165
  }
142
166
 
143
- export { getAllCategories, getChartInstance, getColumnSeries, getDimensionHeaderIndex, getPointSeries, updateLayout };
167
+ export { getAllCategories, getChartInstance, getColumnSeries, getDimensionHeaderIndex, getLegendColorFromValue, getPointSeries, updateLayout };
144
168
  //# sourceMappingURL=chart.js.map
145
169
  //# 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","row","index"],"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) => {\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: config.legendSet\n\t\t\t\t\t\t\t? data.map((value, index) => {\n\t\t\t\t\t\t\t\t\tconst color = getLegendColorFromValue({\n\t\t\t\t\t\t\t\t\t\tlegendSet: config.legendSet,\n\t\t\t\t\t\t\t\t\t\tvalue: value ?? 0,\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\tx: index,\n\t\t\t\t\t\t\t\t\t\ty: value,\n\t\t\t\t\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\t\t\t\t\tcolor: color,\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t: data,\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"]}