@hisptz/dhis2-analytics 2.1.22 → 2.1.24

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.
Files changed (18) hide show
  1. package/dist/components/Map/DHIS2Map.js +2 -4
  2. package/dist/components/Map/DHIS2Map.js.map +1 -1
  3. package/dist/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfiguration.js +1 -1
  4. package/dist/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfiguration.js.map +1 -1
  5. package/dist/components/Map/components/EarthEngineLayerConfiguration/hooks/data.js +1 -1
  6. package/dist/components/Map/components/EarthEngineLayerConfiguration/hooks/data.js.map +1 -1
  7. package/dist/components/Map/components/MapLayer/components/GoogleEngineLayer/index.js +1 -1
  8. package/dist/components/Map/components/MapLayer/components/GoogleEngineLayer/index.js.map +1 -1
  9. package/dist/esm/components/Map/DHIS2Map.js +2 -4
  10. package/dist/esm/components/Map/DHIS2Map.js.map +1 -1
  11. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfiguration.js +1 -1
  12. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfiguration.js.map +1 -1
  13. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/hooks/data.js +1 -1
  14. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/hooks/data.js.map +1 -1
  15. package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/index.js +1 -1
  16. package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/index.js.map +1 -1
  17. package/dist/types/components/Map/DHIS2Map.d.ts.map +1 -1
  18. package/package.json +5 -4
@@ -4,13 +4,11 @@ var jsxRuntime = require('react/jsx-runtime');
4
4
  var MapArea = require('./components/MapArea/index.js');
5
5
  var MapProvider = require('./components/MapProvider');
6
6
  require('leaflet/dist/leaflet.css');
7
- var reactQuery = require('react-query');
8
7
 
9
8
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
10
9
 
11
10
  var MapArea__default = /*#__PURE__*/_interopDefault(MapArea);
12
11
 
13
- const queryClient = new reactQuery.QueryClient();
14
12
  const MapComponent = ({
15
13
  orgUnitSelection,
16
14
  pointLayer,
@@ -43,7 +41,7 @@ const MapComponent = ({
43
41
  enabled: boundaryLayer?.enabled ?? false
44
42
  }
45
43
  ];
46
- return /* @__PURE__ */ jsxRuntime.jsx(reactQuery.QueryClientProvider, { client: queryClient, children: /* @__PURE__ */ jsxRuntime.jsx(
44
+ return /* @__PURE__ */ jsxRuntime.jsx(
47
45
  MapProvider.MapProvider,
48
46
  {
49
47
  periodSelection,
@@ -70,7 +68,7 @@ const MapComponent = ({
70
68
  key
71
69
  )
72
70
  }
73
- ) });
71
+ );
74
72
  };
75
73
  const DHIS2Map = MapComponent;
76
74
  const Map = DHIS2Map;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/Map/DHIS2Map.tsx"],"names":["QueryClient","jsx","QueryClientProvider","MapProvider","MapArea"],"mappings":";;;;;;;;;;;;AAWA,MAAM,WAAA,GAAc,IAAIA,sBAAY,EAAA;AAEpC,MAAM,eAAe,CAAC;AAAA,EACrB,gBAAA;AAAA,EACA,UAAA;AAAA,EACA,aAAA;AAAA,EACA,cAAA;AAAA,EACA,iBAAA;AAAA,EACA,eAAA;AAAA,EACA,UAAA;AAAA,EACA,GAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,gBAAA;AAAA,EACA;AACD,CAAgB,KAAA;AACf,EAAA,MAAM,oBAA2C,GAAA;AAAA,IAChD;AAAA,MACC,IAAM,EAAA,OAAA;AAAA,MACN,EAAI,EAAA,OAAA;AAAA,MACJ,OAAA,EAAS,YAAY,OAAW,IAAA,KAAA;AAAA,MAChC,GAAG;AAAA;AACJ,GACD;AACA,EAAA,MAAM,uBAAiD,GAAA;AAAA,IACtD;AAAA,MACC,GAAG,aAAA;AAAA,MACH,IAAM,EAAA,SAAA;AAAA,MACN,EAAI,EAAA,UAAA;AAAA,MACJ,OAAA,EAAS,eAAe,OAAW,IAAA;AAAA;AACpC,GACD;AAEA,EACC,uBAAAC,cAAA,CAACC,8BAAoB,EAAA,EAAA,MAAA,EAAQ,WAC5B,EAAA,QAAA,kBAAAD,cAAA;AAAA,IAACE,uBAAA;AAAA,IAAA;AAAA,MACA,eAAA;AAAA,MACA,gBAAA;AAAA,MAEA,QAAA,kBAAAF,cAAA;AAAA,QAACG,wBAAA;AAAA,QAAA;AAAA,UACA,IAAM,EAAA;AAAA,YACL,GAAG;AAAA,WACJ;AAAA,UACA,MAAQ,EAAA;AAAA,YACP,cAAA;AAAA,YACA,iBAAA;AAAA,YACA,cAAgB,EAAA,uBAAA;AAAA,YAChB,WAAa,EAAA;AAAA,WACd;AAAA,UACA,eAAA;AAAA,UACA,gBAAA;AAAA,UACA,OAAA;AAAA,UACA,QAAA;AAAA,UAEA,GAAK,EAAA,MAAA;AAAA,UACL;AAAA,SAAA;AAAA,QAFK;AAAA;AAGN;AAAA,GAEF,EAAA,CAAA;AAEF,CAAA;AACO,MAAM,QAA+B,GAAA;AAKrC,MAAM,GAAM,GAAA","file":"DHIS2Map.js","sourcesContent":["import React from \"react\";\nimport MapArea from \"./components/MapArea/index.js\";\nimport {\n\tCustomBoundaryLayer,\n\tCustomPointLayer,\n} from \"./components/MapLayer/interfaces\";\nimport { MapProvider } from \"./components/MapProvider\";\nimport { MapProps } from \"./interfaces\";\nimport \"leaflet/dist/leaflet.css\";\nimport { QueryClient, QueryClientProvider } from \"react-query\";\n\nconst queryClient = new QueryClient();\n\nconst MapComponent = ({\n\torgUnitSelection,\n\tpointLayer,\n\tboundaryLayer,\n\tthematicLayers,\n\tearthEngineLayers,\n\tperiodSelection,\n\tmapOptions,\n\tkey,\n\tcontrols,\n\tshowPeriodTitle,\n\tlegends,\n\tsetRef,\n\tanalyticsOptions,\n\tbase,\n}: MapProps) => {\n\tconst sanitizedPointLayers: CustomPointLayer[] = [\n\t\t{\n\t\t\ttype: \"point\",\n\t\t\tid: \"point\",\n\t\t\tenabled: pointLayer?.enabled ?? false,\n\t\t\t...pointLayer,\n\t\t},\n\t];\n\tconst sanitizedBoundaryLayers: CustomBoundaryLayer[] = [\n\t\t{\n\t\t\t...boundaryLayer,\n\t\t\ttype: \"overlay\",\n\t\t\tid: \"boundary\",\n\t\t\tenabled: boundaryLayer?.enabled ?? false,\n\t\t},\n\t];\n\n\treturn (\n\t\t<QueryClientProvider client={queryClient}>\n\t\t\t<MapProvider\n\t\t\t\tperiodSelection={periodSelection}\n\t\t\t\torgUnitSelection={orgUnitSelection}\n\t\t\t>\n\t\t\t\t<MapArea\n\t\t\t\t\tbase={{\n\t\t\t\t\t\t...base,\n\t\t\t\t\t}}\n\t\t\t\t\tlayers={{\n\t\t\t\t\t\tthematicLayers,\n\t\t\t\t\t\tearthEngineLayers,\n\t\t\t\t\t\tboundaryLayers: sanitizedBoundaryLayers,\n\t\t\t\t\t\tpointLayers: sanitizedPointLayers,\n\t\t\t\t\t}}\n\t\t\t\t\tshowPeriodTitle={showPeriodTitle}\n\t\t\t\t\tanalyticsOptions={analyticsOptions}\n\t\t\t\t\tlegends={legends}\n\t\t\t\t\tcontrols={controls}\n\t\t\t\t\tkey={key}\n\t\t\t\t\tref={setRef}\n\t\t\t\t\tmapOptions={mapOptions}\n\t\t\t\t/>\n\t\t\t</MapProvider>\n\t\t</QueryClientProvider>\n\t);\n};\nexport const DHIS2Map: React.FC<MapProps> = MapComponent;\n\n/**\n * @deprecated since `v2`. Use `DHIS2Map` instead\n * */\nexport const Map = DHIS2Map;\n"]}
1
+ {"version":3,"sources":["../../../src/components/Map/DHIS2Map.tsx"],"names":["jsx","MapProvider","MapArea"],"mappings":";;;;;;;;;;;AAUA,MAAM,eAAe,CAAC;AAAA,EACrB,gBAAA;AAAA,EACA,UAAA;AAAA,EACA,aAAA;AAAA,EACA,cAAA;AAAA,EACA,iBAAA;AAAA,EACA,eAAA;AAAA,EACA,UAAA;AAAA,EACA,GAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,gBAAA;AAAA,EACA;AACD,CAAgB,KAAA;AACf,EAAA,MAAM,oBAA2C,GAAA;AAAA,IAChD;AAAA,MACC,IAAM,EAAA,OAAA;AAAA,MACN,EAAI,EAAA,OAAA;AAAA,MACJ,OAAA,EAAS,YAAY,OAAW,IAAA,KAAA;AAAA,MAChC,GAAG;AAAA;AACJ,GACD;AACA,EAAA,MAAM,uBAAiD,GAAA;AAAA,IACtD;AAAA,MACC,GAAG,aAAA;AAAA,MACH,IAAM,EAAA,SAAA;AAAA,MACN,EAAI,EAAA,UAAA;AAAA,MACJ,OAAA,EAAS,eAAe,OAAW,IAAA;AAAA;AACpC,GACD;AAEA,EACC,uBAAAA,cAAA;AAAA,IAACC,uBAAA;AAAA,IAAA;AAAA,MACA,eAAA;AAAA,MACA,gBAAA;AAAA,MAEA,QAAA,kBAAAD,cAAA;AAAA,QAACE,wBAAA;AAAA,QAAA;AAAA,UACA,IAAM,EAAA;AAAA,YACL,GAAG;AAAA,WACJ;AAAA,UACA,MAAQ,EAAA;AAAA,YACP,cAAA;AAAA,YACA,iBAAA;AAAA,YACA,cAAgB,EAAA,uBAAA;AAAA,YAChB,WAAa,EAAA;AAAA,WACd;AAAA,UACA,eAAA;AAAA,UACA,gBAAA;AAAA,UACA,OAAA;AAAA,UACA,QAAA;AAAA,UAEA,GAAK,EAAA,MAAA;AAAA,UACL;AAAA,SAAA;AAAA,QAFK;AAAA;AAGN;AAAA,GACD;AAEF,CAAA;AACO,MAAM,QAA+B,GAAA;AAKrC,MAAM,GAAM,GAAA","file":"DHIS2Map.js","sourcesContent":["import React from \"react\";\nimport MapArea from \"./components/MapArea/index.js\";\nimport {\n\tCustomBoundaryLayer,\n\tCustomPointLayer,\n} from \"./components/MapLayer/interfaces\";\nimport { MapProvider } from \"./components/MapProvider\";\nimport { MapProps } from \"./interfaces\";\nimport \"leaflet/dist/leaflet.css\";\n\nconst MapComponent = ({\n\torgUnitSelection,\n\tpointLayer,\n\tboundaryLayer,\n\tthematicLayers,\n\tearthEngineLayers,\n\tperiodSelection,\n\tmapOptions,\n\tkey,\n\tcontrols,\n\tshowPeriodTitle,\n\tlegends,\n\tsetRef,\n\tanalyticsOptions,\n\tbase,\n}: MapProps) => {\n\tconst sanitizedPointLayers: CustomPointLayer[] = [\n\t\t{\n\t\t\ttype: \"point\",\n\t\t\tid: \"point\",\n\t\t\tenabled: pointLayer?.enabled ?? false,\n\t\t\t...pointLayer,\n\t\t},\n\t];\n\tconst sanitizedBoundaryLayers: CustomBoundaryLayer[] = [\n\t\t{\n\t\t\t...boundaryLayer,\n\t\t\ttype: \"overlay\",\n\t\t\tid: \"boundary\",\n\t\t\tenabled: boundaryLayer?.enabled ?? false,\n\t\t},\n\t];\n\n\treturn (\n\t\t<MapProvider\n\t\t\tperiodSelection={periodSelection}\n\t\t\torgUnitSelection={orgUnitSelection}\n\t\t>\n\t\t\t<MapArea\n\t\t\t\tbase={{\n\t\t\t\t\t...base,\n\t\t\t\t}}\n\t\t\t\tlayers={{\n\t\t\t\t\tthematicLayers,\n\t\t\t\t\tearthEngineLayers,\n\t\t\t\t\tboundaryLayers: sanitizedBoundaryLayers,\n\t\t\t\t\tpointLayers: sanitizedPointLayers,\n\t\t\t\t}}\n\t\t\t\tshowPeriodTitle={showPeriodTitle}\n\t\t\t\tanalyticsOptions={analyticsOptions}\n\t\t\t\tlegends={legends}\n\t\t\t\tcontrols={controls}\n\t\t\t\tkey={key}\n\t\t\t\tref={setRef}\n\t\t\t\tmapOptions={mapOptions}\n\t\t\t/>\n\t\t</MapProvider>\n\t);\n};\nexport const DHIS2Map: React.FC<MapProps> = MapComponent;\n\n/**\n * @deprecated since `v2`. Use `DHIS2Map` instead\n * */\nexport const Map = DHIS2Map;\n"]}
@@ -7,7 +7,7 @@ var Name_js = require('./components/Name.js');
7
7
  var TypeField_js = require('./components/TypeField.js');
8
8
  var AggregationSelector_js = require('./components/AggregationSelector.js');
9
9
  var PeriodSelector_js = require('./components/PeriodSelector.js');
10
- var reactQuery = require('react-query');
10
+ var reactQuery = require('@tanstack/react-query');
11
11
 
12
12
  const queryClient = new reactQuery.QueryClient();
13
13
  function EarthEngineLayerConfiguration({
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfiguration.tsx"],"names":["QueryClient","QueryClientProvider","jsx","FormProvider","jsxs","TypeField","Name","AggregationSelector","PeriodSelector","StylesConfig"],"mappings":";;;;;;;;;;;AAUA,MAAM,WAAA,GAAc,IAAIA,sBAAY,EAAA;AAS7B,SAAS,6BAA8B,CAAA;AAAA,EAC7C,IAAA;AAAA,EACA;AACD,CAAuC,EAAA;AACtC,EAAA,sCACEC,8BAAoB,EAAA,EAAA,MAAA,EAAQ,aAC5B,QAAC,kBAAAC,cAAA,CAAAC,0BAAA,EAAA,EAAc,GAAG,IACjB,EAAA,QAAA,kBAAAC,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,KAAO,EAAA;AAAA,QACN,OAAS,EAAA,MAAA;AAAA,QACT,aAAe,EAAA,QAAA;AAAA,QACf,GAAK,EAAA;AAAA,OACN;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAF,cAAA,CAACG,0BAAU,QAAoB,EAAA,CAAA;AAAA,uCAC9BC,YAAK,EAAA,EAAA,CAAA;AAAA,uCACLC,0CAAoB,EAAA,EAAA,CAAA;AAAA,uCACpBC,gCAAe,EAAA,EAAA,CAAA;AAAA,uCACfC,4BAAa,EAAA,EAAA;AAAA;AAAA;AAAA,KAEhB,CACD,EAAA,CAAA;AAEF","file":"EarthEngineLayerConfiguration.js","sourcesContent":["import { EarthEngineLayerConfig } from \"../MapLayer/interfaces\";\nimport { FormProvider, UseFormReturn } from \"react-hook-form\";\nimport React from \"react\";\nimport { StylesConfig } from \"./components/StylesConfig.js\";\nimport { Name } from \"./components/Name.js\";\nimport { TypeField } from \"./components/TypeField.js\";\nimport { AggregationSelector } from \"./components/AggregationSelector.js\";\nimport { PeriodSelector } from \"./components/PeriodSelector.js\";\nimport { QueryClient, QueryClientProvider } from \"react-query\";\n\nconst queryClient = new QueryClient();\n\nexport interface EarthEngineLayerConfigurationProps {\n\tform: UseFormReturn<EarthEngineLayerConfig>;\n\texcluded?: string[];\n\n\t[key: string]: any;\n}\n\nexport function EarthEngineLayerConfiguration({\n\tform,\n\texcluded,\n}: EarthEngineLayerConfigurationProps) {\n\treturn (\n\t\t<QueryClientProvider client={queryClient}>\n\t\t\t<FormProvider {...form}>\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\t\tflexDirection: \"column\",\n\t\t\t\t\t\tgap: 16,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<TypeField excluded={excluded} />\n\t\t\t\t\t<Name />\n\t\t\t\t\t<AggregationSelector />\n\t\t\t\t\t<PeriodSelector />\n\t\t\t\t\t<StylesConfig />\n\t\t\t\t</div>\n\t\t\t</FormProvider>\n\t\t</QueryClientProvider>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../src/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfiguration.tsx"],"names":["QueryClient","QueryClientProvider","jsx","FormProvider","jsxs","TypeField","Name","AggregationSelector","PeriodSelector","StylesConfig"],"mappings":";;;;;;;;;;;AAUA,MAAM,WAAA,GAAc,IAAIA,sBAAY,EAAA;AAS7B,SAAS,6BAA8B,CAAA;AAAA,EAC7C,IAAA;AAAA,EACA;AACD,CAAuC,EAAA;AACtC,EAAA,sCACEC,8BAAoB,EAAA,EAAA,MAAA,EAAQ,aAC5B,QAAC,kBAAAC,cAAA,CAAAC,0BAAA,EAAA,EAAc,GAAG,IACjB,EAAA,QAAA,kBAAAC,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,KAAO,EAAA;AAAA,QACN,OAAS,EAAA,MAAA;AAAA,QACT,aAAe,EAAA,QAAA;AAAA,QACf,GAAK,EAAA;AAAA,OACN;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAF,cAAA,CAACG,0BAAU,QAAoB,EAAA,CAAA;AAAA,uCAC9BC,YAAK,EAAA,EAAA,CAAA;AAAA,uCACLC,0CAAoB,EAAA,EAAA,CAAA;AAAA,uCACpBC,gCAAe,EAAA,EAAA,CAAA;AAAA,uCACfC,4BAAa,EAAA,EAAA;AAAA;AAAA;AAAA,KAEhB,CACD,EAAA,CAAA;AAEF","file":"EarthEngineLayerConfiguration.js","sourcesContent":["import { EarthEngineLayerConfig } from \"../MapLayer/interfaces\";\nimport { FormProvider, UseFormReturn } from \"react-hook-form\";\nimport React from \"react\";\nimport { StylesConfig } from \"./components/StylesConfig.js\";\nimport { Name } from \"./components/Name.js\";\nimport { TypeField } from \"./components/TypeField.js\";\nimport { AggregationSelector } from \"./components/AggregationSelector.js\";\nimport { PeriodSelector } from \"./components/PeriodSelector.js\";\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\n\nconst queryClient = new QueryClient();\n\nexport interface EarthEngineLayerConfigurationProps {\n\tform: UseFormReturn<EarthEngineLayerConfig>;\n\texcluded?: string[];\n\n\t[key: string]: any;\n}\n\nexport function EarthEngineLayerConfiguration({\n\tform,\n\texcluded,\n}: EarthEngineLayerConfigurationProps) {\n\treturn (\n\t\t<QueryClientProvider client={queryClient}>\n\t\t\t<FormProvider {...form}>\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\t\tflexDirection: \"column\",\n\t\t\t\t\t\tgap: 16,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<TypeField excluded={excluded} />\n\t\t\t\t\t<Name />\n\t\t\t\t\t<AggregationSelector />\n\t\t\t\t\t<PeriodSelector />\n\t\t\t\t\t<StylesConfig />\n\t\t\t\t</div>\n\t\t\t</FormProvider>\n\t\t</QueryClientProvider>\n\t);\n}\n"]}
@@ -2,7 +2,7 @@
2
2
 
3
3
  var index_js = require('../../MapLayer/components/GoogleEngineLayer/hooks/index.js');
4
4
  var engine_js = require('../../MapLayer/components/GoogleEngineLayer/services/engine.js');
5
- var reactQuery = require('react-query');
5
+ var reactQuery = require('@tanstack/react-query');
6
6
  var react = require('react');
7
7
  var reactHookForm = require('react-hook-form');
8
8
  var lodash = require('lodash');
@@ -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,MACC,EAAA;AACD,EAAM,MAAA,EAAE,OAAQ,EAAA,GAAIA,6BAAqB,EAAA;AAEzC,EAAA,eAAe,OAAU,GAAA;AACxB,IAAA,IAAI,MAAQ,EAAA;AACX,MAAM,MAAA,SAAA,GAAY,MAAM,OAAQ,EAAA;AAChC,MAAA,MAAMC,qBAAY,CAAA,QAAA,CAAS,SAAU,CAAA,KAAA,EAAO,OAAO,CAAA;AACnD,MAAM,MAAA,MAAA,GAAS,IAAIA,qBAAY,CAAA;AAAA,QAC9B,OAAS,EAAA;AAAA,OACT,CAAA;AACD,MAAA,OAAO,OAAO,SAAU,EAAA;AAAA;AACzB;AAGD,EAAM,MAAA,EAAE,MAAM,KAAO,EAAA,SAAA,KAAcC,mBAAS,CAAA,CAAC,MAAM,CAAA,EAAG,OAAO,CAAA;AAE7D,EAAM,MAAA,OAAA,GAAUC,cAAQ,MAAM;AAC7B,IAAA,MAAM,WAAY,IAAc,EAAA,QAAA;AAChC,IAAO,OAAA,QAAA,EAAU,GAAI,CAAA,CAAC,OAAiB,KAAA;AACtC,MAAA,OAAO,IAAI,IAAA;AAAA,QACV,OAAA,EAAS,WAAW,mBAAmB;AAAA,SACrC,WAAY,EAAA;AAAA,KACf,CAAA;AAAA,GACF,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAO,OAAA;AAAA,IACN,OAAS,EAAA,SAAA;AAAA,IACT,KAAA;AAAA,IACA;AAAA,GACD;AACD;AAEO,SAAS,OAAU,GAAA;AACzB,EAAA,MAAM,OAAOC,sBAAS,CAAA;AAAA,IACrB,IAAM,EAAA;AAAA,GACN,CAAA;AACD,EAAA,OAAOC,WAAK,CAAAC,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 \"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,MACC,EAAA;AACD,EAAM,MAAA,EAAE,OAAQ,EAAA,GAAIA,6BAAqB,EAAA;AAEzC,EAAA,eAAe,OAAU,GAAA;AACxB,IAAA,IAAI,MAAQ,EAAA;AACX,MAAM,MAAA,SAAA,GAAY,MAAM,OAAQ,EAAA;AAChC,MAAA,MAAMC,qBAAY,CAAA,QAAA,CAAS,SAAU,CAAA,KAAA,EAAO,OAAO,CAAA;AACnD,MAAM,MAAA,MAAA,GAAS,IAAIA,qBAAY,CAAA;AAAA,QAC9B,OAAS,EAAA;AAAA,OACT,CAAA;AACD,MAAA,OAAO,OAAO,SAAU,EAAA;AAAA;AACzB;AAGD,EAAM,MAAA,EAAE,MAAM,KAAO,EAAA,SAAA,KAAcC,mBAAS,CAAA,CAAC,MAAM,CAAA,EAAG,OAAO,CAAA;AAE7D,EAAM,MAAA,OAAA,GAAUC,cAAQ,MAAM;AAC7B,IAAA,MAAM,WAAY,IAAc,EAAA,QAAA;AAChC,IAAO,OAAA,QAAA,EAAU,GAAI,CAAA,CAAC,OAAiB,KAAA;AACtC,MAAA,OAAO,IAAI,IAAA;AAAA,QACV,OAAA,EAAS,WAAW,mBAAmB;AAAA,SACrC,WAAY,EAAA;AAAA,KACf,CAAA;AAAA,GACF,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAO,OAAA;AAAA,IACN,OAAS,EAAA,SAAA;AAAA,IACT,KAAA;AAAA,IACA;AAAA,GACD;AACD;AAEO,SAAS,OAAU,GAAA;AACzB,EAAA,MAAM,OAAOC,sBAAS,CAAA;AAAA,IACrB,IAAM,EAAA;AAAA,GACN,CAAA;AACD,EAAA,OAAOC,WAAK,CAAAC,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"]}
@@ -8,7 +8,7 @@ var useBoundaryData_js = require('../BoundaryLayer/hooks/useBoundaryData.js');
8
8
  var useGoogleEngineLayer = require('./hooks/index.js');
9
9
  var map_js = require('../../../../utils/map.js');
10
10
  var index_js = require('../BoundaryLayer/index.js');
11
- var reactQuery = require('react-query');
11
+ var reactQuery = require('@tanstack/react-query');
12
12
  var ui = require('@dhis2/ui');
13
13
  var i18n = require('@dhis2/d2-i18n');
14
14
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/components/Map/components/MapLayer/components/GoogleEngineLayer/index.tsx"],"names":["find","jsxs","jsx","capitalize","head","useMemo","isEmpty","sortBy","Center","CircularLoader","Divider","i18n","useRef","GeoJSON","highlightFeature","highlightStyle","resetHighlight","defaultStyle","Tooltip","Popup","useGoogleEngineLayer","useQuery","useBoundaryData","LayersControl","LayerGroup","TileLayer"],"mappings":"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","file":"index.js","sourcesContent":["import { capitalize, find, head, isEmpty, sortBy } from \"lodash\";\nimport React, { useMemo, useRef } from \"react\";\nimport {\n\tGeoJSON,\n\tLayerGroup,\n\tLayersControl,\n\tPopup,\n\tTileLayer,\n\tTooltip,\n} from \"react-leaflet\";\nimport { useBoundaryData } from \"../BoundaryLayer/hooks/useBoundaryData.js\";\nimport useGoogleEngineLayer from \"./hooks/index.js\";\nimport { MapOrgUnit } from \"../../../../interfaces/index.js\";\nimport { highlightFeature, resetHighlight } from \"../../../../utils/map.js\";\nimport { defaultStyle, highlightStyle } from \"../BoundaryLayer/index.js\";\nimport { useQuery } from \"react-query\";\nimport { Center, CircularLoader, Divider } from \"@dhis2/ui\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { CustomGoogleEngineLayer } from \"../../interfaces/index.js\";\n\nfunction formatValues(value: number): string {\n\treturn Intl.NumberFormat(\"en-GB\", { maximumFractionDigits: 2 }).format(\n\t\tvalue,\n\t);\n}\n\nfunction getUnit(unit?: string) {\n\tif (unit === \"percentage\") {\n\t\treturn \"%\";\n\t}\n}\n\nfunction Legend({\n\theader,\n\tlegends,\n\tvalue,\n\tunit,\n}: {\n\theader: number;\n\tlegends: { id: number | string; color: string; name: string }[];\n\tvalue: number;\n\tunit?: string;\n}) {\n\tconst legend = find(legends, [\"id\", header]);\n\n\treturn (\n\t\t<div className=\"row gap-8 space-between\">\n\t\t\t<div className=\"row gap-8\">\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"legend-item-color\"\n\t\t\t\t\tstyle={{ backgroundColor: legend?.color }}\n\t\t\t\t/>\n\t\t\t\t<div>{legend?.name}</div>\n\t\t\t</div>\n\t\t\t<span>\n\t\t\t\t{formatValues(value)}\n\t\t\t\t{getUnit(unit)}\n\t\t\t</span>\n\t\t</div>\n\t);\n}\n\nfunction AggregationView({ header, value }: { header: string; value: number }) {\n\treturn (\n\t\t<div className=\"row space-between\">\n\t\t\t<span>{capitalize(header.toString())}</span>\n\t\t\t<span>{formatValues(value)}</span>\n\t\t</div>\n\t);\n}\n\nfunction EarthEnginePopup({\n\tlayer,\n\torgUnit,\n\tloading,\n\terror,\n}: {\n\tlayer?: CustomGoogleEngineLayer;\n\torgUnit: MapOrgUnit;\n\tloading: boolean;\n\terror?: string;\n}) {\n\tconst engine = layer?.engine;\n\tconst legends = layer?.engine?.options?.legend?.items;\n\tconst data = engine?.getAggregation(orgUnit)?.data;\n\tconst unit =\n\t\tlayer?.engine?.options?.unit ??\n\t\thead(layer?.engine?.options.aggregations);\n\n\tconst aggregations = useMemo(() => {\n\t\tif (!isEmpty(legends)) {\n\t\t\treturn sortBy(\n\t\t\t\tObject.keys(data ?? {}).map((key) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: parseInt(key),\n\t\t\t\t\t\tvalue: data[key],\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t\t[\"value\"],\n\t\t\t).reverse();\n\t\t}\n\t\treturn data ?? {};\n\t}, [data]);\n\n\tif (loading) {\n\t\treturn (\n\t\t\t<div style={{ width: 200, height: 200 }}>\n\t\t\t\t<Center>\n\t\t\t\t\t<CircularLoader extrasmall />\n\t\t\t\t</Center>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif (error) {\n\t\treturn (\n\t\t\t<div>\n\t\t\t\t<h3 style={{ margin: \"0\" }}>{orgUnit.name}</h3>\n\t\t\t\t<Divider margin={\"0\"} />\n\t\t\t\t<div className=\"column gap-8\">\n\t\t\t\t\t<div className=\"column\">\n\t\t\t\t\t\t<b>{layer?.options?.name}</b>\n\t\t\t\t\t\t<div>{layer?.options?.unit}</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"column\">\n\t\t\t\t\t\t<p>{i18n.t(\"Could not get aggregate data\")}</p>\n\t\t\t\t\t\t<p>{error}</p>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div>\n\t\t\t<h3 style={{ margin: \"0\" }}>{orgUnit.name}</h3>\n\t\t\t<Divider margin={\"0\"} />\n\t\t\t<div className=\"column gap-8\">\n\t\t\t\t<div className=\"column\">\n\t\t\t\t\t<b>{layer?.options?.name}</b>\n\t\t\t\t\t<div>{layer?.options?.unit ?? unit}</div>\n\t\t\t\t</div>\n\t\t\t\t{data && (\n\t\t\t\t\t<div className=\"column\">\n\t\t\t\t\t\t{Array.isArray(aggregations)\n\t\t\t\t\t\t\t? aggregations?.map(({ id, value }) => (\n\t\t\t\t\t\t\t\t\t<Legend\n\t\t\t\t\t\t\t\t\t\tkey={`${orgUnit.id}-legend-details-${id}`}\n\t\t\t\t\t\t\t\t\t\tlegends={legends ?? []}\n\t\t\t\t\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\t\t\t\t\theader={id}\n\t\t\t\t\t\t\t\t\t\tunit={unit}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t))\n\t\t\t\t\t\t\t: Object.keys(aggregations)?.map((key) => (\n\t\t\t\t\t\t\t\t\t<AggregationView\n\t\t\t\t\t\t\t\t\t\tkey={`${orgUnit.id}-aggregate-details-${key}`}\n\t\t\t\t\t\t\t\t\t\theader={key}\n\t\t\t\t\t\t\t\t\t\tvalue={aggregations[key]}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nfunction EarthEngineArea({\n\tarea,\n\tlayer,\n\tloading,\n\terror,\n}: {\n\tarea: MapOrgUnit;\n\tlayer?: CustomGoogleEngineLayer;\n\tloading: boolean;\n\terror?: string;\n}) {\n\tconst ref = useRef<any>();\n\n\treturn (\n\t\t<GeoJSON\n\t\t\tref={ref}\n\t\t\tdata={area.geoJSON}\n\t\t\tinteractive\n\t\t\teventHandlers={{\n\t\t\t\tmouseover: (e) => highlightFeature(e, highlightStyle),\n\t\t\t\tmouseout: (e) => resetHighlight(e, defaultStyle),\n\t\t\t}}\n\t\t\tkey={`${area.id}-polygon`}\n\t\t\tpathOptions={defaultStyle}\n\t\t>\n\t\t\t<Tooltip>{area.name}</Tooltip>\n\t\t\t<Popup minWidth={100}>\n\t\t\t\t<EarthEnginePopup\n\t\t\t\t\terror={error}\n\t\t\t\t\tlayer={layer}\n\t\t\t\t\torgUnit={area}\n\t\t\t\t\tloading={loading}\n\t\t\t\t/>\n\t\t\t</Popup>\n\t\t</GeoJSON>\n\t);\n}\n\nexport default function GoogleEngineLayer({ layerId }: { layerId: string }) {\n\tconst layer = useGoogleEngineLayer(layerId);\n\tconst { name, type, enabled, url, options, engine } = layer ?? {};\n\tconst { isLoading: loadingAggregateData, error } = useQuery(\n\t\t[engine],\n\t\tasync () => engine?.getAggregations(),\n\t\t{\n\t\t\tsuspense: false,\n\t\t},\n\t);\n\tconst orgUnits = useBoundaryData();\n\n\tif (!url) return null;\n\n\treturn (\n\t\t<LayersControl.Overlay\n\t\t\tchecked={enabled}\n\t\t\tname={name ?? capitalize(type)}\n\t\t>\n\t\t\t<LayerGroup>\n\t\t\t\t<TileLayer id={options?.id} url={url} />\n\t\t\t\t{orgUnits?.map((area: MapOrgUnit) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<EarthEngineArea\n\t\t\t\t\t\t\terror={\n\t\t\t\t\t\t\t\t(error as any)?.toString() as string | undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tloading={loadingAggregateData}\n\t\t\t\t\t\t\tkey={`${area.id}-polygon`}\n\t\t\t\t\t\t\tarea={area}\n\t\t\t\t\t\t\tlayer={layer}\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</LayerGroup>\n\t\t</LayersControl.Overlay>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../../src/components/Map/components/MapLayer/components/GoogleEngineLayer/index.tsx"],"names":["find","jsxs","jsx","capitalize","head","useMemo","isEmpty","sortBy","Center","CircularLoader","Divider","i18n","useRef","GeoJSON","highlightFeature","highlightStyle","resetHighlight","defaultStyle","Tooltip","Popup","useGoogleEngineLayer","useQuery","useBoundaryData","LayersControl","LayerGroup","TileLayer"],"mappings":"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","file":"index.js","sourcesContent":["import { capitalize, find, head, isEmpty, sortBy } from \"lodash\";\nimport React, { useMemo, useRef } from \"react\";\nimport {\n\tGeoJSON,\n\tLayerGroup,\n\tLayersControl,\n\tPopup,\n\tTileLayer,\n\tTooltip,\n} from \"react-leaflet\";\nimport { useBoundaryData } from \"../BoundaryLayer/hooks/useBoundaryData.js\";\nimport useGoogleEngineLayer from \"./hooks/index.js\";\nimport { MapOrgUnit } from \"../../../../interfaces/index.js\";\nimport { highlightFeature, resetHighlight } from \"../../../../utils/map.js\";\nimport { defaultStyle, highlightStyle } from \"../BoundaryLayer/index.js\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport { Center, CircularLoader, Divider } from \"@dhis2/ui\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { CustomGoogleEngineLayer } from \"../../interfaces/index.js\";\n\nfunction formatValues(value: number): string {\n\treturn Intl.NumberFormat(\"en-GB\", { maximumFractionDigits: 2 }).format(\n\t\tvalue,\n\t);\n}\n\nfunction getUnit(unit?: string) {\n\tif (unit === \"percentage\") {\n\t\treturn \"%\";\n\t}\n}\n\nfunction Legend({\n\theader,\n\tlegends,\n\tvalue,\n\tunit,\n}: {\n\theader: number;\n\tlegends: { id: number | string; color: string; name: string }[];\n\tvalue: number;\n\tunit?: string;\n}) {\n\tconst legend = find(legends, [\"id\", header]);\n\n\treturn (\n\t\t<div className=\"row gap-8 space-between\">\n\t\t\t<div className=\"row gap-8\">\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"legend-item-color\"\n\t\t\t\t\tstyle={{ backgroundColor: legend?.color }}\n\t\t\t\t/>\n\t\t\t\t<div>{legend?.name}</div>\n\t\t\t</div>\n\t\t\t<span>\n\t\t\t\t{formatValues(value)}\n\t\t\t\t{getUnit(unit)}\n\t\t\t</span>\n\t\t</div>\n\t);\n}\n\nfunction AggregationView({ header, value }: { header: string; value: number }) {\n\treturn (\n\t\t<div className=\"row space-between\">\n\t\t\t<span>{capitalize(header.toString())}</span>\n\t\t\t<span>{formatValues(value)}</span>\n\t\t</div>\n\t);\n}\n\nfunction EarthEnginePopup({\n\tlayer,\n\torgUnit,\n\tloading,\n\terror,\n}: {\n\tlayer?: CustomGoogleEngineLayer;\n\torgUnit: MapOrgUnit;\n\tloading: boolean;\n\terror?: string;\n}) {\n\tconst engine = layer?.engine;\n\tconst legends = layer?.engine?.options?.legend?.items;\n\tconst data = engine?.getAggregation(orgUnit)?.data;\n\tconst unit =\n\t\tlayer?.engine?.options?.unit ??\n\t\thead(layer?.engine?.options.aggregations);\n\n\tconst aggregations = useMemo(() => {\n\t\tif (!isEmpty(legends)) {\n\t\t\treturn sortBy(\n\t\t\t\tObject.keys(data ?? {}).map((key) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: parseInt(key),\n\t\t\t\t\t\tvalue: data[key],\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t\t[\"value\"],\n\t\t\t).reverse();\n\t\t}\n\t\treturn data ?? {};\n\t}, [data]);\n\n\tif (loading) {\n\t\treturn (\n\t\t\t<div style={{ width: 200, height: 200 }}>\n\t\t\t\t<Center>\n\t\t\t\t\t<CircularLoader extrasmall />\n\t\t\t\t</Center>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif (error) {\n\t\treturn (\n\t\t\t<div>\n\t\t\t\t<h3 style={{ margin: \"0\" }}>{orgUnit.name}</h3>\n\t\t\t\t<Divider margin={\"0\"} />\n\t\t\t\t<div className=\"column gap-8\">\n\t\t\t\t\t<div className=\"column\">\n\t\t\t\t\t\t<b>{layer?.options?.name}</b>\n\t\t\t\t\t\t<div>{layer?.options?.unit}</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"column\">\n\t\t\t\t\t\t<p>{i18n.t(\"Could not get aggregate data\")}</p>\n\t\t\t\t\t\t<p>{error}</p>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div>\n\t\t\t<h3 style={{ margin: \"0\" }}>{orgUnit.name}</h3>\n\t\t\t<Divider margin={\"0\"} />\n\t\t\t<div className=\"column gap-8\">\n\t\t\t\t<div className=\"column\">\n\t\t\t\t\t<b>{layer?.options?.name}</b>\n\t\t\t\t\t<div>{layer?.options?.unit ?? unit}</div>\n\t\t\t\t</div>\n\t\t\t\t{data && (\n\t\t\t\t\t<div className=\"column\">\n\t\t\t\t\t\t{Array.isArray(aggregations)\n\t\t\t\t\t\t\t? aggregations?.map(({ id, value }) => (\n\t\t\t\t\t\t\t\t\t<Legend\n\t\t\t\t\t\t\t\t\t\tkey={`${orgUnit.id}-legend-details-${id}`}\n\t\t\t\t\t\t\t\t\t\tlegends={legends ?? []}\n\t\t\t\t\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\t\t\t\t\theader={id}\n\t\t\t\t\t\t\t\t\t\tunit={unit}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t))\n\t\t\t\t\t\t\t: Object.keys(aggregations)?.map((key) => (\n\t\t\t\t\t\t\t\t\t<AggregationView\n\t\t\t\t\t\t\t\t\t\tkey={`${orgUnit.id}-aggregate-details-${key}`}\n\t\t\t\t\t\t\t\t\t\theader={key}\n\t\t\t\t\t\t\t\t\t\tvalue={aggregations[key]}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nfunction EarthEngineArea({\n\tarea,\n\tlayer,\n\tloading,\n\terror,\n}: {\n\tarea: MapOrgUnit;\n\tlayer?: CustomGoogleEngineLayer;\n\tloading: boolean;\n\terror?: string;\n}) {\n\tconst ref = useRef<any>();\n\n\treturn (\n\t\t<GeoJSON\n\t\t\tref={ref}\n\t\t\tdata={area.geoJSON}\n\t\t\tinteractive\n\t\t\teventHandlers={{\n\t\t\t\tmouseover: (e) => highlightFeature(e, highlightStyle),\n\t\t\t\tmouseout: (e) => resetHighlight(e, defaultStyle),\n\t\t\t}}\n\t\t\tkey={`${area.id}-polygon`}\n\t\t\tpathOptions={defaultStyle}\n\t\t>\n\t\t\t<Tooltip>{area.name}</Tooltip>\n\t\t\t<Popup minWidth={100}>\n\t\t\t\t<EarthEnginePopup\n\t\t\t\t\terror={error}\n\t\t\t\t\tlayer={layer}\n\t\t\t\t\torgUnit={area}\n\t\t\t\t\tloading={loading}\n\t\t\t\t/>\n\t\t\t</Popup>\n\t\t</GeoJSON>\n\t);\n}\n\nexport default function GoogleEngineLayer({ layerId }: { layerId: string }) {\n\tconst layer = useGoogleEngineLayer(layerId);\n\tconst { name, type, enabled, url, options, engine } = layer ?? {};\n\tconst { isLoading: loadingAggregateData, error } = useQuery(\n\t\t[engine],\n\t\tasync () => engine?.getAggregations(),\n\t\t{\n\t\t\tsuspense: false,\n\t\t},\n\t);\n\tconst orgUnits = useBoundaryData();\n\n\tif (!url) return null;\n\n\treturn (\n\t\t<LayersControl.Overlay\n\t\t\tchecked={enabled}\n\t\t\tname={name ?? capitalize(type)}\n\t\t>\n\t\t\t<LayerGroup>\n\t\t\t\t<TileLayer id={options?.id} url={url} />\n\t\t\t\t{orgUnits?.map((area: MapOrgUnit) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<EarthEngineArea\n\t\t\t\t\t\t\terror={\n\t\t\t\t\t\t\t\t(error as any)?.toString() as string | undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tloading={loadingAggregateData}\n\t\t\t\t\t\t\tkey={`${area.id}-polygon`}\n\t\t\t\t\t\t\tarea={area}\n\t\t\t\t\t\t\tlayer={layer}\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</LayerGroup>\n\t\t</LayersControl.Overlay>\n\t);\n}\n"]}
@@ -2,9 +2,7 @@ import { jsx } from 'react/jsx-runtime';
2
2
  import MapArea from './components/MapArea/index.js';
3
3
  import { MapProvider } from './components/MapProvider';
4
4
  import 'leaflet/dist/leaflet.css';
5
- import { QueryClient, QueryClientProvider } from 'react-query';
6
5
 
7
- const queryClient = new QueryClient();
8
6
  const MapComponent = ({
9
7
  orgUnitSelection,
10
8
  pointLayer,
@@ -37,7 +35,7 @@ const MapComponent = ({
37
35
  enabled: boundaryLayer?.enabled ?? false
38
36
  }
39
37
  ];
40
- return /* @__PURE__ */ jsx(QueryClientProvider, { client: queryClient, children: /* @__PURE__ */ jsx(
38
+ return /* @__PURE__ */ jsx(
41
39
  MapProvider,
42
40
  {
43
41
  periodSelection,
@@ -64,7 +62,7 @@ const MapComponent = ({
64
62
  key
65
63
  )
66
64
  }
67
- ) });
65
+ );
68
66
  };
69
67
  const DHIS2Map = MapComponent;
70
68
  const Map = DHIS2Map;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/Map/DHIS2Map.tsx"],"names":[],"mappings":";;;;;;AAWA,MAAM,WAAA,GAAc,IAAI,WAAY,EAAA;AAEpC,MAAM,eAAe,CAAC;AAAA,EACrB,gBAAA;AAAA,EACA,UAAA;AAAA,EACA,aAAA;AAAA,EACA,cAAA;AAAA,EACA,iBAAA;AAAA,EACA,eAAA;AAAA,EACA,UAAA;AAAA,EACA,GAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,gBAAA;AAAA,EACA;AACD,CAAgB,KAAA;AACf,EAAA,MAAM,oBAA2C,GAAA;AAAA,IAChD;AAAA,MACC,IAAM,EAAA,OAAA;AAAA,MACN,EAAI,EAAA,OAAA;AAAA,MACJ,OAAA,EAAS,YAAY,OAAW,IAAA,KAAA;AAAA,MAChC,GAAG;AAAA;AACJ,GACD;AACA,EAAA,MAAM,uBAAiD,GAAA;AAAA,IACtD;AAAA,MACC,GAAG,aAAA;AAAA,MACH,IAAM,EAAA,SAAA;AAAA,MACN,EAAI,EAAA,UAAA;AAAA,MACJ,OAAA,EAAS,eAAe,OAAW,IAAA;AAAA;AACpC,GACD;AAEA,EACC,uBAAA,GAAA,CAAC,mBAAoB,EAAA,EAAA,MAAA,EAAQ,WAC5B,EAAA,QAAA,kBAAA,GAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACA,eAAA;AAAA,MACA,gBAAA;AAAA,MAEA,QAAA,kBAAA,GAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACA,IAAM,EAAA;AAAA,YACL,GAAG;AAAA,WACJ;AAAA,UACA,MAAQ,EAAA;AAAA,YACP,cAAA;AAAA,YACA,iBAAA;AAAA,YACA,cAAgB,EAAA,uBAAA;AAAA,YAChB,WAAa,EAAA;AAAA,WACd;AAAA,UACA,eAAA;AAAA,UACA,gBAAA;AAAA,UACA,OAAA;AAAA,UACA,QAAA;AAAA,UAEA,GAAK,EAAA,MAAA;AAAA,UACL;AAAA,SAAA;AAAA,QAFK;AAAA;AAGN;AAAA,GAEF,EAAA,CAAA;AAEF,CAAA;AACO,MAAM,QAA+B,GAAA;AAKrC,MAAM,GAAM,GAAA","file":"DHIS2Map.js","sourcesContent":["import React from \"react\";\nimport MapArea from \"./components/MapArea/index.js\";\nimport {\n\tCustomBoundaryLayer,\n\tCustomPointLayer,\n} from \"./components/MapLayer/interfaces\";\nimport { MapProvider } from \"./components/MapProvider\";\nimport { MapProps } from \"./interfaces\";\nimport \"leaflet/dist/leaflet.css\";\nimport { QueryClient, QueryClientProvider } from \"react-query\";\n\nconst queryClient = new QueryClient();\n\nconst MapComponent = ({\n\torgUnitSelection,\n\tpointLayer,\n\tboundaryLayer,\n\tthematicLayers,\n\tearthEngineLayers,\n\tperiodSelection,\n\tmapOptions,\n\tkey,\n\tcontrols,\n\tshowPeriodTitle,\n\tlegends,\n\tsetRef,\n\tanalyticsOptions,\n\tbase,\n}: MapProps) => {\n\tconst sanitizedPointLayers: CustomPointLayer[] = [\n\t\t{\n\t\t\ttype: \"point\",\n\t\t\tid: \"point\",\n\t\t\tenabled: pointLayer?.enabled ?? false,\n\t\t\t...pointLayer,\n\t\t},\n\t];\n\tconst sanitizedBoundaryLayers: CustomBoundaryLayer[] = [\n\t\t{\n\t\t\t...boundaryLayer,\n\t\t\ttype: \"overlay\",\n\t\t\tid: \"boundary\",\n\t\t\tenabled: boundaryLayer?.enabled ?? false,\n\t\t},\n\t];\n\n\treturn (\n\t\t<QueryClientProvider client={queryClient}>\n\t\t\t<MapProvider\n\t\t\t\tperiodSelection={periodSelection}\n\t\t\t\torgUnitSelection={orgUnitSelection}\n\t\t\t>\n\t\t\t\t<MapArea\n\t\t\t\t\tbase={{\n\t\t\t\t\t\t...base,\n\t\t\t\t\t}}\n\t\t\t\t\tlayers={{\n\t\t\t\t\t\tthematicLayers,\n\t\t\t\t\t\tearthEngineLayers,\n\t\t\t\t\t\tboundaryLayers: sanitizedBoundaryLayers,\n\t\t\t\t\t\tpointLayers: sanitizedPointLayers,\n\t\t\t\t\t}}\n\t\t\t\t\tshowPeriodTitle={showPeriodTitle}\n\t\t\t\t\tanalyticsOptions={analyticsOptions}\n\t\t\t\t\tlegends={legends}\n\t\t\t\t\tcontrols={controls}\n\t\t\t\t\tkey={key}\n\t\t\t\t\tref={setRef}\n\t\t\t\t\tmapOptions={mapOptions}\n\t\t\t\t/>\n\t\t\t</MapProvider>\n\t\t</QueryClientProvider>\n\t);\n};\nexport const DHIS2Map: React.FC<MapProps> = MapComponent;\n\n/**\n * @deprecated since `v2`. Use `DHIS2Map` instead\n * */\nexport const Map = DHIS2Map;\n"]}
1
+ {"version":3,"sources":["../../../../src/components/Map/DHIS2Map.tsx"],"names":[],"mappings":";;;;;AAUA,MAAM,eAAe,CAAC;AAAA,EACrB,gBAAA;AAAA,EACA,UAAA;AAAA,EACA,aAAA;AAAA,EACA,cAAA;AAAA,EACA,iBAAA;AAAA,EACA,eAAA;AAAA,EACA,UAAA;AAAA,EACA,GAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,gBAAA;AAAA,EACA;AACD,CAAgB,KAAA;AACf,EAAA,MAAM,oBAA2C,GAAA;AAAA,IAChD;AAAA,MACC,IAAM,EAAA,OAAA;AAAA,MACN,EAAI,EAAA,OAAA;AAAA,MACJ,OAAA,EAAS,YAAY,OAAW,IAAA,KAAA;AAAA,MAChC,GAAG;AAAA;AACJ,GACD;AACA,EAAA,MAAM,uBAAiD,GAAA;AAAA,IACtD;AAAA,MACC,GAAG,aAAA;AAAA,MACH,IAAM,EAAA,SAAA;AAAA,MACN,EAAI,EAAA,UAAA;AAAA,MACJ,OAAA,EAAS,eAAe,OAAW,IAAA;AAAA;AACpC,GACD;AAEA,EACC,uBAAA,GAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACA,eAAA;AAAA,MACA,gBAAA;AAAA,MAEA,QAAA,kBAAA,GAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACA,IAAM,EAAA;AAAA,YACL,GAAG;AAAA,WACJ;AAAA,UACA,MAAQ,EAAA;AAAA,YACP,cAAA;AAAA,YACA,iBAAA;AAAA,YACA,cAAgB,EAAA,uBAAA;AAAA,YAChB,WAAa,EAAA;AAAA,WACd;AAAA,UACA,eAAA;AAAA,UACA,gBAAA;AAAA,UACA,OAAA;AAAA,UACA,QAAA;AAAA,UAEA,GAAK,EAAA,MAAA;AAAA,UACL;AAAA,SAAA;AAAA,QAFK;AAAA;AAGN;AAAA,GACD;AAEF,CAAA;AACO,MAAM,QAA+B,GAAA;AAKrC,MAAM,GAAM,GAAA","file":"DHIS2Map.js","sourcesContent":["import React from \"react\";\nimport MapArea from \"./components/MapArea/index.js\";\nimport {\n\tCustomBoundaryLayer,\n\tCustomPointLayer,\n} from \"./components/MapLayer/interfaces\";\nimport { MapProvider } from \"./components/MapProvider\";\nimport { MapProps } from \"./interfaces\";\nimport \"leaflet/dist/leaflet.css\";\n\nconst MapComponent = ({\n\torgUnitSelection,\n\tpointLayer,\n\tboundaryLayer,\n\tthematicLayers,\n\tearthEngineLayers,\n\tperiodSelection,\n\tmapOptions,\n\tkey,\n\tcontrols,\n\tshowPeriodTitle,\n\tlegends,\n\tsetRef,\n\tanalyticsOptions,\n\tbase,\n}: MapProps) => {\n\tconst sanitizedPointLayers: CustomPointLayer[] = [\n\t\t{\n\t\t\ttype: \"point\",\n\t\t\tid: \"point\",\n\t\t\tenabled: pointLayer?.enabled ?? false,\n\t\t\t...pointLayer,\n\t\t},\n\t];\n\tconst sanitizedBoundaryLayers: CustomBoundaryLayer[] = [\n\t\t{\n\t\t\t...boundaryLayer,\n\t\t\ttype: \"overlay\",\n\t\t\tid: \"boundary\",\n\t\t\tenabled: boundaryLayer?.enabled ?? false,\n\t\t},\n\t];\n\n\treturn (\n\t\t<MapProvider\n\t\t\tperiodSelection={periodSelection}\n\t\t\torgUnitSelection={orgUnitSelection}\n\t\t>\n\t\t\t<MapArea\n\t\t\t\tbase={{\n\t\t\t\t\t...base,\n\t\t\t\t}}\n\t\t\t\tlayers={{\n\t\t\t\t\tthematicLayers,\n\t\t\t\t\tearthEngineLayers,\n\t\t\t\t\tboundaryLayers: sanitizedBoundaryLayers,\n\t\t\t\t\tpointLayers: sanitizedPointLayers,\n\t\t\t\t}}\n\t\t\t\tshowPeriodTitle={showPeriodTitle}\n\t\t\t\tanalyticsOptions={analyticsOptions}\n\t\t\t\tlegends={legends}\n\t\t\t\tcontrols={controls}\n\t\t\t\tkey={key}\n\t\t\t\tref={setRef}\n\t\t\t\tmapOptions={mapOptions}\n\t\t\t/>\n\t\t</MapProvider>\n\t);\n};\nexport const DHIS2Map: React.FC<MapProps> = MapComponent;\n\n/**\n * @deprecated since `v2`. Use `DHIS2Map` instead\n * */\nexport const Map = DHIS2Map;\n"]}
@@ -5,7 +5,7 @@ import { Name } from './components/Name.js';
5
5
  import { TypeField } from './components/TypeField.js';
6
6
  import { AggregationSelector } from './components/AggregationSelector.js';
7
7
  import { PeriodSelector } from './components/PeriodSelector.js';
8
- import { QueryClient, QueryClientProvider } from 'react-query';
8
+ import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
9
9
 
10
10
  const queryClient = new QueryClient();
11
11
  function EarthEngineLayerConfiguration({
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfiguration.tsx"],"names":[],"mappings":";;;;;;;;;AAUA,MAAM,WAAA,GAAc,IAAI,WAAY,EAAA;AAS7B,SAAS,6BAA8B,CAAA;AAAA,EAC7C,IAAA;AAAA,EACA;AACD,CAAuC,EAAA;AACtC,EAAA,2BACE,mBAAoB,EAAA,EAAA,MAAA,EAAQ,aAC5B,QAAC,kBAAA,GAAA,CAAA,YAAA,EAAA,EAAc,GAAG,IACjB,EAAA,QAAA,kBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,KAAO,EAAA;AAAA,QACN,OAAS,EAAA,MAAA;AAAA,QACT,aAAe,EAAA,QAAA;AAAA,QACf,GAAK,EAAA;AAAA,OACN;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,aAAU,QAAoB,EAAA,CAAA;AAAA,4BAC9B,IAAK,EAAA,EAAA,CAAA;AAAA,4BACL,mBAAoB,EAAA,EAAA,CAAA;AAAA,4BACpB,cAAe,EAAA,EAAA,CAAA;AAAA,4BACf,YAAa,EAAA,EAAA;AAAA;AAAA;AAAA,KAEhB,CACD,EAAA,CAAA;AAEF","file":"EarthEngineLayerConfiguration.js","sourcesContent":["import { EarthEngineLayerConfig } from \"../MapLayer/interfaces\";\nimport { FormProvider, UseFormReturn } from \"react-hook-form\";\nimport React from \"react\";\nimport { StylesConfig } from \"./components/StylesConfig.js\";\nimport { Name } from \"./components/Name.js\";\nimport { TypeField } from \"./components/TypeField.js\";\nimport { AggregationSelector } from \"./components/AggregationSelector.js\";\nimport { PeriodSelector } from \"./components/PeriodSelector.js\";\nimport { QueryClient, QueryClientProvider } from \"react-query\";\n\nconst queryClient = new QueryClient();\n\nexport interface EarthEngineLayerConfigurationProps {\n\tform: UseFormReturn<EarthEngineLayerConfig>;\n\texcluded?: string[];\n\n\t[key: string]: any;\n}\n\nexport function EarthEngineLayerConfiguration({\n\tform,\n\texcluded,\n}: EarthEngineLayerConfigurationProps) {\n\treturn (\n\t\t<QueryClientProvider client={queryClient}>\n\t\t\t<FormProvider {...form}>\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\t\tflexDirection: \"column\",\n\t\t\t\t\t\tgap: 16,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<TypeField excluded={excluded} />\n\t\t\t\t\t<Name />\n\t\t\t\t\t<AggregationSelector />\n\t\t\t\t\t<PeriodSelector />\n\t\t\t\t\t<StylesConfig />\n\t\t\t\t</div>\n\t\t\t</FormProvider>\n\t\t</QueryClientProvider>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../src/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfiguration.tsx"],"names":[],"mappings":";;;;;;;;;AAUA,MAAM,WAAA,GAAc,IAAI,WAAY,EAAA;AAS7B,SAAS,6BAA8B,CAAA;AAAA,EAC7C,IAAA;AAAA,EACA;AACD,CAAuC,EAAA;AACtC,EAAA,2BACE,mBAAoB,EAAA,EAAA,MAAA,EAAQ,aAC5B,QAAC,kBAAA,GAAA,CAAA,YAAA,EAAA,EAAc,GAAG,IACjB,EAAA,QAAA,kBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,KAAO,EAAA;AAAA,QACN,OAAS,EAAA,MAAA;AAAA,QACT,aAAe,EAAA,QAAA;AAAA,QACf,GAAK,EAAA;AAAA,OACN;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,aAAU,QAAoB,EAAA,CAAA;AAAA,4BAC9B,IAAK,EAAA,EAAA,CAAA;AAAA,4BACL,mBAAoB,EAAA,EAAA,CAAA;AAAA,4BACpB,cAAe,EAAA,EAAA,CAAA;AAAA,4BACf,YAAa,EAAA,EAAA;AAAA;AAAA;AAAA,KAEhB,CACD,EAAA,CAAA;AAEF","file":"EarthEngineLayerConfiguration.js","sourcesContent":["import { EarthEngineLayerConfig } from \"../MapLayer/interfaces\";\nimport { FormProvider, UseFormReturn } from \"react-hook-form\";\nimport React from \"react\";\nimport { StylesConfig } from \"./components/StylesConfig.js\";\nimport { Name } from \"./components/Name.js\";\nimport { TypeField } from \"./components/TypeField.js\";\nimport { AggregationSelector } from \"./components/AggregationSelector.js\";\nimport { PeriodSelector } from \"./components/PeriodSelector.js\";\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\n\nconst queryClient = new QueryClient();\n\nexport interface EarthEngineLayerConfigurationProps {\n\tform: UseFormReturn<EarthEngineLayerConfig>;\n\texcluded?: string[];\n\n\t[key: string]: any;\n}\n\nexport function EarthEngineLayerConfiguration({\n\tform,\n\texcluded,\n}: EarthEngineLayerConfigurationProps) {\n\treturn (\n\t\t<QueryClientProvider client={queryClient}>\n\t\t\t<FormProvider {...form}>\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\t\tflexDirection: \"column\",\n\t\t\t\t\t\tgap: 16,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<TypeField excluded={excluded} />\n\t\t\t\t\t<Name />\n\t\t\t\t\t<AggregationSelector />\n\t\t\t\t\t<PeriodSelector />\n\t\t\t\t\t<StylesConfig />\n\t\t\t\t</div>\n\t\t\t</FormProvider>\n\t\t</QueryClientProvider>\n\t);\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import { useGoogleEngineToken } from '../../MapLayer/components/GoogleEngineLayer/hooks/index.js';
2
2
  import { EarthEngine } from '../../MapLayer/components/GoogleEngineLayer/services/engine.js';
3
- import { useQuery } from 'react-query';
3
+ import { useQuery } from '@tanstack/react-query';
4
4
  import { useMemo } from 'react';
5
5
  import { useWatch } from 'react-hook-form';
6
6
  import { find } from 'lodash';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/components/Map/components/EarthEngineLayerConfiguration/hooks/data.ts"],"names":[],"mappings":";;;;;;;;AASO,SAAS,cAAA,CACf,WACA,MACC,EAAA;AACD,EAAM,MAAA,EAAE,OAAQ,EAAA,GAAI,oBAAqB,EAAA;AAEzC,EAAA,eAAe,OAAU,GAAA;AACxB,IAAA,IAAI,MAAQ,EAAA;AACX,MAAM,MAAA,SAAA,GAAY,MAAM,OAAQ,EAAA;AAChC,MAAA,MAAM,WAAY,CAAA,QAAA,CAAS,SAAU,CAAA,KAAA,EAAO,OAAO,CAAA;AACnD,MAAM,MAAA,MAAA,GAAS,IAAI,WAAY,CAAA;AAAA,QAC9B,OAAS,EAAA;AAAA,OACT,CAAA;AACD,MAAA,OAAO,OAAO,SAAU,EAAA;AAAA;AACzB;AAGD,EAAM,MAAA,EAAE,MAAM,KAAO,EAAA,SAAA,KAAc,QAAS,CAAA,CAAC,MAAM,CAAA,EAAG,OAAO,CAAA;AAE7D,EAAM,MAAA,OAAA,GAAU,QAAQ,MAAM;AAC7B,IAAA,MAAM,WAAY,IAAc,EAAA,QAAA;AAChC,IAAO,OAAA,QAAA,EAAU,GAAI,CAAA,CAAC,OAAiB,KAAA;AACtC,MAAA,OAAO,IAAI,IAAA;AAAA,QACV,OAAA,EAAS,WAAW,mBAAmB;AAAA,SACrC,WAAY,EAAA;AAAA,KACf,CAAA;AAAA,GACF,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAO,OAAA;AAAA,IACN,OAAS,EAAA,SAAA;AAAA,IACT,KAAA;AAAA,IACA;AAAA,GACD;AACD;AAEO,SAAS,OAAU,GAAA;AACzB,EAAA,MAAM,OAAO,QAAS,CAAA;AAAA,IACrB,IAAM,EAAA;AAAA,GACN,CAAA;AACD,EAAA,OAAO,IAAK,CAAA,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 \"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,MACC,EAAA;AACD,EAAM,MAAA,EAAE,OAAQ,EAAA,GAAI,oBAAqB,EAAA;AAEzC,EAAA,eAAe,OAAU,GAAA;AACxB,IAAA,IAAI,MAAQ,EAAA;AACX,MAAM,MAAA,SAAA,GAAY,MAAM,OAAQ,EAAA;AAChC,MAAA,MAAM,WAAY,CAAA,QAAA,CAAS,SAAU,CAAA,KAAA,EAAO,OAAO,CAAA;AACnD,MAAM,MAAA,MAAA,GAAS,IAAI,WAAY,CAAA;AAAA,QAC9B,OAAS,EAAA;AAAA,OACT,CAAA;AACD,MAAA,OAAO,OAAO,SAAU,EAAA;AAAA;AACzB;AAGD,EAAM,MAAA,EAAE,MAAM,KAAO,EAAA,SAAA,KAAc,QAAS,CAAA,CAAC,MAAM,CAAA,EAAG,OAAO,CAAA;AAE7D,EAAM,MAAA,OAAA,GAAU,QAAQ,MAAM;AAC7B,IAAA,MAAM,WAAY,IAAc,EAAA,QAAA;AAChC,IAAO,OAAA,QAAA,EAAU,GAAI,CAAA,CAAC,OAAiB,KAAA;AACtC,MAAA,OAAO,IAAI,IAAA;AAAA,QACV,OAAA,EAAS,WAAW,mBAAmB;AAAA,SACrC,WAAY,EAAA;AAAA,KACf,CAAA;AAAA,GACF,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAO,OAAA;AAAA,IACN,OAAS,EAAA,SAAA;AAAA,IACT,KAAA;AAAA,IACA;AAAA,GACD;AACD;AAEO,SAAS,OAAU,GAAA;AACzB,EAAA,MAAM,OAAO,QAAS,CAAA;AAAA,IACrB,IAAM,EAAA;AAAA,GACN,CAAA;AACD,EAAA,OAAO,IAAK,CAAA,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"]}
@@ -6,7 +6,7 @@ import { useBoundaryData } from '../BoundaryLayer/hooks/useBoundaryData.js';
6
6
  import useGoogleEngineLayer from './hooks/index.js';
7
7
  import { resetHighlight, highlightFeature } from '../../../../utils/map.js';
8
8
  import { defaultStyle, highlightStyle } from '../BoundaryLayer/index.js';
9
- import { useQuery } from 'react-query';
9
+ import { useQuery } from '@tanstack/react-query';
10
10
  import { Center, CircularLoader, Divider } from '@dhis2/ui';
11
11
  import i18n from '@dhis2/d2-i18n';
12
12
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../src/components/Map/components/MapLayer/components/GoogleEngineLayer/index.tsx"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { capitalize, find, head, isEmpty, sortBy } from \"lodash\";\nimport React, { useMemo, useRef } from \"react\";\nimport {\n\tGeoJSON,\n\tLayerGroup,\n\tLayersControl,\n\tPopup,\n\tTileLayer,\n\tTooltip,\n} from \"react-leaflet\";\nimport { useBoundaryData } from \"../BoundaryLayer/hooks/useBoundaryData.js\";\nimport useGoogleEngineLayer from \"./hooks/index.js\";\nimport { MapOrgUnit } from \"../../../../interfaces/index.js\";\nimport { highlightFeature, resetHighlight } from \"../../../../utils/map.js\";\nimport { defaultStyle, highlightStyle } from \"../BoundaryLayer/index.js\";\nimport { useQuery } from \"react-query\";\nimport { Center, CircularLoader, Divider } from \"@dhis2/ui\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { CustomGoogleEngineLayer } from \"../../interfaces/index.js\";\n\nfunction formatValues(value: number): string {\n\treturn Intl.NumberFormat(\"en-GB\", { maximumFractionDigits: 2 }).format(\n\t\tvalue,\n\t);\n}\n\nfunction getUnit(unit?: string) {\n\tif (unit === \"percentage\") {\n\t\treturn \"%\";\n\t}\n}\n\nfunction Legend({\n\theader,\n\tlegends,\n\tvalue,\n\tunit,\n}: {\n\theader: number;\n\tlegends: { id: number | string; color: string; name: string }[];\n\tvalue: number;\n\tunit?: string;\n}) {\n\tconst legend = find(legends, [\"id\", header]);\n\n\treturn (\n\t\t<div className=\"row gap-8 space-between\">\n\t\t\t<div className=\"row gap-8\">\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"legend-item-color\"\n\t\t\t\t\tstyle={{ backgroundColor: legend?.color }}\n\t\t\t\t/>\n\t\t\t\t<div>{legend?.name}</div>\n\t\t\t</div>\n\t\t\t<span>\n\t\t\t\t{formatValues(value)}\n\t\t\t\t{getUnit(unit)}\n\t\t\t</span>\n\t\t</div>\n\t);\n}\n\nfunction AggregationView({ header, value }: { header: string; value: number }) {\n\treturn (\n\t\t<div className=\"row space-between\">\n\t\t\t<span>{capitalize(header.toString())}</span>\n\t\t\t<span>{formatValues(value)}</span>\n\t\t</div>\n\t);\n}\n\nfunction EarthEnginePopup({\n\tlayer,\n\torgUnit,\n\tloading,\n\terror,\n}: {\n\tlayer?: CustomGoogleEngineLayer;\n\torgUnit: MapOrgUnit;\n\tloading: boolean;\n\terror?: string;\n}) {\n\tconst engine = layer?.engine;\n\tconst legends = layer?.engine?.options?.legend?.items;\n\tconst data = engine?.getAggregation(orgUnit)?.data;\n\tconst unit =\n\t\tlayer?.engine?.options?.unit ??\n\t\thead(layer?.engine?.options.aggregations);\n\n\tconst aggregations = useMemo(() => {\n\t\tif (!isEmpty(legends)) {\n\t\t\treturn sortBy(\n\t\t\t\tObject.keys(data ?? {}).map((key) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: parseInt(key),\n\t\t\t\t\t\tvalue: data[key],\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t\t[\"value\"],\n\t\t\t).reverse();\n\t\t}\n\t\treturn data ?? {};\n\t}, [data]);\n\n\tif (loading) {\n\t\treturn (\n\t\t\t<div style={{ width: 200, height: 200 }}>\n\t\t\t\t<Center>\n\t\t\t\t\t<CircularLoader extrasmall />\n\t\t\t\t</Center>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif (error) {\n\t\treturn (\n\t\t\t<div>\n\t\t\t\t<h3 style={{ margin: \"0\" }}>{orgUnit.name}</h3>\n\t\t\t\t<Divider margin={\"0\"} />\n\t\t\t\t<div className=\"column gap-8\">\n\t\t\t\t\t<div className=\"column\">\n\t\t\t\t\t\t<b>{layer?.options?.name}</b>\n\t\t\t\t\t\t<div>{layer?.options?.unit}</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"column\">\n\t\t\t\t\t\t<p>{i18n.t(\"Could not get aggregate data\")}</p>\n\t\t\t\t\t\t<p>{error}</p>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div>\n\t\t\t<h3 style={{ margin: \"0\" }}>{orgUnit.name}</h3>\n\t\t\t<Divider margin={\"0\"} />\n\t\t\t<div className=\"column gap-8\">\n\t\t\t\t<div className=\"column\">\n\t\t\t\t\t<b>{layer?.options?.name}</b>\n\t\t\t\t\t<div>{layer?.options?.unit ?? unit}</div>\n\t\t\t\t</div>\n\t\t\t\t{data && (\n\t\t\t\t\t<div className=\"column\">\n\t\t\t\t\t\t{Array.isArray(aggregations)\n\t\t\t\t\t\t\t? aggregations?.map(({ id, value }) => (\n\t\t\t\t\t\t\t\t\t<Legend\n\t\t\t\t\t\t\t\t\t\tkey={`${orgUnit.id}-legend-details-${id}`}\n\t\t\t\t\t\t\t\t\t\tlegends={legends ?? []}\n\t\t\t\t\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\t\t\t\t\theader={id}\n\t\t\t\t\t\t\t\t\t\tunit={unit}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t))\n\t\t\t\t\t\t\t: Object.keys(aggregations)?.map((key) => (\n\t\t\t\t\t\t\t\t\t<AggregationView\n\t\t\t\t\t\t\t\t\t\tkey={`${orgUnit.id}-aggregate-details-${key}`}\n\t\t\t\t\t\t\t\t\t\theader={key}\n\t\t\t\t\t\t\t\t\t\tvalue={aggregations[key]}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nfunction EarthEngineArea({\n\tarea,\n\tlayer,\n\tloading,\n\terror,\n}: {\n\tarea: MapOrgUnit;\n\tlayer?: CustomGoogleEngineLayer;\n\tloading: boolean;\n\terror?: string;\n}) {\n\tconst ref = useRef<any>();\n\n\treturn (\n\t\t<GeoJSON\n\t\t\tref={ref}\n\t\t\tdata={area.geoJSON}\n\t\t\tinteractive\n\t\t\teventHandlers={{\n\t\t\t\tmouseover: (e) => highlightFeature(e, highlightStyle),\n\t\t\t\tmouseout: (e) => resetHighlight(e, defaultStyle),\n\t\t\t}}\n\t\t\tkey={`${area.id}-polygon`}\n\t\t\tpathOptions={defaultStyle}\n\t\t>\n\t\t\t<Tooltip>{area.name}</Tooltip>\n\t\t\t<Popup minWidth={100}>\n\t\t\t\t<EarthEnginePopup\n\t\t\t\t\terror={error}\n\t\t\t\t\tlayer={layer}\n\t\t\t\t\torgUnit={area}\n\t\t\t\t\tloading={loading}\n\t\t\t\t/>\n\t\t\t</Popup>\n\t\t</GeoJSON>\n\t);\n}\n\nexport default function GoogleEngineLayer({ layerId }: { layerId: string }) {\n\tconst layer = useGoogleEngineLayer(layerId);\n\tconst { name, type, enabled, url, options, engine } = layer ?? {};\n\tconst { isLoading: loadingAggregateData, error } = useQuery(\n\t\t[engine],\n\t\tasync () => engine?.getAggregations(),\n\t\t{\n\t\t\tsuspense: false,\n\t\t},\n\t);\n\tconst orgUnits = useBoundaryData();\n\n\tif (!url) return null;\n\n\treturn (\n\t\t<LayersControl.Overlay\n\t\t\tchecked={enabled}\n\t\t\tname={name ?? capitalize(type)}\n\t\t>\n\t\t\t<LayerGroup>\n\t\t\t\t<TileLayer id={options?.id} url={url} />\n\t\t\t\t{orgUnits?.map((area: MapOrgUnit) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<EarthEngineArea\n\t\t\t\t\t\t\terror={\n\t\t\t\t\t\t\t\t(error as any)?.toString() as string | undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tloading={loadingAggregateData}\n\t\t\t\t\t\t\tkey={`${area.id}-polygon`}\n\t\t\t\t\t\t\tarea={area}\n\t\t\t\t\t\t\tlayer={layer}\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</LayerGroup>\n\t\t</LayersControl.Overlay>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../../../src/components/Map/components/MapLayer/components/GoogleEngineLayer/index.tsx"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { capitalize, find, head, isEmpty, sortBy } from \"lodash\";\nimport React, { useMemo, useRef } from \"react\";\nimport {\n\tGeoJSON,\n\tLayerGroup,\n\tLayersControl,\n\tPopup,\n\tTileLayer,\n\tTooltip,\n} from \"react-leaflet\";\nimport { useBoundaryData } from \"../BoundaryLayer/hooks/useBoundaryData.js\";\nimport useGoogleEngineLayer from \"./hooks/index.js\";\nimport { MapOrgUnit } from \"../../../../interfaces/index.js\";\nimport { highlightFeature, resetHighlight } from \"../../../../utils/map.js\";\nimport { defaultStyle, highlightStyle } from \"../BoundaryLayer/index.js\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport { Center, CircularLoader, Divider } from \"@dhis2/ui\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { CustomGoogleEngineLayer } from \"../../interfaces/index.js\";\n\nfunction formatValues(value: number): string {\n\treturn Intl.NumberFormat(\"en-GB\", { maximumFractionDigits: 2 }).format(\n\t\tvalue,\n\t);\n}\n\nfunction getUnit(unit?: string) {\n\tif (unit === \"percentage\") {\n\t\treturn \"%\";\n\t}\n}\n\nfunction Legend({\n\theader,\n\tlegends,\n\tvalue,\n\tunit,\n}: {\n\theader: number;\n\tlegends: { id: number | string; color: string; name: string }[];\n\tvalue: number;\n\tunit?: string;\n}) {\n\tconst legend = find(legends, [\"id\", header]);\n\n\treturn (\n\t\t<div className=\"row gap-8 space-between\">\n\t\t\t<div className=\"row gap-8\">\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"legend-item-color\"\n\t\t\t\t\tstyle={{ backgroundColor: legend?.color }}\n\t\t\t\t/>\n\t\t\t\t<div>{legend?.name}</div>\n\t\t\t</div>\n\t\t\t<span>\n\t\t\t\t{formatValues(value)}\n\t\t\t\t{getUnit(unit)}\n\t\t\t</span>\n\t\t</div>\n\t);\n}\n\nfunction AggregationView({ header, value }: { header: string; value: number }) {\n\treturn (\n\t\t<div className=\"row space-between\">\n\t\t\t<span>{capitalize(header.toString())}</span>\n\t\t\t<span>{formatValues(value)}</span>\n\t\t</div>\n\t);\n}\n\nfunction EarthEnginePopup({\n\tlayer,\n\torgUnit,\n\tloading,\n\terror,\n}: {\n\tlayer?: CustomGoogleEngineLayer;\n\torgUnit: MapOrgUnit;\n\tloading: boolean;\n\terror?: string;\n}) {\n\tconst engine = layer?.engine;\n\tconst legends = layer?.engine?.options?.legend?.items;\n\tconst data = engine?.getAggregation(orgUnit)?.data;\n\tconst unit =\n\t\tlayer?.engine?.options?.unit ??\n\t\thead(layer?.engine?.options.aggregations);\n\n\tconst aggregations = useMemo(() => {\n\t\tif (!isEmpty(legends)) {\n\t\t\treturn sortBy(\n\t\t\t\tObject.keys(data ?? {}).map((key) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: parseInt(key),\n\t\t\t\t\t\tvalue: data[key],\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t\t[\"value\"],\n\t\t\t).reverse();\n\t\t}\n\t\treturn data ?? {};\n\t}, [data]);\n\n\tif (loading) {\n\t\treturn (\n\t\t\t<div style={{ width: 200, height: 200 }}>\n\t\t\t\t<Center>\n\t\t\t\t\t<CircularLoader extrasmall />\n\t\t\t\t</Center>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif (error) {\n\t\treturn (\n\t\t\t<div>\n\t\t\t\t<h3 style={{ margin: \"0\" }}>{orgUnit.name}</h3>\n\t\t\t\t<Divider margin={\"0\"} />\n\t\t\t\t<div className=\"column gap-8\">\n\t\t\t\t\t<div className=\"column\">\n\t\t\t\t\t\t<b>{layer?.options?.name}</b>\n\t\t\t\t\t\t<div>{layer?.options?.unit}</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"column\">\n\t\t\t\t\t\t<p>{i18n.t(\"Could not get aggregate data\")}</p>\n\t\t\t\t\t\t<p>{error}</p>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div>\n\t\t\t<h3 style={{ margin: \"0\" }}>{orgUnit.name}</h3>\n\t\t\t<Divider margin={\"0\"} />\n\t\t\t<div className=\"column gap-8\">\n\t\t\t\t<div className=\"column\">\n\t\t\t\t\t<b>{layer?.options?.name}</b>\n\t\t\t\t\t<div>{layer?.options?.unit ?? unit}</div>\n\t\t\t\t</div>\n\t\t\t\t{data && (\n\t\t\t\t\t<div className=\"column\">\n\t\t\t\t\t\t{Array.isArray(aggregations)\n\t\t\t\t\t\t\t? aggregations?.map(({ id, value }) => (\n\t\t\t\t\t\t\t\t\t<Legend\n\t\t\t\t\t\t\t\t\t\tkey={`${orgUnit.id}-legend-details-${id}`}\n\t\t\t\t\t\t\t\t\t\tlegends={legends ?? []}\n\t\t\t\t\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\t\t\t\t\theader={id}\n\t\t\t\t\t\t\t\t\t\tunit={unit}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t))\n\t\t\t\t\t\t\t: Object.keys(aggregations)?.map((key) => (\n\t\t\t\t\t\t\t\t\t<AggregationView\n\t\t\t\t\t\t\t\t\t\tkey={`${orgUnit.id}-aggregate-details-${key}`}\n\t\t\t\t\t\t\t\t\t\theader={key}\n\t\t\t\t\t\t\t\t\t\tvalue={aggregations[key]}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nfunction EarthEngineArea({\n\tarea,\n\tlayer,\n\tloading,\n\terror,\n}: {\n\tarea: MapOrgUnit;\n\tlayer?: CustomGoogleEngineLayer;\n\tloading: boolean;\n\terror?: string;\n}) {\n\tconst ref = useRef<any>();\n\n\treturn (\n\t\t<GeoJSON\n\t\t\tref={ref}\n\t\t\tdata={area.geoJSON}\n\t\t\tinteractive\n\t\t\teventHandlers={{\n\t\t\t\tmouseover: (e) => highlightFeature(e, highlightStyle),\n\t\t\t\tmouseout: (e) => resetHighlight(e, defaultStyle),\n\t\t\t}}\n\t\t\tkey={`${area.id}-polygon`}\n\t\t\tpathOptions={defaultStyle}\n\t\t>\n\t\t\t<Tooltip>{area.name}</Tooltip>\n\t\t\t<Popup minWidth={100}>\n\t\t\t\t<EarthEnginePopup\n\t\t\t\t\terror={error}\n\t\t\t\t\tlayer={layer}\n\t\t\t\t\torgUnit={area}\n\t\t\t\t\tloading={loading}\n\t\t\t\t/>\n\t\t\t</Popup>\n\t\t</GeoJSON>\n\t);\n}\n\nexport default function GoogleEngineLayer({ layerId }: { layerId: string }) {\n\tconst layer = useGoogleEngineLayer(layerId);\n\tconst { name, type, enabled, url, options, engine } = layer ?? {};\n\tconst { isLoading: loadingAggregateData, error } = useQuery(\n\t\t[engine],\n\t\tasync () => engine?.getAggregations(),\n\t\t{\n\t\t\tsuspense: false,\n\t\t},\n\t);\n\tconst orgUnits = useBoundaryData();\n\n\tif (!url) return null;\n\n\treturn (\n\t\t<LayersControl.Overlay\n\t\t\tchecked={enabled}\n\t\t\tname={name ?? capitalize(type)}\n\t\t>\n\t\t\t<LayerGroup>\n\t\t\t\t<TileLayer id={options?.id} url={url} />\n\t\t\t\t{orgUnits?.map((area: MapOrgUnit) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<EarthEngineArea\n\t\t\t\t\t\t\terror={\n\t\t\t\t\t\t\t\t(error as any)?.toString() as string | undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tloading={loadingAggregateData}\n\t\t\t\t\t\t\tkey={`${area.id}-polygon`}\n\t\t\t\t\t\t\tarea={area}\n\t\t\t\t\t\t\tlayer={layer}\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</LayerGroup>\n\t\t</LayersControl.Overlay>\n\t);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"DHIS2Map.d.ts","sourceRoot":"","sources":["../../../../src/components/Map/DHIS2Map.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,0BAA0B,CAAC;AAkElC,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAgB,CAAC;AAEzD;;KAEK;AACL,eAAO,MAAM,GAAG,oBAAW,CAAC"}
1
+ {"version":3,"file":"DHIS2Map.d.ts","sourceRoot":"","sources":["../../../../src/components/Map/DHIS2Map.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,0BAA0B,CAAC;AA6DlC,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAgB,CAAC;AAEzD;;KAEK;AACL,eAAO,MAAM,GAAG,oBAAW,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hisptz/dhis2-analytics",
3
- "version": "2.1.22",
3
+ "version": "2.1.24",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/esm/index.js",
6
6
  "types": "./dist/types/index.d.ts",
@@ -17,7 +17,9 @@
17
17
  "package.json"
18
18
  ],
19
19
  "devDependencies": {
20
+ "@dhis2/app-runtime": "^3.14.1",
20
21
  "@storybook/react": "^7.6.7",
22
+ "@tanstack/react-query": "^4.36.1",
21
23
  "@types/async": "^3.2.24",
22
24
  "@types/d3-color": "^3.1.0",
23
25
  "@types/d3-scale": "^4.0.3",
@@ -41,8 +43,8 @@
41
43
  "tsup": "^8.4.0",
42
44
  "typescript": "^5.3.3",
43
45
  "usehooks-ts": "^2.16.0",
44
- "@repo/typescript-config": "0.0.2",
45
- "@repo/eslint-config": "0.0.0"
46
+ "@repo/eslint-config": "0.0.0",
47
+ "@repo/typescript-config": "0.0.2"
46
48
  },
47
49
  "dependencies": {
48
50
  "@google/earthengine": "^1.5.21",
@@ -68,7 +70,6 @@
68
70
  "react-helmet": "^6.1.0",
69
71
  "react-leaflet": "^4.2.1",
70
72
  "react-leaflet-custom-control": "^1.4.0",
71
- "react-query": "^3.39.3",
72
73
  "react-spring": "^9.6.1",
73
74
  "react-to-print": "^3.0.1",
74
75
  "screenfull": "^6.0.2",