@hisptz/dhis2-analytics 2.1.32 → 2.1.33

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.
@@ -1,15 +1,15 @@
1
1
  'use strict';
2
2
 
3
- var index_js = require('../../MapLayer/components/GoogleEngineLayer/hooks/index.js');
3
+ var hooks = require('../../MapLayer/components/GoogleEngineLayer/hooks');
4
4
  var engine_js = require('../../MapLayer/components/GoogleEngineLayer/services/engine.js');
5
- var reactQuery = require('@tanstack/react-query');
5
+ var reactQuery = require('react-query');
6
6
  var react = require('react');
7
7
  var reactHookForm = require('react-hook-form');
8
8
  var lodash = require('lodash');
9
- var index_js$1 = require('../../MapLayer/components/GoogleEngineLayer/constants/index.js');
9
+ var constants = require('../../MapLayer/components/GoogleEngineLayer/constants');
10
10
 
11
11
  function useDatasetInfo(shouldRun, config) {
12
- const { refresh } = index_js.useGoogleEngineToken();
12
+ const { refresh } = hooks.useGoogleEngineToken();
13
13
  async function getInfo() {
14
14
  if (config) {
15
15
  const tokenData = await refresh();
@@ -39,7 +39,7 @@ function useType() {
39
39
  const type = reactHookForm.useWatch({
40
40
  name: "type"
41
41
  });
42
- return lodash.find(index_js$1.EARTH_ENGINE_LAYERS, ["id", type]);
42
+ return lodash.find(constants.EARTH_ENGINE_LAYERS, ["id", type]);
43
43
  }
44
44
 
45
45
  exports.useDatasetInfo = useDatasetInfo;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/components/Map/components/EarthEngineLayerConfiguration/hooks/data.ts"],"names":["useGoogleEngineToken","EarthEngine","useQuery","useMemo","useWatch","find","EARTH_ENGINE_LAYERS"],"mappings":";;;;;;;;;;AASO,SAAS,cAAA,CACf,WACA,MAAA,EACC;AACD,EAAA,MAAM,EAAE,OAAA,EAAQ,GAAIA,6BAAA,EAAqB;AAEzC,EAAA,eAAe,OAAA,GAAU;AACxB,IAAA,IAAI,MAAA,EAAQ;AACX,MAAA,MAAM,SAAA,GAAY,MAAM,OAAA,EAAQ;AAChC,MAAA,MAAMC,qBAAA,CAAY,QAAA,CAAS,SAAA,CAAU,KAAA,EAAO,OAAO,CAAA;AACnD,MAAA,MAAM,MAAA,GAAS,IAAIA,qBAAA,CAAY;AAAA,QAC9B,OAAA,EAAS;AAAA,OACT,CAAA;AACD,MAAA,OAAO,OAAO,SAAA,EAAU;AAAA,IACzB;AAAA,EACD;AAEA,EAAA,MAAM,EAAE,MAAM,KAAA,EAAO,SAAA,KAAcC,mBAAA,CAAS,CAAC,MAAM,CAAA,EAAG,OAAO,CAAA;AAE7D,EAAA,MAAM,OAAA,GAAUC,cAAQ,MAAM;AAC7B,IAAA,MAAM,WAAY,IAAA,EAAc,QAAA;AAChC,IAAA,OAAO,QAAA,EAAU,GAAA,CAAI,CAAC,OAAA,KAAiB;AACtC,MAAA,OAAO,IAAI,IAAA;AAAA,QACV,OAAA,EAAS,WAAW,mBAAmB;AAAA,SACrC,WAAA,EAAY;AAAA,IAChB,CAAC,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,OAAO;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,KAAA;AAAA,IACA;AAAA,GACD;AACD;AAEO,SAAS,OAAA,GAAU;AACzB,EAAA,MAAM,OAAOC,sBAAA,CAAS;AAAA,IACrB,IAAA,EAAM;AAAA,GACN,CAAA;AACD,EAAA,OAAOC,WAAA,CAAKC,8BAAA,EAAqB,CAAC,IAAA,EAAM,IAAI,CAAC,CAAA;AAC9C","file":"data.js","sourcesContent":["import { EarthEngineOptions } from \"../../MapLayer/components/GoogleEngineLayer/interfaces/index.js\";\nimport { useGoogleEngineToken } from \"../../MapLayer/components/GoogleEngineLayer/hooks/index.js\";\nimport { EarthEngine } from \"../../MapLayer/components/GoogleEngineLayer/services/engine.js\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport { useMemo } from \"react\";\nimport { useWatch } from \"react-hook-form\";\nimport { find } from \"lodash\";\nimport { EARTH_ENGINE_LAYERS } from \"../../MapLayer/components/GoogleEngineLayer/constants/index.js\";\n\nexport function useDatasetInfo(\n\tshouldRun: boolean,\n\tconfig?: EarthEngineOptions,\n) {\n\tconst { refresh } = useGoogleEngineToken();\n\n\tasync function getInfo() {\n\t\tif (config) {\n\t\t\tconst tokenData = await refresh();\n\t\t\tawait EarthEngine.setToken(tokenData.token, refresh);\n\t\t\tconst engine = new EarthEngine({\n\t\t\t\toptions: config,\n\t\t\t});\n\t\t\treturn engine.getPeriod();\n\t\t}\n\t}\n\n\tconst { data, error, isLoading } = useQuery([config], getInfo);\n\n\tconst periods = useMemo(() => {\n\t\tconst features = (data as any)?.features;\n\t\treturn features?.map((feature: any) => {\n\t\t\treturn new Date(\n\t\t\t\tfeature?.properties[\"system:time_start\"],\n\t\t\t)?.getFullYear();\n\t\t});\n\t}, [data]);\n\n\treturn {\n\t\tloading: isLoading,\n\t\terror: error as any,\n\t\tperiods,\n\t};\n}\n\nexport function useType() {\n\tconst type = useWatch({\n\t\tname: \"type\",\n\t});\n\treturn find(EARTH_ENGINE_LAYERS, [\"id\", type]);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../src/components/Map/components/EarthEngineLayerConfiguration/hooks/data.ts"],"names":["useGoogleEngineToken","EarthEngine","useQuery","useMemo","useWatch","find","EARTH_ENGINE_LAYERS"],"mappings":";;;;;;;;;;AASO,SAAS,cAAA,CACf,WACA,MAAA,EACC;AACD,EAAA,MAAM,EAAE,OAAA,EAAQ,GAAIA,0BAAA,EAAqB;AAEzC,EAAA,eAAe,OAAA,GAAU;AACxB,IAAA,IAAI,MAAA,EAAQ;AACX,MAAA,MAAM,SAAA,GAAY,MAAM,OAAA,EAAQ;AAChC,MAAA,MAAMC,qBAAA,CAAY,QAAA,CAAS,SAAA,CAAU,KAAA,EAAO,OAAO,CAAA;AACnD,MAAA,MAAM,MAAA,GAAS,IAAIA,qBAAA,CAAY;AAAA,QAC9B,OAAA,EAAS;AAAA,OACT,CAAA;AACD,MAAA,OAAO,OAAO,SAAA,EAAU;AAAA,IACzB;AAAA,EACD;AAEA,EAAA,MAAM,EAAE,MAAM,KAAA,EAAO,SAAA,KAAcC,mBAAA,CAAS,CAAC,MAAM,CAAA,EAAG,OAAO,CAAA;AAE7D,EAAA,MAAM,OAAA,GAAUC,cAAQ,MAAM;AAC7B,IAAA,MAAM,WAAY,IAAA,EAAc,QAAA;AAChC,IAAA,OAAO,QAAA,EAAU,GAAA,CAAI,CAAC,OAAA,KAAiB;AACtC,MAAA,OAAO,IAAI,IAAA;AAAA,QACV,OAAA,EAAS,WAAW,mBAAmB;AAAA,SACrC,WAAA,EAAY;AAAA,IAChB,CAAC,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,OAAO;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,KAAA;AAAA,IACA;AAAA,GACD;AACD;AAEO,SAAS,OAAA,GAAU;AACzB,EAAA,MAAM,OAAOC,sBAAA,CAAS;AAAA,IACrB,IAAA,EAAM;AAAA,GACN,CAAA;AACD,EAAA,OAAOC,WAAA,CAAKC,6BAAA,EAAqB,CAAC,IAAA,EAAM,IAAI,CAAC,CAAA;AAC9C","file":"data.js","sourcesContent":["import { EarthEngineOptions } from \"../../MapLayer/components/GoogleEngineLayer/interfaces\";\nimport { useGoogleEngineToken } from \"../../MapLayer/components/GoogleEngineLayer/hooks\";\nimport { EarthEngine } from \"../../MapLayer/components/GoogleEngineLayer/services/engine.js\";\nimport { useQuery } from \"react-query\";\nimport { useMemo } from \"react\";\nimport { useWatch } from \"react-hook-form\";\nimport { find } from \"lodash\";\nimport { EARTH_ENGINE_LAYERS } from \"../../MapLayer/components/GoogleEngineLayer/constants\";\n\nexport function useDatasetInfo(\n\tshouldRun: boolean,\n\tconfig?: EarthEngineOptions,\n) {\n\tconst { refresh } = useGoogleEngineToken();\n\n\tasync function getInfo() {\n\t\tif (config) {\n\t\t\tconst tokenData = await refresh();\n\t\t\tawait EarthEngine.setToken(tokenData.token, refresh);\n\t\t\tconst engine = new EarthEngine({\n\t\t\t\toptions: config,\n\t\t\t});\n\t\t\treturn engine.getPeriod();\n\t\t}\n\t}\n\n\tconst { data, error, isLoading } = useQuery([config], getInfo);\n\n\tconst periods = useMemo(() => {\n\t\tconst features = (data as any)?.features;\n\t\treturn features?.map((feature: any) => {\n\t\t\treturn new Date(\n\t\t\t\tfeature?.properties[\"system:time_start\"],\n\t\t\t)?.getFullYear();\n\t\t});\n\t}, [data]);\n\n\treturn {\n\t\tloading: isLoading,\n\t\terror: error as any,\n\t\tperiods,\n\t};\n}\n\nexport function useType() {\n\tconst type = useWatch({\n\t\tname: \"type\",\n\t});\n\treturn find(EARTH_ENGINE_LAYERS, [\"id\", type]);\n}\n"]}
@@ -1,16 +1,16 @@
1
1
  'use strict';
2
2
 
3
3
  var lodash = require('lodash');
4
- var index_js = require('../../../hooks/index.js');
4
+ var hooks = require('../../../hooks');
5
5
  var react = require('react');
6
- var map_js = require('../../../../../utils/map.js');
6
+ var utils = require('../../../../../utils');
7
7
  var appRuntime = require('@dhis2/app-runtime');
8
8
  var asyncEs = require('async-es');
9
9
  var colors_js = require('../../../../../utils/colors.js');
10
- var index_js$1 = require('../../../../MapLayer/components/GoogleEngineLayer/hooks/index.js');
10
+ var index_js = require('../../../../MapLayer/components/GoogleEngineLayer/hooks/index.js');
11
11
  var useBoundaryData_js = require('../../../../MapLayer/components/BoundaryLayer/hooks/useBoundaryData.js');
12
12
  var engine_js = require('../../../../MapLayer/components/GoogleEngineLayer/services/engine.js');
13
- var index_js$2 = require('../../../../MapLayer/components/GoogleEngineLayer/constants/index.js');
13
+ var index_js$1 = require('../../../../MapLayer/components/GoogleEngineLayer/constants/index.js');
14
14
 
15
15
  const analyticsQuery = {
16
16
  analytics: {
@@ -77,10 +77,10 @@ function useThematicLayers({
77
77
  }) {
78
78
  const engine = appRuntime.useDataEngine();
79
79
  const [loading, setLoading] = react.useState(false);
80
- const { orgUnits, orgUnitSelection } = index_js.useMapOrganisationUnit();
81
- const { periods, range } = index_js.useMapPeriods() ?? {};
80
+ const { orgUnits, orgUnitSelection } = hooks.useMapOrganisationUnit();
81
+ const { periods, range } = hooks.useMapPeriods() ?? {};
82
82
  const ou = react.useMemo(
83
- () => map_js.getOrgUnitsSelection(orgUnitSelection),
83
+ () => utils.getOrgUnitsSelection(orgUnitSelection),
84
84
  [orgUnitSelection]
85
85
  );
86
86
  const pe = react.useMemo(() => periods?.map((pe2) => pe2.id), [periods]);
@@ -92,8 +92,8 @@ function useThematicLayers({
92
92
  };
93
93
  }
94
94
  return {
95
- startDate: map_js.sanitizeDate(range.start.toDateString()),
96
- endDate: map_js.sanitizeDate(range.end.toDateString())
95
+ startDate: utils.sanitizeDate(range.start.toDateString()),
96
+ endDate: utils.sanitizeDate(range.end.toDateString())
97
97
  };
98
98
  }, [range]);
99
99
  const sanitizeData = (data, layer) => {
@@ -158,7 +158,7 @@ function useThematicLayers({
158
158
  layer.data.filter((datum) => !!datum.data),
159
159
  "data"
160
160
  );
161
- const autoLegends = map_js.generateLegends(
161
+ const autoLegends = utils.generateLegends(
162
162
  lodash.last(sortedData)?.data ?? 0,
163
163
  lodash.head(sortedData)?.data ?? 0,
164
164
  {
@@ -236,13 +236,13 @@ function useThematicLayers({
236
236
  }
237
237
  function usePointLayer() {
238
238
  const engine = appRuntime.useDataEngine();
239
- const { orgUnitSelection } = index_js.useMapOrganisationUnit();
239
+ const { orgUnitSelection } = hooks.useMapOrganisationUnit();
240
240
  const [loading, setLoading] = react.useState(false);
241
241
  const sanitizePointData = react.useCallback(
242
242
  (orgUnitData, groupSetData) => {
243
243
  const { analytics, layer } = orgUnitData ?? {};
244
- const rawOrgUnits = map_js.sanitizeOrgUnits(analytics?.metaData);
245
- const geoJSONObjects = map_js.toGeoJson(
244
+ const rawOrgUnits = utils.sanitizeOrgUnits(analytics?.metaData);
245
+ const geoJSONObjects = utils.toGeoJson(
246
246
  layer?.filter((bound) => bound.co)
247
247
  );
248
248
  return lodash.compact(
@@ -285,7 +285,7 @@ function usePointLayer() {
285
285
  const level = layer.level ? `LEVEL-${layer.level}` : void 0;
286
286
  const group = layer.group ? `OU_GROUP-${layer.group}` : void 0;
287
287
  const ous = [
288
- ...map_js.getOrgUnitsSelection(orgUnitSelection),
288
+ ...utils.getOrgUnitsSelection(orgUnitSelection),
289
289
  level,
290
290
  group
291
291
  ];
@@ -333,7 +333,7 @@ function usePointLayer() {
333
333
  };
334
334
  }
335
335
  function useGoogleEngineLayers() {
336
- const { refresh } = index_js$1.useGoogleEngineToken();
336
+ const { refresh } = index_js.useGoogleEngineToken();
337
337
  const orgUnits = useBoundaryData_js.useBoundaryData();
338
338
  async function getImageUrl(earthEngine, { filters }) {
339
339
  if (earthEngine.initialized) {
@@ -367,7 +367,7 @@ function useGoogleEngineLayers() {
367
367
  layers,
368
368
  asyncEs.asyncify(async (layer) => {
369
369
  try {
370
- const defaultOptions = lodash.find(index_js$2.EARTH_ENGINE_LAYERS, ["id", layer.type]) ?? {};
370
+ const defaultOptions = lodash.find(index_js$1.EARTH_ENGINE_LAYERS, ["id", layer.type]) ?? {};
371
371
  const options = {
372
372
  ...defaultOptions,
373
373
  aggregations: layer.aggregations ?? defaultOptions?.aggregations,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../src/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.tsx"],"names":["isEmpty","compact","useDataEngine","useState","useMapOrganisationUnit","useMapPeriods","useMemo","getOrgUnitsSelection","pe","sanitizeDate","sortBy","ou","row","map","asyncify","defaultClasses","defaultColorScaleName","generateLegends","last","head","differenceBy","find","useCallback","sanitizeOrgUnits","toGeoJson","ouGroup","useGoogleEngineToken","useBoundaryData","EarthEngine","EARTH_ENGINE_LAYERS"],"mappings":";;;;;;;;;;;;;;AA2CA,MAAM,cAAA,GAAiB;AAAA,EACtB,SAAA,EAAW;AAAA,IACV,QAAA,EAAU,WAAA;AAAA,IACV,MAAA,EAAQ,CAAC,EAAE,EAAA,EAAI,IAAI,EAAA,EAAI,SAAA,EAAW,OAAA,EAAS,gBAAA,EAAiB,KAAW;AACtE,MAAA,MAAM,WAAA,GAAc,CAACA,cAAA,CAAQ,EAAE,CAAA,GAC5B,MAAM,EAAA,EAAI,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,GACnB,MAAA;AACH,MAAA,MAAM,WAAA,GAAc,CAACA,cAAA,CAAQ,EAAE,CAAA,GAC5B,MAAM,EAAA,EAAI,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,GACnB,MAAA;AACH,MAAA,MAAM,WAAA,GAAc,CAACA,cAAA,CAAQ,EAAE,CAAA,GAC5B,MAAM,EAAA,EAAI,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,GACnB,MAAA;AAEH,MAAA,OAAO;AAAA,QACN,WAAWC,cAAA,CAAQ,CAAC,WAAA,EAAa,WAAA,EAAa,WAAW,CAAC,CAAA;AAAA,QAC1D,SAAA;AAAA,QACA,OAAA;AAAA,QACA,eAAA,EAAiB,MAAA;AAAA,QACjB,GAAI,oBAAoB;AAAC,OAC1B;AAAA,IACD;AAAA;AAEF,CAAA;AACA,MAAM,KAAA,GAAQ;AAAA,EACb,KAAA,EAAO;AAAA,IACN,QAAA,EAAU,aAAA;AAAA,IACV,MAAA,EAAQ,CAAC,EAAE,GAAA,EAAI,MAAY;AAAA,MAC1B,EAAA,EAAI,CAAA,GAAA,EAAM,GAAA,CAAI,IAAA,CAAK,GAAG,CAAC,CAAA;AAAA,KACxB;AAAA,GACD;AAAA,EACA,SAAA,EAAW;AAAA,IACV,QAAA,EAAU,WAAA;AAAA,IACV,MAAA,EAAQ,CAAC,EAAE,GAAA,EAAI,MAAY;AAAA,MAC1B,SAAA,EAAW;AAAA,QACV,CAAA,GAAA,EAAM,GAAA,CAAI,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA;AAAA,QACnB,CAAA,GAAA,EAAA,iBAAM,IAAI,IAAA,EAAK,EAAE,aAAa,CAAA;AAAA,OAC/B;AAAA,MACA,QAAA,EAAU,IAAA;AAAA,MACV,aAAA,EAAe;AAAA,KAChB;AAAA;AAEF,CAAA;AACA,MAAM,aAAA,GAAgB;AAAA,EACrB,QAAA,EAAU;AAAA,IACT,QAAA,EAAU,2BAAA;AAAA,IACV,EAAA,EAAI,CAAC,EAAE,QAAA,EAAS,KAAW,QAAA;AAAA,IAC3B,MAAA,EAAQ;AAAA,MACP,MAAA,EAAQ;AAAA,QACP;AAAA;AACD;AACD;AAEF,CAAA;AACA,MAAM,eAAA,GAAkB;AAAA,EACvB,UAAA,EAAY;AAAA,IACX,QAAA,EAAU,YAAA;AAAA,IACV,EAAA,EAAI,CAAC,EAAE,EAAA,EAAG,KAAW,EAAA;AAAA,IACrB,MAAA,EAAQ;AAAA,MACP,MAAA,EAAQ;AAAA,QACP,IAAA;AAAA,QACA,aAAA;AAAA,QACA;AAAA;AACD;AACD;AAEF,CAAA;AAEO,SAAS,iBAAA,CAAkB;AAAA,EACjC;AACD,CAAA,EAEQ;AACP,EAAA,MAAM,SAASC,wBAAA,EAAc;AAC7B,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIC,eAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,EAAE,QAAA,EAAU,gBAAA,EAAiB,GAAIC,+BAAA,EAAuB;AAC9D,EAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAM,GAAIC,sBAAA,MAAmB,EAAC;AAC/C,EAAA,MAAM,EAAA,GAAKC,aAAA;AAAA,IACV,MAAMC,4BAAqB,gBAAgB,CAAA;AAAA,IAC3C,CAAC,gBAAgB;AAAA,GAClB;AACA,EAAA,MAAM,EAAA,GAAKD,aAAA,CAAQ,MAAM,OAAA,EAAS,GAAA,CAAI,CAACE,GAAAA,KAAYA,GAAAA,CAAG,EAAE,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEpE,EAAA,MAAM,EAAE,SAAA,EAAW,OAAA,EAAQ,GAAIF,cAAQ,MAAM;AAC5C,IAAA,IAAI,CAAC,KAAA,EAAO;AACX,MAAA,OAAO;AAAA,QACN,SAAA,EAAW,MAAA;AAAA,QACX,OAAA,EAAS;AAAA,OACV;AAAA,IACD;AACA,IAAA,OAAO;AAAA,MACN,SAAA,EAAWG,mBAAA,CAAa,KAAA,CAAM,KAAA,CAAM,cAAc,CAAA;AAAA,MAClD,OAAA,EAASA,mBAAA,CAAa,KAAA,CAAM,GAAA,CAAI,cAAc;AAAA,KAC/C;AAAA,EACD,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AACV,EAAA,MAAM,YAAA,GAAe,CAAC,IAAA,EAAW,KAAA,KAA+B;AAC/D,IAAA,IAAI,IAAA,EAAM;AACT,MAAA,MAAM,EAAE,WAAU,GAAI,IAAA;AACtB,MAAA,MAAM,OAAO,SAAA,EAAW,IAAA;AACxB,MAAA,MAAM,OAAA,GAAU,UAAU,OAAA,CAAQ,SAAA;AAAA,QACjC,CAAC,MAAA,KAAgB,MAAA,CAAO,IAAA,KAAS;AAAA,OAClC;AACA,MAAA,MAAM,OAAA,GAAU,UAAU,OAAA,CAAQ,SAAA;AAAA,QACjC,CAAC,MAAA,KAAgB,MAAA,CAAO,IAAA,KAAS;AAAA,OAClC;AACA,MAAA,MAAM,UAAA,GAAa,UAAU,OAAA,CAAQ,SAAA;AAAA,QACpC,CAAC,MAAA,KAAgB,MAAA,CAAO,IAAA,KAAS;AAAA,OAClC;AAEA,MAAA,IAAI,CAACT,cAAA,CAAQ,IAAI,CAAA,EAAG;AACnB,QAAA,OAAOU,aAAA;AAAA,UACN,QAAA,EAAU,GAAA,CAAI,CAACC,GAAAA,KAAmB;AACjC,YAAA,MAAM,MAAM,IAAA,CAAK,IAAA;AAAA,cAChB,CAACC,IAAAA,KACAA,IAAAA,CAAI,OAAO,CAAA,KAAMD,GAAAA,CAAG,EAAA,IACpBC,IAAAA,CAAI,OAAO,CAAA,KAAM,KAAA,CAAM,QAAA,CAAS;AAAA,aAClC;AACA,YAAA,OAAO;AAAA,cACN,OAAA,EAASD,GAAAA;AAAA,cACT,MAAM,GAAA,GAAM,UAAA,CAAW,GAAA,CAAI,UAAU,CAAC,CAAA,GAAI,MAAA;AAAA,cAC1C,QAAA,EAAU;AAAA,gBACT,GAAG,KAAA,CAAM;AAAA;AACV,aACD;AAAA,UACD,CAAC,CAAA;AAAA,UACD,CAAC,MAAM;AAAA,SACR;AAAA,MACD;AACA,MAAA,OAAO,EAAC;AAAA,IACT;AACA,IAAA,OAAO,EAAC;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,eAAA,GAAkB,OACvB,MAAA,KACoC;AACpC,IAAA,OAAQ,MAAME,WAAA;AAAA,MACb,MAAA;AAAA,MACAC,gBAAA,CAAS,OAAO,KAAA,KAA+B;AAC9C,QAAA,IAAI;AACH,UAAA,MAAM,UAAU,EAAC;AACjB,UAAA,IAAI,KAAA,CAAM,SAAS,SAAA,EAAW;AAC7B,YAAA,MAAM,aAAA,GAAgB,MAAM,MAAA,CAAO,KAAA;AAAA,cAClC,eAAA;AAAA,cACA;AAAA,gBACC,SAAA,EAAW;AAAA,kBACV,EAAA,EAAI,MAAM,QAAA,CAAS;AAAA;AACpB;AACD,aACD;AACA,YAAA,MAAM,YACL,aAAA,EAAe,UAAA;AAChB,YAAA,IAAI,SAAA,EAAW;AACd,cAAA,OAAA,CAAQ,IAAA,CAAK,GAAG,SAAA,CAAU,OAAO,CAAA;AAAA,YAClC;AAAA,UACD,CAAA,MAAO;AACN,YAAA,MAAM,EAAE,KAAA,EAAO,UAAA,EAAW,GAAI,KAAA,CAAM,SAClC,YAAA,IAAgB;AAAA,cACjB,KAAA,EAAOC,wBAAA;AAAA,cACP,UAAA,EAAYC;AAAA,aACb;AACA,YAAA,MAAM,UAAA,GAAaN,aAAA;AAAA,cAClB,KAAA,CAAM,KAAK,MAAA,CAAO,CAAC,UAAU,CAAC,CAAC,MAAM,IAAI,CAAA;AAAA,cACzC;AAAA,aACD;AACA,YAAA,MAAM,WAAA,GAAcO,sBAAA;AAAA,cACnBC,WAAA,CAAK,UAAU,CAAA,EAAG,IAAA,IAAQ,CAAA;AAAA,cAC1BC,WAAA,CAAK,UAAU,CAAA,EAAG,IAAA,IAAQ,CAAA;AAAA,cAC1B;AAAA,gBACC,YAAA,EAAc,KAAA;AAAA,gBACd;AAAA;AACD,aACD;AACA,YAAA,OAAA,CAAQ,IAAA,CAAK,GAAG,WAAW,CAAA;AAAA,UAC5B;AACA,UAAA,OAAO;AAAA,YACN,GAAG,KAAA;AAAA,YACH;AAAA,WACD;AAAA,QACD,SAAS,CAAA,EAAG;AACX,UAAA,OAAO,KAAA;AAAA,QACR;AAAA,MACD,CAAC;AAAA,KACF;AAAA,EACD,CAAA;AAEA,EAAA,MAAM,cAAA,GAAiB,OACtB,MAAA,KACoC;AACpC,IAAA,IAAI;AACH,MAAA,UAAA,CAAW,IAAI,CAAA;AACf,MAAA,MAAM,oBAAoB,MAAA,EAAQ,MAAA,CAAO,CAAC,KAAA,KAAU,CAAC,MAAM,IAAI,CAAA;AAC/D,MAAA,MAAM,cAAA,GAAiBC,mBAAA;AAAA,QACtB,MAAA;AAAA,QACA,iBAAA;AAAA,QACA;AAAA,OACD;AACA,MAAA,MAAM,KAAK,iBAAA,CAAkB,GAAA,CAAI,CAAC,KAAA,KAAU,KAAA,CAAM,SAAS,EAAE,CAAA;AAC7D,MAAA,IAAI,0BAA+B,EAAC;AAEpC,MAAA,IAAI,CAACpB,cAAA,CAAQ,EAAE,CAAA,EAAG;AACjB,QAAA,MAAM,IAAA,GAAO,MAAM,MAAA,CAAO,KAAA,CAAM,cAAA,EAAgB;AAAA,UAC/C,SAAA,EAAW;AAAA,YACV,EAAA;AAAA,YACA,EAAA;AAAA,YACA,EAAA;AAAA,YACA,SAAA;AAAA,YACA,OAAA;AAAA,YACA;AAAA;AACD,SACA,CAAA;AACD,QAAA,uBAAA,GAA0B,iBAAA,CAAkB,GAAA,CAAI,CAAC,KAAA,MAAW;AAAA,UAC3D,GAAG,KAAA;AAAA,UACH,MACC,KAAA,EAAO,IAAA,IAAQ,KAAA,EAAO,QAAA,EAAU,eAAe,KAAA,CAAM,EAAA;AAAA,UACtD,IAAA,EAAM,YAAA,CAAa,IAAA,EAAM,KAAK;AAAA,SAC/B,CAAE,CAAA;AAAA,MACH;AACA,MAAA,MAAM,2BAAA,GAA8B,cAAA,CAAe,GAAA,CAAI,CAAC,KAAA,MAAW;AAAA,QAClE,GAAG,KAAA;AAAA,QACH,IAAA,EAAM,KAAA,CAAM,IAAA,EAAM,GAAA,CAAI,CAAC,KAAA,MAAW;AAAA,UACjC,GAAG,KAAA;AAAA,UACH,OAAA,EAASqB,YAAK,QAAA,EAAU;AAAA,YACvB,IAAA;AAAA,YACA,KAAA,CAAM;AAAA,WACN,CAAA;AAAA,UACD,UAAU,KAAA,CAAM,QAAA;AAAA,UAChB,MACC,KAAA,EAAO,IAAA,IAAQ,KAAA,EAAO,QAAA,EAAU,eAAe,KAAA,CAAM;AAAA,SACvD,CAAE;AAAA,OACH,CAAE,CAAA;AACF,MAAA,UAAA,CAAW,KAAK,CAAA;AAChB,MAAA,OAAO,MAAM,eAAA,CAAgB;AAAA,QAC5B,GAAG,uBAAA;AAAA,QACH,GAAG;AAAA,OACH,CAAA;AAAA,IACF,SAAS,CAAA,EAAQ;AAChB,MAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,6BAAA,CAAA,EAAiC,CAAA,CAAE,OAAO,CAAA;AACxD,MAAA,UAAA,CAAW,KAAK,CAAA;AAChB,MAAA,OAAO,EAAC;AAAA,IACT;AAAA,EACD,CAAA;AAEA,EAAA,OAAO;AAAA,IACN,cAAA;AAAA,IACA;AAAA,GACD;AACD;AAEO,SAAS,aAAA,GAAgB;AAC/B,EAAA,MAAM,SAASnB,wBAAA,EAAc;AAC7B,EAAA,MAAM,EAAE,gBAAA,EAAiB,GAAIE,+BAAA,EAAuB;AACpD,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAID,eAAS,KAAK,CAAA;AAE5C,EAAA,MAAM,iBAAA,GAAoBmB,iBAAA;AAAA,IACzB,CAAC,aAAkB,YAAA,KAAsC;AACxD,MAAA,MAAM,EAAE,SAAA,EAAW,KAAA,EAAM,GAAK,eAAuB,EAAC;AACtD,MAAA,MAAM,WAAA,GAAcC,uBAAA,CAAiB,SAAA,EAAW,QAAQ,CAAA;AACxD,MAAA,MAAM,cAAA,GAAiBC,gBAAA;AAAA,QACtB,KAAA,EAAO,MAAA,CAAO,CAAC,KAAA,KAAe,MAAM,EAAE;AAAA,OACvC;AACA,MAAA,OAAOvB,cAAA;AAAA,QACN,WAAA,CAAY,GAAA,CAAI,CAAC,OAAA,KAAiB;AACjC,UAAA,MAAM,gBAAqB,cAAA,EAAgB,IAAA;AAAA,YAC1C,CAAC,OAAA,KAAiB,OAAA,CAAQ,UAAA,CAAW,OAAO,OAAA,CAAQ;AAAA,WACrD;AACA,UAAA,MAAM,aAAA,GACJ,YAAA,EAAc,QAAA,EACZ,sBAAA,IAA0B,EAAC;AAC/B,UAAA,MAAM,OAAA,GAAUoB,WAAA;AAAA,YACf,aAAA;AAAA,YACA,CAACI,aACA,CAAC,CAACJ,YAAKI,QAAAA,EAAS,iBAAA,IAAqB,EAAC,EAAG;AAAA,cACxC,IAAA;AAAA,cACA,OAAA,CAAQ;AAAA,aACR;AAAA,WACH;AAEA,UAAA,IACC,CAAC,aAAA,IACD,aAAA,CAAc,UAAA,CAAW,SAAS,OAAA,EACjC;AACD,YAAA;AAAA,UACD;AACA,UAAA,OAAO;AAAA,YACN,GAAG,OAAA;AAAA,YACH,OAAA,EAAS,aAAA;AAAA,YACT,KAAA,EAAO,cAAc,UAAA,CAAW,KAAA;AAAA,YAChC,IAAA,EAAM;AAAA,cACL,IAAA,EAAM,WAAA;AAAA,cACN,MAAM,OAAA,EAAS;AAAA;AAChB,WACD;AAAA,QACD,CAAC;AAAA,OACF;AAAA,IACD,CAAA;AAAA,IACA;AAAC,GACF;AAEA,EAAA,MAAM,aAAA,GAAgBH,iBAAA;AAAA,IACrB,OACC,KAAA,KAC2C;AAC3C,MAAA,IAAI;AACH,QAAA,IAAI,CAAC,KAAA,CAAM,KAAA,IAAS,CAAC,MAAM,KAAA,EAAO;AACjC,UAAA;AAAA,QACD;AACA,QAAA,UAAA,CAAW,IAAI,CAAA;AACf,QAAA,MAAM,QAAQ,KAAA,CAAM,KAAA,GAAQ,CAAA,MAAA,EAAS,KAAA,CAAM,KAAK,CAAA,CAAA,GAAK,KAAA,CAAA;AACrD,QAAA,MAAM,QAAQ,KAAA,CAAM,KAAA,GACjB,CAAA,SAAA,EAAY,KAAA,CAAM,KAAK,CAAA,CAAA,GACvB,KAAA,CAAA;AACH,QAAA,MAAM,GAAA,GAAM;AAAA,UACX,GAAGf,4BAAqB,gBAAgB,CAAA;AAAA,UACxC,KAAA;AAAA,UACA;AAAA,SACD;AAEA,QAAA,MAAM,SAAA,GAAY,MAAM,MAAA,CAAO,KAAA,CAAM,KAAA,EAAO;AAAA,UAC3C,SAAA,EAAW;AAAA,YACV;AAAA;AACD,SACA,CAAA;AACD,QAAA,MAAM,YAAA,GAAe,MAAM,MAAA,CAAO,KAAA,CAAM,aAAA,EAAe;AAAA,UACtD,SAAA,EAAW;AAAA,YACV,QAAA,EAAU,MAAM,KAAA,EAAO;AAAA;AACxB,SACA,CAAA;AACD,QAAA,MAAM,oBAAA,GAAuB,iBAAA;AAAA,UAC5B,SAAA;AAAA,UACA;AAAA,SACD;AAEA,QAAA,MAAM,aAAA,GACJ,YAAA,EAAc,QAAA,EAAkB,sBAAA,IACjC,EAAC;AAEF,QAAA,MAAM,yBAAyB,aAAA,CAAc,GAAA;AAAA,UAC5C,CAAC,OAAA,MAAkB;AAAA,YAClB,GAAG,OAAA;AAAA,YACH,iBAAA,EAAmB,KAAA;AAAA,WACpB;AAAA,SACD;AACA,QAAA,UAAA,CAAW,KAAK,CAAA;AAChB,QAAA,OAAO;AAAA,UACN,GAAG,KAAA;AAAA,UACH,MAAA,EAAQ,oBAAA;AAAA,UACR,KAAA,EAAO;AAAA,YACN,GAAG,KAAA,CAAM,KAAA;AAAA,YACT,aAAA,EAAe;AAAA;AAChB,SACD;AAAA,MACD,SAAS,CAAA,EAAQ;AAChB,QAAA,UAAA,CAAW,KAAK,CAAA;AAChB,QAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,yBAAA,CAAA,EAA6B,CAAA,CAAE,OAAO,CAAA;AACpD,QAAA;AAAA,MACD;AAAA,IACD,CAAA;AAAA,IACA;AAAC,GACF;AAEA,EAAA,OAAO;AAAA,IACN,OAAA;AAAA,IACA;AAAA,GACD;AACD;AAEO,SAAS,qBAAA,GAAwB;AACvC,EAAA,MAAM,EAAE,OAAA,EAAQ,GAAImB,+BAAA,EAAqB;AACzC,EAAA,MAAM,WAAWC,kCAAA,EAAgB;AAEjC,EAAA,eAAe,WAAA,CACd,WAAA,EACA,EAAE,OAAA,EAAQ,EACoB;AAC9B,IAAA,IAAI,YAAY,WAAA,EAAa;AAC5B,MAAA,IAAI;AACH,QAAA,WAAA,CAAY,WAAA,CAAY,QAAA,IAAY,EAAE,CAAA;AACtC,QAAA,MAAM,SAAS,OAAA,EAAS,MAAA;AACxB,QAAA,IAAI,MAAA,EAAQ;AACX,UAAA,WAAA,CAAY,UAAU,MAAM,CAAA;AAAA,QAC7B;AACA,QAAA,OAAO,YAAY,GAAA,EAAI;AAAA,MACxB,SAAS,CAAA,EAAG;AACX,QAAA,OAAA,CAAQ,MAAM,CAAC,CAAA;AAAA,MAChB;AAAA,IACD;AAAA,EACD;AAEA,EAAA,MAAM,cAAA,GAAiBL,iBAAA;AAAA,IACtB,OACC,MAAA,KACwC;AACxC,MAAA,IAAItB,cAAA,CAAQ,MAAM,CAAA,EAAG;AACpB,QAAA,OAAO,EAAC;AAAA,MACT;AACA,MAAA,IAAI;AACH,QAAA,MAAM,EAAE,KAAA,EAAM,GAAI,MAAM,OAAA,EAAQ;AAChC,QAAA,IAAI,CAAC,KAAA,EAAO;AACX,UAAA,OAAA,CAAQ,KAAA;AAAA,YACP,CAAA,2CAAA;AAAA,WACD;AACA,UAAA,OAAO,EAAC;AAAA,QACT;AACA,QAAA,MAAM4B,qBAAA,CAAY,QAAA,CAAS,KAAA,EAAO,OAAO,CAAA;AACzC,QAAA,OAAOf,WAAA;AAAA,UACN,MAAA;AAAA,UACAC,gBAAA,CAAS,OAAO,KAAA,KAAkC;AACjD,YAAA,IAAI;AACH,cAAA,MAAM,cAAA,GACLO,YAAKQ,8BAAA,EAAqB,CAAC,MAAM,KAAA,CAAM,IAAI,CAAC,CAAA,IAC5C,EAAC;AACF,cAAA,MAAM,OAAA,GAA8B;AAAA,gBACnC,GAAG,cAAA;AAAA,gBACH,YAAA,EACC,KAAA,CAAM,YAAA,IACN,cAAA,EAAgB,YAAA;AAAA,gBACjB,MAAA,EAAQ,KAAA,CAAM,MAAA,IAAU,cAAA,EAAgB;AAAA,eACzC;AACA,cAAA,MAAM,YAAA,GAAe;AAAA,gBACpB,GAAG,KAAA;AAAA,gBACH;AAAA,eACD;AACA,cAAA,MAAM,WAAA,GAAc,IAAID,qBAAA,CAAY,EAAE,SAAS,CAAA;AAC/C,cAAA,MAAM,MAAM,MAAM,WAAA;AAAA,gBACjB,WAAA;AAAA,gBACA;AAAA,eACD;AACA,cAAA,OAAO;AAAA,gBACN,GAAG,YAAA;AAAA,gBACH,MAAA,EAAQ,WAAA;AAAA,gBACR;AAAA,eACD;AAAA,YACD,SAAS,CAAA,EAAG;AACX,cAAA,OAAA,CAAQ,MAAM,CAAC,CAAA;AACf,cAAA;AAAA,YACD;AAAA,UACD,CAAC;AAAA,SACF;AAAA,MACD,SAAS,CAAA,EAAQ;AAChB,QAAA,OAAA,CAAQ,IAAI,CAAC,CAAA;AACb,QAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,6BAAA,CAAA,EAAiC,CAAA,CAAE,OAAO,CAAA;AACxD,QAAA,OAAO,EAAC;AAAA,MACT;AAAA,IACD,CAAA;AAAA,IACA,CAAC,OAAO;AAAA,GACT;AAEA,EAAA,OAAO;AAAA,IACN;AAAA,GACD;AACD","file":"index.js","sourcesContent":["import {\n\tcompact,\n\tdifferenceBy,\n\tfind,\n\thead,\n\tisEmpty,\n\tlast,\n\tsortBy,\n} from \"lodash\";\nimport { useMapOrganisationUnit, useMapPeriods } from \"../../../hooks/index.js\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport {\n\tgenerateLegends,\n\tgetOrgUnitsSelection,\n\tsanitizeDate,\n\tsanitizeOrgUnits,\n\ttoGeoJson,\n} from \"../../../../../utils/map.js\";\nimport { useDataEngine } from \"@dhis2/app-runtime\";\nimport {\n\tCustomGoogleEngineLayer,\n\tCustomPointLayer,\n\tCustomThematicLayer,\n\tEarthEngineLayerConfig,\n\tThematicLayerConfig,\n} from \"../../../../MapLayer/interfaces\";\nimport {\n\ttype MapAnalyticsOptions,\n\tMapOrgUnit,\n\tPointOrgUnit,\n} from \"../../../../../interfaces/index.js\";\nimport { asyncify, map } from \"async-es\";\nimport { LegendSet } from \"@hisptz/dhis2-utils\";\nimport {\n\tdefaultClasses,\n\tdefaultColorScaleName,\n} from \"../../../../../utils/colors.js\";\nimport { useGoogleEngineToken } from \"../../../../MapLayer/components/GoogleEngineLayer/hooks/index.js\";\nimport { useBoundaryData } from \"../../../../MapLayer/components/BoundaryLayer/hooks/useBoundaryData.js\";\nimport { EarthEngine } from \"../../../../MapLayer/components/GoogleEngineLayer/services/engine.js\";\nimport { EARTH_ENGINE_LAYERS } from \"../../../../MapLayer/components/GoogleEngineLayer/constants/index.js\";\nimport { EarthEngineOptions } from \"../../../../MapLayer/components/GoogleEngineLayer/interfaces/index.js\";\n\nconst analyticsQuery = {\n\tanalytics: {\n\t\tresource: \"analytics\",\n\t\tparams: ({ ou, pe, dx, startDate, endDate, analyticsOptions }: any) => {\n\t\t\tconst peDimension = !isEmpty(pe)\n\t\t\t\t? `pe:${pe?.join(\";\")}`\n\t\t\t\t: undefined;\n\t\t\tconst ouDimension = !isEmpty(ou)\n\t\t\t\t? `ou:${ou?.join(\";\")}`\n\t\t\t\t: undefined;\n\t\t\tconst dxDimension = !isEmpty(dx)\n\t\t\t\t? `dx:${dx?.join(\";\")}`\n\t\t\t\t: undefined;\n\n\t\t\treturn {\n\t\t\t\tdimension: compact([dxDimension, peDimension, ouDimension]),\n\t\t\t\tstartDate,\n\t\t\t\tendDate,\n\t\t\t\tdisplayProperty: \"NAME\",\n\t\t\t\t...(analyticsOptions ?? {}),\n\t\t\t};\n\t\t},\n\t},\n};\nconst query = {\n\tlayer: {\n\t\tresource: \"geoFeatures\",\n\t\tparams: ({ ous }: any) => ({\n\t\t\tou: `ou:${ous.join(\";\")}`,\n\t\t}),\n\t},\n\tanalytics: {\n\t\tresource: \"analytics\",\n\t\tparams: ({ ous }: any) => ({\n\t\t\tdimension: [\n\t\t\t\t`ou:${ous.join(\";\")}`,\n\t\t\t\t`pe:${new Date().getFullYear()}`,\n\t\t\t],\n\t\t\tskipData: true,\n\t\t\thierarchyMeta: true,\n\t\t}),\n\t},\n};\nconst groupSetQuery = {\n\tgroupSet: {\n\t\tresource: \"organisationUnitGroupSets\",\n\t\tid: ({ groupSet }: any) => groupSet,\n\t\tparams: {\n\t\t\tfields: [\n\t\t\t\t\"organisationUnitGroups[name,color,symbol,organisationUnits[id]]\",\n\t\t\t],\n\t\t},\n\t},\n};\nconst legendSetsQuery = {\n\tlegendSets: {\n\t\tresource: \"legendSets\",\n\t\tid: ({ id }: any) => id,\n\t\tparams: {\n\t\t\tfields: [\n\t\t\t\t\"id\",\n\t\t\t\t\"displayName\",\n\t\t\t\t\"legends[id,code,name,startValue,endValue,color]\",\n\t\t\t],\n\t\t},\n\t},\n};\n\nexport function useThematicLayers({\n\tanalyticsOptions,\n}: {\n\tanalyticsOptions?: MapAnalyticsOptions;\n}): any {\n\tconst engine = useDataEngine();\n\tconst [loading, setLoading] = useState(false);\n\tconst { orgUnits, orgUnitSelection } = useMapOrganisationUnit();\n\tconst { periods, range } = useMapPeriods() ?? {};\n\tconst ou = useMemo(\n\t\t() => getOrgUnitsSelection(orgUnitSelection),\n\t\t[orgUnitSelection],\n\t);\n\tconst pe = useMemo(() => periods?.map((pe: any) => pe.id), [periods]);\n\n\tconst { startDate, endDate } = useMemo(() => {\n\t\tif (!range) {\n\t\t\treturn {\n\t\t\t\tstartDate: undefined,\n\t\t\t\tendDate: undefined,\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tstartDate: sanitizeDate(range.start.toDateString()),\n\t\t\tendDate: sanitizeDate(range.end.toDateString()),\n\t\t};\n\t}, [range]);\n\tconst sanitizeData = (data: any, layer: ThematicLayerConfig) => {\n\t\tif (data) {\n\t\t\tconst { analytics } = data as any;\n\t\t\tconst rows = analytics?.rows;\n\t\t\tconst ouIndex = analytics.headers.findIndex(\n\t\t\t\t(header: any) => header.name === \"ou\",\n\t\t\t);\n\t\t\tconst dxIndex = analytics.headers.findIndex(\n\t\t\t\t(header: any) => header.name === \"dx\",\n\t\t\t);\n\t\t\tconst valueIndex = analytics.headers.findIndex(\n\t\t\t\t(header: any) => header.name === \"value\",\n\t\t\t);\n\n\t\t\tif (!isEmpty(rows)) {\n\t\t\t\treturn sortBy(\n\t\t\t\t\torgUnits?.map((ou: MapOrgUnit) => {\n\t\t\t\t\t\tconst row = rows.find(\n\t\t\t\t\t\t\t(row: any) =>\n\t\t\t\t\t\t\t\trow[ouIndex] === ou.id &&\n\t\t\t\t\t\t\t\trow[dxIndex] === layer.dataItem.id,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\torgUnit: ou,\n\t\t\t\t\t\t\tdata: row ? parseFloat(row[valueIndex]) : undefined,\n\t\t\t\t\t\t\tdataItem: {\n\t\t\t\t\t\t\t\t...layer.dataItem,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t}),\n\t\t\t\t\t[\"data\"],\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn [];\n\t\t}\n\t\treturn [];\n\t};\n\n\tconst sanitizeLegends = async (\n\t\tlayers: CustomThematicLayer[],\n\t): Promise<CustomThematicLayer[]> => {\n\t\treturn (await map(\n\t\t\tlayers,\n\t\t\tasyncify(async (layer: CustomThematicLayer) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst legends = [];\n\t\t\t\t\tif (layer.dataItem.legendSet) {\n\t\t\t\t\t\tconst legendSetData = await engine.query(\n\t\t\t\t\t\t\tlegendSetsQuery,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvariables: {\n\t\t\t\t\t\t\t\t\tid: layer.dataItem.legendSet,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst legendSet: LegendSet =\n\t\t\t\t\t\t\tlegendSetData?.legendSets as LegendSet;\n\t\t\t\t\t\tif (legendSet) {\n\t\t\t\t\t\t\tlegends.push(...legendSet.legends);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst { scale, colorClass } = layer.dataItem\n\t\t\t\t\t\t\t.legendConfig ?? {\n\t\t\t\t\t\t\tscale: defaultClasses,\n\t\t\t\t\t\t\tcolorClass: defaultColorScaleName,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst sortedData = sortBy(\n\t\t\t\t\t\t\tlayer.data.filter((datum) => !!datum.data),\n\t\t\t\t\t\t\t\"data\",\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst autoLegends = generateLegends(\n\t\t\t\t\t\t\tlast(sortedData)?.data ?? 0,\n\t\t\t\t\t\t\thead(sortedData)?.data ?? 0,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tclassesCount: scale,\n\t\t\t\t\t\t\t\tcolorClass,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t\tlegends.push(...autoLegends);\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...layer,\n\t\t\t\t\t\tlegends,\n\t\t\t\t\t};\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn layer;\n\t\t\t\t}\n\t\t\t}),\n\t\t)) as CustomThematicLayer[];\n\t};\n\n\tconst sanitizeLayers = async (\n\t\tlayers: ThematicLayerConfig[],\n\t): Promise<CustomThematicLayer[]> => {\n\t\ttry {\n\t\t\tsetLoading(true);\n\t\t\tconst layersWithoutData = layers?.filter((layer) => !layer.data);\n\t\t\tconst layersWithData = differenceBy(\n\t\t\t\tlayers,\n\t\t\t\tlayersWithoutData,\n\t\t\t\t\"id\",\n\t\t\t);\n\t\t\tconst dx = layersWithoutData.map((layer) => layer.dataItem.id);\n\t\t\tlet sanitizedLayersWithData: any = [];\n\n\t\t\tif (!isEmpty(dx)) {\n\t\t\t\tconst data = await engine.query(analyticsQuery, {\n\t\t\t\t\tvariables: {\n\t\t\t\t\t\tdx,\n\t\t\t\t\t\tou,\n\t\t\t\t\t\tpe,\n\t\t\t\t\t\tstartDate,\n\t\t\t\t\t\tendDate,\n\t\t\t\t\t\tanalyticsOptions,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tsanitizedLayersWithData = layersWithoutData.map((layer) => ({\n\t\t\t\t\t...layer,\n\t\t\t\t\tname:\n\t\t\t\t\t\tlayer?.name ?? layer?.dataItem?.displayName ?? layer.id,\n\t\t\t\t\tdata: sanitizeData(data, layer),\n\t\t\t\t}));\n\t\t\t}\n\t\t\tconst sanitizedLayersWithOrgUnits = layersWithData.map((layer) => ({\n\t\t\t\t...layer,\n\t\t\t\tdata: layer.data?.map((datum) => ({\n\t\t\t\t\t...datum,\n\t\t\t\t\torgUnit: find(orgUnits, [\n\t\t\t\t\t\t\"id\",\n\t\t\t\t\t\tdatum.orgUnit,\n\t\t\t\t\t]) as MapOrgUnit,\n\t\t\t\t\tdataItem: layer.dataItem,\n\t\t\t\t\tname:\n\t\t\t\t\t\tlayer?.name ?? layer?.dataItem?.displayName ?? layer.id,\n\t\t\t\t})),\n\t\t\t}));\n\t\t\tsetLoading(false);\n\t\t\treturn await sanitizeLegends([\n\t\t\t\t...sanitizedLayersWithData,\n\t\t\t\t...sanitizedLayersWithOrgUnits,\n\t\t\t]);\n\t\t} catch (e: any) {\n\t\t\tconsole.error(`Error getting thematic layers`, e.details);\n\t\t\tsetLoading(false);\n\t\t\treturn [];\n\t\t}\n\t};\n\n\treturn {\n\t\tsanitizeLayers,\n\t\tloading,\n\t};\n}\n\nexport function usePointLayer() {\n\tconst engine = useDataEngine();\n\tconst { orgUnitSelection } = useMapOrganisationUnit();\n\tconst [loading, setLoading] = useState(false);\n\n\tconst sanitizePointData = useCallback(\n\t\t(orgUnitData: any, groupSetData: any): PointOrgUnit[] => {\n\t\t\tconst { analytics, layer } = (orgUnitData as any) ?? {};\n\t\t\tconst rawOrgUnits = sanitizeOrgUnits(analytics?.metaData);\n\t\t\tconst geoJSONObjects = toGeoJson(\n\t\t\t\tlayer?.filter((bound: any) => bound.co),\n\t\t\t);\n\t\t\treturn compact(\n\t\t\t\trawOrgUnits.map((orgUnit: any) => {\n\t\t\t\t\tconst geoJSONObject: any = geoJSONObjects?.find(\n\t\t\t\t\t\t(geoJSON: any) => geoJSON.properties.id === orgUnit.id,\n\t\t\t\t\t);\n\t\t\t\t\tconst orgUnitGroups: any =\n\t\t\t\t\t\t(groupSetData?.groupSet as any)\n\t\t\t\t\t\t\t?.organisationUnitGroups ?? [];\n\t\t\t\t\tconst ouGroup = find(\n\t\t\t\t\t\torgUnitGroups,\n\t\t\t\t\t\t(ouGroup) =>\n\t\t\t\t\t\t\t!!find(ouGroup?.organisationUnits ?? [], [\n\t\t\t\t\t\t\t\t\"id\",\n\t\t\t\t\t\t\t\torgUnit.id,\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t);\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t!geoJSONObject ||\n\t\t\t\t\t\tgeoJSONObject.properties.type !== \"Point\"\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...orgUnit,\n\t\t\t\t\t\tgeoJSON: geoJSONObject,\n\t\t\t\t\t\tlevel: geoJSONObject.properties.level,\n\t\t\t\t\t\ticon: {\n\t\t\t\t\t\t\ttype: \"groupIcon\",\n\t\t\t\t\t\t\ticon: ouGroup?.symbol,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t);\n\t\t},\n\t\t[],\n\t);\n\n\tconst sanitizeLayer = useCallback(\n\t\tasync (\n\t\t\tlayer: CustomPointLayer,\n\t\t): Promise<CustomPointLayer | undefined> => {\n\t\t\ttry {\n\t\t\t\tif (!layer.level && !layer.group) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tsetLoading(true);\n\t\t\t\tconst level = layer.level ? `LEVEL-${layer.level}` : undefined;\n\t\t\t\tconst group = layer.group\n\t\t\t\t\t? `OU_GROUP-${layer.group}`\n\t\t\t\t\t: undefined;\n\t\t\t\tconst ous = [\n\t\t\t\t\t...getOrgUnitsSelection(orgUnitSelection),\n\t\t\t\t\tlevel,\n\t\t\t\t\tgroup,\n\t\t\t\t];\n\n\t\t\t\tconst pointData = await engine.query(query, {\n\t\t\t\t\tvariables: {\n\t\t\t\t\t\tous,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tconst groupSetData = await engine.query(groupSetQuery, {\n\t\t\t\t\tvariables: {\n\t\t\t\t\t\tgroupSet: layer.style?.groupSet,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tconst sanitizedOrgUnitData = sanitizePointData(\n\t\t\t\t\tpointData,\n\t\t\t\t\tgroupSetData,\n\t\t\t\t);\n\n\t\t\t\tconst orgUnitGroups =\n\t\t\t\t\t(groupSetData?.groupSet as any)?.organisationUnitGroups ??\n\t\t\t\t\t[];\n\n\t\t\t\tconst sanitizedOrgUnitGroups = orgUnitGroups.map(\n\t\t\t\t\t(ouGroup: any) => ({\n\t\t\t\t\t\t...ouGroup,\n\t\t\t\t\t\torganisationUnits: undefined,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t\tsetLoading(false);\n\t\t\t\treturn {\n\t\t\t\t\t...layer,\n\t\t\t\t\tpoints: sanitizedOrgUnitData,\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\t...layer.style,\n\t\t\t\t\t\torgUnitGroups: sanitizedOrgUnitGroups,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t} catch (e: any) {\n\t\t\t\tsetLoading(false);\n\t\t\t\tconsole.error(`Error getting point layer`, e.details);\n\t\t\t\treturn;\n\t\t\t}\n\t\t},\n\t\t[],\n\t);\n\n\treturn {\n\t\tloading,\n\t\tsanitizeLayer,\n\t};\n}\n\nexport function useGoogleEngineLayers() {\n\tconst { refresh } = useGoogleEngineToken();\n\tconst orgUnits = useBoundaryData();\n\n\tasync function getImageUrl(\n\t\tearthEngine: EarthEngine,\n\t\t{ filters }: EarthEngineLayerConfig,\n\t): Promise<string | undefined> {\n\t\tif (earthEngine.initialized) {\n\t\t\ttry {\n\t\t\t\tearthEngine.setOrgUnits(orgUnits ?? []);\n\t\t\t\tconst period = filters?.period;\n\t\t\t\tif (period) {\n\t\t\t\t\tearthEngine.setPeriod(period);\n\t\t\t\t}\n\t\t\t\treturn earthEngine.url();\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error(e);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst sanitizeLayers = useCallback(\n\t\tasync (\n\t\t\tlayers: EarthEngineLayerConfig[],\n\t\t): Promise<CustomGoogleEngineLayer[]> => {\n\t\t\tif (isEmpty(layers)) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst { token } = await refresh();\n\t\t\t\tif (!token) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t`Google token not available in this instance`,\n\t\t\t\t\t);\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\t\t\t\tawait EarthEngine.setToken(token, refresh);\n\t\t\t\treturn map(\n\t\t\t\t\tlayers,\n\t\t\t\t\tasyncify(async (layer: EarthEngineLayerConfig) => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst defaultOptions: any =\n\t\t\t\t\t\t\t\tfind(EARTH_ENGINE_LAYERS, [\"id\", layer.type]) ??\n\t\t\t\t\t\t\t\t{};\n\t\t\t\t\t\t\tconst options: EarthEngineOptions = {\n\t\t\t\t\t\t\t\t...defaultOptions,\n\t\t\t\t\t\t\t\taggregations:\n\t\t\t\t\t\t\t\t\tlayer.aggregations ??\n\t\t\t\t\t\t\t\t\tdefaultOptions?.aggregations,\n\t\t\t\t\t\t\t\tparams: layer.params ?? defaultOptions?.params,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tconst updatedLayer = {\n\t\t\t\t\t\t\t\t...layer,\n\t\t\t\t\t\t\t\toptions,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tconst earthEngine = new EarthEngine({ options });\n\t\t\t\t\t\t\tconst url = await getImageUrl(\n\t\t\t\t\t\t\t\tearthEngine,\n\t\t\t\t\t\t\t\tupdatedLayer,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...updatedLayer,\n\t\t\t\t\t\t\t\tengine: earthEngine,\n\t\t\t\t\t\t\t\turl,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tconsole.error(e);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t} catch (e: any) {\n\t\t\t\tconsole.log(e);\n\t\t\t\tconsole.error(`Error getting thematic layers`, e.details);\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\t\t[refresh],\n\t);\n\n\treturn {\n\t\tsanitizeLayers,\n\t};\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../../../src/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.tsx"],"names":["isEmpty","compact","useDataEngine","useState","useMapOrganisationUnit","useMapPeriods","useMemo","getOrgUnitsSelection","pe","sanitizeDate","sortBy","ou","row","map","asyncify","defaultClasses","defaultColorScaleName","generateLegends","last","head","differenceBy","find","useCallback","sanitizeOrgUnits","toGeoJson","ouGroup","useGoogleEngineToken","useBoundaryData","EarthEngine","EARTH_ENGINE_LAYERS"],"mappings":";;;;;;;;;;;;;;AA2CA,MAAM,cAAA,GAAiB;AAAA,EACtB,SAAA,EAAW;AAAA,IACV,QAAA,EAAU,WAAA;AAAA,IACV,MAAA,EAAQ,CAAC,EAAE,EAAA,EAAI,IAAI,EAAA,EAAI,SAAA,EAAW,OAAA,EAAS,gBAAA,EAAiB,KAAW;AACtE,MAAA,MAAM,WAAA,GAAc,CAACA,cAAA,CAAQ,EAAE,CAAA,GAC5B,MAAM,EAAA,EAAI,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,GACnB,MAAA;AACH,MAAA,MAAM,WAAA,GAAc,CAACA,cAAA,CAAQ,EAAE,CAAA,GAC5B,MAAM,EAAA,EAAI,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,GACnB,MAAA;AACH,MAAA,MAAM,WAAA,GAAc,CAACA,cAAA,CAAQ,EAAE,CAAA,GAC5B,MAAM,EAAA,EAAI,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,GACnB,MAAA;AAEH,MAAA,OAAO;AAAA,QACN,WAAWC,cAAA,CAAQ,CAAC,WAAA,EAAa,WAAA,EAAa,WAAW,CAAC,CAAA;AAAA,QAC1D,SAAA;AAAA,QACA,OAAA;AAAA,QACA,eAAA,EAAiB,MAAA;AAAA,QACjB,GAAI,oBAAoB;AAAC,OAC1B;AAAA,IACD;AAAA;AAEF,CAAA;AACA,MAAM,KAAA,GAAQ;AAAA,EACb,KAAA,EAAO;AAAA,IACN,QAAA,EAAU,aAAA;AAAA,IACV,MAAA,EAAQ,CAAC,EAAE,GAAA,EAAI,MAAY;AAAA,MAC1B,EAAA,EAAI,CAAA,GAAA,EAAM,GAAA,CAAI,IAAA,CAAK,GAAG,CAAC,CAAA;AAAA,KACxB;AAAA,GACD;AAAA,EACA,SAAA,EAAW;AAAA,IACV,QAAA,EAAU,WAAA;AAAA,IACV,MAAA,EAAQ,CAAC,EAAE,GAAA,EAAI,MAAY;AAAA,MAC1B,SAAA,EAAW;AAAA,QACV,CAAA,GAAA,EAAM,GAAA,CAAI,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA;AAAA,QACnB,CAAA,GAAA,EAAA,iBAAM,IAAI,IAAA,EAAK,EAAE,aAAa,CAAA;AAAA,OAC/B;AAAA,MACA,QAAA,EAAU,IAAA;AAAA,MACV,aAAA,EAAe;AAAA,KAChB;AAAA;AAEF,CAAA;AACA,MAAM,aAAA,GAAgB;AAAA,EACrB,QAAA,EAAU;AAAA,IACT,QAAA,EAAU,2BAAA;AAAA,IACV,EAAA,EAAI,CAAC,EAAE,QAAA,EAAS,KAAW,QAAA;AAAA,IAC3B,MAAA,EAAQ;AAAA,MACP,MAAA,EAAQ;AAAA,QACP;AAAA;AACD;AACD;AAEF,CAAA;AACA,MAAM,eAAA,GAAkB;AAAA,EACvB,UAAA,EAAY;AAAA,IACX,QAAA,EAAU,YAAA;AAAA,IACV,EAAA,EAAI,CAAC,EAAE,EAAA,EAAG,KAAW,EAAA;AAAA,IACrB,MAAA,EAAQ;AAAA,MACP,MAAA,EAAQ;AAAA,QACP,IAAA;AAAA,QACA,aAAA;AAAA,QACA;AAAA;AACD;AACD;AAEF,CAAA;AAEO,SAAS,iBAAA,CAAkB;AAAA,EACjC;AACD,CAAA,EAEQ;AACP,EAAA,MAAM,SAASC,wBAAA,EAAc;AAC7B,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIC,eAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,EAAE,QAAA,EAAU,gBAAA,EAAiB,GAAIC,4BAAA,EAAuB;AAC9D,EAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAM,GAAIC,mBAAA,MAAmB,EAAC;AAC/C,EAAA,MAAM,EAAA,GAAKC,aAAA;AAAA,IACV,MAAMC,2BAAqB,gBAAgB,CAAA;AAAA,IAC3C,CAAC,gBAAgB;AAAA,GAClB;AACA,EAAA,MAAM,EAAA,GAAKD,aAAA,CAAQ,MAAM,OAAA,EAAS,GAAA,CAAI,CAACE,GAAAA,KAAYA,GAAAA,CAAG,EAAE,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEpE,EAAA,MAAM,EAAE,SAAA,EAAW,OAAA,EAAQ,GAAIF,cAAQ,MAAM;AAC5C,IAAA,IAAI,CAAC,KAAA,EAAO;AACX,MAAA,OAAO;AAAA,QACN,SAAA,EAAW,MAAA;AAAA,QACX,OAAA,EAAS;AAAA,OACV;AAAA,IACD;AACA,IAAA,OAAO;AAAA,MACN,SAAA,EAAWG,kBAAA,CAAa,KAAA,CAAM,KAAA,CAAM,cAAc,CAAA;AAAA,MAClD,OAAA,EAASA,kBAAA,CAAa,KAAA,CAAM,GAAA,CAAI,cAAc;AAAA,KAC/C;AAAA,EACD,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AACV,EAAA,MAAM,YAAA,GAAe,CAAC,IAAA,EAAW,KAAA,KAA+B;AAC/D,IAAA,IAAI,IAAA,EAAM;AACT,MAAA,MAAM,EAAE,WAAU,GAAI,IAAA;AACtB,MAAA,MAAM,OAAO,SAAA,EAAW,IAAA;AACxB,MAAA,MAAM,OAAA,GAAU,UAAU,OAAA,CAAQ,SAAA;AAAA,QACjC,CAAC,MAAA,KAAgB,MAAA,CAAO,IAAA,KAAS;AAAA,OAClC;AACA,MAAA,MAAM,OAAA,GAAU,UAAU,OAAA,CAAQ,SAAA;AAAA,QACjC,CAAC,MAAA,KAAgB,MAAA,CAAO,IAAA,KAAS;AAAA,OAClC;AACA,MAAA,MAAM,UAAA,GAAa,UAAU,OAAA,CAAQ,SAAA;AAAA,QACpC,CAAC,MAAA,KAAgB,MAAA,CAAO,IAAA,KAAS;AAAA,OAClC;AAEA,MAAA,IAAI,CAACT,cAAA,CAAQ,IAAI,CAAA,EAAG;AACnB,QAAA,OAAOU,aAAA;AAAA,UACN,QAAA,EAAU,GAAA,CAAI,CAACC,GAAAA,KAAmB;AACjC,YAAA,MAAM,MAAM,IAAA,CAAK,IAAA;AAAA,cAChB,CAACC,IAAAA,KACAA,IAAAA,CAAI,OAAO,CAAA,KAAMD,GAAAA,CAAG,EAAA,IACpBC,IAAAA,CAAI,OAAO,CAAA,KAAM,KAAA,CAAM,QAAA,CAAS;AAAA,aAClC;AACA,YAAA,OAAO;AAAA,cACN,OAAA,EAASD,GAAAA;AAAA,cACT,MAAM,GAAA,GAAM,UAAA,CAAW,GAAA,CAAI,UAAU,CAAC,CAAA,GAAI,MAAA;AAAA,cAC1C,QAAA,EAAU;AAAA,gBACT,GAAG,KAAA,CAAM;AAAA;AACV,aACD;AAAA,UACD,CAAC,CAAA;AAAA,UACD,CAAC,MAAM;AAAA,SACR;AAAA,MACD;AACA,MAAA,OAAO,EAAC;AAAA,IACT;AACA,IAAA,OAAO,EAAC;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,eAAA,GAAkB,OACvB,MAAA,KACoC;AACpC,IAAA,OAAQ,MAAME,WAAA;AAAA,MACb,MAAA;AAAA,MACAC,gBAAA,CAAS,OAAO,KAAA,KAA+B;AAC9C,QAAA,IAAI;AACH,UAAA,MAAM,UAAU,EAAC;AACjB,UAAA,IAAI,KAAA,CAAM,SAAS,SAAA,EAAW;AAC7B,YAAA,MAAM,aAAA,GAAgB,MAAM,MAAA,CAAO,KAAA;AAAA,cAClC,eAAA;AAAA,cACA;AAAA,gBACC,SAAA,EAAW;AAAA,kBACV,EAAA,EAAI,MAAM,QAAA,CAAS;AAAA;AACpB;AACD,aACD;AACA,YAAA,MAAM,YACL,aAAA,EAAe,UAAA;AAChB,YAAA,IAAI,SAAA,EAAW;AACd,cAAA,OAAA,CAAQ,IAAA,CAAK,GAAG,SAAA,CAAU,OAAO,CAAA;AAAA,YAClC;AAAA,UACD,CAAA,MAAO;AACN,YAAA,MAAM,EAAE,KAAA,EAAO,UAAA,EAAW,GAAI,KAAA,CAAM,SAClC,YAAA,IAAgB;AAAA,cACjB,KAAA,EAAOC,wBAAA;AAAA,cACP,UAAA,EAAYC;AAAA,aACb;AACA,YAAA,MAAM,UAAA,GAAaN,aAAA;AAAA,cAClB,KAAA,CAAM,KAAK,MAAA,CAAO,CAAC,UAAU,CAAC,CAAC,MAAM,IAAI,CAAA;AAAA,cACzC;AAAA,aACD;AACA,YAAA,MAAM,WAAA,GAAcO,qBAAA;AAAA,cACnBC,WAAA,CAAK,UAAU,CAAA,EAAG,IAAA,IAAQ,CAAA;AAAA,cAC1BC,WAAA,CAAK,UAAU,CAAA,EAAG,IAAA,IAAQ,CAAA;AAAA,cAC1B;AAAA,gBACC,YAAA,EAAc,KAAA;AAAA,gBACd;AAAA;AACD,aACD;AACA,YAAA,OAAA,CAAQ,IAAA,CAAK,GAAG,WAAW,CAAA;AAAA,UAC5B;AACA,UAAA,OAAO;AAAA,YACN,GAAG,KAAA;AAAA,YACH;AAAA,WACD;AAAA,QACD,SAAS,CAAA,EAAG;AACX,UAAA,OAAO,KAAA;AAAA,QACR;AAAA,MACD,CAAC;AAAA,KACF;AAAA,EACD,CAAA;AAEA,EAAA,MAAM,cAAA,GAAiB,OACtB,MAAA,KACoC;AACpC,IAAA,IAAI;AACH,MAAA,UAAA,CAAW,IAAI,CAAA;AACf,MAAA,MAAM,oBAAoB,MAAA,EAAQ,MAAA,CAAO,CAAC,KAAA,KAAU,CAAC,MAAM,IAAI,CAAA;AAC/D,MAAA,MAAM,cAAA,GAAiBC,mBAAA;AAAA,QACtB,MAAA;AAAA,QACA,iBAAA;AAAA,QACA;AAAA,OACD;AACA,MAAA,MAAM,KAAK,iBAAA,CAAkB,GAAA,CAAI,CAAC,KAAA,KAAU,KAAA,CAAM,SAAS,EAAE,CAAA;AAC7D,MAAA,IAAI,0BAA+B,EAAC;AAEpC,MAAA,IAAI,CAACpB,cAAA,CAAQ,EAAE,CAAA,EAAG;AACjB,QAAA,MAAM,IAAA,GAAO,MAAM,MAAA,CAAO,KAAA,CAAM,cAAA,EAAgB;AAAA,UAC/C,SAAA,EAAW;AAAA,YACV,EAAA;AAAA,YACA,EAAA;AAAA,YACA,EAAA;AAAA,YACA,SAAA;AAAA,YACA,OAAA;AAAA,YACA;AAAA;AACD,SACA,CAAA;AACD,QAAA,uBAAA,GAA0B,iBAAA,CAAkB,GAAA,CAAI,CAAC,KAAA,MAAW;AAAA,UAC3D,GAAG,KAAA;AAAA,UACH,MACC,KAAA,EAAO,IAAA,IAAQ,KAAA,EAAO,QAAA,EAAU,eAAe,KAAA,CAAM,EAAA;AAAA,UACtD,IAAA,EAAM,YAAA,CAAa,IAAA,EAAM,KAAK;AAAA,SAC/B,CAAE,CAAA;AAAA,MACH;AACA,MAAA,MAAM,2BAAA,GAA8B,cAAA,CAAe,GAAA,CAAI,CAAC,KAAA,MAAW;AAAA,QAClE,GAAG,KAAA;AAAA,QACH,IAAA,EAAM,KAAA,CAAM,IAAA,EAAM,GAAA,CAAI,CAAC,KAAA,MAAW;AAAA,UACjC,GAAG,KAAA;AAAA,UACH,OAAA,EAASqB,YAAK,QAAA,EAAU;AAAA,YACvB,IAAA;AAAA,YACA,KAAA,CAAM;AAAA,WACN,CAAA;AAAA,UACD,UAAU,KAAA,CAAM,QAAA;AAAA,UAChB,MACC,KAAA,EAAO,IAAA,IAAQ,KAAA,EAAO,QAAA,EAAU,eAAe,KAAA,CAAM;AAAA,SACvD,CAAE;AAAA,OACH,CAAE,CAAA;AACF,MAAA,UAAA,CAAW,KAAK,CAAA;AAChB,MAAA,OAAO,MAAM,eAAA,CAAgB;AAAA,QAC5B,GAAG,uBAAA;AAAA,QACH,GAAG;AAAA,OACH,CAAA;AAAA,IACF,SAAS,CAAA,EAAQ;AAChB,MAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,6BAAA,CAAA,EAAiC,CAAA,CAAE,OAAO,CAAA;AACxD,MAAA,UAAA,CAAW,KAAK,CAAA;AAChB,MAAA,OAAO,EAAC;AAAA,IACT;AAAA,EACD,CAAA;AAEA,EAAA,OAAO;AAAA,IACN,cAAA;AAAA,IACA;AAAA,GACD;AACD;AAEO,SAAS,aAAA,GAAgB;AAC/B,EAAA,MAAM,SAASnB,wBAAA,EAAc;AAC7B,EAAA,MAAM,EAAE,gBAAA,EAAiB,GAAIE,4BAAA,EAAuB;AACpD,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAID,eAAS,KAAK,CAAA;AAE5C,EAAA,MAAM,iBAAA,GAAoBmB,iBAAA;AAAA,IACzB,CAAC,aAAkB,YAAA,KAAsC;AACxD,MAAA,MAAM,EAAE,SAAA,EAAW,KAAA,EAAM,GAAK,eAAuB,EAAC;AACtD,MAAA,MAAM,WAAA,GAAcC,sBAAA,CAAiB,SAAA,EAAW,QAAQ,CAAA;AACxD,MAAA,MAAM,cAAA,GAAiBC,eAAA;AAAA,QACtB,KAAA,EAAO,MAAA,CAAO,CAAC,KAAA,KAAe,MAAM,EAAE;AAAA,OACvC;AACA,MAAA,OAAOvB,cAAA;AAAA,QACN,WAAA,CAAY,GAAA,CAAI,CAAC,OAAA,KAAiB;AACjC,UAAA,MAAM,gBAAqB,cAAA,EAAgB,IAAA;AAAA,YAC1C,CAAC,OAAA,KAAiB,OAAA,CAAQ,UAAA,CAAW,OAAO,OAAA,CAAQ;AAAA,WACrD;AACA,UAAA,MAAM,aAAA,GACJ,YAAA,EAAc,QAAA,EACZ,sBAAA,IAA0B,EAAC;AAC/B,UAAA,MAAM,OAAA,GAAUoB,WAAA;AAAA,YACf,aAAA;AAAA,YACA,CAACI,aACA,CAAC,CAACJ,YAAKI,QAAAA,EAAS,iBAAA,IAAqB,EAAC,EAAG;AAAA,cACxC,IAAA;AAAA,cACA,OAAA,CAAQ;AAAA,aACR;AAAA,WACH;AAEA,UAAA,IACC,CAAC,aAAA,IACD,aAAA,CAAc,UAAA,CAAW,SAAS,OAAA,EACjC;AACD,YAAA;AAAA,UACD;AACA,UAAA,OAAO;AAAA,YACN,GAAG,OAAA;AAAA,YACH,OAAA,EAAS,aAAA;AAAA,YACT,KAAA,EAAO,cAAc,UAAA,CAAW,KAAA;AAAA,YAChC,IAAA,EAAM;AAAA,cACL,IAAA,EAAM,WAAA;AAAA,cACN,MAAM,OAAA,EAAS;AAAA;AAChB,WACD;AAAA,QACD,CAAC;AAAA,OACF;AAAA,IACD,CAAA;AAAA,IACA;AAAC,GACF;AAEA,EAAA,MAAM,aAAA,GAAgBH,iBAAA;AAAA,IACrB,OACC,KAAA,KAC2C;AAC3C,MAAA,IAAI;AACH,QAAA,IAAI,CAAC,KAAA,CAAM,KAAA,IAAS,CAAC,MAAM,KAAA,EAAO;AACjC,UAAA;AAAA,QACD;AACA,QAAA,UAAA,CAAW,IAAI,CAAA;AACf,QAAA,MAAM,QAAQ,KAAA,CAAM,KAAA,GAAQ,CAAA,MAAA,EAAS,KAAA,CAAM,KAAK,CAAA,CAAA,GAAK,KAAA,CAAA;AACrD,QAAA,MAAM,QAAQ,KAAA,CAAM,KAAA,GACjB,CAAA,SAAA,EAAY,KAAA,CAAM,KAAK,CAAA,CAAA,GACvB,KAAA,CAAA;AACH,QAAA,MAAM,GAAA,GAAM;AAAA,UACX,GAAGf,2BAAqB,gBAAgB,CAAA;AAAA,UACxC,KAAA;AAAA,UACA;AAAA,SACD;AAEA,QAAA,MAAM,SAAA,GAAY,MAAM,MAAA,CAAO,KAAA,CAAM,KAAA,EAAO;AAAA,UAC3C,SAAA,EAAW;AAAA,YACV;AAAA;AACD,SACA,CAAA;AACD,QAAA,MAAM,YAAA,GAAe,MAAM,MAAA,CAAO,KAAA,CAAM,aAAA,EAAe;AAAA,UACtD,SAAA,EAAW;AAAA,YACV,QAAA,EAAU,MAAM,KAAA,EAAO;AAAA;AACxB,SACA,CAAA;AACD,QAAA,MAAM,oBAAA,GAAuB,iBAAA;AAAA,UAC5B,SAAA;AAAA,UACA;AAAA,SACD;AAEA,QAAA,MAAM,aAAA,GACJ,YAAA,EAAc,QAAA,EAAkB,sBAAA,IACjC,EAAC;AAEF,QAAA,MAAM,yBAAyB,aAAA,CAAc,GAAA;AAAA,UAC5C,CAAC,OAAA,MAAkB;AAAA,YAClB,GAAG,OAAA;AAAA,YACH,iBAAA,EAAmB,KAAA;AAAA,WACpB;AAAA,SACD;AACA,QAAA,UAAA,CAAW,KAAK,CAAA;AAChB,QAAA,OAAO;AAAA,UACN,GAAG,KAAA;AAAA,UACH,MAAA,EAAQ,oBAAA;AAAA,UACR,KAAA,EAAO;AAAA,YACN,GAAG,KAAA,CAAM,KAAA;AAAA,YACT,aAAA,EAAe;AAAA;AAChB,SACD;AAAA,MACD,SAAS,CAAA,EAAQ;AAChB,QAAA,UAAA,CAAW,KAAK,CAAA;AAChB,QAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,yBAAA,CAAA,EAA6B,CAAA,CAAE,OAAO,CAAA;AACpD,QAAA;AAAA,MACD;AAAA,IACD,CAAA;AAAA,IACA;AAAC,GACF;AAEA,EAAA,OAAO;AAAA,IACN,OAAA;AAAA,IACA;AAAA,GACD;AACD;AAEO,SAAS,qBAAA,GAAwB;AACvC,EAAA,MAAM,EAAE,OAAA,EAAQ,GAAImB,6BAAA,EAAqB;AACzC,EAAA,MAAM,WAAWC,kCAAA,EAAgB;AAEjC,EAAA,eAAe,WAAA,CACd,WAAA,EACA,EAAE,OAAA,EAAQ,EACoB;AAC9B,IAAA,IAAI,YAAY,WAAA,EAAa;AAC5B,MAAA,IAAI;AACH,QAAA,WAAA,CAAY,WAAA,CAAY,QAAA,IAAY,EAAE,CAAA;AACtC,QAAA,MAAM,SAAS,OAAA,EAAS,MAAA;AACxB,QAAA,IAAI,MAAA,EAAQ;AACX,UAAA,WAAA,CAAY,UAAU,MAAM,CAAA;AAAA,QAC7B;AACA,QAAA,OAAO,YAAY,GAAA,EAAI;AAAA,MACxB,SAAS,CAAA,EAAG;AACX,QAAA,OAAA,CAAQ,MAAM,CAAC,CAAA;AAAA,MAChB;AAAA,IACD;AAAA,EACD;AAEA,EAAA,MAAM,cAAA,GAAiBL,iBAAA;AAAA,IACtB,OACC,MAAA,KACwC;AACxC,MAAA,IAAItB,cAAA,CAAQ,MAAM,CAAA,EAAG;AACpB,QAAA,OAAO,EAAC;AAAA,MACT;AACA,MAAA,IAAI;AACH,QAAA,MAAM,EAAE,KAAA,EAAM,GAAI,MAAM,OAAA,EAAQ;AAChC,QAAA,IAAI,CAAC,KAAA,EAAO;AACX,UAAA,OAAA,CAAQ,KAAA;AAAA,YACP,CAAA,2CAAA;AAAA,WACD;AACA,UAAA,OAAO,EAAC;AAAA,QACT;AACA,QAAA,MAAM4B,qBAAA,CAAY,QAAA,CAAS,KAAA,EAAO,OAAO,CAAA;AACzC,QAAA,OAAOf,WAAA;AAAA,UACN,MAAA;AAAA,UACAC,gBAAA,CAAS,OAAO,KAAA,KAAkC;AACjD,YAAA,IAAI;AACH,cAAA,MAAM,cAAA,GACLO,YAAKQ,8BAAA,EAAqB,CAAC,MAAM,KAAA,CAAM,IAAI,CAAC,CAAA,IAC5C,EAAC;AACF,cAAA,MAAM,OAAA,GAA8B;AAAA,gBACnC,GAAG,cAAA;AAAA,gBACH,YAAA,EACC,KAAA,CAAM,YAAA,IACN,cAAA,EAAgB,YAAA;AAAA,gBACjB,MAAA,EAAQ,KAAA,CAAM,MAAA,IAAU,cAAA,EAAgB;AAAA,eACzC;AACA,cAAA,MAAM,YAAA,GAAe;AAAA,gBACpB,GAAG,KAAA;AAAA,gBACH;AAAA,eACD;AACA,cAAA,MAAM,WAAA,GAAc,IAAID,qBAAA,CAAY,EAAE,SAAS,CAAA;AAC/C,cAAA,MAAM,MAAM,MAAM,WAAA;AAAA,gBACjB,WAAA;AAAA,gBACA;AAAA,eACD;AACA,cAAA,OAAO;AAAA,gBACN,GAAG,YAAA;AAAA,gBACH,MAAA,EAAQ,WAAA;AAAA,gBACR;AAAA,eACD;AAAA,YACD,SAAS,CAAA,EAAG;AACX,cAAA,OAAA,CAAQ,MAAM,CAAC,CAAA;AACf,cAAA;AAAA,YACD;AAAA,UACD,CAAC;AAAA,SACF;AAAA,MACD,SAAS,CAAA,EAAQ;AAChB,QAAA,OAAA,CAAQ,IAAI,CAAC,CAAA;AACb,QAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,6BAAA,CAAA,EAAiC,CAAA,CAAE,OAAO,CAAA;AACxD,QAAA,OAAO,EAAC;AAAA,MACT;AAAA,IACD,CAAA;AAAA,IACA,CAAC,OAAO;AAAA,GACT;AAEA,EAAA,OAAO;AAAA,IACN;AAAA,GACD;AACD","file":"index.js","sourcesContent":["import {\n\tcompact,\n\tdifferenceBy,\n\tfind,\n\thead,\n\tisEmpty,\n\tlast,\n\tsortBy,\n} from \"lodash\";\nimport { useMapOrganisationUnit, useMapPeriods } from \"../../../hooks\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport {\n\tgenerateLegends,\n\tgetOrgUnitsSelection,\n\tsanitizeDate,\n\tsanitizeOrgUnits,\n\ttoGeoJson,\n} from \"../../../../../utils\";\nimport { useDataEngine } from \"@dhis2/app-runtime\";\nimport {\n\tCustomGoogleEngineLayer,\n\tCustomPointLayer,\n\tCustomThematicLayer,\n\tEarthEngineLayerConfig,\n\tThematicLayerConfig,\n} from \"../../../../MapLayer/interfaces\";\nimport {\n\ttype MapAnalyticsOptions,\n\tMapOrgUnit,\n\tPointOrgUnit,\n} from \"../../../../../interfaces/index.js\";\nimport { asyncify, map } from \"async-es\";\nimport { LegendSet } from \"@hisptz/dhis2-utils\";\nimport {\n\tdefaultClasses,\n\tdefaultColorScaleName,\n} from \"../../../../../utils/colors.js\";\nimport { useGoogleEngineToken } from \"../../../../MapLayer/components/GoogleEngineLayer/hooks/index.js\";\nimport { useBoundaryData } from \"../../../../MapLayer/components/BoundaryLayer/hooks/useBoundaryData.js\";\nimport { EarthEngine } from \"../../../../MapLayer/components/GoogleEngineLayer/services/engine.js\";\nimport { EARTH_ENGINE_LAYERS } from \"../../../../MapLayer/components/GoogleEngineLayer/constants/index.js\";\nimport { EarthEngineOptions } from \"../../../../MapLayer/components/GoogleEngineLayer/interfaces/index.js\";\n\nconst analyticsQuery = {\n\tanalytics: {\n\t\tresource: \"analytics\",\n\t\tparams: ({ ou, pe, dx, startDate, endDate, analyticsOptions }: any) => {\n\t\t\tconst peDimension = !isEmpty(pe)\n\t\t\t\t? `pe:${pe?.join(\";\")}`\n\t\t\t\t: undefined;\n\t\t\tconst ouDimension = !isEmpty(ou)\n\t\t\t\t? `ou:${ou?.join(\";\")}`\n\t\t\t\t: undefined;\n\t\t\tconst dxDimension = !isEmpty(dx)\n\t\t\t\t? `dx:${dx?.join(\";\")}`\n\t\t\t\t: undefined;\n\n\t\t\treturn {\n\t\t\t\tdimension: compact([dxDimension, peDimension, ouDimension]),\n\t\t\t\tstartDate,\n\t\t\t\tendDate,\n\t\t\t\tdisplayProperty: \"NAME\",\n\t\t\t\t...(analyticsOptions ?? {}),\n\t\t\t};\n\t\t},\n\t},\n};\nconst query = {\n\tlayer: {\n\t\tresource: \"geoFeatures\",\n\t\tparams: ({ ous }: any) => ({\n\t\t\tou: `ou:${ous.join(\";\")}`,\n\t\t}),\n\t},\n\tanalytics: {\n\t\tresource: \"analytics\",\n\t\tparams: ({ ous }: any) => ({\n\t\t\tdimension: [\n\t\t\t\t`ou:${ous.join(\";\")}`,\n\t\t\t\t`pe:${new Date().getFullYear()}`,\n\t\t\t],\n\t\t\tskipData: true,\n\t\t\thierarchyMeta: true,\n\t\t}),\n\t},\n};\nconst groupSetQuery = {\n\tgroupSet: {\n\t\tresource: \"organisationUnitGroupSets\",\n\t\tid: ({ groupSet }: any) => groupSet,\n\t\tparams: {\n\t\t\tfields: [\n\t\t\t\t\"organisationUnitGroups[name,color,symbol,organisationUnits[id]]\",\n\t\t\t],\n\t\t},\n\t},\n};\nconst legendSetsQuery = {\n\tlegendSets: {\n\t\tresource: \"legendSets\",\n\t\tid: ({ id }: any) => id,\n\t\tparams: {\n\t\t\tfields: [\n\t\t\t\t\"id\",\n\t\t\t\t\"displayName\",\n\t\t\t\t\"legends[id,code,name,startValue,endValue,color]\",\n\t\t\t],\n\t\t},\n\t},\n};\n\nexport function useThematicLayers({\n\tanalyticsOptions,\n}: {\n\tanalyticsOptions?: MapAnalyticsOptions;\n}): any {\n\tconst engine = useDataEngine();\n\tconst [loading, setLoading] = useState(false);\n\tconst { orgUnits, orgUnitSelection } = useMapOrganisationUnit();\n\tconst { periods, range } = useMapPeriods() ?? {};\n\tconst ou = useMemo(\n\t\t() => getOrgUnitsSelection(orgUnitSelection),\n\t\t[orgUnitSelection],\n\t);\n\tconst pe = useMemo(() => periods?.map((pe: any) => pe.id), [periods]);\n\n\tconst { startDate, endDate } = useMemo(() => {\n\t\tif (!range) {\n\t\t\treturn {\n\t\t\t\tstartDate: undefined,\n\t\t\t\tendDate: undefined,\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tstartDate: sanitizeDate(range.start.toDateString()),\n\t\t\tendDate: sanitizeDate(range.end.toDateString()),\n\t\t};\n\t}, [range]);\n\tconst sanitizeData = (data: any, layer: ThematicLayerConfig) => {\n\t\tif (data) {\n\t\t\tconst { analytics } = data as any;\n\t\t\tconst rows = analytics?.rows;\n\t\t\tconst ouIndex = analytics.headers.findIndex(\n\t\t\t\t(header: any) => header.name === \"ou\",\n\t\t\t);\n\t\t\tconst dxIndex = analytics.headers.findIndex(\n\t\t\t\t(header: any) => header.name === \"dx\",\n\t\t\t);\n\t\t\tconst valueIndex = analytics.headers.findIndex(\n\t\t\t\t(header: any) => header.name === \"value\",\n\t\t\t);\n\n\t\t\tif (!isEmpty(rows)) {\n\t\t\t\treturn sortBy(\n\t\t\t\t\torgUnits?.map((ou: MapOrgUnit) => {\n\t\t\t\t\t\tconst row = rows.find(\n\t\t\t\t\t\t\t(row: any) =>\n\t\t\t\t\t\t\t\trow[ouIndex] === ou.id &&\n\t\t\t\t\t\t\t\trow[dxIndex] === layer.dataItem.id,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\torgUnit: ou,\n\t\t\t\t\t\t\tdata: row ? parseFloat(row[valueIndex]) : undefined,\n\t\t\t\t\t\t\tdataItem: {\n\t\t\t\t\t\t\t\t...layer.dataItem,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t}),\n\t\t\t\t\t[\"data\"],\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn [];\n\t\t}\n\t\treturn [];\n\t};\n\n\tconst sanitizeLegends = async (\n\t\tlayers: CustomThematicLayer[],\n\t): Promise<CustomThematicLayer[]> => {\n\t\treturn (await map(\n\t\t\tlayers,\n\t\t\tasyncify(async (layer: CustomThematicLayer) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst legends = [];\n\t\t\t\t\tif (layer.dataItem.legendSet) {\n\t\t\t\t\t\tconst legendSetData = await engine.query(\n\t\t\t\t\t\t\tlegendSetsQuery,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvariables: {\n\t\t\t\t\t\t\t\t\tid: layer.dataItem.legendSet,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst legendSet: LegendSet =\n\t\t\t\t\t\t\tlegendSetData?.legendSets as LegendSet;\n\t\t\t\t\t\tif (legendSet) {\n\t\t\t\t\t\t\tlegends.push(...legendSet.legends);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst { scale, colorClass } = layer.dataItem\n\t\t\t\t\t\t\t.legendConfig ?? {\n\t\t\t\t\t\t\tscale: defaultClasses,\n\t\t\t\t\t\t\tcolorClass: defaultColorScaleName,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst sortedData = sortBy(\n\t\t\t\t\t\t\tlayer.data.filter((datum) => !!datum.data),\n\t\t\t\t\t\t\t\"data\",\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst autoLegends = generateLegends(\n\t\t\t\t\t\t\tlast(sortedData)?.data ?? 0,\n\t\t\t\t\t\t\thead(sortedData)?.data ?? 0,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tclassesCount: scale,\n\t\t\t\t\t\t\t\tcolorClass,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t\tlegends.push(...autoLegends);\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...layer,\n\t\t\t\t\t\tlegends,\n\t\t\t\t\t};\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn layer;\n\t\t\t\t}\n\t\t\t}),\n\t\t)) as CustomThematicLayer[];\n\t};\n\n\tconst sanitizeLayers = async (\n\t\tlayers: ThematicLayerConfig[],\n\t): Promise<CustomThematicLayer[]> => {\n\t\ttry {\n\t\t\tsetLoading(true);\n\t\t\tconst layersWithoutData = layers?.filter((layer) => !layer.data);\n\t\t\tconst layersWithData = differenceBy(\n\t\t\t\tlayers,\n\t\t\t\tlayersWithoutData,\n\t\t\t\t\"id\",\n\t\t\t);\n\t\t\tconst dx = layersWithoutData.map((layer) => layer.dataItem.id);\n\t\t\tlet sanitizedLayersWithData: any = [];\n\n\t\t\tif (!isEmpty(dx)) {\n\t\t\t\tconst data = await engine.query(analyticsQuery, {\n\t\t\t\t\tvariables: {\n\t\t\t\t\t\tdx,\n\t\t\t\t\t\tou,\n\t\t\t\t\t\tpe,\n\t\t\t\t\t\tstartDate,\n\t\t\t\t\t\tendDate,\n\t\t\t\t\t\tanalyticsOptions,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tsanitizedLayersWithData = layersWithoutData.map((layer) => ({\n\t\t\t\t\t...layer,\n\t\t\t\t\tname:\n\t\t\t\t\t\tlayer?.name ?? layer?.dataItem?.displayName ?? layer.id,\n\t\t\t\t\tdata: sanitizeData(data, layer),\n\t\t\t\t}));\n\t\t\t}\n\t\t\tconst sanitizedLayersWithOrgUnits = layersWithData.map((layer) => ({\n\t\t\t\t...layer,\n\t\t\t\tdata: layer.data?.map((datum) => ({\n\t\t\t\t\t...datum,\n\t\t\t\t\torgUnit: find(orgUnits, [\n\t\t\t\t\t\t\"id\",\n\t\t\t\t\t\tdatum.orgUnit,\n\t\t\t\t\t]) as MapOrgUnit,\n\t\t\t\t\tdataItem: layer.dataItem,\n\t\t\t\t\tname:\n\t\t\t\t\t\tlayer?.name ?? layer?.dataItem?.displayName ?? layer.id,\n\t\t\t\t})),\n\t\t\t}));\n\t\t\tsetLoading(false);\n\t\t\treturn await sanitizeLegends([\n\t\t\t\t...sanitizedLayersWithData,\n\t\t\t\t...sanitizedLayersWithOrgUnits,\n\t\t\t]);\n\t\t} catch (e: any) {\n\t\t\tconsole.error(`Error getting thematic layers`, e.details);\n\t\t\tsetLoading(false);\n\t\t\treturn [];\n\t\t}\n\t};\n\n\treturn {\n\t\tsanitizeLayers,\n\t\tloading,\n\t};\n}\n\nexport function usePointLayer() {\n\tconst engine = useDataEngine();\n\tconst { orgUnitSelection } = useMapOrganisationUnit();\n\tconst [loading, setLoading] = useState(false);\n\n\tconst sanitizePointData = useCallback(\n\t\t(orgUnitData: any, groupSetData: any): PointOrgUnit[] => {\n\t\t\tconst { analytics, layer } = (orgUnitData as any) ?? {};\n\t\t\tconst rawOrgUnits = sanitizeOrgUnits(analytics?.metaData);\n\t\t\tconst geoJSONObjects = toGeoJson(\n\t\t\t\tlayer?.filter((bound: any) => bound.co),\n\t\t\t);\n\t\t\treturn compact(\n\t\t\t\trawOrgUnits.map((orgUnit: any) => {\n\t\t\t\t\tconst geoJSONObject: any = geoJSONObjects?.find(\n\t\t\t\t\t\t(geoJSON: any) => geoJSON.properties.id === orgUnit.id,\n\t\t\t\t\t);\n\t\t\t\t\tconst orgUnitGroups: any =\n\t\t\t\t\t\t(groupSetData?.groupSet as any)\n\t\t\t\t\t\t\t?.organisationUnitGroups ?? [];\n\t\t\t\t\tconst ouGroup = find(\n\t\t\t\t\t\torgUnitGroups,\n\t\t\t\t\t\t(ouGroup) =>\n\t\t\t\t\t\t\t!!find(ouGroup?.organisationUnits ?? [], [\n\t\t\t\t\t\t\t\t\"id\",\n\t\t\t\t\t\t\t\torgUnit.id,\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t);\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t!geoJSONObject ||\n\t\t\t\t\t\tgeoJSONObject.properties.type !== \"Point\"\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...orgUnit,\n\t\t\t\t\t\tgeoJSON: geoJSONObject,\n\t\t\t\t\t\tlevel: geoJSONObject.properties.level,\n\t\t\t\t\t\ticon: {\n\t\t\t\t\t\t\ttype: \"groupIcon\",\n\t\t\t\t\t\t\ticon: ouGroup?.symbol,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t);\n\t\t},\n\t\t[],\n\t);\n\n\tconst sanitizeLayer = useCallback(\n\t\tasync (\n\t\t\tlayer: CustomPointLayer,\n\t\t): Promise<CustomPointLayer | undefined> => {\n\t\t\ttry {\n\t\t\t\tif (!layer.level && !layer.group) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tsetLoading(true);\n\t\t\t\tconst level = layer.level ? `LEVEL-${layer.level}` : undefined;\n\t\t\t\tconst group = layer.group\n\t\t\t\t\t? `OU_GROUP-${layer.group}`\n\t\t\t\t\t: undefined;\n\t\t\t\tconst ous = [\n\t\t\t\t\t...getOrgUnitsSelection(orgUnitSelection),\n\t\t\t\t\tlevel,\n\t\t\t\t\tgroup,\n\t\t\t\t];\n\n\t\t\t\tconst pointData = await engine.query(query, {\n\t\t\t\t\tvariables: {\n\t\t\t\t\t\tous,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tconst groupSetData = await engine.query(groupSetQuery, {\n\t\t\t\t\tvariables: {\n\t\t\t\t\t\tgroupSet: layer.style?.groupSet,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tconst sanitizedOrgUnitData = sanitizePointData(\n\t\t\t\t\tpointData,\n\t\t\t\t\tgroupSetData,\n\t\t\t\t);\n\n\t\t\t\tconst orgUnitGroups =\n\t\t\t\t\t(groupSetData?.groupSet as any)?.organisationUnitGroups ??\n\t\t\t\t\t[];\n\n\t\t\t\tconst sanitizedOrgUnitGroups = orgUnitGroups.map(\n\t\t\t\t\t(ouGroup: any) => ({\n\t\t\t\t\t\t...ouGroup,\n\t\t\t\t\t\torganisationUnits: undefined,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t\tsetLoading(false);\n\t\t\t\treturn {\n\t\t\t\t\t...layer,\n\t\t\t\t\tpoints: sanitizedOrgUnitData,\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\t...layer.style,\n\t\t\t\t\t\torgUnitGroups: sanitizedOrgUnitGroups,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t} catch (e: any) {\n\t\t\t\tsetLoading(false);\n\t\t\t\tconsole.error(`Error getting point layer`, e.details);\n\t\t\t\treturn;\n\t\t\t}\n\t\t},\n\t\t[],\n\t);\n\n\treturn {\n\t\tloading,\n\t\tsanitizeLayer,\n\t};\n}\n\nexport function useGoogleEngineLayers() {\n\tconst { refresh } = useGoogleEngineToken();\n\tconst orgUnits = useBoundaryData();\n\n\tasync function getImageUrl(\n\t\tearthEngine: EarthEngine,\n\t\t{ filters }: EarthEngineLayerConfig,\n\t): Promise<string | undefined> {\n\t\tif (earthEngine.initialized) {\n\t\t\ttry {\n\t\t\t\tearthEngine.setOrgUnits(orgUnits ?? []);\n\t\t\t\tconst period = filters?.period;\n\t\t\t\tif (period) {\n\t\t\t\t\tearthEngine.setPeriod(period);\n\t\t\t\t}\n\t\t\t\treturn earthEngine.url();\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error(e);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst sanitizeLayers = useCallback(\n\t\tasync (\n\t\t\tlayers: EarthEngineLayerConfig[],\n\t\t): Promise<CustomGoogleEngineLayer[]> => {\n\t\t\tif (isEmpty(layers)) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst { token } = await refresh();\n\t\t\t\tif (!token) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t`Google token not available in this instance`,\n\t\t\t\t\t);\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\t\t\t\tawait EarthEngine.setToken(token, refresh);\n\t\t\t\treturn map(\n\t\t\t\t\tlayers,\n\t\t\t\t\tasyncify(async (layer: EarthEngineLayerConfig) => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst defaultOptions: any =\n\t\t\t\t\t\t\t\tfind(EARTH_ENGINE_LAYERS, [\"id\", layer.type]) ??\n\t\t\t\t\t\t\t\t{};\n\t\t\t\t\t\t\tconst options: EarthEngineOptions = {\n\t\t\t\t\t\t\t\t...defaultOptions,\n\t\t\t\t\t\t\t\taggregations:\n\t\t\t\t\t\t\t\t\tlayer.aggregations ??\n\t\t\t\t\t\t\t\t\tdefaultOptions?.aggregations,\n\t\t\t\t\t\t\t\tparams: layer.params ?? defaultOptions?.params,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tconst updatedLayer = {\n\t\t\t\t\t\t\t\t...layer,\n\t\t\t\t\t\t\t\toptions,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tconst earthEngine = new EarthEngine({ options });\n\t\t\t\t\t\t\tconst url = await getImageUrl(\n\t\t\t\t\t\t\t\tearthEngine,\n\t\t\t\t\t\t\t\tupdatedLayer,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...updatedLayer,\n\t\t\t\t\t\t\t\tengine: earthEngine,\n\t\t\t\t\t\t\t\turl,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tconsole.error(e);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t} catch (e: any) {\n\t\t\t\tconsole.log(e);\n\t\t\t\tconsole.error(`Error getting thematic layers`, e.details);\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\t\t[refresh],\n\t);\n\n\treturn {\n\t\tsanitizeLayers,\n\t};\n}\n"]}
@@ -1,10 +1,10 @@
1
- import { useGoogleEngineToken } from '../../MapLayer/components/GoogleEngineLayer/hooks/index.js';
1
+ import { useGoogleEngineToken } from '../../MapLayer/components/GoogleEngineLayer/hooks';
2
2
  import { EarthEngine } from '../../MapLayer/components/GoogleEngineLayer/services/engine.js';
3
- import { useQuery } from '@tanstack/react-query';
3
+ import { useQuery } from 'react-query';
4
4
  import { useMemo } from 'react';
5
5
  import { useWatch } from 'react-hook-form';
6
6
  import { find } from 'lodash';
7
- import { EARTH_ENGINE_LAYERS } from '../../MapLayer/components/GoogleEngineLayer/constants/index.js';
7
+ import { EARTH_ENGINE_LAYERS } from '../../MapLayer/components/GoogleEngineLayer/constants';
8
8
 
9
9
  function useDatasetInfo(shouldRun, config) {
10
10
  const { refresh } = useGoogleEngineToken();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/components/Map/components/EarthEngineLayerConfiguration/hooks/data.ts"],"names":[],"mappings":";;;;;;;;AASO,SAAS,cAAA,CACf,WACA,MAAA,EACC;AACD,EAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,oBAAA,EAAqB;AAEzC,EAAA,eAAe,OAAA,GAAU;AACxB,IAAA,IAAI,MAAA,EAAQ;AACX,MAAA,MAAM,SAAA,GAAY,MAAM,OAAA,EAAQ;AAChC,MAAA,MAAM,WAAA,CAAY,QAAA,CAAS,SAAA,CAAU,KAAA,EAAO,OAAO,CAAA;AACnD,MAAA,MAAM,MAAA,GAAS,IAAI,WAAA,CAAY;AAAA,QAC9B,OAAA,EAAS;AAAA,OACT,CAAA;AACD,MAAA,OAAO,OAAO,SAAA,EAAU;AAAA,IACzB;AAAA,EACD;AAEA,EAAA,MAAM,EAAE,MAAM,KAAA,EAAO,SAAA,KAAc,QAAA,CAAS,CAAC,MAAM,CAAA,EAAG,OAAO,CAAA;AAE7D,EAAA,MAAM,OAAA,GAAU,QAAQ,MAAM;AAC7B,IAAA,MAAM,WAAY,IAAA,EAAc,QAAA;AAChC,IAAA,OAAO,QAAA,EAAU,GAAA,CAAI,CAAC,OAAA,KAAiB;AACtC,MAAA,OAAO,IAAI,IAAA;AAAA,QACV,OAAA,EAAS,WAAW,mBAAmB;AAAA,SACrC,WAAA,EAAY;AAAA,IAChB,CAAC,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,OAAO;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,KAAA;AAAA,IACA;AAAA,GACD;AACD;AAEO,SAAS,OAAA,GAAU;AACzB,EAAA,MAAM,OAAO,QAAA,CAAS;AAAA,IACrB,IAAA,EAAM;AAAA,GACN,CAAA;AACD,EAAA,OAAO,IAAA,CAAK,mBAAA,EAAqB,CAAC,IAAA,EAAM,IAAI,CAAC,CAAA;AAC9C","file":"data.js","sourcesContent":["import { EarthEngineOptions } from \"../../MapLayer/components/GoogleEngineLayer/interfaces/index.js\";\nimport { useGoogleEngineToken } from \"../../MapLayer/components/GoogleEngineLayer/hooks/index.js\";\nimport { EarthEngine } from \"../../MapLayer/components/GoogleEngineLayer/services/engine.js\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport { useMemo } from \"react\";\nimport { useWatch } from \"react-hook-form\";\nimport { find } from \"lodash\";\nimport { EARTH_ENGINE_LAYERS } from \"../../MapLayer/components/GoogleEngineLayer/constants/index.js\";\n\nexport function useDatasetInfo(\n\tshouldRun: boolean,\n\tconfig?: EarthEngineOptions,\n) {\n\tconst { refresh } = useGoogleEngineToken();\n\n\tasync function getInfo() {\n\t\tif (config) {\n\t\t\tconst tokenData = await refresh();\n\t\t\tawait EarthEngine.setToken(tokenData.token, refresh);\n\t\t\tconst engine = new EarthEngine({\n\t\t\t\toptions: config,\n\t\t\t});\n\t\t\treturn engine.getPeriod();\n\t\t}\n\t}\n\n\tconst { data, error, isLoading } = useQuery([config], getInfo);\n\n\tconst periods = useMemo(() => {\n\t\tconst features = (data as any)?.features;\n\t\treturn features?.map((feature: any) => {\n\t\t\treturn new Date(\n\t\t\t\tfeature?.properties[\"system:time_start\"],\n\t\t\t)?.getFullYear();\n\t\t});\n\t}, [data]);\n\n\treturn {\n\t\tloading: isLoading,\n\t\terror: error as any,\n\t\tperiods,\n\t};\n}\n\nexport function useType() {\n\tconst type = useWatch({\n\t\tname: \"type\",\n\t});\n\treturn find(EARTH_ENGINE_LAYERS, [\"id\", type]);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../../src/components/Map/components/EarthEngineLayerConfiguration/hooks/data.ts"],"names":[],"mappings":";;;;;;;;AASO,SAAS,cAAA,CACf,WACA,MAAA,EACC;AACD,EAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,oBAAA,EAAqB;AAEzC,EAAA,eAAe,OAAA,GAAU;AACxB,IAAA,IAAI,MAAA,EAAQ;AACX,MAAA,MAAM,SAAA,GAAY,MAAM,OAAA,EAAQ;AAChC,MAAA,MAAM,WAAA,CAAY,QAAA,CAAS,SAAA,CAAU,KAAA,EAAO,OAAO,CAAA;AACnD,MAAA,MAAM,MAAA,GAAS,IAAI,WAAA,CAAY;AAAA,QAC9B,OAAA,EAAS;AAAA,OACT,CAAA;AACD,MAAA,OAAO,OAAO,SAAA,EAAU;AAAA,IACzB;AAAA,EACD;AAEA,EAAA,MAAM,EAAE,MAAM,KAAA,EAAO,SAAA,KAAc,QAAA,CAAS,CAAC,MAAM,CAAA,EAAG,OAAO,CAAA;AAE7D,EAAA,MAAM,OAAA,GAAU,QAAQ,MAAM;AAC7B,IAAA,MAAM,WAAY,IAAA,EAAc,QAAA;AAChC,IAAA,OAAO,QAAA,EAAU,GAAA,CAAI,CAAC,OAAA,KAAiB;AACtC,MAAA,OAAO,IAAI,IAAA;AAAA,QACV,OAAA,EAAS,WAAW,mBAAmB;AAAA,SACrC,WAAA,EAAY;AAAA,IAChB,CAAC,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,OAAO;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,KAAA;AAAA,IACA;AAAA,GACD;AACD;AAEO,SAAS,OAAA,GAAU;AACzB,EAAA,MAAM,OAAO,QAAA,CAAS;AAAA,IACrB,IAAA,EAAM;AAAA,GACN,CAAA;AACD,EAAA,OAAO,IAAA,CAAK,mBAAA,EAAqB,CAAC,IAAA,EAAM,IAAI,CAAC,CAAA;AAC9C","file":"data.js","sourcesContent":["import { EarthEngineOptions } from \"../../MapLayer/components/GoogleEngineLayer/interfaces\";\nimport { useGoogleEngineToken } from \"../../MapLayer/components/GoogleEngineLayer/hooks\";\nimport { EarthEngine } from \"../../MapLayer/components/GoogleEngineLayer/services/engine.js\";\nimport { useQuery } from \"react-query\";\nimport { useMemo } from \"react\";\nimport { useWatch } from \"react-hook-form\";\nimport { find } from \"lodash\";\nimport { EARTH_ENGINE_LAYERS } from \"../../MapLayer/components/GoogleEngineLayer/constants\";\n\nexport function useDatasetInfo(\n\tshouldRun: boolean,\n\tconfig?: EarthEngineOptions,\n) {\n\tconst { refresh } = useGoogleEngineToken();\n\n\tasync function getInfo() {\n\t\tif (config) {\n\t\t\tconst tokenData = await refresh();\n\t\t\tawait EarthEngine.setToken(tokenData.token, refresh);\n\t\t\tconst engine = new EarthEngine({\n\t\t\t\toptions: config,\n\t\t\t});\n\t\t\treturn engine.getPeriod();\n\t\t}\n\t}\n\n\tconst { data, error, isLoading } = useQuery([config], getInfo);\n\n\tconst periods = useMemo(() => {\n\t\tconst features = (data as any)?.features;\n\t\treturn features?.map((feature: any) => {\n\t\t\treturn new Date(\n\t\t\t\tfeature?.properties[\"system:time_start\"],\n\t\t\t)?.getFullYear();\n\t\t});\n\t}, [data]);\n\n\treturn {\n\t\tloading: isLoading,\n\t\terror: error as any,\n\t\tperiods,\n\t};\n}\n\nexport function useType() {\n\tconst type = useWatch({\n\t\tname: \"type\",\n\t});\n\treturn find(EARTH_ENGINE_LAYERS, [\"id\", type]);\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import { compact, find, isEmpty, differenceBy, sortBy, last, head } from 'lodash';
2
- import { useMapOrganisationUnit, useMapPeriods } from '../../../hooks/index.js';
2
+ import { useMapOrganisationUnit, useMapPeriods } from '../../../hooks';
3
3
  import { useState, useMemo, useCallback } from 'react';
4
- import { getOrgUnitsSelection, sanitizeDate, sanitizeOrgUnits, toGeoJson, generateLegends } from '../../../../../utils/map.js';
4
+ import { getOrgUnitsSelection, sanitizeDate, sanitizeOrgUnits, toGeoJson, generateLegends } from '../../../../../utils';
5
5
  import { useDataEngine } from '@dhis2/app-runtime';
6
6
  import { map, asyncify } from 'async-es';
7
7
  import { defaultColorScaleName, defaultClasses } from '../../../../../utils/colors.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../../src/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.tsx"],"names":["pe","ou","row","ouGroup"],"mappings":"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","file":"index.js","sourcesContent":["import {\n\tcompact,\n\tdifferenceBy,\n\tfind,\n\thead,\n\tisEmpty,\n\tlast,\n\tsortBy,\n} from \"lodash\";\nimport { useMapOrganisationUnit, useMapPeriods } from \"../../../hooks/index.js\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport {\n\tgenerateLegends,\n\tgetOrgUnitsSelection,\n\tsanitizeDate,\n\tsanitizeOrgUnits,\n\ttoGeoJson,\n} from \"../../../../../utils/map.js\";\nimport { useDataEngine } from \"@dhis2/app-runtime\";\nimport {\n\tCustomGoogleEngineLayer,\n\tCustomPointLayer,\n\tCustomThematicLayer,\n\tEarthEngineLayerConfig,\n\tThematicLayerConfig,\n} from \"../../../../MapLayer/interfaces\";\nimport {\n\ttype MapAnalyticsOptions,\n\tMapOrgUnit,\n\tPointOrgUnit,\n} from \"../../../../../interfaces/index.js\";\nimport { asyncify, map } from \"async-es\";\nimport { LegendSet } from \"@hisptz/dhis2-utils\";\nimport {\n\tdefaultClasses,\n\tdefaultColorScaleName,\n} from \"../../../../../utils/colors.js\";\nimport { useGoogleEngineToken } from \"../../../../MapLayer/components/GoogleEngineLayer/hooks/index.js\";\nimport { useBoundaryData } from \"../../../../MapLayer/components/BoundaryLayer/hooks/useBoundaryData.js\";\nimport { EarthEngine } from \"../../../../MapLayer/components/GoogleEngineLayer/services/engine.js\";\nimport { EARTH_ENGINE_LAYERS } from \"../../../../MapLayer/components/GoogleEngineLayer/constants/index.js\";\nimport { EarthEngineOptions } from \"../../../../MapLayer/components/GoogleEngineLayer/interfaces/index.js\";\n\nconst analyticsQuery = {\n\tanalytics: {\n\t\tresource: \"analytics\",\n\t\tparams: ({ ou, pe, dx, startDate, endDate, analyticsOptions }: any) => {\n\t\t\tconst peDimension = !isEmpty(pe)\n\t\t\t\t? `pe:${pe?.join(\";\")}`\n\t\t\t\t: undefined;\n\t\t\tconst ouDimension = !isEmpty(ou)\n\t\t\t\t? `ou:${ou?.join(\";\")}`\n\t\t\t\t: undefined;\n\t\t\tconst dxDimension = !isEmpty(dx)\n\t\t\t\t? `dx:${dx?.join(\";\")}`\n\t\t\t\t: undefined;\n\n\t\t\treturn {\n\t\t\t\tdimension: compact([dxDimension, peDimension, ouDimension]),\n\t\t\t\tstartDate,\n\t\t\t\tendDate,\n\t\t\t\tdisplayProperty: \"NAME\",\n\t\t\t\t...(analyticsOptions ?? {}),\n\t\t\t};\n\t\t},\n\t},\n};\nconst query = {\n\tlayer: {\n\t\tresource: \"geoFeatures\",\n\t\tparams: ({ ous }: any) => ({\n\t\t\tou: `ou:${ous.join(\";\")}`,\n\t\t}),\n\t},\n\tanalytics: {\n\t\tresource: \"analytics\",\n\t\tparams: ({ ous }: any) => ({\n\t\t\tdimension: [\n\t\t\t\t`ou:${ous.join(\";\")}`,\n\t\t\t\t`pe:${new Date().getFullYear()}`,\n\t\t\t],\n\t\t\tskipData: true,\n\t\t\thierarchyMeta: true,\n\t\t}),\n\t},\n};\nconst groupSetQuery = {\n\tgroupSet: {\n\t\tresource: \"organisationUnitGroupSets\",\n\t\tid: ({ groupSet }: any) => groupSet,\n\t\tparams: {\n\t\t\tfields: [\n\t\t\t\t\"organisationUnitGroups[name,color,symbol,organisationUnits[id]]\",\n\t\t\t],\n\t\t},\n\t},\n};\nconst legendSetsQuery = {\n\tlegendSets: {\n\t\tresource: \"legendSets\",\n\t\tid: ({ id }: any) => id,\n\t\tparams: {\n\t\t\tfields: [\n\t\t\t\t\"id\",\n\t\t\t\t\"displayName\",\n\t\t\t\t\"legends[id,code,name,startValue,endValue,color]\",\n\t\t\t],\n\t\t},\n\t},\n};\n\nexport function useThematicLayers({\n\tanalyticsOptions,\n}: {\n\tanalyticsOptions?: MapAnalyticsOptions;\n}): any {\n\tconst engine = useDataEngine();\n\tconst [loading, setLoading] = useState(false);\n\tconst { orgUnits, orgUnitSelection } = useMapOrganisationUnit();\n\tconst { periods, range } = useMapPeriods() ?? {};\n\tconst ou = useMemo(\n\t\t() => getOrgUnitsSelection(orgUnitSelection),\n\t\t[orgUnitSelection],\n\t);\n\tconst pe = useMemo(() => periods?.map((pe: any) => pe.id), [periods]);\n\n\tconst { startDate, endDate } = useMemo(() => {\n\t\tif (!range) {\n\t\t\treturn {\n\t\t\t\tstartDate: undefined,\n\t\t\t\tendDate: undefined,\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tstartDate: sanitizeDate(range.start.toDateString()),\n\t\t\tendDate: sanitizeDate(range.end.toDateString()),\n\t\t};\n\t}, [range]);\n\tconst sanitizeData = (data: any, layer: ThematicLayerConfig) => {\n\t\tif (data) {\n\t\t\tconst { analytics } = data as any;\n\t\t\tconst rows = analytics?.rows;\n\t\t\tconst ouIndex = analytics.headers.findIndex(\n\t\t\t\t(header: any) => header.name === \"ou\",\n\t\t\t);\n\t\t\tconst dxIndex = analytics.headers.findIndex(\n\t\t\t\t(header: any) => header.name === \"dx\",\n\t\t\t);\n\t\t\tconst valueIndex = analytics.headers.findIndex(\n\t\t\t\t(header: any) => header.name === \"value\",\n\t\t\t);\n\n\t\t\tif (!isEmpty(rows)) {\n\t\t\t\treturn sortBy(\n\t\t\t\t\torgUnits?.map((ou: MapOrgUnit) => {\n\t\t\t\t\t\tconst row = rows.find(\n\t\t\t\t\t\t\t(row: any) =>\n\t\t\t\t\t\t\t\trow[ouIndex] === ou.id &&\n\t\t\t\t\t\t\t\trow[dxIndex] === layer.dataItem.id,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\torgUnit: ou,\n\t\t\t\t\t\t\tdata: row ? parseFloat(row[valueIndex]) : undefined,\n\t\t\t\t\t\t\tdataItem: {\n\t\t\t\t\t\t\t\t...layer.dataItem,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t}),\n\t\t\t\t\t[\"data\"],\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn [];\n\t\t}\n\t\treturn [];\n\t};\n\n\tconst sanitizeLegends = async (\n\t\tlayers: CustomThematicLayer[],\n\t): Promise<CustomThematicLayer[]> => {\n\t\treturn (await map(\n\t\t\tlayers,\n\t\t\tasyncify(async (layer: CustomThematicLayer) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst legends = [];\n\t\t\t\t\tif (layer.dataItem.legendSet) {\n\t\t\t\t\t\tconst legendSetData = await engine.query(\n\t\t\t\t\t\t\tlegendSetsQuery,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvariables: {\n\t\t\t\t\t\t\t\t\tid: layer.dataItem.legendSet,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst legendSet: LegendSet =\n\t\t\t\t\t\t\tlegendSetData?.legendSets as LegendSet;\n\t\t\t\t\t\tif (legendSet) {\n\t\t\t\t\t\t\tlegends.push(...legendSet.legends);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst { scale, colorClass } = layer.dataItem\n\t\t\t\t\t\t\t.legendConfig ?? {\n\t\t\t\t\t\t\tscale: defaultClasses,\n\t\t\t\t\t\t\tcolorClass: defaultColorScaleName,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst sortedData = sortBy(\n\t\t\t\t\t\t\tlayer.data.filter((datum) => !!datum.data),\n\t\t\t\t\t\t\t\"data\",\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst autoLegends = generateLegends(\n\t\t\t\t\t\t\tlast(sortedData)?.data ?? 0,\n\t\t\t\t\t\t\thead(sortedData)?.data ?? 0,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tclassesCount: scale,\n\t\t\t\t\t\t\t\tcolorClass,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t\tlegends.push(...autoLegends);\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...layer,\n\t\t\t\t\t\tlegends,\n\t\t\t\t\t};\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn layer;\n\t\t\t\t}\n\t\t\t}),\n\t\t)) as CustomThematicLayer[];\n\t};\n\n\tconst sanitizeLayers = async (\n\t\tlayers: ThematicLayerConfig[],\n\t): Promise<CustomThematicLayer[]> => {\n\t\ttry {\n\t\t\tsetLoading(true);\n\t\t\tconst layersWithoutData = layers?.filter((layer) => !layer.data);\n\t\t\tconst layersWithData = differenceBy(\n\t\t\t\tlayers,\n\t\t\t\tlayersWithoutData,\n\t\t\t\t\"id\",\n\t\t\t);\n\t\t\tconst dx = layersWithoutData.map((layer) => layer.dataItem.id);\n\t\t\tlet sanitizedLayersWithData: any = [];\n\n\t\t\tif (!isEmpty(dx)) {\n\t\t\t\tconst data = await engine.query(analyticsQuery, {\n\t\t\t\t\tvariables: {\n\t\t\t\t\t\tdx,\n\t\t\t\t\t\tou,\n\t\t\t\t\t\tpe,\n\t\t\t\t\t\tstartDate,\n\t\t\t\t\t\tendDate,\n\t\t\t\t\t\tanalyticsOptions,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tsanitizedLayersWithData = layersWithoutData.map((layer) => ({\n\t\t\t\t\t...layer,\n\t\t\t\t\tname:\n\t\t\t\t\t\tlayer?.name ?? layer?.dataItem?.displayName ?? layer.id,\n\t\t\t\t\tdata: sanitizeData(data, layer),\n\t\t\t\t}));\n\t\t\t}\n\t\t\tconst sanitizedLayersWithOrgUnits = layersWithData.map((layer) => ({\n\t\t\t\t...layer,\n\t\t\t\tdata: layer.data?.map((datum) => ({\n\t\t\t\t\t...datum,\n\t\t\t\t\torgUnit: find(orgUnits, [\n\t\t\t\t\t\t\"id\",\n\t\t\t\t\t\tdatum.orgUnit,\n\t\t\t\t\t]) as MapOrgUnit,\n\t\t\t\t\tdataItem: layer.dataItem,\n\t\t\t\t\tname:\n\t\t\t\t\t\tlayer?.name ?? layer?.dataItem?.displayName ?? layer.id,\n\t\t\t\t})),\n\t\t\t}));\n\t\t\tsetLoading(false);\n\t\t\treturn await sanitizeLegends([\n\t\t\t\t...sanitizedLayersWithData,\n\t\t\t\t...sanitizedLayersWithOrgUnits,\n\t\t\t]);\n\t\t} catch (e: any) {\n\t\t\tconsole.error(`Error getting thematic layers`, e.details);\n\t\t\tsetLoading(false);\n\t\t\treturn [];\n\t\t}\n\t};\n\n\treturn {\n\t\tsanitizeLayers,\n\t\tloading,\n\t};\n}\n\nexport function usePointLayer() {\n\tconst engine = useDataEngine();\n\tconst { orgUnitSelection } = useMapOrganisationUnit();\n\tconst [loading, setLoading] = useState(false);\n\n\tconst sanitizePointData = useCallback(\n\t\t(orgUnitData: any, groupSetData: any): PointOrgUnit[] => {\n\t\t\tconst { analytics, layer } = (orgUnitData as any) ?? {};\n\t\t\tconst rawOrgUnits = sanitizeOrgUnits(analytics?.metaData);\n\t\t\tconst geoJSONObjects = toGeoJson(\n\t\t\t\tlayer?.filter((bound: any) => bound.co),\n\t\t\t);\n\t\t\treturn compact(\n\t\t\t\trawOrgUnits.map((orgUnit: any) => {\n\t\t\t\t\tconst geoJSONObject: any = geoJSONObjects?.find(\n\t\t\t\t\t\t(geoJSON: any) => geoJSON.properties.id === orgUnit.id,\n\t\t\t\t\t);\n\t\t\t\t\tconst orgUnitGroups: any =\n\t\t\t\t\t\t(groupSetData?.groupSet as any)\n\t\t\t\t\t\t\t?.organisationUnitGroups ?? [];\n\t\t\t\t\tconst ouGroup = find(\n\t\t\t\t\t\torgUnitGroups,\n\t\t\t\t\t\t(ouGroup) =>\n\t\t\t\t\t\t\t!!find(ouGroup?.organisationUnits ?? [], [\n\t\t\t\t\t\t\t\t\"id\",\n\t\t\t\t\t\t\t\torgUnit.id,\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t);\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t!geoJSONObject ||\n\t\t\t\t\t\tgeoJSONObject.properties.type !== \"Point\"\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...orgUnit,\n\t\t\t\t\t\tgeoJSON: geoJSONObject,\n\t\t\t\t\t\tlevel: geoJSONObject.properties.level,\n\t\t\t\t\t\ticon: {\n\t\t\t\t\t\t\ttype: \"groupIcon\",\n\t\t\t\t\t\t\ticon: ouGroup?.symbol,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t);\n\t\t},\n\t\t[],\n\t);\n\n\tconst sanitizeLayer = useCallback(\n\t\tasync (\n\t\t\tlayer: CustomPointLayer,\n\t\t): Promise<CustomPointLayer | undefined> => {\n\t\t\ttry {\n\t\t\t\tif (!layer.level && !layer.group) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tsetLoading(true);\n\t\t\t\tconst level = layer.level ? `LEVEL-${layer.level}` : undefined;\n\t\t\t\tconst group = layer.group\n\t\t\t\t\t? `OU_GROUP-${layer.group}`\n\t\t\t\t\t: undefined;\n\t\t\t\tconst ous = [\n\t\t\t\t\t...getOrgUnitsSelection(orgUnitSelection),\n\t\t\t\t\tlevel,\n\t\t\t\t\tgroup,\n\t\t\t\t];\n\n\t\t\t\tconst pointData = await engine.query(query, {\n\t\t\t\t\tvariables: {\n\t\t\t\t\t\tous,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tconst groupSetData = await engine.query(groupSetQuery, {\n\t\t\t\t\tvariables: {\n\t\t\t\t\t\tgroupSet: layer.style?.groupSet,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tconst sanitizedOrgUnitData = sanitizePointData(\n\t\t\t\t\tpointData,\n\t\t\t\t\tgroupSetData,\n\t\t\t\t);\n\n\t\t\t\tconst orgUnitGroups =\n\t\t\t\t\t(groupSetData?.groupSet as any)?.organisationUnitGroups ??\n\t\t\t\t\t[];\n\n\t\t\t\tconst sanitizedOrgUnitGroups = orgUnitGroups.map(\n\t\t\t\t\t(ouGroup: any) => ({\n\t\t\t\t\t\t...ouGroup,\n\t\t\t\t\t\torganisationUnits: undefined,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t\tsetLoading(false);\n\t\t\t\treturn {\n\t\t\t\t\t...layer,\n\t\t\t\t\tpoints: sanitizedOrgUnitData,\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\t...layer.style,\n\t\t\t\t\t\torgUnitGroups: sanitizedOrgUnitGroups,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t} catch (e: any) {\n\t\t\t\tsetLoading(false);\n\t\t\t\tconsole.error(`Error getting point layer`, e.details);\n\t\t\t\treturn;\n\t\t\t}\n\t\t},\n\t\t[],\n\t);\n\n\treturn {\n\t\tloading,\n\t\tsanitizeLayer,\n\t};\n}\n\nexport function useGoogleEngineLayers() {\n\tconst { refresh } = useGoogleEngineToken();\n\tconst orgUnits = useBoundaryData();\n\n\tasync function getImageUrl(\n\t\tearthEngine: EarthEngine,\n\t\t{ filters }: EarthEngineLayerConfig,\n\t): Promise<string | undefined> {\n\t\tif (earthEngine.initialized) {\n\t\t\ttry {\n\t\t\t\tearthEngine.setOrgUnits(orgUnits ?? []);\n\t\t\t\tconst period = filters?.period;\n\t\t\t\tif (period) {\n\t\t\t\t\tearthEngine.setPeriod(period);\n\t\t\t\t}\n\t\t\t\treturn earthEngine.url();\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error(e);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst sanitizeLayers = useCallback(\n\t\tasync (\n\t\t\tlayers: EarthEngineLayerConfig[],\n\t\t): Promise<CustomGoogleEngineLayer[]> => {\n\t\t\tif (isEmpty(layers)) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst { token } = await refresh();\n\t\t\t\tif (!token) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t`Google token not available in this instance`,\n\t\t\t\t\t);\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\t\t\t\tawait EarthEngine.setToken(token, refresh);\n\t\t\t\treturn map(\n\t\t\t\t\tlayers,\n\t\t\t\t\tasyncify(async (layer: EarthEngineLayerConfig) => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst defaultOptions: any =\n\t\t\t\t\t\t\t\tfind(EARTH_ENGINE_LAYERS, [\"id\", layer.type]) ??\n\t\t\t\t\t\t\t\t{};\n\t\t\t\t\t\t\tconst options: EarthEngineOptions = {\n\t\t\t\t\t\t\t\t...defaultOptions,\n\t\t\t\t\t\t\t\taggregations:\n\t\t\t\t\t\t\t\t\tlayer.aggregations ??\n\t\t\t\t\t\t\t\t\tdefaultOptions?.aggregations,\n\t\t\t\t\t\t\t\tparams: layer.params ?? defaultOptions?.params,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tconst updatedLayer = {\n\t\t\t\t\t\t\t\t...layer,\n\t\t\t\t\t\t\t\toptions,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tconst earthEngine = new EarthEngine({ options });\n\t\t\t\t\t\t\tconst url = await getImageUrl(\n\t\t\t\t\t\t\t\tearthEngine,\n\t\t\t\t\t\t\t\tupdatedLayer,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...updatedLayer,\n\t\t\t\t\t\t\t\tengine: earthEngine,\n\t\t\t\t\t\t\t\turl,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tconsole.error(e);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t} catch (e: any) {\n\t\t\t\tconsole.log(e);\n\t\t\t\tconsole.error(`Error getting thematic layers`, e.details);\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\t\t[refresh],\n\t);\n\n\treturn {\n\t\tsanitizeLayers,\n\t};\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../../../../src/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.tsx"],"names":["pe","ou","row","ouGroup"],"mappings":"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","file":"index.js","sourcesContent":["import {\n\tcompact,\n\tdifferenceBy,\n\tfind,\n\thead,\n\tisEmpty,\n\tlast,\n\tsortBy,\n} from \"lodash\";\nimport { useMapOrganisationUnit, useMapPeriods } from \"../../../hooks\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport {\n\tgenerateLegends,\n\tgetOrgUnitsSelection,\n\tsanitizeDate,\n\tsanitizeOrgUnits,\n\ttoGeoJson,\n} from \"../../../../../utils\";\nimport { useDataEngine } from \"@dhis2/app-runtime\";\nimport {\n\tCustomGoogleEngineLayer,\n\tCustomPointLayer,\n\tCustomThematicLayer,\n\tEarthEngineLayerConfig,\n\tThematicLayerConfig,\n} from \"../../../../MapLayer/interfaces\";\nimport {\n\ttype MapAnalyticsOptions,\n\tMapOrgUnit,\n\tPointOrgUnit,\n} from \"../../../../../interfaces/index.js\";\nimport { asyncify, map } from \"async-es\";\nimport { LegendSet } from \"@hisptz/dhis2-utils\";\nimport {\n\tdefaultClasses,\n\tdefaultColorScaleName,\n} from \"../../../../../utils/colors.js\";\nimport { useGoogleEngineToken } from \"../../../../MapLayer/components/GoogleEngineLayer/hooks/index.js\";\nimport { useBoundaryData } from \"../../../../MapLayer/components/BoundaryLayer/hooks/useBoundaryData.js\";\nimport { EarthEngine } from \"../../../../MapLayer/components/GoogleEngineLayer/services/engine.js\";\nimport { EARTH_ENGINE_LAYERS } from \"../../../../MapLayer/components/GoogleEngineLayer/constants/index.js\";\nimport { EarthEngineOptions } from \"../../../../MapLayer/components/GoogleEngineLayer/interfaces/index.js\";\n\nconst analyticsQuery = {\n\tanalytics: {\n\t\tresource: \"analytics\",\n\t\tparams: ({ ou, pe, dx, startDate, endDate, analyticsOptions }: any) => {\n\t\t\tconst peDimension = !isEmpty(pe)\n\t\t\t\t? `pe:${pe?.join(\";\")}`\n\t\t\t\t: undefined;\n\t\t\tconst ouDimension = !isEmpty(ou)\n\t\t\t\t? `ou:${ou?.join(\";\")}`\n\t\t\t\t: undefined;\n\t\t\tconst dxDimension = !isEmpty(dx)\n\t\t\t\t? `dx:${dx?.join(\";\")}`\n\t\t\t\t: undefined;\n\n\t\t\treturn {\n\t\t\t\tdimension: compact([dxDimension, peDimension, ouDimension]),\n\t\t\t\tstartDate,\n\t\t\t\tendDate,\n\t\t\t\tdisplayProperty: \"NAME\",\n\t\t\t\t...(analyticsOptions ?? {}),\n\t\t\t};\n\t\t},\n\t},\n};\nconst query = {\n\tlayer: {\n\t\tresource: \"geoFeatures\",\n\t\tparams: ({ ous }: any) => ({\n\t\t\tou: `ou:${ous.join(\";\")}`,\n\t\t}),\n\t},\n\tanalytics: {\n\t\tresource: \"analytics\",\n\t\tparams: ({ ous }: any) => ({\n\t\t\tdimension: [\n\t\t\t\t`ou:${ous.join(\";\")}`,\n\t\t\t\t`pe:${new Date().getFullYear()}`,\n\t\t\t],\n\t\t\tskipData: true,\n\t\t\thierarchyMeta: true,\n\t\t}),\n\t},\n};\nconst groupSetQuery = {\n\tgroupSet: {\n\t\tresource: \"organisationUnitGroupSets\",\n\t\tid: ({ groupSet }: any) => groupSet,\n\t\tparams: {\n\t\t\tfields: [\n\t\t\t\t\"organisationUnitGroups[name,color,symbol,organisationUnits[id]]\",\n\t\t\t],\n\t\t},\n\t},\n};\nconst legendSetsQuery = {\n\tlegendSets: {\n\t\tresource: \"legendSets\",\n\t\tid: ({ id }: any) => id,\n\t\tparams: {\n\t\t\tfields: [\n\t\t\t\t\"id\",\n\t\t\t\t\"displayName\",\n\t\t\t\t\"legends[id,code,name,startValue,endValue,color]\",\n\t\t\t],\n\t\t},\n\t},\n};\n\nexport function useThematicLayers({\n\tanalyticsOptions,\n}: {\n\tanalyticsOptions?: MapAnalyticsOptions;\n}): any {\n\tconst engine = useDataEngine();\n\tconst [loading, setLoading] = useState(false);\n\tconst { orgUnits, orgUnitSelection } = useMapOrganisationUnit();\n\tconst { periods, range } = useMapPeriods() ?? {};\n\tconst ou = useMemo(\n\t\t() => getOrgUnitsSelection(orgUnitSelection),\n\t\t[orgUnitSelection],\n\t);\n\tconst pe = useMemo(() => periods?.map((pe: any) => pe.id), [periods]);\n\n\tconst { startDate, endDate } = useMemo(() => {\n\t\tif (!range) {\n\t\t\treturn {\n\t\t\t\tstartDate: undefined,\n\t\t\t\tendDate: undefined,\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tstartDate: sanitizeDate(range.start.toDateString()),\n\t\t\tendDate: sanitizeDate(range.end.toDateString()),\n\t\t};\n\t}, [range]);\n\tconst sanitizeData = (data: any, layer: ThematicLayerConfig) => {\n\t\tif (data) {\n\t\t\tconst { analytics } = data as any;\n\t\t\tconst rows = analytics?.rows;\n\t\t\tconst ouIndex = analytics.headers.findIndex(\n\t\t\t\t(header: any) => header.name === \"ou\",\n\t\t\t);\n\t\t\tconst dxIndex = analytics.headers.findIndex(\n\t\t\t\t(header: any) => header.name === \"dx\",\n\t\t\t);\n\t\t\tconst valueIndex = analytics.headers.findIndex(\n\t\t\t\t(header: any) => header.name === \"value\",\n\t\t\t);\n\n\t\t\tif (!isEmpty(rows)) {\n\t\t\t\treturn sortBy(\n\t\t\t\t\torgUnits?.map((ou: MapOrgUnit) => {\n\t\t\t\t\t\tconst row = rows.find(\n\t\t\t\t\t\t\t(row: any) =>\n\t\t\t\t\t\t\t\trow[ouIndex] === ou.id &&\n\t\t\t\t\t\t\t\trow[dxIndex] === layer.dataItem.id,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\torgUnit: ou,\n\t\t\t\t\t\t\tdata: row ? parseFloat(row[valueIndex]) : undefined,\n\t\t\t\t\t\t\tdataItem: {\n\t\t\t\t\t\t\t\t...layer.dataItem,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t}),\n\t\t\t\t\t[\"data\"],\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn [];\n\t\t}\n\t\treturn [];\n\t};\n\n\tconst sanitizeLegends = async (\n\t\tlayers: CustomThematicLayer[],\n\t): Promise<CustomThematicLayer[]> => {\n\t\treturn (await map(\n\t\t\tlayers,\n\t\t\tasyncify(async (layer: CustomThematicLayer) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst legends = [];\n\t\t\t\t\tif (layer.dataItem.legendSet) {\n\t\t\t\t\t\tconst legendSetData = await engine.query(\n\t\t\t\t\t\t\tlegendSetsQuery,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvariables: {\n\t\t\t\t\t\t\t\t\tid: layer.dataItem.legendSet,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst legendSet: LegendSet =\n\t\t\t\t\t\t\tlegendSetData?.legendSets as LegendSet;\n\t\t\t\t\t\tif (legendSet) {\n\t\t\t\t\t\t\tlegends.push(...legendSet.legends);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst { scale, colorClass } = layer.dataItem\n\t\t\t\t\t\t\t.legendConfig ?? {\n\t\t\t\t\t\t\tscale: defaultClasses,\n\t\t\t\t\t\t\tcolorClass: defaultColorScaleName,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst sortedData = sortBy(\n\t\t\t\t\t\t\tlayer.data.filter((datum) => !!datum.data),\n\t\t\t\t\t\t\t\"data\",\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst autoLegends = generateLegends(\n\t\t\t\t\t\t\tlast(sortedData)?.data ?? 0,\n\t\t\t\t\t\t\thead(sortedData)?.data ?? 0,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tclassesCount: scale,\n\t\t\t\t\t\t\t\tcolorClass,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t\tlegends.push(...autoLegends);\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...layer,\n\t\t\t\t\t\tlegends,\n\t\t\t\t\t};\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn layer;\n\t\t\t\t}\n\t\t\t}),\n\t\t)) as CustomThematicLayer[];\n\t};\n\n\tconst sanitizeLayers = async (\n\t\tlayers: ThematicLayerConfig[],\n\t): Promise<CustomThematicLayer[]> => {\n\t\ttry {\n\t\t\tsetLoading(true);\n\t\t\tconst layersWithoutData = layers?.filter((layer) => !layer.data);\n\t\t\tconst layersWithData = differenceBy(\n\t\t\t\tlayers,\n\t\t\t\tlayersWithoutData,\n\t\t\t\t\"id\",\n\t\t\t);\n\t\t\tconst dx = layersWithoutData.map((layer) => layer.dataItem.id);\n\t\t\tlet sanitizedLayersWithData: any = [];\n\n\t\t\tif (!isEmpty(dx)) {\n\t\t\t\tconst data = await engine.query(analyticsQuery, {\n\t\t\t\t\tvariables: {\n\t\t\t\t\t\tdx,\n\t\t\t\t\t\tou,\n\t\t\t\t\t\tpe,\n\t\t\t\t\t\tstartDate,\n\t\t\t\t\t\tendDate,\n\t\t\t\t\t\tanalyticsOptions,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tsanitizedLayersWithData = layersWithoutData.map((layer) => ({\n\t\t\t\t\t...layer,\n\t\t\t\t\tname:\n\t\t\t\t\t\tlayer?.name ?? layer?.dataItem?.displayName ?? layer.id,\n\t\t\t\t\tdata: sanitizeData(data, layer),\n\t\t\t\t}));\n\t\t\t}\n\t\t\tconst sanitizedLayersWithOrgUnits = layersWithData.map((layer) => ({\n\t\t\t\t...layer,\n\t\t\t\tdata: layer.data?.map((datum) => ({\n\t\t\t\t\t...datum,\n\t\t\t\t\torgUnit: find(orgUnits, [\n\t\t\t\t\t\t\"id\",\n\t\t\t\t\t\tdatum.orgUnit,\n\t\t\t\t\t]) as MapOrgUnit,\n\t\t\t\t\tdataItem: layer.dataItem,\n\t\t\t\t\tname:\n\t\t\t\t\t\tlayer?.name ?? layer?.dataItem?.displayName ?? layer.id,\n\t\t\t\t})),\n\t\t\t}));\n\t\t\tsetLoading(false);\n\t\t\treturn await sanitizeLegends([\n\t\t\t\t...sanitizedLayersWithData,\n\t\t\t\t...sanitizedLayersWithOrgUnits,\n\t\t\t]);\n\t\t} catch (e: any) {\n\t\t\tconsole.error(`Error getting thematic layers`, e.details);\n\t\t\tsetLoading(false);\n\t\t\treturn [];\n\t\t}\n\t};\n\n\treturn {\n\t\tsanitizeLayers,\n\t\tloading,\n\t};\n}\n\nexport function usePointLayer() {\n\tconst engine = useDataEngine();\n\tconst { orgUnitSelection } = useMapOrganisationUnit();\n\tconst [loading, setLoading] = useState(false);\n\n\tconst sanitizePointData = useCallback(\n\t\t(orgUnitData: any, groupSetData: any): PointOrgUnit[] => {\n\t\t\tconst { analytics, layer } = (orgUnitData as any) ?? {};\n\t\t\tconst rawOrgUnits = sanitizeOrgUnits(analytics?.metaData);\n\t\t\tconst geoJSONObjects = toGeoJson(\n\t\t\t\tlayer?.filter((bound: any) => bound.co),\n\t\t\t);\n\t\t\treturn compact(\n\t\t\t\trawOrgUnits.map((orgUnit: any) => {\n\t\t\t\t\tconst geoJSONObject: any = geoJSONObjects?.find(\n\t\t\t\t\t\t(geoJSON: any) => geoJSON.properties.id === orgUnit.id,\n\t\t\t\t\t);\n\t\t\t\t\tconst orgUnitGroups: any =\n\t\t\t\t\t\t(groupSetData?.groupSet as any)\n\t\t\t\t\t\t\t?.organisationUnitGroups ?? [];\n\t\t\t\t\tconst ouGroup = find(\n\t\t\t\t\t\torgUnitGroups,\n\t\t\t\t\t\t(ouGroup) =>\n\t\t\t\t\t\t\t!!find(ouGroup?.organisationUnits ?? [], [\n\t\t\t\t\t\t\t\t\"id\",\n\t\t\t\t\t\t\t\torgUnit.id,\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t);\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t!geoJSONObject ||\n\t\t\t\t\t\tgeoJSONObject.properties.type !== \"Point\"\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...orgUnit,\n\t\t\t\t\t\tgeoJSON: geoJSONObject,\n\t\t\t\t\t\tlevel: geoJSONObject.properties.level,\n\t\t\t\t\t\ticon: {\n\t\t\t\t\t\t\ttype: \"groupIcon\",\n\t\t\t\t\t\t\ticon: ouGroup?.symbol,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t);\n\t\t},\n\t\t[],\n\t);\n\n\tconst sanitizeLayer = useCallback(\n\t\tasync (\n\t\t\tlayer: CustomPointLayer,\n\t\t): Promise<CustomPointLayer | undefined> => {\n\t\t\ttry {\n\t\t\t\tif (!layer.level && !layer.group) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tsetLoading(true);\n\t\t\t\tconst level = layer.level ? `LEVEL-${layer.level}` : undefined;\n\t\t\t\tconst group = layer.group\n\t\t\t\t\t? `OU_GROUP-${layer.group}`\n\t\t\t\t\t: undefined;\n\t\t\t\tconst ous = [\n\t\t\t\t\t...getOrgUnitsSelection(orgUnitSelection),\n\t\t\t\t\tlevel,\n\t\t\t\t\tgroup,\n\t\t\t\t];\n\n\t\t\t\tconst pointData = await engine.query(query, {\n\t\t\t\t\tvariables: {\n\t\t\t\t\t\tous,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tconst groupSetData = await engine.query(groupSetQuery, {\n\t\t\t\t\tvariables: {\n\t\t\t\t\t\tgroupSet: layer.style?.groupSet,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tconst sanitizedOrgUnitData = sanitizePointData(\n\t\t\t\t\tpointData,\n\t\t\t\t\tgroupSetData,\n\t\t\t\t);\n\n\t\t\t\tconst orgUnitGroups =\n\t\t\t\t\t(groupSetData?.groupSet as any)?.organisationUnitGroups ??\n\t\t\t\t\t[];\n\n\t\t\t\tconst sanitizedOrgUnitGroups = orgUnitGroups.map(\n\t\t\t\t\t(ouGroup: any) => ({\n\t\t\t\t\t\t...ouGroup,\n\t\t\t\t\t\torganisationUnits: undefined,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t\tsetLoading(false);\n\t\t\t\treturn {\n\t\t\t\t\t...layer,\n\t\t\t\t\tpoints: sanitizedOrgUnitData,\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\t...layer.style,\n\t\t\t\t\t\torgUnitGroups: sanitizedOrgUnitGroups,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t} catch (e: any) {\n\t\t\t\tsetLoading(false);\n\t\t\t\tconsole.error(`Error getting point layer`, e.details);\n\t\t\t\treturn;\n\t\t\t}\n\t\t},\n\t\t[],\n\t);\n\n\treturn {\n\t\tloading,\n\t\tsanitizeLayer,\n\t};\n}\n\nexport function useGoogleEngineLayers() {\n\tconst { refresh } = useGoogleEngineToken();\n\tconst orgUnits = useBoundaryData();\n\n\tasync function getImageUrl(\n\t\tearthEngine: EarthEngine,\n\t\t{ filters }: EarthEngineLayerConfig,\n\t): Promise<string | undefined> {\n\t\tif (earthEngine.initialized) {\n\t\t\ttry {\n\t\t\t\tearthEngine.setOrgUnits(orgUnits ?? []);\n\t\t\t\tconst period = filters?.period;\n\t\t\t\tif (period) {\n\t\t\t\t\tearthEngine.setPeriod(period);\n\t\t\t\t}\n\t\t\t\treturn earthEngine.url();\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error(e);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst sanitizeLayers = useCallback(\n\t\tasync (\n\t\t\tlayers: EarthEngineLayerConfig[],\n\t\t): Promise<CustomGoogleEngineLayer[]> => {\n\t\t\tif (isEmpty(layers)) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst { token } = await refresh();\n\t\t\t\tif (!token) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t`Google token not available in this instance`,\n\t\t\t\t\t);\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\t\t\t\tawait EarthEngine.setToken(token, refresh);\n\t\t\t\treturn map(\n\t\t\t\t\tlayers,\n\t\t\t\t\tasyncify(async (layer: EarthEngineLayerConfig) => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst defaultOptions: any =\n\t\t\t\t\t\t\t\tfind(EARTH_ENGINE_LAYERS, [\"id\", layer.type]) ??\n\t\t\t\t\t\t\t\t{};\n\t\t\t\t\t\t\tconst options: EarthEngineOptions = {\n\t\t\t\t\t\t\t\t...defaultOptions,\n\t\t\t\t\t\t\t\taggregations:\n\t\t\t\t\t\t\t\t\tlayer.aggregations ??\n\t\t\t\t\t\t\t\t\tdefaultOptions?.aggregations,\n\t\t\t\t\t\t\t\tparams: layer.params ?? defaultOptions?.params,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tconst updatedLayer = {\n\t\t\t\t\t\t\t\t...layer,\n\t\t\t\t\t\t\t\toptions,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tconst earthEngine = new EarthEngine({ options });\n\t\t\t\t\t\t\tconst url = await getImageUrl(\n\t\t\t\t\t\t\t\tearthEngine,\n\t\t\t\t\t\t\t\tupdatedLayer,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...updatedLayer,\n\t\t\t\t\t\t\t\tengine: earthEngine,\n\t\t\t\t\t\t\t\turl,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tconsole.error(e);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t} catch (e: any) {\n\t\t\t\tconsole.log(e);\n\t\t\t\tconsole.error(`Error getting thematic layers`, e.details);\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\t\t[refresh],\n\t);\n\n\treturn {\n\t\tsanitizeLayers,\n\t};\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { EarthEngineOptions } from "../../MapLayer/components/GoogleEngineLayer/interfaces/index.js";
1
+ import { EarthEngineOptions } from "../../MapLayer/components/GoogleEngineLayer/interfaces";
2
2
  export declare function useDatasetInfo(shouldRun: boolean, config?: EarthEngineOptions): {
3
3
  loading: boolean;
4
4
  error: any;
@@ -1 +1 @@
1
- {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/Map/components/EarthEngineLayerConfiguration/hooks/data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iEAAiE,CAAC;AASrG,wBAAgB,cAAc,CAC7B,SAAS,EAAE,OAAO,EAClB,MAAM,CAAC,EAAE,kBAAkB;;WA4BV,GAAG;;EAGpB;AAED,wBAAgB,OAAO,mCAKtB"}
1
+ {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/Map/components/EarthEngineLayerConfiguration/hooks/data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wDAAwD,CAAC;AAS5F,wBAAgB,cAAc,CAC7B,SAAS,EAAE,OAAO,EAClB,MAAM,CAAC,EAAE,kBAAkB;;WA4BV,GAAG;;EAGpB;AAED,wBAAgB,OAAO,mCAKtB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hisptz/dhis2-analytics",
3
- "version": "2.1.32",
3
+ "version": "2.1.33",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/esm/index.js",
6
6
  "types": "./dist/types/index.d.ts",
@@ -44,6 +44,7 @@
44
44
  "react-dom": "^18.3.1",
45
45
  "react-error-boundary": "^4.0.12",
46
46
  "react-hook-form": "^7.43.9",
47
+ "react-query": "^3.39.3",
47
48
  "styled-jsx": "^5.1.2",
48
49
  "tsup": "^8.4.0",
49
50
  "typescript": "^5.3.3",
@@ -76,8 +77,8 @@
76
77
  "react-to-print": "^3.0.1",
77
78
  "screenfull": "^6.0.2",
78
79
  "xlsx": "^0.18.5",
79
- "@hisptz/dhis2-ui": "2.0.51",
80
- "@hisptz/dhis2-utils": "2.0.19"
80
+ "@hisptz/dhis2-utils": "2.0.19",
81
+ "@hisptz/dhis2-ui": "2.0.51"
81
82
  },
82
83
  "peerDependencies": {
83
84
  "classnames": "^2",