@hisptz/dhis2-analytics 2.0.47 → 2.0.48
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Map/DHIS2Map.js +3 -1
- package/dist/components/Map/DHIS2Map.js.map +1 -1
- package/dist/components/Map/components/MapArea/index.js +23 -8
- package/dist/components/Map/components/MapArea/index.js.map +1 -1
- package/dist/components/Map/components/MapLayer/components/LegendArea/components/LegendCardHeader/index.js +2 -1
- package/dist/components/Map/components/MapLayer/components/LegendArea/components/LegendCardHeader/index.js.map +1 -1
- package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.js +5 -3
- package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.js.map +1 -1
- package/dist/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.js +8 -4
- package/dist/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.js.map +1 -1
- package/dist/components/Map/components/MapProvider/components/MapLayerProvider/index.js +15 -10
- package/dist/components/Map/components/MapProvider/components/MapLayerProvider/index.js.map +1 -1
- package/dist/esm/components/Map/DHIS2Map.js +3 -1
- package/dist/esm/components/Map/DHIS2Map.js.map +1 -1
- package/dist/esm/components/Map/components/MapArea/index.js +23 -8
- package/dist/esm/components/Map/components/MapArea/index.js.map +1 -1
- package/dist/esm/components/Map/components/MapLayer/components/LegendArea/components/LegendCardHeader/index.js +2 -1
- package/dist/esm/components/Map/components/MapLayer/components/LegendArea/components/LegendCardHeader/index.js.map +1 -1
- package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.js +5 -3
- package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.js.map +1 -1
- package/dist/esm/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.js +8 -4
- package/dist/esm/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.js.map +1 -1
- package/dist/esm/components/Map/components/MapProvider/components/MapLayerProvider/index.js +10 -5
- package/dist/esm/components/Map/components/MapProvider/components/MapLayerProvider/index.js.map +1 -1
- package/dist/types/components/ChartAnalytics/types/props.d.ts +1 -0
- package/dist/types/components/ChartAnalytics/types/props.d.ts.map +1 -1
- package/dist/types/components/Map/DHIS2Map.d.ts.map +1 -1
- package/dist/types/components/Map/components/MapArea/index.d.ts.map +1 -1
- package/dist/types/components/Map/components/MapArea/interfaces/index.d.ts +2 -0
- package/dist/types/components/Map/components/MapArea/interfaces/index.d.ts.map +1 -1
- package/dist/types/components/Map/components/MapLayer/components/LegendArea/components/LegendCardHeader/index.d.ts.map +1 -1
- package/dist/types/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.d.ts.map +1 -1
- package/dist/types/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.d.ts +4 -1
- package/dist/types/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.d.ts.map +1 -1
- package/dist/types/components/Map/components/MapProvider/components/MapLayerProvider/index.d.ts +5 -3
- package/dist/types/components/Map/components/MapProvider/components/MapLayerProvider/index.d.ts.map +1 -1
- package/dist/types/components/Map/interfaces/index.d.ts +7 -0
- package/dist/types/components/Map/interfaces/index.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -22,7 +22,8 @@ const MapComponent = ({
|
|
|
22
22
|
key,
|
|
23
23
|
controls,
|
|
24
24
|
legends,
|
|
25
|
-
setRef
|
|
25
|
+
setRef,
|
|
26
|
+
analyticsOptions
|
|
26
27
|
}) => {
|
|
27
28
|
const sanitizedPointLayers = [
|
|
28
29
|
{
|
|
@@ -54,6 +55,7 @@ const MapComponent = ({
|
|
|
54
55
|
boundaryLayers: sanitizedBoundaryLayers,
|
|
55
56
|
pointLayers: sanitizedPointLayers
|
|
56
57
|
},
|
|
58
|
+
analyticsOptions,
|
|
57
59
|
legends,
|
|
58
60
|
controls,
|
|
59
61
|
ref: setRef,
|
|
@@ -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,CAAA;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,OAAA;AAAA,EACA,MAAA;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,UAAA;AAAA,KACJ;AAAA,GACD,CAAA;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,KAAA;AAAA,KACpC;AAAA,GACD,CAAA;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,MAAQ,EAAA;AAAA,YACP,cAAA;AAAA,YACA,iBAAA;AAAA,YACA,cAAgB,EAAA,uBAAA;AAAA,YAChB,WAAa,EAAA,oBAAA;AAAA,WACd;AAAA,UACA,OAAA;AAAA,UACA,QAAA;AAAA,UAEA,GAAK,EAAA,MAAA;AAAA,UACL,UAAA;AAAA,SAAA;AAAA,QAFK,GAAA;AAAA,OAGN;AAAA,KAAA;AAAA,GAEF,EAAA,CAAA,CAAA;AAEF,CAAA,CAAA;AACO,MAAM,QAA+B,GAAA,aAAA;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\tlegends,\n\tsetRef,\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\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\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":["QueryClient","jsx","QueryClientProvider","MapProvider","MapArea"],"mappings":";;;;;;;;;;;;AAWA,MAAM,WAAA,GAAc,IAAIA,sBAAY,EAAA,CAAA;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,OAAA;AAAA,EACA,MAAA;AAAA,EACA,gBAAA;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,UAAA;AAAA,KACJ;AAAA,GACD,CAAA;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,KAAA;AAAA,KACpC;AAAA,GACD,CAAA;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,MAAQ,EAAA;AAAA,YACP,cAAA;AAAA,YACA,iBAAA;AAAA,YACA,cAAgB,EAAA,uBAAA;AAAA,YAChB,WAAa,EAAA,oBAAA;AAAA,WACd;AAAA,UACA,gBAAA;AAAA,UACA,OAAA;AAAA,UACA,QAAA;AAAA,UAEA,GAAK,EAAA,MAAA;AAAA,UACL,UAAA;AAAA,SAAA;AAAA,QAFK,GAAA;AAAA,OAGN;AAAA,KAAA;AAAA,GAEF,EAAA,CAAA,CAAA;AAEF,CAAA,CAAA;AACO,MAAM,QAA+B,GAAA,aAAA;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\tlegends,\n\tsetRef,\n\tanalyticsOptions,\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\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\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"]}
|
|
@@ -64,7 +64,15 @@ function MapLayerArea({
|
|
|
64
64
|
)
|
|
65
65
|
] });
|
|
66
66
|
}
|
|
67
|
-
const MapArea = ({
|
|
67
|
+
const MapArea = ({
|
|
68
|
+
base,
|
|
69
|
+
controls,
|
|
70
|
+
mapOptions,
|
|
71
|
+
key,
|
|
72
|
+
legends,
|
|
73
|
+
layers,
|
|
74
|
+
analyticsOptions
|
|
75
|
+
}, ref) => {
|
|
68
76
|
const { center, bounds } = map_js.useMapBounds();
|
|
69
77
|
const { current: id } = react.useRef(dhis2Utils.uid());
|
|
70
78
|
const containerRef = react.useRef(null);
|
|
@@ -88,15 +96,22 @@ const MapArea = ({ base, controls, mapOptions, key, legends, layers }, ref) => {
|
|
|
88
96
|
...mapOptions,
|
|
89
97
|
children: [
|
|
90
98
|
/* @__PURE__ */ jsxRuntime.jsx(MapUpdater__default.default, { containerRef, bounds }),
|
|
91
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
92
|
-
|
|
99
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
100
|
+
index_js.MapLayersProvider,
|
|
93
101
|
{
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
102
|
+
analyticsOptions,
|
|
103
|
+
layers,
|
|
104
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
105
|
+
MapLayerArea,
|
|
106
|
+
{
|
|
107
|
+
base,
|
|
108
|
+
id,
|
|
109
|
+
controls,
|
|
110
|
+
legends
|
|
111
|
+
}
|
|
112
|
+
)
|
|
98
113
|
}
|
|
99
|
-
)
|
|
114
|
+
)
|
|
100
115
|
]
|
|
101
116
|
},
|
|
102
117
|
key
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/Map/components/MapArea/index.tsx"],"names":["useMapLayers","jsxs","Fragment","jsx","TileLayer","MapControl","isEmpty","LayersControl","MapLayer","LegendArea","useMapBounds","useRef","uid","MapContainer","MapUpdater","MapLayersProvider","forwardRef"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAmBA,SAAS,YAAa,CAAA;AAAA,EACrB,EAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AACD,CAQG,EAAA;AACF,EAAM,MAAA,EAAE,MAAO,EAAA,GAAIA,uBAAa,EAAA,CAAA;AAEhC,EAAA,uBAEEC,eAAA,CAAAC,mBAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAAC,cAAA;AAAA,MAACC,sBAAA;AAAA,MAAA;AAAA,QACA,EAAA;AAAA,QACA,WAAA,EACC,MAAM,WACN,IAAA,uIAAA;AAAA,QAED,GAAA,EACC,MAAM,GACN,IAAA,8EAAA;AAAA,OAAA;AAAA,KAEF;AAAA,IACC,QAAA,EAAU,GAAI,CAAA,CAAC,OACf,qBAAAD,cAAA;AAAA,MAACE,2BAAA;AAAA,MAAA;AAAA,QACA,KAAO,EAAA,EAAA;AAAA,QAEN,GAAG,OAAA;AAAA,OAAA;AAAA,MADC,CAAA,EAAG,QAAQ,IAAI,CAAA,QAAA,CAAA;AAAA,KAGrB,CAAA;AAAA,IACA,CAACC,cAAQ,CAAA,MAAM,CACf,oBAAAH,cAAA,CAACI,8BAAc,cAAc,EAAA,IAAA,EAAC,QAAU,EAAA,SAAA,EACrC,QAAiC,EAAA,MAAA,CAAA,GAAA;AAAA,MAClC,CAAC,OAA4B,KAC5B,qBAAAJ,cAAA;AAAA,QAACK,yBAAA;AAAA,QAAA;AAAA,UAEA,KAAA;AAAA,UACA,KAAA;AAAA,SAAA;AAAA,QAFK,KAAM,CAAA,EAAA;AAAA,OAGZ;AAAA,KAGH,EAAA,CAAA;AAAA,IAEA,CAACF,cAAQ,CAAA,MAAM,CACf,oBAAAH,cAAA;AAAA,MAACM,2BAAA;AAAA,MAAA;AAAA,QACA,OAAA;AAAA,QACA,MAAA;AAAA,QACA,QAAU,EAAA,UAAA;AAAA,OAAA;AAAA,KACX;AAAA,GAEF,EAAA,CAAA,CAAA;AAEF,CAAA;AAEA,MAAM,
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/Map/components/MapArea/index.tsx"],"names":["useMapLayers","jsxs","Fragment","jsx","TileLayer","MapControl","isEmpty","LayersControl","MapLayer","LegendArea","useMapBounds","useRef","uid","MapContainer","MapUpdater","MapLayersProvider","forwardRef"],"mappings":"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","file":"index.js","sourcesContent":["import { uid } from \"@hisptz/dhis2-utils\";\nimport { Map as LeafletMap } from \"leaflet\";\nimport { isEmpty } from \"lodash\";\nimport React, { forwardRef, useRef } from \"react\";\nimport { LayersControl, MapContainer, TileLayer } from \"react-leaflet\";\nimport { useMapBounds } from \"../../hooks/map.js\";\nimport MapControl from \"../MapControls/index.js\";\nimport MapLayer from \"../MapLayer/index.js\";\nimport LegendArea from \"../MapLayer/components/LegendArea/index.js\";\nimport { CustomThematicLayer } from \"../MapLayer/interfaces/index.js\";\nimport { MapLayersProvider } from \"../MapProvider/components/MapLayerProvider/index.js\";\nimport { useMapLayers } from \"../MapProvider/hooks/index.js\";\nimport {\n\tMapAreaProps,\n\tMapControls,\n\tMapLegendConfig,\n} from \"./interfaces/index.js\";\nimport MapUpdater from \"../MapUpdater/index.js\";\n\nfunction MapLayerArea({\n\tid,\n\tbase,\n\tcontrols,\n\tlegends,\n}: {\n\tid: string;\n\tbase?: {\n\t\turl: string;\n\t\tattribution: string;\n\t};\n\tcontrols?: MapControls[];\n\tlegends?: MapLegendConfig;\n}) {\n\tconst { layers } = useMapLayers();\n\n\treturn (\n\t\t<>\n\t\t\t<TileLayer\n\t\t\t\tid={id}\n\t\t\t\tattribution={\n\t\t\t\t\tbase?.attribution ??\n\t\t\t\t\t'© <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> | © <a href=\"https://carto.com/attribution\">CARTO</a>'\n\t\t\t\t}\n\t\t\t\turl={\n\t\t\t\t\tbase?.url ??\n\t\t\t\t\t\"https://cartodb-basemaps-{s}.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png\"\n\t\t\t\t}\n\t\t\t/>\n\t\t\t{controls?.map((control) => (\n\t\t\t\t<MapControl\n\t\t\t\t\tmapId={id}\n\t\t\t\t\tkey={`${control.type}-control`}\n\t\t\t\t\t{...control}\n\t\t\t\t/>\n\t\t\t))}\n\t\t\t{!isEmpty(layers) && (\n\t\t\t\t<LayersControl hideSingleBase position={\"topleft\"}>\n\t\t\t\t\t{(layers as CustomThematicLayer[]).map(\n\t\t\t\t\t\t(layer: CustomThematicLayer, index) => (\n\t\t\t\t\t\t\t<MapLayer\n\t\t\t\t\t\t\t\tkey={layer.id}\n\t\t\t\t\t\t\t\tlayer={layer}\n\t\t\t\t\t\t\t\tindex={index}\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</LayersControl>\n\t\t\t)}\n\t\t\t{!isEmpty(layers) && (\n\t\t\t\t<LegendArea\n\t\t\t\t\tlegends={legends}\n\t\t\t\t\tlayers={layers as CustomThematicLayer[]}\n\t\t\t\t\tposition={\"topright\"}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</>\n\t);\n}\n\nconst MapArea = (\n\t{\n\t\tbase,\n\t\tcontrols,\n\t\tmapOptions,\n\t\tkey,\n\t\tlegends,\n\t\tlayers,\n\t\tanalyticsOptions,\n\t}: MapAreaProps,\n\tref: React.Ref<LeafletMap> | undefined,\n) => {\n\tconst { center, bounds } = useMapBounds();\n\tconst { current: id } = useRef<string>(uid());\n\tconst containerRef = useRef<HTMLDivElement | null>(null);\n\n\treturn (\n\t\t<div\n\t\t\tref={containerRef}\n\t\t\tid={`${id}-\"map-container`}\n\t\t\tstyle={{ height: \"100%\", width: \"100%\" }}\n\t\t>\n\t\t\t<MapContainer\n\t\t\t\tattributionControl\n\t\t\t\tref={ref}\n\t\t\t\tid={id}\n\t\t\t\tcenter={center}\n\t\t\t\tbounceAtZoomLimits\n\t\t\t\tbounds={bounds}\n\t\t\t\tstyle={{ height: \"100%\", width: \"100%\", minHeight: 500 }}\n\t\t\t\tkey={key}\n\t\t\t\ttrackResize\n\t\t\t\t{...mapOptions}\n\t\t\t>\n\t\t\t\t<MapUpdater containerRef={containerRef} bounds={bounds} />\n\t\t\t\t<MapLayersProvider\n\t\t\t\t\tanalyticsOptions={analyticsOptions}\n\t\t\t\t\tlayers={layers}\n\t\t\t\t>\n\t\t\t\t\t<MapLayerArea\n\t\t\t\t\t\tbase={base}\n\t\t\t\t\t\tid={id}\n\t\t\t\t\t\tcontrols={controls}\n\t\t\t\t\t\tlegends={legends}\n\t\t\t\t\t/>\n\t\t\t\t</MapLayersProvider>\n\t\t\t</MapContainer>\n\t\t</div>\n\t);\n};\n\nexport default forwardRef(MapArea);\n"]}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
4
4
|
var ui = require('@dhis2/ui');
|
|
5
|
+
var lodash = require('lodash');
|
|
5
6
|
|
|
6
7
|
function LegendCardHeader({
|
|
7
8
|
title,
|
|
@@ -19,7 +20,7 @@ function LegendCardHeader({
|
|
|
19
20
|
padding: 8
|
|
20
21
|
},
|
|
21
22
|
children: [
|
|
22
|
-
/* @__PURE__ */ jsxRuntime.jsx("h4", { style: { margin: 0 }, className: "legend-header", children: title }),
|
|
23
|
+
/* @__PURE__ */ jsxRuntime.jsx("h4", { style: { margin: 0 }, className: "legend-header", children: lodash.truncate(title, { length: 50, omission: "..." }) }),
|
|
23
24
|
collapsible && /* @__PURE__ */ jsxRuntime.jsx("div", { onClick: onCollapse, children: /* @__PURE__ */ jsxRuntime.jsx(ui.IconLaunch16, {}) })
|
|
24
25
|
]
|
|
25
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../../src/components/Map/components/MapLayer/components/LegendArea/components/LegendCardHeader/index.tsx"],"names":["jsxs","jsx","IconLaunch16"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../../src/components/Map/components/MapLayer/components/LegendArea/components/LegendCardHeader/index.tsx"],"names":["jsxs","jsx","truncate","IconLaunch16"],"mappings":";;;;;;AAIe,SAAR,gBAAkC,CAAA;AAAA,EACxC,KAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AACD,CAIG,EAAA;AACF,EACC,uBAAAA,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,KAAO,EAAA;AAAA,QACN,OAAS,EAAA,MAAA;AAAA,QACT,KAAO,EAAA,MAAA;AAAA,QACP,cAAgB,EAAA,eAAA;AAAA,QAChB,UAAY,EAAA,QAAA;AAAA,QACZ,OAAS,EAAA,CAAA;AAAA,OACV;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAC,cAAA,CAAC,QAAG,KAAO,EAAA,EAAE,MAAQ,EAAA,CAAA,IAAK,SAAU,EAAA,eAAA,EAClC,QAAS,EAAAC,eAAA,CAAA,KAAA,EAAO,EAAE,MAAQ,EAAA,EAAA,EAAI,QAAU,EAAA,KAAA,EAAO,CACjD,EAAA,CAAA;AAAA,QACC,+BACCD,cAAA,CAAA,KAAA,EAAA,EAAI,SAAS,UACb,EAAA,QAAA,kBAAAA,cAAA,CAACE,mBAAa,CACf,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA;AAAA,GAEF,CAAA;AAEF","file":"index.js","sourcesContent":["import { IconLaunch16 } from \"@dhis2/ui\";\nimport React from \"react\";\nimport { truncate } from \"lodash\";\n\nexport default function LegendCardHeader({\n\ttitle,\n\tcollapsible,\n\tonCollapse,\n}: {\n\ttitle: string;\n\tonCollapse?: () => void;\n\tcollapsible?: boolean;\n}) {\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\tdisplay: \"flex\",\n\t\t\t\twidth: \"100%\",\n\t\t\t\tjustifyContent: \"space-between\",\n\t\t\t\talignItems: \"center\",\n\t\t\t\tpadding: 8,\n\t\t\t}}\n\t\t>\n\t\t\t<h4 style={{ margin: 0 }} className=\"legend-header\">\n\t\t\t\t{truncate(title, { length: 50, omission: \"...\" })}\n\t\t\t</h4>\n\t\t\t{collapsible && (\n\t\t\t\t<div onClick={onCollapse}>\n\t\t\t\t\t<IconLaunch16 />\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n"]}
|
|
@@ -13,6 +13,9 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
|
13
13
|
|
|
14
14
|
var LegendCardHeader__default = /*#__PURE__*/_interopDefault(LegendCardHeader);
|
|
15
15
|
|
|
16
|
+
const formatNumber = Intl.NumberFormat("en-GB", {
|
|
17
|
+
notation: "standard"
|
|
18
|
+
}).format;
|
|
16
19
|
function LegendItem({
|
|
17
20
|
legend,
|
|
18
21
|
value
|
|
@@ -25,14 +28,13 @@ function LegendItem({
|
|
|
25
28
|
style: { backgroundColor: legend.color }
|
|
26
29
|
}
|
|
27
30
|
),
|
|
28
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "legend-item-label", children: `${legend.startValue} - ${legend.endValue}` }),
|
|
29
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "legend-item-value", children: `(${value})` })
|
|
31
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "legend-item-label", children: `${formatNumber(legend.startValue ?? 1)} - ${formatNumber(legend.endValue ?? 1)}` }),
|
|
32
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "legend-item-value", children: `(${formatNumber(value ?? 0)})` })
|
|
30
33
|
] });
|
|
31
34
|
}
|
|
32
35
|
function ChoroplethLegend({
|
|
33
36
|
dataItem,
|
|
34
37
|
data,
|
|
35
|
-
name,
|
|
36
38
|
collapsible,
|
|
37
39
|
onCollapse,
|
|
38
40
|
legends
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../../../src/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.tsx"],"names":["jsxs","jsx","LegendCardHeader","Divider","getLegendCount","forwardRef"],"mappings":";;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../../../src/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.tsx"],"names":["jsxs","jsx","LegendCardHeader","Divider","getLegendCount","forwardRef"],"mappings":";;;;;;;;;;;;;;;AAWA,MAAM,YAAA,GAAe,IAAK,CAAA,YAAA,CAAa,OAAS,EAAA;AAAA,EAC/C,QAAU,EAAA,UAAA;AACX,CAAC,CAAE,CAAA,MAAA,CAAA;AAEI,SAAS,UAAW,CAAA;AAAA,EAC1B,MAAA;AAAA,EACA,KAAA;AACD,CAGG,EAAA;AACF,EACC,uBAAAA,eAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,aACd,EAAA,QAAA,EAAA;AAAA,oBAAAC,cAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACA,SAAU,EAAA,mBAAA;AAAA,QACV,KAAO,EAAA,EAAE,eAAiB,EAAA,MAAA,CAAO,KAAM,EAAA;AAAA,OAAA;AAAA,KACxC;AAAA,mCACC,KAAI,EAAA,EAAA,SAAA,EAAU,mBAAqB,EAAA,QAAA,EAAA,CAAA,EAAG,aAAa,MAAO,CAAA,UAAA,IAAc,CAAC,CAAC,MAAM,YAAa,CAAA,MAAA,CAAO,QAAY,IAAA,CAAC,CAAC,CAAG,CAAA,EAAA,CAAA;AAAA,oBACtHA,cAAA,CAAC,SAAI,SAAU,EAAA,mBAAA,EAAqB,cAAI,YAAa,CAAA,KAAA,IAAS,CAAC,CAAC,CAAI,CAAA,CAAA,EAAA,CAAA;AAAA,GACrE,EAAA,CAAA,CAAA;AAEF,CAAA;AAEA,SAAS,gBACR,CAAA;AAAA,EACC,QAAA;AAAA,EACA,IAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AACD,CAAA,EAQA,GACC,EAAA;AACD,EAAA,uBACED,eAAA,CAAA,KAAA,EAAA,EAAI,SAAU,EAAA,aAAA,EAAc,GAC5B,EAAA,QAAA,EAAA;AAAA,oBAAAC,cAAA;AAAA,MAACC,iCAAA;AAAA,MAAA;AAAA,QACA,OAAO,QAAS,CAAA,WAAA;AAAA,QAChB,WAAA;AAAA,QACA,UAAA;AAAA,OAAA;AAAA,KACD;AAAA,oBACAD,cAAA,CAACE,UAAQ,EAAA,EAAA,MAAA,EAAQ,GAAK,EAAA,CAAA;AAAA,oBACrBF,cAAA,CAAA,KAAA,EAAA,EAAI,KAAO,EAAA,EAAE,UAAY,EAAA,CAAA,EAAK,EAAA,SAAA,EAAU,aACvC,EAAA,QAAA,EAAA,OAAA,EAAS,GAAI,CAAA,CAAC,MACd,qBAAAA,cAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QAEA,MAAA;AAAA,QACA,KAAA,EAAOG,qBAAe,CAAA,MAAA,EAAQ,IAAI,CAAA;AAAA,OAAA;AAAA,MAF7B,CAAA,EAAG,QAAQ,KAAK,CAAA,YAAA,CAAA;AAAA,KAItB,CACF,EAAA,CAAA;AAAA,GACD,EAAA,CAAA,CAAA;AAEF,CAAA;AAEO,IAAA,wBAAA,GAAQC,iBAAW,gBAAgB","file":"ChoroplethLegend.js","sourcesContent":["import \"../../../styles/legends.css\";\nimport { Divider } from \"@dhis2/ui\";\nimport type { Legend } from \"@hisptz/dhis2-utils\";\nimport React, { forwardRef } from \"react\";\nimport { getLegendCount } from \"../../../../../../../utils/map.js\";\nimport {\n\tThematicLayerData,\n\tThematicLayerDataItem,\n} from \"../../../../../interfaces\";\nimport LegendCardHeader from \"../../../../LegendArea/components/LegendCardHeader/index.js\";\n\nconst formatNumber = Intl.NumberFormat(\"en-GB\", {\n\tnotation: \"standard\",\n}).format;\n\nexport function LegendItem({\n\tlegend,\n\tvalue,\n}: {\n\tlegend: { startValue: number; endValue: number; color: string };\n\tvalue: number;\n}) {\n\treturn (\n\t\t<div className=\"legend-item\">\n\t\t\t<div\n\t\t\t\tclassName=\"legend-item-color\"\n\t\t\t\tstyle={{ backgroundColor: legend.color }}\n\t\t\t/>\n\t\t\t<div className=\"legend-item-label\">{`${formatNumber(legend.startValue ?? 1)} - ${formatNumber(legend.endValue ?? 1)}`}</div>\n\t\t\t<div className=\"legend-item-value\">{`(${formatNumber(value ?? 0)})`}</div>\n\t\t</div>\n\t);\n}\n\nfunction ChoroplethLegend(\n\t{\n\t\tdataItem,\n\t\tdata,\n\t\tcollapsible,\n\t\tonCollapse,\n\t\tlegends,\n\t}: {\n\t\tdata: ThematicLayerData[];\n\t\tdataItem: ThematicLayerDataItem;\n\t\tname?: string;\n\t\tcollapsible?: boolean;\n\t\tonCollapse?: () => void;\n\t\tlegends: Legend[];\n\t},\n\tref: React.LegacyRef<HTMLDivElement> | undefined,\n) {\n\treturn (\n\t\t<div className=\"legend-card\" ref={ref}>\n\t\t\t<LegendCardHeader\n\t\t\t\ttitle={dataItem.displayName}\n\t\t\t\tcollapsible={collapsible}\n\t\t\t\tonCollapse={onCollapse}\n\t\t\t/>\n\t\t\t<Divider margin={\"0\"} />\n\t\t\t<div style={{ paddingTop: 8 }} className=\"legend-list\">\n\t\t\t\t{legends?.map((legend: any) => (\n\t\t\t\t\t<LegendItem\n\t\t\t\t\t\tkey={`${legend?.color}-legend-list`}\n\t\t\t\t\t\tlegend={legend}\n\t\t\t\t\t\tvalue={getLegendCount(legend, data)}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport default forwardRef(ChoroplethLegend);\n"]}
|
package/dist/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.js
CHANGED
|
@@ -15,7 +15,7 @@ var index_js$2 = require('../../../../MapLayer/components/GoogleEngineLayer/cons
|
|
|
15
15
|
const analyticsQuery = {
|
|
16
16
|
analytics: {
|
|
17
17
|
resource: "analytics",
|
|
18
|
-
params: ({ ou, pe, dx, startDate, endDate }) => {
|
|
18
|
+
params: ({ ou, pe, dx, startDate, endDate, analyticsOptions }) => {
|
|
19
19
|
const peDimension = !lodash.isEmpty(pe) ? `pe:${pe?.join(";")}` : void 0;
|
|
20
20
|
const ouDimension = !lodash.isEmpty(ou) ? `ou:${ou?.join(";")}` : void 0;
|
|
21
21
|
const dxDimension = !lodash.isEmpty(dx) ? `dx:${dx?.join(";")}` : void 0;
|
|
@@ -23,7 +23,8 @@ const analyticsQuery = {
|
|
|
23
23
|
dimension: lodash.compact([dxDimension, peDimension, ouDimension]),
|
|
24
24
|
startDate,
|
|
25
25
|
endDate,
|
|
26
|
-
displayProperty: "NAME"
|
|
26
|
+
displayProperty: "NAME",
|
|
27
|
+
...analyticsOptions ?? {}
|
|
27
28
|
};
|
|
28
29
|
}
|
|
29
30
|
}
|
|
@@ -71,7 +72,9 @@ const legendSetsQuery = {
|
|
|
71
72
|
}
|
|
72
73
|
}
|
|
73
74
|
};
|
|
74
|
-
function useThematicLayers(
|
|
75
|
+
function useThematicLayers({
|
|
76
|
+
analyticsOptions
|
|
77
|
+
}) {
|
|
75
78
|
const engine = appRuntime.useDataEngine();
|
|
76
79
|
const [loading, setLoading] = react.useState(false);
|
|
77
80
|
const { orgUnits, orgUnitSelection } = index_js.useMapOrganisationUnit();
|
|
@@ -193,7 +196,8 @@ function useThematicLayers() {
|
|
|
193
196
|
ou,
|
|
194
197
|
pe,
|
|
195
198
|
startDate,
|
|
196
|
-
endDate
|
|
199
|
+
endDate,
|
|
200
|
+
analyticsOptions
|
|
197
201
|
}
|
|
198
202
|
});
|
|
199
203
|
sanitizedLayersWithData = layersWithoutData.map((layer) => ({
|
package/dist/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.js.map
CHANGED
|
@@ -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":"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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 { MapOrgUnit, PointOrgUnit } 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 }: 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};\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,startValue,endValue,color]\",\n\t\t\t],\n\t\t},\n\t},\n};\n\nexport function useThematicLayers(): 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},\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.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,cAAiB,GAAA;AAAA,EACtB,SAAW,EAAA;AAAA,IACV,QAAU,EAAA,WAAA;AAAA,IACV,MAAA,EAAQ,CAAC,EAAE,EAAA,EAAI,IAAI,EAAI,EAAA,SAAA,EAAW,OAAS,EAAA,gBAAA,EAA4B,KAAA;AACtE,MAAM,MAAA,WAAA,GAAc,CAACA,cAAA,CAAQ,EAAE,CAAA,GAC5B,MAAM,EAAI,EAAA,IAAA,CAAK,GAAG,CAAC,CACnB,CAAA,GAAA,KAAA,CAAA,CAAA;AACH,MAAM,MAAA,WAAA,GAAc,CAACA,cAAA,CAAQ,EAAE,CAAA,GAC5B,MAAM,EAAI,EAAA,IAAA,CAAK,GAAG,CAAC,CACnB,CAAA,GAAA,KAAA,CAAA,CAAA;AACH,MAAM,MAAA,WAAA,GAAc,CAACA,cAAA,CAAQ,EAAE,CAAA,GAC5B,MAAM,EAAI,EAAA,IAAA,CAAK,GAAG,CAAC,CACnB,CAAA,GAAA,KAAA,CAAA,CAAA;AAEH,MAAO,OAAA;AAAA,QACN,WAAWC,cAAQ,CAAA,CAAC,WAAa,EAAA,WAAA,EAAa,WAAW,CAAC,CAAA;AAAA,QAC1D,SAAA;AAAA,QACA,OAAA;AAAA,QACA,eAAiB,EAAA,MAAA;AAAA,QACjB,GAAI,oBAAoB,EAAC;AAAA,OAC1B,CAAA;AAAA,KACD;AAAA,GACD;AACD,CAAA,CAAA;AACA,MAAM,KAAQ,GAAA;AAAA,EACb,KAAO,EAAA;AAAA,IACN,QAAU,EAAA,aAAA;AAAA,IACV,MAAQ,EAAA,CAAC,EAAE,GAAA,EAAgB,MAAA;AAAA,MAC1B,EAAI,EAAA,CAAA,GAAA,EAAM,GAAI,CAAA,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA;AAAA,KACxB,CAAA;AAAA,GACD;AAAA,EACA,SAAW,EAAA;AAAA,IACV,QAAU,EAAA,WAAA;AAAA,IACV,MAAQ,EAAA,CAAC,EAAE,GAAA,EAAgB,MAAA;AAAA,MAC1B,SAAW,EAAA;AAAA,QACV,CAAM,GAAA,EAAA,GAAA,CAAI,IAAK,CAAA,GAAG,CAAC,CAAA,CAAA;AAAA,QACnB,CAAM,GAAA,EAAA,iBAAA,IAAI,IAAK,EAAA,EAAE,aAAa,CAAA,CAAA;AAAA,OAC/B;AAAA,MACA,QAAU,EAAA,IAAA;AAAA,MACV,aAAe,EAAA,IAAA;AAAA,KAChB,CAAA;AAAA,GACD;AACD,CAAA,CAAA;AACA,MAAM,aAAgB,GAAA;AAAA,EACrB,QAAU,EAAA;AAAA,IACT,QAAU,EAAA,2BAAA;AAAA,IACV,EAAI,EAAA,CAAC,EAAE,QAAA,EAAoB,KAAA,QAAA;AAAA,IAC3B,MAAQ,EAAA;AAAA,MACP,MAAQ,EAAA;AAAA,QACP,iEAAA;AAAA,OACD;AAAA,KACD;AAAA,GACD;AACD,CAAA,CAAA;AACA,MAAM,eAAkB,GAAA;AAAA,EACvB,UAAY,EAAA;AAAA,IACX,QAAU,EAAA,YAAA;AAAA,IACV,EAAI,EAAA,CAAC,EAAE,EAAA,EAAc,KAAA,EAAA;AAAA,IACrB,MAAQ,EAAA;AAAA,MACP,MAAQ,EAAA;AAAA,QACP,IAAA;AAAA,QACA,aAAA;AAAA,QACA,4CAAA;AAAA,OACD;AAAA,KACD;AAAA,GACD;AACD,CAAA,CAAA;AAEO,SAAS,iBAAkB,CAAA;AAAA,EACjC,gBAAA;AACD,CAEQ,EAAA;AACP,EAAA,MAAM,SAASC,wBAAc,EAAA,CAAA;AAC7B,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIC,eAAS,KAAK,CAAA,CAAA;AAC5C,EAAA,MAAM,EAAE,QAAA,EAAU,gBAAiB,EAAA,GAAIC,+BAAuB,EAAA,CAAA;AAC9D,EAAA,MAAM,EAAE,OAAS,EAAA,KAAA,EAAU,GAAAC,sBAAA,MAAmB,EAAC,CAAA;AAC/C,EAAA,MAAM,EAAK,GAAAC,aAAA;AAAA,IACV,MAAMC,4BAAqB,gBAAgB,CAAA;AAAA,IAC3C,CAAC,gBAAgB,CAAA;AAAA,GAClB,CAAA;AACA,EAAA,MAAM,EAAK,GAAAD,aAAA,CAAQ,MAAM,OAAA,EAAS,GAAI,CAAA,CAACE,GAAYA,KAAAA,GAAAA,CAAG,EAAE,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA,CAAA;AAEpE,EAAA,MAAM,EAAE,SAAA,EAAW,OAAQ,EAAA,GAAIF,cAAQ,MAAM;AAC5C,IAAA,IAAI,CAAC,KAAO,EAAA;AACX,MAAO,OAAA;AAAA,QACN,SAAW,EAAA,KAAA,CAAA;AAAA,QACX,OAAS,EAAA,KAAA,CAAA;AAAA,OACV,CAAA;AAAA,KACD;AACA,IAAO,OAAA;AAAA,MACN,SAAW,EAAAG,mBAAA,CAAa,KAAM,CAAA,KAAA,CAAM,cAAc,CAAA;AAAA,MAClD,OAAS,EAAAA,mBAAA,CAAa,KAAM,CAAA,GAAA,CAAI,cAAc,CAAA;AAAA,KAC/C,CAAA;AAAA,GACD,EAAG,CAAC,KAAK,CAAC,CAAA,CAAA;AACV,EAAM,MAAA,YAAA,GAAe,CAAC,IAAA,EAAW,KAA+B,KAAA;AAC/D,IAAA,IAAI,IAAM,EAAA;AACT,MAAM,MAAA,EAAE,WAAc,GAAA,IAAA,CAAA;AACtB,MAAA,MAAM,OAAO,SAAW,EAAA,IAAA,CAAA;AACxB,MAAM,MAAA,OAAA,GAAU,UAAU,OAAQ,CAAA,SAAA;AAAA,QACjC,CAAC,MAAgB,KAAA,MAAA,CAAO,IAAS,KAAA,IAAA;AAAA,OAClC,CAAA;AACA,MAAM,MAAA,OAAA,GAAU,UAAU,OAAQ,CAAA,SAAA;AAAA,QACjC,CAAC,MAAgB,KAAA,MAAA,CAAO,IAAS,KAAA,IAAA;AAAA,OAClC,CAAA;AACA,MAAM,MAAA,UAAA,GAAa,UAAU,OAAQ,CAAA,SAAA;AAAA,QACpC,CAAC,MAAgB,KAAA,MAAA,CAAO,IAAS,KAAA,OAAA;AAAA,OAClC,CAAA;AAEA,MAAI,IAAA,CAACT,cAAQ,CAAA,IAAI,CAAG,EAAA;AACnB,QAAO,OAAAU,aAAA;AAAA,UACN,QAAA,EAAU,GAAI,CAAA,CAACC,GAAmB,KAAA;AACjC,YAAA,MAAM,MAAM,IAAK,CAAA,IAAA;AAAA,cAChB,CAACC,IACAA,KAAAA,IAAAA,CAAI,OAAO,CAAA,KAAMD,GAAG,CAAA,EAAA,IACpBC,IAAI,CAAA,OAAO,CAAM,KAAA,KAAA,CAAM,QAAS,CAAA,EAAA;AAAA,aAClC,CAAA;AACA,YAAO,OAAA;AAAA,cACN,OAASD,EAAAA,GAAAA;AAAA,cACT,MAAM,GAAM,GAAA,UAAA,CAAW,GAAI,CAAA,UAAU,CAAC,CAAI,GAAA,KAAA,CAAA;AAAA,cAC1C,QAAU,EAAA;AAAA,gBACT,GAAG,KAAM,CAAA,QAAA;AAAA,eACV;AAAA,aACD,CAAA;AAAA,WACA,CAAA;AAAA,UACD,CAAC,MAAM,CAAA;AAAA,SACR,CAAA;AAAA,OACD;AACA,MAAA,OAAO,EAAC,CAAA;AAAA,KACT;AACA,IAAA,OAAO,EAAC,CAAA;AAAA,GACT,CAAA;AAEA,EAAM,MAAA,eAAA,GAAkB,OACvB,MACoC,KAAA;AACpC,IAAA,OAAQ,MAAME,WAAA;AAAA,MACb,MAAA;AAAA,MACAC,gBAAA,CAAS,OAAO,KAA+B,KAAA;AAC9C,QAAI,IAAA;AACH,UAAA,MAAM,UAAU,EAAC,CAAA;AACjB,UAAI,IAAA,KAAA,CAAM,SAAS,SAAW,EAAA;AAC7B,YAAM,MAAA,aAAA,GAAgB,MAAM,MAAO,CAAA,KAAA;AAAA,cAClC,eAAA;AAAA,cACA;AAAA,gBACC,SAAW,EAAA;AAAA,kBACV,EAAA,EAAI,MAAM,QAAS,CAAA,SAAA;AAAA,iBACpB;AAAA,eACD;AAAA,aACD,CAAA;AACA,YAAA,MAAM,YACL,aAAe,EAAA,UAAA,CAAA;AAChB,YAAA,IAAI,SAAW,EAAA;AACd,cAAQ,OAAA,CAAA,IAAA,CAAK,GAAG,SAAA,CAAU,OAAO,CAAA,CAAA;AAAA,aAClC;AAAA,WACM,MAAA;AACN,YAAA,MAAM,EAAE,KAAO,EAAA,UAAA,EAAe,GAAA,KAAA,CAAM,SAClC,YAAgB,IAAA;AAAA,cACjB,KAAO,EAAAC,wBAAA;AAAA,cACP,UAAY,EAAAC,+BAAA;AAAA,aACb,CAAA;AACA,YAAA,MAAM,UAAa,GAAAN,aAAA;AAAA,cAClB,KAAA,CAAM,KAAK,MAAO,CAAA,CAAC,UAAU,CAAC,CAAC,MAAM,IAAI,CAAA;AAAA,cACzC,MAAA;AAAA,aACD,CAAA;AACA,YAAA,MAAM,WAAc,GAAAO,sBAAA;AAAA,cACnBC,WAAA,CAAK,UAAU,CAAA,EAAG,IAAQ,IAAA,CAAA;AAAA,cAC1BC,WAAA,CAAK,UAAU,CAAA,EAAG,IAAQ,IAAA,CAAA;AAAA,cAC1B;AAAA,gBACC,YAAc,EAAA,KAAA;AAAA,gBACd,UAAA;AAAA,eACD;AAAA,aACD,CAAA;AACA,YAAQ,OAAA,CAAA,IAAA,CAAK,GAAG,WAAW,CAAA,CAAA;AAAA,WAC5B;AACA,UAAO,OAAA;AAAA,YACN,GAAG,KAAA;AAAA,YACH,OAAA;AAAA,WACD,CAAA;AAAA,iBACQ,CAAG,EAAA;AACX,UAAO,OAAA,KAAA,CAAA;AAAA,SACR;AAAA,OACA,CAAA;AAAA,KACF,CAAA;AAAA,GACD,CAAA;AAEA,EAAM,MAAA,cAAA,GAAiB,OACtB,MACoC,KAAA;AACpC,IAAI,IAAA;AACH,MAAA,UAAA,CAAW,IAAI,CAAA,CAAA;AACf,MAAA,MAAM,oBAAoB,MAAQ,EAAA,MAAA,CAAO,CAAC,KAAU,KAAA,CAAC,MAAM,IAAI,CAAA,CAAA;AAC/D,MAAA,MAAM,cAAiB,GAAAC,mBAAA;AAAA,QACtB,MAAA;AAAA,QACA,iBAAA;AAAA,QACA,IAAA;AAAA,OACD,CAAA;AACA,MAAA,MAAM,KAAK,iBAAkB,CAAA,GAAA,CAAI,CAAC,KAAU,KAAA,KAAA,CAAM,SAAS,EAAE,CAAA,CAAA;AAC7D,MAAA,IAAI,0BAA+B,EAAC,CAAA;AAEpC,MAAI,IAAA,CAACpB,cAAQ,CAAA,EAAE,CAAG,EAAA;AACjB,QAAA,MAAM,IAAO,GAAA,MAAM,MAAO,CAAA,KAAA,CAAM,cAAgB,EAAA;AAAA,UAC/C,SAAW,EAAA;AAAA,YACV,EAAA;AAAA,YACA,EAAA;AAAA,YACA,EAAA;AAAA,YACA,SAAA;AAAA,YACA,OAAA;AAAA,YACA,gBAAA;AAAA,WACD;AAAA,SACA,CAAA,CAAA;AACD,QAA0B,uBAAA,GAAA,iBAAA,CAAkB,GAAI,CAAA,CAAC,KAAW,MAAA;AAAA,UAC3D,GAAG,KAAA;AAAA,UACH,MACC,KAAO,EAAA,IAAA,IAAQ,KAAO,EAAA,QAAA,EAAU,eAAe,KAAM,CAAA,EAAA;AAAA,UACtD,IAAA,EAAM,YAAa,CAAA,IAAA,EAAM,KAAK,CAAA;AAAA,SAC7B,CAAA,CAAA,CAAA;AAAA,OACH;AACA,MAAA,MAAM,2BAA8B,GAAA,cAAA,CAAe,GAAI,CAAA,CAAC,KAAW,MAAA;AAAA,QAClE,GAAG,KAAA;AAAA,QACH,IAAM,EAAA,KAAA,CAAM,IAAM,EAAA,GAAA,CAAI,CAAC,KAAW,MAAA;AAAA,UACjC,GAAG,KAAA;AAAA,UACH,OAAA,EAASqB,YAAK,QAAU,EAAA;AAAA,YACvB,IAAA;AAAA,YACA,KAAM,CAAA,OAAA;AAAA,WACN,CAAA;AAAA,UACD,UAAU,KAAM,CAAA,QAAA;AAAA,UAChB,MACC,KAAO,EAAA,IAAA,IAAQ,KAAO,EAAA,QAAA,EAAU,eAAe,KAAM,CAAA,EAAA;AAAA,SACrD,CAAA,CAAA;AAAA,OACD,CAAA,CAAA,CAAA;AACF,MAAA,UAAA,CAAW,KAAK,CAAA,CAAA;AAChB,MAAA,OAAO,MAAM,eAAgB,CAAA;AAAA,QAC5B,GAAG,uBAAA;AAAA,QACH,GAAG,2BAAA;AAAA,OACH,CAAA,CAAA;AAAA,aACO,CAAQ,EAAA;AAChB,MAAQ,OAAA,CAAA,KAAA,CAAM,CAAiC,6BAAA,CAAA,EAAA,CAAA,CAAE,OAAO,CAAA,CAAA;AACxD,MAAA,UAAA,CAAW,KAAK,CAAA,CAAA;AAChB,MAAA,OAAO,EAAC,CAAA;AAAA,KACT;AAAA,GACD,CAAA;AAEA,EAAO,OAAA;AAAA,IACN,cAAA;AAAA,IACA,OAAA;AAAA,GACD,CAAA;AACD,CAAA;AAEO,SAAS,aAAgB,GAAA;AAC/B,EAAA,MAAM,SAASnB,wBAAc,EAAA,CAAA;AAC7B,EAAM,MAAA,EAAE,gBAAiB,EAAA,GAAIE,+BAAuB,EAAA,CAAA;AACpD,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAID,eAAS,KAAK,CAAA,CAAA;AAE5C,EAAA,MAAM,iBAAoB,GAAAmB,iBAAA;AAAA,IACzB,CAAC,aAAkB,YAAsC,KAAA;AACxD,MAAA,MAAM,EAAE,SAAA,EAAW,KAAM,EAAA,GAAK,eAAuB,EAAC,CAAA;AACtD,MAAM,MAAA,WAAA,GAAcC,uBAAiB,CAAA,SAAA,EAAW,QAAQ,CAAA,CAAA;AACxD,MAAA,MAAM,cAAiB,GAAAC,gBAAA;AAAA,QACtB,KAAO,EAAA,MAAA,CAAO,CAAC,KAAA,KAAe,MAAM,EAAE,CAAA;AAAA,OACvC,CAAA;AACA,MAAO,OAAAvB,cAAA;AAAA,QACN,WAAA,CAAY,GAAI,CAAA,CAAC,OAAiB,KAAA;AACjC,UAAA,MAAM,gBAAqB,cAAgB,EAAA,IAAA;AAAA,YAC1C,CAAC,OAAA,KAAiB,OAAQ,CAAA,UAAA,CAAW,OAAO,OAAQ,CAAA,EAAA;AAAA,WACrD,CAAA;AACA,UAAA,MAAM,aACJ,GAAA,YAAA,EAAc,QACZ,EAAA,sBAAA,IAA0B,EAAC,CAAA;AAC/B,UAAA,MAAM,OAAU,GAAAoB,WAAA;AAAA,YACf,aAAA;AAAA,YACA,CAACI,aACA,CAAC,CAACJ,YAAKI,QAAS,EAAA,iBAAA,IAAqB,EAAI,EAAA;AAAA,cACxC,IAAA;AAAA,cACA,OAAQ,CAAA,EAAA;AAAA,aACR,CAAA;AAAA,WACH,CAAA;AAEA,UAAA,IACC,CAAC,aAAA,IACD,aAAc,CAAA,UAAA,CAAW,SAAS,OACjC,EAAA;AACD,YAAA,OAAA;AAAA,WACD;AACA,UAAO,OAAA;AAAA,YACN,GAAG,OAAA;AAAA,YACH,OAAS,EAAA,aAAA;AAAA,YACT,KAAA,EAAO,cAAc,UAAW,CAAA,KAAA;AAAA,YAChC,IAAM,EAAA;AAAA,cACL,IAAM,EAAA,WAAA;AAAA,cACN,MAAM,OAAS,EAAA,MAAA;AAAA,aAChB;AAAA,WACD,CAAA;AAAA,SACA,CAAA;AAAA,OACF,CAAA;AAAA,KACD;AAAA,IACA,EAAC;AAAA,GACF,CAAA;AAEA,EAAA,MAAM,aAAgB,GAAAH,iBAAA;AAAA,IACrB,OACC,KAC2C,KAAA;AAC3C,MAAI,IAAA;AACH,QAAA,IAAI,CAAC,KAAA,CAAM,KAAS,IAAA,CAAC,MAAM,KAAO,EAAA;AACjC,UAAA,OAAA;AAAA,SACD;AACA,QAAA,UAAA,CAAW,IAAI,CAAA,CAAA;AACf,QAAA,MAAM,QAAQ,KAAM,CAAA,KAAA,GAAQ,CAAS,MAAA,EAAA,KAAA,CAAM,KAAK,CAAK,CAAA,GAAA,KAAA,CAAA,CAAA;AACrD,QAAA,MAAM,QAAQ,KAAM,CAAA,KAAA,GACjB,CAAY,SAAA,EAAA,KAAA,CAAM,KAAK,CACvB,CAAA,GAAA,KAAA,CAAA,CAAA;AACH,QAAA,MAAM,GAAM,GAAA;AAAA,UACX,GAAGf,4BAAqB,gBAAgB,CAAA;AAAA,UACxC,KAAA;AAAA,UACA,KAAA;AAAA,SACD,CAAA;AAEA,QAAA,MAAM,SAAY,GAAA,MAAM,MAAO,CAAA,KAAA,CAAM,KAAO,EAAA;AAAA,UAC3C,SAAW,EAAA;AAAA,YACV,GAAA;AAAA,WACD;AAAA,SACA,CAAA,CAAA;AACD,QAAA,MAAM,YAAe,GAAA,MAAM,MAAO,CAAA,KAAA,CAAM,aAAe,EAAA;AAAA,UACtD,SAAW,EAAA;AAAA,YACV,QAAA,EAAU,MAAM,KAAO,EAAA,QAAA;AAAA,WACxB;AAAA,SACA,CAAA,CAAA;AACD,QAAA,MAAM,oBAAuB,GAAA,iBAAA;AAAA,UAC5B,SAAA;AAAA,UACA,YAAA;AAAA,SACD,CAAA;AAEA,QAAA,MAAM,aACJ,GAAA,YAAA,EAAc,QAAkB,EAAA,sBAAA,IACjC,EAAC,CAAA;AAEF,QAAA,MAAM,yBAAyB,aAAc,CAAA,GAAA;AAAA,UAC5C,CAAC,OAAkB,MAAA;AAAA,YAClB,GAAG,OAAA;AAAA,YACH,iBAAmB,EAAA,KAAA,CAAA;AAAA,WACpB,CAAA;AAAA,SACD,CAAA;AACA,QAAA,UAAA,CAAW,KAAK,CAAA,CAAA;AAChB,QAAO,OAAA;AAAA,UACN,GAAG,KAAA;AAAA,UACH,MAAQ,EAAA,oBAAA;AAAA,UACR,KAAO,EAAA;AAAA,YACN,GAAG,KAAM,CAAA,KAAA;AAAA,YACT,aAAe,EAAA,sBAAA;AAAA,WAChB;AAAA,SACD,CAAA;AAAA,eACQ,CAAQ,EAAA;AAChB,QAAA,UAAA,CAAW,KAAK,CAAA,CAAA;AAChB,QAAQ,OAAA,CAAA,KAAA,CAAM,CAA6B,yBAAA,CAAA,EAAA,CAAA,CAAE,OAAO,CAAA,CAAA;AACpD,QAAA,OAAA;AAAA,OACD;AAAA,KACD;AAAA,IACA,EAAC;AAAA,GACF,CAAA;AAEA,EAAO,OAAA;AAAA,IACN,OAAA;AAAA,IACA,aAAA;AAAA,GACD,CAAA;AACD,CAAA;AAEO,SAAS,qBAAwB,GAAA;AACvC,EAAM,MAAA,EAAE,OAAQ,EAAA,GAAImB,+BAAqB,EAAA,CAAA;AACzC,EAAA,MAAM,WAAWC,kCAAgB,EAAA,CAAA;AAEjC,EAAA,eAAe,WACd,CAAA,WAAA,EACA,EAAE,OAAA,EAC4B,EAAA;AAC9B,IAAA,IAAI,YAAY,WAAa,EAAA;AAC5B,MAAI,IAAA;AACH,QAAY,WAAA,CAAA,WAAA,CAAY,QAAY,IAAA,EAAE,CAAA,CAAA;AACtC,QAAA,MAAM,SAAS,OAAS,EAAA,MAAA,CAAA;AACxB,QAAA,IAAI,MAAQ,EAAA;AACX,UAAA,WAAA,CAAY,UAAU,MAAM,CAAA,CAAA;AAAA,SAC7B;AACA,QAAA,OAAO,YAAY,GAAI,EAAA,CAAA;AAAA,eACf,CAAG,EAAA;AACX,QAAA,OAAA,CAAQ,MAAM,CAAC,CAAA,CAAA;AAAA,OAChB;AAAA,KACD;AAAA,GACD;AAEA,EAAA,MAAM,cAAiB,GAAAL,iBAAA;AAAA,IACtB,OACC,MACwC,KAAA;AACxC,MAAI,IAAAtB,cAAA,CAAQ,MAAM,CAAG,EAAA;AACpB,QAAA,OAAO,EAAC,CAAA;AAAA,OACT;AACA,MAAI,IAAA;AACH,QAAA,MAAM,EAAE,KAAA,EAAU,GAAA,MAAM,OAAQ,EAAA,CAAA;AAChC,QAAA,IAAI,CAAC,KAAO,EAAA;AACX,UAAQ,OAAA,CAAA,KAAA;AAAA,YACP,CAAA,2CAAA,CAAA;AAAA,WACD,CAAA;AACA,UAAA,OAAO,EAAC,CAAA;AAAA,SACT;AACA,QAAM,MAAA4B,qBAAA,CAAY,QAAS,CAAA,KAAA,EAAO,OAAO,CAAA,CAAA;AACzC,QAAO,OAAAf,WAAA;AAAA,UACN,MAAA;AAAA,UACAC,gBAAA,CAAS,OAAO,KAAkC,KAAA;AACjD,YAAI,IAAA;AACH,cAAM,MAAA,cAAA,GACLO,YAAKQ,8BAAqB,EAAA,CAAC,MAAM,KAAM,CAAA,IAAI,CAAC,CAAA,IAC5C,EAAC,CAAA;AACF,cAAA,MAAM,OAA8B,GAAA;AAAA,gBACnC,GAAG,cAAA;AAAA,gBACH,YAAA,EACC,KAAM,CAAA,YAAA,IACN,cAAgB,EAAA,YAAA;AAAA,gBACjB,MAAA,EAAQ,KAAM,CAAA,MAAA,IAAU,cAAgB,EAAA,MAAA;AAAA,eACzC,CAAA;AACA,cAAA,MAAM,YAAe,GAAA;AAAA,gBACpB,GAAG,KAAA;AAAA,gBACH,OAAA;AAAA,eACD,CAAA;AACA,cAAA,MAAM,WAAc,GAAA,IAAID,qBAAY,CAAA,EAAE,SAAS,CAAA,CAAA;AAC/C,cAAA,MAAM,MAAM,MAAM,WAAA;AAAA,gBACjB,WAAA;AAAA,gBACA,YAAA;AAAA,eACD,CAAA;AACA,cAAO,OAAA;AAAA,gBACN,GAAG,YAAA;AAAA,gBACH,MAAQ,EAAA,WAAA;AAAA,gBACR,GAAA;AAAA,eACD,CAAA;AAAA,qBACQ,CAAG,EAAA;AACX,cAAA,OAAA,CAAQ,MAAM,CAAC,CAAA,CAAA;AACf,cAAA,OAAA;AAAA,aACD;AAAA,WACA,CAAA;AAAA,SACF,CAAA;AAAA,eACQ,CAAQ,EAAA;AAChB,QAAQ,OAAA,CAAA,KAAA,CAAM,CAAiC,6BAAA,CAAA,EAAA,CAAA,CAAE,OAAO,CAAA,CAAA;AACxD,QAAA,OAAO,EAAC,CAAA;AAAA,OACT;AAAA,KACD;AAAA,IACA,CAAC,OAAO,CAAA;AAAA,GACT,CAAA;AAEA,EAAO,OAAA;AAAA,IACN,cAAA;AAAA,GACD,CAAA;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,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.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"]}
|
|
@@ -6,9 +6,9 @@ var ui = require('@dhis2/ui');
|
|
|
6
6
|
var lodash = require('lodash');
|
|
7
7
|
var react = require('react');
|
|
8
8
|
var reactLeaflet = require('react-leaflet');
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var
|
|
9
|
+
var state = require('../../../../state');
|
|
10
|
+
var hooks = require('../../hooks');
|
|
11
|
+
var hooks$1 = require('./hooks');
|
|
12
12
|
|
|
13
13
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
14
|
|
|
@@ -16,14 +16,19 @@ var i18n__default = /*#__PURE__*/_interopDefault(i18n);
|
|
|
16
16
|
|
|
17
17
|
function MapLayersProvider({
|
|
18
18
|
layers,
|
|
19
|
-
children
|
|
19
|
+
children,
|
|
20
|
+
analyticsOptions
|
|
20
21
|
}) {
|
|
21
|
-
const period =
|
|
22
|
-
const orgUnit =
|
|
22
|
+
const period = hooks.useMapPeriods();
|
|
23
|
+
const orgUnit = hooks.useMapOrganisationUnit();
|
|
23
24
|
const [updatedLayers, setUpdatedLayers] = react.useState([]);
|
|
24
|
-
const { sanitizeLayers: sanitizeThematicLayers, error } =
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
const { sanitizeLayers: sanitizeThematicLayers, error } = hooks$1.useThematicLayers(
|
|
26
|
+
{
|
|
27
|
+
analyticsOptions
|
|
28
|
+
}
|
|
29
|
+
);
|
|
30
|
+
const { sanitizeLayer: sanitizePointLayer } = hooks$1.usePointLayer();
|
|
31
|
+
const { sanitizeLayers: sanitizeEarthEngineLayers } = hooks$1.useGoogleEngineLayers();
|
|
27
32
|
const [loading, setLoading] = react.useState(false);
|
|
28
33
|
reactLeaflet.useMapEvents({
|
|
29
34
|
overlayremove: (event) => {
|
|
@@ -108,7 +113,7 @@ function MapLayersProvider({
|
|
|
108
113
|
] }) }) });
|
|
109
114
|
}
|
|
110
115
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
111
|
-
|
|
116
|
+
state.MapLayersContext.Provider,
|
|
112
117
|
{
|
|
113
118
|
value: { layers: updatedLayers, updateLayer },
|
|
114
119
|
children
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/components/Map/components/MapProvider/components/MapLayerProvider/index.tsx"],"names":["useMapPeriods","useMapOrganisationUnit","useState","useThematicLayers","usePointLayer","useGoogleEngineLayers","useMapEvents","head","compact","useCallback","updatedLayers","useEffect","find","jsx","Center","CircularLoader","jsxs","i18n","MapLayersContext"],"mappings":";;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/components/Map/components/MapProvider/components/MapLayerProvider/index.tsx"],"names":["useMapPeriods","useMapOrganisationUnit","useState","useThematicLayers","usePointLayer","useGoogleEngineLayers","useMapEvents","head","compact","useCallback","updatedLayers","useEffect","find","jsx","Center","CircularLoader","jsxs","i18n","MapLayersContext"],"mappings":"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","file":"index.js","sourcesContent":["import i18n from \"@dhis2/d2-i18n\";\nimport { Center, CircularLoader } from \"@dhis2/ui\";\nimport { LayersControlEvent } from \"leaflet\";\nimport { compact, find, head, set } from \"lodash\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { useMapEvents } from \"react-leaflet\";\nimport { MapLayersContext } from \"../../../../state\";\nimport { MapLayerConfig } from \"../../../MapArea/interfaces\";\nimport {\n\tCustomBoundaryLayer,\n\tCustomGoogleEngineLayer,\n\tCustomMapLayer,\n\tCustomPointLayer,\n\tCustomThematicLayer,\n\tThematicLayerConfig,\n} from \"../../../MapLayer/interfaces\";\nimport { useMapOrganisationUnit, useMapPeriods } from \"../../hooks\";\nimport {\n\tuseGoogleEngineLayers,\n\tusePointLayer,\n\tuseThematicLayers,\n} from \"./hooks\";\nimport type { MapAnalyticsOptions } from \"../../../../interfaces\";\n\nexport function MapLayersProvider({\n\tlayers,\n\tchildren,\n\tanalyticsOptions,\n}: {\n\tlayers: MapLayerConfig;\n\tchildren: React.ReactNode;\n\tanalyticsOptions?: MapAnalyticsOptions;\n}) {\n\tconst period = useMapPeriods();\n\tconst orgUnit = useMapOrganisationUnit();\n\tconst [updatedLayers, setUpdatedLayers] = useState<\n\t\tArray<\n\t\t\t| CustomThematicLayer\n\t\t\t| CustomBoundaryLayer\n\t\t\t| CustomPointLayer\n\t\t\t| CustomGoogleEngineLayer\n\t\t>\n\t>([]);\n\tconst { sanitizeLayers: sanitizeThematicLayers, error } = useThematicLayers(\n\t\t{\n\t\t\tanalyticsOptions,\n\t\t},\n\t);\n\tconst { sanitizeLayer: sanitizePointLayer } = usePointLayer();\n\tconst { sanitizeLayers: sanitizeEarthEngineLayers } =\n\t\tuseGoogleEngineLayers();\n\tconst [loading, setLoading] = useState(false);\n\n\tuseMapEvents({\n\t\toverlayremove: (event) => {\n\t\t\tsetupLayerListeners(\"remove\", event);\n\t\t},\n\t\toverlayadd: (event) => {\n\t\t\tsetupLayerListeners(\"add\", event);\n\t\t},\n\t});\n\n\tconst sanitizeLayers = async () => {\n\t\tsetLoading(true);\n\t\ttry {\n\t\t\tconst {\n\t\t\t\tboundaryLayers,\n\t\t\t\tthematicLayers,\n\t\t\t\tpointLayers,\n\t\t\t\tearthEngineLayers,\n\t\t\t} = layers;\n\t\t\tconst sanitizedThematicLayers = await sanitizeThematicLayers([\n\t\t\t\t...(thematicLayers ?? []),\n\t\t\t] as ThematicLayerConfig[]);\n\t\t\tconst sanitizedBoundaryLayers = (boundaryLayers ??\n\t\t\t\t[]) as CustomBoundaryLayer[];\n\t\t\tconst sanitizedPointLayer = head(pointLayers ?? [])\n\t\t\t\t? await sanitizePointLayer(\n\t\t\t\t\t\thead(pointLayers) as CustomPointLayer,\n\t\t\t\t\t)\n\t\t\t\t: undefined;\n\t\t\tconst sanitizedEarthEngineLayers = await sanitizeEarthEngineLayers([\n\t\t\t\t...(earthEngineLayers ?? []),\n\t\t\t] as unknown as CustomGoogleEngineLayer[]);\n\t\t\tsetUpdatedLayers(\n\t\t\t\tcompact([\n\t\t\t\t\t...(sanitizedBoundaryLayers ?? []),\n\t\t\t\t\t...(sanitizedThematicLayers ?? []),\n\t\t\t\t\tsanitizedPointLayer,\n\t\t\t\t\t...(sanitizedEarthEngineLayers ?? []),\n\t\t\t\t]),\n\t\t\t);\n\t\t} catch (e: any) {\n\t\t\tconsole.error(`Error sanitizing layers`, e.toString());\n\t\t}\n\t\tsetLoading(false);\n\t};\n\n\tconst updateLayer = useCallback(\n\t\t(id: string, updatedLayer: CustomMapLayer) => {\n\t\t\tsetUpdatedLayers((prevLayers) => {\n\t\t\t\tconst updatedLayers = [...prevLayers];\n\t\t\t\tconst layerIndex = updatedLayers.findIndex(\n\t\t\t\t\t(layer) => layer.id === updatedLayer.id,\n\t\t\t\t);\n\t\t\t\tif (layerIndex < 0) {\n\t\t\t\t\treturn prevLayers;\n\t\t\t\t}\n\t\t\t\tset(updatedLayers, layerIndex, updatedLayer);\n\t\t\t\treturn updatedLayers;\n\t\t\t});\n\t\t},\n\t\t[],\n\t);\n\n\tuseEffect(() => {\n\t\tsanitizeLayers().catch(console.error);\n\t}, [period, orgUnit]);\n\n\tconst setupLayerListeners = (\n\t\ttype: \"add\" | \"remove\",\n\t\tevent: LayersControlEvent,\n\t) => {\n\t\tconst name = event.name;\n\n\t\tconst layerConfig = find(updatedLayers, (layer: any) => {\n\t\t\tconst nameFromConfig =\n\t\t\t\tlayer?.name ?? layer?.dataItem?.displayname ?? layer?.label;\n\t\t\treturn nameFromConfig === name;\n\t\t});\n\n\t\tif (layerConfig) {\n\t\t\tupdateLayer(layerConfig.id, {\n\t\t\t\t...layerConfig,\n\t\t\t\tenabled: type === \"add\",\n\t\t\t});\n\t\t}\n\t};\n\n\tif (loading) {\n\t\treturn (\n\t\t\t<div style={{ height: \"100%\", width: \"100%\" }}>\n\t\t\t\t<Center>\n\t\t\t\t\t<CircularLoader small />\n\t\t\t\t</Center>\n\t\t\t</div>\n\t\t);\n\t}\n\tif (error) {\n\t\treturn (\n\t\t\t<div style={{ height: \"100%\", width: \"100%\" }}>\n\t\t\t\t<Center>\n\t\t\t\t\t<h4>\n\t\t\t\t\t\t{i18n.t(\"Error\")}: {error.message}\n\t\t\t\t\t</h4>\n\t\t\t\t</Center>\n\t\t\t</div>\n\t\t);\n\t}\n\treturn (\n\t\t<MapLayersContext.Provider\n\t\t\tvalue={{ layers: updatedLayers, updateLayer }}\n\t\t>\n\t\t\t{children}\n\t\t</MapLayersContext.Provider>\n\t);\n}\n"]}
|
|
@@ -16,7 +16,8 @@ const MapComponent = ({
|
|
|
16
16
|
key,
|
|
17
17
|
controls,
|
|
18
18
|
legends,
|
|
19
|
-
setRef
|
|
19
|
+
setRef,
|
|
20
|
+
analyticsOptions
|
|
20
21
|
}) => {
|
|
21
22
|
const sanitizedPointLayers = [
|
|
22
23
|
{
|
|
@@ -48,6 +49,7 @@ const MapComponent = ({
|
|
|
48
49
|
boundaryLayers: sanitizedBoundaryLayers,
|
|
49
50
|
pointLayers: sanitizedPointLayers
|
|
50
51
|
},
|
|
52
|
+
analyticsOptions,
|
|
51
53
|
legends,
|
|
52
54
|
controls,
|
|
53
55
|
ref: setRef,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/Map/DHIS2Map.tsx"],"names":[],"mappings":";;;;;;AAWA,MAAM,WAAA,GAAc,IAAI,WAAY,EAAA,CAAA;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,OAAA;AAAA,EACA,MAAA;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,UAAA;AAAA,KACJ;AAAA,GACD,CAAA;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,KAAA;AAAA,KACpC;AAAA,GACD,CAAA;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,MAAQ,EAAA;AAAA,YACP,cAAA;AAAA,YACA,iBAAA;AAAA,YACA,cAAgB,EAAA,uBAAA;AAAA,YAChB,WAAa,EAAA,oBAAA;AAAA,WACd;AAAA,UACA,OAAA;AAAA,UACA,QAAA;AAAA,UAEA,GAAK,EAAA,MAAA;AAAA,UACL,UAAA;AAAA,SAAA;AAAA,QAFK,GAAA;AAAA,OAGN;AAAA,KAAA;AAAA,GAEF,EAAA,CAAA,CAAA;AAEF,CAAA,CAAA;AACO,MAAM,QAA+B,GAAA,aAAA;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\tlegends,\n\tsetRef,\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\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\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":";;;;;;AAWA,MAAM,WAAA,GAAc,IAAI,WAAY,EAAA,CAAA;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,OAAA;AAAA,EACA,MAAA;AAAA,EACA,gBAAA;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,UAAA;AAAA,KACJ;AAAA,GACD,CAAA;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,KAAA;AAAA,KACpC;AAAA,GACD,CAAA;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,MAAQ,EAAA;AAAA,YACP,cAAA;AAAA,YACA,iBAAA;AAAA,YACA,cAAgB,EAAA,uBAAA;AAAA,YAChB,WAAa,EAAA,oBAAA;AAAA,WACd;AAAA,UACA,gBAAA;AAAA,UACA,OAAA;AAAA,UACA,QAAA;AAAA,UAEA,GAAK,EAAA,MAAA;AAAA,UACL,UAAA;AAAA,SAAA;AAAA,QAFK,GAAA;AAAA,OAGN;AAAA,KAAA;AAAA,GAEF,EAAA,CAAA,CAAA;AAEF,CAAA,CAAA;AACO,MAAM,QAA+B,GAAA,aAAA;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\tlegends,\n\tsetRef,\n\tanalyticsOptions,\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\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\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"]}
|
|
@@ -55,7 +55,15 @@ function MapLayerArea({
|
|
|
55
55
|
)
|
|
56
56
|
] });
|
|
57
57
|
}
|
|
58
|
-
const MapArea = ({
|
|
58
|
+
const MapArea = ({
|
|
59
|
+
base,
|
|
60
|
+
controls,
|
|
61
|
+
mapOptions,
|
|
62
|
+
key,
|
|
63
|
+
legends,
|
|
64
|
+
layers,
|
|
65
|
+
analyticsOptions
|
|
66
|
+
}, ref) => {
|
|
59
67
|
const { center, bounds } = useMapBounds();
|
|
60
68
|
const { current: id } = useRef(uid());
|
|
61
69
|
const containerRef = useRef(null);
|
|
@@ -79,15 +87,22 @@ const MapArea = ({ base, controls, mapOptions, key, legends, layers }, ref) => {
|
|
|
79
87
|
...mapOptions,
|
|
80
88
|
children: [
|
|
81
89
|
/* @__PURE__ */ jsx(MapUpdater, { containerRef, bounds }),
|
|
82
|
-
/* @__PURE__ */ jsx(
|
|
83
|
-
|
|
90
|
+
/* @__PURE__ */ jsx(
|
|
91
|
+
MapLayersProvider,
|
|
84
92
|
{
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
93
|
+
analyticsOptions,
|
|
94
|
+
layers,
|
|
95
|
+
children: /* @__PURE__ */ jsx(
|
|
96
|
+
MapLayerArea,
|
|
97
|
+
{
|
|
98
|
+
base,
|
|
99
|
+
id,
|
|
100
|
+
controls,
|
|
101
|
+
legends
|
|
102
|
+
}
|
|
103
|
+
)
|
|
89
104
|
}
|
|
90
|
-
)
|
|
105
|
+
)
|
|
91
106
|
]
|
|
92
107
|
},
|
|
93
108
|
key
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/components/Map/components/MapArea/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;AAmBA,SAAS,YAAa,CAAA;AAAA,EACrB,EAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AACD,CAQG,EAAA;AACF,EAAM,MAAA,EAAE,MAAO,EAAA,GAAI,YAAa,EAAA,CAAA;AAEhC,EAAA,uBAEE,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACA,EAAA;AAAA,QACA,WAAA,EACC,MAAM,WACN,IAAA,uIAAA;AAAA,QAED,GAAA,EACC,MAAM,GACN,IAAA,8EAAA;AAAA,OAAA;AAAA,KAEF;AAAA,IACC,QAAA,EAAU,GAAI,CAAA,CAAC,OACf,qBAAA,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACA,KAAO,EAAA,EAAA;AAAA,QAEN,GAAG,OAAA;AAAA,OAAA;AAAA,MADC,CAAA,EAAG,QAAQ,IAAI,CAAA,QAAA,CAAA;AAAA,KAGrB,CAAA;AAAA,IACA,CAAC,OAAQ,CAAA,MAAM,CACf,oBAAA,GAAA,CAAC,iBAAc,cAAc,EAAA,IAAA,EAAC,QAAU,EAAA,SAAA,EACrC,QAAiC,EAAA,MAAA,CAAA,GAAA;AAAA,MAClC,CAAC,OAA4B,KAC5B,qBAAA,GAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UAEA,KAAA;AAAA,UACA,KAAA;AAAA,SAAA;AAAA,QAFK,KAAM,CAAA,EAAA;AAAA,OAGZ;AAAA,KAGH,EAAA,CAAA;AAAA,IAEA,CAAC,OAAQ,CAAA,MAAM,CACf,oBAAA,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACA,OAAA;AAAA,QACA,MAAA;AAAA,QACA,QAAU,EAAA,UAAA;AAAA,OAAA;AAAA,KACX;AAAA,GAEF,EAAA,CAAA,CAAA;AAEF,CAAA;AAEA,MAAM,
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/components/Map/components/MapArea/index.tsx"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { uid } from \"@hisptz/dhis2-utils\";\nimport { Map as LeafletMap } from \"leaflet\";\nimport { isEmpty } from \"lodash\";\nimport React, { forwardRef, useRef } from \"react\";\nimport { LayersControl, MapContainer, TileLayer } from \"react-leaflet\";\nimport { useMapBounds } from \"../../hooks/map.js\";\nimport MapControl from \"../MapControls/index.js\";\nimport MapLayer from \"../MapLayer/index.js\";\nimport LegendArea from \"../MapLayer/components/LegendArea/index.js\";\nimport { CustomThematicLayer } from \"../MapLayer/interfaces/index.js\";\nimport { MapLayersProvider } from \"../MapProvider/components/MapLayerProvider/index.js\";\nimport { useMapLayers } from \"../MapProvider/hooks/index.js\";\nimport {\n\tMapAreaProps,\n\tMapControls,\n\tMapLegendConfig,\n} from \"./interfaces/index.js\";\nimport MapUpdater from \"../MapUpdater/index.js\";\n\nfunction MapLayerArea({\n\tid,\n\tbase,\n\tcontrols,\n\tlegends,\n}: {\n\tid: string;\n\tbase?: {\n\t\turl: string;\n\t\tattribution: string;\n\t};\n\tcontrols?: MapControls[];\n\tlegends?: MapLegendConfig;\n}) {\n\tconst { layers } = useMapLayers();\n\n\treturn (\n\t\t<>\n\t\t\t<TileLayer\n\t\t\t\tid={id}\n\t\t\t\tattribution={\n\t\t\t\t\tbase?.attribution ??\n\t\t\t\t\t'© <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> | © <a href=\"https://carto.com/attribution\">CARTO</a>'\n\t\t\t\t}\n\t\t\t\turl={\n\t\t\t\t\tbase?.url ??\n\t\t\t\t\t\"https://cartodb-basemaps-{s}.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png\"\n\t\t\t\t}\n\t\t\t/>\n\t\t\t{controls?.map((control) => (\n\t\t\t\t<MapControl\n\t\t\t\t\tmapId={id}\n\t\t\t\t\tkey={`${control.type}-control`}\n\t\t\t\t\t{...control}\n\t\t\t\t/>\n\t\t\t))}\n\t\t\t{!isEmpty(layers) && (\n\t\t\t\t<LayersControl hideSingleBase position={\"topleft\"}>\n\t\t\t\t\t{(layers as CustomThematicLayer[]).map(\n\t\t\t\t\t\t(layer: CustomThematicLayer, index) => (\n\t\t\t\t\t\t\t<MapLayer\n\t\t\t\t\t\t\t\tkey={layer.id}\n\t\t\t\t\t\t\t\tlayer={layer}\n\t\t\t\t\t\t\t\tindex={index}\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</LayersControl>\n\t\t\t)}\n\t\t\t{!isEmpty(layers) && (\n\t\t\t\t<LegendArea\n\t\t\t\t\tlegends={legends}\n\t\t\t\t\tlayers={layers as CustomThematicLayer[]}\n\t\t\t\t\tposition={\"topright\"}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</>\n\t);\n}\n\nconst MapArea = (\n\t{\n\t\tbase,\n\t\tcontrols,\n\t\tmapOptions,\n\t\tkey,\n\t\tlegends,\n\t\tlayers,\n\t\tanalyticsOptions,\n\t}: MapAreaProps,\n\tref: React.Ref<LeafletMap> | undefined,\n) => {\n\tconst { center, bounds } = useMapBounds();\n\tconst { current: id } = useRef<string>(uid());\n\tconst containerRef = useRef<HTMLDivElement | null>(null);\n\n\treturn (\n\t\t<div\n\t\t\tref={containerRef}\n\t\t\tid={`${id}-\"map-container`}\n\t\t\tstyle={{ height: \"100%\", width: \"100%\" }}\n\t\t>\n\t\t\t<MapContainer\n\t\t\t\tattributionControl\n\t\t\t\tref={ref}\n\t\t\t\tid={id}\n\t\t\t\tcenter={center}\n\t\t\t\tbounceAtZoomLimits\n\t\t\t\tbounds={bounds}\n\t\t\t\tstyle={{ height: \"100%\", width: \"100%\", minHeight: 500 }}\n\t\t\t\tkey={key}\n\t\t\t\ttrackResize\n\t\t\t\t{...mapOptions}\n\t\t\t>\n\t\t\t\t<MapUpdater containerRef={containerRef} bounds={bounds} />\n\t\t\t\t<MapLayersProvider\n\t\t\t\t\tanalyticsOptions={analyticsOptions}\n\t\t\t\t\tlayers={layers}\n\t\t\t\t>\n\t\t\t\t\t<MapLayerArea\n\t\t\t\t\t\tbase={base}\n\t\t\t\t\t\tid={id}\n\t\t\t\t\t\tcontrols={controls}\n\t\t\t\t\t\tlegends={legends}\n\t\t\t\t\t/>\n\t\t\t\t</MapLayersProvider>\n\t\t\t</MapContainer>\n\t\t</div>\n\t);\n};\n\nexport default forwardRef(MapArea);\n"]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { IconLaunch16 } from '@dhis2/ui';
|
|
3
|
+
import { truncate } from 'lodash';
|
|
3
4
|
|
|
4
5
|
function LegendCardHeader({
|
|
5
6
|
title,
|
|
@@ -17,7 +18,7 @@ function LegendCardHeader({
|
|
|
17
18
|
padding: 8
|
|
18
19
|
},
|
|
19
20
|
children: [
|
|
20
|
-
/* @__PURE__ */ jsx("h4", { style: { margin: 0 }, className: "legend-header", children: title }),
|
|
21
|
+
/* @__PURE__ */ jsx("h4", { style: { margin: 0 }, className: "legend-header", children: truncate(title, { length: 50, omission: "..." }) }),
|
|
21
22
|
collapsible && /* @__PURE__ */ jsx("div", { onClick: onCollapse, children: /* @__PURE__ */ jsx(IconLaunch16, {}) })
|
|
22
23
|
]
|
|
23
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../../../src/components/Map/components/MapLayer/components/LegendArea/components/LegendCardHeader/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../../../src/components/Map/components/MapLayer/components/LegendArea/components/LegendCardHeader/index.tsx"],"names":[],"mappings":";;;;AAIe,SAAR,gBAAkC,CAAA;AAAA,EACxC,KAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AACD,CAIG,EAAA;AACF,EACC,uBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,KAAO,EAAA;AAAA,QACN,OAAS,EAAA,MAAA;AAAA,QACT,KAAO,EAAA,MAAA;AAAA,QACP,cAAgB,EAAA,eAAA;AAAA,QAChB,UAAY,EAAA,QAAA;AAAA,QACZ,OAAS,EAAA,CAAA;AAAA,OACV;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,QAAG,KAAO,EAAA,EAAE,MAAQ,EAAA,CAAA,IAAK,SAAU,EAAA,eAAA,EAClC,QAAS,EAAA,QAAA,CAAA,KAAA,EAAO,EAAE,MAAQ,EAAA,EAAA,EAAI,QAAU,EAAA,KAAA,EAAO,CACjD,EAAA,CAAA;AAAA,QACC,+BACC,GAAA,CAAA,KAAA,EAAA,EAAI,SAAS,UACb,EAAA,QAAA,kBAAA,GAAA,CAAC,gBAAa,CACf,EAAA,CAAA;AAAA,OAAA;AAAA,KAAA;AAAA,GAEF,CAAA;AAEF","file":"index.js","sourcesContent":["import { IconLaunch16 } from \"@dhis2/ui\";\nimport React from \"react\";\nimport { truncate } from \"lodash\";\n\nexport default function LegendCardHeader({\n\ttitle,\n\tcollapsible,\n\tonCollapse,\n}: {\n\ttitle: string;\n\tonCollapse?: () => void;\n\tcollapsible?: boolean;\n}) {\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\tdisplay: \"flex\",\n\t\t\t\twidth: \"100%\",\n\t\t\t\tjustifyContent: \"space-between\",\n\t\t\t\talignItems: \"center\",\n\t\t\t\tpadding: 8,\n\t\t\t}}\n\t\t>\n\t\t\t<h4 style={{ margin: 0 }} className=\"legend-header\">\n\t\t\t\t{truncate(title, { length: 50, omission: \"...\" })}\n\t\t\t</h4>\n\t\t\t{collapsible && (\n\t\t\t\t<div onClick={onCollapse}>\n\t\t\t\t\t<IconLaunch16 />\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n"]}
|
|
@@ -5,6 +5,9 @@ import { forwardRef } from 'react';
|
|
|
5
5
|
import { getLegendCount } from '../../../../../../../utils/map.js';
|
|
6
6
|
import LegendCardHeader from '../../../../LegendArea/components/LegendCardHeader/index.js';
|
|
7
7
|
|
|
8
|
+
const formatNumber = Intl.NumberFormat("en-GB", {
|
|
9
|
+
notation: "standard"
|
|
10
|
+
}).format;
|
|
8
11
|
function LegendItem({
|
|
9
12
|
legend,
|
|
10
13
|
value
|
|
@@ -17,14 +20,13 @@ function LegendItem({
|
|
|
17
20
|
style: { backgroundColor: legend.color }
|
|
18
21
|
}
|
|
19
22
|
),
|
|
20
|
-
/* @__PURE__ */ jsx("div", { className: "legend-item-label", children: `${legend.startValue} - ${legend.endValue}` }),
|
|
21
|
-
/* @__PURE__ */ jsx("div", { className: "legend-item-value", children: `(${value})` })
|
|
23
|
+
/* @__PURE__ */ jsx("div", { className: "legend-item-label", children: `${formatNumber(legend.startValue ?? 1)} - ${formatNumber(legend.endValue ?? 1)}` }),
|
|
24
|
+
/* @__PURE__ */ jsx("div", { className: "legend-item-value", children: `(${formatNumber(value ?? 0)})` })
|
|
22
25
|
] });
|
|
23
26
|
}
|
|
24
27
|
function ChoroplethLegend({
|
|
25
28
|
dataItem,
|
|
26
29
|
data,
|
|
27
|
-
name,
|
|
28
30
|
collapsible,
|
|
29
31
|
onCollapse,
|
|
30
32
|
legends
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../../../../src/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.tsx"],"names":[],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../../../../src/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.tsx"],"names":[],"mappings":";;;;;;;AAWA,MAAM,YAAA,GAAe,IAAK,CAAA,YAAA,CAAa,OAAS,EAAA;AAAA,EAC/C,QAAU,EAAA,UAAA;AACX,CAAC,CAAE,CAAA,MAAA,CAAA;AAEI,SAAS,UAAW,CAAA;AAAA,EAC1B,MAAA;AAAA,EACA,KAAA;AACD,CAGG,EAAA;AACF,EACC,uBAAA,IAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,aACd,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACA,SAAU,EAAA,mBAAA;AAAA,QACV,KAAO,EAAA,EAAE,eAAiB,EAAA,MAAA,CAAO,KAAM,EAAA;AAAA,OAAA;AAAA,KACxC;AAAA,wBACC,KAAI,EAAA,EAAA,SAAA,EAAU,mBAAqB,EAAA,QAAA,EAAA,CAAA,EAAG,aAAa,MAAO,CAAA,UAAA,IAAc,CAAC,CAAC,MAAM,YAAa,CAAA,MAAA,CAAO,QAAY,IAAA,CAAC,CAAC,CAAG,CAAA,EAAA,CAAA;AAAA,oBACtH,GAAA,CAAC,SAAI,SAAU,EAAA,mBAAA,EAAqB,cAAI,YAAa,CAAA,KAAA,IAAS,CAAC,CAAC,CAAI,CAAA,CAAA,EAAA,CAAA;AAAA,GACrE,EAAA,CAAA,CAAA;AAEF,CAAA;AAEA,SAAS,gBACR,CAAA;AAAA,EACC,QAAA;AAAA,EACA,IAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AACD,CAAA,EAQA,GACC,EAAA;AACD,EAAA,uBACE,IAAA,CAAA,KAAA,EAAA,EAAI,SAAU,EAAA,aAAA,EAAc,GAC5B,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QACA,OAAO,QAAS,CAAA,WAAA;AAAA,QAChB,WAAA;AAAA,QACA,UAAA;AAAA,OAAA;AAAA,KACD;AAAA,oBACA,GAAA,CAAC,OAAQ,EAAA,EAAA,MAAA,EAAQ,GAAK,EAAA,CAAA;AAAA,oBACrB,GAAA,CAAA,KAAA,EAAA,EAAI,KAAO,EAAA,EAAE,UAAY,EAAA,CAAA,EAAK,EAAA,SAAA,EAAU,aACvC,EAAA,QAAA,EAAA,OAAA,EAAS,GAAI,CAAA,CAAC,MACd,qBAAA,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QAEA,MAAA;AAAA,QACA,KAAA,EAAO,cAAe,CAAA,MAAA,EAAQ,IAAI,CAAA;AAAA,OAAA;AAAA,MAF7B,CAAA,EAAG,QAAQ,KAAK,CAAA,YAAA,CAAA;AAAA,KAItB,CACF,EAAA,CAAA;AAAA,GACD,EAAA,CAAA,CAAA;AAEF,CAAA;AAEO,IAAA,wBAAA,GAAQ,WAAW,gBAAgB","file":"ChoroplethLegend.js","sourcesContent":["import \"../../../styles/legends.css\";\nimport { Divider } from \"@dhis2/ui\";\nimport type { Legend } from \"@hisptz/dhis2-utils\";\nimport React, { forwardRef } from \"react\";\nimport { getLegendCount } from \"../../../../../../../utils/map.js\";\nimport {\n\tThematicLayerData,\n\tThematicLayerDataItem,\n} from \"../../../../../interfaces\";\nimport LegendCardHeader from \"../../../../LegendArea/components/LegendCardHeader/index.js\";\n\nconst formatNumber = Intl.NumberFormat(\"en-GB\", {\n\tnotation: \"standard\",\n}).format;\n\nexport function LegendItem({\n\tlegend,\n\tvalue,\n}: {\n\tlegend: { startValue: number; endValue: number; color: string };\n\tvalue: number;\n}) {\n\treturn (\n\t\t<div className=\"legend-item\">\n\t\t\t<div\n\t\t\t\tclassName=\"legend-item-color\"\n\t\t\t\tstyle={{ backgroundColor: legend.color }}\n\t\t\t/>\n\t\t\t<div className=\"legend-item-label\">{`${formatNumber(legend.startValue ?? 1)} - ${formatNumber(legend.endValue ?? 1)}`}</div>\n\t\t\t<div className=\"legend-item-value\">{`(${formatNumber(value ?? 0)})`}</div>\n\t\t</div>\n\t);\n}\n\nfunction ChoroplethLegend(\n\t{\n\t\tdataItem,\n\t\tdata,\n\t\tcollapsible,\n\t\tonCollapse,\n\t\tlegends,\n\t}: {\n\t\tdata: ThematicLayerData[];\n\t\tdataItem: ThematicLayerDataItem;\n\t\tname?: string;\n\t\tcollapsible?: boolean;\n\t\tonCollapse?: () => void;\n\t\tlegends: Legend[];\n\t},\n\tref: React.LegacyRef<HTMLDivElement> | undefined,\n) {\n\treturn (\n\t\t<div className=\"legend-card\" ref={ref}>\n\t\t\t<LegendCardHeader\n\t\t\t\ttitle={dataItem.displayName}\n\t\t\t\tcollapsible={collapsible}\n\t\t\t\tonCollapse={onCollapse}\n\t\t\t/>\n\t\t\t<Divider margin={\"0\"} />\n\t\t\t<div style={{ paddingTop: 8 }} className=\"legend-list\">\n\t\t\t\t{legends?.map((legend: any) => (\n\t\t\t\t\t<LegendItem\n\t\t\t\t\t\tkey={`${legend?.color}-legend-list`}\n\t\t\t\t\t\tlegend={legend}\n\t\t\t\t\t\tvalue={getLegendCount(legend, data)}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport default forwardRef(ChoroplethLegend);\n"]}
|
package/dist/esm/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.js
CHANGED
|
@@ -13,7 +13,7 @@ import { EARTH_ENGINE_LAYERS } from '../../../../MapLayer/components/GoogleEngin
|
|
|
13
13
|
const analyticsQuery = {
|
|
14
14
|
analytics: {
|
|
15
15
|
resource: "analytics",
|
|
16
|
-
params: ({ ou, pe, dx, startDate, endDate }) => {
|
|
16
|
+
params: ({ ou, pe, dx, startDate, endDate, analyticsOptions }) => {
|
|
17
17
|
const peDimension = !isEmpty(pe) ? `pe:${pe?.join(";")}` : void 0;
|
|
18
18
|
const ouDimension = !isEmpty(ou) ? `ou:${ou?.join(";")}` : void 0;
|
|
19
19
|
const dxDimension = !isEmpty(dx) ? `dx:${dx?.join(";")}` : void 0;
|
|
@@ -21,7 +21,8 @@ const analyticsQuery = {
|
|
|
21
21
|
dimension: compact([dxDimension, peDimension, ouDimension]),
|
|
22
22
|
startDate,
|
|
23
23
|
endDate,
|
|
24
|
-
displayProperty: "NAME"
|
|
24
|
+
displayProperty: "NAME",
|
|
25
|
+
...analyticsOptions ?? {}
|
|
25
26
|
};
|
|
26
27
|
}
|
|
27
28
|
}
|
|
@@ -69,7 +70,9 @@ const legendSetsQuery = {
|
|
|
69
70
|
}
|
|
70
71
|
}
|
|
71
72
|
};
|
|
72
|
-
function useThematicLayers(
|
|
73
|
+
function useThematicLayers({
|
|
74
|
+
analyticsOptions
|
|
75
|
+
}) {
|
|
73
76
|
const engine = useDataEngine();
|
|
74
77
|
const [loading, setLoading] = useState(false);
|
|
75
78
|
const { orgUnits, orgUnitSelection } = useMapOrganisationUnit();
|
|
@@ -191,7 +194,8 @@ function useThematicLayers() {
|
|
|
191
194
|
ou,
|
|
192
195
|
pe,
|
|
193
196
|
startDate,
|
|
194
|
-
endDate
|
|
197
|
+
endDate,
|
|
198
|
+
analyticsOptions
|
|
195
199
|
}
|
|
196
200
|
});
|
|
197
201
|
sanitizedLayersWithData = layersWithoutData.map((layer) => ({
|
|
@@ -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 { MapOrgUnit, PointOrgUnit } 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 }: 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};\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,startValue,endValue,color]\",\n\t\t\t],\n\t\t},\n\t},\n};\n\nexport function useThematicLayers(): 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},\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.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/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,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.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"]}
|
|
@@ -4,18 +4,23 @@ import { Center, CircularLoader } from '@dhis2/ui';
|
|
|
4
4
|
import { set, find, head, compact } from 'lodash';
|
|
5
5
|
import { useState, useCallback, useEffect } from 'react';
|
|
6
6
|
import { useMapEvents } from 'react-leaflet';
|
|
7
|
-
import { MapLayersContext } from '../../../../state
|
|
8
|
-
import { useMapPeriods, useMapOrganisationUnit } from '../../hooks
|
|
9
|
-
import { useThematicLayers, usePointLayer, useGoogleEngineLayers } from './hooks
|
|
7
|
+
import { MapLayersContext } from '../../../../state';
|
|
8
|
+
import { useMapPeriods, useMapOrganisationUnit } from '../../hooks';
|
|
9
|
+
import { useThematicLayers, usePointLayer, useGoogleEngineLayers } from './hooks';
|
|
10
10
|
|
|
11
11
|
function MapLayersProvider({
|
|
12
12
|
layers,
|
|
13
|
-
children
|
|
13
|
+
children,
|
|
14
|
+
analyticsOptions
|
|
14
15
|
}) {
|
|
15
16
|
const period = useMapPeriods();
|
|
16
17
|
const orgUnit = useMapOrganisationUnit();
|
|
17
18
|
const [updatedLayers, setUpdatedLayers] = useState([]);
|
|
18
|
-
const { sanitizeLayers: sanitizeThematicLayers, error } = useThematicLayers(
|
|
19
|
+
const { sanitizeLayers: sanitizeThematicLayers, error } = useThematicLayers(
|
|
20
|
+
{
|
|
21
|
+
analyticsOptions
|
|
22
|
+
}
|
|
23
|
+
);
|
|
19
24
|
const { sanitizeLayer: sanitizePointLayer } = usePointLayer();
|
|
20
25
|
const { sanitizeLayers: sanitizeEarthEngineLayers } = useGoogleEngineLayers();
|
|
21
26
|
const [loading, setLoading] = useState(false);
|
package/dist/esm/components/Map/components/MapProvider/components/MapLayerProvider/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../src/components/Map/components/MapProvider/components/MapLayerProvider/index.tsx"],"names":["updatedLayers"],"mappings":";;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../src/components/Map/components/MapProvider/components/MapLayerProvider/index.tsx"],"names":["updatedLayers"],"mappings":"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","file":"index.js","sourcesContent":["import i18n from \"@dhis2/d2-i18n\";\nimport { Center, CircularLoader } from \"@dhis2/ui\";\nimport { LayersControlEvent } from \"leaflet\";\nimport { compact, find, head, set } from \"lodash\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { useMapEvents } from \"react-leaflet\";\nimport { MapLayersContext } from \"../../../../state\";\nimport { MapLayerConfig } from \"../../../MapArea/interfaces\";\nimport {\n\tCustomBoundaryLayer,\n\tCustomGoogleEngineLayer,\n\tCustomMapLayer,\n\tCustomPointLayer,\n\tCustomThematicLayer,\n\tThematicLayerConfig,\n} from \"../../../MapLayer/interfaces\";\nimport { useMapOrganisationUnit, useMapPeriods } from \"../../hooks\";\nimport {\n\tuseGoogleEngineLayers,\n\tusePointLayer,\n\tuseThematicLayers,\n} from \"./hooks\";\nimport type { MapAnalyticsOptions } from \"../../../../interfaces\";\n\nexport function MapLayersProvider({\n\tlayers,\n\tchildren,\n\tanalyticsOptions,\n}: {\n\tlayers: MapLayerConfig;\n\tchildren: React.ReactNode;\n\tanalyticsOptions?: MapAnalyticsOptions;\n}) {\n\tconst period = useMapPeriods();\n\tconst orgUnit = useMapOrganisationUnit();\n\tconst [updatedLayers, setUpdatedLayers] = useState<\n\t\tArray<\n\t\t\t| CustomThematicLayer\n\t\t\t| CustomBoundaryLayer\n\t\t\t| CustomPointLayer\n\t\t\t| CustomGoogleEngineLayer\n\t\t>\n\t>([]);\n\tconst { sanitizeLayers: sanitizeThematicLayers, error } = useThematicLayers(\n\t\t{\n\t\t\tanalyticsOptions,\n\t\t},\n\t);\n\tconst { sanitizeLayer: sanitizePointLayer } = usePointLayer();\n\tconst { sanitizeLayers: sanitizeEarthEngineLayers } =\n\t\tuseGoogleEngineLayers();\n\tconst [loading, setLoading] = useState(false);\n\n\tuseMapEvents({\n\t\toverlayremove: (event) => {\n\t\t\tsetupLayerListeners(\"remove\", event);\n\t\t},\n\t\toverlayadd: (event) => {\n\t\t\tsetupLayerListeners(\"add\", event);\n\t\t},\n\t});\n\n\tconst sanitizeLayers = async () => {\n\t\tsetLoading(true);\n\t\ttry {\n\t\t\tconst {\n\t\t\t\tboundaryLayers,\n\t\t\t\tthematicLayers,\n\t\t\t\tpointLayers,\n\t\t\t\tearthEngineLayers,\n\t\t\t} = layers;\n\t\t\tconst sanitizedThematicLayers = await sanitizeThematicLayers([\n\t\t\t\t...(thematicLayers ?? []),\n\t\t\t] as ThematicLayerConfig[]);\n\t\t\tconst sanitizedBoundaryLayers = (boundaryLayers ??\n\t\t\t\t[]) as CustomBoundaryLayer[];\n\t\t\tconst sanitizedPointLayer = head(pointLayers ?? [])\n\t\t\t\t? await sanitizePointLayer(\n\t\t\t\t\t\thead(pointLayers) as CustomPointLayer,\n\t\t\t\t\t)\n\t\t\t\t: undefined;\n\t\t\tconst sanitizedEarthEngineLayers = await sanitizeEarthEngineLayers([\n\t\t\t\t...(earthEngineLayers ?? []),\n\t\t\t] as unknown as CustomGoogleEngineLayer[]);\n\t\t\tsetUpdatedLayers(\n\t\t\t\tcompact([\n\t\t\t\t\t...(sanitizedBoundaryLayers ?? []),\n\t\t\t\t\t...(sanitizedThematicLayers ?? []),\n\t\t\t\t\tsanitizedPointLayer,\n\t\t\t\t\t...(sanitizedEarthEngineLayers ?? []),\n\t\t\t\t]),\n\t\t\t);\n\t\t} catch (e: any) {\n\t\t\tconsole.error(`Error sanitizing layers`, e.toString());\n\t\t}\n\t\tsetLoading(false);\n\t};\n\n\tconst updateLayer = useCallback(\n\t\t(id: string, updatedLayer: CustomMapLayer) => {\n\t\t\tsetUpdatedLayers((prevLayers) => {\n\t\t\t\tconst updatedLayers = [...prevLayers];\n\t\t\t\tconst layerIndex = updatedLayers.findIndex(\n\t\t\t\t\t(layer) => layer.id === updatedLayer.id,\n\t\t\t\t);\n\t\t\t\tif (layerIndex < 0) {\n\t\t\t\t\treturn prevLayers;\n\t\t\t\t}\n\t\t\t\tset(updatedLayers, layerIndex, updatedLayer);\n\t\t\t\treturn updatedLayers;\n\t\t\t});\n\t\t},\n\t\t[],\n\t);\n\n\tuseEffect(() => {\n\t\tsanitizeLayers().catch(console.error);\n\t}, [period, orgUnit]);\n\n\tconst setupLayerListeners = (\n\t\ttype: \"add\" | \"remove\",\n\t\tevent: LayersControlEvent,\n\t) => {\n\t\tconst name = event.name;\n\n\t\tconst layerConfig = find(updatedLayers, (layer: any) => {\n\t\t\tconst nameFromConfig =\n\t\t\t\tlayer?.name ?? layer?.dataItem?.displayname ?? layer?.label;\n\t\t\treturn nameFromConfig === name;\n\t\t});\n\n\t\tif (layerConfig) {\n\t\t\tupdateLayer(layerConfig.id, {\n\t\t\t\t...layerConfig,\n\t\t\t\tenabled: type === \"add\",\n\t\t\t});\n\t\t}\n\t};\n\n\tif (loading) {\n\t\treturn (\n\t\t\t<div style={{ height: \"100%\", width: \"100%\" }}>\n\t\t\t\t<Center>\n\t\t\t\t\t<CircularLoader small />\n\t\t\t\t</Center>\n\t\t\t</div>\n\t\t);\n\t}\n\tif (error) {\n\t\treturn (\n\t\t\t<div style={{ height: \"100%\", width: \"100%\" }}>\n\t\t\t\t<Center>\n\t\t\t\t\t<h4>\n\t\t\t\t\t\t{i18n.t(\"Error\")}: {error.message}\n\t\t\t\t\t</h4>\n\t\t\t\t</Center>\n\t\t\t</div>\n\t\t);\n\t}\n\treturn (\n\t\t<MapLayersContext.Provider\n\t\t\tvalue={{ layers: updatedLayers, updateLayer }}\n\t\t>\n\t\t\t{children}\n\t\t</MapLayersContext.Provider>\n\t);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"props.d.ts","sourceRoot":"","sources":["../../../../../src/components/ChartAnalytics/types/props.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,UAAU,EAAE,EAClB,cAAc,EACd,YAAY,EACZ,0BAA0B,EAC1B,MAAM,YAAY,CAAC;AACpB,OAAO,eAAe,MAAM,2BAA2B,CAAC;AAExD,MAAM,MAAM,SAAS,GAClB,QAAQ,GACR,KAAK,GACL,gBAAgB,GAChB,MAAM,GACN,cAAc,GACd,KAAK,GACL,aAAa,CAAC;AAEjB,MAAM,WAAW,iBAAiB;IACjC,MAAM,CAAC,EAAE,KAAK,CAAC;QACd,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,QAAQ,GAAG,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;KACf,CAAC,CAAC;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAC5B,MAAM,CAAC,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,0BAA0B,CAAC;IACnC,MAAM,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,cAAc,CAAC;QAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACF;AAED,MAAM,MAAM,WAAW,GAAG;IACzB,MAAM,EAAE;QACP,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACtB,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACxB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;KACtB,CAAC;IACF,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACvB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAChB,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,GAC3B,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,KAAK,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IACjE,WAAW,CAAC,EAAE,iBAAiB,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IACjC,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,CAAC,SAAS,KAAK,IAAI,CAAC;IAClD,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACrC,CAAC"}
|
|
1
|
+
{"version":3,"file":"props.d.ts","sourceRoot":"","sources":["../../../../../src/components/ChartAnalytics/types/props.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,UAAU,EAAE,EAClB,cAAc,EACd,YAAY,EACZ,0BAA0B,EAC1B,MAAM,YAAY,CAAC;AACpB,OAAO,eAAe,MAAM,2BAA2B,CAAC;AAExD,MAAM,MAAM,SAAS,GAClB,QAAQ,GACR,KAAK,GACL,gBAAgB,GAChB,MAAM,GACN,cAAc,GACd,KAAK,GACL,aAAa,CAAC;AAEjB,MAAM,WAAW,iBAAiB;IACjC,MAAM,CAAC,EAAE,KAAK,CAAC;QACd,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,QAAQ,GAAG,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;KACf,CAAC,CAAC;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAC5B,MAAM,CAAC,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,0BAA0B,CAAC;IACnC,MAAM,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,cAAc,CAAC;QAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACF;AAED,MAAM,MAAM,WAAW,GAAG;IACzB,MAAM,EAAE;QACP,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACtB,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACxB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;KACtB,CAAC;IACF,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACvB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAChB,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,GAC3B,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,KAAK,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IACjE,WAAW,CAAC,EAAE,iBAAiB,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IACjC,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,CAAC,SAAS,KAAK,IAAI,CAAC;IAClD,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACrC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"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;
|
|
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;AA4DlC,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAgB,CAAC;AAEzD;;KAEK;AACL,eAAO,MAAM,GAAG,oBAAW,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Map/components/MapArea/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,IAAI,UAAU,EAAE,MAAM,SAAS,CAAC;AAE5C,OAAO,KAA6B,MAAM,OAAO,CAAC;AASlD,OAAO,EACN,YAAY,EAGZ,MAAM,uBAAuB,CAAC;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Map/components/MapArea/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,IAAI,UAAU,EAAE,MAAM,SAAS,CAAC;AAE5C,OAAO,KAA6B,MAAM,OAAO,CAAC;AASlD,OAAO,EACN,YAAY,EAGZ,MAAM,uBAAuB,CAAC;;AAkH/B,wBAAmC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ControlPosition } from "leaflet";
|
|
2
2
|
import type { MapContainerProps } from "react-leaflet";
|
|
3
3
|
import { CustomBoundaryLayer, CustomPointLayer, EarthEngineLayerConfig, ThematicLayerConfig } from "../../MapLayer/interfaces";
|
|
4
|
+
import type { MapAnalyticsOptions } from "../../../interfaces";
|
|
4
5
|
export interface MapControls {
|
|
5
6
|
position: ControlPosition;
|
|
6
7
|
type: "zoom" | "rotate" | "fullscreen" | "compass" | "scale" | "print";
|
|
@@ -22,6 +23,7 @@ export interface MapAreaProps {
|
|
|
22
23
|
url: string;
|
|
23
24
|
attribution: string;
|
|
24
25
|
};
|
|
26
|
+
analyticsOptions?: MapAnalyticsOptions;
|
|
25
27
|
controls?: MapControls[];
|
|
26
28
|
mapOptions?: MapContainerProps;
|
|
27
29
|
legends?: MapLegendConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/Map/components/MapArea/interfaces/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EACN,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/Map/components/MapArea/interfaces/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EACN,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,MAAM,WAAW,WAAW;IAC3B,QAAQ,EAAE,eAAe,CAAC;IAC1B,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,eAAe,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC9B,cAAc,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACvC,cAAc,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACvC,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACjC,iBAAiB,CAAC,EAAE,sBAAsB,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,YAAY;IAC5B,IAAI,CAAC,EAAE;QACN,GAAG,EAAE,MAAM,CAAC;QACZ,WAAW,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,MAAM,EAAE,cAAc,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;CACb"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/components/Map/components/MapLayer/components/LegendArea/components/LegendCardHeader/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/components/Map/components/MapLayer/components/LegendArea/components/LegendCardHeader/index.tsx"],"names":[],"mappings":"AAIA,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACxC,KAAK,EACL,WAAW,EACX,UAAU,GACV,EAAE;IACF,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB,2CAqBA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChoroplethLegend.d.ts","sourceRoot":"","sources":["../../../../../../../../../../../src/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.tsx"],"names":[],"mappings":"AAAA,OAAO,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAqB,MAAM,OAAO,CAAC;AAE1C,OAAO,EACN,iBAAiB,EACjB,qBAAqB,EACrB,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"ChoroplethLegend.d.ts","sourceRoot":"","sources":["../../../../../../../../../../../src/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.tsx"],"names":[],"mappings":"AAAA,OAAO,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAqB,MAAM,OAAO,CAAC;AAE1C,OAAO,EACN,iBAAiB,EACjB,qBAAqB,EACrB,MAAM,2BAA2B,CAAC;AAOnC,wBAAgB,UAAU,CAAC,EAC1B,MAAM,EACN,KAAK,GACL,EAAE;IACF,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAChE,KAAK,EAAE,MAAM,CAAC;CACd,2CAWA;;UAUO,iBAAiB,EAAE;cACf,qBAAqB;WACxB,MAAM;kBACC,OAAO;iBACR,MAAM,IAAI;aACd,MAAM,EAAE;;AAyBnB,wBAA4C"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { CustomGoogleEngineLayer, CustomPointLayer, EarthEngineLayerConfig } from "../../../../MapLayer/interfaces";
|
|
2
|
-
|
|
2
|
+
import { type MapAnalyticsOptions } from "../../../../../interfaces/index.js";
|
|
3
|
+
export declare function useThematicLayers({ analyticsOptions, }: {
|
|
4
|
+
analyticsOptions?: MapAnalyticsOptions;
|
|
5
|
+
}): any;
|
|
3
6
|
export declare function usePointLayer(): {
|
|
4
7
|
loading: boolean;
|
|
5
8
|
sanitizeLayer: (layer: CustomPointLayer) => Promise<CustomPointLayer | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.tsx"],"names":[],"mappings":"AAmBA,OAAO,EACN,uBAAuB,EACvB,gBAAgB,EAEhB,sBAAsB,EAEtB,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.tsx"],"names":[],"mappings":"AAmBA,OAAO,EACN,uBAAuB,EACvB,gBAAgB,EAEhB,sBAAsB,EAEtB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACN,KAAK,mBAAmB,EAGxB,MAAM,oCAAoC,CAAC;AAiF5C,wBAAgB,iBAAiB,CAAC,EACjC,gBAAgB,GAChB,EAAE;IACF,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;CACvC,GAAG,GAAG,CA+KN;AAED,wBAAgB,aAAa;;2BAoDnB,gBAAgB,KACrB,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;EA+DzC;AAED,wBAAgB,qBAAqB;6BAwB1B,sBAAsB,EAAE,KAC9B,OAAO,CAAC,uBAAuB,EAAE,CAAC;EA0DtC"}
|
package/dist/types/components/Map/components/MapProvider/components/MapLayerProvider/index.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { MapLayerConfig } from "../../../MapArea/interfaces
|
|
3
|
-
|
|
2
|
+
import { MapLayerConfig } from "../../../MapArea/interfaces";
|
|
3
|
+
import type { MapAnalyticsOptions } from "../../../../interfaces";
|
|
4
|
+
export declare function MapLayersProvider({ layers, children, analyticsOptions, }: {
|
|
4
5
|
layers: MapLayerConfig;
|
|
5
6
|
children: React.ReactNode;
|
|
6
|
-
|
|
7
|
+
analyticsOptions?: MapAnalyticsOptions;
|
|
8
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
7
9
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/types/components/Map/components/MapProvider/components/MapLayerProvider/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../src/components/Map/components/MapProvider/components/MapLayerProvider/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAGhE,OAAO,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../src/components/Map/components/MapProvider/components/MapLayerProvider/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAGhE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAe7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE,wBAAgB,iBAAiB,CAAC,EACjC,MAAM,EACN,QAAQ,EACR,gBAAgB,GAChB,EAAE;IACF,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;CACvC,2CAsIA"}
|
|
@@ -14,6 +14,12 @@ export interface MapProviderProps {
|
|
|
14
14
|
end: Date;
|
|
15
15
|
};
|
|
16
16
|
};
|
|
17
|
+
analyticsOptions?: {
|
|
18
|
+
displayProperty?: "SHORTNAME" | "NAME";
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export interface MapAnalyticsOptions {
|
|
22
|
+
displayProperty?: "SHORTNAME" | "NAME";
|
|
17
23
|
}
|
|
18
24
|
export interface MapProps {
|
|
19
25
|
key?: string;
|
|
@@ -52,6 +58,7 @@ export interface MapProps {
|
|
|
52
58
|
};
|
|
53
59
|
};
|
|
54
60
|
mapOptions?: MapContainerProps;
|
|
61
|
+
analyticsOptions?: MapAnalyticsOptions;
|
|
55
62
|
}
|
|
56
63
|
export interface MapOrgUnit {
|
|
57
64
|
id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/Map/interfaces/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAChF,OAAO,EACN,sBAAsB,EACtB,mBAAmB,EACnB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACN,KAAK,wBAAwB,EAC7B,KAAK,iBAAiB,EACtB,GAAG,IAAI,UAAU,EACjB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,gBAAgB;IAChC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,eAAe,CAAC,EAAE;QACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,KAAK,CAAC,EAAE;YAAE,KAAK,EAAE,IAAI,CAAC;YAAC,GAAG,EAAE,IAAI,CAAA;SAAE,CAAC;KACnC,CAAC;CACF;AAED,MAAM,WAAW,QAAQ;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,CAAC;IACnC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,UAAU,CAAC,EAAE;QACZ,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE;YACP,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,QAAQ,CAAC,EAAE,MAAM,CAAC;SAClB,CAAC;QACF,mBAAmB,CAAC,EAAE,wBAAwB,CAAC;QAC/C,YAAY,CAAC,EAAE,CACd,CAAC,EAAE,iBAAiB,EACpB,IAAI,EAAE;YAAE,OAAO,EAAE,UAAU,CAAA;SAAE,KACzB,IAAI,CAAC;KACV,CAAC;IACF,aAAa,CAAC,EAAE;QACf,OAAO,EAAE,OAAO,CAAC;QACjB,mBAAmB,CAAC,EAAE,wBAAwB,CAAC;QAC/C,YAAY,CAAC,EAAE,CACd,CAAC,EAAE,iBAAiB,EACpB,IAAI,EAAE;YAAE,OAAO,EAAE,UAAU,CAAA;SAAE,KACzB,IAAI,CAAC;KACV,CAAC;IACF,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,cAAc,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACvC,iBAAiB,CAAC,EAAE,sBAAsB,EAAE,CAAC;IAC7C,eAAe,CAAC,EAAE;QACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,KAAK,CAAC,EAAE;YAAE,KAAK,EAAE,IAAI,CAAC;YAAC,GAAG,EAAE,IAAI,CAAA;SAAE,CAAC;KACnC,CAAC;IACF,UAAU,CAAC,EAAE,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/Map/interfaces/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hisptz/dhis2-analytics",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.48",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"module": "./dist/esm/index.js",
|
|
6
6
|
"types": "./dist/types/index.d.ts",
|
|
@@ -78,8 +78,8 @@
|
|
|
78
78
|
"screenfull": "^6.0.2",
|
|
79
79
|
"xlsx": "^0.18.5",
|
|
80
80
|
"zod": "^3.23.8",
|
|
81
|
-
"@hisptz/dhis2-ui": "2.0.
|
|
82
|
-
"@hisptz/dhis2-utils": "2.0.
|
|
81
|
+
"@hisptz/dhis2-ui": "2.0.29",
|
|
82
|
+
"@hisptz/dhis2-utils": "2.0.10"
|
|
83
83
|
},
|
|
84
84
|
"peerDependencies": {
|
|
85
85
|
"@dhis2/app-runtime": "^3.10.2",
|