@hisptz/dhis2-analytics 2.1.29 → 2.1.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.js +56 -2
  2. package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.js.map +1 -1
  3. package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/index.js.map +1 -1
  4. package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/CustomTooltip/index.js +3 -3
  5. package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/CustomTooltip/index.js.map +1 -1
  6. package/dist/components/Map/components/MapLayer/components/ThematicLayer/utils/label.js +1 -1
  7. package/dist/components/Map/components/MapLayer/components/ThematicLayer/utils/label.js.map +1 -1
  8. package/dist/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.js +2 -1
  9. package/dist/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.js.map +1 -1
  10. package/dist/components/Map/components/MapProvider/components/MapLayerProvider/index.js.map +1 -1
  11. package/dist/components/Map/utils/map.js +1 -1
  12. package/dist/components/Map/utils/map.js.map +1 -1
  13. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.js +56 -2
  14. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.js.map +1 -1
  15. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/index.js.map +1 -1
  16. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/CustomTooltip/index.js +2 -2
  17. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/CustomTooltip/index.js.map +1 -1
  18. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/utils/label.js +1 -1
  19. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/utils/label.js.map +1 -1
  20. package/dist/esm/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.js +2 -1
  21. package/dist/esm/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.js.map +1 -1
  22. package/dist/esm/components/Map/components/MapProvider/components/MapLayerProvider/index.js.map +1 -1
  23. package/dist/esm/components/Map/utils/map.js +1 -1
  24. package/dist/esm/components/Map/utils/map.js.map +1 -1
  25. package/dist/types/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.d.ts +1 -0
  26. package/dist/types/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.d.ts.map +1 -1
  27. package/dist/types/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/index.d.ts.map +1 -1
  28. package/dist/types/components/Map/components/MapLayer/components/ThematicLayer/components/CustomTooltip/index.d.ts +2 -2
  29. package/dist/types/components/Map/components/MapLayer/components/ThematicLayer/components/CustomTooltip/index.d.ts.map +1 -1
  30. package/dist/types/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.d.ts.map +1 -1
  31. package/dist/types/components/Map/components/MapProvider/components/MapLayerProvider/index.d.ts.map +1 -1
  32. package/package.json +3 -3
@@ -6,7 +6,7 @@ var jsxRuntime = require('react/jsx-runtime');
6
6
  require('../../../styles/legends.css');
7
7
  var ui = require('@dhis2/ui');
8
8
  var react = require('react');
9
- var map_js = require('../../../../../../../utils/map.js');
9
+ var utils = require('../../../../../../../utils');
10
10
  var LegendCardHeader = require('../../../../LegendArea/components/LegendCardHeader/index.js');
11
11
  var lodash = require('lodash');
12
12
 
@@ -21,6 +21,60 @@ function LegendItem({
21
21
  legend,
22
22
  value
23
23
  }) {
24
+ if (legend.name) {
25
+ return /* @__PURE__ */ jsxRuntime.jsxs(
26
+ "div",
27
+ {
28
+ style: {
29
+ display: "flex",
30
+ gap: 8,
31
+ alignItems: "stretch",
32
+ width: "100%"
33
+ },
34
+ children: [
35
+ /* @__PURE__ */ jsxRuntime.jsx(
36
+ "div",
37
+ {
38
+ style: {
39
+ alignSelf: "stretch",
40
+ backgroundColor: legend.color,
41
+ width: 8,
42
+ minHeight: "100%"
43
+ }
44
+ }
45
+ ),
46
+ /* @__PURE__ */ jsxRuntime.jsxs(
47
+ "div",
48
+ {
49
+ style: {
50
+ display: "flex",
51
+ flexDirection: "column",
52
+ gap: 2
53
+ },
54
+ children: [
55
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: legend.name }),
56
+ /* @__PURE__ */ jsxRuntime.jsxs(
57
+ "div",
58
+ {
59
+ style: {
60
+ display: "flex",
61
+ gap: 4,
62
+ fontSize: 11,
63
+ color: ui.colors.grey600
64
+ },
65
+ children: [
66
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "legend-item-label", children: `${formatNumber(legend.startValue ?? 1)} - ${formatNumber(legend.endValue ?? 1)}` }),
67
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "legend-item-value", children: `(${formatNumber(value ?? 0)})` })
68
+ ]
69
+ }
70
+ )
71
+ ]
72
+ }
73
+ )
74
+ ]
75
+ }
76
+ );
77
+ }
24
78
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "legend-item", children: [
25
79
  /* @__PURE__ */ jsxRuntime.jsx(
26
80
  "div",
@@ -54,7 +108,7 @@ function ChoroplethLegend({
54
108
  LegendItem,
55
109
  {
56
110
  legend,
57
- value: map_js.getLegendCount(legend, data)
111
+ value: utils.getLegendCount(legend, data)
58
112
  },
59
113
  `${legend?.color}-legend-list`
60
114
  )) })
@@ -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":";;;;;;;;;;;;;;;;AAYA,MAAM,YAAA,GAAe,IAAA,CAAK,YAAA,CAAa,OAAA,EAAS;AAAA,EAC/C,QAAA,EAAU;AACX,CAAC,CAAA,CAAE,MAAA;AAEI,SAAS,UAAA,CAAW;AAAA,EAC1B,MAAA;AAAA,EACA;AACD,CAAA,EAGG;AACF,EAAA,uBACCA,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EACd,QAAA,EAAA;AAAA,oBAAAC,cAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACA,SAAA,EAAU,mBAAA;AAAA,QACV,KAAA,EAAO,EAAE,eAAA,EAAiB,MAAA,CAAO,KAAA;AAAM;AAAA,KACxC;AAAA,mCACC,KAAA,EAAA,EAAI,SAAA,EAAU,mBAAA,EAAqB,QAAA,EAAA,CAAA,EAAG,aAAa,MAAA,CAAO,UAAA,IAAc,CAAC,CAAC,MAAM,YAAA,CAAa,MAAA,CAAO,QAAA,IAAY,CAAC,CAAC,CAAA,CAAA,EAAG,CAAA;AAAA,oBACtHA,cAAA,CAAC,SAAI,SAAA,EAAU,mBAAA,EAAqB,cAAI,YAAA,CAAa,KAAA,IAAS,CAAC,CAAC,CAAA,CAAA,CAAA,EAAI;AAAA,GAAA,EACrE,CAAA;AAEF;AAEA,SAAS,gBAAA,CACR;AAAA,EACC,QAAA;AAAA,EACA,IAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA;AACD,CAAA,EAQA,GAAA,EACC;AACD,EAAA,uBACCD,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EAAc,GAAA,EAC5B,QAAA,EAAA;AAAA,oBAAAC,cAAA;AAAA,MAACC,iCAAA;AAAA,MAAA;AAAA,QACA,OAAO,QAAA,CAAS,WAAA;AAAA,QAChB,WAAA;AAAA,QACA;AAAA;AAAA,KACD;AAAA,oBACAD,cAAA,CAACE,UAAA,EAAA,EAAQ,MAAA,EAAQ,GAAA,EAAK,CAAA;AAAA,oBACtBF,cAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,YAAY,CAAA,EAAE,EAAG,SAAA,EAAU,aAAA,EACvC,wBAAO,OAAA,EAAS,YAAY,CAAA,CAAE,GAAA,CAAI,CAAC,MAAA,qBACnCA,cAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QAEA,MAAA;AAAA,QACA,KAAA,EAAOG,qBAAA,CAAe,MAAA,EAAQ,IAAI;AAAA,OAAA;AAAA,MAF7B,CAAA,EAAG,QAAQ,KAAK,CAAA,YAAA;AAAA,KAItB,CAAA,EACF;AAAA,GAAA,EACD,CAAA;AAEF;AAEA,IAAO,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 { forwardRef, type LegacyRef } from \"react\";\nimport { getLegendCount } from \"../../../../../../../utils/map.js\";\nimport {\n\tThematicLayerData,\n\tThematicLayerDataItem,\n} from \"../../../../../interfaces\";\nimport LegendCardHeader from \"../../../../LegendArea/components/LegendCardHeader/index.js\";\nimport { sortBy } from \"lodash\";\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: 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: 4 }} className=\"legend-list\">\n\t\t\t\t{sortBy(legends, \"startValue\").map((legend) => (\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"]}
1
+ {"version":3,"sources":["../../../../../../../../../../src/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.tsx"],"names":["jsxs","jsx","colors","LegendCardHeader","Divider","getLegendCount","forwardRef"],"mappings":"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","file":"ChoroplethLegend.js","sourcesContent":["import \"../../../styles/legends.css\";\nimport { colors, Divider } from \"@dhis2/ui\";\nimport type { Legend } from \"@hisptz/dhis2-utils\";\nimport { forwardRef, type LegacyRef } from \"react\";\nimport { getLegendCount } from \"../../../../../../../utils\";\nimport {\n\tThematicLayerData,\n\tThematicLayerDataItem,\n} from \"../../../../../interfaces\";\nimport LegendCardHeader from \"../../../../LegendArea/components/LegendCardHeader/index.js\";\nimport { sortBy } from \"lodash\";\n\nconst formatNumber = Intl.NumberFormat(\"en-GB\", {\n\tnotation: \"standard\",\n}).format;\n\nexport function LegendItem({\n\tlegend,\n\tvalue,\n}: {\n\tlegend: {\n\t\tstartValue: number;\n\t\tendValue: number;\n\t\tcolor: string;\n\t\tname?: string;\n\t};\n\tvalue: number;\n}) {\n\tif (legend.name) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\tgap: 8,\n\t\t\t\t\talignItems: \"stretch\",\n\t\t\t\t\twidth: \"100%\",\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\talignSelf: \"stretch\",\n\t\t\t\t\t\tbackgroundColor: legend.color,\n\t\t\t\t\t\twidth: 8,\n\t\t\t\t\t\tminHeight: \"100%\",\n\t\t\t\t\t}}\n\t\t\t\t></div>\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\t\tflexDirection: \"column\",\n\t\t\t\t\t\tgap: 2,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<span>{legend.name}</span>\n\t\t\t\t\t<div\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\t\t\tgap: 4,\n\t\t\t\t\t\t\tfontSize: 11,\n\t\t\t\t\t\t\tcolor: colors.grey600,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className=\"legend-item-label\">{`${formatNumber(legend.startValue ?? 1)} - ${formatNumber(legend.endValue ?? 1)}`}</div>\n\t\t\t\t\t\t<div className=\"legend-item-value\">{`(${formatNumber(value ?? 0)})`}</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\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: 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: 4 }} className=\"legend-list\">\n\t\t\t\t{sortBy(legends, \"startValue\").map((legend) => (\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"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../../src/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/index.tsx"],"names":["getColorFromLegendSet","getCenter","chunk","flattenDeep","jsx","Fragment","jsxs","GeoJSON","highlightFeature","resetHighlight","colors","LabelMarker","CustomTooltip"],"mappings":";;;;;;;;;;;;;;;AAoBA,MAAM,YAAA,GAAe;AAAA,EACpB,MAAA,EAAQ;AACT,CAAA;AACA,MAAM,cAAA,GAAiB;AAAA,EACtB,MAAA,EAAQ;AACT,CAAA;AAQe,SAAR,UAAA,CAA4B;AAAA,EAClC,IAAA;AAAA,EACA,OAAA;AAAA,EACA,mBAAA;AAAA,EACA,YAAA;AAAA,EACA;AACD,CAAA,EAMG;AACF,EAAA,MAAM,EAAE,SAAQ,GAAI,IAAA;AACpB,EAAA,MAAM,KAAA,GAAQA,2BAAA,CAAsB,OAAA,EAAS,IAAA,CAAK,IAAI,CAAA;AAEtD,EAAA,MAAM,MAAA,GAASC,gBAAA;AAAA,IACdC,YAAA;AAAA,MACCC,kBAAA,CAAoB,OAAA,CAAQ,OAAA,CAAQ,QAAA,CAAS,WAAW,CAAA;AAAA,MACxD;AAAA,MACC,GAAA,CAAI,CAAC,CAAC,QAAA,EAAU,SAAS,CAAA,MAAiB;AAAA,MAC3C,SAAA;AAAA,MACA;AAAA,KACD,CAAE;AAAA,GACH;AAKA,EAAA,uBACCC,cAAA,CAAAC,mBAAA,EAAA,EACC,QAAA,kBAAAC,eAAA;AAAA,IAACC,oBAAA;AAAA,IAAA;AAAA,MACA,MAAM,OAAA,CAAQ,OAAA;AAAA,MACd,aAAA,EAAe;AAAA,QACd,SAAA,EAAW,CAAC,CAAA,KAAMC,sBAAA,CAAiB,GAAG,cAAc,CAAA;AAAA,QACpD,QAAA,EAAU,CAAC,CAAA,KAAMC,oBAAA,CAAe,GAAG,YAAY,CAAA;AAAA,QAC/C,GAAI,uBAAuB,EAAC;AAAA,QAC5B,SAAA,EAAW,CAAC,CAAA,KAAM;AACjB,UAAA,IAAI,YAAA,EAAc;AACjB,YAAA,YAAA,CAAa,GAAG,IAAI,CAAA;AAAA,UACrB;AAAA,QACD;AAAA,OACD;AAAA,MACA,WAAA,EAAW,IAAA;AAAA,MACX,WAAA,EAAa;AAAA,QACZ,SAAA,EAAW,KAAA;AAAA,QACX,WAAA,EAAa,CAAA;AAAA,QACb,OAAOC,SAAA,CAAO,OAAA;AAAA,QACd,IAAA,EAAM,IAAA;AAAA,QACN,MAAA,EAAQ;AAAA,OACT;AAAA,MAGC,QAAA,EAAA;AAAA,QAAA,WAAA,oBACAN,cAAA;AAAA,UAACO,uBAAA;AAAA,UAAA;AAAA,YACA,UAAA,EAAY,KAAA;AAAA,YACZ,WAAA;AAAA,YACA,MAAM,IAAA,CAAK,IAAA;AAAA,YACX,OAAA;AAAA,YACA,MAAA,EAAQ,CAAC,MAAA,CAAO,SAAA,EAAW,OAAO,QAAQ;AAAA;AAAA,SAC3C;AAAA,wBAEDP,cAAA,CAACQ,kCAAc,IAAA,EAAY;AAAA;AAAA,KAAA;AAAA,IAXtB,CAAA,EAAG,IAAA,CAAK,QAAA,CAAS,EAAE,CAAA,MAAA;AAAA,GAYzB,EACD,CAAA;AAEF","file":"index.js","sourcesContent":["import { colors } from \"@dhis2/ui\";\nimport type { Legend } from \"@hisptz/dhis2-utils\";\nimport React from \"react\";\nimport { GeoJSON } from \"react-leaflet\";\nimport { MapOrgUnit } from \"../../../../../../interfaces\";\nimport {\n\tgetColorFromLegendSet,\n\thighlightFeature,\n\tresetHighlight,\n} from \"../../../../../../utils\";\nimport {\n\ttype LayerLabelConfig,\n\tThematicLayerDataItem,\n} from \"../../../../interfaces\";\nimport CustomTooltip from \"../CustomTooltip/index.js\";\nimport { type LeafletEventHandlerFnMap, type LeafletMouseEvent } from \"leaflet\";\nimport { LabelMarker } from \"../LabelMarker\";\nimport { getCenter } from \"geolib\";\nimport { chunk, flattenDeep } from \"lodash\";\n\nconst defaultStyle = {\n\tweight: 1,\n};\nconst highlightStyle = {\n\tweight: 2,\n};\n\ninterface LayerData {\n\torgUnit: MapOrgUnit;\n\tdata?: number;\n\tdataItem: ThematicLayerDataItem;\n}\n\nexport default function Choropleth({\n\tdata,\n\tlegends,\n\tcustomEventHandlers,\n\tonLayerClick,\n\tlabelConfig,\n}: {\n\tdata: LayerData;\n\tlegends: Legend[];\n\tcustomEventHandlers?: LeafletEventHandlerFnMap;\n\tonLayerClick?: (e: LeafletMouseEvent, data: LayerData) => void;\n\tlabelConfig?: LayerLabelConfig;\n}) {\n\tconst { orgUnit } = data;\n\tconst color = getColorFromLegendSet(legends, data.data);\n\n\tconst center = getCenter(\n\t\tchunk<number>(\n\t\t\tflattenDeep<number>(orgUnit.geoJSON.geometry.coordinates),\n\t\t\t2,\n\t\t).map(([latitude, longitude]: number[]) => ({\n\t\t\tlongitude,\n\t\t\tlatitude,\n\t\t})),\n\t) as {\n\t\tlongitude: number;\n\t\tlatitude: number;\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<GeoJSON\n\t\t\t\tdata={orgUnit.geoJSON}\n\t\t\t\teventHandlers={{\n\t\t\t\t\tmouseover: (e) => highlightFeature(e, highlightStyle),\n\t\t\t\t\tmouseout: (e) => resetHighlight(e, defaultStyle),\n\t\t\t\t\t...(customEventHandlers ?? {}),\n\t\t\t\t\tmousedown: (e) => {\n\t\t\t\t\t\tif (onLayerClick) {\n\t\t\t\t\t\t\tonLayerClick(e, data);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t\tinteractive\n\t\t\t\tpathOptions={{\n\t\t\t\t\tfillColor: color,\n\t\t\t\t\tfillOpacity: 1,\n\t\t\t\t\tcolor: colors.grey900,\n\t\t\t\t\tfill: true,\n\t\t\t\t\tweight: 1,\n\t\t\t\t}}\n\t\t\t\tkey={`${data.dataItem.id}-layer`}\n\t\t\t>\n\t\t\t\t{labelConfig && (\n\t\t\t\t\t<LabelMarker\n\t\t\t\t\t\tlayerColor={color}\n\t\t\t\t\t\tlabelConfig={labelConfig}\n\t\t\t\t\t\tdata={data.data}\n\t\t\t\t\t\torgUnit={orgUnit}\n\t\t\t\t\t\tcenter={[center.longitude, center.latitude]}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t<CustomTooltip data={data} />\n\t\t\t</GeoJSON>\n\t\t</>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../../../../src/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/index.tsx"],"names":["getColorFromLegendSet","getCenter","chunk","flattenDeep","jsx","Fragment","jsxs","GeoJSON","highlightFeature","resetHighlight","colors","LabelMarker","CustomTooltip"],"mappings":";;;;;;;;;;;;;;;AAoBA,MAAM,YAAA,GAAe;AAAA,EACpB,MAAA,EAAQ;AACT,CAAA;AACA,MAAM,cAAA,GAAiB;AAAA,EACtB,MAAA,EAAQ;AACT,CAAA;AAQe,SAAR,UAAA,CAA4B;AAAA,EAClC,IAAA;AAAA,EACA,OAAA;AAAA,EACA,mBAAA;AAAA,EACA,YAAA;AAAA,EACA;AACD,CAAA,EAMG;AACF,EAAA,MAAM,EAAE,SAAQ,GAAI,IAAA;AAEpB,EAAA,MAAM,KAAA,GAAQA,2BAAA,CAAsB,OAAA,EAAS,IAAA,CAAK,IAAI,CAAA;AAEtD,EAAA,MAAM,MAAA,GAASC,gBAAA;AAAA,IACdC,YAAA;AAAA,MACCC,kBAAA,CAAoB,OAAA,CAAQ,OAAA,CAAQ,QAAA,CAAS,WAAW,CAAA;AAAA,MACxD;AAAA,MACC,GAAA,CAAI,CAAC,CAAC,QAAA,EAAU,SAAS,CAAA,MAAiB;AAAA,MAC3C,SAAA;AAAA,MACA;AAAA,KACD,CAAE;AAAA,GACH;AAKA,EAAA,uBACCC,cAAA,CAAAC,mBAAA,EAAA,EACC,QAAA,kBAAAC,eAAA;AAAA,IAACC,oBAAA;AAAA,IAAA;AAAA,MACA,MAAM,OAAA,CAAQ,OAAA;AAAA,MACd,aAAA,EAAe;AAAA,QACd,SAAA,EAAW,CAAC,CAAA,KAAMC,sBAAA,CAAiB,GAAG,cAAc,CAAA;AAAA,QACpD,QAAA,EAAU,CAAC,CAAA,KAAMC,oBAAA,CAAe,GAAG,YAAY,CAAA;AAAA,QAC/C,GAAI,uBAAuB,EAAC;AAAA,QAC5B,SAAA,EAAW,CAAC,CAAA,KAAM;AACjB,UAAA,IAAI,YAAA,EAAc;AACjB,YAAA,YAAA,CAAa,GAAG,IAAI,CAAA;AAAA,UACrB;AAAA,QACD;AAAA,OACD;AAAA,MACA,WAAA,EAAW,IAAA;AAAA,MACX,WAAA,EAAa;AAAA,QACZ,SAAA,EAAW,KAAA;AAAA,QACX,WAAA,EAAa,CAAA;AAAA,QACb,OAAOC,SAAA,CAAO,OAAA;AAAA,QACd,IAAA,EAAM,IAAA;AAAA,QACN,MAAA,EAAQ;AAAA,OACT;AAAA,MAGC,QAAA,EAAA;AAAA,QAAA,WAAA,oBACAN,cAAA;AAAA,UAACO,uBAAA;AAAA,UAAA;AAAA,YACA,UAAA,EAAY,KAAA;AAAA,YACZ,WAAA;AAAA,YACA,MAAM,IAAA,CAAK,IAAA;AAAA,YACX,OAAA;AAAA,YACA,MAAA,EAAQ,CAAC,MAAA,CAAO,SAAA,EAAW,OAAO,QAAQ;AAAA;AAAA,SAC3C;AAAA,wBAEDP,cAAA,CAACQ,kCAAc,IAAA,EAAY;AAAA;AAAA,KAAA;AAAA,IAXtB,CAAA,EAAG,IAAA,CAAK,QAAA,CAAS,EAAE,CAAA,MAAA;AAAA,GAYzB,EACD,CAAA;AAEF","file":"index.js","sourcesContent":["import { colors } from \"@dhis2/ui\";\nimport type { Legend } from \"@hisptz/dhis2-utils\";\nimport React from \"react\";\nimport { GeoJSON } from \"react-leaflet\";\nimport { MapOrgUnit } from \"../../../../../../interfaces\";\nimport {\n\tgetColorFromLegendSet,\n\thighlightFeature,\n\tresetHighlight,\n} from \"../../../../../../utils\";\nimport {\n\ttype LayerLabelConfig,\n\tThematicLayerDataItem,\n} from \"../../../../interfaces\";\nimport CustomTooltip from \"../CustomTooltip/index.js\";\nimport { type LeafletEventHandlerFnMap, type LeafletMouseEvent } from \"leaflet\";\nimport { LabelMarker } from \"../LabelMarker\";\nimport { getCenter } from \"geolib\";\nimport { chunk, flattenDeep } from \"lodash\";\n\nconst defaultStyle = {\n\tweight: 1,\n};\nconst highlightStyle = {\n\tweight: 2,\n};\n\ninterface LayerData {\n\torgUnit: MapOrgUnit;\n\tdata?: number;\n\tdataItem: ThematicLayerDataItem;\n}\n\nexport default function Choropleth({\n\tdata,\n\tlegends,\n\tcustomEventHandlers,\n\tonLayerClick,\n\tlabelConfig,\n}: {\n\tdata: LayerData;\n\tlegends: Legend[];\n\tcustomEventHandlers?: LeafletEventHandlerFnMap;\n\tonLayerClick?: (e: LeafletMouseEvent, data: LayerData) => void;\n\tlabelConfig?: LayerLabelConfig;\n}) {\n\tconst { orgUnit } = data;\n\n\tconst color = getColorFromLegendSet(legends, data.data);\n\n\tconst center = getCenter(\n\t\tchunk<number>(\n\t\t\tflattenDeep<number>(orgUnit.geoJSON.geometry.coordinates),\n\t\t\t2,\n\t\t).map(([latitude, longitude]: number[]) => ({\n\t\t\tlongitude,\n\t\t\tlatitude,\n\t\t})),\n\t) as {\n\t\tlongitude: number;\n\t\tlatitude: number;\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<GeoJSON\n\t\t\t\tdata={orgUnit.geoJSON}\n\t\t\t\teventHandlers={{\n\t\t\t\t\tmouseover: (e) => highlightFeature(e, highlightStyle),\n\t\t\t\t\tmouseout: (e) => resetHighlight(e, defaultStyle),\n\t\t\t\t\t...(customEventHandlers ?? {}),\n\t\t\t\t\tmousedown: (e) => {\n\t\t\t\t\t\tif (onLayerClick) {\n\t\t\t\t\t\t\tonLayerClick(e, data);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t\tinteractive\n\t\t\t\tpathOptions={{\n\t\t\t\t\tfillColor: color,\n\t\t\t\t\tfillOpacity: 1,\n\t\t\t\t\tcolor: colors.grey900,\n\t\t\t\t\tfill: true,\n\t\t\t\t\tweight: 1,\n\t\t\t\t}}\n\t\t\t\tkey={`${data.dataItem.id}-layer`}\n\t\t\t>\n\t\t\t\t{labelConfig && (\n\t\t\t\t\t<LabelMarker\n\t\t\t\t\t\tlayerColor={color}\n\t\t\t\t\t\tlabelConfig={labelConfig}\n\t\t\t\t\t\tdata={data.data}\n\t\t\t\t\t\torgUnit={orgUnit}\n\t\t\t\t\t\tcenter={[center.longitude, center.latitude]}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t<CustomTooltip data={data} />\n\t\t\t</GeoJSON>\n\t\t</>\n\t);\n}\n"]}
@@ -3,7 +3,7 @@
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var i18n = require('@dhis2/d2-i18n');
5
5
  var reactLeaflet = require('react-leaflet');
6
- var index_js = require('../../../../../MapProvider/hooks/index.js');
6
+ var hooks = require('../../../../../MapProvider/hooks');
7
7
 
8
8
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
9
9
 
@@ -13,9 +13,9 @@ function CustomTooltip({
13
13
  data: dataObject
14
14
  }) {
15
15
  const { dataItem, orgUnit, data } = dataObject ?? {};
16
- const { periods } = index_js.useMapPeriods() ?? {};
16
+ const { periods } = hooks.useMapPeriods() ?? {};
17
17
  const formatter = Intl.NumberFormat(navigator.language, {}).format;
18
- const formattedData = data ? formatter(data) : "";
18
+ const formattedData = typeof data === "number" ? formatter(data) : "";
19
19
  return /* @__PURE__ */ jsxRuntime.jsxs(
20
20
  reactLeaflet.Pane,
21
21
  {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../../src/components/Map/components/MapLayer/components/ThematicLayer/components/CustomTooltip/index.tsx"],"names":["useMapPeriods","jsxs","Pane","Tooltip","Popup","jsx","i18n"],"mappings":";;;;;;;;;;;AAMe,SAAR,aAAA,CAA+B;AAAA,EACrC,IAAA,EAAM;AACP,CAAA,EAEG;AACF,EAAA,MAAM,EAAE,QAAA,EAAU,OAAA,EAAS,IAAA,EAAK,GAAI,cAAc,EAAC;AACnD,EAAA,MAAM,EAAE,OAAA,EAAQ,GAAIA,sBAAA,MAAmB,EAAC;AAExC,EAAA,MAAM,YAAY,IAAA,CAAK,YAAA,CAAa,UAAU,QAAA,EAAU,EAAE,CAAA,CAAE,MAAA;AAE5D,EAAA,MAAM,aAAA,GAAgB,IAAA,GAAO,SAAA,CAAU,IAAc,CAAA,GAAI,EAAA;AAEzD,EAAA,uBACCC,eAAA;AAAA,IAACC,iBAAA;AAAA,IAAA;AAAA,MACA,MAAM,CAAA,EAAG,QAAA,CAAS,WAAW,CAAA,CAAA,EAAI,QAAQ,EAAE,CAAA,WAAA,CAAA;AAAA,MAC3C,IAAA,EAAK,WAAA;AAAA,MAEL,QAAA,EAAA;AAAA,wBAAAD,eAAA,CAACE,oBAAA,EAAA,EACC,QAAA,EAAA;AAAA,UAAA,OAAA,EAAS,IAAA;AAAA,UAAK,IAAA;AAAA,UAAG,aAAA;AAAA,UAAc;AAAA,SAAA,EACjC,CAAA;AAAA,wBACAF,eAAA,CAACG,kBAAA,EAAA,EAAM,QAAA,EAAU,EAAA,EAChB,QAAA,EAAA;AAAA,0BAAAC,cAAA,CAAC,QAAG,KAAA,EAAO,EAAE,QAAQ,CAAA,EAAE,EAAI,mBAAS,IAAA,EAAK,CAAA;AAAA,0BACzCA,cAAA,CAAC,KAAA,EAAA,EAAK,QAAA,EAAA,QAAA,EAAU,WAAA,EAAY,CAAA;AAAA,0BAC5BA,cAAA,CAAC,KAAA,EAAA,EAAK,QAAA,EAAA,OAAA,EAAS,GAAA,CAAI,CAAC,MAAA,KAAW,MAAA,CAAO,IAAI,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,EAAE,CAAA;AAAA,0CACrD,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,YAAAC,qBAAA,CAAK,EAAE,OAAO,CAAA;AAAA,YAAE,IAAA;AAAA,YAAG;AAAA,WAAA,EACrB;AAAA,SAAA,EACD;AAAA;AAAA;AAAA,GACD;AAEF","file":"index.js","sourcesContent":["import i18n from \"@dhis2/d2-i18n\";\nimport React from \"react\";\nimport { Pane, Popup, Tooltip } from \"react-leaflet\";\nimport { useMapPeriods } from \"../../../../../MapProvider/hooks/index.js\";\nimport { ThematicLayerData } from \"../../../../interfaces/index.js\";\n\nexport default function CustomTooltip({\n\tdata: dataObject,\n}: {\n\tdata: ThematicLayerData;\n}) {\n\tconst { dataItem, orgUnit, data } = dataObject ?? {};\n\tconst { periods } = useMapPeriods() ?? {};\n\n\tconst formatter = Intl.NumberFormat(navigator.language, {}).format;\n\n\tconst formattedData = data ? formatter(data as number) : \"\";\n\n\treturn (\n\t\t<Pane\n\t\t\tname={`${dataItem.displayName}-${orgUnit.id}-popup-pane`}\n\t\t\tpane=\"popupPane\"\n\t\t>\n\t\t\t<Tooltip>\n\t\t\t\t{orgUnit?.name} ({formattedData})\n\t\t\t</Tooltip>\n\t\t\t<Popup minWidth={80}>\n\t\t\t\t<h3 style={{ margin: 0 }}>{orgUnit?.name}</h3>\n\t\t\t\t<div>{dataItem?.displayName}</div>\n\t\t\t\t<div>{periods?.map((period) => period.name).join(\",\")}</div>\n\t\t\t\t<div>\n\t\t\t\t\t{i18n.t(\"Value\")}: {formattedData}\n\t\t\t\t</div>\n\t\t\t</Popup>\n\t\t</Pane>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../../../../src/components/Map/components/MapLayer/components/ThematicLayer/components/CustomTooltip/index.tsx"],"names":["useMapPeriods","jsxs","Pane","Tooltip","Popup","jsx","i18n"],"mappings":";;;;;;;;;;;AAMe,SAAR,aAAA,CAA+B;AAAA,EACrC,IAAA,EAAM;AACP,CAAA,EAEG;AACF,EAAA,MAAM,EAAE,QAAA,EAAU,OAAA,EAAS,IAAA,EAAK,GAAI,cAAc,EAAC;AACnD,EAAA,MAAM,EAAE,OAAA,EAAQ,GAAIA,mBAAA,MAAmB,EAAC;AAExC,EAAA,MAAM,YAAY,IAAA,CAAK,YAAA,CAAa,UAAU,QAAA,EAAU,EAAE,CAAA,CAAE,MAAA;AAE5D,EAAA,MAAM,gBACL,OAAO,IAAA,KAAS,QAAA,GAAW,SAAA,CAAU,IAAc,CAAA,GAAI,EAAA;AAExD,EAAA,uBACCC,eAAA;AAAA,IAACC,iBAAA;AAAA,IAAA;AAAA,MACA,MAAM,CAAA,EAAG,QAAA,CAAS,WAAW,CAAA,CAAA,EAAI,QAAQ,EAAE,CAAA,WAAA,CAAA;AAAA,MAC3C,IAAA,EAAK,WAAA;AAAA,MAEL,QAAA,EAAA;AAAA,wBAAAD,eAAA,CAACE,oBAAA,EAAA,EACC,QAAA,EAAA;AAAA,UAAA,OAAA,EAAS,IAAA;AAAA,UAAK,IAAA;AAAA,UAAG,aAAA;AAAA,UAAc;AAAA,SAAA,EACjC,CAAA;AAAA,wBACAF,eAAA,CAACG,kBAAA,EAAA,EAAM,QAAA,EAAU,EAAA,EAChB,QAAA,EAAA;AAAA,0BAAAC,cAAA,CAAC,QAAG,KAAA,EAAO,EAAE,QAAQ,CAAA,EAAE,EAAI,mBAAS,IAAA,EAAK,CAAA;AAAA,0BACzCA,cAAA,CAAC,KAAA,EAAA,EAAK,QAAA,EAAA,QAAA,EAAU,WAAA,EAAY,CAAA;AAAA,0BAC5BA,cAAA,CAAC,KAAA,EAAA,EAAK,QAAA,EAAA,OAAA,EAAS,GAAA,CAAI,CAAC,MAAA,KAAW,MAAA,CAAO,IAAI,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,EAAE,CAAA;AAAA,0CACrD,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,YAAAC,qBAAA,CAAK,EAAE,OAAO,CAAA;AAAA,YAAE,IAAA;AAAA,YAAG;AAAA,WAAA,EACrB;AAAA,SAAA,EACD;AAAA;AAAA;AAAA,GACD;AAEF","file":"index.js","sourcesContent":["import i18n from \"@dhis2/d2-i18n\";\nimport React from \"react\";\nimport { Pane, Popup, Tooltip } from \"react-leaflet\";\nimport { useMapPeriods } from \"../../../../../MapProvider/hooks\";\nimport { ThematicLayerData } from \"../../../../interfaces\";\n\nexport default function CustomTooltip({\n\tdata: dataObject,\n}: {\n\tdata: ThematicLayerData;\n}) {\n\tconst { dataItem, orgUnit, data } = dataObject ?? {};\n\tconst { periods } = useMapPeriods() ?? {};\n\n\tconst formatter = Intl.NumberFormat(navigator.language, {}).format;\n\n\tconst formattedData =\n\t\ttypeof data === \"number\" ? formatter(data as number) : \"\";\n\n\treturn (\n\t\t<Pane\n\t\t\tname={`${dataItem.displayName}-${orgUnit.id}-popup-pane`}\n\t\t\tpane=\"popupPane\"\n\t\t>\n\t\t\t<Tooltip>\n\t\t\t\t{orgUnit?.name} ({formattedData})\n\t\t\t</Tooltip>\n\t\t\t<Popup minWidth={80}>\n\t\t\t\t<h3 style={{ margin: 0 }}>{orgUnit?.name}</h3>\n\t\t\t\t<div>{dataItem?.displayName}</div>\n\t\t\t\t<div>{periods?.map((period) => period.name).join(\",\")}</div>\n\t\t\t\t<div>\n\t\t\t\t\t{i18n.t(\"Value\")}: {formattedData}\n\t\t\t\t</div>\n\t\t\t</Popup>\n\t\t</Pane>\n\t);\n}\n"]}
@@ -11,7 +11,7 @@ function getLabel({
11
11
  lodash.templateSettings.interpolate = /{([\s\S]+?)}/g;
12
12
  return lodash.template(labelConfig.labelTemplate.replace(/\n/g, "<br />"))({
13
13
  name: orgUnit.name,
14
- value: data ? valueFormatter(data) : ""
14
+ value: typeof data === "number" ? valueFormatter(data) : ""
15
15
  });
16
16
  }
17
17
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../src/components/Map/components/MapLayer/components/ThematicLayer/utils/label.ts"],"names":["templateSettings","template"],"mappings":";;;;AAGA,MAAM,cAAA,GAAiB,IAAA,CAAK,YAAA,CAAa,SAAA,CAAU,QAAQ,CAAA,CAAE,MAAA;AAEtD,SAAS,QAAA,CAAS;AAAA,EACxB,OAAA;AAAA,EACA,IAAA;AAAA,EACA;AACD,CAAA,EAIG;AACF,EAAAA,uBAAA,CAAiB,WAAA,GAAc,eAAA;AAE/B,EAAA,OAAOC,gBAAS,WAAA,CAAY,aAAA,CAAc,QAAQ,KAAA,EAAO,QAAQ,CAAC,CAAA,CAAE;AAAA,IACnE,MAAM,OAAA,CAAQ,IAAA;AAAA,IACd,KAAA,EAAO,IAAA,GAAO,cAAA,CAAe,IAAI,CAAA,GAAI;AAAA,GACrC,CAAA;AACF","file":"label.js","sourcesContent":["import { template, templateSettings } from \"lodash\";\nimport type { LayerLabelConfig } from \"../../../interfaces\";\n\nconst valueFormatter = Intl.NumberFormat(navigator.language).format;\n\nexport function getLabel({\n\torgUnit,\n\tdata,\n\tlabelConfig,\n}: {\n\tlabelConfig: LayerLabelConfig;\n\torgUnit: { name: string };\n\tdata?: number;\n}) {\n\ttemplateSettings.interpolate = /{([\\s\\S]+?)}/g;\n\n\treturn template(labelConfig.labelTemplate.replace(/\\n/g, \"<br />\"))({\n\t\tname: orgUnit.name,\n\t\tvalue: data ? valueFormatter(data) : \"\",\n\t});\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../../../src/components/Map/components/MapLayer/components/ThematicLayer/utils/label.ts"],"names":["templateSettings","template"],"mappings":";;;;AAGA,MAAM,cAAA,GAAiB,IAAA,CAAK,YAAA,CAAa,SAAA,CAAU,QAAQ,CAAA,CAAE,MAAA;AAEtD,SAAS,QAAA,CAAS;AAAA,EACxB,OAAA;AAAA,EACA,IAAA;AAAA,EACA;AACD,CAAA,EAIG;AACF,EAAAA,uBAAA,CAAiB,WAAA,GAAc,eAAA;AAE/B,EAAA,OAAOC,gBAAS,WAAA,CAAY,aAAA,CAAc,QAAQ,KAAA,EAAO,QAAQ,CAAC,CAAA,CAAE;AAAA,IACnE,MAAM,OAAA,CAAQ,IAAA;AAAA,IACd,OAAO,OAAO,IAAA,KAAS,QAAA,GAAW,cAAA,CAAe,IAAI,CAAA,GAAI;AAAA,GACzD,CAAA;AACF","file":"label.js","sourcesContent":["import { template, templateSettings } from \"lodash\";\nimport type { LayerLabelConfig } from \"../../../interfaces\";\n\nconst valueFormatter = Intl.NumberFormat(navigator.language).format;\n\nexport function getLabel({\n\torgUnit,\n\tdata,\n\tlabelConfig,\n}: {\n\tlabelConfig: LayerLabelConfig;\n\torgUnit: { name: string };\n\tdata?: number;\n}) {\n\ttemplateSettings.interpolate = /{([\\s\\S]+?)}/g;\n\n\treturn template(labelConfig.labelTemplate.replace(/\\n/g, \"<br />\"))({\n\t\tname: orgUnit.name,\n\t\tvalue: typeof data === \"number\" ? valueFormatter(data) : \"\",\n\t});\n}\n"]}
@@ -67,7 +67,7 @@ const legendSetsQuery = {
67
67
  fields: [
68
68
  "id",
69
69
  "displayName",
70
- "legends[id,code,startValue,endValue,color]"
70
+ "legends[id,code,name,startValue,endValue,color]"
71
71
  ]
72
72
  }
73
73
  }
@@ -115,6 +115,7 @@ function useThematicLayers({
115
115
  const row = rows.find(
116
116
  (row2) => row2[ouIndex] === ou2.id && row2[dxIndex] === layer.dataItem.id
117
117
  );
118
+ row[valueIndex] = 0;
118
119
  return {
119
120
  orgUnit: ou2,
120
121
  data: row ? parseFloat(row[valueIndex]) : void 0,
@@ -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 {\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.log(e);\n\t\t\t\tconsole.error(`Error getting thematic layers`, e.details);\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\t\t[refresh],\n\t);\n\n\treturn {\n\t\tsanitizeLayers,\n\t};\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../../../src/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.tsx"],"names":["isEmpty","compact","useDataEngine","useState","useMapOrganisationUnit","useMapPeriods","useMemo","getOrgUnitsSelection","pe","sanitizeDate","sortBy","ou","row","map","asyncify","defaultClasses","defaultColorScaleName","generateLegends","last","head","differenceBy","find","useCallback","sanitizeOrgUnits","toGeoJson","ouGroup","useGoogleEngineToken","useBoundaryData","EarthEngine","EARTH_ENGINE_LAYERS"],"mappings":"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","file":"index.js","sourcesContent":["import {\n\tcompact,\n\tdifferenceBy,\n\tfind,\n\thead,\n\tisEmpty,\n\tlast,\n\tsortBy,\n} from \"lodash\";\nimport { useMapOrganisationUnit, useMapPeriods } from \"../../../hooks/index.js\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport {\n\tgenerateLegends,\n\tgetOrgUnitsSelection,\n\tsanitizeDate,\n\tsanitizeOrgUnits,\n\ttoGeoJson,\n} from \"../../../../../utils/map.js\";\nimport { useDataEngine } from \"@dhis2/app-runtime\";\nimport {\n\tCustomGoogleEngineLayer,\n\tCustomPointLayer,\n\tCustomThematicLayer,\n\tEarthEngineLayerConfig,\n\tThematicLayerConfig,\n} from \"../../../../MapLayer/interfaces\";\nimport {\n\ttype MapAnalyticsOptions,\n\tMapOrgUnit,\n\tPointOrgUnit,\n} from \"../../../../../interfaces/index.js\";\nimport { asyncify, map } from \"async-es\";\nimport { LegendSet } from \"@hisptz/dhis2-utils\";\nimport {\n\tdefaultClasses,\n\tdefaultColorScaleName,\n} from \"../../../../../utils/colors.js\";\nimport { useGoogleEngineToken } from \"../../../../MapLayer/components/GoogleEngineLayer/hooks/index.js\";\nimport { useBoundaryData } from \"../../../../MapLayer/components/BoundaryLayer/hooks/useBoundaryData.js\";\nimport { EarthEngine } from \"../../../../MapLayer/components/GoogleEngineLayer/services/engine.js\";\nimport { EARTH_ENGINE_LAYERS } from \"../../../../MapLayer/components/GoogleEngineLayer/constants/index.js\";\nimport { EarthEngineOptions } from \"../../../../MapLayer/components/GoogleEngineLayer/interfaces/index.js\";\n\nconst analyticsQuery = {\n\tanalytics: {\n\t\tresource: \"analytics\",\n\t\tparams: ({ ou, pe, dx, startDate, endDate, analyticsOptions }: any) => {\n\t\t\tconst peDimension = !isEmpty(pe)\n\t\t\t\t? `pe:${pe?.join(\";\")}`\n\t\t\t\t: undefined;\n\t\t\tconst ouDimension = !isEmpty(ou)\n\t\t\t\t? `ou:${ou?.join(\";\")}`\n\t\t\t\t: undefined;\n\t\t\tconst dxDimension = !isEmpty(dx)\n\t\t\t\t? `dx:${dx?.join(\";\")}`\n\t\t\t\t: undefined;\n\n\t\t\treturn {\n\t\t\t\tdimension: compact([dxDimension, peDimension, ouDimension]),\n\t\t\t\tstartDate,\n\t\t\t\tendDate,\n\t\t\t\tdisplayProperty: \"NAME\",\n\t\t\t\t...(analyticsOptions ?? {}),\n\t\t\t};\n\t\t},\n\t},\n};\nconst query = {\n\tlayer: {\n\t\tresource: \"geoFeatures\",\n\t\tparams: ({ ous }: any) => ({\n\t\t\tou: `ou:${ous.join(\";\")}`,\n\t\t}),\n\t},\n\tanalytics: {\n\t\tresource: \"analytics\",\n\t\tparams: ({ ous }: any) => ({\n\t\t\tdimension: [\n\t\t\t\t`ou:${ous.join(\";\")}`,\n\t\t\t\t`pe:${new Date().getFullYear()}`,\n\t\t\t],\n\t\t\tskipData: true,\n\t\t\thierarchyMeta: true,\n\t\t}),\n\t},\n};\nconst groupSetQuery = {\n\tgroupSet: {\n\t\tresource: \"organisationUnitGroupSets\",\n\t\tid: ({ groupSet }: any) => groupSet,\n\t\tparams: {\n\t\t\tfields: [\n\t\t\t\t\"organisationUnitGroups[name,color,symbol,organisationUnits[id]]\",\n\t\t\t],\n\t\t},\n\t},\n};\nconst legendSetsQuery = {\n\tlegendSets: {\n\t\tresource: \"legendSets\",\n\t\tid: ({ id }: any) => id,\n\t\tparams: {\n\t\t\tfields: [\n\t\t\t\t\"id\",\n\t\t\t\t\"displayName\",\n\t\t\t\t\"legends[id,code,name,startValue,endValue,color]\",\n\t\t\t],\n\t\t},\n\t},\n};\n\nexport function useThematicLayers({\n\tanalyticsOptions,\n}: {\n\tanalyticsOptions?: MapAnalyticsOptions;\n}): any {\n\tconst engine = useDataEngine();\n\tconst [loading, setLoading] = useState(false);\n\tconst { orgUnits, orgUnitSelection } = useMapOrganisationUnit();\n\tconst { periods, range } = useMapPeriods() ?? {};\n\tconst ou = useMemo(\n\t\t() => getOrgUnitsSelection(orgUnitSelection),\n\t\t[orgUnitSelection],\n\t);\n\tconst pe = useMemo(() => periods?.map((pe: any) => pe.id), [periods]);\n\n\tconst { startDate, endDate } = useMemo(() => {\n\t\tif (!range) {\n\t\t\treturn {\n\t\t\t\tstartDate: undefined,\n\t\t\t\tendDate: undefined,\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tstartDate: sanitizeDate(range.start.toDateString()),\n\t\t\tendDate: sanitizeDate(range.end.toDateString()),\n\t\t};\n\t}, [range]);\n\tconst sanitizeData = (data: any, layer: ThematicLayerConfig) => {\n\t\tif (data) {\n\t\t\tconst { analytics } = data as any;\n\t\t\tconst rows = analytics?.rows;\n\t\t\tconst ouIndex = analytics.headers.findIndex(\n\t\t\t\t(header: any) => header.name === \"ou\",\n\t\t\t);\n\t\t\tconst dxIndex = analytics.headers.findIndex(\n\t\t\t\t(header: any) => header.name === \"dx\",\n\t\t\t);\n\t\t\tconst valueIndex = analytics.headers.findIndex(\n\t\t\t\t(header: any) => header.name === \"value\",\n\t\t\t);\n\n\t\t\tif (!isEmpty(rows)) {\n\t\t\t\treturn sortBy(\n\t\t\t\t\torgUnits?.map((ou: MapOrgUnit) => {\n\t\t\t\t\t\tconst row = rows.find(\n\t\t\t\t\t\t\t(row: any) =>\n\t\t\t\t\t\t\t\trow[ouIndex] === ou.id &&\n\t\t\t\t\t\t\t\trow[dxIndex] === layer.dataItem.id,\n\t\t\t\t\t\t);\n\t\t\t\t\t\trow[valueIndex] = 0;\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\torgUnit: ou,\n\t\t\t\t\t\t\tdata: row ? parseFloat(row[valueIndex]) : undefined,\n\t\t\t\t\t\t\tdataItem: {\n\t\t\t\t\t\t\t\t...layer.dataItem,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t}),\n\t\t\t\t\t[\"data\"],\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn [];\n\t\t}\n\t\treturn [];\n\t};\n\n\tconst sanitizeLegends = async (\n\t\tlayers: CustomThematicLayer[],\n\t): Promise<CustomThematicLayer[]> => {\n\t\treturn (await map(\n\t\t\tlayers,\n\t\t\tasyncify(async (layer: CustomThematicLayer) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst legends = [];\n\t\t\t\t\tif (layer.dataItem.legendSet) {\n\t\t\t\t\t\tconst legendSetData = await engine.query(\n\t\t\t\t\t\t\tlegendSetsQuery,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvariables: {\n\t\t\t\t\t\t\t\t\tid: layer.dataItem.legendSet,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst legendSet: LegendSet =\n\t\t\t\t\t\t\tlegendSetData?.legendSets as LegendSet;\n\t\t\t\t\t\tif (legendSet) {\n\t\t\t\t\t\t\tlegends.push(...legendSet.legends);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst { scale, colorClass } = layer.dataItem\n\t\t\t\t\t\t\t.legendConfig ?? {\n\t\t\t\t\t\t\tscale: defaultClasses,\n\t\t\t\t\t\t\tcolorClass: defaultColorScaleName,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst sortedData = sortBy(\n\t\t\t\t\t\t\tlayer.data.filter((datum) => !!datum.data),\n\t\t\t\t\t\t\t\"data\",\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst autoLegends = generateLegends(\n\t\t\t\t\t\t\tlast(sortedData)?.data ?? 0,\n\t\t\t\t\t\t\thead(sortedData)?.data ?? 0,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tclassesCount: scale,\n\t\t\t\t\t\t\t\tcolorClass,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t\tlegends.push(...autoLegends);\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...layer,\n\t\t\t\t\t\tlegends,\n\t\t\t\t\t};\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn layer;\n\t\t\t\t}\n\t\t\t}),\n\t\t)) as CustomThematicLayer[];\n\t};\n\n\tconst sanitizeLayers = async (\n\t\tlayers: ThematicLayerConfig[],\n\t): Promise<CustomThematicLayer[]> => {\n\t\ttry {\n\t\t\tsetLoading(true);\n\t\t\tconst layersWithoutData = layers?.filter((layer) => !layer.data);\n\t\t\tconst layersWithData = differenceBy(\n\t\t\t\tlayers,\n\t\t\t\tlayersWithoutData,\n\t\t\t\t\"id\",\n\t\t\t);\n\t\t\tconst dx = layersWithoutData.map((layer) => layer.dataItem.id);\n\t\t\tlet sanitizedLayersWithData: any = [];\n\n\t\t\tif (!isEmpty(dx)) {\n\t\t\t\tconst data = await engine.query(analyticsQuery, {\n\t\t\t\t\tvariables: {\n\t\t\t\t\t\tdx,\n\t\t\t\t\t\tou,\n\t\t\t\t\t\tpe,\n\t\t\t\t\t\tstartDate,\n\t\t\t\t\t\tendDate,\n\t\t\t\t\t\tanalyticsOptions,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tsanitizedLayersWithData = layersWithoutData.map((layer) => ({\n\t\t\t\t\t...layer,\n\t\t\t\t\tname:\n\t\t\t\t\t\tlayer?.name ?? layer?.dataItem?.displayName ?? layer.id,\n\t\t\t\t\tdata: sanitizeData(data, layer),\n\t\t\t\t}));\n\t\t\t}\n\t\t\tconst sanitizedLayersWithOrgUnits = layersWithData.map((layer) => ({\n\t\t\t\t...layer,\n\t\t\t\tdata: layer.data?.map((datum) => ({\n\t\t\t\t\t...datum,\n\t\t\t\t\torgUnit: find(orgUnits, [\n\t\t\t\t\t\t\"id\",\n\t\t\t\t\t\tdatum.orgUnit,\n\t\t\t\t\t]) as MapOrgUnit,\n\t\t\t\t\tdataItem: layer.dataItem,\n\t\t\t\t\tname:\n\t\t\t\t\t\tlayer?.name ?? layer?.dataItem?.displayName ?? layer.id,\n\t\t\t\t})),\n\t\t\t}));\n\t\t\tsetLoading(false);\n\t\t\treturn await sanitizeLegends([\n\t\t\t\t...sanitizedLayersWithData,\n\t\t\t\t...sanitizedLayersWithOrgUnits,\n\t\t\t]);\n\t\t} catch (e: any) {\n\t\t\tconsole.error(`Error getting thematic layers`, e.details);\n\t\t\tsetLoading(false);\n\t\t\treturn [];\n\t\t}\n\t};\n\n\treturn {\n\t\tsanitizeLayers,\n\t\tloading,\n\t};\n}\n\nexport function usePointLayer() {\n\tconst engine = useDataEngine();\n\tconst { orgUnitSelection } = useMapOrganisationUnit();\n\tconst [loading, setLoading] = useState(false);\n\n\tconst sanitizePointData = useCallback(\n\t\t(orgUnitData: any, groupSetData: any): PointOrgUnit[] => {\n\t\t\tconst { analytics, layer } = (orgUnitData as any) ?? {};\n\t\t\tconst rawOrgUnits = sanitizeOrgUnits(analytics?.metaData);\n\t\t\tconst geoJSONObjects = toGeoJson(\n\t\t\t\tlayer?.filter((bound: any) => bound.co),\n\t\t\t);\n\t\t\treturn compact(\n\t\t\t\trawOrgUnits.map((orgUnit: any) => {\n\t\t\t\t\tconst geoJSONObject: any = geoJSONObjects?.find(\n\t\t\t\t\t\t(geoJSON: any) => geoJSON.properties.id === orgUnit.id,\n\t\t\t\t\t);\n\t\t\t\t\tconst orgUnitGroups: any =\n\t\t\t\t\t\t(groupSetData?.groupSet as any)\n\t\t\t\t\t\t\t?.organisationUnitGroups ?? [];\n\t\t\t\t\tconst ouGroup = find(\n\t\t\t\t\t\torgUnitGroups,\n\t\t\t\t\t\t(ouGroup) =>\n\t\t\t\t\t\t\t!!find(ouGroup?.organisationUnits ?? [], [\n\t\t\t\t\t\t\t\t\"id\",\n\t\t\t\t\t\t\t\torgUnit.id,\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t);\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t!geoJSONObject ||\n\t\t\t\t\t\tgeoJSONObject.properties.type !== \"Point\"\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...orgUnit,\n\t\t\t\t\t\tgeoJSON: geoJSONObject,\n\t\t\t\t\t\tlevel: geoJSONObject.properties.level,\n\t\t\t\t\t\ticon: {\n\t\t\t\t\t\t\ttype: \"groupIcon\",\n\t\t\t\t\t\t\ticon: ouGroup?.symbol,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t);\n\t\t},\n\t\t[],\n\t);\n\n\tconst sanitizeLayer = useCallback(\n\t\tasync (\n\t\t\tlayer: CustomPointLayer,\n\t\t): Promise<CustomPointLayer | undefined> => {\n\t\t\ttry {\n\t\t\t\tif (!layer.level && !layer.group) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tsetLoading(true);\n\t\t\t\tconst level = layer.level ? `LEVEL-${layer.level}` : undefined;\n\t\t\t\tconst group = layer.group\n\t\t\t\t\t? `OU_GROUP-${layer.group}`\n\t\t\t\t\t: undefined;\n\t\t\t\tconst ous = [\n\t\t\t\t\t...getOrgUnitsSelection(orgUnitSelection),\n\t\t\t\t\tlevel,\n\t\t\t\t\tgroup,\n\t\t\t\t];\n\n\t\t\t\tconst pointData = await engine.query(query, {\n\t\t\t\t\tvariables: {\n\t\t\t\t\t\tous,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tconst groupSetData = await engine.query(groupSetQuery, {\n\t\t\t\t\tvariables: {\n\t\t\t\t\t\tgroupSet: layer.style?.groupSet,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tconst sanitizedOrgUnitData = sanitizePointData(\n\t\t\t\t\tpointData,\n\t\t\t\t\tgroupSetData,\n\t\t\t\t);\n\n\t\t\t\tconst orgUnitGroups =\n\t\t\t\t\t(groupSetData?.groupSet as any)?.organisationUnitGroups ??\n\t\t\t\t\t[];\n\n\t\t\t\tconst sanitizedOrgUnitGroups = orgUnitGroups.map(\n\t\t\t\t\t(ouGroup: any) => ({\n\t\t\t\t\t\t...ouGroup,\n\t\t\t\t\t\torganisationUnits: undefined,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t\tsetLoading(false);\n\t\t\t\treturn {\n\t\t\t\t\t...layer,\n\t\t\t\t\tpoints: sanitizedOrgUnitData,\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\t...layer.style,\n\t\t\t\t\t\torgUnitGroups: sanitizedOrgUnitGroups,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t} catch (e: any) {\n\t\t\t\tsetLoading(false);\n\t\t\t\tconsole.error(`Error getting point layer`, e.details);\n\t\t\t\treturn;\n\t\t\t}\n\t\t},\n\t\t[],\n\t);\n\n\treturn {\n\t\tloading,\n\t\tsanitizeLayer,\n\t};\n}\n\nexport function useGoogleEngineLayers() {\n\tconst { refresh } = useGoogleEngineToken();\n\tconst orgUnits = useBoundaryData();\n\n\tasync function getImageUrl(\n\t\tearthEngine: EarthEngine,\n\t\t{ filters }: EarthEngineLayerConfig,\n\t): Promise<string | undefined> {\n\t\tif (earthEngine.initialized) {\n\t\t\ttry {\n\t\t\t\tearthEngine.setOrgUnits(orgUnits ?? []);\n\t\t\t\tconst period = filters?.period;\n\t\t\t\tif (period) {\n\t\t\t\t\tearthEngine.setPeriod(period);\n\t\t\t\t}\n\t\t\t\treturn earthEngine.url();\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error(e);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst sanitizeLayers = useCallback(\n\t\tasync (\n\t\t\tlayers: EarthEngineLayerConfig[],\n\t\t): Promise<CustomGoogleEngineLayer[]> => {\n\t\t\tif (isEmpty(layers)) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst { token } = await refresh();\n\t\t\t\tif (!token) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t`Google token not available in this instance`,\n\t\t\t\t\t);\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\t\t\t\tawait EarthEngine.setToken(token, refresh);\n\t\t\t\treturn map(\n\t\t\t\t\tlayers,\n\t\t\t\t\tasyncify(async (layer: EarthEngineLayerConfig) => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst defaultOptions: any =\n\t\t\t\t\t\t\t\tfind(EARTH_ENGINE_LAYERS, [\"id\", layer.type]) ??\n\t\t\t\t\t\t\t\t{};\n\t\t\t\t\t\t\tconst options: EarthEngineOptions = {\n\t\t\t\t\t\t\t\t...defaultOptions,\n\t\t\t\t\t\t\t\taggregations:\n\t\t\t\t\t\t\t\t\tlayer.aggregations ??\n\t\t\t\t\t\t\t\t\tdefaultOptions?.aggregations,\n\t\t\t\t\t\t\t\tparams: layer.params ?? defaultOptions?.params,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tconst updatedLayer = {\n\t\t\t\t\t\t\t\t...layer,\n\t\t\t\t\t\t\t\toptions,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tconst earthEngine = new EarthEngine({ options });\n\t\t\t\t\t\t\tconst url = await getImageUrl(\n\t\t\t\t\t\t\t\tearthEngine,\n\t\t\t\t\t\t\t\tupdatedLayer,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...updatedLayer,\n\t\t\t\t\t\t\t\tengine: earthEngine,\n\t\t\t\t\t\t\t\turl,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tconsole.error(e);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t} catch (e: any) {\n\t\t\t\tconsole.log(e);\n\t\t\t\tconsole.error(`Error getting thematic layers`, e.details);\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\t\t[refresh],\n\t);\n\n\treturn {\n\t\tsanitizeLayers,\n\t};\n}\n"]}
@@ -1 +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","set","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 { type ReactNode, 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: 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
+ {"version":3,"sources":["../../../../../../../src/components/Map/components/MapProvider/components/MapLayerProvider/index.tsx"],"names":["useMapPeriods","useMapOrganisationUnit","useState","useThematicLayers","usePointLayer","useGoogleEngineLayers","useMapEvents","head","compact","useCallback","updatedLayers","set","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 { type ReactNode, 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: 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\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"]}
@@ -12,7 +12,7 @@ function resetHighlight(e, defaultStyle) {
12
12
  layer.setStyle(defaultStyle);
13
13
  }
14
14
  function getColorFromLegendSet(legends, value) {
15
- if (!value) {
15
+ if (typeof value !== "number") {
16
16
  return "transparent";
17
17
  }
18
18
  const legend = lodash.find(
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/Map/utils/map.ts"],"names":["find","legend","filter","isEmpty","forEach","sortBy","isString","compact","defaultClasses","defaultColorScaleName","getColorPalette"],"mappings":"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","file":"map.js","sourcesContent":["import type {\n\tLegend,\n\tOrganisationUnit,\n\tOrgUnitSelection,\n} from \"@hisptz/dhis2-utils\";\nimport { LeafletMouseEvent } from \"leaflet\";\nimport {\n\tcompact,\n\tfilter,\n\tfind,\n\tforEach,\n\tisEmpty,\n\tisString,\n\tsortBy,\n} from \"lodash\";\nimport {\n\tdefaultClasses,\n\tdefaultColorScaleName,\n\tgetColorPalette,\n} from \"./colors.js\";\n\nexport function highlightFeature(e: LeafletMouseEvent, style: any) {\n\tconst layer = e.target;\n\tlayer.setStyle(style);\n\t// layer.bringToFront();\n}\n\nexport function resetHighlight(e: LeafletMouseEvent, defaultStyle: any) {\n\tconst layer = e.target;\n\tlayer.setStyle(defaultStyle);\n\t// layer.bringToBack();\n}\n\nexport function getColorFromLegendSet(\n\tlegends: Legend[],\n\tvalue?: number,\n): string {\n\tif (!value) {\n\t\treturn \"transparent\";\n\t}\n\tconst legend: any =\n\t\tfind(\n\t\t\tlegends ?? [],\n\t\t\t(legend: any) =>\n\t\t\t\tlegend?.startValue <= value && legend?.endValue >= value,\n\t\t) ?? {};\n\treturn legend.color ? legend.color : \"transparent\";\n}\n\nexport function getLegendCount(legend: any, data: any) {\n\tconst { startValue, endValue } = legend;\n\treturn filter(data, (d: any) => d.data >= startValue && d.data <= endValue)\n\t\t.length;\n}\n\nexport function getOrgUnitsSelection(orgUnitSelection: OrgUnitSelection) {\n\tconst orgUnits = [];\n\tif (orgUnitSelection.userOrgUnit) {\n\t\torgUnits.push(\"USER_ORGUNIT\");\n\t}\n\n\tif (orgUnitSelection.userSubUnit) {\n\t\torgUnits.push(\"USER_ORGUNIT_CHILDREN\");\n\t}\n\n\tif (orgUnitSelection.userSubX2Unit) {\n\t\torgUnits.push(\"USER_ORGUNIT_GRANDCHILDREN\");\n\t}\n\tif (!isEmpty(orgUnitSelection.levels)) {\n\t\tforEach(orgUnitSelection.levels, (level) =>\n\t\t\torgUnits.push(`LEVEL-${level}`),\n\t\t);\n\t}\n\n\treturn [\n\t\t...orgUnits,\n\t\t...(orgUnitSelection?.orgUnits?.map(\n\t\t\t(ou: OrganisationUnit) => `${ou.id}`,\n\t\t) ?? []),\n\t];\n}\n\nexport function sanitizeOrgUnits(metaData: any) {\n\tif (metaData) {\n\t\treturn metaData?.dimensions?.ou?.map((ouId: string) => ({\n\t\t\tid: ouId,\n\t\t\tname: metaData?.items[ouId]?.name,\n\t\t\tpath: metaData?.ouHierarchy?.[ouId],\n\t\t}));\n\t}\n\treturn [];\n}\n\nexport function toGeoJson(organisationUnits: any) {\n\treturn sortBy(organisationUnits, \"le\").map((ou: any) => {\n\t\ttry {\n\t\t\tconst coord = JSON.parse(ou.co);\n\t\t\tlet gpid = \"\";\n\t\t\tlet gppg = \"\";\n\t\t\tlet type = \"Point\";\n\n\t\t\tif (ou.ty === 2) {\n\t\t\t\ttype = \"Polygon\";\n\t\t\t\tif (ou.co.substring(0, 4) === \"[[[[\") {\n\t\t\t\t\ttype = \"MultiPolygon\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Grand parent\n\t\t\tif (isString(ou.pg) && ou.pg.length) {\n\t\t\t\tconst ids = compact(ou.pg.split(\"/\"));\n\n\t\t\t\t// Grand parent id\n\t\t\t\tif (ids.length >= 2) {\n\t\t\t\t\tgpid = ids[ids.length - 2] as string;\n\t\t\t\t}\n\n\t\t\t\t// Grand parent parent graph\n\t\t\t\tif (ids.length > 2) {\n\t\t\t\t\tgppg = \"/\" + ids.slice(0, ids.length - 2).join(\"/\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ttype: \"Feature\",\n\t\t\t\tid: ou.id,\n\t\t\t\tgeometry: {\n\t\t\t\t\ttype,\n\t\t\t\t\tcoordinates: coord,\n\t\t\t\t},\n\t\t\t\tproperties: {\n\t\t\t\t\ttype,\n\t\t\t\t\tid: ou.id,\n\t\t\t\t\tname: ou.na,\n\t\t\t\t\thasCoordinatesDown: ou.hcd,\n\t\t\t\t\thasCoordinatesUp: ou.hcu,\n\t\t\t\t\tlevel: ou.le,\n\t\t\t\t\tgrandParentParentGraph: gppg,\n\t\t\t\t\tgrandParentId: gpid,\n\t\t\t\t\tparentGraph: ou.pg,\n\t\t\t\t\tparentId: ou.pi,\n\t\t\t\t\tparentName: ou.pn,\n\t\t\t\t\tdimensions: ou.dimensions,\n\t\t\t\t},\n\t\t\t};\n\t\t} catch (e) {\n\t\t\treturn {};\n\t\t}\n\t});\n}\n\nexport function sanitizeDate(startDate: string): string {\n\tif (startDate?.split(\"-\")?.[0]?.length < 4) {\n\t\treturn startDate?.split(\"-\")?.reverse()?.join(\"-\");\n\t}\n\treturn startDate;\n}\n\nexport function generateLegends(\n\tmaxValue: number,\n\tminValue: number,\n\t{ classesCount, colorClass }: { classesCount: number; colorClass: string },\n): Array<Legend> {\n\tconst count: number = classesCount ?? defaultClasses;\n\tconst color = colorClass ?? defaultColorScaleName;\n\n\tconst colorScale = [...getColorPalette(color, count)].reverse();\n\n\tconst maxLegendValue = 5 * Math.ceil(maxValue / 5);\n\tconst range = maxLegendValue / count;\n\n\tconst values = [];\n\tlet legendColorsIterator = colorScale.length - 1;\n\tfor (let i = 0; i < maxLegendValue; i += range) {\n\t\tconst id = colorScale[legendColorsIterator];\n\t\tvalues.push({\n\t\t\tstartValue: Math.floor(i),\n\t\t\tendValue: Math.floor(i + range),\n\t\t\tid,\n\t\t\tcolor: id,\n\t\t});\n\t\tlegendColorsIterator--;\n\t}\n\n\treturn values.reverse();\n}\n"]}
1
+ {"version":3,"sources":["../../../../src/components/Map/utils/map.ts"],"names":["find","legend","filter","isEmpty","forEach","sortBy","isString","compact","defaultClasses","defaultColorScaleName","getColorPalette"],"mappings":"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","file":"map.js","sourcesContent":["import type {\n\tLegend,\n\tOrganisationUnit,\n\tOrgUnitSelection,\n} from \"@hisptz/dhis2-utils\";\nimport { LeafletMouseEvent } from \"leaflet\";\nimport {\n\tcompact,\n\tfilter,\n\tfind,\n\tforEach,\n\tisEmpty,\n\tisString,\n\tsortBy,\n} from \"lodash\";\nimport {\n\tdefaultClasses,\n\tdefaultColorScaleName,\n\tgetColorPalette,\n} from \"./colors.js\";\n\nexport function highlightFeature(e: LeafletMouseEvent, style: any) {\n\tconst layer = e.target;\n\tlayer.setStyle(style);\n\t// layer.bringToFront();\n}\n\nexport function resetHighlight(e: LeafletMouseEvent, defaultStyle: any) {\n\tconst layer = e.target;\n\tlayer.setStyle(defaultStyle);\n\t// layer.bringToBack();\n}\n\nexport function getColorFromLegendSet(\n\tlegends: Legend[],\n\tvalue?: number,\n): string {\n\tif (typeof value !== \"number\") {\n\t\treturn \"transparent\";\n\t}\n\tconst legend: any =\n\t\tfind(\n\t\t\tlegends ?? [],\n\t\t\t(legend: any) =>\n\t\t\t\tlegend?.startValue <= value && legend?.endValue >= value,\n\t\t) ?? {};\n\treturn legend.color ? legend.color : \"transparent\";\n}\n\nexport function getLegendCount(legend: any, data: any) {\n\tconst { startValue, endValue } = legend;\n\treturn filter(data, (d: any) => d.data >= startValue && d.data <= endValue)\n\t\t.length;\n}\n\nexport function getOrgUnitsSelection(orgUnitSelection: OrgUnitSelection) {\n\tconst orgUnits = [];\n\tif (orgUnitSelection.userOrgUnit) {\n\t\torgUnits.push(\"USER_ORGUNIT\");\n\t}\n\n\tif (orgUnitSelection.userSubUnit) {\n\t\torgUnits.push(\"USER_ORGUNIT_CHILDREN\");\n\t}\n\n\tif (orgUnitSelection.userSubX2Unit) {\n\t\torgUnits.push(\"USER_ORGUNIT_GRANDCHILDREN\");\n\t}\n\tif (!isEmpty(orgUnitSelection.levels)) {\n\t\tforEach(orgUnitSelection.levels, (level) =>\n\t\t\torgUnits.push(`LEVEL-${level}`),\n\t\t);\n\t}\n\n\treturn [\n\t\t...orgUnits,\n\t\t...(orgUnitSelection?.orgUnits?.map(\n\t\t\t(ou: OrganisationUnit) => `${ou.id}`,\n\t\t) ?? []),\n\t];\n}\n\nexport function sanitizeOrgUnits(metaData: any) {\n\tif (metaData) {\n\t\treturn metaData?.dimensions?.ou?.map((ouId: string) => ({\n\t\t\tid: ouId,\n\t\t\tname: metaData?.items[ouId]?.name,\n\t\t\tpath: metaData?.ouHierarchy?.[ouId],\n\t\t}));\n\t}\n\treturn [];\n}\n\nexport function toGeoJson(organisationUnits: any) {\n\treturn sortBy(organisationUnits, \"le\").map((ou: any) => {\n\t\ttry {\n\t\t\tconst coord = JSON.parse(ou.co);\n\t\t\tlet gpid = \"\";\n\t\t\tlet gppg = \"\";\n\t\t\tlet type = \"Point\";\n\n\t\t\tif (ou.ty === 2) {\n\t\t\t\ttype = \"Polygon\";\n\t\t\t\tif (ou.co.substring(0, 4) === \"[[[[\") {\n\t\t\t\t\ttype = \"MultiPolygon\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Grand parent\n\t\t\tif (isString(ou.pg) && ou.pg.length) {\n\t\t\t\tconst ids = compact(ou.pg.split(\"/\"));\n\n\t\t\t\t// Grand parent id\n\t\t\t\tif (ids.length >= 2) {\n\t\t\t\t\tgpid = ids[ids.length - 2] as string;\n\t\t\t\t}\n\n\t\t\t\t// Grand parent parent graph\n\t\t\t\tif (ids.length > 2) {\n\t\t\t\t\tgppg = \"/\" + ids.slice(0, ids.length - 2).join(\"/\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ttype: \"Feature\",\n\t\t\t\tid: ou.id,\n\t\t\t\tgeometry: {\n\t\t\t\t\ttype,\n\t\t\t\t\tcoordinates: coord,\n\t\t\t\t},\n\t\t\t\tproperties: {\n\t\t\t\t\ttype,\n\t\t\t\t\tid: ou.id,\n\t\t\t\t\tname: ou.na,\n\t\t\t\t\thasCoordinatesDown: ou.hcd,\n\t\t\t\t\thasCoordinatesUp: ou.hcu,\n\t\t\t\t\tlevel: ou.le,\n\t\t\t\t\tgrandParentParentGraph: gppg,\n\t\t\t\t\tgrandParentId: gpid,\n\t\t\t\t\tparentGraph: ou.pg,\n\t\t\t\t\tparentId: ou.pi,\n\t\t\t\t\tparentName: ou.pn,\n\t\t\t\t\tdimensions: ou.dimensions,\n\t\t\t\t},\n\t\t\t};\n\t\t} catch (e) {\n\t\t\treturn {};\n\t\t}\n\t});\n}\n\nexport function sanitizeDate(startDate: string): string {\n\tif (startDate?.split(\"-\")?.[0]?.length < 4) {\n\t\treturn startDate?.split(\"-\")?.reverse()?.join(\"-\");\n\t}\n\treturn startDate;\n}\n\nexport function generateLegends(\n\tmaxValue: number,\n\tminValue: number,\n\t{ classesCount, colorClass }: { classesCount: number; colorClass: string },\n): Array<Legend> {\n\tconst count: number = classesCount ?? defaultClasses;\n\tconst color = colorClass ?? defaultColorScaleName;\n\n\tconst colorScale = [...getColorPalette(color, count)].reverse();\n\n\tconst maxLegendValue = 5 * Math.ceil(maxValue / 5);\n\tconst range = maxLegendValue / count;\n\n\tconst values = [];\n\tlet legendColorsIterator = colorScale.length - 1;\n\tfor (let i = 0; i < maxLegendValue; i += range) {\n\t\tconst id = colorScale[legendColorsIterator];\n\t\tvalues.push({\n\t\t\tstartValue: Math.floor(i),\n\t\t\tendValue: Math.floor(i + range),\n\t\t\tid,\n\t\t\tcolor: id,\n\t\t});\n\t\tlegendColorsIterator--;\n\t}\n\n\treturn values.reverse();\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import '../../../styles/legends.css';
3
- import { Divider } from '@dhis2/ui';
3
+ import { Divider, colors } from '@dhis2/ui';
4
4
  import { forwardRef } from 'react';
5
- import { getLegendCount } from '../../../../../../../utils/map.js';
5
+ import { getLegendCount } from '../../../../../../../utils';
6
6
  import LegendCardHeader from '../../../../LegendArea/components/LegendCardHeader/index.js';
7
7
  import { sortBy } from 'lodash';
8
8
 
@@ -13,6 +13,60 @@ function LegendItem({
13
13
  legend,
14
14
  value
15
15
  }) {
16
+ if (legend.name) {
17
+ return /* @__PURE__ */ jsxs(
18
+ "div",
19
+ {
20
+ style: {
21
+ display: "flex",
22
+ gap: 8,
23
+ alignItems: "stretch",
24
+ width: "100%"
25
+ },
26
+ children: [
27
+ /* @__PURE__ */ jsx(
28
+ "div",
29
+ {
30
+ style: {
31
+ alignSelf: "stretch",
32
+ backgroundColor: legend.color,
33
+ width: 8,
34
+ minHeight: "100%"
35
+ }
36
+ }
37
+ ),
38
+ /* @__PURE__ */ jsxs(
39
+ "div",
40
+ {
41
+ style: {
42
+ display: "flex",
43
+ flexDirection: "column",
44
+ gap: 2
45
+ },
46
+ children: [
47
+ /* @__PURE__ */ jsx("span", { children: legend.name }),
48
+ /* @__PURE__ */ jsxs(
49
+ "div",
50
+ {
51
+ style: {
52
+ display: "flex",
53
+ gap: 4,
54
+ fontSize: 11,
55
+ color: colors.grey600
56
+ },
57
+ children: [
58
+ /* @__PURE__ */ jsx("div", { className: "legend-item-label", children: `${formatNumber(legend.startValue ?? 1)} - ${formatNumber(legend.endValue ?? 1)}` }),
59
+ /* @__PURE__ */ jsx("div", { className: "legend-item-value", children: `(${formatNumber(value ?? 0)})` })
60
+ ]
61
+ }
62
+ )
63
+ ]
64
+ }
65
+ )
66
+ ]
67
+ }
68
+ );
69
+ }
16
70
  return /* @__PURE__ */ jsxs("div", { className: "legend-item", children: [
17
71
  /* @__PURE__ */ jsx(
18
72
  "div",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../../../../src/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.tsx"],"names":[],"mappings":";;;;;;;;AAYA,MAAM,YAAA,GAAe,IAAA,CAAK,YAAA,CAAa,OAAA,EAAS;AAAA,EAC/C,QAAA,EAAU;AACX,CAAC,CAAA,CAAE,MAAA;AAEI,SAAS,UAAA,CAAW;AAAA,EAC1B,MAAA;AAAA,EACA;AACD,CAAA,EAGG;AACF,EAAA,uBACC,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EACd,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACA,SAAA,EAAU,mBAAA;AAAA,QACV,KAAA,EAAO,EAAE,eAAA,EAAiB,MAAA,CAAO,KAAA;AAAM;AAAA,KACxC;AAAA,wBACC,KAAA,EAAA,EAAI,SAAA,EAAU,mBAAA,EAAqB,QAAA,EAAA,CAAA,EAAG,aAAa,MAAA,CAAO,UAAA,IAAc,CAAC,CAAC,MAAM,YAAA,CAAa,MAAA,CAAO,QAAA,IAAY,CAAC,CAAC,CAAA,CAAA,EAAG,CAAA;AAAA,oBACtH,GAAA,CAAC,SAAI,SAAA,EAAU,mBAAA,EAAqB,cAAI,YAAA,CAAa,KAAA,IAAS,CAAC,CAAC,CAAA,CAAA,CAAA,EAAI;AAAA,GAAA,EACrE,CAAA;AAEF;AAEA,SAAS,gBAAA,CACR;AAAA,EACC,QAAA;AAAA,EACA,IAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA;AACD,CAAA,EAQA,GAAA,EACC;AACD,EAAA,uBACC,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EAAc,GAAA,EAC5B,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QACA,OAAO,QAAA,CAAS,WAAA;AAAA,QAChB,WAAA;AAAA,QACA;AAAA;AAAA,KACD;AAAA,oBACA,GAAA,CAAC,OAAA,EAAA,EAAQ,MAAA,EAAQ,GAAA,EAAK,CAAA;AAAA,oBACtB,GAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,YAAY,CAAA,EAAE,EAAG,SAAA,EAAU,aAAA,EACvC,iBAAO,OAAA,EAAS,YAAY,CAAA,CAAE,GAAA,CAAI,CAAC,MAAA,qBACnC,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QAEA,MAAA;AAAA,QACA,KAAA,EAAO,cAAA,CAAe,MAAA,EAAQ,IAAI;AAAA,OAAA;AAAA,MAF7B,CAAA,EAAG,QAAQ,KAAK,CAAA,YAAA;AAAA,KAItB,CAAA,EACF;AAAA,GAAA,EACD,CAAA;AAEF;AAEA,IAAO,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 { forwardRef, type LegacyRef } from \"react\";\nimport { getLegendCount } from \"../../../../../../../utils/map.js\";\nimport {\n\tThematicLayerData,\n\tThematicLayerDataItem,\n} from \"../../../../../interfaces\";\nimport LegendCardHeader from \"../../../../LegendArea/components/LegendCardHeader/index.js\";\nimport { sortBy } from \"lodash\";\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: 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: 4 }} className=\"legend-list\">\n\t\t\t\t{sortBy(legends, \"startValue\").map((legend) => (\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"]}
1
+ {"version":3,"sources":["../../../../../../../../../../../src/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.tsx"],"names":[],"mappings":"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","file":"ChoroplethLegend.js","sourcesContent":["import \"../../../styles/legends.css\";\nimport { colors, Divider } from \"@dhis2/ui\";\nimport type { Legend } from \"@hisptz/dhis2-utils\";\nimport { forwardRef, type LegacyRef } from \"react\";\nimport { getLegendCount } from \"../../../../../../../utils\";\nimport {\n\tThematicLayerData,\n\tThematicLayerDataItem,\n} from \"../../../../../interfaces\";\nimport LegendCardHeader from \"../../../../LegendArea/components/LegendCardHeader/index.js\";\nimport { sortBy } from \"lodash\";\n\nconst formatNumber = Intl.NumberFormat(\"en-GB\", {\n\tnotation: \"standard\",\n}).format;\n\nexport function LegendItem({\n\tlegend,\n\tvalue,\n}: {\n\tlegend: {\n\t\tstartValue: number;\n\t\tendValue: number;\n\t\tcolor: string;\n\t\tname?: string;\n\t};\n\tvalue: number;\n}) {\n\tif (legend.name) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\tgap: 8,\n\t\t\t\t\talignItems: \"stretch\",\n\t\t\t\t\twidth: \"100%\",\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\talignSelf: \"stretch\",\n\t\t\t\t\t\tbackgroundColor: legend.color,\n\t\t\t\t\t\twidth: 8,\n\t\t\t\t\t\tminHeight: \"100%\",\n\t\t\t\t\t}}\n\t\t\t\t></div>\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\t\tflexDirection: \"column\",\n\t\t\t\t\t\tgap: 2,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<span>{legend.name}</span>\n\t\t\t\t\t<div\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\t\t\tgap: 4,\n\t\t\t\t\t\t\tfontSize: 11,\n\t\t\t\t\t\t\tcolor: colors.grey600,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className=\"legend-item-label\">{`${formatNumber(legend.startValue ?? 1)} - ${formatNumber(legend.endValue ?? 1)}`}</div>\n\t\t\t\t\t\t<div className=\"legend-item-value\">{`(${formatNumber(value ?? 0)})`}</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\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: 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: 4 }} className=\"legend-list\">\n\t\t\t\t{sortBy(legends, \"startValue\").map((legend) => (\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"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../../../src/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/index.tsx"],"names":[],"mappings":";;;;;;;;;AAoBA,MAAM,YAAA,GAAe;AAAA,EACpB,MAAA,EAAQ;AACT,CAAA;AACA,MAAM,cAAA,GAAiB;AAAA,EACtB,MAAA,EAAQ;AACT,CAAA;AAQe,SAAR,UAAA,CAA4B;AAAA,EAClC,IAAA;AAAA,EACA,OAAA;AAAA,EACA,mBAAA;AAAA,EACA,YAAA;AAAA,EACA;AACD,CAAA,EAMG;AACF,EAAA,MAAM,EAAE,SAAQ,GAAI,IAAA;AACpB,EAAA,MAAM,KAAA,GAAQ,qBAAA,CAAsB,OAAA,EAAS,IAAA,CAAK,IAAI,CAAA;AAEtD,EAAA,MAAM,MAAA,GAAS,SAAA;AAAA,IACd,KAAA;AAAA,MACC,WAAA,CAAoB,OAAA,CAAQ,OAAA,CAAQ,QAAA,CAAS,WAAW,CAAA;AAAA,MACxD;AAAA,MACC,GAAA,CAAI,CAAC,CAAC,QAAA,EAAU,SAAS,CAAA,MAAiB;AAAA,MAC3C,SAAA;AAAA,MACA;AAAA,KACD,CAAE;AAAA,GACH;AAKA,EAAA,uBACC,GAAA,CAAA,QAAA,EAAA,EACC,QAAA,kBAAA,IAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACA,MAAM,OAAA,CAAQ,OAAA;AAAA,MACd,aAAA,EAAe;AAAA,QACd,SAAA,EAAW,CAAC,CAAA,KAAM,gBAAA,CAAiB,GAAG,cAAc,CAAA;AAAA,QACpD,QAAA,EAAU,CAAC,CAAA,KAAM,cAAA,CAAe,GAAG,YAAY,CAAA;AAAA,QAC/C,GAAI,uBAAuB,EAAC;AAAA,QAC5B,SAAA,EAAW,CAAC,CAAA,KAAM;AACjB,UAAA,IAAI,YAAA,EAAc;AACjB,YAAA,YAAA,CAAa,GAAG,IAAI,CAAA;AAAA,UACrB;AAAA,QACD;AAAA,OACD;AAAA,MACA,WAAA,EAAW,IAAA;AAAA,MACX,WAAA,EAAa;AAAA,QACZ,SAAA,EAAW,KAAA;AAAA,QACX,WAAA,EAAa,CAAA;AAAA,QACb,OAAO,MAAA,CAAO,OAAA;AAAA,QACd,IAAA,EAAM,IAAA;AAAA,QACN,MAAA,EAAQ;AAAA,OACT;AAAA,MAGC,QAAA,EAAA;AAAA,QAAA,WAAA,oBACA,GAAA;AAAA,UAAC,WAAA;AAAA,UAAA;AAAA,YACA,UAAA,EAAY,KAAA;AAAA,YACZ,WAAA;AAAA,YACA,MAAM,IAAA,CAAK,IAAA;AAAA,YACX,OAAA;AAAA,YACA,MAAA,EAAQ,CAAC,MAAA,CAAO,SAAA,EAAW,OAAO,QAAQ;AAAA;AAAA,SAC3C;AAAA,wBAED,GAAA,CAAC,iBAAc,IAAA,EAAY;AAAA;AAAA,KAAA;AAAA,IAXtB,CAAA,EAAG,IAAA,CAAK,QAAA,CAAS,EAAE,CAAA,MAAA;AAAA,GAYzB,EACD,CAAA;AAEF","file":"index.js","sourcesContent":["import { colors } from \"@dhis2/ui\";\nimport type { Legend } from \"@hisptz/dhis2-utils\";\nimport React from \"react\";\nimport { GeoJSON } from \"react-leaflet\";\nimport { MapOrgUnit } from \"../../../../../../interfaces\";\nimport {\n\tgetColorFromLegendSet,\n\thighlightFeature,\n\tresetHighlight,\n} from \"../../../../../../utils\";\nimport {\n\ttype LayerLabelConfig,\n\tThematicLayerDataItem,\n} from \"../../../../interfaces\";\nimport CustomTooltip from \"../CustomTooltip/index.js\";\nimport { type LeafletEventHandlerFnMap, type LeafletMouseEvent } from \"leaflet\";\nimport { LabelMarker } from \"../LabelMarker\";\nimport { getCenter } from \"geolib\";\nimport { chunk, flattenDeep } from \"lodash\";\n\nconst defaultStyle = {\n\tweight: 1,\n};\nconst highlightStyle = {\n\tweight: 2,\n};\n\ninterface LayerData {\n\torgUnit: MapOrgUnit;\n\tdata?: number;\n\tdataItem: ThematicLayerDataItem;\n}\n\nexport default function Choropleth({\n\tdata,\n\tlegends,\n\tcustomEventHandlers,\n\tonLayerClick,\n\tlabelConfig,\n}: {\n\tdata: LayerData;\n\tlegends: Legend[];\n\tcustomEventHandlers?: LeafletEventHandlerFnMap;\n\tonLayerClick?: (e: LeafletMouseEvent, data: LayerData) => void;\n\tlabelConfig?: LayerLabelConfig;\n}) {\n\tconst { orgUnit } = data;\n\tconst color = getColorFromLegendSet(legends, data.data);\n\n\tconst center = getCenter(\n\t\tchunk<number>(\n\t\t\tflattenDeep<number>(orgUnit.geoJSON.geometry.coordinates),\n\t\t\t2,\n\t\t).map(([latitude, longitude]: number[]) => ({\n\t\t\tlongitude,\n\t\t\tlatitude,\n\t\t})),\n\t) as {\n\t\tlongitude: number;\n\t\tlatitude: number;\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<GeoJSON\n\t\t\t\tdata={orgUnit.geoJSON}\n\t\t\t\teventHandlers={{\n\t\t\t\t\tmouseover: (e) => highlightFeature(e, highlightStyle),\n\t\t\t\t\tmouseout: (e) => resetHighlight(e, defaultStyle),\n\t\t\t\t\t...(customEventHandlers ?? {}),\n\t\t\t\t\tmousedown: (e) => {\n\t\t\t\t\t\tif (onLayerClick) {\n\t\t\t\t\t\t\tonLayerClick(e, data);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t\tinteractive\n\t\t\t\tpathOptions={{\n\t\t\t\t\tfillColor: color,\n\t\t\t\t\tfillOpacity: 1,\n\t\t\t\t\tcolor: colors.grey900,\n\t\t\t\t\tfill: true,\n\t\t\t\t\tweight: 1,\n\t\t\t\t}}\n\t\t\t\tkey={`${data.dataItem.id}-layer`}\n\t\t\t>\n\t\t\t\t{labelConfig && (\n\t\t\t\t\t<LabelMarker\n\t\t\t\t\t\tlayerColor={color}\n\t\t\t\t\t\tlabelConfig={labelConfig}\n\t\t\t\t\t\tdata={data.data}\n\t\t\t\t\t\torgUnit={orgUnit}\n\t\t\t\t\t\tcenter={[center.longitude, center.latitude]}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t<CustomTooltip data={data} />\n\t\t\t</GeoJSON>\n\t\t</>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../../../../../src/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/index.tsx"],"names":[],"mappings":";;;;;;;;;AAoBA,MAAM,YAAA,GAAe;AAAA,EACpB,MAAA,EAAQ;AACT,CAAA;AACA,MAAM,cAAA,GAAiB;AAAA,EACtB,MAAA,EAAQ;AACT,CAAA;AAQe,SAAR,UAAA,CAA4B;AAAA,EAClC,IAAA;AAAA,EACA,OAAA;AAAA,EACA,mBAAA;AAAA,EACA,YAAA;AAAA,EACA;AACD,CAAA,EAMG;AACF,EAAA,MAAM,EAAE,SAAQ,GAAI,IAAA;AAEpB,EAAA,MAAM,KAAA,GAAQ,qBAAA,CAAsB,OAAA,EAAS,IAAA,CAAK,IAAI,CAAA;AAEtD,EAAA,MAAM,MAAA,GAAS,SAAA;AAAA,IACd,KAAA;AAAA,MACC,WAAA,CAAoB,OAAA,CAAQ,OAAA,CAAQ,QAAA,CAAS,WAAW,CAAA;AAAA,MACxD;AAAA,MACC,GAAA,CAAI,CAAC,CAAC,QAAA,EAAU,SAAS,CAAA,MAAiB;AAAA,MAC3C,SAAA;AAAA,MACA;AAAA,KACD,CAAE;AAAA,GACH;AAKA,EAAA,uBACC,GAAA,CAAA,QAAA,EAAA,EACC,QAAA,kBAAA,IAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACA,MAAM,OAAA,CAAQ,OAAA;AAAA,MACd,aAAA,EAAe;AAAA,QACd,SAAA,EAAW,CAAC,CAAA,KAAM,gBAAA,CAAiB,GAAG,cAAc,CAAA;AAAA,QACpD,QAAA,EAAU,CAAC,CAAA,KAAM,cAAA,CAAe,GAAG,YAAY,CAAA;AAAA,QAC/C,GAAI,uBAAuB,EAAC;AAAA,QAC5B,SAAA,EAAW,CAAC,CAAA,KAAM;AACjB,UAAA,IAAI,YAAA,EAAc;AACjB,YAAA,YAAA,CAAa,GAAG,IAAI,CAAA;AAAA,UACrB;AAAA,QACD;AAAA,OACD;AAAA,MACA,WAAA,EAAW,IAAA;AAAA,MACX,WAAA,EAAa;AAAA,QACZ,SAAA,EAAW,KAAA;AAAA,QACX,WAAA,EAAa,CAAA;AAAA,QACb,OAAO,MAAA,CAAO,OAAA;AAAA,QACd,IAAA,EAAM,IAAA;AAAA,QACN,MAAA,EAAQ;AAAA,OACT;AAAA,MAGC,QAAA,EAAA;AAAA,QAAA,WAAA,oBACA,GAAA;AAAA,UAAC,WAAA;AAAA,UAAA;AAAA,YACA,UAAA,EAAY,KAAA;AAAA,YACZ,WAAA;AAAA,YACA,MAAM,IAAA,CAAK,IAAA;AAAA,YACX,OAAA;AAAA,YACA,MAAA,EAAQ,CAAC,MAAA,CAAO,SAAA,EAAW,OAAO,QAAQ;AAAA;AAAA,SAC3C;AAAA,wBAED,GAAA,CAAC,iBAAc,IAAA,EAAY;AAAA;AAAA,KAAA;AAAA,IAXtB,CAAA,EAAG,IAAA,CAAK,QAAA,CAAS,EAAE,CAAA,MAAA;AAAA,GAYzB,EACD,CAAA;AAEF","file":"index.js","sourcesContent":["import { colors } from \"@dhis2/ui\";\nimport type { Legend } from \"@hisptz/dhis2-utils\";\nimport React from \"react\";\nimport { GeoJSON } from \"react-leaflet\";\nimport { MapOrgUnit } from \"../../../../../../interfaces\";\nimport {\n\tgetColorFromLegendSet,\n\thighlightFeature,\n\tresetHighlight,\n} from \"../../../../../../utils\";\nimport {\n\ttype LayerLabelConfig,\n\tThematicLayerDataItem,\n} from \"../../../../interfaces\";\nimport CustomTooltip from \"../CustomTooltip/index.js\";\nimport { type LeafletEventHandlerFnMap, type LeafletMouseEvent } from \"leaflet\";\nimport { LabelMarker } from \"../LabelMarker\";\nimport { getCenter } from \"geolib\";\nimport { chunk, flattenDeep } from \"lodash\";\n\nconst defaultStyle = {\n\tweight: 1,\n};\nconst highlightStyle = {\n\tweight: 2,\n};\n\ninterface LayerData {\n\torgUnit: MapOrgUnit;\n\tdata?: number;\n\tdataItem: ThematicLayerDataItem;\n}\n\nexport default function Choropleth({\n\tdata,\n\tlegends,\n\tcustomEventHandlers,\n\tonLayerClick,\n\tlabelConfig,\n}: {\n\tdata: LayerData;\n\tlegends: Legend[];\n\tcustomEventHandlers?: LeafletEventHandlerFnMap;\n\tonLayerClick?: (e: LeafletMouseEvent, data: LayerData) => void;\n\tlabelConfig?: LayerLabelConfig;\n}) {\n\tconst { orgUnit } = data;\n\n\tconst color = getColorFromLegendSet(legends, data.data);\n\n\tconst center = getCenter(\n\t\tchunk<number>(\n\t\t\tflattenDeep<number>(orgUnit.geoJSON.geometry.coordinates),\n\t\t\t2,\n\t\t).map(([latitude, longitude]: number[]) => ({\n\t\t\tlongitude,\n\t\t\tlatitude,\n\t\t})),\n\t) as {\n\t\tlongitude: number;\n\t\tlatitude: number;\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<GeoJSON\n\t\t\t\tdata={orgUnit.geoJSON}\n\t\t\t\teventHandlers={{\n\t\t\t\t\tmouseover: (e) => highlightFeature(e, highlightStyle),\n\t\t\t\t\tmouseout: (e) => resetHighlight(e, defaultStyle),\n\t\t\t\t\t...(customEventHandlers ?? {}),\n\t\t\t\t\tmousedown: (e) => {\n\t\t\t\t\t\tif (onLayerClick) {\n\t\t\t\t\t\t\tonLayerClick(e, data);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t\tinteractive\n\t\t\t\tpathOptions={{\n\t\t\t\t\tfillColor: color,\n\t\t\t\t\tfillOpacity: 1,\n\t\t\t\t\tcolor: colors.grey900,\n\t\t\t\t\tfill: true,\n\t\t\t\t\tweight: 1,\n\t\t\t\t}}\n\t\t\t\tkey={`${data.dataItem.id}-layer`}\n\t\t\t>\n\t\t\t\t{labelConfig && (\n\t\t\t\t\t<LabelMarker\n\t\t\t\t\t\tlayerColor={color}\n\t\t\t\t\t\tlabelConfig={labelConfig}\n\t\t\t\t\t\tdata={data.data}\n\t\t\t\t\t\torgUnit={orgUnit}\n\t\t\t\t\t\tcenter={[center.longitude, center.latitude]}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t<CustomTooltip data={data} />\n\t\t\t</GeoJSON>\n\t\t</>\n\t);\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import i18n from '@dhis2/d2-i18n';
3
3
  import { Pane, Tooltip, Popup } from 'react-leaflet';
4
- import { useMapPeriods } from '../../../../../MapProvider/hooks/index.js';
4
+ import { useMapPeriods } from '../../../../../MapProvider/hooks';
5
5
 
6
6
  function CustomTooltip({
7
7
  data: dataObject
@@ -9,7 +9,7 @@ function CustomTooltip({
9
9
  const { dataItem, orgUnit, data } = dataObject ?? {};
10
10
  const { periods } = useMapPeriods() ?? {};
11
11
  const formatter = Intl.NumberFormat(navigator.language, {}).format;
12
- const formattedData = data ? formatter(data) : "";
12
+ const formattedData = typeof data === "number" ? formatter(data) : "";
13
13
  return /* @__PURE__ */ jsxs(
14
14
  Pane,
15
15
  {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../../../src/components/Map/components/MapLayer/components/ThematicLayer/components/CustomTooltip/index.tsx"],"names":[],"mappings":";;;;;AAMe,SAAR,aAAA,CAA+B;AAAA,EACrC,IAAA,EAAM;AACP,CAAA,EAEG;AACF,EAAA,MAAM,EAAE,QAAA,EAAU,OAAA,EAAS,IAAA,EAAK,GAAI,cAAc,EAAC;AACnD,EAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,aAAA,MAAmB,EAAC;AAExC,EAAA,MAAM,YAAY,IAAA,CAAK,YAAA,CAAa,UAAU,QAAA,EAAU,EAAE,CAAA,CAAE,MAAA;AAE5D,EAAA,MAAM,aAAA,GAAgB,IAAA,GAAO,SAAA,CAAU,IAAc,CAAA,GAAI,EAAA;AAEzD,EAAA,uBACC,IAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACA,MAAM,CAAA,EAAG,QAAA,CAAS,WAAW,CAAA,CAAA,EAAI,QAAQ,EAAE,CAAA,WAAA,CAAA;AAAA,MAC3C,IAAA,EAAK,WAAA;AAAA,MAEL,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,UAAA,OAAA,EAAS,IAAA;AAAA,UAAK,IAAA;AAAA,UAAG,aAAA;AAAA,UAAc;AAAA,SAAA,EACjC,CAAA;AAAA,wBACA,IAAA,CAAC,KAAA,EAAA,EAAM,QAAA,EAAU,EAAA,EAChB,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,QAAG,KAAA,EAAO,EAAE,QAAQ,CAAA,EAAE,EAAI,mBAAS,IAAA,EAAK,CAAA;AAAA,0BACzC,GAAA,CAAC,KAAA,EAAA,EAAK,QAAA,EAAA,QAAA,EAAU,WAAA,EAAY,CAAA;AAAA,0BAC5B,GAAA,CAAC,KAAA,EAAA,EAAK,QAAA,EAAA,OAAA,EAAS,GAAA,CAAI,CAAC,MAAA,KAAW,MAAA,CAAO,IAAI,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,EAAE,CAAA;AAAA,+BACrD,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,YAAA,IAAA,CAAK,EAAE,OAAO,CAAA;AAAA,YAAE,IAAA;AAAA,YAAG;AAAA,WAAA,EACrB;AAAA,SAAA,EACD;AAAA;AAAA;AAAA,GACD;AAEF","file":"index.js","sourcesContent":["import i18n from \"@dhis2/d2-i18n\";\nimport React from \"react\";\nimport { Pane, Popup, Tooltip } from \"react-leaflet\";\nimport { useMapPeriods } from \"../../../../../MapProvider/hooks/index.js\";\nimport { ThematicLayerData } from \"../../../../interfaces/index.js\";\n\nexport default function CustomTooltip({\n\tdata: dataObject,\n}: {\n\tdata: ThematicLayerData;\n}) {\n\tconst { dataItem, orgUnit, data } = dataObject ?? {};\n\tconst { periods } = useMapPeriods() ?? {};\n\n\tconst formatter = Intl.NumberFormat(navigator.language, {}).format;\n\n\tconst formattedData = data ? formatter(data as number) : \"\";\n\n\treturn (\n\t\t<Pane\n\t\t\tname={`${dataItem.displayName}-${orgUnit.id}-popup-pane`}\n\t\t\tpane=\"popupPane\"\n\t\t>\n\t\t\t<Tooltip>\n\t\t\t\t{orgUnit?.name} ({formattedData})\n\t\t\t</Tooltip>\n\t\t\t<Popup minWidth={80}>\n\t\t\t\t<h3 style={{ margin: 0 }}>{orgUnit?.name}</h3>\n\t\t\t\t<div>{dataItem?.displayName}</div>\n\t\t\t\t<div>{periods?.map((period) => period.name).join(\",\")}</div>\n\t\t\t\t<div>\n\t\t\t\t\t{i18n.t(\"Value\")}: {formattedData}\n\t\t\t\t</div>\n\t\t\t</Popup>\n\t\t</Pane>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../../../../../src/components/Map/components/MapLayer/components/ThematicLayer/components/CustomTooltip/index.tsx"],"names":[],"mappings":";;;;;AAMe,SAAR,aAAA,CAA+B;AAAA,EACrC,IAAA,EAAM;AACP,CAAA,EAEG;AACF,EAAA,MAAM,EAAE,QAAA,EAAU,OAAA,EAAS,IAAA,EAAK,GAAI,cAAc,EAAC;AACnD,EAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,aAAA,MAAmB,EAAC;AAExC,EAAA,MAAM,YAAY,IAAA,CAAK,YAAA,CAAa,UAAU,QAAA,EAAU,EAAE,CAAA,CAAE,MAAA;AAE5D,EAAA,MAAM,gBACL,OAAO,IAAA,KAAS,QAAA,GAAW,SAAA,CAAU,IAAc,CAAA,GAAI,EAAA;AAExD,EAAA,uBACC,IAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACA,MAAM,CAAA,EAAG,QAAA,CAAS,WAAW,CAAA,CAAA,EAAI,QAAQ,EAAE,CAAA,WAAA,CAAA;AAAA,MAC3C,IAAA,EAAK,WAAA;AAAA,MAEL,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,UAAA,OAAA,EAAS,IAAA;AAAA,UAAK,IAAA;AAAA,UAAG,aAAA;AAAA,UAAc;AAAA,SAAA,EACjC,CAAA;AAAA,wBACA,IAAA,CAAC,KAAA,EAAA,EAAM,QAAA,EAAU,EAAA,EAChB,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,QAAG,KAAA,EAAO,EAAE,QAAQ,CAAA,EAAE,EAAI,mBAAS,IAAA,EAAK,CAAA;AAAA,0BACzC,GAAA,CAAC,KAAA,EAAA,EAAK,QAAA,EAAA,QAAA,EAAU,WAAA,EAAY,CAAA;AAAA,0BAC5B,GAAA,CAAC,KAAA,EAAA,EAAK,QAAA,EAAA,OAAA,EAAS,GAAA,CAAI,CAAC,MAAA,KAAW,MAAA,CAAO,IAAI,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,EAAE,CAAA;AAAA,+BACrD,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,YAAA,IAAA,CAAK,EAAE,OAAO,CAAA;AAAA,YAAE,IAAA;AAAA,YAAG;AAAA,WAAA,EACrB;AAAA,SAAA,EACD;AAAA;AAAA;AAAA,GACD;AAEF","file":"index.js","sourcesContent":["import i18n from \"@dhis2/d2-i18n\";\nimport React from \"react\";\nimport { Pane, Popup, Tooltip } from \"react-leaflet\";\nimport { useMapPeriods } from \"../../../../../MapProvider/hooks\";\nimport { ThematicLayerData } from \"../../../../interfaces\";\n\nexport default function CustomTooltip({\n\tdata: dataObject,\n}: {\n\tdata: ThematicLayerData;\n}) {\n\tconst { dataItem, orgUnit, data } = dataObject ?? {};\n\tconst { periods } = useMapPeriods() ?? {};\n\n\tconst formatter = Intl.NumberFormat(navigator.language, {}).format;\n\n\tconst formattedData =\n\t\ttypeof data === \"number\" ? formatter(data as number) : \"\";\n\n\treturn (\n\t\t<Pane\n\t\t\tname={`${dataItem.displayName}-${orgUnit.id}-popup-pane`}\n\t\t\tpane=\"popupPane\"\n\t\t>\n\t\t\t<Tooltip>\n\t\t\t\t{orgUnit?.name} ({formattedData})\n\t\t\t</Tooltip>\n\t\t\t<Popup minWidth={80}>\n\t\t\t\t<h3 style={{ margin: 0 }}>{orgUnit?.name}</h3>\n\t\t\t\t<div>{dataItem?.displayName}</div>\n\t\t\t\t<div>{periods?.map((period) => period.name).join(\",\")}</div>\n\t\t\t\t<div>\n\t\t\t\t\t{i18n.t(\"Value\")}: {formattedData}\n\t\t\t\t</div>\n\t\t\t</Popup>\n\t\t</Pane>\n\t);\n}\n"]}
@@ -9,7 +9,7 @@ function getLabel({
9
9
  templateSettings.interpolate = /{([\s\S]+?)}/g;
10
10
  return template(labelConfig.labelTemplate.replace(/\n/g, "<br />"))({
11
11
  name: orgUnit.name,
12
- value: data ? valueFormatter(data) : ""
12
+ value: typeof data === "number" ? valueFormatter(data) : ""
13
13
  });
14
14
  }
15
15
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../../src/components/Map/components/MapLayer/components/ThematicLayer/utils/label.ts"],"names":[],"mappings":";;AAGA,MAAM,cAAA,GAAiB,IAAA,CAAK,YAAA,CAAa,SAAA,CAAU,QAAQ,CAAA,CAAE,MAAA;AAEtD,SAAS,QAAA,CAAS;AAAA,EACxB,OAAA;AAAA,EACA,IAAA;AAAA,EACA;AACD,CAAA,EAIG;AACF,EAAA,gBAAA,CAAiB,WAAA,GAAc,eAAA;AAE/B,EAAA,OAAO,SAAS,WAAA,CAAY,aAAA,CAAc,QAAQ,KAAA,EAAO,QAAQ,CAAC,CAAA,CAAE;AAAA,IACnE,MAAM,OAAA,CAAQ,IAAA;AAAA,IACd,KAAA,EAAO,IAAA,GAAO,cAAA,CAAe,IAAI,CAAA,GAAI;AAAA,GACrC,CAAA;AACF","file":"label.js","sourcesContent":["import { template, templateSettings } from \"lodash\";\nimport type { LayerLabelConfig } from \"../../../interfaces\";\n\nconst valueFormatter = Intl.NumberFormat(navigator.language).format;\n\nexport function getLabel({\n\torgUnit,\n\tdata,\n\tlabelConfig,\n}: {\n\tlabelConfig: LayerLabelConfig;\n\torgUnit: { name: string };\n\tdata?: number;\n}) {\n\ttemplateSettings.interpolate = /{([\\s\\S]+?)}/g;\n\n\treturn template(labelConfig.labelTemplate.replace(/\\n/g, \"<br />\"))({\n\t\tname: orgUnit.name,\n\t\tvalue: data ? valueFormatter(data) : \"\",\n\t});\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../../../../src/components/Map/components/MapLayer/components/ThematicLayer/utils/label.ts"],"names":[],"mappings":";;AAGA,MAAM,cAAA,GAAiB,IAAA,CAAK,YAAA,CAAa,SAAA,CAAU,QAAQ,CAAA,CAAE,MAAA;AAEtD,SAAS,QAAA,CAAS;AAAA,EACxB,OAAA;AAAA,EACA,IAAA;AAAA,EACA;AACD,CAAA,EAIG;AACF,EAAA,gBAAA,CAAiB,WAAA,GAAc,eAAA;AAE/B,EAAA,OAAO,SAAS,WAAA,CAAY,aAAA,CAAc,QAAQ,KAAA,EAAO,QAAQ,CAAC,CAAA,CAAE;AAAA,IACnE,MAAM,OAAA,CAAQ,IAAA;AAAA,IACd,OAAO,OAAO,IAAA,KAAS,QAAA,GAAW,cAAA,CAAe,IAAI,CAAA,GAAI;AAAA,GACzD,CAAA;AACF","file":"label.js","sourcesContent":["import { template, templateSettings } from \"lodash\";\nimport type { LayerLabelConfig } from \"../../../interfaces\";\n\nconst valueFormatter = Intl.NumberFormat(navigator.language).format;\n\nexport function getLabel({\n\torgUnit,\n\tdata,\n\tlabelConfig,\n}: {\n\tlabelConfig: LayerLabelConfig;\n\torgUnit: { name: string };\n\tdata?: number;\n}) {\n\ttemplateSettings.interpolate = /{([\\s\\S]+?)}/g;\n\n\treturn template(labelConfig.labelTemplate.replace(/\\n/g, \"<br />\"))({\n\t\tname: orgUnit.name,\n\t\tvalue: typeof data === \"number\" ? valueFormatter(data) : \"\",\n\t});\n}\n"]}
@@ -65,7 +65,7 @@ const legendSetsQuery = {
65
65
  fields: [
66
66
  "id",
67
67
  "displayName",
68
- "legends[id,code,startValue,endValue,color]"
68
+ "legends[id,code,name,startValue,endValue,color]"
69
69
  ]
70
70
  }
71
71
  }
@@ -113,6 +113,7 @@ function useThematicLayers({
113
113
  const row = rows.find(
114
114
  (row2) => row2[ouIndex] === ou2.id && row2[dxIndex] === layer.dataItem.id
115
115
  );
116
+ row[valueIndex] = 0;
116
117
  return {
117
118
  orgUnit: ou2,
118
119
  data: row ? parseFloat(row[valueIndex]) : void 0,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../../src/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.tsx"],"names":["pe","ou","row","ouGroup"],"mappings":";;;;;;;;;;;;AA2CA,MAAM,cAAA,GAAiB;AAAA,EACtB,SAAA,EAAW;AAAA,IACV,QAAA,EAAU,WAAA;AAAA,IACV,MAAA,EAAQ,CAAC,EAAE,EAAA,EAAI,IAAI,EAAA,EAAI,SAAA,EAAW,OAAA,EAAS,gBAAA,EAAiB,KAAW;AACtE,MAAA,MAAM,WAAA,GAAc,CAAC,OAAA,CAAQ,EAAE,CAAA,GAC5B,MAAM,EAAA,EAAI,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,GACnB,MAAA;AACH,MAAA,MAAM,WAAA,GAAc,CAAC,OAAA,CAAQ,EAAE,CAAA,GAC5B,MAAM,EAAA,EAAI,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,GACnB,MAAA;AACH,MAAA,MAAM,WAAA,GAAc,CAAC,OAAA,CAAQ,EAAE,CAAA,GAC5B,MAAM,EAAA,EAAI,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,GACnB,MAAA;AAEH,MAAA,OAAO;AAAA,QACN,WAAW,OAAA,CAAQ,CAAC,WAAA,EAAa,WAAA,EAAa,WAAW,CAAC,CAAA;AAAA,QAC1D,SAAA;AAAA,QACA,OAAA;AAAA,QACA,eAAA,EAAiB,MAAA;AAAA,QACjB,GAAI,oBAAoB;AAAC,OAC1B;AAAA,IACD;AAAA;AAEF,CAAA;AACA,MAAM,KAAA,GAAQ;AAAA,EACb,KAAA,EAAO;AAAA,IACN,QAAA,EAAU,aAAA;AAAA,IACV,MAAA,EAAQ,CAAC,EAAE,GAAA,EAAI,MAAY;AAAA,MAC1B,EAAA,EAAI,CAAA,GAAA,EAAM,GAAA,CAAI,IAAA,CAAK,GAAG,CAAC,CAAA;AAAA,KACxB;AAAA,GACD;AAAA,EACA,SAAA,EAAW;AAAA,IACV,QAAA,EAAU,WAAA;AAAA,IACV,MAAA,EAAQ,CAAC,EAAE,GAAA,EAAI,MAAY;AAAA,MAC1B,SAAA,EAAW;AAAA,QACV,CAAA,GAAA,EAAM,GAAA,CAAI,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA;AAAA,QACnB,CAAA,GAAA,EAAA,iBAAM,IAAI,IAAA,EAAK,EAAE,aAAa,CAAA;AAAA,OAC/B;AAAA,MACA,QAAA,EAAU,IAAA;AAAA,MACV,aAAA,EAAe;AAAA,KAChB;AAAA;AAEF,CAAA;AACA,MAAM,aAAA,GAAgB;AAAA,EACrB,QAAA,EAAU;AAAA,IACT,QAAA,EAAU,2BAAA;AAAA,IACV,EAAA,EAAI,CAAC,EAAE,QAAA,EAAS,KAAW,QAAA;AAAA,IAC3B,MAAA,EAAQ;AAAA,MACP,MAAA,EAAQ;AAAA,QACP;AAAA;AACD;AACD;AAEF,CAAA;AACA,MAAM,eAAA,GAAkB;AAAA,EACvB,UAAA,EAAY;AAAA,IACX,QAAA,EAAU,YAAA;AAAA,IACV,EAAA,EAAI,CAAC,EAAE,EAAA,EAAG,KAAW,EAAA;AAAA,IACrB,MAAA,EAAQ;AAAA,MACP,MAAA,EAAQ;AAAA,QACP,IAAA;AAAA,QACA,aAAA;AAAA,QACA;AAAA;AACD;AACD;AAEF,CAAA;AAEO,SAAS,iBAAA,CAAkB;AAAA,EACjC;AACD,CAAA,EAEQ;AACP,EAAA,MAAM,SAAS,aAAA,EAAc;AAC7B,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,EAAE,QAAA,EAAU,gBAAA,EAAiB,GAAI,sBAAA,EAAuB;AAC9D,EAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAM,GAAI,aAAA,MAAmB,EAAC;AAC/C,EAAA,MAAM,EAAA,GAAK,OAAA;AAAA,IACV,MAAM,qBAAqB,gBAAgB,CAAA;AAAA,IAC3C,CAAC,gBAAgB;AAAA,GAClB;AACA,EAAA,MAAM,EAAA,GAAK,OAAA,CAAQ,MAAM,OAAA,EAAS,GAAA,CAAI,CAACA,GAAAA,KAAYA,GAAAA,CAAG,EAAE,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEpE,EAAA,MAAM,EAAE,SAAA,EAAW,OAAA,EAAQ,GAAI,QAAQ,MAAM;AAC5C,IAAA,IAAI,CAAC,KAAA,EAAO;AACX,MAAA,OAAO;AAAA,QACN,SAAA,EAAW,MAAA;AAAA,QACX,OAAA,EAAS;AAAA,OACV;AAAA,IACD;AACA,IAAA,OAAO;AAAA,MACN,SAAA,EAAW,YAAA,CAAa,KAAA,CAAM,KAAA,CAAM,cAAc,CAAA;AAAA,MAClD,OAAA,EAAS,YAAA,CAAa,KAAA,CAAM,GAAA,CAAI,cAAc;AAAA,KAC/C;AAAA,EACD,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AACV,EAAA,MAAM,YAAA,GAAe,CAAC,IAAA,EAAW,KAAA,KAA+B;AAC/D,IAAA,IAAI,IAAA,EAAM;AACT,MAAA,MAAM,EAAE,WAAU,GAAI,IAAA;AACtB,MAAA,MAAM,OAAO,SAAA,EAAW,IAAA;AACxB,MAAA,MAAM,OAAA,GAAU,UAAU,OAAA,CAAQ,SAAA;AAAA,QACjC,CAAC,MAAA,KAAgB,MAAA,CAAO,IAAA,KAAS;AAAA,OAClC;AACA,MAAA,MAAM,OAAA,GAAU,UAAU,OAAA,CAAQ,SAAA;AAAA,QACjC,CAAC,MAAA,KAAgB,MAAA,CAAO,IAAA,KAAS;AAAA,OAClC;AACA,MAAA,MAAM,UAAA,GAAa,UAAU,OAAA,CAAQ,SAAA;AAAA,QACpC,CAAC,MAAA,KAAgB,MAAA,CAAO,IAAA,KAAS;AAAA,OAClC;AAEA,MAAA,IAAI,CAAC,OAAA,CAAQ,IAAI,CAAA,EAAG;AACnB,QAAA,OAAO,MAAA;AAAA,UACN,QAAA,EAAU,GAAA,CAAI,CAACC,GAAAA,KAAmB;AACjC,YAAA,MAAM,MAAM,IAAA,CAAK,IAAA;AAAA,cAChB,CAACC,IAAAA,KACAA,IAAAA,CAAI,OAAO,CAAA,KAAMD,GAAAA,CAAG,EAAA,IACpBC,IAAAA,CAAI,OAAO,CAAA,KAAM,KAAA,CAAM,QAAA,CAAS;AAAA,aAClC;AACA,YAAA,OAAO;AAAA,cACN,OAAA,EAASD,GAAAA;AAAA,cACT,MAAM,GAAA,GAAM,UAAA,CAAW,GAAA,CAAI,UAAU,CAAC,CAAA,GAAI,MAAA;AAAA,cAC1C,QAAA,EAAU;AAAA,gBACT,GAAG,KAAA,CAAM;AAAA;AACV,aACD;AAAA,UACD,CAAC,CAAA;AAAA,UACD,CAAC,MAAM;AAAA,SACR;AAAA,MACD;AACA,MAAA,OAAO,EAAC;AAAA,IACT;AACA,IAAA,OAAO,EAAC;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,eAAA,GAAkB,OACvB,MAAA,KACoC;AACpC,IAAA,OAAQ,MAAM,GAAA;AAAA,MACb,MAAA;AAAA,MACA,QAAA,CAAS,OAAO,KAAA,KAA+B;AAC9C,QAAA,IAAI;AACH,UAAA,MAAM,UAAU,EAAC;AACjB,UAAA,IAAI,KAAA,CAAM,SAAS,SAAA,EAAW;AAC7B,YAAA,MAAM,aAAA,GAAgB,MAAM,MAAA,CAAO,KAAA;AAAA,cAClC,eAAA;AAAA,cACA;AAAA,gBACC,SAAA,EAAW;AAAA,kBACV,EAAA,EAAI,MAAM,QAAA,CAAS;AAAA;AACpB;AACD,aACD;AACA,YAAA,MAAM,YACL,aAAA,EAAe,UAAA;AAChB,YAAA,IAAI,SAAA,EAAW;AACd,cAAA,OAAA,CAAQ,IAAA,CAAK,GAAG,SAAA,CAAU,OAAO,CAAA;AAAA,YAClC;AAAA,UACD,CAAA,MAAO;AACN,YAAA,MAAM,EAAE,KAAA,EAAO,UAAA,EAAW,GAAI,KAAA,CAAM,SAClC,YAAA,IAAgB;AAAA,cACjB,KAAA,EAAO,cAAA;AAAA,cACP,UAAA,EAAY;AAAA,aACb;AACA,YAAA,MAAM,UAAA,GAAa,MAAA;AAAA,cAClB,KAAA,CAAM,KAAK,MAAA,CAAO,CAAC,UAAU,CAAC,CAAC,MAAM,IAAI,CAAA;AAAA,cACzC;AAAA,aACD;AACA,YAAA,MAAM,WAAA,GAAc,eAAA;AAAA,cACnB,IAAA,CAAK,UAAU,CAAA,EAAG,IAAA,IAAQ,CAAA;AAAA,cAC1B,IAAA,CAAK,UAAU,CAAA,EAAG,IAAA,IAAQ,CAAA;AAAA,cAC1B;AAAA,gBACC,YAAA,EAAc,KAAA;AAAA,gBACd;AAAA;AACD,aACD;AACA,YAAA,OAAA,CAAQ,IAAA,CAAK,GAAG,WAAW,CAAA;AAAA,UAC5B;AACA,UAAA,OAAO;AAAA,YACN,GAAG,KAAA;AAAA,YACH;AAAA,WACD;AAAA,QACD,SAAS,CAAA,EAAG;AACX,UAAA,OAAO,KAAA;AAAA,QACR;AAAA,MACD,CAAC;AAAA,KACF;AAAA,EACD,CAAA;AAEA,EAAA,MAAM,cAAA,GAAiB,OACtB,MAAA,KACoC;AACpC,IAAA,IAAI;AACH,MAAA,UAAA,CAAW,IAAI,CAAA;AACf,MAAA,MAAM,oBAAoB,MAAA,EAAQ,MAAA,CAAO,CAAC,KAAA,KAAU,CAAC,MAAM,IAAI,CAAA;AAC/D,MAAA,MAAM,cAAA,GAAiB,YAAA;AAAA,QACtB,MAAA;AAAA,QACA,iBAAA;AAAA,QACA;AAAA,OACD;AACA,MAAA,MAAM,KAAK,iBAAA,CAAkB,GAAA,CAAI,CAAC,KAAA,KAAU,KAAA,CAAM,SAAS,EAAE,CAAA;AAC7D,MAAA,IAAI,0BAA+B,EAAC;AAEpC,MAAA,IAAI,CAAC,OAAA,CAAQ,EAAE,CAAA,EAAG;AACjB,QAAA,MAAM,IAAA,GAAO,MAAM,MAAA,CAAO,KAAA,CAAM,cAAA,EAAgB;AAAA,UAC/C,SAAA,EAAW;AAAA,YACV,EAAA;AAAA,YACA,EAAA;AAAA,YACA,EAAA;AAAA,YACA,SAAA;AAAA,YACA,OAAA;AAAA,YACA;AAAA;AACD,SACA,CAAA;AACD,QAAA,uBAAA,GAA0B,iBAAA,CAAkB,GAAA,CAAI,CAAC,KAAA,MAAW;AAAA,UAC3D,GAAG,KAAA;AAAA,UACH,MACC,KAAA,EAAO,IAAA,IAAQ,KAAA,EAAO,QAAA,EAAU,eAAe,KAAA,CAAM,EAAA;AAAA,UACtD,IAAA,EAAM,YAAA,CAAa,IAAA,EAAM,KAAK;AAAA,SAC/B,CAAE,CAAA;AAAA,MACH;AACA,MAAA,MAAM,2BAAA,GAA8B,cAAA,CAAe,GAAA,CAAI,CAAC,KAAA,MAAW;AAAA,QAClE,GAAG,KAAA;AAAA,QACH,IAAA,EAAM,KAAA,CAAM,IAAA,EAAM,GAAA,CAAI,CAAC,KAAA,MAAW;AAAA,UACjC,GAAG,KAAA;AAAA,UACH,OAAA,EAAS,KAAK,QAAA,EAAU;AAAA,YACvB,IAAA;AAAA,YACA,KAAA,CAAM;AAAA,WACN,CAAA;AAAA,UACD,UAAU,KAAA,CAAM,QAAA;AAAA,UAChB,MACC,KAAA,EAAO,IAAA,IAAQ,KAAA,EAAO,QAAA,EAAU,eAAe,KAAA,CAAM;AAAA,SACvD,CAAE;AAAA,OACH,CAAE,CAAA;AACF,MAAA,UAAA,CAAW,KAAK,CAAA;AAChB,MAAA,OAAO,MAAM,eAAA,CAAgB;AAAA,QAC5B,GAAG,uBAAA;AAAA,QACH,GAAG;AAAA,OACH,CAAA;AAAA,IACF,SAAS,CAAA,EAAQ;AAChB,MAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,6BAAA,CAAA,EAAiC,CAAA,CAAE,OAAO,CAAA;AACxD,MAAA,UAAA,CAAW,KAAK,CAAA;AAChB,MAAA,OAAO,EAAC;AAAA,IACT;AAAA,EACD,CAAA;AAEA,EAAA,OAAO;AAAA,IACN,cAAA;AAAA,IACA;AAAA,GACD;AACD;AAEO,SAAS,aAAA,GAAgB;AAC/B,EAAA,MAAM,SAAS,aAAA,EAAc;AAC7B,EAAA,MAAM,EAAE,gBAAA,EAAiB,GAAI,sBAAA,EAAuB;AACpD,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA;AAE5C,EAAA,MAAM,iBAAA,GAAoB,WAAA;AAAA,IACzB,CAAC,aAAkB,YAAA,KAAsC;AACxD,MAAA,MAAM,EAAE,SAAA,EAAW,KAAA,EAAM,GAAK,eAAuB,EAAC;AACtD,MAAA,MAAM,WAAA,GAAc,gBAAA,CAAiB,SAAA,EAAW,QAAQ,CAAA;AACxD,MAAA,MAAM,cAAA,GAAiB,SAAA;AAAA,QACtB,KAAA,EAAO,MAAA,CAAO,CAAC,KAAA,KAAe,MAAM,EAAE;AAAA,OACvC;AACA,MAAA,OAAO,OAAA;AAAA,QACN,WAAA,CAAY,GAAA,CAAI,CAAC,OAAA,KAAiB;AACjC,UAAA,MAAM,gBAAqB,cAAA,EAAgB,IAAA;AAAA,YAC1C,CAAC,OAAA,KAAiB,OAAA,CAAQ,UAAA,CAAW,OAAO,OAAA,CAAQ;AAAA,WACrD;AACA,UAAA,MAAM,aAAA,GACJ,YAAA,EAAc,QAAA,EACZ,sBAAA,IAA0B,EAAC;AAC/B,UAAA,MAAM,OAAA,GAAU,IAAA;AAAA,YACf,aAAA;AAAA,YACA,CAACE,aACA,CAAC,CAAC,KAAKA,QAAAA,EAAS,iBAAA,IAAqB,EAAC,EAAG;AAAA,cACxC,IAAA;AAAA,cACA,OAAA,CAAQ;AAAA,aACR;AAAA,WACH;AAEA,UAAA,IACC,CAAC,aAAA,IACD,aAAA,CAAc,UAAA,CAAW,SAAS,OAAA,EACjC;AACD,YAAA;AAAA,UACD;AACA,UAAA,OAAO;AAAA,YACN,GAAG,OAAA;AAAA,YACH,OAAA,EAAS,aAAA;AAAA,YACT,KAAA,EAAO,cAAc,UAAA,CAAW,KAAA;AAAA,YAChC,IAAA,EAAM;AAAA,cACL,IAAA,EAAM,WAAA;AAAA,cACN,MAAM,OAAA,EAAS;AAAA;AAChB,WACD;AAAA,QACD,CAAC;AAAA,OACF;AAAA,IACD,CAAA;AAAA,IACA;AAAC,GACF;AAEA,EAAA,MAAM,aAAA,GAAgB,WAAA;AAAA,IACrB,OACC,KAAA,KAC2C;AAC3C,MAAA,IAAI;AACH,QAAA,IAAI,CAAC,KAAA,CAAM,KAAA,IAAS,CAAC,MAAM,KAAA,EAAO;AACjC,UAAA;AAAA,QACD;AACA,QAAA,UAAA,CAAW,IAAI,CAAA;AACf,QAAA,MAAM,QAAQ,KAAA,CAAM,KAAA,GAAQ,CAAA,MAAA,EAAS,KAAA,CAAM,KAAK,CAAA,CAAA,GAAK,KAAA,CAAA;AACrD,QAAA,MAAM,QAAQ,KAAA,CAAM,KAAA,GACjB,CAAA,SAAA,EAAY,KAAA,CAAM,KAAK,CAAA,CAAA,GACvB,KAAA,CAAA;AACH,QAAA,MAAM,GAAA,GAAM;AAAA,UACX,GAAG,qBAAqB,gBAAgB,CAAA;AAAA,UACxC,KAAA;AAAA,UACA;AAAA,SACD;AAEA,QAAA,MAAM,SAAA,GAAY,MAAM,MAAA,CAAO,KAAA,CAAM,KAAA,EAAO;AAAA,UAC3C,SAAA,EAAW;AAAA,YACV;AAAA;AACD,SACA,CAAA;AACD,QAAA,MAAM,YAAA,GAAe,MAAM,MAAA,CAAO,KAAA,CAAM,aAAA,EAAe;AAAA,UACtD,SAAA,EAAW;AAAA,YACV,QAAA,EAAU,MAAM,KAAA,EAAO;AAAA;AACxB,SACA,CAAA;AACD,QAAA,MAAM,oBAAA,GAAuB,iBAAA;AAAA,UAC5B,SAAA;AAAA,UACA;AAAA,SACD;AAEA,QAAA,MAAM,aAAA,GACJ,YAAA,EAAc,QAAA,EAAkB,sBAAA,IACjC,EAAC;AAEF,QAAA,MAAM,yBAAyB,aAAA,CAAc,GAAA;AAAA,UAC5C,CAAC,OAAA,MAAkB;AAAA,YAClB,GAAG,OAAA;AAAA,YACH,iBAAA,EAAmB,KAAA;AAAA,WACpB;AAAA,SACD;AACA,QAAA,UAAA,CAAW,KAAK,CAAA;AAChB,QAAA,OAAO;AAAA,UACN,GAAG,KAAA;AAAA,UACH,MAAA,EAAQ,oBAAA;AAAA,UACR,KAAA,EAAO;AAAA,YACN,GAAG,KAAA,CAAM,KAAA;AAAA,YACT,aAAA,EAAe;AAAA;AAChB,SACD;AAAA,MACD,SAAS,CAAA,EAAQ;AAChB,QAAA,UAAA,CAAW,KAAK,CAAA;AAChB,QAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,yBAAA,CAAA,EAA6B,CAAA,CAAE,OAAO,CAAA;AACpD,QAAA;AAAA,MACD;AAAA,IACD,CAAA;AAAA,IACA;AAAC,GACF;AAEA,EAAA,OAAO;AAAA,IACN,OAAA;AAAA,IACA;AAAA,GACD;AACD;AAEO,SAAS,qBAAA,GAAwB;AACvC,EAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,oBAAA,EAAqB;AACzC,EAAA,MAAM,WAAW,eAAA,EAAgB;AAEjC,EAAA,eAAe,WAAA,CACd,WAAA,EACA,EAAE,OAAA,EAAQ,EACoB;AAC9B,IAAA,IAAI,YAAY,WAAA,EAAa;AAC5B,MAAA,IAAI;AACH,QAAA,WAAA,CAAY,WAAA,CAAY,QAAA,IAAY,EAAE,CAAA;AACtC,QAAA,MAAM,SAAS,OAAA,EAAS,MAAA;AACxB,QAAA,IAAI,MAAA,EAAQ;AACX,UAAA,WAAA,CAAY,UAAU,MAAM,CAAA;AAAA,QAC7B;AACA,QAAA,OAAO,YAAY,GAAA,EAAI;AAAA,MACxB,SAAS,CAAA,EAAG;AACX,QAAA,OAAA,CAAQ,MAAM,CAAC,CAAA;AAAA,MAChB;AAAA,IACD;AAAA,EACD;AAEA,EAAA,MAAM,cAAA,GAAiB,WAAA;AAAA,IACtB,OACC,MAAA,KACwC;AACxC,MAAA,IAAI,OAAA,CAAQ,MAAM,CAAA,EAAG;AACpB,QAAA,OAAO,EAAC;AAAA,MACT;AACA,MAAA,IAAI;AACH,QAAA,MAAM,EAAE,KAAA,EAAM,GAAI,MAAM,OAAA,EAAQ;AAChC,QAAA,IAAI,CAAC,KAAA,EAAO;AACX,UAAA,OAAA,CAAQ,KAAA;AAAA,YACP,CAAA,2CAAA;AAAA,WACD;AACA,UAAA,OAAO,EAAC;AAAA,QACT;AACA,QAAA,MAAM,WAAA,CAAY,QAAA,CAAS,KAAA,EAAO,OAAO,CAAA;AACzC,QAAA,OAAO,GAAA;AAAA,UACN,MAAA;AAAA,UACA,QAAA,CAAS,OAAO,KAAA,KAAkC;AACjD,YAAA,IAAI;AACH,cAAA,MAAM,cAAA,GACL,KAAK,mBAAA,EAAqB,CAAC,MAAM,KAAA,CAAM,IAAI,CAAC,CAAA,IAC5C,EAAC;AACF,cAAA,MAAM,OAAA,GAA8B;AAAA,gBACnC,GAAG,cAAA;AAAA,gBACH,YAAA,EACC,KAAA,CAAM,YAAA,IACN,cAAA,EAAgB,YAAA;AAAA,gBACjB,MAAA,EAAQ,KAAA,CAAM,MAAA,IAAU,cAAA,EAAgB;AAAA,eACzC;AACA,cAAA,MAAM,YAAA,GAAe;AAAA,gBACpB,GAAG,KAAA;AAAA,gBACH;AAAA,eACD;AACA,cAAA,MAAM,WAAA,GAAc,IAAI,WAAA,CAAY,EAAE,SAAS,CAAA;AAC/C,cAAA,MAAM,MAAM,MAAM,WAAA;AAAA,gBACjB,WAAA;AAAA,gBACA;AAAA,eACD;AACA,cAAA,OAAO;AAAA,gBACN,GAAG,YAAA;AAAA,gBACH,MAAA,EAAQ,WAAA;AAAA,gBACR;AAAA,eACD;AAAA,YACD,SAAS,CAAA,EAAG;AACX,cAAA,OAAA,CAAQ,MAAM,CAAC,CAAA;AACf,cAAA;AAAA,YACD;AAAA,UACD,CAAC;AAAA,SACF;AAAA,MACD,SAAS,CAAA,EAAQ;AAChB,QAAA,OAAA,CAAQ,IAAI,CAAC,CAAA;AACb,QAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,6BAAA,CAAA,EAAiC,CAAA,CAAE,OAAO,CAAA;AACxD,QAAA,OAAO,EAAC;AAAA,MACT;AAAA,IACD,CAAA;AAAA,IACA,CAAC,OAAO;AAAA,GACT;AAEA,EAAA,OAAO;AAAA,IACN;AAAA,GACD;AACD","file":"index.js","sourcesContent":["import {\n\tcompact,\n\tdifferenceBy,\n\tfind,\n\thead,\n\tisEmpty,\n\tlast,\n\tsortBy,\n} from \"lodash\";\nimport { useMapOrganisationUnit, useMapPeriods } from \"../../../hooks/index.js\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport {\n\tgenerateLegends,\n\tgetOrgUnitsSelection,\n\tsanitizeDate,\n\tsanitizeOrgUnits,\n\ttoGeoJson,\n} from \"../../../../../utils/map.js\";\nimport { useDataEngine } from \"@dhis2/app-runtime\";\nimport {\n\tCustomGoogleEngineLayer,\n\tCustomPointLayer,\n\tCustomThematicLayer,\n\tEarthEngineLayerConfig,\n\tThematicLayerConfig,\n} from \"../../../../MapLayer/interfaces\";\nimport {\n\ttype MapAnalyticsOptions,\n\tMapOrgUnit,\n\tPointOrgUnit,\n} from \"../../../../../interfaces/index.js\";\nimport { asyncify, map } from \"async-es\";\nimport { LegendSet } from \"@hisptz/dhis2-utils\";\nimport {\n\tdefaultClasses,\n\tdefaultColorScaleName,\n} from \"../../../../../utils/colors.js\";\nimport { useGoogleEngineToken } from \"../../../../MapLayer/components/GoogleEngineLayer/hooks/index.js\";\nimport { useBoundaryData } from \"../../../../MapLayer/components/BoundaryLayer/hooks/useBoundaryData.js\";\nimport { EarthEngine } from \"../../../../MapLayer/components/GoogleEngineLayer/services/engine.js\";\nimport { EARTH_ENGINE_LAYERS } from \"../../../../MapLayer/components/GoogleEngineLayer/constants/index.js\";\nimport { EarthEngineOptions } from \"../../../../MapLayer/components/GoogleEngineLayer/interfaces/index.js\";\n\nconst analyticsQuery = {\n\tanalytics: {\n\t\tresource: \"analytics\",\n\t\tparams: ({ ou, pe, dx, startDate, endDate, analyticsOptions }: any) => {\n\t\t\tconst peDimension = !isEmpty(pe)\n\t\t\t\t? `pe:${pe?.join(\";\")}`\n\t\t\t\t: undefined;\n\t\t\tconst ouDimension = !isEmpty(ou)\n\t\t\t\t? `ou:${ou?.join(\";\")}`\n\t\t\t\t: undefined;\n\t\t\tconst dxDimension = !isEmpty(dx)\n\t\t\t\t? `dx:${dx?.join(\";\")}`\n\t\t\t\t: undefined;\n\n\t\t\treturn {\n\t\t\t\tdimension: compact([dxDimension, peDimension, ouDimension]),\n\t\t\t\tstartDate,\n\t\t\t\tendDate,\n\t\t\t\tdisplayProperty: \"NAME\",\n\t\t\t\t...(analyticsOptions ?? {}),\n\t\t\t};\n\t\t},\n\t},\n};\nconst query = {\n\tlayer: {\n\t\tresource: \"geoFeatures\",\n\t\tparams: ({ ous }: any) => ({\n\t\t\tou: `ou:${ous.join(\";\")}`,\n\t\t}),\n\t},\n\tanalytics: {\n\t\tresource: \"analytics\",\n\t\tparams: ({ ous }: any) => ({\n\t\t\tdimension: [\n\t\t\t\t`ou:${ous.join(\";\")}`,\n\t\t\t\t`pe:${new Date().getFullYear()}`,\n\t\t\t],\n\t\t\tskipData: true,\n\t\t\thierarchyMeta: true,\n\t\t}),\n\t},\n};\nconst groupSetQuery = {\n\tgroupSet: {\n\t\tresource: \"organisationUnitGroupSets\",\n\t\tid: ({ groupSet }: any) => groupSet,\n\t\tparams: {\n\t\t\tfields: [\n\t\t\t\t\"organisationUnitGroups[name,color,symbol,organisationUnits[id]]\",\n\t\t\t],\n\t\t},\n\t},\n};\nconst legendSetsQuery = {\n\tlegendSets: {\n\t\tresource: \"legendSets\",\n\t\tid: ({ id }: any) => id,\n\t\tparams: {\n\t\t\tfields: [\n\t\t\t\t\"id\",\n\t\t\t\t\"displayName\",\n\t\t\t\t\"legends[id,code,startValue,endValue,color]\",\n\t\t\t],\n\t\t},\n\t},\n};\n\nexport function useThematicLayers({\n\tanalyticsOptions,\n}: {\n\tanalyticsOptions?: MapAnalyticsOptions;\n}): any {\n\tconst engine = useDataEngine();\n\tconst [loading, setLoading] = useState(false);\n\tconst { orgUnits, orgUnitSelection } = useMapOrganisationUnit();\n\tconst { periods, range } = useMapPeriods() ?? {};\n\tconst ou = useMemo(\n\t\t() => getOrgUnitsSelection(orgUnitSelection),\n\t\t[orgUnitSelection],\n\t);\n\tconst pe = useMemo(() => periods?.map((pe: any) => pe.id), [periods]);\n\n\tconst { startDate, endDate } = useMemo(() => {\n\t\tif (!range) {\n\t\t\treturn {\n\t\t\t\tstartDate: undefined,\n\t\t\t\tendDate: undefined,\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tstartDate: sanitizeDate(range.start.toDateString()),\n\t\t\tendDate: sanitizeDate(range.end.toDateString()),\n\t\t};\n\t}, [range]);\n\tconst sanitizeData = (data: any, layer: ThematicLayerConfig) => {\n\t\tif (data) {\n\t\t\tconst { analytics } = data as any;\n\t\t\tconst rows = analytics?.rows;\n\t\t\tconst ouIndex = analytics.headers.findIndex(\n\t\t\t\t(header: any) => header.name === \"ou\",\n\t\t\t);\n\t\t\tconst dxIndex = analytics.headers.findIndex(\n\t\t\t\t(header: any) => header.name === \"dx\",\n\t\t\t);\n\t\t\tconst valueIndex = analytics.headers.findIndex(\n\t\t\t\t(header: any) => header.name === \"value\",\n\t\t\t);\n\n\t\t\tif (!isEmpty(rows)) {\n\t\t\t\treturn sortBy(\n\t\t\t\t\torgUnits?.map((ou: MapOrgUnit) => {\n\t\t\t\t\t\tconst row = rows.find(\n\t\t\t\t\t\t\t(row: any) =>\n\t\t\t\t\t\t\t\trow[ouIndex] === ou.id &&\n\t\t\t\t\t\t\t\trow[dxIndex] === layer.dataItem.id,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\torgUnit: ou,\n\t\t\t\t\t\t\tdata: row ? parseFloat(row[valueIndex]) : undefined,\n\t\t\t\t\t\t\tdataItem: {\n\t\t\t\t\t\t\t\t...layer.dataItem,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t}),\n\t\t\t\t\t[\"data\"],\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn [];\n\t\t}\n\t\treturn [];\n\t};\n\n\tconst sanitizeLegends = async (\n\t\tlayers: CustomThematicLayer[],\n\t): Promise<CustomThematicLayer[]> => {\n\t\treturn (await map(\n\t\t\tlayers,\n\t\t\tasyncify(async (layer: CustomThematicLayer) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst legends = [];\n\t\t\t\t\tif (layer.dataItem.legendSet) {\n\t\t\t\t\t\tconst legendSetData = await engine.query(\n\t\t\t\t\t\t\tlegendSetsQuery,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvariables: {\n\t\t\t\t\t\t\t\t\tid: layer.dataItem.legendSet,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst legendSet: LegendSet =\n\t\t\t\t\t\t\tlegendSetData?.legendSets as LegendSet;\n\t\t\t\t\t\tif (legendSet) {\n\t\t\t\t\t\t\tlegends.push(...legendSet.legends);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst { scale, colorClass } = layer.dataItem\n\t\t\t\t\t\t\t.legendConfig ?? {\n\t\t\t\t\t\t\tscale: defaultClasses,\n\t\t\t\t\t\t\tcolorClass: defaultColorScaleName,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst sortedData = sortBy(\n\t\t\t\t\t\t\tlayer.data.filter((datum) => !!datum.data),\n\t\t\t\t\t\t\t\"data\",\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst autoLegends = generateLegends(\n\t\t\t\t\t\t\tlast(sortedData)?.data ?? 0,\n\t\t\t\t\t\t\thead(sortedData)?.data ?? 0,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tclassesCount: scale,\n\t\t\t\t\t\t\t\tcolorClass,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t\tlegends.push(...autoLegends);\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...layer,\n\t\t\t\t\t\tlegends,\n\t\t\t\t\t};\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn layer;\n\t\t\t\t}\n\t\t\t}),\n\t\t)) as CustomThematicLayer[];\n\t};\n\n\tconst sanitizeLayers = async (\n\t\tlayers: ThematicLayerConfig[],\n\t): Promise<CustomThematicLayer[]> => {\n\t\ttry {\n\t\t\tsetLoading(true);\n\t\t\tconst layersWithoutData = layers?.filter((layer) => !layer.data);\n\t\t\tconst layersWithData = differenceBy(\n\t\t\t\tlayers,\n\t\t\t\tlayersWithoutData,\n\t\t\t\t\"id\",\n\t\t\t);\n\t\t\tconst dx = layersWithoutData.map((layer) => layer.dataItem.id);\n\t\t\tlet sanitizedLayersWithData: any = [];\n\n\t\t\tif (!isEmpty(dx)) {\n\t\t\t\tconst data = await engine.query(analyticsQuery, {\n\t\t\t\t\tvariables: {\n\t\t\t\t\t\tdx,\n\t\t\t\t\t\tou,\n\t\t\t\t\t\tpe,\n\t\t\t\t\t\tstartDate,\n\t\t\t\t\t\tendDate,\n\t\t\t\t\t\tanalyticsOptions,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tsanitizedLayersWithData = layersWithoutData.map((layer) => ({\n\t\t\t\t\t...layer,\n\t\t\t\t\tname:\n\t\t\t\t\t\tlayer?.name ?? layer?.dataItem?.displayName ?? layer.id,\n\t\t\t\t\tdata: sanitizeData(data, layer),\n\t\t\t\t}));\n\t\t\t}\n\t\t\tconst sanitizedLayersWithOrgUnits = layersWithData.map((layer) => ({\n\t\t\t\t...layer,\n\t\t\t\tdata: layer.data?.map((datum) => ({\n\t\t\t\t\t...datum,\n\t\t\t\t\torgUnit: find(orgUnits, [\n\t\t\t\t\t\t\"id\",\n\t\t\t\t\t\tdatum.orgUnit,\n\t\t\t\t\t]) as MapOrgUnit,\n\t\t\t\t\tdataItem: layer.dataItem,\n\t\t\t\t\tname:\n\t\t\t\t\t\tlayer?.name ?? layer?.dataItem?.displayName ?? layer.id,\n\t\t\t\t})),\n\t\t\t}));\n\t\t\tsetLoading(false);\n\t\t\treturn await sanitizeLegends([\n\t\t\t\t...sanitizedLayersWithData,\n\t\t\t\t...sanitizedLayersWithOrgUnits,\n\t\t\t]);\n\t\t} catch (e: any) {\n\t\t\tconsole.error(`Error getting thematic layers`, e.details);\n\t\t\tsetLoading(false);\n\t\t\treturn [];\n\t\t}\n\t};\n\n\treturn {\n\t\tsanitizeLayers,\n\t\tloading,\n\t};\n}\n\nexport function usePointLayer() {\n\tconst engine = useDataEngine();\n\tconst { orgUnitSelection } = useMapOrganisationUnit();\n\tconst [loading, setLoading] = useState(false);\n\n\tconst sanitizePointData = useCallback(\n\t\t(orgUnitData: any, groupSetData: any): PointOrgUnit[] => {\n\t\t\tconst { analytics, layer } = (orgUnitData as any) ?? {};\n\t\t\tconst rawOrgUnits = sanitizeOrgUnits(analytics?.metaData);\n\t\t\tconst geoJSONObjects = toGeoJson(\n\t\t\t\tlayer?.filter((bound: any) => bound.co),\n\t\t\t);\n\t\t\treturn compact(\n\t\t\t\trawOrgUnits.map((orgUnit: any) => {\n\t\t\t\t\tconst geoJSONObject: any = geoJSONObjects?.find(\n\t\t\t\t\t\t(geoJSON: any) => geoJSON.properties.id === orgUnit.id,\n\t\t\t\t\t);\n\t\t\t\t\tconst orgUnitGroups: any =\n\t\t\t\t\t\t(groupSetData?.groupSet as any)\n\t\t\t\t\t\t\t?.organisationUnitGroups ?? [];\n\t\t\t\t\tconst ouGroup = find(\n\t\t\t\t\t\torgUnitGroups,\n\t\t\t\t\t\t(ouGroup) =>\n\t\t\t\t\t\t\t!!find(ouGroup?.organisationUnits ?? [], [\n\t\t\t\t\t\t\t\t\"id\",\n\t\t\t\t\t\t\t\torgUnit.id,\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t);\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t!geoJSONObject ||\n\t\t\t\t\t\tgeoJSONObject.properties.type !== \"Point\"\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...orgUnit,\n\t\t\t\t\t\tgeoJSON: geoJSONObject,\n\t\t\t\t\t\tlevel: geoJSONObject.properties.level,\n\t\t\t\t\t\ticon: {\n\t\t\t\t\t\t\ttype: \"groupIcon\",\n\t\t\t\t\t\t\ticon: ouGroup?.symbol,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t);\n\t\t},\n\t\t[],\n\t);\n\n\tconst sanitizeLayer = useCallback(\n\t\tasync (\n\t\t\tlayer: CustomPointLayer,\n\t\t): Promise<CustomPointLayer | undefined> => {\n\t\t\ttry {\n\t\t\t\tif (!layer.level && !layer.group) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tsetLoading(true);\n\t\t\t\tconst level = layer.level ? `LEVEL-${layer.level}` : undefined;\n\t\t\t\tconst group = layer.group\n\t\t\t\t\t? `OU_GROUP-${layer.group}`\n\t\t\t\t\t: undefined;\n\t\t\t\tconst ous = [\n\t\t\t\t\t...getOrgUnitsSelection(orgUnitSelection),\n\t\t\t\t\tlevel,\n\t\t\t\t\tgroup,\n\t\t\t\t];\n\n\t\t\t\tconst pointData = await engine.query(query, {\n\t\t\t\t\tvariables: {\n\t\t\t\t\t\tous,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tconst groupSetData = await engine.query(groupSetQuery, {\n\t\t\t\t\tvariables: {\n\t\t\t\t\t\tgroupSet: layer.style?.groupSet,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tconst sanitizedOrgUnitData = sanitizePointData(\n\t\t\t\t\tpointData,\n\t\t\t\t\tgroupSetData,\n\t\t\t\t);\n\n\t\t\t\tconst orgUnitGroups =\n\t\t\t\t\t(groupSetData?.groupSet as any)?.organisationUnitGroups ??\n\t\t\t\t\t[];\n\n\t\t\t\tconst sanitizedOrgUnitGroups = orgUnitGroups.map(\n\t\t\t\t\t(ouGroup: any) => ({\n\t\t\t\t\t\t...ouGroup,\n\t\t\t\t\t\torganisationUnits: undefined,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t\tsetLoading(false);\n\t\t\t\treturn {\n\t\t\t\t\t...layer,\n\t\t\t\t\tpoints: sanitizedOrgUnitData,\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\t...layer.style,\n\t\t\t\t\t\torgUnitGroups: sanitizedOrgUnitGroups,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t} catch (e: any) {\n\t\t\t\tsetLoading(false);\n\t\t\t\tconsole.error(`Error getting point layer`, e.details);\n\t\t\t\treturn;\n\t\t\t}\n\t\t},\n\t\t[],\n\t);\n\n\treturn {\n\t\tloading,\n\t\tsanitizeLayer,\n\t};\n}\n\nexport function useGoogleEngineLayers() {\n\tconst { refresh } = useGoogleEngineToken();\n\tconst orgUnits = useBoundaryData();\n\n\tasync function getImageUrl(\n\t\tearthEngine: EarthEngine,\n\t\t{ filters }: EarthEngineLayerConfig,\n\t): Promise<string | undefined> {\n\t\tif (earthEngine.initialized) {\n\t\t\ttry {\n\t\t\t\tearthEngine.setOrgUnits(orgUnits ?? []);\n\t\t\t\tconst period = filters?.period;\n\t\t\t\tif (period) {\n\t\t\t\t\tearthEngine.setPeriod(period);\n\t\t\t\t}\n\t\t\t\treturn earthEngine.url();\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error(e);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst sanitizeLayers = useCallback(\n\t\tasync (\n\t\t\tlayers: EarthEngineLayerConfig[],\n\t\t): Promise<CustomGoogleEngineLayer[]> => {\n\t\t\tif (isEmpty(layers)) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst { token } = await refresh();\n\t\t\t\tif (!token) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t`Google token not available in this instance`,\n\t\t\t\t\t);\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\t\t\t\tawait EarthEngine.setToken(token, refresh);\n\t\t\t\treturn map(\n\t\t\t\t\tlayers,\n\t\t\t\t\tasyncify(async (layer: EarthEngineLayerConfig) => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst defaultOptions: any =\n\t\t\t\t\t\t\t\tfind(EARTH_ENGINE_LAYERS, [\"id\", layer.type]) ??\n\t\t\t\t\t\t\t\t{};\n\t\t\t\t\t\t\tconst options: EarthEngineOptions = {\n\t\t\t\t\t\t\t\t...defaultOptions,\n\t\t\t\t\t\t\t\taggregations:\n\t\t\t\t\t\t\t\t\tlayer.aggregations ??\n\t\t\t\t\t\t\t\t\tdefaultOptions?.aggregations,\n\t\t\t\t\t\t\t\tparams: layer.params ?? defaultOptions?.params,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tconst updatedLayer = {\n\t\t\t\t\t\t\t\t...layer,\n\t\t\t\t\t\t\t\toptions,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tconst earthEngine = new EarthEngine({ options });\n\t\t\t\t\t\t\tconst url = await getImageUrl(\n\t\t\t\t\t\t\t\tearthEngine,\n\t\t\t\t\t\t\t\tupdatedLayer,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...updatedLayer,\n\t\t\t\t\t\t\t\tengine: earthEngine,\n\t\t\t\t\t\t\t\turl,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tconsole.error(e);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t} catch (e: any) {\n\t\t\t\tconsole.log(e);\n\t\t\t\tconsole.error(`Error getting thematic layers`, e.details);\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\t\t[refresh],\n\t);\n\n\treturn {\n\t\tsanitizeLayers,\n\t};\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../../../../src/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.tsx"],"names":["pe","ou","row","ouGroup"],"mappings":"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","file":"index.js","sourcesContent":["import {\n\tcompact,\n\tdifferenceBy,\n\tfind,\n\thead,\n\tisEmpty,\n\tlast,\n\tsortBy,\n} from \"lodash\";\nimport { useMapOrganisationUnit, useMapPeriods } from \"../../../hooks/index.js\";\nimport { useCallback, useMemo, useState } from \"react\";\nimport {\n\tgenerateLegends,\n\tgetOrgUnitsSelection,\n\tsanitizeDate,\n\tsanitizeOrgUnits,\n\ttoGeoJson,\n} from \"../../../../../utils/map.js\";\nimport { useDataEngine } from \"@dhis2/app-runtime\";\nimport {\n\tCustomGoogleEngineLayer,\n\tCustomPointLayer,\n\tCustomThematicLayer,\n\tEarthEngineLayerConfig,\n\tThematicLayerConfig,\n} from \"../../../../MapLayer/interfaces\";\nimport {\n\ttype MapAnalyticsOptions,\n\tMapOrgUnit,\n\tPointOrgUnit,\n} from \"../../../../../interfaces/index.js\";\nimport { asyncify, map } from \"async-es\";\nimport { LegendSet } from \"@hisptz/dhis2-utils\";\nimport {\n\tdefaultClasses,\n\tdefaultColorScaleName,\n} from \"../../../../../utils/colors.js\";\nimport { useGoogleEngineToken } from \"../../../../MapLayer/components/GoogleEngineLayer/hooks/index.js\";\nimport { useBoundaryData } from \"../../../../MapLayer/components/BoundaryLayer/hooks/useBoundaryData.js\";\nimport { EarthEngine } from \"../../../../MapLayer/components/GoogleEngineLayer/services/engine.js\";\nimport { EARTH_ENGINE_LAYERS } from \"../../../../MapLayer/components/GoogleEngineLayer/constants/index.js\";\nimport { EarthEngineOptions } from \"../../../../MapLayer/components/GoogleEngineLayer/interfaces/index.js\";\n\nconst analyticsQuery = {\n\tanalytics: {\n\t\tresource: \"analytics\",\n\t\tparams: ({ ou, pe, dx, startDate, endDate, analyticsOptions }: any) => {\n\t\t\tconst peDimension = !isEmpty(pe)\n\t\t\t\t? `pe:${pe?.join(\";\")}`\n\t\t\t\t: undefined;\n\t\t\tconst ouDimension = !isEmpty(ou)\n\t\t\t\t? `ou:${ou?.join(\";\")}`\n\t\t\t\t: undefined;\n\t\t\tconst dxDimension = !isEmpty(dx)\n\t\t\t\t? `dx:${dx?.join(\";\")}`\n\t\t\t\t: undefined;\n\n\t\t\treturn {\n\t\t\t\tdimension: compact([dxDimension, peDimension, ouDimension]),\n\t\t\t\tstartDate,\n\t\t\t\tendDate,\n\t\t\t\tdisplayProperty: \"NAME\",\n\t\t\t\t...(analyticsOptions ?? {}),\n\t\t\t};\n\t\t},\n\t},\n};\nconst query = {\n\tlayer: {\n\t\tresource: \"geoFeatures\",\n\t\tparams: ({ ous }: any) => ({\n\t\t\tou: `ou:${ous.join(\";\")}`,\n\t\t}),\n\t},\n\tanalytics: {\n\t\tresource: \"analytics\",\n\t\tparams: ({ ous }: any) => ({\n\t\t\tdimension: [\n\t\t\t\t`ou:${ous.join(\";\")}`,\n\t\t\t\t`pe:${new Date().getFullYear()}`,\n\t\t\t],\n\t\t\tskipData: true,\n\t\t\thierarchyMeta: true,\n\t\t}),\n\t},\n};\nconst groupSetQuery = {\n\tgroupSet: {\n\t\tresource: \"organisationUnitGroupSets\",\n\t\tid: ({ groupSet }: any) => groupSet,\n\t\tparams: {\n\t\t\tfields: [\n\t\t\t\t\"organisationUnitGroups[name,color,symbol,organisationUnits[id]]\",\n\t\t\t],\n\t\t},\n\t},\n};\nconst legendSetsQuery = {\n\tlegendSets: {\n\t\tresource: \"legendSets\",\n\t\tid: ({ id }: any) => id,\n\t\tparams: {\n\t\t\tfields: [\n\t\t\t\t\"id\",\n\t\t\t\t\"displayName\",\n\t\t\t\t\"legends[id,code,name,startValue,endValue,color]\",\n\t\t\t],\n\t\t},\n\t},\n};\n\nexport function useThematicLayers({\n\tanalyticsOptions,\n}: {\n\tanalyticsOptions?: MapAnalyticsOptions;\n}): any {\n\tconst engine = useDataEngine();\n\tconst [loading, setLoading] = useState(false);\n\tconst { orgUnits, orgUnitSelection } = useMapOrganisationUnit();\n\tconst { periods, range } = useMapPeriods() ?? {};\n\tconst ou = useMemo(\n\t\t() => getOrgUnitsSelection(orgUnitSelection),\n\t\t[orgUnitSelection],\n\t);\n\tconst pe = useMemo(() => periods?.map((pe: any) => pe.id), [periods]);\n\n\tconst { startDate, endDate } = useMemo(() => {\n\t\tif (!range) {\n\t\t\treturn {\n\t\t\t\tstartDate: undefined,\n\t\t\t\tendDate: undefined,\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tstartDate: sanitizeDate(range.start.toDateString()),\n\t\t\tendDate: sanitizeDate(range.end.toDateString()),\n\t\t};\n\t}, [range]);\n\tconst sanitizeData = (data: any, layer: ThematicLayerConfig) => {\n\t\tif (data) {\n\t\t\tconst { analytics } = data as any;\n\t\t\tconst rows = analytics?.rows;\n\t\t\tconst ouIndex = analytics.headers.findIndex(\n\t\t\t\t(header: any) => header.name === \"ou\",\n\t\t\t);\n\t\t\tconst dxIndex = analytics.headers.findIndex(\n\t\t\t\t(header: any) => header.name === \"dx\",\n\t\t\t);\n\t\t\tconst valueIndex = analytics.headers.findIndex(\n\t\t\t\t(header: any) => header.name === \"value\",\n\t\t\t);\n\n\t\t\tif (!isEmpty(rows)) {\n\t\t\t\treturn sortBy(\n\t\t\t\t\torgUnits?.map((ou: MapOrgUnit) => {\n\t\t\t\t\t\tconst row = rows.find(\n\t\t\t\t\t\t\t(row: any) =>\n\t\t\t\t\t\t\t\trow[ouIndex] === ou.id &&\n\t\t\t\t\t\t\t\trow[dxIndex] === layer.dataItem.id,\n\t\t\t\t\t\t);\n\t\t\t\t\t\trow[valueIndex] = 0;\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\torgUnit: ou,\n\t\t\t\t\t\t\tdata: row ? parseFloat(row[valueIndex]) : undefined,\n\t\t\t\t\t\t\tdataItem: {\n\t\t\t\t\t\t\t\t...layer.dataItem,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t}),\n\t\t\t\t\t[\"data\"],\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn [];\n\t\t}\n\t\treturn [];\n\t};\n\n\tconst sanitizeLegends = async (\n\t\tlayers: CustomThematicLayer[],\n\t): Promise<CustomThematicLayer[]> => {\n\t\treturn (await map(\n\t\t\tlayers,\n\t\t\tasyncify(async (layer: CustomThematicLayer) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst legends = [];\n\t\t\t\t\tif (layer.dataItem.legendSet) {\n\t\t\t\t\t\tconst legendSetData = await engine.query(\n\t\t\t\t\t\t\tlegendSetsQuery,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvariables: {\n\t\t\t\t\t\t\t\t\tid: layer.dataItem.legendSet,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst legendSet: LegendSet =\n\t\t\t\t\t\t\tlegendSetData?.legendSets as LegendSet;\n\t\t\t\t\t\tif (legendSet) {\n\t\t\t\t\t\t\tlegends.push(...legendSet.legends);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst { scale, colorClass } = layer.dataItem\n\t\t\t\t\t\t\t.legendConfig ?? {\n\t\t\t\t\t\t\tscale: defaultClasses,\n\t\t\t\t\t\t\tcolorClass: defaultColorScaleName,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst sortedData = sortBy(\n\t\t\t\t\t\t\tlayer.data.filter((datum) => !!datum.data),\n\t\t\t\t\t\t\t\"data\",\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst autoLegends = generateLegends(\n\t\t\t\t\t\t\tlast(sortedData)?.data ?? 0,\n\t\t\t\t\t\t\thead(sortedData)?.data ?? 0,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tclassesCount: scale,\n\t\t\t\t\t\t\t\tcolorClass,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t\tlegends.push(...autoLegends);\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...layer,\n\t\t\t\t\t\tlegends,\n\t\t\t\t\t};\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn layer;\n\t\t\t\t}\n\t\t\t}),\n\t\t)) as CustomThematicLayer[];\n\t};\n\n\tconst sanitizeLayers = async (\n\t\tlayers: ThematicLayerConfig[],\n\t): Promise<CustomThematicLayer[]> => {\n\t\ttry {\n\t\t\tsetLoading(true);\n\t\t\tconst layersWithoutData = layers?.filter((layer) => !layer.data);\n\t\t\tconst layersWithData = differenceBy(\n\t\t\t\tlayers,\n\t\t\t\tlayersWithoutData,\n\t\t\t\t\"id\",\n\t\t\t);\n\t\t\tconst dx = layersWithoutData.map((layer) => layer.dataItem.id);\n\t\t\tlet sanitizedLayersWithData: any = [];\n\n\t\t\tif (!isEmpty(dx)) {\n\t\t\t\tconst data = await engine.query(analyticsQuery, {\n\t\t\t\t\tvariables: {\n\t\t\t\t\t\tdx,\n\t\t\t\t\t\tou,\n\t\t\t\t\t\tpe,\n\t\t\t\t\t\tstartDate,\n\t\t\t\t\t\tendDate,\n\t\t\t\t\t\tanalyticsOptions,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tsanitizedLayersWithData = layersWithoutData.map((layer) => ({\n\t\t\t\t\t...layer,\n\t\t\t\t\tname:\n\t\t\t\t\t\tlayer?.name ?? layer?.dataItem?.displayName ?? layer.id,\n\t\t\t\t\tdata: sanitizeData(data, layer),\n\t\t\t\t}));\n\t\t\t}\n\t\t\tconst sanitizedLayersWithOrgUnits = layersWithData.map((layer) => ({\n\t\t\t\t...layer,\n\t\t\t\tdata: layer.data?.map((datum) => ({\n\t\t\t\t\t...datum,\n\t\t\t\t\torgUnit: find(orgUnits, [\n\t\t\t\t\t\t\"id\",\n\t\t\t\t\t\tdatum.orgUnit,\n\t\t\t\t\t]) as MapOrgUnit,\n\t\t\t\t\tdataItem: layer.dataItem,\n\t\t\t\t\tname:\n\t\t\t\t\t\tlayer?.name ?? layer?.dataItem?.displayName ?? layer.id,\n\t\t\t\t})),\n\t\t\t}));\n\t\t\tsetLoading(false);\n\t\t\treturn await sanitizeLegends([\n\t\t\t\t...sanitizedLayersWithData,\n\t\t\t\t...sanitizedLayersWithOrgUnits,\n\t\t\t]);\n\t\t} catch (e: any) {\n\t\t\tconsole.error(`Error getting thematic layers`, e.details);\n\t\t\tsetLoading(false);\n\t\t\treturn [];\n\t\t}\n\t};\n\n\treturn {\n\t\tsanitizeLayers,\n\t\tloading,\n\t};\n}\n\nexport function usePointLayer() {\n\tconst engine = useDataEngine();\n\tconst { orgUnitSelection } = useMapOrganisationUnit();\n\tconst [loading, setLoading] = useState(false);\n\n\tconst sanitizePointData = useCallback(\n\t\t(orgUnitData: any, groupSetData: any): PointOrgUnit[] => {\n\t\t\tconst { analytics, layer } = (orgUnitData as any) ?? {};\n\t\t\tconst rawOrgUnits = sanitizeOrgUnits(analytics?.metaData);\n\t\t\tconst geoJSONObjects = toGeoJson(\n\t\t\t\tlayer?.filter((bound: any) => bound.co),\n\t\t\t);\n\t\t\treturn compact(\n\t\t\t\trawOrgUnits.map((orgUnit: any) => {\n\t\t\t\t\tconst geoJSONObject: any = geoJSONObjects?.find(\n\t\t\t\t\t\t(geoJSON: any) => geoJSON.properties.id === orgUnit.id,\n\t\t\t\t\t);\n\t\t\t\t\tconst orgUnitGroups: any =\n\t\t\t\t\t\t(groupSetData?.groupSet as any)\n\t\t\t\t\t\t\t?.organisationUnitGroups ?? [];\n\t\t\t\t\tconst ouGroup = find(\n\t\t\t\t\t\torgUnitGroups,\n\t\t\t\t\t\t(ouGroup) =>\n\t\t\t\t\t\t\t!!find(ouGroup?.organisationUnits ?? [], [\n\t\t\t\t\t\t\t\t\"id\",\n\t\t\t\t\t\t\t\torgUnit.id,\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t);\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t!geoJSONObject ||\n\t\t\t\t\t\tgeoJSONObject.properties.type !== \"Point\"\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...orgUnit,\n\t\t\t\t\t\tgeoJSON: geoJSONObject,\n\t\t\t\t\t\tlevel: geoJSONObject.properties.level,\n\t\t\t\t\t\ticon: {\n\t\t\t\t\t\t\ttype: \"groupIcon\",\n\t\t\t\t\t\t\ticon: ouGroup?.symbol,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t);\n\t\t},\n\t\t[],\n\t);\n\n\tconst sanitizeLayer = useCallback(\n\t\tasync (\n\t\t\tlayer: CustomPointLayer,\n\t\t): Promise<CustomPointLayer | undefined> => {\n\t\t\ttry {\n\t\t\t\tif (!layer.level && !layer.group) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tsetLoading(true);\n\t\t\t\tconst level = layer.level ? `LEVEL-${layer.level}` : undefined;\n\t\t\t\tconst group = layer.group\n\t\t\t\t\t? `OU_GROUP-${layer.group}`\n\t\t\t\t\t: undefined;\n\t\t\t\tconst ous = [\n\t\t\t\t\t...getOrgUnitsSelection(orgUnitSelection),\n\t\t\t\t\tlevel,\n\t\t\t\t\tgroup,\n\t\t\t\t];\n\n\t\t\t\tconst pointData = await engine.query(query, {\n\t\t\t\t\tvariables: {\n\t\t\t\t\t\tous,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tconst groupSetData = await engine.query(groupSetQuery, {\n\t\t\t\t\tvariables: {\n\t\t\t\t\t\tgroupSet: layer.style?.groupSet,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tconst sanitizedOrgUnitData = sanitizePointData(\n\t\t\t\t\tpointData,\n\t\t\t\t\tgroupSetData,\n\t\t\t\t);\n\n\t\t\t\tconst orgUnitGroups =\n\t\t\t\t\t(groupSetData?.groupSet as any)?.organisationUnitGroups ??\n\t\t\t\t\t[];\n\n\t\t\t\tconst sanitizedOrgUnitGroups = orgUnitGroups.map(\n\t\t\t\t\t(ouGroup: any) => ({\n\t\t\t\t\t\t...ouGroup,\n\t\t\t\t\t\torganisationUnits: undefined,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t\tsetLoading(false);\n\t\t\t\treturn {\n\t\t\t\t\t...layer,\n\t\t\t\t\tpoints: sanitizedOrgUnitData,\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\t...layer.style,\n\t\t\t\t\t\torgUnitGroups: sanitizedOrgUnitGroups,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t} catch (e: any) {\n\t\t\t\tsetLoading(false);\n\t\t\t\tconsole.error(`Error getting point layer`, e.details);\n\t\t\t\treturn;\n\t\t\t}\n\t\t},\n\t\t[],\n\t);\n\n\treturn {\n\t\tloading,\n\t\tsanitizeLayer,\n\t};\n}\n\nexport function useGoogleEngineLayers() {\n\tconst { refresh } = useGoogleEngineToken();\n\tconst orgUnits = useBoundaryData();\n\n\tasync function getImageUrl(\n\t\tearthEngine: EarthEngine,\n\t\t{ filters }: EarthEngineLayerConfig,\n\t): Promise<string | undefined> {\n\t\tif (earthEngine.initialized) {\n\t\t\ttry {\n\t\t\t\tearthEngine.setOrgUnits(orgUnits ?? []);\n\t\t\t\tconst period = filters?.period;\n\t\t\t\tif (period) {\n\t\t\t\t\tearthEngine.setPeriod(period);\n\t\t\t\t}\n\t\t\t\treturn earthEngine.url();\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error(e);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst sanitizeLayers = useCallback(\n\t\tasync (\n\t\t\tlayers: EarthEngineLayerConfig[],\n\t\t): Promise<CustomGoogleEngineLayer[]> => {\n\t\t\tif (isEmpty(layers)) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst { token } = await refresh();\n\t\t\t\tif (!token) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t`Google token not available in this instance`,\n\t\t\t\t\t);\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\t\t\t\tawait EarthEngine.setToken(token, refresh);\n\t\t\t\treturn map(\n\t\t\t\t\tlayers,\n\t\t\t\t\tasyncify(async (layer: EarthEngineLayerConfig) => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst defaultOptions: any =\n\t\t\t\t\t\t\t\tfind(EARTH_ENGINE_LAYERS, [\"id\", layer.type]) ??\n\t\t\t\t\t\t\t\t{};\n\t\t\t\t\t\t\tconst options: EarthEngineOptions = {\n\t\t\t\t\t\t\t\t...defaultOptions,\n\t\t\t\t\t\t\t\taggregations:\n\t\t\t\t\t\t\t\t\tlayer.aggregations ??\n\t\t\t\t\t\t\t\t\tdefaultOptions?.aggregations,\n\t\t\t\t\t\t\t\tparams: layer.params ?? defaultOptions?.params,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tconst updatedLayer = {\n\t\t\t\t\t\t\t\t...layer,\n\t\t\t\t\t\t\t\toptions,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tconst earthEngine = new EarthEngine({ options });\n\t\t\t\t\t\t\tconst url = await getImageUrl(\n\t\t\t\t\t\t\t\tearthEngine,\n\t\t\t\t\t\t\t\tupdatedLayer,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...updatedLayer,\n\t\t\t\t\t\t\t\tengine: earthEngine,\n\t\t\t\t\t\t\t\turl,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tconsole.error(e);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t} catch (e: any) {\n\t\t\t\tconsole.log(e);\n\t\t\t\tconsole.error(`Error getting thematic layers`, e.details);\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\t\t[refresh],\n\t);\n\n\treturn {\n\t\tsanitizeLayers,\n\t};\n}\n"]}
@@ -1 +1 @@
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 { type ReactNode, 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: 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
+ {"version":3,"sources":["../../../../../../../../src/components/Map/components/MapProvider/components/MapLayerProvider/index.tsx"],"names":["updatedLayers"],"mappings":";;;;;;;;;;AAwBO,SAAS,iBAAA,CAAkB;AAAA,EACjC,MAAA;AAAA,EACA,QAAA;AAAA,EACA;AACD,CAAA,EAIG;AACF,EAAA,MAAM,SAAS,aAAA,EAAc;AAC7B,EAAA,MAAM,UAAU,sBAAA,EAAuB;AACvC,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,QAAA,CAOxC,EAAE,CAAA;AACJ,EAAA,MAAM,EAAE,cAAA,EAAgB,sBAAA,EAAwB,KAAA,EAAM,GAAI,iBAAA;AAAA,IACzD;AAAA,MACC;AAAA;AACD,GACD;AACA,EAAA,MAAM,EAAE,aAAA,EAAe,kBAAA,EAAmB,GAAI,aAAA,EAAc;AAC5D,EAAA,MAAM,EAAE,cAAA,EAAgB,yBAAA,EAA0B,GACjD,qBAAA,EAAsB;AACvB,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA;AAE5C,EAAA,YAAA,CAAa;AAAA,IACZ,aAAA,EAAe,CAAC,KAAA,KAAU;AACzB,MAAA,mBAAA,CAAoB,UAAU,KAAK,CAAA;AAAA,IACpC,CAAA;AAAA,IACA,UAAA,EAAY,CAAC,KAAA,KAAU;AACtB,MAAA,mBAAA,CAAoB,OAAO,KAAK,CAAA;AAAA,IACjC;AAAA,GACA,CAAA;AAED,EAAA,MAAM,iBAAiB,YAAY;AAClC,IAAA,UAAA,CAAW,IAAI,CAAA;AACf,IAAA,IAAI;AACH,MAAA,MAAM;AAAA,QACL,cAAA;AAAA,QACA,cAAA;AAAA,QACA,WAAA;AAAA,QACA;AAAA,OACD,GAAI,MAAA;AACJ,MAAA,MAAM,uBAAA,GAA0B,MAAM,sBAAA,CAAuB;AAAA,QAC5D,GAAI,kBAAkB;AAAC,OACE,CAAA;AAE1B,MAAA,MAAM,uBAAA,GAA2B,kBAChC,EAAC;AACF,MAAA,MAAM,sBAAsB,IAAA,CAAK,WAAA,IAAe,EAAE,IAC/C,MAAM,kBAAA;AAAA,QACN,KAAK,WAAW;AAAA,OACjB,GACC,KAAA,CAAA;AACH,MAAA,MAAM,0BAAA,GAA6B,MAAM,yBAAA,CAA0B;AAAA,QAClE,GAAI,qBAAqB;AAAC,OACc,CAAA;AACzC,MAAA,gBAAA;AAAA,QACC,OAAA,CAAQ;AAAA,UACP,GAAI,2BAA2B,EAAC;AAAA,UAChC,GAAI,2BAA2B,EAAC;AAAA,UAChC,mBAAA;AAAA,UACA,GAAI,8BAA8B;AAAC,SACnC;AAAA,OACF;AAAA,IACD,SAAS,CAAA,EAAQ;AAChB,MAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,uBAAA,CAAA,EAA2B,CAAA,CAAE,QAAA,EAAU,CAAA;AAAA,IACtD;AACA,IAAA,UAAA,CAAW,KAAK,CAAA;AAAA,EACjB,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,WAAA;AAAA,IACnB,CAAC,IAAY,YAAA,KAAiC;AAC7C,MAAA,gBAAA,CAAiB,CAAC,UAAA,KAAe;AAChC,QAAA,MAAMA,cAAAA,GAAgB,CAAC,GAAG,UAAU,CAAA;AACpC,QAAA,MAAM,aAAaA,cAAAA,CAAc,SAAA;AAAA,UAChC,CAAC,KAAA,KAAU,KAAA,CAAM,EAAA,KAAO,YAAA,CAAa;AAAA,SACtC;AACA,QAAA,IAAI,aAAa,CAAA,EAAG;AACnB,UAAA,OAAO,UAAA;AAAA,QACR;AACA,QAAA,GAAA,CAAIA,cAAAA,EAAe,YAAY,YAAY,CAAA;AAC3C,QAAA,OAAOA,cAAAA;AAAA,MACR,CAAC,CAAA;AAAA,IACF,CAAA;AAAA,IACA;AAAC,GACF;AAEA,EAAA,SAAA,CAAU,MAAM;AACf,IAAA,cAAA,EAAe,CAAE,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA;AAAA,EACrC,CAAA,EAAG,CAAC,MAAA,EAAQ,OAAO,CAAC,CAAA;AAEpB,EAAA,MAAM,mBAAA,GAAsB,CAC3B,IAAA,EACA,KAAA,KACI;AACJ,IAAA,MAAM,OAAO,KAAA,CAAM,IAAA;AAEnB,IAAA,MAAM,WAAA,GAAc,IAAA,CAAK,aAAA,EAAe,CAAC,KAAA,KAAe;AACvD,MAAA,MAAM,iBACL,KAAA,EAAO,IAAA,IAAQ,KAAA,EAAO,QAAA,EAAU,eAAe,KAAA,EAAO,KAAA;AACvD,MAAA,OAAO,cAAA,KAAmB,IAAA;AAAA,IAC3B,CAAC,CAAA;AAED,IAAA,IAAI,WAAA,EAAa;AAChB,MAAA,WAAA,CAAY,YAAY,EAAA,EAAI;AAAA,QAC3B,GAAG,WAAA;AAAA,QACH,SAAS,IAAA,KAAS;AAAA,OAClB,CAAA;AAAA,IACF;AAAA,EACD,CAAA;AAEA,EAAA,IAAI,OAAA,EAAS;AACZ,IAAA,2BACE,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,MAAA,EAAQ,QAAQ,KAAA,EAAO,MAAA,EAAO,EAC3C,QAAA,kBAAA,GAAA,CAAC,UACA,QAAA,kBAAA,GAAA,CAAC,cAAA,EAAA,EAAe,KAAA,EAAK,IAAA,EAAC,GACvB,CAAA,EACD,CAAA;AAAA,EAEF;AACA,EAAA,IAAI,KAAA,EAAO;AACV,IAAA,uBACC,GAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAO,EAC3C,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EACA,QAAA,kBAAA,IAAA,CAAC,IAAA,EAAA,EACC,QAAA,EAAA;AAAA,MAAA,IAAA,CAAK,EAAE,OAAO,CAAA;AAAA,MAAE,IAAA;AAAA,MAAG,KAAA,CAAM;AAAA,KAAA,EAC3B,GACD,CAAA,EACD,CAAA;AAAA,EAEF;AACA,EAAA,uBACC,GAAA;AAAA,IAAC,gBAAA,CAAiB,QAAA;AAAA,IAAjB;AAAA,MACA,KAAA,EAAO,EAAE,MAAA,EAAQ,aAAA,EAAe,WAAA,EAAY;AAAA,MAE3C;AAAA;AAAA,GACF;AAEF","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 { type ReactNode, 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: 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\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"]}
@@ -10,7 +10,7 @@ function resetHighlight(e, defaultStyle) {
10
10
  layer.setStyle(defaultStyle);
11
11
  }
12
12
  function getColorFromLegendSet(legends, value) {
13
- if (!value) {
13
+ if (typeof value !== "number") {
14
14
  return "transparent";
15
15
  }
16
16
  const legend = find(
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/Map/utils/map.ts"],"names":["legend"],"mappings":"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","file":"map.js","sourcesContent":["import type {\n\tLegend,\n\tOrganisationUnit,\n\tOrgUnitSelection,\n} from \"@hisptz/dhis2-utils\";\nimport { LeafletMouseEvent } from \"leaflet\";\nimport {\n\tcompact,\n\tfilter,\n\tfind,\n\tforEach,\n\tisEmpty,\n\tisString,\n\tsortBy,\n} from \"lodash\";\nimport {\n\tdefaultClasses,\n\tdefaultColorScaleName,\n\tgetColorPalette,\n} from \"./colors.js\";\n\nexport function highlightFeature(e: LeafletMouseEvent, style: any) {\n\tconst layer = e.target;\n\tlayer.setStyle(style);\n\t// layer.bringToFront();\n}\n\nexport function resetHighlight(e: LeafletMouseEvent, defaultStyle: any) {\n\tconst layer = e.target;\n\tlayer.setStyle(defaultStyle);\n\t// layer.bringToBack();\n}\n\nexport function getColorFromLegendSet(\n\tlegends: Legend[],\n\tvalue?: number,\n): string {\n\tif (!value) {\n\t\treturn \"transparent\";\n\t}\n\tconst legend: any =\n\t\tfind(\n\t\t\tlegends ?? [],\n\t\t\t(legend: any) =>\n\t\t\t\tlegend?.startValue <= value && legend?.endValue >= value,\n\t\t) ?? {};\n\treturn legend.color ? legend.color : \"transparent\";\n}\n\nexport function getLegendCount(legend: any, data: any) {\n\tconst { startValue, endValue } = legend;\n\treturn filter(data, (d: any) => d.data >= startValue && d.data <= endValue)\n\t\t.length;\n}\n\nexport function getOrgUnitsSelection(orgUnitSelection: OrgUnitSelection) {\n\tconst orgUnits = [];\n\tif (orgUnitSelection.userOrgUnit) {\n\t\torgUnits.push(\"USER_ORGUNIT\");\n\t}\n\n\tif (orgUnitSelection.userSubUnit) {\n\t\torgUnits.push(\"USER_ORGUNIT_CHILDREN\");\n\t}\n\n\tif (orgUnitSelection.userSubX2Unit) {\n\t\torgUnits.push(\"USER_ORGUNIT_GRANDCHILDREN\");\n\t}\n\tif (!isEmpty(orgUnitSelection.levels)) {\n\t\tforEach(orgUnitSelection.levels, (level) =>\n\t\t\torgUnits.push(`LEVEL-${level}`),\n\t\t);\n\t}\n\n\treturn [\n\t\t...orgUnits,\n\t\t...(orgUnitSelection?.orgUnits?.map(\n\t\t\t(ou: OrganisationUnit) => `${ou.id}`,\n\t\t) ?? []),\n\t];\n}\n\nexport function sanitizeOrgUnits(metaData: any) {\n\tif (metaData) {\n\t\treturn metaData?.dimensions?.ou?.map((ouId: string) => ({\n\t\t\tid: ouId,\n\t\t\tname: metaData?.items[ouId]?.name,\n\t\t\tpath: metaData?.ouHierarchy?.[ouId],\n\t\t}));\n\t}\n\treturn [];\n}\n\nexport function toGeoJson(organisationUnits: any) {\n\treturn sortBy(organisationUnits, \"le\").map((ou: any) => {\n\t\ttry {\n\t\t\tconst coord = JSON.parse(ou.co);\n\t\t\tlet gpid = \"\";\n\t\t\tlet gppg = \"\";\n\t\t\tlet type = \"Point\";\n\n\t\t\tif (ou.ty === 2) {\n\t\t\t\ttype = \"Polygon\";\n\t\t\t\tif (ou.co.substring(0, 4) === \"[[[[\") {\n\t\t\t\t\ttype = \"MultiPolygon\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Grand parent\n\t\t\tif (isString(ou.pg) && ou.pg.length) {\n\t\t\t\tconst ids = compact(ou.pg.split(\"/\"));\n\n\t\t\t\t// Grand parent id\n\t\t\t\tif (ids.length >= 2) {\n\t\t\t\t\tgpid = ids[ids.length - 2] as string;\n\t\t\t\t}\n\n\t\t\t\t// Grand parent parent graph\n\t\t\t\tif (ids.length > 2) {\n\t\t\t\t\tgppg = \"/\" + ids.slice(0, ids.length - 2).join(\"/\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ttype: \"Feature\",\n\t\t\t\tid: ou.id,\n\t\t\t\tgeometry: {\n\t\t\t\t\ttype,\n\t\t\t\t\tcoordinates: coord,\n\t\t\t\t},\n\t\t\t\tproperties: {\n\t\t\t\t\ttype,\n\t\t\t\t\tid: ou.id,\n\t\t\t\t\tname: ou.na,\n\t\t\t\t\thasCoordinatesDown: ou.hcd,\n\t\t\t\t\thasCoordinatesUp: ou.hcu,\n\t\t\t\t\tlevel: ou.le,\n\t\t\t\t\tgrandParentParentGraph: gppg,\n\t\t\t\t\tgrandParentId: gpid,\n\t\t\t\t\tparentGraph: ou.pg,\n\t\t\t\t\tparentId: ou.pi,\n\t\t\t\t\tparentName: ou.pn,\n\t\t\t\t\tdimensions: ou.dimensions,\n\t\t\t\t},\n\t\t\t};\n\t\t} catch (e) {\n\t\t\treturn {};\n\t\t}\n\t});\n}\n\nexport function sanitizeDate(startDate: string): string {\n\tif (startDate?.split(\"-\")?.[0]?.length < 4) {\n\t\treturn startDate?.split(\"-\")?.reverse()?.join(\"-\");\n\t}\n\treturn startDate;\n}\n\nexport function generateLegends(\n\tmaxValue: number,\n\tminValue: number,\n\t{ classesCount, colorClass }: { classesCount: number; colorClass: string },\n): Array<Legend> {\n\tconst count: number = classesCount ?? defaultClasses;\n\tconst color = colorClass ?? defaultColorScaleName;\n\n\tconst colorScale = [...getColorPalette(color, count)].reverse();\n\n\tconst maxLegendValue = 5 * Math.ceil(maxValue / 5);\n\tconst range = maxLegendValue / count;\n\n\tconst values = [];\n\tlet legendColorsIterator = colorScale.length - 1;\n\tfor (let i = 0; i < maxLegendValue; i += range) {\n\t\tconst id = colorScale[legendColorsIterator];\n\t\tvalues.push({\n\t\t\tstartValue: Math.floor(i),\n\t\t\tendValue: Math.floor(i + range),\n\t\t\tid,\n\t\t\tcolor: id,\n\t\t});\n\t\tlegendColorsIterator--;\n\t}\n\n\treturn values.reverse();\n}\n"]}
1
+ {"version":3,"sources":["../../../../../src/components/Map/utils/map.ts"],"names":["legend"],"mappings":"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","file":"map.js","sourcesContent":["import type {\n\tLegend,\n\tOrganisationUnit,\n\tOrgUnitSelection,\n} from \"@hisptz/dhis2-utils\";\nimport { LeafletMouseEvent } from \"leaflet\";\nimport {\n\tcompact,\n\tfilter,\n\tfind,\n\tforEach,\n\tisEmpty,\n\tisString,\n\tsortBy,\n} from \"lodash\";\nimport {\n\tdefaultClasses,\n\tdefaultColorScaleName,\n\tgetColorPalette,\n} from \"./colors.js\";\n\nexport function highlightFeature(e: LeafletMouseEvent, style: any) {\n\tconst layer = e.target;\n\tlayer.setStyle(style);\n\t// layer.bringToFront();\n}\n\nexport function resetHighlight(e: LeafletMouseEvent, defaultStyle: any) {\n\tconst layer = e.target;\n\tlayer.setStyle(defaultStyle);\n\t// layer.bringToBack();\n}\n\nexport function getColorFromLegendSet(\n\tlegends: Legend[],\n\tvalue?: number,\n): string {\n\tif (typeof value !== \"number\") {\n\t\treturn \"transparent\";\n\t}\n\tconst legend: any =\n\t\tfind(\n\t\t\tlegends ?? [],\n\t\t\t(legend: any) =>\n\t\t\t\tlegend?.startValue <= value && legend?.endValue >= value,\n\t\t) ?? {};\n\treturn legend.color ? legend.color : \"transparent\";\n}\n\nexport function getLegendCount(legend: any, data: any) {\n\tconst { startValue, endValue } = legend;\n\treturn filter(data, (d: any) => d.data >= startValue && d.data <= endValue)\n\t\t.length;\n}\n\nexport function getOrgUnitsSelection(orgUnitSelection: OrgUnitSelection) {\n\tconst orgUnits = [];\n\tif (orgUnitSelection.userOrgUnit) {\n\t\torgUnits.push(\"USER_ORGUNIT\");\n\t}\n\n\tif (orgUnitSelection.userSubUnit) {\n\t\torgUnits.push(\"USER_ORGUNIT_CHILDREN\");\n\t}\n\n\tif (orgUnitSelection.userSubX2Unit) {\n\t\torgUnits.push(\"USER_ORGUNIT_GRANDCHILDREN\");\n\t}\n\tif (!isEmpty(orgUnitSelection.levels)) {\n\t\tforEach(orgUnitSelection.levels, (level) =>\n\t\t\torgUnits.push(`LEVEL-${level}`),\n\t\t);\n\t}\n\n\treturn [\n\t\t...orgUnits,\n\t\t...(orgUnitSelection?.orgUnits?.map(\n\t\t\t(ou: OrganisationUnit) => `${ou.id}`,\n\t\t) ?? []),\n\t];\n}\n\nexport function sanitizeOrgUnits(metaData: any) {\n\tif (metaData) {\n\t\treturn metaData?.dimensions?.ou?.map((ouId: string) => ({\n\t\t\tid: ouId,\n\t\t\tname: metaData?.items[ouId]?.name,\n\t\t\tpath: metaData?.ouHierarchy?.[ouId],\n\t\t}));\n\t}\n\treturn [];\n}\n\nexport function toGeoJson(organisationUnits: any) {\n\treturn sortBy(organisationUnits, \"le\").map((ou: any) => {\n\t\ttry {\n\t\t\tconst coord = JSON.parse(ou.co);\n\t\t\tlet gpid = \"\";\n\t\t\tlet gppg = \"\";\n\t\t\tlet type = \"Point\";\n\n\t\t\tif (ou.ty === 2) {\n\t\t\t\ttype = \"Polygon\";\n\t\t\t\tif (ou.co.substring(0, 4) === \"[[[[\") {\n\t\t\t\t\ttype = \"MultiPolygon\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Grand parent\n\t\t\tif (isString(ou.pg) && ou.pg.length) {\n\t\t\t\tconst ids = compact(ou.pg.split(\"/\"));\n\n\t\t\t\t// Grand parent id\n\t\t\t\tif (ids.length >= 2) {\n\t\t\t\t\tgpid = ids[ids.length - 2] as string;\n\t\t\t\t}\n\n\t\t\t\t// Grand parent parent graph\n\t\t\t\tif (ids.length > 2) {\n\t\t\t\t\tgppg = \"/\" + ids.slice(0, ids.length - 2).join(\"/\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ttype: \"Feature\",\n\t\t\t\tid: ou.id,\n\t\t\t\tgeometry: {\n\t\t\t\t\ttype,\n\t\t\t\t\tcoordinates: coord,\n\t\t\t\t},\n\t\t\t\tproperties: {\n\t\t\t\t\ttype,\n\t\t\t\t\tid: ou.id,\n\t\t\t\t\tname: ou.na,\n\t\t\t\t\thasCoordinatesDown: ou.hcd,\n\t\t\t\t\thasCoordinatesUp: ou.hcu,\n\t\t\t\t\tlevel: ou.le,\n\t\t\t\t\tgrandParentParentGraph: gppg,\n\t\t\t\t\tgrandParentId: gpid,\n\t\t\t\t\tparentGraph: ou.pg,\n\t\t\t\t\tparentId: ou.pi,\n\t\t\t\t\tparentName: ou.pn,\n\t\t\t\t\tdimensions: ou.dimensions,\n\t\t\t\t},\n\t\t\t};\n\t\t} catch (e) {\n\t\t\treturn {};\n\t\t}\n\t});\n}\n\nexport function sanitizeDate(startDate: string): string {\n\tif (startDate?.split(\"-\")?.[0]?.length < 4) {\n\t\treturn startDate?.split(\"-\")?.reverse()?.join(\"-\");\n\t}\n\treturn startDate;\n}\n\nexport function generateLegends(\n\tmaxValue: number,\n\tminValue: number,\n\t{ classesCount, colorClass }: { classesCount: number; colorClass: string },\n): Array<Legend> {\n\tconst count: number = classesCount ?? defaultClasses;\n\tconst color = colorClass ?? defaultColorScaleName;\n\n\tconst colorScale = [...getColorPalette(color, count)].reverse();\n\n\tconst maxLegendValue = 5 * Math.ceil(maxValue / 5);\n\tconst range = maxLegendValue / count;\n\n\tconst values = [];\n\tlet legendColorsIterator = colorScale.length - 1;\n\tfor (let i = 0; i < maxLegendValue; i += range) {\n\t\tconst id = colorScale[legendColorsIterator];\n\t\tvalues.push({\n\t\t\tstartValue: Math.floor(i),\n\t\t\tendValue: Math.floor(i + range),\n\t\t\tid,\n\t\t\tcolor: id,\n\t\t});\n\t\tlegendColorsIterator--;\n\t}\n\n\treturn values.reverse();\n}\n"]}
@@ -6,6 +6,7 @@ export declare function LegendItem({ legend, value, }: {
6
6
  startValue: number;
7
7
  endValue: number;
8
8
  color: string;
9
+ name?: string;
9
10
  };
10
11
  value: number;
11
12
  }): import("react/jsx-runtime").JSX.Element;
@@ -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;AAGlD,OAAO,EACN,iBAAiB,EACjB,qBAAqB,EACrB,MAAM,2BAA2B,CAAC;AAQnC,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
+ {"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;AAGlD,OAAO,EACN,iBAAiB,EACjB,qBAAqB,EACrB,MAAM,2BAA2B,CAAC;AAQnC,wBAAgB,UAAU,CAAC,EAC1B,MAAM,EACN,KAAK,GACL,EAAE;IACF,MAAM,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;IACF,KAAK,EAAE,MAAM,CAAC;CACd,2CAoDA;;UAUO,iBAAiB,EAAE;cACf,qBAAqB;WACxB,MAAM;kBACC,OAAO;iBACR,MAAM,IAAI;aACd,MAAM,EAAE;;AAyBnB,wBAA4C"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGlD,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAM1D,OAAO,EACN,KAAK,gBAAgB,EACrB,qBAAqB,EACrB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,KAAK,wBAAwB,EAAE,KAAK,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAYhF,UAAU,SAAS;IAClB,OAAO,EAAE,UAAU,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,qBAAqB,CAAC;CAChC;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAClC,IAAI,EACJ,OAAO,EACP,mBAAmB,EACnB,YAAY,EACZ,WAAW,GACX,EAAE;IACF,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,mBAAmB,CAAC,EAAE,wBAAwB,CAAC;IAC/C,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IAC/D,WAAW,CAAC,EAAE,gBAAgB,CAAC;CAC/B,2CAsDA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGlD,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAM1D,OAAO,EACN,KAAK,gBAAgB,EACrB,qBAAqB,EACrB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,KAAK,wBAAwB,EAAE,KAAK,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAYhF,UAAU,SAAS;IAClB,OAAO,EAAE,UAAU,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,qBAAqB,CAAC;CAChC;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAClC,IAAI,EACJ,OAAO,EACP,mBAAmB,EACnB,YAAY,EACZ,WAAW,GACX,EAAE;IACF,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,mBAAmB,CAAC,EAAE,wBAAwB,CAAC;IAC/C,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IAC/D,WAAW,CAAC,EAAE,gBAAgB,CAAC;CAC/B,2CAuDA"}
@@ -1,5 +1,5 @@
1
- import { ThematicLayerData } from "../../../../interfaces/index.js";
1
+ import { ThematicLayerData } from "../../../../interfaces";
2
2
  export default function CustomTooltip({ data: dataObject, }: {
3
3
  data: ThematicLayerData;
4
- }): import("react/jsx-runtime.js").JSX.Element;
4
+ }): import("react/jsx-runtime").JSX.Element;
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/components/Map/components/MapLayer/components/ThematicLayer/components/CustomTooltip/index.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEpE,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EACrC,IAAI,EAAE,UAAU,GAChB,EAAE;IACF,IAAI,EAAE,iBAAiB,CAAC;CACxB,8CA0BA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/components/Map/components/MapLayer/components/ThematicLayer/components/CustomTooltip/index.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EACrC,IAAI,EAAE,UAAU,GAChB,EAAE;IACF,IAAI,EAAE,iBAAiB,CAAC;CACxB,2CA2BA"}
@@ -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;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;EA2DtC"}
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,CAgLN;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;EA2DtC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../src/components/Map/components/MapProvider/components/MapLayerProvider/index.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,SAAS,EAAoC,MAAM,OAAO,CAAC;AAGzE,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,SAAS,CAAC;IACpB,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;CACvC,2CAsIA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../src/components/Map/components/MapProvider/components/MapLayerProvider/index.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,SAAS,EAAoC,MAAM,OAAO,CAAC;AAGzE,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,SAAS,CAAC;IACpB,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;CACvC,2CAuIA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hisptz/dhis2-analytics",
3
- "version": "2.1.29",
3
+ "version": "2.1.31",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/esm/index.js",
6
6
  "types": "./dist/types/index.d.ts",
@@ -48,8 +48,8 @@
48
48
  "tsup": "^8.4.0",
49
49
  "typescript": "^5.3.3",
50
50
  "usehooks-ts": "^2.16.0",
51
- "@repo/typescript-config": "0.0.2",
52
- "@repo/eslint-config": "0.0.0"
51
+ "@repo/eslint-config": "0.0.0",
52
+ "@repo/typescript-config": "0.0.2"
53
53
  },
54
54
  "dependencies": {
55
55
  "@react-leaflet/core": "^2.1.0",